Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Explicitly pass when passmode should be used with libarchive
Baptiste Daroussin committed 11 years ago
commit bf4a9a6ec13824036c035ceba01076e5e30841b4
parent cebcccd
5 files changed +16 -10
modified libpkg/packing.c
@@ -1,5 +1,5 @@
/*-
-
 * Copyright (c) 2011-2012 Baptiste Daroussin <bapt@FreeBSD.org>
+
 * Copyright (c) 2011-2014 Baptiste Daroussin <bapt@FreeBSD.org>
 * Copyright (c) 2011 Will Andrews <will@FreeBSD.org>
 * All rights reserved.
 * 
@@ -53,13 +53,18 @@ struct packing {
};

int
-
packing_init(struct packing **pack, const char *path, pkg_formats format)
+
packing_init(struct packing **pack, const char *path, pkg_formats format, bool passmode)
{
	char archive_path[MAXPATHLEN];
	const char *ext;

	assert(pack != NULL);

+
	if (passmode && !is_dir(path)) {
+
		pkg_emit_error("When using passmode, a directory should be provided");
+
		return (EPKG_FATAL);
+
	}
+

	if ((*pack = calloc(1, sizeof(struct packing))) == NULL) {
		pkg_emit_errno("calloc", "packing");
		return (EPKG_FATAL);
@@ -69,7 +74,7 @@ packing_init(struct packing **pack, const char *path, pkg_formats format)
	archive_read_disk_set_standard_lookup((*pack)->aread);
	archive_read_disk_set_symlink_physical((*pack)->aread);

-
	if (!is_dir(path)) {
+
	if (!passmode) {
		(*pack)->pass = false;
		(*pack)->awrite = archive_write_new();
		archive_write_set_format_pax_restricted((*pack)->awrite);
modified libpkg/pkg.c
@@ -1,5 +1,5 @@
/*-
-
 * Copyright (c) 2011-2013 Baptiste Daroussin <bapt@FreeBSD.org>
+
 * Copyright (c) 2011-2014 Baptiste Daroussin <bapt@FreeBSD.org>
 * Copyright (c) 2011-2012 Julien Laffaye <jlaffaye@FreeBSD.org>
 * Copyright (c) 2012 Bryan Drewery <bryan@shatow.net>
 * Copyright (c) 2013 Matthew Seaman <matthew@FreeBSD.org>
@@ -1534,7 +1534,7 @@ pkg_copy_tree(struct pkg *pkg, const char *src, const char *dest)
	/* Execute pre-install scripts */
	pkg_script_run(pkg, PKG_SCRIPT_PRE_INSTALL);

-
	if (packing_init(&pack, dest, 0) != EPKG_OK) {
+
	if (packing_init(&pack, dest, 0, true) != EPKG_OK) {
		/* TODO */
		return EPKG_FATAL;
	}
modified libpkg/pkg_create.c
@@ -1,5 +1,5 @@
/*-
-
 * Copyright (c) 2011-2013 Baptiste Daroussin <bapt@FreeBSD.org>
+
 * Copyright (c) 2011-2014 Baptiste Daroussin <bapt@FreeBSD.org>
 * Copyright (c) 2011-2012 Julien Laffaye <jlaffaye@FreeBSD.org>
 * Copyright (c) 2014 Matthew Seaman <matthew@FreeBSD.org>
 * Copyright (c) 2014 Vsevolod Stakhov <vsevolod@FreeBSD.org>
@@ -200,7 +200,7 @@ pkg_create_archive(const char *outdir, struct pkg *pkg, pkg_formats format,
		return (NULL);
	}

-
	if (packing_init(&pkg_archive, pkg_path, format) != EPKG_OK)
+
	if (packing_init(&pkg_archive, pkg_path, format, false) != EPKG_OK)
		pkg_archive = NULL;

	free(pkg_path);
modified libpkg/pkg_repo_create.c
@@ -876,7 +876,7 @@ pkg_repo_pack_db(const char *name, const char *archive, char *path,
	sig = NULL;
	pub = NULL;

-
	if (packing_init(&pack, archive, meta->packing_format) != EPKG_OK)
+
	if (packing_init(&pack, archive, meta->packing_format, false) != EPKG_OK)
		return (EPKG_FATAL);

	if (rsa != NULL) {
modified libpkg/private/pkg.h
@@ -1,5 +1,5 @@
/*-
-
 * Copyright (c) 2011-2012 Baptiste Daroussin <bapt@FreeBSD.org>
+
 * Copyright (c) 2011-2014 Baptiste Daroussin <bapt@FreeBSD.org>
 * Copyright (c) 2011-2012 Julien Laffaye <jlaffaye@FreeBSD.org>
 * Copyright (c) 2013 Matthew Seaman <matthew@FreeBSD.org>
 * Copyright (c) 2013 Vsevolod Stakhov <vsevolod@FreeBSD.org>
@@ -534,7 +534,8 @@ void pkg_provide_free(struct pkg_provide *);

struct packing;

-
int packing_init(struct packing **pack, const char *path, pkg_formats format);
+
int packing_init(struct packing **pack, const char *path, pkg_formats format,
+
    bool passmode);
int packing_append_file_attr(struct packing *pack, const char *filepath,
			     const char *newpath, const char *uname,
			     const char *gname, mode_t perm);