Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Store prefix information
Baptiste Daroussin committed 15 years ago
commit 3ce47c2ec4860f92ec38b2e95e9cd9e83f927083
parent 59947ab65801a7359672a4104dcb17422556e4c2
5 files changed +25 -17
modified libpkg/pkg.c
@@ -49,8 +49,8 @@ pkg_get(struct pkg *pkg, pkg_attr attr)
			return (sbuf_get(pkg->maintainer));
		case PKG_WWW:
			return (sbuf_get(pkg->www));
-
		case PKG_ERR:
-
			return (sbuf_get(pkg->err));
+
		case PKG_PREFIX:
+
			return (sbuf_get(pkg->prefix));
	}

	return (NULL);
@@ -63,7 +63,6 @@ pkg_set(struct pkg *pkg, pkg_attr attr, const char *value)
		return (EPKG_NULL_PKG);

	if (value == NULL) {
-
		pkg_set(pkg, PKG_ERR, "Value can not be NULL");
		return (EPKG_NULL_VALUE);
	}

@@ -90,8 +89,8 @@ pkg_set(struct pkg *pkg, pkg_attr attr, const char *value)
			return (sbuf_set(&pkg->maintainer, value));
		case PKG_WWW:
			return (sbuf_set(&pkg->www, value));
-
		case PKG_ERR:
-
			return (sbuf_set(&pkg->err, value));
+
		case PKG_PREFIX:
+
			return (sbuf_set(&pkg->prefix, value));
	}

	return (EPKG_FATAL);
@@ -366,8 +365,6 @@ pkg_new(struct pkg **pkg)
	if ((*pkg = calloc(1, sizeof(struct pkg))) == NULL)
		err(EXIT_FAILURE, "calloc()");

-
	(*pkg)->err = sbuf_new_auto();
-

	return (EPKG_OK);
}

@@ -388,7 +385,7 @@ pkg_reset(struct pkg *pkg)
	sbuf_reset(pkg->osversion);
	sbuf_reset(pkg->maintainer);
	sbuf_reset(pkg->www);
-
	sbuf_reset(pkg->err);
+
	sbuf_reset(pkg->prefix);

	array_reset(&pkg->deps, &pkg_free_void);
	array_reset(&pkg->rdeps, &pkg_free_void);
@@ -416,7 +413,7 @@ pkg_free(struct pkg *pkg)
	sbuf_free(pkg->osversion);
	sbuf_free(pkg->maintainer);
	sbuf_free(pkg->www);
-
	sbuf_free(pkg->err);
+
	sbuf_free(pkg->prefix);

	array_free(&pkg->deps, &pkg_free_void);
	array_free(&pkg->rdeps, &pkg_free_void);
modified libpkg/pkg.h
@@ -85,7 +85,7 @@ typedef enum {
	PKG_OSVERSION,
	PKG_MAINTAINER,
	PKG_WWW,
-
	PKG_ERR
+
	PKG_PREFIX
} pkg_attr;

