fix mtd for older gccs
authorrjt@cambridgebroadband.com <rjt@cambridgebroadband.com>
Wed, 1 Dec 2004 16:33:31 +0000 (16:33 +0000)
committerrjt@cambridgebroadband.com <rjt@cambridgebroadband.com>
Wed, 1 Dec 2004 16:33:31 +0000 (16:33 +0000)
BKrev: 41adf25bLixnoKPoM7hcSK6TWhGXMw

mtd/mtd/add-exclusion-to-mkfs-jffs2.patch

index e69de29..cb819e1 100644 (file)
@@ -0,0 +1,107 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- mtd/util/mkfs.jffs2.c~add-exclusion-to-mkfs-jffs2.patch
++++ mtd/util/mkfs.jffs2.c
+@@ -89,7 +89,12 @@
+       struct filesystem_entry *files; /* Only relevant to directories */
+ };
++struct ignorepath_entry {
++    struct ignorepath_entry* next;  /* Points to the next ignorepath element */
++    char name[PATH_MAX];             /* Name of the entry */
++};
++static struct ignorepath_entry* ignorepath = 0;
+ static int out_fd = -1;
+ static char default_rootdir[] = ".";
+ static char *rootdir = default_rootdir;
+@@ -363,6 +368,7 @@
+       char *hpath, *tpath;
+       struct dirent *dp, **namelist;
+       struct filesystem_entry *entry;
++    struct ignorepath_entry* element = ignorepath;
+       if (lstat(hostpath, &sb)) {
+@@ -372,6 +378,15 @@
+       entry = add_host_filesystem_entry(targetpath, hostpath, 
+                       sb.st_uid, sb.st_gid, sb.st_mode, 0, parent);
++      while ( element ) {
++              if ( strcmp( element->name, hostpath ) == 0 ) {
++                      printf( "Note: ignoring directories below '%s'\n", hostpath );
++                      return entry;
++                      break;
++              }
++              element = element->next;
++      }
++
+       n = scandir(hostpath, &namelist, 0, alphasort);
+       if (n < 0) {
+               perror_msg_and_die("opening directory %s", hostpath);
+@@ -1139,6 +1154,7 @@
+       {"root", 1, NULL, 'r'},
+       {"pagesize", 1, NULL, 's'},
+       {"eraseblock", 1, NULL, 'e'},
++        {"ignore", 1, NULL, 'i'},
+       {"output", 1, NULL, 'o'},
+       {"help", 0, NULL, 'h'},
+       {"verbose", 0, NULL, 'v'},
+@@ -1180,6 +1196,7 @@
+         "  -L, --list-compressors  Show the list of the avaiable compressors\n"
+         "  -t, --test-compression  Call decompress and compare with the original (for test)\n"
+       "  -n, --no-cleanmarkers   Don't add a cleanmarker to every eraseblock\n"
++      "  -i, --ignore=PATH       Ignore sub directory and file tree below PATH when recursing over the file system\n"
+       "  -o, --output=FILE       Output to FILE (default: stdout)\n"
+       "  -l, --little-endian     Create a little-endian filesystem\n"
+       "  -b, --big-endian        Create a big-endian filesystem\n"
+@@ -1202,13 +1219,14 @@
+       struct stat sb;
+       FILE *devtable = NULL;
+       struct filesystem_entry *root;
+-        char *compr_name = NULL;
+-        int compr_prior  = -1;
++      char *compr_name = NULL;
++      int compr_prior  = -1;
++      struct ignorepath_entry* element = ignorepath;
+-        jffs2_compressors_init();
++      jffs2_compressors_init();
+       while ((opt = getopt_long(argc, argv, 
+-                                      "D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:", long_options, &c)) >= 0) 
++                                      "D:d:r:s:i:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:", long_options, &c)) >= 0) 
+       {
+               switch (opt) {
+                       case 'D':
+@@ -1231,6 +1249,27 @@
+                               page_size = strtol(optarg, NULL, 0);
+                               break;
++                      case 'i':
++                              printf( "Note: Adding '%s' to ignore Path\n", optarg );
++                              if ( !ignorepath ) {
++                                      ignorepath = xmalloc( sizeof( struct ignorepath_entry ) );
++                                      ignorepath->next = 0;
++                                      strcpy( &ignorepath->name[0], optarg );
++                              } else {
++                                      while ( element->next ) element = element->next;
++                                      element->next = xmalloc( sizeof( struct ignorepath_entry ) );
++                                      element->next->next = 0;
++                                      strcpy( &element->next->name[0], optarg );
++                              }
++                              printf( "--------- Dumping ignore path list ----------------\n" );
++                              element=ignorepath;
++                              while ( element ) {
++                                      printf( "  * '%s'\n", &element->name[0] );
++                                      element = element->next;
++                              }
++                              printf( "---------------------------------------------------\n" );
++                              break;
++
+                       case 'o':
+                               if (out_fd != -1) {
+                                       error_msg_and_die("output filename specified more than once");