aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/main.c b/src/main.c
index e53ce61..7997f8f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -40,7 +40,8 @@ static void parse_args(int argc,
const struct ftag_command *commands,
int command_count);
-static void __sqlite3_check(int rc, sqlite3 *db, const char *file, int line, const char *func)
+static void __sqlite3_check(int rc, sqlite3 *db,
+ const char *file, int line, const char *func)
{
/* Note: "rc" stands for "return code" */
if (rc == SQLITE_OK)
@@ -54,6 +55,15 @@ static void __sqlite3_check(int rc, sqlite3 *db, const char *file, int line, con
#define sqlite3_check(RC, DB) \
__sqlite3_check(RC, DB, __FILE__, __LINE__, __func__)
+static sqlite3 *ftag_db_open(void)
+{
+ const char *db_path = ftag_config_get(FC_DATABASE_PATH);
+ sqlite3 *db;
+ int rc = sqlite3_open(db_path, &db);
+ sqlite3_check(rc, db);
+ return db;
+}
+
/* Convert heap-allocated *STR from C string to SQL string, essentially by
* adding single quotes to escape single quotes. */
static void sanitize_sql_str(char **str)
@@ -159,8 +169,7 @@ static void ftag_file_get_extension(char *out, int size, const char *file)
strbuild(sql,
"SELECT extension FROM files WHERE canonical_name = '%s';",
file);
- rc = sqlite3_open(ftag_config_get(FC_DATABASE_PATH), &db);
- sqlite3_check(rc, db);
+ db = ftag_db_open();
rc = sqlite3_exec(db, sql, ftag_file_get_extension_callback, &ext, NULL);
sqlite3_check(rc, db);
sqlite3_close(db);
@@ -311,8 +320,7 @@ static void ftag_list_table(const char *table, const char *col)
char sql[64];
sqlite3 *db = NULL;
int rc;
- rc = sqlite3_open(ftag_config_get(FC_DATABASE_PATH), &db);
- sqlite3_check(rc, db);
+ db = ftag_db_open();
strbuild(sql, "SELECT %s FROM %s;", col, table);
rc = sqlite3_exec(db, sql, ftag_print, NULL, NULL);
sqlite3_check(rc, db);
@@ -554,8 +562,7 @@ static void ftag_file_add(int argc, char **argv)
/* step 2: retrieve sums of files already in the database */
sqlite3 *db;
- rc = sqlite3_open(ftag_config_get(FC_DATABASE_PATH), &db);
- sqlite3_check(rc, db);
+ db = ftag_db_open();
int next_id = table_next_id(db, "files");
int file_count = next_id; /* number of files already in the database */
uint32_t known_sums_array[file_count];
@@ -663,8 +670,8 @@ static void ftag_file_tag(int argc, char **argv)
const char *file = argv[0];
char sql[64];
sqlite3 *db;
- int rc = sqlite3_open(ftag_config_get(FC_DATABASE_PATH), &db);
- sqlite3_check(rc, db);
+ int rc;
+ db = ftag_db_open();
int file_id = get_id_by_col(db, "files", "canonical_name", file);
printf("%s: debug: file id is %d\n", __func__, file_id);
for (int i = 1; i < argc; i++) {
@@ -818,8 +825,7 @@ static void ftag_query(int argc, char **argv)
char sql[4096];
sqlite3 *db;
int rc;
- rc = sqlite3_open(ftag_config_get(FC_DATABASE_PATH), &db);
- sqlite3_check(rc, db);
+ db = ftag_db_open();
char sql_join[2048];
memset(sql_join, 0, sizeof(sql_join));
ftag_query_join(db, sql_join, sizeof(sql_join)-1,
@@ -990,8 +996,7 @@ static void ftag_tag_add(int argc, char **argv)
sqlite3 *db;
int rc;
- rc = sqlite3_open(ftag_config_get(FC_DATABASE_PATH), &db);
- sqlite3_check(rc, db);
+ db = ftag_db_open();
strbuild(sql, "SELECT name, description FROM tags WHERE name = '%s';",
new_tag_name);