Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Use sbuf(9) to manage strings.
jlaffaye committed 15 years ago
commit f7b221ee945fc1201baca6208e91a351154f6c2b
parent bb2dc13
5 files changed +83 -47
modified libpkg/Makefile
@@ -28,7 +28,8 @@ LDADD+= -L${.CURDIR}/../external/jansson \
		-larchive \
		-lz \
		-lbz2 \
-
		-llzma
+
		-llzma \
+
		-lsbuf

DEBUG_FLAGS+=  -g
.if defined(PROFILE_BUILD)
modified libpkg/pkg.c
@@ -11,33 +11,33 @@
static void pkg_free_void(void*);

const char *
-
pkg_name(struct pkg *pkg)
+
pkg_origin(struct pkg *pkg)
{
-
	return (pkg->name);
+
	return (sbuf_data(pkg->origin));
}

const char *
-
pkg_version(struct pkg *pkg)
+
pkg_name(struct pkg *pkg)
{
-
	return (pkg->version);
+
	return (sbuf_data(pkg->name));
}

const char *
-
pkg_comment(struct pkg *pkg)
+
pkg_version(struct pkg *pkg)
{
-
	return (pkg->comment);
+
	return (sbuf_data(pkg->version));
}

const char *
-
pkg_desc(struct pkg *pkg)
+
pkg_comment(struct pkg *pkg)
{
-
	return (pkg->comment);
+
	return (sbuf_data(pkg->comment));
}

const char *
-
pkg_origin(struct pkg *pkg)
+
pkg_desc(struct pkg *pkg)
{
-
	return (pkg->origin);
+
	return (sbuf_data(pkg->comment));
}

struct pkg **
@@ -69,6 +69,13 @@ pkg_new(struct pkg **pkg)
{
	if ((*pkg = calloc(1, sizeof(struct pkg))) == NULL)
		err(EXIT_FAILURE, "calloc()");
+

+
	(*pkg)->name = sbuf_new_auto();
+
	(*pkg)->version = sbuf_new_auto();
+
	(*pkg)->origin = sbuf_new_auto();
+
	(*pkg)->comment = sbuf_new_auto();
+
	(*pkg)->desc = sbuf_new_auto();
+

	return (0);
}

@@ -78,13 +85,11 @@ pkg_reset(struct pkg *pkg)
	if (pkg == NULL)
		return;

-
	pkg->name[0] = '\0';
-
	pkg->version[0] = '\0';
-
	pkg->origin[0] = '\0';
-
	pkg->comment[0] = '\0';
-

-
	free(pkg->desc);
-
	pkg->desc = NULL;
+
	sbuf_clear(pkg->name);
+
	sbuf_clear(pkg->version);
+
	sbuf_clear(pkg->origin);
+
	sbuf_clear(pkg->comment);
+
	sbuf_clear(pkg->desc);

	array_reset(&pkg->deps, &pkg_free_void);
	array_reset(&pkg->rdeps, &pkg_free_void);
@@ -98,7 +103,11 @@ pkg_free(struct pkg *pkg)
	if (pkg == NULL)
		return;

-
	free(pkg->desc);
+
	sbuf_delete(pkg->name);
+
	sbuf_delete(pkg->version);
+
	sbuf_delete(pkg->origin);
+
	sbuf_delete(pkg->comment);
+
	sbuf_delete(pkg->desc);

	array_free(&pkg->deps, &pkg_free_void);
	array_free(&pkg->rdeps, &pkg_free_void);
modified libpkg/pkg_conflict.c
@@ -6,19 +6,19 @@
const char *
pkg_conflict_origin(struct pkg_conflict *c)
{
-
	return (c->origin);
+
	return (sbuf_data(c->origin));
}

const char *
-
pkg_conflict_version(struct pkg_conflict *c)
+
pkg_conflict_name(struct pkg_conflict *c)
{
-
	return (c->version);
+
	return (sbuf_data(c->name));
}

const char *
-
pkg_conflict_name(struct pkg_conflict *c)
+
pkg_conflict_version(struct pkg_conflict *c)
{
-
	return (c->name);
+
	return (sbuf_data(c->version));
}

int
@@ -26,19 +26,28 @@ pkg_conflict_new(struct pkg_conflict **c)
{
	if ((*c = calloc(1, sizeof(struct pkg_conflict))))
		return (-1);
+

+
	(*c)->origin = sbuf_new_auto();
+
	(*c)->name = sbuf_new_auto();
+
	(*c)->version = sbuf_new_auto();
+

	return (0);
}

void
pkg_conflict_reset(struct pkg_conflict *c)
{
-
	c->origin[0] = '\0';
-
	c->version[0] = '\0';
-
	c->name[0] = '\0';
+
	sbuf_clear(c->origin);
+
	sbuf_clear(c->name);
+
	sbuf_clear(c->version);
}

void
pkg_conflict_free(struct pkg_conflict *c)
{
+
	sbuf_delete(c->origin);
+
	sbuf_delete(c->name);
+
	sbuf_delete(c->version);
+

	free(c);
}
modified libpkg/pkg_private.h
@@ -1,14 +1,17 @@
#ifndef _PKG_PRIVATE_H
#define _PKG_PRIVATE_H

