]> git.seodisparate.com - SimpleArchiver/commitdiff
Add "status progress" when archiving
authorStephen Seo <seo.disparate@gmail.com>
Tue, 16 Jul 2024 07:44:54 +0000 (16:44 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Tue, 16 Jul 2024 07:44:54 +0000 (16:44 +0900)
src/archiver.c
src/archiver.h

index c1853cb77be240109c4a7ebcf73d6a0708dd5697..b232b2c0a7bd2d7d9950510d0ea9a6eb86db90ca 100644 (file)
@@ -52,7 +52,7 @@ int write_list_datas_fn(void *data, void *ud) {
 
 int write_files_fn(void *data, void *ud) {
   const SDArchiverFileInfo *file_info = data;
-  const SDArchiverState *state = ud;
+  SDArchiverState *state = ud;
 
   __attribute__((cleanup(simple_archiver_list_free)))
   SDArchiverLinkedList *to_write = simple_archiver_list_init();
@@ -156,6 +156,7 @@ int write_files_fn(void *data, void *ud) {
     // TODO
   }
 
+  fprintf(stderr, "[%10u/%10u]\n", ++(state->count), state->max);
   return 0;
 }
 
@@ -261,11 +262,16 @@ int simple_archiver_write_all(FILE *out_f, SDArchiverState *state,
   }
 
   // Iterate over files in list to write.
+  state->count = 0;
+  state->max = filenames->count;
   state->out_f = out_f;
+  fprintf(stderr, "Begin archiving...\n");
+  fprintf(stderr, "[%10u/%10u]\n", state->count, state->max);
   if (simple_archiver_list_get(filenames, write_files_fn, state)) {
     // Error occurred.
   }
   state->out_f = NULL;
 
+  fprintf(stderr, "End archiving.\n");
   return SDAS_SUCCESS;
 }
index 4cff97d6c4261971b7f4e6b897691a2091c23eb9..dcbb8521644f342fa9e2d74f7b46a24ab433d3ca 100644 (file)
@@ -30,6 +30,8 @@ typedef struct SDArchiverState {
   unsigned int flags;
   const SDArchiverParsed *parsed;
   FILE *out_f;
+  unsigned int count;
+  unsigned int max;
 } SDArchiverState;
 
 enum SDArchiverStateReturns {