tools/genext2fs: update to 1.5.0
authorNick Hainke <vincent@systemli.org>
Sun, 21 Aug 2022 07:33:46 +0000 (09:33 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 22 Oct 2022 20:53:24 +0000 (22:53 +0200)
Update to latest version.

Remove patches:
- 100-c99_scanf.patch
- 200-autoconf.patch
- 300-blocksize-creator.patch
- 400-byteswap_fix.patch

Signed-off-by: Nick Hainke <vincent@systemli.org>
tools/genext2fs/Makefile
tools/genext2fs/patches/100-c99_scanf.patch [deleted file]
tools/genext2fs/patches/200-autoconf.patch [deleted file]
tools/genext2fs/patches/300-blocksize-creator.patch [deleted file]
tools/genext2fs/patches/400-byteswap_fix.patch [deleted file]

index 7bd7742d28683568eb5e07d86c6ee3fb3ef3da38..4e7abf8bb6892585a1cd4adc38020fbb751481c9 100644 (file)
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=genext2fs
-PKG_VERSION:=1.4.1
+PKG_VERSION:=1.5.0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/bestouff/$(PKG_NAME)/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=0d706f08b11051aae00fe67d88b7aac1fdd0d5d96163704508e21fb6460f899d
+PKG_HASH:=d3861e4fe89131bd21fbd25cf0b683b727b5c030c4c336fadcd738ada830aab0
 
 include $(INCLUDE_DIR)/host-build.mk
 
@@ -33,6 +33,13 @@ HOST_CONFIGURE_ARGS = \
        --mandir=/usr/man \
        --infodir=/usr/info \
 
+define Host/Configure
+       (cd $(HOST_BUILD_DIR); \
+               ./autogen.sh \
+       );
+       $(call Host/Configure/Default)
+endef
+
 define Host/Compile
        $(MAKE) -C $(HOST_BUILD_DIR) \
                CFLAGS="$(HOST_CFLAGS)" \
diff --git a/tools/genext2fs/patches/100-c99_scanf.patch b/tools/genext2fs/patches/100-c99_scanf.patch
deleted file mode 100644 (file)
index e7aa17c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-commit 3b8ca0ce9a0b58287a780747c90c449bdebfe464
-Author: Xavier Bestel <bestouff@users.sourceforge.net>
-Date:   Mon Jan 14 08:52:44 2008 +0000
-
-    removed use of %as is scanf (GNU conflicts with C99) by Giacomo Catenazzi <cate@debian.org>
-
-diff --git a/genext2fs.c b/genext2fs.c
-index 070b270..f0d797d 100644
---- a/genext2fs.c
-+++ b/genext2fs.c
-@@ -286,7 +286,9 @@ typedef unsigned int uint32;
- // older solaris. Note that this is still not very portable, in that
- // the return value cannot be trusted.
--#if SCANF_CAN_MALLOC
-+#if 0 // SCANF_CAN_MALLOC
-+// C99 define "a" for floating point, so you can have runtime surprise
-+// according the library versions
- # define SCANF_PREFIX "a"
- # define SCANF_STRING(s) (&s)
- #else
diff --git a/tools/genext2fs/patches/200-autoconf.patch b/tools/genext2fs/patches/200-autoconf.patch
deleted file mode 100644 (file)
index b3317bd..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: genext2fs/m4/ac_func_scanf_can_malloc.m4
-===================================================================
---- genext2fs.orig/m4/ac_func_scanf_can_malloc.m4      2011-09-03 21:28:49.000000000 +0200
-+++ genext2fs/m4/ac_func_scanf_can_malloc.m4   2011-09-03 21:29:41.000000000 +0200
-@@ -9,7 +9,7 @@
- # --------------------------------------
- AC_DEFUN([AC_FUNC_SCANF_CAN_MALLOC],
-   [ AC_CHECK_HEADERS([stdlib.h])
--    AC_CACHE_CHECK([whether scanf can malloc], [ac_scanf_can_malloc],
-+    AC_CACHE_CHECK([whether scanf can malloc], [ac_cv_func_scanf_can_malloc],
-     [ AC_RUN_IFELSE(
-       [ AC_LANG_PROGRAM(
-         [
diff --git a/tools/genext2fs/patches/300-blocksize-creator.patch b/tools/genext2fs/patches/300-blocksize-creator.patch
deleted file mode 100644 (file)
index 97a4836..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-Index: genext2fs/genext2fs.c
-===================================================================
---- genext2fs.orig/genext2fs.c 2011-09-03 14:21:17.000000000 +0200
-+++ genext2fs/genext2fs.c      2011-09-03 14:21:17.000000000 +0200
-@@ -151,13 +151,24 @@
- // block size
--#define BLOCKSIZE         1024
-+static int blocksize = 1024;
-+
-+#define BLOCKSIZE         blocksize
- #define BLOCKS_PER_GROUP  8192
- #define INODES_PER_GROUP  8192
- /* Percentage of blocks that are reserved.*/
- #define RESERVED_BLOCKS       5/100
- #define MAX_RESERVED_BLOCKS  25/100
-+/* The default value for s_creator_os. */
-+#if defined(__GNU__)
-+# define CREATOR_OS  1 /* Hurd */
-+#elif defined(__FreeBSD__)
-+# define CREATOR_OS  3 /* FreeBSD */
-+#else
-+# define CREATOR_OS  0 /* Linux */
-+#endif
-+
- // inode block size (why is it != BLOCKSIZE ?!?)
- /* The field i_blocks in the ext2 inode stores the number of data blocks
-@@ -239,10 +250,10 @@
-         (fs)->sb.s_blocks_per_group - 1) / (fs)->sb.s_blocks_per_group)
- // Get group block bitmap (bbm) given the group number
--#define GRP_GET_GROUP_BBM(fs,grp) ( get_blk((fs),(fs)->gd[(grp)].bg_block_bitmap) )
-+#define GRP_GET_GROUP_BBM(fs,grp) ( get_blk((fs), get_gd((fs),(grp))->bg_block_bitmap) )
- // Get group inode bitmap (ibm) given the group number
--#define GRP_GET_GROUP_IBM(fs,grp) ( get_blk((fs),(fs)->gd[(grp)].bg_inode_bitmap) )
-+#define GRP_GET_GROUP_IBM(fs,grp) ( get_blk((fs), get_gd((fs),(grp))->bg_inode_bitmap) )
-               
- // Given an inode number find the group it belongs to
- #define GRP_GROUP_OF_INODE(fs,nod) ( ((nod)-1) / (fs)->sb.s_inodes_per_group)
-@@ -532,7 +543,7 @@
-       char d_name[0];
- } directory;
--typedef uint8 block[BLOCKSIZE];
-+typedef uint8 *block;
- /* blockwalker fields:
-    The blockwalker is used to access all the blocks of a file (including
-@@ -571,16 +582,12 @@
- /* Filesystem structure that support groups */
--#if BLOCKSIZE == 1024
- typedef struct
- {
--      block zero;            // The famous block 0
--      superblock sb;         // The superblock
--      groupdescriptor gd[0]; // The group descriptors
-+      uint8 zero[1024];      // Room for bootloader stuff
-+      superblock sb;         // The superblock, always at 1024
-+      // group descriptors come next, see get_gd() below
- } filesystem;
--#else
--#error UNHANDLED BLOCKSIZE
--#endif
- // now the endianness swap
-@@ -820,6 +827,14 @@
-       return (uint8*)fs + blk*BLOCKSIZE;
- }
-+// the group descriptors are aligned on the block size
-+static inline groupdescriptor *
-+get_gd(filesystem *fs, int no)
-+{
-+      int gdblk = (sizeof (filesystem) + BLOCKSIZE - 1) / BLOCKSIZE;
-+      return ((groupdescriptor *) get_blk(fs, gdblk)) + no;
-+}
-+
- // return a given inode from a filesystem
- static inline inode *
- get_nod(filesystem *fs, uint32 nod)
-@@ -829,7 +844,7 @@
-       offset = GRP_IBM_OFFSET(fs,nod);
-       grp = GRP_GROUP_OF_INODE(fs,nod);
--      itab = (inode *)get_blk(fs, fs->gd[grp].bg_inode_table);
-+      itab = (inode *)get_blk(fs, get_gd(fs,grp)->bg_inode_table);
-       return itab+offset-1;
- }
-@@ -875,18 +890,18 @@
-       grp = GRP_GROUP_OF_INODE(fs,nod);
-       nbgroups = GRP_NBGROUPS(fs);
--      if(!(bk = allocate(get_blk(fs,fs->gd[grp].bg_block_bitmap), 0))) {
-+      if(!(bk = allocate(GRP_GET_GROUP_BBM(fs, grp), 0))) {
-               for(grp=0;grp<nbgroups && !bk;grp++)
--                      bk=allocate(get_blk(fs,fs->gd[grp].bg_block_bitmap),0);
-+                      bk = allocate(GRP_GET_GROUP_BBM(fs, grp), 0);
-               grp--;
-       }
-       if (!bk)
-               error_msg_and_die("couldn't allocate a block (no free space)");
--      if(!(fs->gd[grp].bg_free_blocks_count--))
-+      if(!(get_gd(fs, grp)->bg_free_blocks_count--))
-               error_msg_and_die("group descr %d. free blocks count == 0 (corrupted fs?)",grp);
-       if(!(fs->sb.s_free_blocks_count--))
-               error_msg_and_die("superblock free blocks count == 0 (corrupted fs?)");
--      return fs->sb.s_blocks_per_group*grp + bk;
-+      return fs->sb.s_first_data_block + fs->sb.s_blocks_per_group*grp + (bk-1);
- }
- // free a block
-@@ -897,8 +912,8 @@
-       grp = bk / fs->sb.s_blocks_per_group;
-       bk %= fs->sb.s_blocks_per_group;
--      deallocate(get_blk(fs,fs->gd[grp].bg_block_bitmap), bk);
--      fs->gd[grp].bg_free_blocks_count++;
-+      deallocate(GRP_GET_GROUP_BBM(fs, grp), bk);
-+      get_gd(fs, grp)->bg_free_blocks_count++;
-       fs->sb.s_free_blocks_count++;
- }
-@@ -918,16 +933,16 @@
-       /* We do it for all inodes.                                           */
-       avefreei  =  fs->sb.s_free_inodes_count / nbgroups;
-       for(grp=0; grp<nbgroups; grp++) {
--              if (fs->gd[grp].bg_free_inodes_count < avefreei ||
--                  fs->gd[grp].bg_free_inodes_count == 0)
-+              if (get_gd(fs, grp)->bg_free_inodes_count < avefreei ||
-+                  get_gd(fs, grp)->bg_free_inodes_count == 0)
-                       continue;
-               if (!best_group || 
--                      fs->gd[grp].bg_free_blocks_count > fs->gd[best_group].bg_free_blocks_count)
-+                      get_gd(fs, grp)->bg_free_blocks_count > get_gd(fs, best_group)->bg_free_blocks_count)
-                       best_group = grp;
-       }
--      if (!(nod = allocate(get_blk(fs,fs->gd[best_group].bg_inode_bitmap),0)))
-+      if (!(nod = allocate(GRP_GET_GROUP_IBM(fs, best_group), 0)))
-               error_msg_and_die("couldn't allocate an inode (no free inode)");
--      if(!(fs->gd[best_group].bg_free_inodes_count--))
-+      if(!(get_gd(fs, best_group)->bg_free_inodes_count--))
-               error_msg_and_die("group descr. free blocks count == 0 (corrupted fs?)");
-       if(!(fs->sb.s_free_inodes_count--))
-               error_msg_and_die("superblock free blocks count == 0 (corrupted fs?)");
-@@ -1390,7 +1405,7 @@
-                       case FM_IFDIR:
-                               add2dir(fs, nod, nod, ".");
-                               add2dir(fs, nod, parent_nod, "..");
--                              fs->gd[GRP_GROUP_OF_INODE(fs,nod)].bg_used_dirs_count++;
-+                              get_gd(fs, GRP_GROUP_OF_INODE(fs,nod))->bg_used_dirs_count++;
-                               break;
-               }
-       }
-@@ -1860,7 +1875,7 @@
-               swap_nod(nod);
-       }
-       for(i=0;i<GRP_NBGROUPS(fs);i++)
--              swap_gd(&(fs->gd[i]));
-+              swap_gd(get_gd(fs, i));
-       swap_sb(&fs->sb);
- }
-@@ -1870,7 +1885,7 @@
-       uint32 i;
-       swap_sb(&fs->sb);
-       for(i=0;i<GRP_NBGROUPS(fs);i++)
--              swap_gd(&(fs->gd[i]));
-+              swap_gd(get_gd(fs, i));
-       for(i = 1; i < fs->sb.s_inodes_count; i++)
-       {
-               inode *nod = get_nod(fs, i);
-@@ -1895,7 +1910,8 @@
- // initialize an empty filesystem
- static filesystem *
--init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes, uint32 fs_timestamp)
-+init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes,
-+              uint32 fs_timestamp, uint32 creator_os)
- {
-       uint32 i;
-       filesystem *fs;
-@@ -1921,10 +1937,14 @@
-        */
-       min_nbgroups = (nbinodes + INODES_PER_GROUP - 1) / INODES_PER_GROUP;
-+      /* On filesystems with 1k block size, the bootloader area uses a full
-+       * block. For 2048 and up, the superblock can be fitted into block 0.
-+       */
-+      first_block = (BLOCKSIZE == 1024);
-+
-       /* nbblocks is the total number of blocks in the filesystem.
-        * a block group can have no more than 8192 blocks.
-        */
--      first_block = (BLOCKSIZE == 1024);
-       nbgroups = (nbblocks - first_block + BLOCKS_PER_GROUP - 1) / BLOCKS_PER_GROUP;
-       if(nbgroups < min_nbgroups) nbgroups = min_nbgroups;
-       nbblocks_per_group = rndup((nbblocks - first_block + nbgroups - 1)/nbgroups, 8);
-@@ -1936,10 +1956,10 @@
-       gdsz = rndup(nbgroups*sizeof(groupdescriptor),BLOCKSIZE)/BLOCKSIZE;
-       itblsz = nbinodes_per_group * sizeof(inode)/BLOCKSIZE;
-       overhead_per_group = 3 /*sb,bbm,ibm*/ + gdsz + itblsz;
--      if((uint32)nbblocks - 1 < overhead_per_group * nbgroups)
--              error_msg_and_die("too much overhead, try fewer inodes or more blocks. Note: options have changed, see --help or the man page.");
--      free_blocks = nbblocks - overhead_per_group*nbgroups - 1 /*boot block*/;
-+      free_blocks = nbblocks - overhead_per_group*nbgroups - first_block;
-       free_blocks_per_group = nbblocks_per_group - overhead_per_group;
-+      if(free_blocks < 0)
-+              error_msg_and_die("too much overhead, try fewer inodes or more blocks. Note: options have changed, see --help or the man page.");
-       if(!(fs = (filesystem*)calloc(nbblocks, BLOCKSIZE)))
-               error_msg_and_die("not enough memory for filesystem");
-@@ -1959,28 +1979,31 @@
-       fs->sb.s_wtime = fs_timestamp;
-       fs->sb.s_magic = EXT2_MAGIC_NUMBER;
-       fs->sb.s_lastcheck = fs_timestamp;
-+      fs->sb.s_creator_os = creator_os;
-       // set up groupdescriptors
--      for(i=0, bbmpos=gdsz+2, ibmpos=bbmpos+1, itblpos=ibmpos+1;
-+      for(i=0, bbmpos=first_block+1+gdsz, ibmpos=bbmpos+1, itblpos=ibmpos+1;
-               i<nbgroups;
-               i++, bbmpos+=nbblocks_per_group, ibmpos+=nbblocks_per_group, itblpos+=nbblocks_per_group)
-       {
-+              groupdescriptor *gd = get_gd(fs, i);
-+
-               if(free_blocks > free_blocks_per_group) {
--                      fs->gd[i].bg_free_blocks_count = free_blocks_per_group;
-+                      gd->bg_free_blocks_count = free_blocks_per_group;
-                       free_blocks -= free_blocks_per_group;
-               } else {
--                      fs->gd[i].bg_free_blocks_count = free_blocks;
-+                      gd->bg_free_blocks_count = free_blocks;
-                       free_blocks = 0; // this is the last block group
-               }
-               if(i)
--                      fs->gd[i].bg_free_inodes_count = nbinodes_per_group;
-+                      gd->bg_free_inodes_count = nbinodes_per_group;
-               else
--                      fs->gd[i].bg_free_inodes_count = nbinodes_per_group -
-+                      gd->bg_free_inodes_count = nbinodes_per_group -
-                                                       EXT2_FIRST_INO + 2;
--              fs->gd[i].bg_used_dirs_count = 0;
--              fs->gd[i].bg_block_bitmap = bbmpos;
--              fs->gd[i].bg_inode_bitmap = ibmpos;
--              fs->gd[i].bg_inode_table = itblpos;
-+              gd->bg_used_dirs_count = 0;
-+              gd->bg_block_bitmap = bbmpos;
-+              gd->bg_inode_bitmap = ibmpos;
-+              gd->bg_inode_table = itblpos;
-       }
-       /* Mark non-filesystem blocks and inodes as allocated */
-@@ -1988,9 +2011,9 @@
-       for(i = 0; i<nbgroups;i++) {
-               /* Block bitmap */
--              bbm = get_blk(fs,fs->gd[i].bg_block_bitmap);    
-+              bbm = GRP_GET_GROUP_BBM(fs, i);
-               //non-filesystem blocks
--              for(j = fs->gd[i].bg_free_blocks_count
-+              for(j = get_gd(fs, i)->bg_free_blocks_count
-                       + overhead_per_group + 1; j <= BLOCKSIZE * 8; j++)
-                       allocate(bbm, j); 
-               //system blocks
-@@ -1998,7 +2021,7 @@
-                       allocate(bbm, j); 
-               
-               /* Inode bitmap */
--              ibm = get_blk(fs,fs->gd[i].bg_inode_bitmap);    
-+              ibm = GRP_GET_GROUP_IBM(fs, i);
-               //non-filesystem inodes
-               for(j = fs->sb.s_inodes_per_group+1; j <= BLOCKSIZE * 8; j++)
-                       allocate(ibm, j);
-@@ -2012,9 +2035,9 @@
-       // make root inode and directory
-       /* We have groups now. Add the root filesystem in group 0 */
-       /* Also increment the directory count for group 0 */
--      fs->gd[0].bg_free_inodes_count--;
--      fs->gd[0].bg_used_dirs_count = 1;
--      itab0 = (inode *)get_blk(fs,fs->gd[0].bg_inode_table);
-+      get_gd(fs, 0)->bg_free_inodes_count--;
-+      get_gd(fs, 0)->bg_used_dirs_count = 1;
-+      itab0 = (inode *)get_blk(fs, get_gd(fs,0)->bg_inode_table);
-       itab0[EXT2_ROOT_INO-1].i_mode = FM_IFDIR | FM_IRWXU | FM_IRGRP | FM_IROTH | FM_IXGRP | FM_IXOTH; 
-       itab0[EXT2_ROOT_INO-1].i_ctime = fs_timestamp;
-       itab0[EXT2_ROOT_INO-1].i_mtime = fs_timestamp;
-@@ -2338,8 +2361,9 @@
-       for (i = 0; i < GRP_NBGROUPS(fs); i++) {
-               printf("Group No: %d\n", i+1);
-               printf("block bitmap: block %d,inode bitmap: block %d, inode table: block %d\n",
--                   fs->gd[i].bg_block_bitmap, fs->gd[i].bg_inode_bitmap,
--                   fs->gd[i].bg_inode_table);
-+                   get_gd(fs, i)->bg_block_bitmap,
-+                   get_gd(fs, i)->bg_inode_bitmap,
-+                   get_gd(fs, i)->bg_inode_table);
-               printf("block bitmap allocation:\n");
-               print_bm(GRP_GET_GROUP_BBM(fs, i),fs->sb.s_blocks_per_group);
-               printf("inode bitmap allocation:\n");
-@@ -2421,10 +2445,12 @@
-       "  -x, --starting-image <image>\n"
-       "  -d, --root <directory>\n"
-       "  -D, --devtable <file>\n"
-+      "  -B, --block-size <bytes>\n"
-       "  -b, --size-in-blocks <blocks>\n"
-       "  -i, --bytes-per-inode <bytes per inode>\n"
-       "  -N, --number-of-inodes <number of inodes>\n"
-       "  -m, --reserved-percentage <percentage of blocks to reserve>\n"
-+      "  -o, --creator-os <os>      'linux', 'hurd', 'freebsd' or a numerical value.\n"
-       "  -g, --block-map <path>     Generate a block map file for this path.\n"
-       "  -e, --fill-value <value>   Fill unallocated blocks with value.\n"
-       "  -z, --allow-holes          Allow files with holes.\n"
-@@ -2446,6 +2472,29 @@
- extern char* optarg;
- extern int optind, opterr, optopt;
-+// parse the value for -o <os>
-+int
-+lookup_creator_os(const char *name)
-+{
-+      static const char *const creators[] =
-+              {"linux", "hurd", "2", "freebsd", NULL};
-+      char *endptr;
-+      int i;
-+
-+      // numerical value ?
-+      i = strtol(name, &endptr, 0);
-+      if(name[0] && *endptr == '\0')
-+              return i;
-+
-+      // symbolic name ?
-+      for(i=0; creators[i]; i++)
-+             if(strcasecmp(creators[i], name) == 0)
-+                     return i;
-+
-+      // whatever ?
-+      return -1;
-+}
-+
- int
- main(int argc, char **argv)
- {
-@@ -2455,6 +2504,7 @@
-       float bytes_per_inode = -1;
-       float reserved_frac = -1;
-       int fs_timestamp = -1;
-+      int creator_os = CREATOR_OS;
-       char * fsout = "-";
-       char * fsin = 0;
-       char * dopt[MAX_DOPT];
-@@ -2478,10 +2528,12 @@
-         { "starting-image",   required_argument,      NULL, 'x' },
-         { "root",             required_argument,      NULL, 'd' },
-         { "devtable",         required_argument,      NULL, 'D' },
-+        { "block-size",       required_argument,      NULL, 'B' },
-         { "size-in-blocks",   required_argument,      NULL, 'b' },
-         { "bytes-per-inode",  required_argument,      NULL, 'i' },
-         { "number-of-inodes", required_argument,      NULL, 'N' },
-         { "reserved-percentage", required_argument,   NULL, 'm' },
-+        { "creator-os",       required_argument,      NULL, 'o' },
-         { "block-map",        required_argument,      NULL, 'g' },
-         { "fill-value",       required_argument,      NULL, 'e' },
-         { "allow-holes",      no_argument,            NULL, 'z' },
-@@ -2497,11 +2549,11 @@
-       app_name = argv[0];
--      while((c = getopt_long(argc, argv, "x:d:D:b:i:N:m:g:e:zfqUPhVv", longopts, NULL)) != EOF) {
-+      while((c = getopt_long(argc, argv, "x:d:D:B:b:i:N:m:o:g:e:zfqUPhVv", longopts, NULL)) != EOF) {
- #else
-       app_name = argv[0];
--      while((c = getopt(argc, argv,      "x:d:D:b:i:N:m:g:e:zfqUPhVv")) != EOF) {
-+      while((c = getopt(argc, argv,      "x:d:D:B:b:i:N:m:o:g:e:zfqUPhVv")) != EOF) {
- #endif /* HAVE_GETOPT_LONG */
-               switch(c)
-               {
-@@ -2512,6 +2564,9 @@
-                       case 'D':
-                               dopt[didx++] = optarg;
-                               break;
-+                      case 'B':
-+                              blocksize = SI_atof(optarg);
-+                              break;
-                       case 'b':
-                               nbblocks = SI_atof(optarg);
-                               break;
-@@ -2524,6 +2579,9 @@
-                       case 'm':
-                               reserved_frac = SI_atof(optarg) / 100;
-                               break;
-+                      case 'o':
-+                              creator_os = lookup_creator_os(optarg);
-+                              break;
-                       case 'g':
-                               gopt[gidx++] = optarg;
-                               break;
-@@ -2567,6 +2625,11 @@
-               error_msg_and_die("Not enough arguments. Try --help or else see the man page.");
-       fsout = argv[optind];
-+      if(blocksize != 1024 && blocksize != 2048 && blocksize != 4096)
-+              error_msg_and_die("Valid block sizes: 1024, 2048 or 4096.");
-+      if(creator_os < 0)
-+              error_msg_and_die("Creator OS unknown.");
-+
-       hdlinks.hdl = (struct hdlink_s *)malloc(hdlink_cnt * sizeof(struct hdlink_s));
-       if (!hdlinks.hdl)
-               error_msg_and_die("Not enough memory");
-@@ -2611,7 +2674,8 @@
-               }
-               if(fs_timestamp == -1)
-                       fs_timestamp = time(NULL);
--              fs = init_fs(nbblocks, nbinodes, nbresrvd, holes, fs_timestamp);
-+              fs = init_fs(nbblocks, nbinodes, nbresrvd, holes,
-+                              fs_timestamp, creator_os);
-       }
-       
-       populate_fs(fs, dopt, didx, squash_uids, squash_perms, fs_timestamp, NULL);
-Index: genext2fs/test-gen.lib
-===================================================================
---- genext2fs.orig/test-gen.lib        2011-09-03 13:40:35.000000000 +0200
-+++ genext2fs/test-gen.lib     2011-09-03 14:21:17.000000000 +0200
-@@ -8,7 +8,7 @@
- # Creates an image with a file of given size
- # Usage: dgen file-size number-of-blocks 
- dgen () {
--      size=$1; blocks=$2
-+      size=$1; blocks=$2; blocksz=$3;
-       rm -rf test
-       mkdir -p test
-       cd test
-@@ -20,7 +20,7 @@
-         chmod 777 file.$1
-       TZ=UTC-11 touch -t 200502070321.43 file.$1 .
-       cd ..
--      ./genext2fs -N 17 -b $blocks -d test -f -q ext2.img 
-+      ./genext2fs -B $blocksz -N 17 -b $blocks -d test -f -o Linux -q ext2.img
- }
- # fgen - Exercises the -f spec-file option of genext2fs
-@@ -31,7 +31,7 @@
-       mkdir -p test
-       cp $fname test
-       TZ=UTC-11 touch -t 200502070321.43 test/$fname
--      ./genext2fs -N 92 -b $blocks -D test/$fname -f ext2.img
-+      ./genext2fs -N 92 -b $blocks -D test/$fname -f -o Linux ext2.img
- }
- # gen_cleanup - Remove the files generated by the above functions
-Index: genext2fs/test-mount.sh
-===================================================================
---- genext2fs.orig/test-mount.sh       2011-09-03 13:40:35.000000000 +0200
-+++ genext2fs/test-mount.sh    2011-09-03 14:21:17.000000000 +0200
-@@ -33,9 +33,9 @@
- # and returns the command line with which to invoke dtest()
- # Usage: dtest-mount file-size number-of-blocks 
- dtest_mount () {
--      size=$1; blocks=$2
--      echo Testing with file of size $size
--      dgen $size $blocks
-+      size=$1; blocks=$2; blocksz=$3;
-+      echo Testing $blocks blocks of $blocksz bytes with file of size $size
-+      dgen $size $blocks $blocksz
-       /sbin/e2fsck -fn ext2.img || fail
-       mkdir -p mnt
-       mount -t ext2 -o ro,loop ext2.img mnt || fail
-@@ -44,7 +44,7 @@
-                                       awk '{print $5}'`" ] ; then
-               fail
-       fi
--      pass dtest $size $blocks
-+      pass dtest $size $blocks $blocksz
- }
- # ftest-mount - Exercise the -f spec-file option of genext2fs
-@@ -75,13 +75,21 @@
-       pass ftest $fname $blocks
- }
--dtest_mount 0 4096 
--dtest_mount 0 8193
--dtest_mount 0 8194
--dtest_mount 1 4096 
--dtest_mount 12288 4096 
--dtest_mount 274432 4096 
--dtest_mount 8388608 9000 
--dtest_mount 16777216 20000
-+dtest_mount 0 4096 1024
-+dtest_mount 0 2048 2048
-+dtest_mount 0 1024 4096
-+dtest_mount 0 8193 1024
-+dtest_mount 0 8194 1024
-+dtest_mount 0 8193 4096
-+dtest_mount 0 8194 2048
-+dtest_mount 1 4096 1024
-+dtest_mount 1 1024 4096
-+dtest_mount 12288 4096 1024
-+dtest_mount 274432 4096 1024
-+dtest_mount 8388608 9000 1024
-+dtest_mount 8388608 4500 2048
-+dtest_mount 8388608 2250 4096
-+dtest_mount 16777216 20000 1024
-+dtest_mount 16777216 10000 2048
- ftest_mount device_table.txt 4096 
-Index: genext2fs/test.sh
-===================================================================
---- genext2fs.orig/test.sh     2011-09-03 13:40:35.000000000 +0200
-+++ genext2fs/test.sh  2011-09-03 14:21:17.000000000 +0200
-@@ -30,9 +30,9 @@
- # Creates an image with a file of given size and verifies it
- # Usage: dtest file-size number-of-blocks correct-checksum
- dtest () {
--      size=$1; blocks=$2; checksum=$3
-+      size=$1; blocks=$2; blocksz=$3; checksum=$4
-       echo Testing with file of size $size
--      dgen $size $blocks
-+      dgen $size $blocks $blocksz
-       md5cmp $checksum
-       gen_cleanup
- }
-@@ -53,12 +53,20 @@
- # replace the following lines with the output of
- # sudo sh test-mount.sh|grep test
--dtest 0 4096 3bc6424b8fcd51a0de34ee59d91d5f16
--dtest 0 8193 f174804f6b433b552706cbbfc60c416d
--dtest 0 8194 4855a55d0cbdc44584634df49ebd5711
--dtest 1 4096 09c569b6bfb45222c729c42d04d5451f
--dtest 12288 4096 61febcbfbf32024ef99103fcdc282c39
--dtest 274432 4096 0c517803552c55c1806e4220b0a0164f
--dtest 8388608 9000 e0e5ea15bced10ab486d8135584b5d8e
--dtest 16777216 20000 fdf636eb905ab4dc1bf76dce5ac5d209
-+dtest 0 4096 1024 3bc6424b8fcd51a0de34ee59d91d5f16
-+dtest 0 2048 2048 230afa16496df019878cc2370c661cdc
-+dtest 0 1024 4096 ebff5eeb38b70f3f1cd081e60eb44561
-+dtest 0 8193 1024 f174804f6b433b552706cbbfc60c416d
-+dtest 0 8194 1024 4855a55d0cbdc44584634df49ebd5711
-+dtest 0 8193 4096 c493679698418ec7e6552005e2d2a6d8
-+dtest 0 8194 2048 ec13f328fa7543563f35f494bddc059c
-+dtest 1 4096 1024 09c569b6bfb45222c729c42d04d5451f
-+dtest 1 1024 4096 d318a326fdc907810ae9e6b0a20e9b06
-+dtest 12288 4096 1024 61febcbfbf32024ef99103fcdc282c39
-+dtest 274432 4096 1024 0c517803552c55c1806e4220b0a0164f
-+dtest 8388608 9000 1024 e0e5ea15bced10ab486d8135584b5d8e
-+dtest 8388608 4500 2048 39f4d537a72f5053fd6891721c59680d
-+dtest 8388608 2250 4096 1d697fa4bc2cfffe02ac91edfadc40bf
-+dtest 16777216 20000 1024 fdf636eb905ab4dc1bf76dce5ac5d209
-+dtest 16777216 10000 2048 f9824a81ea5e74fdf469c097927c292b
- ftest device_table.txt 4096 a0af06d944b11d2902dfd705484c64cc
diff --git a/tools/genext2fs/patches/400-byteswap_fix.patch b/tools/genext2fs/patches/400-byteswap_fix.patch
deleted file mode 100644 (file)
index 7b3c00b..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Index: genext2fs/genext2fs.c
-===================================================================
---- genext2fs.orig/genext2fs.c 2011-11-29 17:36:06.000000000 +0100
-+++ genext2fs/genext2fs.c      2011-11-29 17:37:37.000000000 +0100
-@@ -1779,7 +1779,8 @@
-       assert(nod->i_block[EXT2_DIND_BLOCK] != 0);
-       for(i = 0; i < BLOCKSIZE/4; i++)
-               if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i )
--                      swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
-+                      if (((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])
-+                              swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
-       swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]));
-       if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4)
-               return;
-@@ -1792,7 +1793,8 @@
-                                    (BLOCKSIZE/4)*(BLOCKSIZE/4) + 
-                                    i*(BLOCKSIZE/4)*(BLOCKSIZE/4) + 
-                                    j*(BLOCKSIZE/4)) ) 
--                        swap_block(get_blk(fs,b2[j]));
-+                        if (b2[j])
-+                              swap_block(get_blk(fs,b2[j]));
-                       else {
-                         done = 1;
-                         break;
-@@ -1825,7 +1827,8 @@
-       swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]));
-       for(i = 0; i < BLOCKSIZE/4; i++)
-               if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i )
--                      swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
-+                      if (((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])
-+                              swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i]));
-       if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4)
-               return;
-       /* Adding support for triple indirection */
-@@ -1839,7 +1842,8 @@
-                                    (BLOCKSIZE/4)*(BLOCKSIZE/4) + 
-                                    i*(BLOCKSIZE/4)*(BLOCKSIZE/4) + 
-                                    j*(BLOCKSIZE/4)) ) 
--                        swap_block(get_blk(fs,b2[j]));
-+                        if (b2[j])
-+                              swap_block(get_blk(fs,b2[j]));
-                       else {
-                         done = 1;
-                         break;