On 2015-04-01 17:51:15, John Johansen wrote: > On 04/01/2015 02:37 PM, Seth Arnold wrote: > > On Wed, Apr 01, 2015 at 12:49:30PM -0500, Tyler Hicks wrote: > >>> I like the gist of this patch but I think the parameter shouldn't be named > >>> dirfd; if we ever need the dirent.h header back again, this'll cause no > >>> end of confusion. It'd be safer to just pick a less obvious name, dir_fd > >>> for example. > >> > >> Thanks for the review! > >> > >> The "dirfd" naming convention is used in all of the *at(2) calls: > >> > >> int faccessat(int dirfd, const char *pathname, int mode, int flags); > >> int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags); > >> int fstatat(int dirfd, const char *pathname, struct stat *buf, int flags); > >> int openat(int dirfd, const char *pathname, int flags); > > > > Interesting. I mean, dirfd is the first name that comes to mind for a > > directory file descriptor, so it shouldn't be too surprising, but I am a > > touch surprised collisions with dirfd(3) weren't considered first. Oh well. > > Its a fn vs a variable, you can actually get away with them having the same > name without a collision (well at least in C/C++ with a good compiler).
I tested this with gcc when Seth first brought it up. You can't have a
variable named dirfd and call dirfd(3) in the same scope.
$ cat dirfd.c
#include <sys/types.h>
#include <dirent.h>
int main(void)
{
DIR *d;
int dirfd;
d = opendir(".");
dirfd = dirfd(d);
closedir(d);
return 0;
}
$ gcc dirfd.c -o dirfd
dirfd.c: In function ‘main’:
dirfd.c:10:10: error: called object ‘dirfd’ is not a function or function
pointer
dirfd = dirfd(d);
^
dirfd.c:7:6: note: declared here
int dirfd;
^
Moving them into different scopes is fine, though:
$ cat dirfd2.c
#include <sys/types.h>
#include <dirent.h>
int odir()
{
return dirfd(opendir("."));
}
int main(void)
{
int dirfd = odir(".");
return 0;
}
$ gcc dirfd2.c -o dirfd2
Tyler
>
> >
> >>
> >> That said, I don't mind changing it. I think prefer "dfd" over "dir_fd".
> >> Does that sound good?
> >
> > dfd is fine by me; I'm mostly interested in avoiding bikeshed discussions
> > but figured if I was going to complain about the original name I should in
> > all fairness have a suggestion. :)
> >
> dirfd, dfd are both fine
>
>
signature.asc
Description: Digital signature
-- AppArmor mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
