Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Factorise pkg_set* into only one pkg_set
Baptiste Daroussin committed 15 years ago
commit 9a097755d52124aa936a662f3a044dbbb3ebf6ba
parent fead157b5c2e385fd46e916dbddfffb06e487c4b
6 files changed +61 -51
modified libpkg/pkg.c
@@ -10,6 +10,10 @@

static void pkg_free_void(void*);

+
#define pkg_set_str(pkg, attr, value)  do { \
+
	return (sbuf_set(&(pkg)->attr, value)); \
+
} while (0)
+

pkg_t
pkg_type(struct pkg *pkg)
{
@@ -139,7 +143,7 @@ pkg_open(const char *path, struct pkg **pkg, int query_flags)
			size = archive_entry_size(ae);
			buf = calloc(1, size+1);
			archive_read_data(a, buf, size);
-
			pkg_setdesc(*pkg, buf);
+
			pkg_set(*pkg, PKG_DESC, buf);
			free(buf);
		}

@@ -191,6 +195,7 @@ pkg_reset(struct pkg *pkg)
	sbuf_reset(pkg->version);
	sbuf_reset(pkg->comment);
	sbuf_reset(pkg->desc);
+
	sbuf_reset(pkg->mtree);

	array_reset(&pkg->deps, &pkg_free_void);
	array_reset(&pkg->rdeps, &pkg_free_void);
@@ -209,6 +214,7 @@ pkg_free(struct pkg *pkg)
	sbuf_free(pkg->origin);
	sbuf_free(pkg->comment);
	sbuf_free(pkg->desc);
+
	sbuf_free(pkg->mtree);

	array_free(&pkg->deps, &pkg_free_void);
	array_free(&pkg->rdeps, &pkg_free_void);
@@ -228,27 +234,30 @@ pkg_free_void(void *p)
/* Setters */

int
-
pkg_setorigin(struct pkg *pkg, const char *origin)
-
{
-
	return (sbuf_set(&pkg->origin, origin));
-
}
-

-
int
-
pkg_setname(struct pkg *pkg, const char *name)
-
{
-
	return (sbuf_set(&pkg->name, name));
-
}
-

-
int
-
pkg_setversion(struct pkg *pkg, const char *version)
+
pkg_set(struct pkg *pkg, pkg_attr attr, const char *value)
{
-
	return (sbuf_set(&pkg->version, version));
-
}
+
	switch (attr) {
+
		case PKG_NAME:
+
			pkg_set_str(pkg, name, value);
+
			break;
+
		case PKG_VERSION:
+
			pkg_set_str(pkg, version, value);
+
			break;
+
		case PKG_COMMENT:
+
			pkg_set_str(pkg, comment, value);
+
			break;
+
		case PKG_ORIGIN:
+
			pkg_set_str(pkg, origin, value);
+
			break;
+
		case PKG_DESC:
+
			pkg_set_str(pkg, desc, value);
+
			break;
+
		case PKG_MTREE:
+
			pkg_set_str(pkg, mtree, value);
+
			break;
+
	}

-
int
-
pkg_setcomment(struct pkg *pkg, const char *comment)
-
{
-
	return (sbuf_set(&pkg->comment, comment));
+
	return (0);
}

int
@@ -260,7 +269,7 @@ pkg_setdesc_from_file(struct pkg *pkg, const char *desc_path)
	if (file_to_buffer(desc_path, &buf) <= 0)
		return (-1);

-
	ret = pkg_setdesc(pkg, buf);
+
	ret = pkg_set(pkg, PKG_DESC, buf);

	free(buf);

@@ -268,12 +277,6 @@ pkg_setdesc_from_file(struct pkg *pkg, const char *desc_path)
}

int
-
pkg_setdesc(struct pkg *pkg, const char *desc)
-
{
-
	return (sbuf_set(&pkg->desc, desc));
-
}
-

-
int
pkg_adddep(struct pkg *pkg, const char *name, const char *origin, const char *version)
{
	struct pkg *dep;
@@ -283,9 +286,9 @@ pkg_adddep(struct pkg *pkg, const char *name, const char *origin, const char *ve

	pkg_new(&dep);

-
	pkg_setname(dep, name);
-
	pkg_setorigin(dep, origin);
-
	pkg_setversion(dep, version);
+
	pkg_set(dep, PKG_NAME, name);
+
	pkg_set(dep, PKG_ORIGIN, origin);
+
	pkg_set(dep, PKG_VERSION, version);

	array_init(&pkg->deps, 5);
	array_append(&pkg->deps, dep);
modified libpkg/pkg.h
@@ -23,6 +23,15 @@ typedef enum {
	PKG_NOTFOUND
} pkg_t;

+
typedef enum {
+
	PKG_NAME,
+
	PKG_VERSION,
+
	PKG_ORIGIN,
+
	PKG_COMMENT,
+
	PKG_DESC,
+
	PKG_MTREE
+
} pkg_attr;
+

/* pkg */
int pkg_new(struct pkg **);
int pkg_open(const char *, struct pkg **, int);
@@ -41,11 +50,7 @@ struct pkg_conflict ** pkg_conflicts(struct pkg *);
int pkg_resolvdeps(struct pkg *, struct pkgdb *db);

/* pkg setters */
-
int pkg_setname(struct pkg *, const char *);
-
int pkg_setversion(struct pkg *, const char *);
-
int pkg_setcomment(struct pkg *, const char *);
-
int pkg_setorigin(struct pkg *, const char *);
-
int pkg_setdesc(struct pkg *, const char *);
+
int pkg_set(struct pkg *, pkg_attr, const char *);
int pkg_setdesc_from_file(struct pkg *, const char *);
int pkg_adddep(struct pkg *, const char *, const char *, const char *);
int pkg_addfile(struct pkg *, const char *, const char *);
modified libpkg/pkg_manifest.c
@@ -55,7 +55,7 @@ m_parse_name(struct pkg *pkg, char *buf)
	while (isspace(*buf))
		buf++;

-
	pkg_setname(pkg, buf);
+
	pkg_set(pkg, PKG_NAME, buf);

	return (0);
}
@@ -66,7 +66,7 @@ m_parse_origin(struct pkg *pkg, char *buf)
	while (isspace(*buf))
		buf++;

-
	pkg_setorigin(pkg, buf);
+
	pkg_set(pkg, PKG_ORIGIN, buf);

	return (0);
}
@@ -77,7 +77,7 @@ m_parse_version(struct pkg *pkg, char *buf)
	while (isspace(*buf))
		buf++;

