Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Do not distinguish anymore between dirrm and drirmtry
Baptiste Daroussin committed 11 years ago
commit 52aa9339deb8ff946d85fd151eb61cc06c343721
parent 73217efde0d87d75e12acccf79e835a30e997a5b
3 files changed +11 -16
modified libpkg/pkg_add.c
@@ -357,7 +357,7 @@ pkg_add_cleanup_old(struct pkg *old, struct pkg *new, int flags)
			HASH_FIND_STR(new->dirs, d->path, cd);

			if (cd == NULL)
-
				pkg_delete_dir(old, d, flags & PKG_DELETE_FORCE ? 1 : 0);
+
				pkg_delete_dir(old, d);
		}
	}

@@ -486,7 +486,7 @@ pkg_add_common(struct pkgdb *db, const char *path, unsigned flags,
	if (extract && (retcode = do_extract(a, ae, location, nfiles, pkg)) != EPKG_OK) {
		/* If the add failed, clean up (silently) */
		pkg_delete_files(pkg, 2);
-
		pkg_delete_dirs(db, pkg, 1);
+
		pkg_delete_dirs(db, pkg);
		goto cleanup_reg;
	}

modified libpkg/pkg_delete.c
@@ -94,7 +94,7 @@ pkg_delete(struct pkg *pkg, struct pkgdb *db, unsigned flags)
			return (ret);
	}

-
	ret = pkg_delete_dirs(db, pkg, flags & PKG_DELETE_FORCE);
+
	ret = pkg_delete_dirs(db, pkg);
	if (ret != EPKG_OK)
		return (ret);

@@ -183,7 +183,7 @@ pkg_delete_files(struct pkg *pkg, unsigned force)
}

void
-
pkg_delete_dir(struct pkg *pkg, struct pkg_dir *dir, unsigned force)
+
pkg_delete_dir(struct pkg *pkg, struct pkg_dir *dir)
{
	const ucl_object_t 	*obj, *an;
	char			 fpath[MAXPATHLEN];
@@ -193,18 +193,13 @@ pkg_delete_dir(struct pkg *pkg, struct pkg_dir *dir, unsigned force)
	snprintf(fpath, sizeof(fpath), "%s%s",
		obj ? pkg_object_string(obj) : "" , pkg_dir_path(dir) );

-
	if (pkg_dir_try(dir)) {
-
		if (rmdir(fpath) == -1 &&
-
						errno != ENOTEMPTY && errno != EBUSY && !force)
-
			pkg_emit_errno("rmdir", fpath);
-
	} else {
-
		if (rmdir(fpath) == -1 && !force)
-
			pkg_emit_errno("rmdir", fpath);
-
	}
+
	if (rmdir(fpath) == -1 &&
+
	    errno != ENOTEMPTY && errno != EBUSY)
+
		pkg_emit_errno("rmdir", fpath);
}

int
-
pkg_delete_dirs(__unused struct pkgdb *db, struct pkg *pkg, bool force)
+
pkg_delete_dirs(__unused struct pkgdb *db, struct pkg *pkg)
{
	struct pkg_dir		*dir = NULL;

@@ -212,7 +207,7 @@ pkg_delete_dirs(__unused struct pkgdb *db, struct pkg *pkg, bool force)
		if (dir->keep == 1)
			continue;

-
		pkg_delete_dir(pkg, dir, force);
+
		pkg_delete_dir(pkg, dir);
	}

	return (EPKG_OK);
modified libpkg/private/pkg.h
@@ -548,7 +548,7 @@ pkg_formats packing_format_from_string(const char *str);
const char* packing_format_to_string(pkg_formats format);

int pkg_delete_files(struct pkg *pkg, unsigned force);
-
int pkg_delete_dirs(struct pkgdb *db, struct pkg *pkg, bool force);
+
int pkg_delete_dirs(struct pkgdb *db, struct pkg *pkg);

int pkg_conflicts_request_resolve(struct pkg_jobs *j);
int pkg_conflicts_append_pkg(struct pkg *p, struct pkg_jobs *j);
@@ -613,7 +613,7 @@ int pkg_symlink_cksum(const char *path, const char *root, char *cksum);
int pkg_add_upgrade(struct pkgdb *db, const char *path, unsigned flags,
    struct pkg_manifest_key *keys, const char *location,
    struct pkg *rp, struct pkg *lp);
-
void pkg_delete_dir(struct pkg *pkg, struct pkg_dir *dir, unsigned force);
+
void pkg_delete_dir(struct pkg *pkg, struct pkg_dir *dir);
void pkg_delete_file(struct pkg *pkg, struct pkg_file *file, unsigned force);

#endif