Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Jul 1995 19:52:46 -0700
From:      Bruce Evans <bde>
To:        CVS-commiters, cvs-usrsbin
Subject:   cvs commit: src/usr.sbin/mtree verify.c
Message-ID:  <199507240252.TAA25900@freefall.cdrom.com>

next in thread | raw e-mail | index | archive | help
bde         95/07/23 19:52:44

  Modified:    usr.sbin/mtree  verify.c
  Log:
  Use p->fts_level instead of unsuccessfully trying to keep track of the
  level ourself.  We failed for unreadable directories.  E.g.,
  `mtree -d -f /etc/mtree/BSD.usr.dist -p /usr' run by `nobody' was
  confused after it couldn't descend into /usr/games/hide.  It looked
  for /usr/include and subsequent directories in /usr/games.
  
  Don't search for `extra' files when the spec depth is less than the
  fts level.  The spec depth isn't incremented for leaf nodes because
  that would give a NULL level pointer and make it inconvenient to go
  back to the parent level.  Leaf nodes are built for directories that
  are empty in the spec.  Since they are empty in the spec, all files
  in them are extra.  The search looked for files one spec level
  too high, so for `mtree -d -f /etc/mtree/BSD.usr.dist -p /usr',
  obj/sbin matched ./sbin and wasn't considered extra, so it was
  descended into and lots of bogus extra things in it were found.
  This was harmful for `mtree -U' (as reported in pr623) and worse
  for `mtree -r'.
  
  Use rmdir(), not unlink(), to remove `extra' directories.  unlink()
  succeeds for root but unlinking directories normally damages the
  file system.
  
  Report `fts_errno' instead of `errno' when the former applies.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507240252.TAA25900>