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]

Reply via email to