URI: 
       tcdrkit-deterministic.patch - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       tcdrkit-deterministic.patch (2090B)
       ---
            1 --- cdrkit-1.1.11.old/genisoimage/tree.c        2008-10-21 19:57:47.000000000 -0400
            2 +++ cdrkit-1.1.11/genisoimage/tree.c        2013-12-06 00:23:18.489622668 -0500
            3 @@ -1139,8 +1139,9 @@
            4  scan_directory_tree(struct directory *this_dir, char *path,
            5                                                    struct directory_entry *de)
            6  {
            7 -        DIR                *current_dir;
            8 +        int             current_file;
            9          char                whole_path[PATH_MAX];
           10 +        struct dirent  **d_list;
           11          struct dirent        *d_entry;
           12          struct directory *parent;
           13          int                dflag;
           14 @@ -1164,7 +1165,8 @@
           15          this_dir->dir_flags |= DIR_WAS_SCANNED;
           16 
           17          errno = 0;        /* Paranoia */
           18 -        current_dir = opendir(path);
           19 +        //current_dir = opendir(path);
           20 +        current_file = scandir(path, &d_list, NULL, alphasort);
           21          d_entry = NULL;
           22 
           23          /*
           24 @@ -1173,12 +1175,12 @@
           25           */
           26          old_path = path;
           27 
           28 -        if (current_dir) {
           29 +        if (current_file >= 0) {
           30                  errno = 0;
           31 -                d_entry = readdir(current_dir);
           32 +                d_entry = d_list[0];
           33          }
           34 
           35 -        if (!current_dir || !d_entry) {
           36 +        if (current_file < 0 || !d_entry) {
           37                  int        ret = 1;
           38 
           39  #ifdef        USE_LIBSCHILY
           40 @@ -1191,8 +1193,8 @@
           41                          de->isorec.flags[0] &= ~ISO_DIRECTORY;
           42                          ret = 0;
           43                  }
           44 -                if (current_dir)
           45 -                        closedir(current_dir);
           46 +                if(d_list)
           47 +                        free(d_list);
           48                  return (ret);
           49          }
           50  #ifdef        ABORT_DEEP_ISO_ONLY
           51 @@ -1208,7 +1210,7 @@
           52                          errmsgno(EX_BAD, "use Rock Ridge extensions via -R or -r,\n");
           53                          errmsgno(EX_BAD, "or allow deep ISO9660 directory nesting via -D.\n");
           54                  }
           55 -                closedir(current_dir);
           56 +                free(d_list);
           57                  return (1);
           58          }
           59  #endif
           60 @@ -1250,13 +1252,13 @@
           61                   * The first time through, skip this, since we already asked
           62                   * for the first entry when we opened the directory.
           63                   */
           64 -                if (dflag)
           65 -                        d_entry = readdir(current_dir);
           66 +                if (dflag && current_file >= 0)
           67 +                        d_entry = d_list[current_file];
           68                  dflag++;
           69 
           70 -                if (!d_entry)
           71 +                if (current_file < 0)
           72                          break;
           73 -
           74 +                current_file--;
           75                  /* OK, got a valid entry */
           76 
           77                  /* If we do not want all files, then pitch the backups. */
           78 @@ -1348,7 +1350,7 @@
           79                  insert_file_entry(this_dir, whole_path, d_entry->d_name);
           80  #endif        /* APPLE_HYB */
           81          }
           82 -        closedir(current_dir);
           83 +        free(d_list);
           84 
           85  #ifdef APPLE_HYB
           86