Description: Debugging code used for #907624

--- a/src/ffindex.c
+++ b/src/ffindex.c
@@ -165,6 +165,8 @@ int ffindex_insert_list_file(FILE *data_
   char path[PATH_MAX];
   while(fgets(path, PATH_MAX, list_file) != NULL) {
     char *name = strdup(basename(path));
+    printf("DEBUG: %s (%i): name = %s\n", __FILE__, __LINE__, name);
+    fflush(stdout);
     ffindex_insert_file(data_file, index_file, &offset, ffnchomp(path, strlen(path)), ffnchomp(name, strlen(name)));
     free(name);
   }
@@ -322,6 +324,8 @@ ffindex_index_t* ffindex_index_parse(FIL
   if(num_max_entries == 0)
     num_max_entries = FFINDEX_MAX_INDEX_ENTRIES_DEFAULT;
   size_t nbytes = sizeof(ffindex_index_t) + (sizeof(ffindex_entry_t) * num_max_entries);
+  printf("DEBUG: %s (%i): ffindex_index_parse(): nbytes = %li\n", __FILE__, __LINE__, nbytes);
+
   ffindex_index_t *index = (ffindex_index_t *)malloc(nbytes);
   if(index == NULL)
   {
@@ -350,9 +354,15 @@ ffindex_index_t* ffindex_index_parse(FIL
   for(i = 0; d < (index->index_data + index->index_data_size); i++)
   {
     int p;
+    printf("DEBUG: %s (%i): ffindex_index_parse(): i=%li, d=%s, index->index_data=%li, index->index_data_size=%li\n", __FILE__, __LINE__, i, d, index->index_data, index->index_data_size);
     for(p = 0; *d != '\t'; d++)
+{
+printf("DEBUG: %s (%i): ffindex_index_parse(): p=%i, *d=%c\n", __FILE__, __LINE__, p, *d);
       index->entries[i].name[p++] = *d;
+}
     index->entries[i].name[p] = '\0';
+    printf("DEBUG: %s (%i): ffindex_index_parse(): index->entries[%i].name = %s\n", __FILE__, __LINE__, i, index->entries[i].name);
+    fflush(stdout);
     index->entries[i].offset = strtoull(d, &end, 10);
     d = end;
     index->entries[i].length  = strtoull(d, &end, 10);
@@ -439,11 +449,15 @@ void ffindex_sort_index_file(ffindex_ind
 int ffindex_write(ffindex_index_t* index, FILE* index_file)
 {
   /* Use tree if available */
+  printf("DEBUG: %s (%i): ffindex_write()\n", __FILE__, __LINE__);
+  fflush(stdout);
   if(index->type == TREE)
     return ffindex_tree_write(index, index_file);
 
   for(size_t i = 0; i < index->n_entries; i++)
   {
+    printf("DEBUG: %s (%i): ffindex_write(), i = %li\n", __FILE__, __LINE__, i);
+    fflush(stdout);
     ffindex_entry_t ffindex_entry = index->entries[i];
     if(fprintf(index_file, "%s\t%zd\t%zd\n", ffindex_entry.name, ffindex_entry.offset, ffindex_entry.length) < 0)
       return EXIT_FAILURE;
@@ -551,6 +565,32 @@ void action(const void *node, const VISI
         case postorder:
         case leaf:
             entry = *(ffindex_entry_t **) node;
+            printf("DEBUG: %s(%i): %p\n", __FILE__, __LINE__, entry);
+            fflush(stdout);
+            if ( !entry ) {
+                fprintf(stderr, "No entry found in %s line %i\n", __FILE__, __LINE__-2);
+                break;
+            }
+            printf("DEBUG: %s(%i): before checking entry->offset\n", __FILE__, __LINE__);
+            fflush(stdout);
+            if ( !entry->offset ) {
+                fprintf(stderr, "Entry has no offset in %s line %i\n", __FILE__, __LINE__-10);
+                break;
+            } else {
+                printf("DEBUG: %s(%i): entry->offset = %li\n", __FILE__, __LINE__, entry->offset);
+            }
+            printf("DEBUG: %s(%i): before checking entry->name\n", __FILE__, __LINE__);
+            fflush(stdout);
+            if ( !entry->name ) {
+                fprintf(stderr, "Entry has no name in %s line %i\n", __FILE__, __LINE__-6);
+                break;
+            } else {
+                printf("DEBUG: %s(%i): entry->name = %s\n", __FILE__, __LINE__, entry->name);
+            }
+            printf("DEBUG: %s(%i): before printing both\n", __FILE__, __LINE__);
+            fflush(stdout);
+            printf("DEBUG: %s(%i): entry->name = %s, entry->offset = %li\n", __FILE__, __LINE__, entry->name, entry->offset);
+            fflush(stdout);
             if(fprintf(index_file, "%s\t%zd\t%zd\n", entry->name, entry->offset, entry->length) < 0)
                 break;
     }
@@ -560,7 +600,9 @@ int ffindex_tree_write(ffindex_index_t*
 {
   int ret = EXIT_SUCCESS;
 
+  printf("DEBUG: %s(%i): in ffindex_tree_write(): index = %p\n", __FILE__, __LINE__, index);
   twalkmisc(index->tree_root, action, (void *) index_file);
+  printf("DEBUG: %s(%i): after twalkmisc in ffindex_tree_write()\n", __FILE__, __LINE__);
   return ret;
 }
 
@@ -568,6 +610,8 @@ void ffsort_index(const char* index_file
   FILE* index_fh = fopen(index_filename, "r");
   size_t lines = ffcount_lines(index_filename);
 
+  printf("DEBUG: %s (%i): name = %s, lines = %li\n", __FILE__, __LINE__, index_filename, lines);
+  fflush(stdout);
   ffindex_index_t* index = ffindex_index_parse(index_fh, lines);
   fclose(index_fh);
 
--- a/src/ffindex_modify.c
+++ b/src/ffindex_modify.c
@@ -106,10 +106,14 @@ int main(int argn, char **argv)
 
   index_file = fopen(index_filename, "r+");
   if(index_file == NULL) { perror(index_filename); return EXIT_FAILURE; }
+  printf("DEBUG: %s (%i): index_file = %s\n", __FILE__, __LINE__, index_filename);
+  fflush(stdout);
 
   size_t entries = ffcount_lines(index_filename);
   ffindex_index_t* index = ffindex_index_parse(index_file, entries);
   if(index == NULL) { perror("ffindex_index_parse failed"); return (EXIT_FAILURE); }
+  printf("DEBUG: %s (%i): index_file = %s, entries = %li\n", __FILE__, __LINE__, index_filename, entries);
+  fflush(stdout);
 
   fclose(index_file);
 
@@ -118,11 +122,14 @@ int main(int argn, char **argv)
   {
     if(use_tree)
     {
+  printf("DEBUG: %s (%i): unlink + use_tree\n", __FILE__, __LINE__);
+
       /* Build tree */
       index = ffindex_index_as_tree(index);
 
       /* For each list_file unlink all entries */
       if(list_filenames_index > 0)
+  printf("DEBUG: %s (%i): list_filenames_index = %i\n", __FILE__, __LINE__, list_filenames_index);
         for(int i = 0; i < list_filenames_index; i++)
         {
           printf("Unlinking entries from '%s'\n", list_filenames[i]);
@@ -137,7 +144,10 @@ int main(int argn, char **argv)
 
       /* unlink entries specified by args */
       for(int i = optind; i < argn; i++)
+{
+  printf("DEBUG: %s (%i): i = %i\n", __FILE__, __LINE__, i);
         index = ffindex_unlink(index, argv[i]);
+}
     }
     else
     {
@@ -178,8 +188,14 @@ int main(int argn, char **argv)
 
   /* Write index back */
   index_file = fopen(index_filename, "w");
+  printf("DEBUG: %s (%i): index_file = %s, entries = %li\n", __FILE__, __LINE__, index_filename, entries);
+  fflush(stdout);
+
   if(index_file == NULL) { perror(index_filename); return EXIT_FAILURE; }
   err += ffindex_write(index, index_file);
+  printf("DEBUG: %s (%i): err = %i\n", __FILE__, __LINE__, err);
+  fflush(stdout);
+
   return err;
 }
 
