diff options
| author | Tristan Riehs <tristan.riehs@inria.fr> | 2025-11-11 19:02:18 +0100 |
|---|---|---|
| committer | Tristan Riehs <tristan.riehs@inria.fr> | 2025-11-11 19:02:18 +0100 |
| commit | e87b4936f7b598af5486c5353edaeb7ae66db002 (patch) | |
| tree | cc884501d29e05635e367b2fd914e6280d3c8a44 /src/main.c | |
| parent | c4f78f15db36b7d4034e2f20eebeb36f48293380 (diff) | |
Setup "file" command and implement "file list"
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 61 |
1 files changed, 45 insertions, 16 deletions
@@ -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} }; |
