Our ober-guru did not wanted a new mine release - so here is my single fix. - (Slave) Rene Rebe Index: remove.c =================================================================== --- remove.c (revision 17) +++ remove.c (revision 18) @@ -70,37 +70,47 @@ printf("%s: ", package); printf("removing %s\n", filename); } - else - if ( ! strncmp(filename, "var/adm/", 8) ) { - if ( mode_verbose ) - printf("%s: moving %s to var/adm/backup\n", + else { + struct stat statbuf; + + snprintf(realfn1, 1024, "%s/%s", root, filename); + if ( stat(realfn1, &statbuf) ) + printf("WARNING: Could not stat file %s.\n", + realfn1); + + if ( ! strncmp(filename, "var/adm/", 8) && + ! (S_ISDIR(statbuf.st_mode)) ) { + if ( mode_verbose ) + printf("%s: moving %s to var/adm/backup\n", package, filename); - snprintf(realfn1, 1024, "%s/var/adm/backup", root); - mkdir(realfn1, 0700); + snprintf(realfn1, 1024, "%s/var/adm/backup", + root); + mkdir(realfn1, 0700); - snprintf(realfn1, 1024, "%s", filename+8); - sscanf(realfn1, "%[^/]/%[^/]", buf1, buf2); + snprintf(realfn1, 1024, "%s", filename+8); + sscanf(realfn1, "%[^/]/%[^/]", buf1, buf2); - snprintf(realfn1, 1024, "%s/%s", root, filename); - snprintf(realfn2, 1024, "%s/var/adm/backup/%s_%s", - root, buf2, buf1); + snprintf(realfn1, 1024, "%s/%s", root, filename); + snprintf(realfn2, 1024, "%s/var/adm/backup/%s_%s", + root, buf2, buf1); - if ( rename(realfn1, realfn2) ) { - printf("While removing package %s: %s: %s\n", - package, realfn1, strerror(errno)); - errors++; + if ( rename(realfn1, realfn2) ) { + printf("While removing package %s: %s: %s\n", + package, realfn1, strerror(errno)); + errors++; + } } - } - else - { - if ( mode_verbose ) - printf("%s: removing %s\n", package, filename); - snprintf(realfn1, 1024, "%s/%s", root, filename); - if ( remove(realfn1) ) { - printf("While removing package %s: %s: %s\n", - package, realfn1, strerror(errno)); - errors++; + else + { + if ( mode_verbose ) + printf("%s: removing %s\n", + package, filename); + if ( remove(realfn1) ) { + printf("While removing package %s: %s: %s\n", + package, realfn1, strerror(errno)); + errors++; + } } } }