finer-grained squash support for mkfs.jffs2

Christopher Hoover ch at hpl.hp.com
Tue Feb 19 17:32:29 EST 2002


This patch adds the capability to mkfs.jffs2 to just squash uids (very
useful), just squash perms (not so useful), or both (the old
behavior).

Cheers.

-ch
mailto:ch at murgatroid.com
mailto:ch at hpl.hp.com



Index: util/mkfs.jffs2.c
===================================================================
RCS file: /home/cvs/mtd/util/mkfs.jffs2.c,v
retrieving revision 1.20
diff --unified -r1.20 mkfs.jffs2.c
--- util/mkfs.jffs2.c	2002/02/08 00:51:52	1.20
+++ util/mkfs.jffs2.c	2002/02/19 22:22:02
@@ -108,7 +108,8 @@
 static int fake_times = 0;
 
 /* Squash all permissions and make everything be owned by root */
-static int squash = 0;
+static int squash_uids = 0;
+static int squash_perms = 0;
 
 static int host_endian = __BYTE_ORDER;
 static int target_endian = __BYTE_ORDER;
@@ -323,11 +324,13 @@
 		}
 	}
 
-	if (squash) {
-		/* Squash all permissions so files are owned by
-		 * root, all timestamps are _right now_, and file
-		 * permissions have group and other write removed */
+	/* Squash all permissions so files are owned by root, all
+	 * timestamps are _right now_, and file permissions
+	 * have group and other write removed */
+	if (squash_uids) {
 		uid = gid = 0;
+	}
+	if (squash_perms) {
 		if (!S_ISLNK(mode)) {
 			mode &= ~(S_IWGRP | S_IWOTH);
 			mode &= ~(S_ISUID | S_ISGID);
@@ -375,11 +378,13 @@
 		timestamp = sb.st_mtime;
 	}
 
-	if (squash) {
-		/* Squash all permissions so files are owned by
-		 * root, all timestamps are _right now_, and file
-		 * permissions have group and other write removed */
+	/* Squash all permissions so files are owned by
+	 * root, all timestamps are _right now_, and file
+	 * permissions have group and other write removed */
+	if (squash_uids) {
 		uid = gid = 0;
+	}
+	if (squash_perms) {
 		mode &= ~(S_IWGRP | S_IWOTH);
 		mode &= ~(S_ISUID | S_ISGID);
 	}
@@ -423,11 +428,13 @@
 		timestamp = sb.st_mtime;
 	}
 
-	if (squash) {
+	if (squash_uids) {
 		/* Squash all permissions so files are owned by
 		 * root, all timestamps are _right now_, and file
 		 * permissions have group and other write removed */
 		uid = gid = 0;
+	}
+	if (squash_perms) {
 		mode &= ~(S_ISUID | S_ISGID);
 	}
 	if (fake_times) {
@@ -876,7 +883,8 @@
 
 	/* Turn off squash, since we must ensure that values
 	 * entered via the device table are not squashed */
-	squash = 0;
+	squash_uids = 0;
+	squash_perms = 0;
 
 	/* Looks ok so far.  The general plan now is to read in one
 	 * line at a time, check for leading comment delimiters ('#'),
@@ -1085,6 +1093,8 @@
 	{"big-endian", 0, NULL, 'b'},
 	{"little-endian", 0, NULL, 'l'},
 	{"squash", 0, NULL, 'q'},
+	{"squash-uids", 0, NULL, 'U'},
+	{"squash-perms", 0, NULL, 'P'},
 	{"faketime", 0, NULL, 'f'},
 	{"devtable", 1, NULL, 'D'},
 	{NULL, 0, NULL, 0}
@@ -1106,6 +1116,8 @@
 	"  -D, --devtable=FILE    Use the named FILE as a device table file\n"
 	"  -f, --faketime         Change all file times to '0' for regression testing\n"
 	"  -q, --squash           Squash permissions and owners making all files be owned by root\n"
+	"  -U, --squash-uids      Squash owners making all files be owned by root\n"
+	"  -P, --squash-perms     Squash permissions on all files\n"
 	"  -h, --help             Display this help text\n"
 	"  -v, --version          Display version information\n\n";
 
@@ -1171,7 +1183,16 @@
 			break;
 
 		case 'q':
-			squash = 1;
+			squash_uids = 1;
+			squash_perms = 1;
+			break;
+			
+		case 'U':
+			squash_uids = 1;
+			break;
+
+		case 'P':
+			squash_perms = 1;
 			break;
 
 		case 'f':




More information about the linux-mtd mailing list