Upstream-Status: Pending

Index: git/jffsX-utils/mkfs.jffs2.c
===================================================================
--- git.orig/jffsX-utils/mkfs.jffs2.c
+++ git/jffsX-utils/mkfs.jffs2.c
@@ -100,6 +100,11 @@ struct filesystem_entry {
 	struct rb_node hardlink_rb;
 };
 
+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;
 struct rb_root hardlinks;
 static int out_fd = -1;
 static int in_fd = -1;
@@ -309,7 +314,7 @@ static struct filesystem_entry *recursiv
 	char *hpath, *tpath;
 	struct dirent *dp, **namelist;
 	struct filesystem_entry *entry;
-
+	struct ignorepath_entry* element = ignorepath;
 
 	if (lstat(hostpath, &sb)) {
 		sys_errmsg_die("%s", hostpath);
@@ -318,6 +323,15 @@ static struct filesystem_entry *recursiv
 	entry = add_host_filesystem_entry(targetpath, hostpath,
 			sb.st_uid, sb.st_gid, sb.st_mode, 0, parent);
 
+	while ( element ) {
+		if ( strcmp( element->name, targetpath ) == 0 ) {
+			printf( "Note: ignoring directories below '%s'\n", targetpath );
+			return entry;
+			break;
+		}
+		element = element->next;
+	}
+
 	n = scandir(hostpath, &namelist, 0, alphasort);
 	if (n < 0) {
 		sys_errmsg_die("opening directory %s", hostpath);
@@ -1359,6 +1373,7 @@ static struct option long_options[] = {
 	{"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'},
@@ -1409,6 +1424,7 @@ static const char helptext[] =
 "  -L, --list-compressors  Show the list of the available 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"
@@ -1566,6 +1582,7 @@ int main(int argc, char **argv)
 	char *compr_name = NULL;
 	int compr_prior  = -1;
 	int warn_page_size = 0;
+	struct ignorepath_entry* element = ignorepath;
 
 	page_size = sysconf(_SC_PAGESIZE);
 	if (page_size < 0) /* System doesn't know so ... */
@@ -1576,7 +1593,7 @@ int main(int argc, char **argv)
 	jffs2_compressors_init();
 
 	while ((opt = getopt_long(argc, argv,
-					"D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
+					"D:d:r:s:I:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
 	{
 		switch (opt) {
 			case 'D':
@@ -1600,6 +1617,28 @@ int main(int argc, char **argv)
 				warn_page_size = 0; /* set by user, so don't need to warn */
 				break;
 
+			case 'I':
+				printf( "Note: Adding '%s' to ignore Path\n", optarg );
+				element = ignorepath;
+				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) {
 					errmsg_die("output filename specified more than once");
