aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorTristan Riehs <tristan.riehs@inria.fr>2025-11-11 19:02:18 +0100
committerTristan Riehs <tristan.riehs@inria.fr>2025-11-11 19:02:18 +0100
commite87b4936f7b598af5486c5353edaeb7ae66db002 (patch)
treecc884501d29e05635e367b2fd914e6280d3c8a44 /src/main.c
parentc4f78f15db36b7d4034e2f20eebeb36f48293380 (diff)
Setup "file" command and implement "file list"
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c61
1 files changed, 45 insertions, 16 deletions
diff --git a/src/main.c b/src/main.c
index 1fc94be..2496f1d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -64,6 +64,49 @@ static void ftag_init(int, char **)
exit(EXIT_FAILURE);
}
+static int ftag_print(void *, int, char **cols, char **)
+{
+ assert(cols[0]);
+ printf("%s\n", cols[0]);
+ return 0;
+}
+
+static void ftag_list_table(const char *table)
+{
+ char sql[64];
+ sqlite3 *db = NULL;
+ int rc;
+
+ rc = sqlite3_open(DATABASE_PATH, &db);
+ sqlite3_check(rc, db);
+
+ memset(sql, 0, sizeof(sql));
+ snprintf(sql, sizeof(sql)-1, "SELECT name FROM %s;", table);
+ rc = sqlite3_exec(db, sql, ftag_print, NULL, NULL);
+ sqlite3_check(rc, db);
+}
+
+static void ftag_file_add(int argc, char **argv)
+{
+ ;
+}
+
+static void ftag_file_list(int argc, char **argv)
+{
+ ftag_list_table("files");
+}
+
+static void ftag_file(int argc, char **argv)
+{
+ assert_db_exists();
+ const struct ftag_command file_commands[] = {
+ {.name = "add", .func = ftag_file_add},
+ {.name = "list", .func = ftag_file_list}
+ };
+ const int file_command_count = sizeof(file_commands) / sizeof(struct ftag_command);
+ parse_args(argc, argv, file_commands, file_command_count);
+}
+
static void ftag_help(int, char **)
{
printf("Usage: ftag COMMAND [COMMAND-ARG]...\n");
@@ -142,24 +185,9 @@ static void ftag_tag_add(int argc, char **argv)
sqlite3_check(rc, db);
}
-static int ftag_tag_print(void *, int, char **cols, char **)
-{
- assert(cols[0]);
- printf("%s\n", cols[0]);
- return 0;
-}
-
static void ftag_tag_list(int argc, char **argv)
{
- const char *sql = "SELECT name FROM tags;";
- sqlite3 *db = NULL;
- int rc;
-
- rc = sqlite3_open(DATABASE_PATH, &db);
- sqlite3_check(rc, db);
-
- rc = sqlite3_exec(db, sql, ftag_tag_print, NULL, NULL);
- sqlite3_check(rc, db);
+ ftag_list_table("tags");
}
static void ftag_tag(int argc, char **argv)
@@ -200,6 +228,7 @@ int main(int argc, char *argv[])
const struct ftag_command toplevel_commands[] = {
{.name = "init", .func = ftag_init},
+ {.name = "file", .func = ftag_file},
{.name = "help", .func = ftag_help},
{.name = "tag", .func = ftag_tag}
};