case S_IFLNK:
if (volume.volinfo.v_path) {
if ((volume.volinfo.v_adouble == AD_VERSION2)
- && STRCMP(path, == , ".AppleDouble")) {
+ && (strstr(path, ".AppleDouble") != NULL)) {
+ /* symlink inside adouble dir */
if (unlink(path) != 0)
badrm = rval = 1;
break;
/* Get CNID of Parent and add new childir to CNID database */
pdid = did;
- cnid = cnid_for_path(&volume.volinfo, &volume.volume, path, &did);
+ if ((cnid = cnid_for_path(&volume, path, &did)) == CNID_INVALID) {
+ SLOG("Error resolving CNID for %s", path);
+ return -1;
+ }
if (cnid_delete(volume.volume.v_cdb, cnid) != 0) {
SLOG("Error removing CNID %u for %s", ntohl(cnid), path);
return -1;
if (volume.volinfo.v_path) {
if ((volume.volinfo.v_adouble == AD_VERSION2)
- && STRCMP(path, == , ".AppleDouble")) {
+ && (strstr(path, ".AppleDouble") != NULL)) {
+ /* should be adouble dir itself */
if (rmdir(path) != 0) {
SLOG("Error removing dir \"%s\": %s", path, strerror(errno));
badrm = rval = 1;
}
/* Get CNID of Parent and add new childir to CNID database */
- did = cnid_for_path(&volume.volinfo, &volume.volume, path, &pdid);
+ if ((did = cnid_for_path(&volume, path, &pdid)) == CNID_INVALID) {
+ SLOG("Error resolving CNID for %s", path);
+ return -1;
+ }
if (cnid_delete(volume.volume.v_cdb, did) != 0) {
SLOG("Error removing CNID %u for %s", ntohl(did), path);
return -1;
default:
if (volume.volinfo.v_path) {
if ((volume.volinfo.v_adouble == AD_VERSION2)
- && STRCMP(path, == , ".AppleDouble")) {
+ && (strstr(path, ".AppleDouble") != NULL)) {
+ /* file in adouble dir */
if (unlink(path) != 0)
badrm = rval = 1;
break;
/* Get CNID of Parent and add new childir to CNID database */
pdid = did;
- cnid = cnid_for_path(&volume.volinfo, &volume.volume, path, &did);
+ if ((cnid = cnid_for_path(&volume, path, &did)) == CNID_INVALID) {
+ SLOG("Error resolving CNID for %s", path);
+ return -1;
+ }
if (cnid_delete(volume.volume.v_cdb, cnid) != 0) {
SLOG("Error removing CNID %u for %s", ntohl(cnid), path);
return -1;
}
- if (!Rflag) {
- if (volume.volume.vfs->vfs_deletefile(&volume.volume, -1, path) != 0) {
- SLOG("Error removing adouble file for: %s", path);
- badrm = rval = 1;
- break;
- }
- }
+ /* Ignore errors, because with -R adouble stuff is always alread gone */
+ volume.volume.vfs->vfs_deletefile(&volume.volume, -1, path);
}
if (unlink(path) != 0) {