aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Erickson <gerickson@nuovations.com>2008-06-14 01:46:37 +1000
committerJosh Boyer <jwboyer@vader.jdub.homelinux.org>2008-06-18 09:07:24 -0400
commitd769da93a56590c23ce9430a1d970e31e835ae88 (patch)
treeb8464ef87a475f2c5e4669de92da850c0019d7b4
parent1263a74aff28f969043c89d0235b332529df4a30 (diff)
mkfs.jffs2: Add Support for Symlinks to Device Table
Added support for symbolic links to the grammar of the device table file such that links that already exist in the root working directory may have their permissions and ownership changed. Creating symbolic links anew is still unsupported. Added a note to this effect in the manual reference page. Print out the type character when encountering an unsupported file type (e.g. symbolic links when created anew). Signed-off-by: Grant Erickson <gerickson@nuovations.com> Signed-off-by: Josh Boyer <jwboyer@vader.jdub.homelinux.org>
-rw-r--r--mkfs.jffs2.18
-rw-r--r--mkfs.jffs2.c7
2 files changed, 13 insertions, 2 deletions
diff --git a/mkfs.jffs2.1 b/mkfs.jffs2.1
index 4080032..1eefeda 100644
--- a/mkfs.jffs2.1
+++ b/mkfs.jffs2.1
@@ -241,6 +241,14 @@ Display version information.
Generate an appendage image for FILE. If FILE is written to flash and flash
is appended with the output, then it seems as if it was one thing.
+.SH LIMITATIONS
+The format and grammar of the device table file does not allow it to
+create symbolic links when the symbolic links are not already present
+in the root working directory.
+
+However, symbolic links may be specified in the device table file
+using the \fIl\fR type for the purposes of setting their permissions
+and ownership.
.SH BUGS
JFFS2 limits device major and minor numbers to 8 bits each. Some
consider this a bug.
diff --git a/mkfs.jffs2.c b/mkfs.jffs2.c
index f042ae7..7255536 100644
--- a/mkfs.jffs2.c
+++ b/mkfs.jffs2.c
@@ -544,8 +544,11 @@ static int interpret_table_entry(struct filesystem_entry *root, char *line)
case 'b':
mode |= S_IFBLK;
break;
+ case 'l':
+ mode |= S_IFLNK;
+ break;
default:
- error_msg_and_die("Unsupported file type");
+ error_msg_and_die("Unsupported file type '%c'", type);
}
entry = find_filesystem_entry(root, name, mode);
if (entry) {
@@ -604,7 +607,7 @@ static int interpret_table_entry(struct filesystem_entry *root, char *line)
}
break;
default:
- error_msg_and_die("Unsupported file type");
+ error_msg_and_die("Unsupported file type '%c'", type);
}
}
free(name);