ctdldump/ctdlload: -h now works identical to citserver
authorArt Cancro <ajc@citadel.org>
Thu, 24 Aug 2023 23:23:09 +0000 (14:23 -0900)
committerArt Cancro <ajc@citadel.org>
Thu, 24 Aug 2023 23:23:09 +0000 (14:23 -0900)
citadel/utils/ctdldump.c
citadel/utils/ctdlload.c

index a7a83b44852342546f5cb037f0910f7f41ff89b2..97ff7129117df96dc3c65d16bf104b7ce34b6387 100644 (file)
@@ -355,8 +355,8 @@ void export_table(int which_cdb) {
 
 int main(int argc, char **argv) {
        int i = 0;
-       char src_dir[PATH_MAX];
        int confirmed = 0;
+       char *ctdldir = CTDLDIR;
 
        // display the greeting
        fprintf(stderr, "\033[44m\033[33m\033[1m \033[K\033[0m\n"
@@ -366,15 +366,12 @@ int main(int argc, char **argv) {
                        "\033[44m\033[33m\033[1m is subject to the terms of the GNU General Public license v3. \033[K\033[0m\n"
                        "\033[44m\033[33m\033[1m \033[K\033[0m\n");
 
-       // Default source directory unless overridden
-       snprintf(src_dir, sizeof(src_dir), "%s/data", CTDLDIR);
-
        // Parse command line
        int a;
        while ((a = getopt(argc, argv, "h:y")) != EOF) {
                switch (a) {
                case 'h':
-                       snprintf(src_dir, sizeof(src_dir), "%s/data", optarg);
+                       ctdldir = optarg;
                        break;
                case 'y':
                        confirmed = 1;
@@ -385,11 +382,6 @@ int main(int argc, char **argv) {
                }
        }
 
-       if (src_dir == NULL) {
-               fprintf(stderr, "ctdldump: no source directory was specified.\n");
-               exit(1);
-       }
-
        if (confirmed == 1) {
                fprintf(stderr, "ctdldump: You have specified the [-y] flag, so processing will continue.\n");
        }
@@ -400,6 +392,11 @@ int main(int argc, char **argv) {
                exit(1);
        }
 
+       if (chdir(ctdldir) != 0) {
+               fprintf(stderr, "ctdlload: unable to change directory to [%s]: %m", ctdldir);
+               exit(2);
+       }
+
        // backend modules use syslog -- redirect to stderr
        openlog("ctdldump", LOG_PERROR , LOG_DAEMON);
 
index 45e68536eb4b85eabb3044cf68e4db0f4f952de7..258c47f9c6a94a19508dce8b4ea125b109b39dd2 100644 (file)
@@ -722,8 +722,8 @@ void ingest(void) {
 
 // Main entry point
 int main(int argc, char **argv) {
-       char dst_dir[PATH_MAX];
        int confirmed = 0;
+       char *ctdldir = CTDLDIR;
 
        // display the greeting
        fprintf(stderr, "\033[44m\033[33m\033[1m \033[K\033[0m\n"
@@ -733,30 +733,22 @@ int main(int argc, char **argv) {
                        "\033[44m\033[33m\033[1m is subject to the terms of the GNU General Public license v3. \033[K\033[0m\n"
                        "\033[44m\033[33m\033[1m \033[K\033[0m\n");
 
-       // Default destination directory unless overridden
-       snprintf(dst_dir, sizeof(dst_dir), "%s/data", CTDLDIR);
-
        // Parse command line
        int a;
        while ((a = getopt(argc, argv, "h:y")) != EOF) {
                switch (a) {
                case 'h':
-                       snprintf(dst_dir, sizeof(dst_dir), "%s/data", optarg);
+                       ctdldir = optarg;
                        break;
                case 'y':
                        confirmed = 1;
                        break;
                default:
-                       fprintf(stderr, "%s: usage: %s -h dest_dir [<dumpfile]\n", argv[0], argv[0]);
+                       fprintf(stderr, "%s: usage: %s -h citadel_dir [<dumpfile]\n", argv[0], argv[0]);
                        exit(2);
                }
        }
 
-       if (dst_dir == NULL) {
-               fprintf(stderr, "ctdlload: no destination directory was specified.\n");
-               exit(1);
-       }
-
        if (confirmed == 1) {
                fprintf(stderr, "ctdlload: You have specified the [-y] flag, so processing will continue.\n");
        }
@@ -767,13 +759,16 @@ int main(int argc, char **argv) {
                exit(1);
        }
 
+       if (chdir(ctdldir) != 0) {
+               fprintf(stderr, "ctdlload: unable to change directory to [%s]: %m", ctdldir);
+               exit(2);
+       }
+
        // backend modules use syslog -- redirect to stderr
        openlog("ctdlload", LOG_PERROR , LOG_DAEMON);
 
        // Remove any database that is already in the target directory (yes, delete it, be careful)
-       char cmd[PATH_MAX];
-       snprintf(cmd, sizeof cmd, "rm -fv %s/cdb.* %s/log.*", dst_dir, dst_dir);
-       system(cmd);
+       system("rm -fv ./data/cdb.* ./data/log.*");
 
        // initialize the database backend
        cdb_init_backends();