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 pavelat_private "In my country we have almost anarchy and I don't care." Panos Katsaloulis describing me w.r.t. patents me at discussat_private
This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:26:36 PDT