-
	pkg_setversion(pkg, buf);
+
	pkg_set(pkg, PKG_VERSION, buf);

	return (0);
}
@@ -133,7 +133,7 @@ m_parse_comment(struct pkg *pkg, char *buf)
	while (isspace(*buf))
		buf++;

-
	pkg_setcomment(pkg, buf);
+
	pkg_set(pkg, PKG_COMMENT, buf);

	return (0);
}
@@ -177,13 +177,13 @@ m_parse_dep(struct pkg *pkg, char *buf)
	for (i = 0; i <= nbel; i++) {
		switch(i) {
			case 0:
-
				pkg_setname(dep, buf_ptr);
+
				pkg_set(dep, PKG_NAME, buf_ptr);
				break;
			case 1:
-
				pkg_setorigin(dep, buf_ptr);
+
				pkg_set(dep, PKG_ORIGIN, buf_ptr);
				break;
			case 2:
-
				pkg_setversion(dep, buf_ptr);
+
				pkg_set(dep, PKG_VERSION, buf_ptr);
				break;
		}
		buf_ptr += next + 1;
modified libpkg/pkg_private.h
@@ -13,6 +13,7 @@ struct pkg {
	struct sbuf *version;
	struct sbuf *comment;
	struct sbuf *desc;
+
	struct sbuf *mtree;
	struct array deps;
	struct array rdeps;
	struct array conflicts;
modified libpkg/pkgdb.c
@@ -97,6 +97,7 @@ pkgdb_init(sqlite3 *sdb)
		"version TEXT,"
		"comment TEXT,"
		"desc TEXT,"
+
		"mtree TEXT,"
		"automatic INTEGER"
	");"
	"CREATE TABLE options ("
@@ -208,11 +209,11 @@ pkgdb_it_next_pkg(struct pkgdb_it *it, struct pkg **pkg_p, int flags)
		pkg = *pkg_p;

		pkg->type = PKG_INSTALLED;
-
		pkg_setorigin(pkg, sqlite3_column_text(it->stmt, 0));
-
		pkg_setname(pkg, sqlite3_column_text(it->stmt, 1));
-
		pkg_setversion(pkg, sqlite3_column_text(it->stmt, 2));
-
		pkg_setcomment(pkg, sqlite3_column_text(it->stmt, 3));
-
		pkg_setdesc(pkg, sqlite3_column_text(it->stmt, 4));
+
		pkg_set(pkg, PKG_ORIGIN, sqlite3_column_text(it->stmt, 0));
+
		pkg_set(pkg, PKG_NAME, sqlite3_column_text(it->stmt, 1));
+
		pkg_set(pkg, PKG_VERSION, sqlite3_column_text(it->stmt, 2));
+
		pkg_set(pkg, PKG_COMMENT, sqlite3_column_text(it->stmt, 3));
+
		pkg_set(pkg, PKG_DESC, sqlite3_column_text(it->stmt, 4));

		if (flags & PKG_DEPS) {
			array_init(&pkg->deps, 10);
modified pkg/register.c
@@ -40,7 +40,7 @@ exec_register(int argc, char **argv)
				/* IGNORE */
				break;
			case 'c':
-
				ret += pkg_setcomment(pkg, optarg[0] == '-' ? optarg + 1 : optarg);
+
				ret += pkg_set(pkg, PKG_COMMENT, optarg[0] == '-' ? optarg + 1 : optarg);
				break;
			case 'd':
				ret += pkg_setdesc_from_file(pkg, optarg);
@@ -61,11 +61,11 @@ exec_register(int argc, char **argv)
				v = strrchr(optarg, '-');
				v[0] = '\0';
				v++;
-
				ret += pkg_setname(pkg, optarg);
-
				ret += pkg_setversion(pkg, v);
+
				ret += pkg_set(pkg, PKG_NAME, optarg);
+
				ret += pkg_set(pkg, PKG_VERSION, v);
				break;
			case 'o':
-
				ret += pkg_setorigin(pkg, optarg);
+
				ret += pkg_set(pkg, PKG_ORIGIN, optarg);
				break;
			case 'C':
				conflicts = strdup(optarg);