• Dan McGee's avatar
    Handle removal of empty directories properly · 1c39e4fb
    Dan McGee authored
    This addresses FS#25141. We shouldn't remove every empty directory we
    come across during the removal process unless it is truly not known to
    any other package. This will prevent removal of essential directories
    such as '/var/lock/'.
    This is accomplished by first checking the empty/non-empty status of a
    directory, which was previously done implicitly by calling rmdir() and
    ignoring errors. We do this to avoid the next (new) check in most cases,
    which is to look at all local packages to see if the to-be-removed
    directory is present in another packages' filelist. If we do not find it
    anywhere, then we remove it, else we keep the file around.
    The pactest has been updated to test more cases, as well as finding a
    flaw in the original expected to fail case- we need separate DIR and
    FILE based EXIST rules.
    Signed-off-by: default avatarDan McGee <dan@archlinux.org>