[Midnightbsd-cvs] src [7370] trunk/lib/libmport: fix several dispatch queues
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Nov 28 19:47:28 EST 2015
Revision: 7370
http://svnweb.midnightbsd.org/src/?rev=7370
Author: laffer1
Date: 2015-11-28 19:47:27 -0500 (Sat, 28 Nov 2015)
Log Message:
-----------
fix several dispatch queues
Modified Paths:
--------------
trunk/lib/libmport/clean.c
trunk/lib/libmport/db.c
trunk/lib/libmport/instance.c
Modified: trunk/lib/libmport/clean.c
===================================================================
--- trunk/lib/libmport/clean.c 2015-11-28 23:55:49 UTC (rev 7369)
+++ trunk/lib/libmport/clean.c 2015-11-29 00:47:27 UTC (rev 7370)
@@ -41,7 +41,7 @@
mport_clean_database(mportInstance *mport) {
__block int error_code = MPORT_OK;
- dispatch_sync(mportTaskSerial, ^(int){
+ dispatch_sync(mportTaskSerial, ^{
if (mport_db_do(mport->db, "vacuum") != MPORT_OK)
error_code = mport_err_code();
error_code = MPORT_OK;
@@ -58,10 +58,12 @@
struct dirent *de;
DIR *d = opendir(MPORT_FETCH_STAGING_DIR);
- if (d == NULL)
- RETURN_ERRORX(MPORT_ERR_FATAL, "Couldn't open directory %s: %s", MPORT_FETCH_STAGING_DIR, strerror(errno));
+ if (d == NULL) {
+ error_code = SET_ERRORX(MPORT_ERR_FATAL, "Couldn't open directory %s: %s", MPORT_FETCH_STAGING_DIR, strerror(errno));
+ return;
+ }
- while ((de = readdir(d)) != NULL) {
+ while ((de = readdir(d)) != NULL) {
mportIndexEntry **indexEntry;
char *path;
if (strcmp(".", de->d_name) == 0 || strcmp("..", de->d_name) == 0)
@@ -68,19 +70,21 @@
continue;
if (mport_index_search(mport, &indexEntry, "bundlefile=%Q", de->d_name) != MPORT_OK) {
- error_code = mport_err_code();
+ continue;
}
if (indexEntry == NULL || *indexEntry == NULL) {
asprintf(&path, "%s/%s", MPORT_FETCH_STAGING_DIR, de->d_name);
- if (path != NULL) if (unlink(path) < 0) {
- error_code = SET_ERRORX(MPORT_ERR_FATAL, "Could not delete file %s: %s", path, strerror(errno));
- }
- free(path);
+ if (path != NULL) {
+ if (unlink(path) < 0) {
+ error_code = SET_ERRORX(MPORT_ERR_FATAL, "Could not delete file %s: %s", path, strerror(errno));
+ mport_call_msg_cb(mport, "%s\n", mport_err_string());
+ }
+ free(path);
+ }
} else {
mport_index_entry_free_vec(indexEntry);
}
-
}
closedir(d);
@@ -87,6 +91,6 @@
});
- return error_code;
+ return error_code;
}
Modified: trunk/lib/libmport/db.c
===================================================================
--- trunk/lib/libmport/db.c 2015-11-28 23:55:49 UTC (rev 7369)
+++ trunk/lib/libmport/db.c 2015-11-29 00:47:27 UTC (rev 7370)
@@ -49,9 +49,8 @@
mport_db_do(sqlite3 *db, const char *fmt, ...) {
va_list args;
char *sql;
- int sqlcode;
- int result = MPORT_OK;
- char *err;
+ __block int result = MPORT_OK;
+ __block char *err;
va_start(args, fmt);
@@ -63,7 +62,7 @@
RETURN_ERROR(MPORT_ERR_FATAL, "Couldn't allocate memory for sql statement");
dispatch_sync(mportSQLSerial, ^{
- sqlcode = sqlite3_exec(db, sql, 0, 0, 0);
+ int sqlcode = sqlite3_exec(db, sql, 0, 0, 0);
/* if we get an error code, we want to run it again in some cases */
if (sqlcode == SQLITE_BUSY || sqlcode == SQLITE_LOCKED) {
sleep(1);
Modified: trunk/lib/libmport/instance.c
===================================================================
--- trunk/lib/libmport/instance.c 2015-11-28 23:55:49 UTC (rev 7369)
+++ trunk/lib/libmport/instance.c 2015-11-29 00:47:27 UTC (rev 7370)
@@ -53,9 +53,8 @@
*/
MPORT_PUBLIC_API int
mport_instance_init(mportInstance *mport, const char *root) {
- char dir[FILENAME_MAX];
- dispatch_once(&mportInitializeOnce, ^{
+ char dir[FILENAME_MAX];
mport->flags = 0;
if (root != NULL) {
@@ -68,14 +67,17 @@
(void) snprintf(dir, FILENAME_MAX, "%s/%s", mport->root, MPORT_INST_DIR);
- if (mport_mkdir(dir) != MPORT_OK)
- RETURN_CURRENT_ERROR;
+ if (mport_mkdir(dir) != MPORT_OK) {
+ RETURN_CURRENT_ERROR;
+ }
(void) snprintf(dir, FILENAME_MAX, "%s/%s", mport->root, MPORT_INST_INFRA_DIR);
- if (mport_mkdir(dir) != MPORT_OK)
- RETURN_CURRENT_ERROR;
+ if (mport_mkdir(dir) != MPORT_OK) {
+ RETURN_CURRENT_ERROR;
+ }
+
/* dir is a file here, just trying to save memory */
(void) snprintf(dir, FILENAME_MAX, "%s/%s", mport->root, MPORT_MASTER_DB_FILE);
if (sqlite3_open(dir, &(mport->db)) != 0) {
@@ -90,6 +92,7 @@
RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(mport->db));
}
+
/* set the default UI callbacks */
mport->msg_cb = &mport_default_msg_cb;
mport->progress_init_cb = &mport_default_progress_init_cb;
@@ -98,7 +101,6 @@
mport->confirm_cb = &mport_default_confirm_cb;
mport_upgrade_master_schema(mport->db, mport_get_database_version(mport->db));
- });
/* create tables */
return mport_generate_master_schema(mport->db);
@@ -109,10 +111,10 @@
*/
int
mport_get_database_version(sqlite3 *db) {
- sqlite3_stmt *stmt_version;
- int databaseVersion = -1; /* ERROR condition */
+ __block int databaseVersion = -1; /* ERROR condition */
dispatch_sync(mportSQLSerial, ^{
+ sqlite3_stmt *stmt_version;
if (sqlite3_prepare_v2(db, "PRAGMA user_version;", -1, &stmt_version, NULL) == SQLITE_OK) {
while (sqlite3_step(stmt_version) == SQLITE_ROW) {
databaseVersion = sqlite3_column_int(stmt_version, 0);
@@ -176,7 +178,7 @@
mport_call_msg_cb(mportInstance *mport, const char *fmt, ...) {
va_list args;
- char *msg;
+ __block char *msg;
va_start(args, fmt);
(void) vasprintf(&msg, fmt, args);
va_end(args);
More information about the Midnightbsd-cvs
mailing list