diff options
author | rjt@cambridgebroadband.com <rjt@cambridgebroadband.com> | 2004-12-01 16:33:31 +0000 |
---|---|---|
committer | rjt@cambridgebroadband.com <rjt@cambridgebroadband.com> | 2004-12-01 16:33:31 +0000 |
commit | d5cc2fad97ec2640698c261d6da50f53733adb94 (patch) | |
tree | d84d73d3a0bc8566b1ad83640c1a46dcc1e1d428 | |
parent | 9125935b373a5a107b46917fd089e5f243123f8e (diff) |
fix mtd for older gccs
BKrev: 41adf25bLixnoKPoM7hcSK6TWhGXMw
-rw-r--r-- | mtd/mtd/add-exclusion-to-mkfs-jffs2.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/mtd/mtd/add-exclusion-to-mkfs-jffs2.patch b/mtd/mtd/add-exclusion-to-mkfs-jffs2.patch index e69de29bb2..cb819e19be 100644 --- a/mtd/mtd/add-exclusion-to-mkfs-jffs2.patch +++ b/mtd/mtd/add-exclusion-to-mkfs-jffs2.patch @@ -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"); |