libc: Rename fscandir{,_b}() to fdscandir{,_b}().

This seems to fit the pattern better (e.g. fdopendir()).

I've added weak references to ease the transition, but since it's only
been a few days, we can remove them (and the ObsoleteFiles entries for
the manual pages) before we branch stable/15.

Fixes:		deeebfdeca
Sponsored by:	Klara, Inc.
Reviewed by:	kevans
Differential Revision:	https://reviews.freebsd.org/D50980
This commit is contained in:
Dag-Erling Smørgrav 2025-06-23 15:02:53 +02:00
parent b47a6c93e2
commit 0a5b763d98
9 changed files with 47 additions and 35 deletions

View file

@ -51,6 +51,10 @@
# xargs -n1 | sort | uniq -d;
# done
# 20250623: fscandir() renamed to fdscandir()
OLD_FILES+=usr/share/man/man3/fscandir.3.gz
OLD_FILES+=usr/share/man/man3/fscandir_b.3.gz
# 20250615: don't install man page for absent function
OLD_FILES+=usr/share/man/man9/vm_map_simplify_entry.9.gz

View file

@ -130,11 +130,11 @@ int scandir_b(const char *, struct dirent ***,
#endif
#endif
#if __BSD_VISIBLE
int fscandir(int, struct dirent ***,
int fdscandir(int, struct dirent ***,
int (*)(const struct dirent *), int (*)(const struct dirent **,
const struct dirent **));
#ifdef __BLOCKS__
int fscandir_b(int, struct dirent ***,
int fdscandir_b(int, struct dirent ***,
int (^)(const struct dirent *),
int (^)(const struct dirent **, const struct dirent **));
#endif

View file

@ -499,8 +499,8 @@ MLINKS+=rand48.3 _rand48.3 \
MLINKS+=rtld_get_var.3 \
rtld_set_var.3
MLINKS+=scandir.3 alphasort.3 \
scandir.3 fscandir.3 \
scandir.3 fscandir_b.3 \
scandir.3 fdscandir.3 \
scandir.3 fdscandir_b.3 \
scandir.3 scandir_b.3 \
scandir.3 scandirat.3 \
scandir.3 scandirat_b.3 \

View file

@ -460,6 +460,8 @@ FBSD_1.8 {
execvpe;
fscandir;
fscandir_b;
fdscandir;
fdscandir_b;
fts_open_b;
glob_b;
psiginfo;

View file

@ -30,11 +30,11 @@
.Os
.Sh NAME
.Nm scandir ,
.Nm fscandir ,
.Nm fdscandir ,
.Nm scandirat ,
.Nm scandir_b ,
.Nm fscandir_b ,
.Nm fscandirat_b ,
.Nm fdscandir_b ,
.Nm fdscandirat_b ,
.Nm alphasort ,
.Nm versionsort
.Nd scan a directory
@ -50,7 +50,7 @@
.Fa "int \*(lp*compar\*(rp\*(lpconst struct dirent **, const struct dirent **\*(rp"
.Fc
.Ft int
.Fo fscandir
.Fo fdscandir
.Fa "int dirfd"
.Fa "struct dirent ***namelist"
.Fa "int \*(lp*select\*(rp\*(lpconst struct dirent *\*(rp"
@ -72,7 +72,7 @@
.Fa "int \*(lp^compar\*(rp\*(lpconst struct dirent **, const struct dirent **\*(rp"
.Fc
.Ft int
.Fo fscandir_b
.Fo fdscandir_b
.Fa "int dirfd"
.Fa "struct dirent ***namelist"
.Fa "int \*(lp^select\*(rp\*(lpconst struct dirent *\*(rp"
@ -144,7 +144,7 @@ The memory allocated for the array can be deallocated with
by freeing each pointer in the array and then the array itself.
.Pp
The
.Fn fscandir
.Fn fdscandir
function is similar to
.Fn scandir ,
but takes a file descriptor referencing a directory instead of a path.
@ -185,12 +185,12 @@ for additional details.
.Pp
The
.Fn scandir_b ,
.Fn fscandir_b ,
.Fn fdscandir_b ,
and
.Fn scandirat_b
functions behave in the same way as
.Fn scandir ,
.Fn fscandir ,
.Fn fdscandir ,
and
.Fn scandirat ,
respectively,
@ -201,10 +201,10 @@ rather than
.Sh DIAGNOSTICS
The
.Fn scandir ,
.Fn fscandir ,
.Fn fdscandir ,
.Fn scandirat ,
.Fn scandir_b ,
.Fn fscandir_b ,
.Fn fdscandir_b ,
and
.Fn scandirat_b
functions return the number of directory entries found on succes.
@ -236,9 +236,9 @@ and
.Fn versionsort
functions are GNU extensions and conform to no standard.
The
.Fn fscandir ,
.Fn fdscandir ,
.Fn scandir_b ,
.Fn fscandir_b ,
.Fn fdscandir_b ,
and
.Fn scandirat_b
functions are
@ -262,8 +262,8 @@ and
functions were added in
.Fx 13.2 .
The
.Fn fscandir ,
.Fn fscandir_b ,
.Fn fdscandir ,
.Fn fdscandir_b ,
and
.Fn scandirat_b
functions were added in

View file

@ -159,10 +159,10 @@ scandir(const char *dirname, struct dirent ***namelist,
int
#ifdef I_AM_SCANDIR_B
fscandir_b(int dirfd, struct dirent ***namelist, select_block select,
fdscandir_b(int dirfd, struct dirent ***namelist, select_block select,
dcomp_block dcomp)
#else
fscandir(int dirfd, struct dirent ***namelist,
fdscandir(int dirfd, struct dirent ***namelist,
int (*select)(const struct dirent *), int (*dcomp)(const struct dirent **,
const struct dirent **))
#endif
@ -203,9 +203,9 @@ scandirat(int dirfd, const char *dirname, struct dirent ***namelist,
return (-1);
ret =
#ifdef I_AM_SCANDIR_B
fscandir_b
fdscandir_b
#else
fscandir
fdscandir
#endif
(fd, namelist, select, dcomp);
serrno = errno;
@ -242,3 +242,9 @@ scandir_thunk_cmp(const void *p1, const void *p2, void *thunk)
return (dc((const struct dirent **)p1, (const struct dirent **)p2));
}
#endif
#ifdef I_AM_SCANDIR_B
__weak_reference(fdscandir_b, fscandir_b);
#else
__weak_reference(fdscandir, fscandir);
#endif

View file

@ -57,19 +57,19 @@ ATF_TC_BODY(scandir_b_test, tc)
free(namelist);
}
ATF_TC(fscandir_b_test);
ATF_TC_HEAD(fscandir_b_test, tc)
ATF_TC(fdscandir_b_test);
ATF_TC_HEAD(fdscandir_b_test, tc)
{
atf_tc_set_md_var(tc, "descr", "Test fscandir_b()");
atf_tc_set_md_var(tc, "descr", "Test fdscandir_b()");
}
ATF_TC_BODY(fscandir_b_test, tc)
ATF_TC_BODY(fdscandir_b_test, tc)
{
struct dirent **namelist = NULL;
int fd, i, ret;
scandir_blocks_prepare(tc);
ATF_REQUIRE((fd = open("dir", O_DIRECTORY | O_RDONLY)) >= 0);
ret = fscandir_b(fd, &namelist,
ret = fdscandir_b(fd, &namelist,
^(const struct dirent *ent) {
return (strcmp(ent->d_name, "skip") != 0);
},
@ -112,7 +112,7 @@ ATF_TC_BODY(scandirat_b_test, tc)
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, scandir_b_test);
ATF_TP_ADD_TC(tp, fscandir_b_test);
ATF_TP_ADD_TC(tp, fdscandir_b_test);
ATF_TP_ADD_TC(tp, scandirat_b_test);
return (atf_no_error());
}

View file

@ -63,19 +63,19 @@ ATF_TC_BODY(scandir_test, tc)
free(namelist);
}
ATF_TC(fscandir_test);
ATF_TC_HEAD(fscandir_test, tc)
ATF_TC(fdscandir_test);
ATF_TC_HEAD(fdscandir_test, tc)
{
atf_tc_set_md_var(tc, "descr", "Test fscandir()");
atf_tc_set_md_var(tc, "descr", "Test fdscandir()");
}
ATF_TC_BODY(fscandir_test, tc)
ATF_TC_BODY(fdscandir_test, tc)
{
struct dirent **namelist = NULL;
int fd, i, ret;
scandir_prepare(tc);
ATF_REQUIRE((fd = open("dir", O_DIRECTORY | O_RDONLY)) >= 0);
ret = fscandir(fd, &namelist, scandir_select, scandir_compare);
ret = fdscandir(fd, &namelist, scandir_select, scandir_compare);
scandir_verify(tc, ret, namelist);
for (i = 0; i < ret; i++)
free(namelist[i]);
@ -127,7 +127,7 @@ ATF_TC_BODY(scandir_none, tc)
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, scandir_test);
ATF_TP_ADD_TC(tp, fscandir_test);
ATF_TP_ADD_TC(tp, fdscandir_test);
ATF_TP_ADD_TC(tp, scandirat_test);
ATF_TP_ADD_TC(tp, scandir_none);
return (atf_no_error());

View file

@ -83,7 +83,7 @@ vscandir(struct inodetree *tree, const char *path, struct dirent ***dirp,
*dirp = NULL;
return (0);
}
if ((ret = fscandir(fd, dirp, selectf, comparf)) < 0)
if ((ret = fdscandir(fd, dirp, selectf, comparf)) < 0)
goto fail;
RB_INSERT(inodetree, tree, ino);
close(fd);