+
#include <sys/types.h>
+
#include <sys/sbuf.h>
+

#include "util.h"

struct pkg {
-
	char name[100];
-
	char version[10];
-
	char origin[100];
-
	char comment[150];
-
	char *desc;
+
	struct sbuf *origin;
+
	struct sbuf *name;
+
	struct sbuf *version;
+
	struct sbuf *comment;
+
	struct sbuf *desc;
	struct array deps;
	struct array rdeps;
	struct array conflicts;
@@ -16,9 +19,9 @@ struct pkg {
};

struct pkg_conflict {
-
	char name[100];
-
	char version[10];
-
	char origin[100];
+
	struct sbuf *origin;
+
	struct sbuf *name;
+
	struct sbuf *version;
};

struct pkg_file {
modified libpkg/pkgdb.c
@@ -308,16 +308,25 @@ pkgdb_it_next_pkg(struct pkgdb_it *it, struct pkg **pkg_p, int flags)
			pkg_reset(*pkg_p);
		pkg = *pkg_p;

-
		strlcpy(pkg->origin, sqlite3_column_text(it->stmt, 0), sizeof(pkg->origin));
-
		strlcpy(pkg->name, sqlite3_column_text(it->stmt, 1), sizeof(pkg->name));
-
		strlcpy(pkg->version, sqlite3_column_text(it->stmt, 2), sizeof(pkg->version));
-
		strlcpy(pkg->comment, sqlite3_column_text(it->stmt, 3), sizeof(pkg->comment));
-
		pkg->desc = strdup(sqlite3_column_text(it->stmt, 4));
+
		sbuf_cat(pkg->origin, sqlite3_column_text(it->stmt, 0));
+
		sbuf_finish(pkg->origin);
+

+
		sbuf_cat(pkg->name, sqlite3_column_text(it->stmt, 1));
+
		sbuf_finish(pkg->name);
+

+
		sbuf_cat(pkg->version, sqlite3_column_text(it->stmt, 2));
+
		sbuf_finish(pkg->version);
+

+
		sbuf_cat(pkg->comment, sqlite3_column_text(it->stmt, 3));
+
		sbuf_finish(pkg->comment);
+

+
		sbuf_cat(pkg->desc, sqlite3_column_text(it->stmt, 4));
+
		sbuf_finish(pkg->desc);

		if (flags & PKG_DEPS) {
			array_init(&pkg->deps, 10);

-
			i = pkgdb_query_dep(it->db, pkg->origin);
+
			i = pkgdb_query_dep(it->db, pkg_origin(pkg));
			p = NULL;
			while (pkgdb_it_next_pkg(i, &p, PKG_BASIC) == 0) {
				array_append(&pkg->deps, p);
@@ -331,7 +340,7 @@ pkgdb_it_next_pkg(struct pkgdb_it *it, struct pkg **pkg_p, int flags)
		if (flags & PKG_RDEPS) {
			array_init(&pkg->rdeps, 5);

-
			i = pkgdb_query_rdep(it->db, pkg->origin);
+
			i = pkgdb_query_rdep(it->db, pkg_origin(pkg));
			p = NULL;
			while (pkgdb_it_next_pkg(i, &p, PKG_BASIC) == 0) {
				array_append(&pkg->rdeps, p);
@@ -345,7 +354,7 @@ pkgdb_it_next_pkg(struct pkgdb_it *it, struct pkg **pkg_p, int flags)
		if (flags & PKG_CONFLICTS) {
			array_init(&pkg->conflicts, 5);

-
			i = pkgdb_query_conflicts(it->db, pkg->origin);
+
			i = pkgdb_query_conflicts(it->db, pkg_origin(pkg));
			c = NULL;
			while (pkgdb_it_next_conflict(i, &c) == 0) {
				array_append(&pkg->conflicts, c);
@@ -359,7 +368,7 @@ pkgdb_it_next_pkg(struct pkgdb_it *it, struct pkg **pkg_p, int flags)
		if (flags & PKG_FILES) {
			array_init(&pkg->files, 10);

-
			i = pkgdb_query_files(it->db, pkg->origin);
+
			i = pkgdb_query_files(it->db, pkg_origin(pkg));
			f = NULL;
			while (pkgdb_it_next_file(i, &f) == 0) {
				array_append(&pkg->files, f);
@@ -393,9 +402,14 @@ pkgdb_it_next_conflict(struct pkgdb_it *it, struct pkg_conflict **c_p)
			pkg_conflict_reset(*c_p);
		c = *c_p;

-
		strlcpy(c->origin, sqlite3_column_text(it->stmt, 0), sizeof(c->origin));
-
		strlcpy(c->name, sqlite3_column_text(it->stmt, 1), sizeof(c->name));
-
		strlcpy(c->version, sqlite3_column_text(it->stmt, 2), sizeof(c->version));
+
		sbuf_cat(c->origin, sqlite3_column_text(it->stmt, 0));
+
		sbuf_finish(c->origin);
+

+
		sbuf_cat(c->name, sqlite3_column_text(it->stmt, 1));
+
		sbuf_finish(c->name);
+

+
		sbuf_cat(c->version, sqlite3_column_text(it->stmt, 2));
+
		sbuf_finish(c->version);
		return (0);
	case SQLITE_DONE:
		return (1);