Upstream-Status: Pending

--- /tmp/mkfs.jffs2.c	2009-01-11 15:28:41.000000000 +0100
+++ git/mkfs.jffs2.c	2009-01-11 15:59:29.000000000 +0100
@@ -100,6 +100,11 @@
 	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;
@@ -408,7 +413,7 @@
 	char *hpath, *tpath;
 	struct dirent *dp, **namelist;
 	struct filesystem_entry *entry;
-
+	struct ignorepath_entry* element = ignorepath;
 
 	if (lstat(hostpath, &sb)) {
 		perror_msg_and_die("%s", hostpath);
@@ -417,6 +422,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, 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) {
 		perror_msg_and_die("opening directory %s", hostpath);
@@ -1453,6 +1467,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'},
@@ -1500,6 +1515,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"
@@ -1666,6 +1682,7 @@
 	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 ... */
@@ -1676,7 +1693,7 @@
 	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':
@@ -1700,6 +1717,28 @@
 				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) {
 					error_msg_and_die("output filename specified more than once");
