[Midnightbsd-cvs] src: lib/libmport: Sync with devel version.
ctriv at midnightbsd.org
ctriv at midnightbsd.org
Wed Dec 5 12:02:15 EST 2007
Log Message:
-----------
Sync with devel version.
Add ERRORX macros.
Fix a number of memory leaks.
Various refactorings.
Modified Files:
--------------
src/lib/libmport:
db.c (r1.1 -> r1.2)
inst_init.c (r1.2 -> r1.3)
install_pkg.c (r1.4 -> r1.5)
mport.h (r1.7 -> r1.8)
-------------- next part --------------
Index: install_pkg.c
===================================================================
RCS file: /home/cvs/src/lib/libmport/install_pkg.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -L lib/libmport/install_pkg.c -L lib/libmport/install_pkg.c -u -r1.4 -r1.5
--- lib/libmport/install_pkg.c
+++ lib/libmport/install_pkg.c
@@ -126,6 +126,8 @@
RETURN_CURRENT_ERROR;
}
+ // XXX mport_free_packagemeta_vec()
+
if (clean_up(tmpdir) != MPORT_OK)
RETURN_CURRENT_ERROR;
@@ -169,7 +171,7 @@
if (mport_db_do(db, "BEGIN TRANSACTION") != MPORT_OK)
goto ERROR;
- /* Insert the package meta row into the packages table - XXX Does not honor pack->prefix! */
+ /* Insert the package meta row into the packages table */
if ((ret = mport_db_do(db, "INSERT INTO packages (pkg, version, origin, prefix, lang, options) VALUES (%Q,%Q,%Q,%Q,%Q,%Q)", pack->name, pack->version, pack->origin, pack->prefix, pack->lang, pack->options)) != MPORT_OK)
goto ERROR;
/* Insert the assets into the master table */
@@ -219,7 +221,7 @@
/* we only look for fatal, because EOF is only an error if we come
back around. */
if (archive_read_next_header(a, &entry) == ARCHIVE_FATAL) {
- mport_set_err(MPORT_ERR_ARCHIVE, archive_error_string(a));
+ ret = SET_ERROR(MPORT_ERR_ARCHIVE, archive_error_string(a));
goto ERROR;
}
break;
@@ -406,7 +408,7 @@
if (mport_file_exists(file)) {
if ((ret = mport_xsystem("%s -U -f %s -d -e -p %s >/dev/null", MPORT_MTREE_BIN, file, pack->prefix)) != 0)
- return mport_set_errx(MPORT_ERR_SYSCALL_FAILED, "%s returned non-zero: %i", MPORT_MTREE_BIN, ret);
+ RETURN_ERRORX(MPORT_ERR_SYSCALL_FAILED, "%s returned non-zero: %i", MPORT_MTREE_BIN, ret);
}
return MPORT_OK;
@@ -418,10 +420,10 @@
char file[FILENAME_MAX];
int ret;
- snprintf(file, FILENAME_MAX, "%s/%s/%s-%s/%s", tmpdir, MPORT_STUB_INFRA_DIR, pack->name, pack->version, MPORT_INSTALL_FILE);
+ (void)snprintf(file, FILENAME_MAX, "%s/%s/%s-%s/%s", tmpdir, MPORT_STUB_INFRA_DIR, pack->name, pack->version, MPORT_INSTALL_FILE);
if (mport_file_exists(file)) {
if ((ret = mport_xsystem("PKG_PREFIX=%s %s %s %s", pack->prefix, MPORT_SH_BIN, file, mode)) != 0)
- return mport_set_errx(MPORT_ERR_SYSCALL_FAILED, "%s %s returned non-zero: %i" MPORT_INSTALL_FILE, mode, ret);
+ RETURN_ERRORX(MPORT_ERR_SYSCALL_FAILED, "%s %s returned non-zero: %i" MPORT_INSTALL_FILE, mode, ret);
}
return MPORT_OK;
Index: inst_init.c
===================================================================
RCS file: /home/cvs/src/lib/libmport/inst_init.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L lib/libmport/inst_init.c -L lib/libmport/inst_init.c -u -r1.2 -r1.3
--- lib/libmport/inst_init.c
+++ lib/libmport/inst_init.c
@@ -55,11 +55,9 @@
static int create_master_db(sqlite3 **db)
{
- if (sqlite3_open(MPORT_MASTER_DB_FILE, db) != 0) {
- sqlite3_close(*db);
- RETURN_ERROR(MPORT_ERR_SQLITE, sqlite3_errmsg(*db));
- }
-
+ if (mport_db_open_master(db) != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+
/* create tables */
return mport_generate_master_schema(*db);
}
Index: mport.h
===================================================================
RCS file: /home/cvs/src/lib/libmport/mport.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -L lib/libmport/mport.h -L lib/libmport/mport.h -u -r1.7 -r1.8
--- lib/libmport/mport.h
+++ lib/libmport/mport.h
@@ -107,6 +107,7 @@
int mport_generate_stub_schema(sqlite3 *);
/* Various database convience functions */
+int mport_db_open_master(sqlite3 **);
int mport_attach_stub_db(sqlite3 *, const char *);
int mport_get_meta_from_stub(sqlite3 *, mportPackageMeta ***);
int mport_get_meta_from_master(sqlite3 *, mportPackageMeta**, const char *);
@@ -141,11 +142,13 @@
#define MPORT_ERR_CONFLICTS 10
#define MPORT_ERR_MISSING_DEPEND 11
#define MPORT_ERR_MALFORMED_VERSION 12
-
+#define MPORT_ERR_NO_SUCH_PKG 13
#define RETURN_CURRENT_ERROR return mport_err_code()
#define RETURN_ERROR(code, msg) return mport_set_errx((code), "Error at %s:(%d): %s", __FILE__, __LINE__, (msg))
-#define SET_ERROR(code,msg) mport_set_errx((code), "Error at %s:(%d): %s", __FILE__, __LINE__, (msg))
+#define SET_ERROR(code, msg) mport_set_errx((code), "Error at %s:(%d): %s", __FILE__, __LINE__, (msg))
+#define RETURN_ERRORX(code, fmt, ...) return mport_set_errx((code), "Error at %s:(%d): " fmt, __FILE__, __LINE__, __VA_ARGS__)
+#define SET_ERRORX(code, fmt, ...) mport_set_errx((code), "Error at %s:(%d): " fmt, __FILE__, __LINE__, __VA_ARGS__)
/* Utils */
Index: db.c
===================================================================
RCS file: /home/cvs/src/lib/libmport/db.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -L lib/libmport/db.c -L lib/libmport/db.c -u -r1.1 -r1.2
--- lib/libmport/db.c
+++ lib/libmport/db.c
@@ -41,6 +41,25 @@
static int populate_meta_from_stmt(mportPackageMeta *, sqlite3 *, sqlite3_stmt *);
+/* mport_db_open_master(sqlite3 **)
+ *
+ * Open the master database file, or create the file if it doesn't exist.
+ * Note that this function will not create the schema for you, if you need
+ * to create the schema use mport_inst_init() instead.
+ */
+int mport_db_open_master(sqlite3 **db)
+{
+ if (sqlite3_open(MPORT_MASTER_DB_FILE, db) != 0) {
+ sqlite3_close(*db);
+ RETURN_ERROR(MPORT_ERR_SQLITE, sqlite3_errmsg(*db));
+ }
+
+ return MPORT_OK;
+}
+
+
+
+
/* mport_db_do(sqlite3 *db, const char *sql, ...)
*
* A wrapper for doing executing a single sql query. Takes a sqlite3 struct
@@ -185,7 +204,8 @@
int mport_get_meta_from_master(sqlite3 *db, mportPackageMeta **pack, const char *name)
{
sqlite3_stmt *stmt;
-
+ int ret;
+
if (mport_db_prepare(db, &stmt, "SELECT pkg, version, lang, prefix FROM packages WHERE pkg=%Q", name) != MPORT_OK)
RETURN_CURRENT_ERROR;
@@ -194,7 +214,10 @@
*pack = mport_new_packagemeta();
if (*pack == NULL)
return MPORT_ERR_NO_MEM;
- return populate_meta_from_stmt(*pack, db, stmt);
+
+ ret = populate_meta_from_stmt(*pack, db, stmt);
+ sqlite3_finalize(stmt);
+ return ret;
break;
case SQLITE_DONE:
*pack = NULL;
More information about the Midnightbsd-cvs
mailing list