/**
@@ -174,8 +174,6 @@ const char *pkg_get(struct pkg *, pkg_attr);

pkg_t pkg_type(struct pkg *);

-
#define pkg_errmsg(pkg) pkg_get(pkg, PKG_ERR)
-

/**
 * @return NULL-terminated array of pkg.
 * @warning May return a NULL pointer.
modified libpkg/pkg_manifest.c
@@ -24,6 +24,7 @@ static int m_parse_conflict(struct pkg *pkg, char *buf);
static int m_parse_maintainer(struct pkg *pkg, char *buf);
static int m_parse_exec(struct pkg *pkg, char *buf);
static int m_parse_unexec(struct pkg *pkg, char *buf);
+
static int m_parse_prefix(struct pkg *pkg, char *buf);
static int m_parse_set_string(struct pkg *pkg, char *buf, pkg_attr attr);

#define MANIFEST_FORMAT_KEY "@pkg_format_version"
@@ -45,6 +46,7 @@ static struct manifest_key {
	{ "@maintainer", m_parse_maintainer},
	{ "@exec", m_parse_exec},
	{ "@unexec", m_parse_unexec},
+
	{ "@prefix", m_parse_prefix},
};

#define manifest_key_len (int)(sizeof(manifest_key)/sizeof(manifest_key[0]))
@@ -68,6 +70,11 @@ m_parse_www(struct pkg *pkg, char *buf) {
}

static int
+
m_parse_prefix(struct pkg *pkg, char *buf) {
+
	return (m_parse_set_string(pkg, buf, PKG_PREFIX));
+
}
+

+
static int
m_parse_maintainer(struct pkg *pkg, char *buf) {
	return (m_parse_set_string(pkg, buf, PKG_MAINTAINER));
}
@@ -265,6 +272,7 @@ pkg_emit_manifest(struct pkg *pkg, char **dest)
			"@osversion %s\n"
			"@www %s\n"
			"@maintainer %s\n",
+
			"@prefix %s\n",
			pkg_get(pkg, PKG_NAME),
			pkg_get(pkg, PKG_VERSION),
			pkg_get(pkg, PKG_ORIGIN),
@@ -272,7 +280,8 @@ pkg_emit_manifest(struct pkg *pkg, char **dest)
			pkg_get(pkg, PKG_ARCH),
			pkg_get(pkg, PKG_OSVERSION),
			pkg_get(pkg, PKG_WWW),
-
			pkg_get(pkg, PKG_MAINTAINER) ? pkg_get(pkg, PKG_MAINTAINER) : "UNKNOWN"
+
			pkg_get(pkg, PKG_MAINTAINER) ? pkg_get(pkg, PKG_MAINTAINER) : "UNKNOWN",
+
			pkg_get(pkg, PKG_PREFIX)
			);

	if ((deps = pkg_deps(pkg)) != NULL) {
modified libpkg/pkg_private.h
@@ -20,6 +20,7 @@ struct pkg {
	struct sbuf *maintainer;
	struct sbuf *www;
	struct sbuf *err;
+
	struct sbuf *prefix;
	struct array deps;
	struct array rdeps;
	struct array conflicts;
modified libpkg/pkgdb.c
@@ -124,6 +124,7 @@ pkgdb_init(sqlite3 *sdb)
		"osversion TEXT,"
		"maintainer TEXT,"
		"www TEXT,"
+
		"prefix TEXT,"
		"automatic INTEGER,"
		"pkg_format_version INTEGER"
	");"
@@ -280,6 +281,7 @@ pkgdb_it_next_pkg(struct pkgdb_it *it, struct pkg **pkg_p, int flags)
		pkg_set(pkg, PKG_OSVERSION, sqlite3_column_text(it->stmt, 8));
		pkg_set(pkg, PKG_MAINTAINER, sqlite3_column_text(it->stmt, 9));
		pkg_set(pkg, PKG_WWW, sqlite3_column_text(it->stmt, 10));
+
		pkg_set(pkg, PKG_PREFIX, sqlite3_column_text(it->stmt, 11));

		if (flags & PKG_DEPS) {
			array_init(&pkg->deps, 10);
@@ -559,7 +561,7 @@ pkgdb_query(struct pkgdb *db, const char *pattern, match_t match)

	snprintf(sql, sizeof(sql),
			"SELECT p.origin, p.name, p.version, p.comment, p.desc, m.content, "
-
				"p.message, p.arch, p.osversion, p.maintainer, p.www "
+
				"p.message, p.arch, p.osversion, p.maintainer, p.www, p.prefix "
			"FROM packages AS p, mtree AS m "
			"WHERE m.id = p.mtree_id%s;", comp);

@@ -578,7 +580,7 @@ pkgdb_query_which(struct pkgdb *db, const char *path)

	sqlite3_prepare(db->sqlite,
					"SELECT p.origin, p.name, p.version, p.comment, p.desc, m.content, "
-
						"p.message, p.arch, p.osversion, p.maintainer, p.www "
+
						"p.message, p.arch, p.osversion, p.maintainer, p.www, p.prefix "
					"FROM packages AS p, mtree AS m, files AS f "
					"WHERE m.id = p.mtree_id " 
					"AND p.origin = f.package_id "
@@ -750,8 +752,8 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)

	/* Add the record into packages */
	sqlite3_prepare(db->sqlite,
-
					"INSERT OR REPLACE INTO packages (origin, name, version, comment, desc, mtree_id, message, arch, osversion, maintainer, www) "
-
					"VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11);",
+
					"INSERT OR REPLACE INTO packages (origin, name, version, comment, desc, mtree_id, message, arch, osversion, maintainer, www, prefix) "
+
					"VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12);",
					-1, &stmt_pkg, NULL);

	sqlite3_bind_text(stmt_pkg, 1, pkg_get(pkg, PKG_ORIGIN), -1, SQLITE_STATIC);
@@ -765,6 +767,7 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)
	sqlite3_bind_text(stmt_pkg, 9, pkg_get(pkg, PKG_OSVERSION), -1, SQLITE_STATIC);
	sqlite3_bind_text(stmt_pkg, 10, pkg_get(pkg, PKG_MAINTAINER), -1, SQLITE_STATIC);
	sqlite3_bind_text(stmt_pkg, 11, pkg_get(pkg, PKG_WWW), -1, SQLITE_STATIC);
+
	sqlite3_bind_text(stmt_pkg, 12, pkg_get(pkg, PKG_PREFIX), -1, SQLITE_STATIC);

	sqlite3_step(stmt_pkg);
	sqlite3_finalize(stmt_pkg);