tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: openat/fstatat functions implementation
In message <200909171730.NAA02427%Sparkle.Rodents-Montreal.ORG@localhost>, der
Mouse writ
es:
>As Thor said, the names suck; fstatat sounds like an -at version of
>fstat, which it isn't. (Thor's implicit suggestion of following the
>paradigm implicit in fchroot won't work, though; that would lead to
>fopen and fstat, each of which already exists with other semantics.)
Just to be picky:
There is already an fstatat in the wild:
NAME
fstatat - get file status relative to a directory file descriptor
SYNOPSIS
#include <sys/stat.h>
int fstatat(int dirfd, const char *path, struct stat *buf, int flags);
DESCRIPTION
The fstatat() system call operates in exactly the same way as stat(2),
except for the differences described in this manual page.
If the pathname given in path is relative, then it is interpreted rela-
tive to the directory referred to by the file descriptor dirfd (rather
than relative to the current working directory of the calling process,
as is done by stat(2) for a relative pathname).
If the pathname given in path is relative and dirfd is the special
value AT_FDCWD, then path is interpreted relative to the current work-
ing directory of the calling process (like stat(2)).
...
I would tend to recommend that we not use that name unless we use basically
the semantics of the existing one.
Despite the fact that:
>I disagree that it's reasonable to call them thread-safe versions of
>open and stat/lstat (*not*, incidentally, fstat; fstat does not need an
>-at version, since it does not take a pathname).
... as you note, naming it "fstatat" was just plain stupid. (I reserve the
right to retract that accusation if someone can give me a coherent reason
for the "f" in that name.)
>But if you want to do it more generally, you could do much better than
>this. This way leads, ultimately, to an -at version of each syscall
>that takes, or can take, a pathname, which is just silly.
That's pretty much what happened in Linux-land.
openat64_2()
(no, really)
>I'm not sure what would be best. But I'd much prefer to see this done
>right than kludged. (Of course, POSIX is a sufficiently holy document
>that it will probably be followed even when it's wrong, rendering that
>point moot, but that doesn't mean we can't do better _also_.)
Heh.
-s
Home |
Main Index |
Thread Index |
Old Index