Hi!
> when you're dealing with files in /tmp that are supposed to be re-opened
> (rather than opened once and then discarded) there's an established
> way to do it which goes like this:
>
> if (lstat(fname, &stb1) >= 0 && S_ISREG(stb1.st_mode)) {
> fd = open(fname, O_RDWR);
> if (fd < 0 || fstat(fd, &stb2) < 0
> || ino_or_dev_mismatch(&stb1, &stb2))
> raise_big_stink()
If you add (at this place)
if (lstat(fname, &stb2) < 0 || !S_ISREG(stb2.st_mode))
ino_or_dev_mismatch(&stb1, &stb2)
it is safe.
Idea is: once opened, dev/ino is stable, therefore if I followed link
to interesting file, there's no way to create other regular file with
same dev/ino.
> Comments? Suggestions?
See above. Does it work?
Pavel
PS: Do you need to _symlink_ it? What about hardlinks?
--
I'm [EMAIL PROTECTED] "In my country we have almost anarchy and I don't care."
Panos Katsaloulis describing me w.r.t. patents me at [EMAIL PROTECTED]