site_archiver@lists.apple.com Delivered-To: darwin-kernel@lists.apple.com On Jul 28, 2010, at 21:28 , Jerry Krinock wrote: I think there's a bug. -- Steve Checkoway _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/site_archiver%40lists.a... This email sent to site_archiver@lists.apple.com Just to give the resolution on this thread, wrapping chown with fts_xxx() was not difficult. This seems to work… int chown_recursive(char * const path, uid_t uid, uid_t gid) { // See man fts(3) for these. Your mileage may vary. int fts_options = FTS_PHYSICAL | FTS_NOCHDIR | FTS_XDEV | FTS_SEEDOT ; I don't think you want FTS_SEEDOT here or the FTS_DOT below. If you give it /foo/bar, it's going to attempt to chown /foo/bar/.. which is not what you asked for. There also seems to be no need to chown each directory twice. smime.p7s