[Midnightbsd-cvs] src [12039] trunk/lib/libmport: add additional fields and bump both version fields

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Sep 14 09:10:29 EDT 2018


Revision: 12039
          http://svnweb.midnightbsd.org/src/?rev=12039
Author:   laffer1
Date:     2018-09-14 09:10:28 -0400 (Fri, 14 Sep 2018)
Log Message:
-----------
add additional fields and bump both version fields

Modified Paths:
--------------
    trunk/lib/libmport/create_primative.c
    trunk/lib/libmport/db.c
    trunk/lib/libmport/mport.h
    trunk/lib/libmport/mport_private.h
    trunk/lib/libmport/pkgmeta.c

Modified: trunk/lib/libmport/create_primative.c
===================================================================
--- trunk/lib/libmport/create_primative.c	2018-09-14 12:15:29 UTC (rev 12038)
+++ trunk/lib/libmport/create_primative.c	2018-09-14 13:10:28 UTC (rev 12039)
@@ -121,102 +121,103 @@
 static int
 insert_assetlist(sqlite3 *db, mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra)
 {
-  mportAssetListEntry *e = NULL;
-  sqlite3_stmt *stmnt = NULL;
-  char sql[]  = "INSERT INTO assets (pkg, type, data, checksum, owner, grp, mode) VALUES (?,?,?,?,?,?,?)";
-  char md5[33];
-  char file[FILENAME_MAX];
-  char cwd[FILENAME_MAX];
-  struct stat st;
+	mportAssetListEntry *e = NULL;
+	sqlite3_stmt *stmnt = NULL;
+	char sql[] = "INSERT INTO assets (pkg, type, data, checksum, owner, grp, mode) VALUES (?,?,?,?,?,?,?)";
+	char md5[33];
+	char file[FILENAME_MAX];
+	char cwd[FILENAME_MAX];
+	struct stat st;
 
-  strlcpy(cwd, extra->sourcedir, FILENAME_MAX);
-  strlcat(cwd, pack->prefix, FILENAME_MAX);
-  
-  if (mport_db_prepare(db, &stmnt, sql) != MPORT_OK) 
-    RETURN_CURRENT_ERROR;
-  
-  STAILQ_FOREACH(e, assetlist, next) {
-    if (e->type == ASSET_COMMENT)
-      continue;
-  
-    if (e->type == ASSET_CWD) {
-      strlcpy(cwd, extra->sourcedir, FILENAME_MAX);
-      if (e->data == NULL) {
-        strlcat(cwd, pack->prefix, FILENAME_MAX);
-      } else {
-        strlcat(cwd, e->data, FILENAME_MAX);
-      }
-    }
-    
-    if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
-      RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
-    if (sqlite3_bind_int(stmnt, 2, e->type) != SQLITE_OK) {
-      RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
-    if (sqlite3_bind_text(stmnt, 3, e->data, -1, SQLITE_STATIC) != SQLITE_OK) {
-      RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
-    // 4 is computed below 
-    if (sqlite3_bind_text(stmnt, 5, e->owner, -1, SQLITE_STATIC) != SQLITE_OK) { 
-      RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
-    if (sqlite3_bind_text(stmnt, 6, e->group, -1, SQLITE_STATIC) != SQLITE_OK) {
-       RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
-    if (sqlite3_bind_text(stmnt, 7, e->mode, -1, SQLITE_STATIC) != SQLITE_OK) {
-       RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
+	strlcpy(cwd, extra->sourcedir, FILENAME_MAX);
+	strlcat(cwd, pack->prefix, FILENAME_MAX);
 
-    if (e->type == ASSET_FILE || e->type == ASSET_SAMPLE || e->type == ASSET_SHELL || e->type == ASSET_FILE_OWNER_MODE) {
-      /* Don't prepend cwd onto absolute file paths (this is useful for update) */
-      if (e->data[0] == '/') {
-        (void)strlcpy(file, e->data, FILENAME_MAX);
-      } else {
-        (void)snprintf(file, FILENAME_MAX, "%s/%s", cwd, e->data);
-      }
+	if (mport_db_prepare(db, &stmnt, sql) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
 
-      if (e->type == ASSET_SAMPLE) {
-          for (int ch = 0; ch < FILENAME_MAX; ch++) {
-		if (file[ch] == '\0')
-			break;
-		if (file[ch] == ' ' || file[ch] == '\t')
-			file[ch] = '\0';
-	  } 
-      }
+	STAILQ_FOREACH(e, assetlist, next) {
+		if (e->type == ASSET_COMMENT)
+			continue;
 
-      if (lstat(file, &st) != 0) {
-        sqlite3_finalize(stmnt);
-        RETURN_ERRORX(MPORT_ERR_FATAL, "Could not stat %s: %s", file, strerror(errno));
-      }
+		if (e->type == ASSET_CWD) {
+			strlcpy(cwd, extra->sourcedir, FILENAME_MAX);
+			if (e->data == NULL) {
+				strlcat(cwd, pack->prefix, FILENAME_MAX);
+			} else {
+				strlcat(cwd, e->data, FILENAME_MAX);
+			}
+		}
 
-      if (S_ISREG(st.st_mode)) {
-        if (MD5File(file, md5) == NULL) 
-          RETURN_ERRORX(MPORT_ERR_FATAL, "File not found: %s", file);
-      
-        if (sqlite3_bind_text(stmnt, 4, md5, -1, SQLITE_STATIC) != SQLITE_OK) 
-          RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-      } else {
-        sqlite3_bind_null(stmnt, 4);
-      }
-    } else {
-      if (sqlite3_bind_null(stmnt, 4) != SQLITE_OK) {
-        RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-      }
-    }
-    
-    if (sqlite3_step(stmnt) != SQLITE_DONE) {
-      RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    }
-        
-    sqlite3_reset(stmnt);
-  } 
-  
-  sqlite3_finalize(stmnt);
-  
-  return MPORT_OK;
-}     
+		if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
+		if (sqlite3_bind_int(stmnt, 2, e->type) != SQLITE_OK) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
+		if (sqlite3_bind_text(stmnt, 3, e->data, -1, SQLITE_STATIC) != SQLITE_OK) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
+		// 4 is computed below
+		if (sqlite3_bind_text(stmnt, 5, e->owner, -1, SQLITE_STATIC) != SQLITE_OK) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
+		if (sqlite3_bind_text(stmnt, 6, e->group, -1, SQLITE_STATIC) != SQLITE_OK) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
+		if (sqlite3_bind_text(stmnt, 7, e->mode, -1, SQLITE_STATIC) != SQLITE_OK) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
 
+		if (e->type == ASSET_FILE || e->type == ASSET_SAMPLE || e->type == ASSET_SHELL ||
+		    e->type == ASSET_FILE_OWNER_MODE) {
+			/* Don't prepend cwd onto absolute file paths (this is useful for update) */
+			if (e->data[0] == '/') {
+				(void) strlcpy(file, e->data, FILENAME_MAX);
+			} else {
+				(void) snprintf(file, FILENAME_MAX, "%s/%s", cwd, e->data);
+			}
+
+			if (e->type == ASSET_SAMPLE) {
+				for (int ch = 0; ch < FILENAME_MAX; ch++) {
+					if (file[ch] == '\0')
+						break;
+					if (file[ch] == ' ' || file[ch] == '\t')
+						file[ch] = '\0';
+				}
+			}
+
+			if (lstat(file, &st) != 0) {
+				sqlite3_finalize(stmnt);
+				RETURN_ERRORX(MPORT_ERR_FATAL, "Could not stat %s: %s", file, strerror(errno));
+			}
+
+			if (S_ISREG(st.st_mode)) {
+				if (MD5File(file, md5) == NULL)
+					RETURN_ERRORX(MPORT_ERR_FATAL, "File not found: %s", file);
+
+				if (sqlite3_bind_text(stmnt, 4, md5, -1, SQLITE_STATIC) != SQLITE_OK)
+					RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+			} else {
+				sqlite3_bind_null(stmnt, 4);
+			}
+		} else {
+			if (sqlite3_bind_null(stmnt, 4) != SQLITE_OK) {
+				RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+			}
+		}
+
+		if (sqlite3_step(stmnt) != SQLITE_DONE) {
+			RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+		}
+
+		sqlite3_reset(stmnt);
+	}
+
+	sqlite3_finalize(stmnt);
+
+	return MPORT_OK;
+}
+
 static int
 insert_meta(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
 {
@@ -224,8 +225,8 @@
 
 	dispatch_sync(mportSQLSerial, ^{
 		sqlite3_stmt *stmnt = NULL;
-		const char *rest  = 0;
-		char sql[] = "INSERT INTO packages (pkg, version, origin, lang, prefix, comment, os_release, cpe) VALUES (?,?,?,?,?,?,?,?)";
+		const char *rest = 0;
+		char sql[] = "INSERT INTO packages (pkg, version, origin, lang, prefix, comment, os_release, cpe, deprecated, expiration_date, no_provide_shlib, flavor) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
 
 		char *os_release = mport_get_osrelease();
 		if (pack->cpe == NULL) {
@@ -232,6 +233,14 @@
 			pack->cpe = alloca(1);
 			pack->cpe[0] = '\0';
 		}
+		if (pack->deprecated == NULL) {
+			pack->deprecated = alloca(1);
+			pack->deprecated[0] = '\0';
+		}
+		if (pack->flavor == NULL) {
+			pack->flavor = alloca(1);
+			pack->flavor[0] = '\0';
+		}
 
 		if (sqlite3_prepare_v2(db, sql, -1, &stmnt, &rest) != SQLITE_OK) {
 			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
@@ -261,7 +270,6 @@
 			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 			return;
 		}
-
 		if (sqlite3_bind_text(stmnt, 7, os_release, -1, SQLITE_STATIC) != SQLITE_OK) {
 			free(os_release);
 			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
@@ -271,6 +279,22 @@
 			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 			return;
 		}
+		if (sqlite3_bind_text(stmnt, 9, pack->deprecated, -1, SQLITE_STATIC) != SQLITE_OK) {
+			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+			return;
+		}
+		if (sqlite3_bind_int64(stmnt, 10, pack->expiration_date) != SQLITE_OK) {
+			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+			return;
+		}
+		if (sqlite3_bind_int(stmnt, 11, pack->no_provide_shlib) != SQLITE_OK) {
+			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+			return;
+		}
+		if (sqlite3_bind_text(stmnt, 12, pack->flavor, -1, SQLITE_STATIC) != SQLITE_OK) {
+			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+			return;
+		}
 
 		if (sqlite3_step(stmnt) != SQLITE_DONE) {
 			error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
@@ -283,14 +307,14 @@
 	if (error_code != MPORT_OK)
 		return error_code;
 
-  if (insert_depends(db, pack, extra) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
-  if (insert_conflicts(db, pack, extra) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
-  if (insert_categories(db, pack) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+	if (insert_depends(db, pack, extra) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
+	if (insert_conflicts(db, pack, extra) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
+	if (insert_categories(db, pack) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
 
-  return error_code;
+	return error_code;
 }
 
 
@@ -481,30 +505,30 @@
 static int
 archive_files(mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra, const char *tmpdir)
 {
-  mportBundleWrite *bundle;
-  char filename[FILENAME_MAX];
-  
-  bundle = mport_bundle_write_new();
-  
-  if (mport_bundle_write_init(bundle, extra->pkg_filename) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+	mportBundleWrite *bundle;
+	char filename[FILENAME_MAX];
 
-  /* First step - +CONTENTS.db ALWAYS GOES FIRST!!! */        
-  (void)snprintf(filename, FILENAME_MAX, "%s/%s", tmpdir, MPORT_STUB_DB_FILE);
-  if (mport_bundle_write_add_file(bundle, filename, MPORT_STUB_DB_FILE)) 
-    RETURN_CURRENT_ERROR;
-    
-  /* second step - the meta files */
-  if (archive_metafiles(bundle, pack, extra) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
+	bundle = mport_bundle_write_new();
 
-  /* last step - the real files from the assetlist */
-  if (archive_assetlistfiles(bundle, pack, extra, assetlist) != MPORT_OK)
-    RETURN_CURRENT_ERROR;
-    
-  mport_bundle_write_finish(bundle);
-  
-  return MPORT_OK;    
+	if (mport_bundle_write_init(bundle, extra->pkg_filename) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
+
+	/* First step - +CONTENTS.db ALWAYS GOES FIRST!!! */
+	(void) snprintf(filename, FILENAME_MAX, "%s/%s", tmpdir, MPORT_STUB_DB_FILE);
+	if (mport_bundle_write_add_file(bundle, filename, MPORT_STUB_DB_FILE))
+		RETURN_CURRENT_ERROR;
+
+	/* second step - the meta files */
+	if (archive_metafiles(bundle, pack, extra) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
+
+	/* last step - the real files from the assetlist */
+	if (archive_assetlistfiles(bundle, pack, extra, assetlist) != MPORT_OK)
+		RETURN_CURRENT_ERROR;
+
+	mport_bundle_write_finish(bundle);
+
+	return MPORT_OK;
 }
 
 

Modified: trunk/lib/libmport/db.c
===================================================================
--- trunk/lib/libmport/db.c	2018-09-14 12:15:29 UTC (rev 12038)
+++ trunk/lib/libmport/db.c	2018-09-14 13:10:28 UTC (rev 12039)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2013, 2014 Lucas Holt
+ * Copyright (c) 2013, 2014, 2018 Lucas Holt
  * Copyright (c) 2007-2009 Chris Reinhardt
  * All rights reserved.
  *
@@ -38,6 +38,7 @@
 static int mport_upgrade_master_schema_2to3(sqlite3 *);
 static int mport_upgrade_master_schema_3to4(sqlite3 *);
 static int mport_upgrade_master_schema_4to6(sqlite3 *);
+static int mport_upgrade_master_schema_6to7(sqlite3 *);
 
 
 /* mport_db_do(sqlite3 *db, const char *sql, ...)
@@ -242,7 +243,7 @@
 	RUN_SQL(db, "INSERT INTO meta VALUES (\"bundle_format_version\", " MPORT_BUNDLE_VERSION_STR ")");
 	RUN_SQL(db, sql);
 	RUN_SQL(db, "CREATE TABLE assets (pkg text not NULL, type int NOT NULL, data text, checksum text, owner text, grp text, mode text)");
-	RUN_SQL(db, "CREATE TABLE packages (pkg text NOT NULL, version text NOT NULL, origin text NOT NULL, lang text, options text, prefix text NOT NULL, comment text, os_release text NOT NULL, cpe text NOT NULL)");
+	RUN_SQL(db, "CREATE TABLE packages (pkg text NOT NULL, version text NOT NULL, origin text NOT NULL, lang text, options text, prefix text NOT NULL, comment text, os_release text NOT NULL, cpe text NOT NULL, deprecated text, expiration_date int64, no_provide_shlib int NOT NULL, flavor text)");
 	RUN_SQL(db, "CREATE TABLE conflicts (pkg text NOT NULL, conflict_pkg text NOT NULL, conflict_version text NOT NULL)");
 	RUN_SQL(db, "CREATE TABLE depends (pkg text NOT NULL, depend_pkgname text NOT NULL, depend_pkgversion text, depend_port text NOT NULL)");
 	RUN_SQL(db, "CREATE TABLE categories (pkg text NOT NULL, category text NOT NULL)");
@@ -262,22 +263,25 @@
 			mport_upgrade_master_schema_0to2(db);
 			mport_upgrade_master_schema_2to3(db);
 			mport_upgrade_master_schema_4to6(db);
+			mport_upgrade_master_schema_6to7(db);
 			mport_set_database_version(db);
 			break;
 		case 2:
 			mport_upgrade_master_schema_2to3(db);
+			/* falls through */
 		case 3:
 			mport_upgrade_master_schema_3to4(db);
-			mport_upgrade_master_schema_4to6(db);
-			mport_set_database_version(db);
-			break;
+			/* falls through */
 		case 4:
 			/* falls through */
 		case 5:
 			mport_upgrade_master_schema_4to6(db);
+			/* falls through */
+		case 6:
+			mport_upgrade_master_schema_6to7(db);
 			mport_set_database_version(db);
 			break;
-		case 6:
+		case 7:
 			break;
 		default:
 			RETURN_ERROR(MPORT_ERR_FATAL, "Invalid master database version");
@@ -324,11 +328,24 @@
 	return (MPORT_OK);
 }
 
+static int
+mport_upgrade_master_schema_6to7(sqlite3 *db) {
+	RUN_SQL(db, "ALTER TABLE packages ADD COLUMN deprecated text");
+	RUN_SQL(db, "ALTER TABLE packages ADD COLUMN expiration_date int64");
+	RUN_SQL(db, "ALTER TABLE packages ADD COLUMN no_provide_shlib int");
+	RUN_SQL(db, "ALTER TABLE packages ADD COLUMN flavor text");
+
+	RUN_SQL(db, "update packages set no_provide_shlib = 0");
+	RUN_SQL(db, "update packages set expiration_date = 0");
+	RUN_SQL(db, "update packages set deprecated = ''");
+	RUN_SQL(db, "update packages set flavor = ''");
+}
+
 int
 mport_generate_master_schema(sqlite3 *db) 
 {
 
-	RUN_SQL(db, "CREATE TABLE IF NOT EXISTS packages (pkg text NOT NULL, version text NOT NULL, origin text NOT NULL, prefix text NOT NULL, lang text, options text, status text default 'dirty', comment text, os_release text, cpe text, locked int NOT NULL)");
+	RUN_SQL(db, "CREATE TABLE IF NOT EXISTS packages (pkg text NOT NULL, version text NOT NULL, origin text NOT NULL, prefix text NOT NULL, lang text, options text, status text default 'dirty', comment text, os_release text, cpe text, locked int NOT NULL, deprecated text, expiration_date int64, no_provide_shlib int NOT NULL, flavor text)");
 	RUN_SQL(db, "CREATE UNIQUE INDEX IF NOT EXISTS packages_pkg ON packages (pkg)");
 	RUN_SQL(db, "CREATE INDEX IF NOT EXISTS packages_origin ON packages (origin)");
 

Modified: trunk/lib/libmport/mport.h
===================================================================
--- trunk/lib/libmport/mport.h	2018-09-14 12:15:29 UTC (rev 12038)
+++ trunk/lib/libmport/mport.h	2018-09-14 13:10:28 UTC (rev 12039)
@@ -109,20 +109,23 @@
 int mport_parse_plistfile(FILE *, mportAssetList *);
 
 /* Package Meta-data structure */
-
 typedef struct {
-  char *name;
-  char *version;
-  char *lang;
-  char *options;
-  char *comment;
-  char *desc;
-  char *prefix;
-  char *origin;
-  char **categories;
-  char *os_release;
-  char *cpe;
-  int locked;
+    char *name;
+    char *version;
+    char *lang;
+    char *options;
+    char *comment;
+    char *desc;
+    char *prefix;
+    char *origin;
+    char **categories;
+    char *os_release;
+    char *cpe;
+    int locked;
+    char *deprecated;
+    time_t expiration_date;
+    int no_provide_shlib;
+    char *flavor;
 } mportPackageMeta;
 
 int mport_asset_get_assetlist(mportInstance *, mportPackageMeta *, mportAssetList **);

Modified: trunk/lib/libmport/mport_private.h
===================================================================
--- trunk/lib/libmport/mport_private.h	2018-09-14 12:15:29 UTC (rev 12038)
+++ trunk/lib/libmport/mport_private.h	2018-09-14 13:10:28 UTC (rev 12039)
@@ -43,9 +43,9 @@
 
 #define MPORT_PUBLIC_API 
 
-#define MPORT_MASTER_VERSION 6
-#define MPORT_BUNDLE_VERSION 4
-#define MPORT_BUNDLE_VERSION_STR "4"
+#define MPORT_MASTER_VERSION 7
+#define MPORT_BUNDLE_VERSION 5
+#define MPORT_BUNDLE_VERSION_STR "5"
 
 /* callback syntaxtic sugar */
 void mport_call_msg_cb(mportInstance *, const char *, ...);

Modified: trunk/lib/libmport/pkgmeta.c
===================================================================
--- trunk/lib/libmport/pkgmeta.c	2018-09-14 12:15:29 UTC (rev 12038)
+++ trunk/lib/libmport/pkgmeta.c	2018-09-14 13:10:28 UTC (rev 12039)
@@ -128,7 +128,7 @@
     }
 
     if (mport_db_prepare(db, &stmt,
-                         "SELECT pkg, version, origin, lang, prefix, comment, os_release, cpe FROM stub.packages") !=
+                         "SELECT pkg, version, origin, lang, prefix, comment, os_release, cpe, deprecated, expiration_date, no_provide_shlib, flavor FROM stub.packages") !=
         MPORT_OK) {
         sqlite3_finalize(stmt);
         RETURN_CURRENT_ERROR;
@@ -378,109 +378,120 @@
 
 
 static int populate_vec_from_stmt(mportPackageMeta ***ref, int len, sqlite3 *db, sqlite3_stmt *stmt)
-{ 
-  mportPackageMeta **vec;
-  int done = 0;
-  vec  = (mportPackageMeta**)calloc((1+len), sizeof(mportPackageMeta *));
-  *ref = vec;
+{
+	mportPackageMeta **vec;
+	int done = 0;
+	vec = (mportPackageMeta **) calloc((1 + len), sizeof(mportPackageMeta *));
+	*ref = vec;
 
-  while (!done) { 
-    switch (sqlite3_step(stmt)) {
-      case SQLITE_ROW:
-        *vec = mport_pkgmeta_new();
-        if (*vec == NULL)
-          RETURN_ERROR(MPORT_ERR_FATAL, "Couldn't allocate meta."); 
-        if (populate_meta_from_stmt(*vec, db, stmt) != MPORT_OK)
-          RETURN_CURRENT_ERROR;
-        vec++;
-        break;
-      case SQLITE_DONE:
-        /* set the last cell in the array to null */
-        *vec = NULL;
-        done++;
-        break;
-      default:
-        RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-        break; /* not reached */
-    }
-  }
-  
-  /* not reached */
-  return MPORT_OK;
+	while (!done) {
+		switch (sqlite3_step(stmt)) {
+			case SQLITE_ROW:
+				*vec = mport_pkgmeta_new();
+				if (*vec == NULL)
+					RETURN_ERROR(MPORT_ERR_FATAL, "Couldn't allocate meta.");
+				if (populate_meta_from_stmt(*vec, db, stmt) != MPORT_OK)
+					RETURN_CURRENT_ERROR;
+				vec++;
+				break;
+			case SQLITE_DONE:
+				/* set the last cell in the array to null */
+				*vec = NULL;
+				done++;
+				break;
+			default:
+				RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+				break; /* not reached */
+		}
+	}
+
+	/* not reached */
+	return MPORT_OK;
 }
 
 
+static int populate_meta_from_stmt(mportPackageMeta *pack, sqlite3 *db, sqlite3_stmt *stmt)
+{
+	const char *tmp = 0;
 
-static int populate_meta_from_stmt(mportPackageMeta *pack, sqlite3 *db, sqlite3_stmt *stmt) 
-{  
-  const char *tmp = 0;
+	/* Copy pkg to pack->name */
+	if ((tmp = sqlite3_column_text(stmt, 0)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 
-  /* Copy pkg to pack->name */
-  if ((tmp = sqlite3_column_text(stmt, 0)) == NULL) 
-    RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+	if ((pack->name = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
 
-  if ((pack->name = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+	/* Copy version to pack->version */
+	if ((tmp = sqlite3_column_text(stmt, 1)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 
-  /* Copy version to pack->version */
-  if ((tmp = sqlite3_column_text(stmt, 1)) == NULL) 
-    RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-  
-  if ((pack->version = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
-  
-  /* Copy origin to pack->origin */
-  if ((tmp = sqlite3_column_text(stmt, 2)) == NULL) 
-    RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-  
-  if ((pack->origin = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+	if ((pack->version = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
 
-  /* Copy lang to pack->lang */
-  if ((tmp = sqlite3_column_text(stmt, 3)) == NULL) 
-    RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-  
-  if ((pack->lang = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+	/* Copy origin to pack->origin */
+	if ((tmp = sqlite3_column_text(stmt, 2)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 
-  /* Copy prefix to pack->prefix */
-  if ((tmp = sqlite3_column_text(stmt, 4)) == NULL) 
-    RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-  
-  if ((pack->prefix = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+	if ((pack->origin = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
 
+	/* Copy lang to pack->lang */
+	if ((tmp = sqlite3_column_text(stmt, 3)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 
-  /* Copy comment to pack->comment */
-  if ((tmp = sqlite3_column_text(stmt, 5)) == NULL) {
-    if ((pack->comment = strdup("")) == NULL)
-      RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
-  } else {
-    if ((pack->comment = strdup(tmp)) == NULL)
-      RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
-  }
+	if ((pack->lang = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
 
-  /* os_release */
-  if ((tmp = sqlite3_column_text(stmt, 6)) == NULL) 
-    return MPORT_OK; /*  XXX: new field..
-    RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
-    */
+	/* Copy prefix to pack->prefix */
+	if ((tmp = sqlite3_column_text(stmt, 4)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
 
-  if ((pack->os_release = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL,"Out of memory.");
+	if ((pack->prefix = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
 
-  pack->locked = sqlite3_column_int(stmt, 8);
 
-  /* CPE */
-  if ((tmp = sqlite3_column_text(stmt, 7)) == NULL) {
-      return MPORT_OK; /* XXX: new field..
-      RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
-      */
-  } 
-  if ((pack->cpe = strdup(tmp)) == NULL)
-    RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
-  
-  return MPORT_OK;
-}
+	/* Copy comment to pack->comment */
+	if ((tmp = sqlite3_column_text(stmt, 5)) == NULL) {
+		if ((pack->comment = strdup("")) == NULL)
+			RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+	} else {
+		if ((pack->comment = strdup(tmp)) == NULL)
+			RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+	}
 
+	/* os_release */
+	if ((tmp = sqlite3_column_text(stmt, 6)) == NULL)
+		return MPORT_OK;
 
+	if ((pack->os_release = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+
+	pack->locked = sqlite3_column_int(stmt, 8);
+
+	/* CPE */
+	if ((tmp = sqlite3_column_text(stmt, 7)) == NULL) {
+		return MPORT_OK;
+	}
+	if ((pack->cpe = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+
+	/* deprecated */
+	if ((tmp = sqlite3_column_text(stmt, 9)) == NULL) {
+		return MPORT_OK;
+	}
+	if ((pack->deprecated = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+
+	pack->expiration_date = sqlite3_column_int64(stmt, 10);
+
+	pack->no_provide_shlib =  sqlite3_column_int(stmt, 11);
+
+	/* flavor */
+	if ((tmp = sqlite3_column_text(stmt, 12)) == NULL) {
+		return MPORT_OK;
+	}
+	if ((pack->flavor = strdup(tmp)) == NULL)
+		RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+
+	return MPORT_OK;
+}
\ No newline at end of file



More information about the Midnightbsd-cvs mailing list