summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Engraf <david.engraf@sysgo.com>2017-05-23 08:52:52 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-05-31 10:56:25 +0200
commit871c2f1e898fc692e2966092372ee9c4ce31bbc0 (patch)
tree64db21a6781ba00f51799580f4b4310d0974d4ff
parentc0972a5ffc3a6d1fb7ccfa8dc5a11d1afaf7c331 (diff)
mkfs.ubifs: Add support for symlinks in device table
It is not possible to change ownership for symlinks in the device table file. This patch adds support for symlinks equal to mkfs.jffs2 and updates the sample device table file. The permission entry for symlinks in the device table must be set to 0777. Signed-off-by: David Engraf <david.engraf@sysgo.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r--jffsX-utils/device_table.txt1
-rw-r--r--ubifs-utils/mkfs.ubifs/devtable.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/jffsX-utils/device_table.txt b/jffsX-utils/device_table.txt
index 394a62b..8930cae 100644
--- a/jffsX-utils/device_table.txt
+++ b/jffsX-utils/device_table.txt
@@ -14,6 +14,7 @@
# c Character special device file
# b Block special device file
# p Fifo (named pipe)
+# l Link
# uid is the user id for the target file, gid is the group id for the
# target file. The rest of the entried apply only to device special
# file.
diff --git a/ubifs-utils/mkfs.ubifs/devtable.c b/ubifs-utils/mkfs.ubifs/devtable.c
index dee035d..3b46abc 100644
--- a/ubifs-utils/mkfs.ubifs/devtable.c
+++ b/ubifs-utils/mkfs.ubifs/devtable.c
@@ -33,9 +33,10 @@
* c Character special device file
* b Block special device file
* p Fifo (named pipe)
+ * l Link
*
- * Don't bother with symlinks (permissions are irrelevant), hard links (special
- * cases of regular files), or sockets (why bother).
+ * Don't bother with hard links (special cases of regular files), or sockets
+ * (why bother).
*
* Regular files must exist in the target root directory. If a char, block,
* fifo, or directory does not exist, it will be created.
@@ -177,6 +178,11 @@ static int interpret_table_entry(const char *line)
case 'b':
mode |= S_IFBLK;
break;
+ case 'l':
+ mode |= S_IFLNK;
+ if ((mode & 0777) != 0777)
+ return err_msg("link permission must be 0777");
+ break;
default:
return err_msg("unsupported file type '%c'", type);
}