* [Craig Allan Jeffree] > This would just keep going back a step. "foo" could be changed at any > point between its discovery and the open syscall. Obviously the user > could look at the directory listing then run "rm -r foo", but in the > time it takes for them to type the command someone else could change the > directory tree - that is always going to be racey. But internally to rm > how can the discovery of a directory (from the directory recurse not the > command line) be kept atomic with the entering of that directory?
O_NOFOLLOW should take care of directory symlinks, and opening "." should take care of the tree being moved. The worst think I can think of then is creating new files or directories to make the unlinking of the directories fail, but this is not really a problem, as it has no adverse effect. The discovery of the directory is not atomic with entering the directory, but the trick is in the open(), which is an atomic operation. If the directory is removed or replaced by a symlink, open will fail, and you can handle the error. If not, open will succeed, and you are guaranteed that the fchdir will also put you in the correct directory no matter what somebody does to the directory between the open and the fchdir. Oystein -- This message was generated by a horde of attack elephants armed with PRNGs. _______________________________________________ Help-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/help-hurd