diff options
| author | Tristan Riehs <tristan.riehs@inria.fr> | 2026-07-12 08:23:15 +0200 |
|---|---|---|
| committer | Tristan Riehs <tristan.riehs@inria.fr> | 2026-07-12 08:23:15 +0200 |
| commit | e080f1f6b89d4f5960ac2c45029dd91045fb75ed (patch) | |
| tree | 48869d6d821bcc8aa3835148f89b0c544e8c3d0c /src | |
| parent | 0037bc1acf7439f078aeaa3cd48d8a54454f78fc (diff) | |
Fix numerous argument managements
Now argv[0] is the subcommand name, not its first argument.
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 33 |
1 files changed, 18 insertions, 15 deletions
@@ -188,6 +188,7 @@ static void ftag_file_get_path(char *out, int size, const char *file) static void ftag_export(int argc, char **argv) { + /* TODO: use getopt here */ while ((argc > 0) && (argv[0][0] == '-')) { switch (argv[0][1]) { case 'h': @@ -201,11 +202,11 @@ static void ftag_export(int argc, char **argv) argc--; } - if (argc != 1) { + if (argc != 2) { ftag_export_help(); exit(EXIT_FAILURE); } - char *archive_dir = argv[0]; + char *archive_dir = argv[1]; char archive_file[64]; strbuild(archive_file, "%s%s", archive_dir, ".tar.gz"); @@ -503,6 +504,7 @@ static void ftag_file_add(int argc, char **argv) int interactive = 0; int eliminate_duplicates = 1; int encrypt = 1; + /* TODO: use getopt here */ while ((argc > 0) && (argv[0][0] == '-')) { switch (argv[0][1]) { case 'c': @@ -525,7 +527,7 @@ static void ftag_file_add(int argc, char **argv) argc--; } - if (argc == 0) { + if (argc == 1) { ftag_file_add_usage(); exit(EXIT_FAILURE); } @@ -535,7 +537,7 @@ static void ftag_file_add(int argc, char **argv) uint32_t *sums = malloc(argc*sizeof(*sums)); struct stat st; int rc; - for (int i = 0; i < argc; i++) { + for (int i = 1; i < argc; i++) { char *file = argv[i]; rc = stat(file, &st); if (rc == -1) { @@ -656,18 +658,18 @@ get_id_by_col(sqlite3 *db, const char *table, const char *col, const char *val) static void ftag_file_tag(int argc, char **argv) { - if (argc < 2) { + if (argc < 3) { fprintf(stderr, "Usage: ftag file tag FILE TAG...\n"); exit(EXIT_FAILURE); } - const char *file = argv[0]; + const char *file = argv[1]; char sql[64]; sqlite3 *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++) { + for (int i = 2; i < argc; i++) { int tag_id = get_id_by_col(db, "tags", "name", argv[i]); printf("%s: debug: tag id is %d\n", __func__, tag_id); strbuild(sql, "INSERT INTO file_tags values(%d, %d);", @@ -785,7 +787,7 @@ static void ftag_query_join(sqlite3 *db, static void ftag_query(int argc, char **argv) { - if (argc == 0) { + if (argc == 1) { ftag_query_usage(); exit(EXIT_FAILURE); } @@ -793,6 +795,7 @@ static void ftag_query(int argc, char **argv) time_t before_date __attribute__((unused)) = 0; char **tags = NULL; int tag_count = 0; + /* TODO: use getopt here */ while (argc > 0) { if (strcmp(argv[0], "-a") == 0) { assert(argc >= 2); @@ -950,7 +953,7 @@ static void ftag_sync_push(int, char **) static void ftag_sync(int argc, char **argv) { - if (argc == 0) { + if (argc == 1) { ftag_sync_usage(); exit(EXIT_FAILURE); } @@ -973,18 +976,18 @@ ftag_tag_shall_exist_callback(void *_shall_exist, int, char **cols, char **) assert(cols[0]); if (!shall_exist) { fprintf(stderr, - "ftag: error: entry \"%s\" already exists", cols[0]); + "ftag: error: entry \"%s\" already exists\n", cols[0]); } return !shall_exist; } static void ftag_tag_add(int argc, char **argv) { - if (argc != 2) { + if (argc != 3) { fprintf(stderr, "Usage: ftag tag add NAME DESCRIPTION\n"); exit(EXIT_FAILURE); } - char *new_tag_name = strdup(argv[0]); + char *new_tag_name = strdup(argv[1]); assert(strlen(new_tag_name) <= 255); sanitize_sql_str(&new_tag_name); @@ -1001,7 +1004,7 @@ static void ftag_tag_add(int argc, char **argv) sqlite3_check(rc, db); int next_id = table_next_id(db, "tags"); - char *new_tag_desc = strdup(argv[1]); + char *new_tag_desc = strdup(argv[2]); assert(strlen(new_tag_desc) <= 600); sanitize_sql_str(&new_tag_desc); strbuild(sql, "INSERT INTO tags VALUES(%d, '%s', '%s');", @@ -1024,7 +1027,7 @@ static int tag_edit_desc_callback(void *_old, int, char **cols, char **) static void ftag_tag_edit(int argc, char **argv) { - if (argc < 1) { + if (argc == 1) { fprintf(stderr, "Usage: ftag tag edit [-h] [-n] NAME...\n"); exit(EXIT_FAILURE); } @@ -1054,8 +1057,8 @@ static void ftag_tag_edit(int argc, char **argv) } } tag_name = argv[optind]; - /* TODO: check that tag exists */ db = ftag_db_open(); + /* TODO: check that tag exists */ if (edit_name) { column_name = "name"; old = strdup(tag_name); |
