summaryrefslogtreecommitdiff
path: root/mkfs
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-08-11 13:59:13 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-08-11 14:11:30 +0200
commit33d5e09ccbf2bafe3d06f615b11bf29d07f47784 (patch)
treed9240bdf940cda58bcbb1dfdb58b3006b7445117 /mkfs
parent4b02470e6e8126918549d292cbed610a6cbfbf68 (diff)
Add gensquashfs option to read xattrs from input files
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'mkfs')
-rw-r--r--mkfs/mkfs.c3
-rw-r--r--mkfs/mkfs.h1
-rw-r--r--mkfs/options.c20
3 files changed, 21 insertions, 3 deletions
diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c
index f0d1e73..b11dce0 100644
--- a/mkfs/mkfs.c
+++ b/mkfs/mkfs.c
@@ -81,6 +81,9 @@ static int read_fstree(fstree_t *fs, options_t *opt)
if (opt->one_filesystem)
flags |= DIR_SCAN_ONE_FILESYSTEM;
+ if (opt->keep_xattr)
+ flags |= DIR_SCAN_READ_XATTR;
+
return fstree_from_dir(fs, opt->packdir, flags);
}
diff --git a/mkfs/mkfs.h b/mkfs/mkfs.h
index c7c327c..e02c248 100644
--- a/mkfs/mkfs.h
+++ b/mkfs/mkfs.h
@@ -36,6 +36,7 @@ typedef struct {
int blksz;
int devblksz;
bool keep_time;
+ bool keep_xattr;
bool one_filesystem;
bool exportable;
bool quiet;
diff --git a/mkfs/options.c b/mkfs/options.c
index 340cb81..2778a9e 100644
--- a/mkfs/options.c
+++ b/mkfs/options.c
@@ -15,6 +15,9 @@ static struct option long_opts[] = {
{ "pack-file", required_argument, NULL, 'F' },
{ "pack-dir", required_argument, NULL, 'D' },
{ "keep-time", no_argument, NULL, 'k' },
+#ifdef HAVE_SYS_XATTR_H
+ { "keep-xattr", no_argument, NULL, 'x' },
+#endif
{ "one-file-system", no_argument, NULL, 'o' },
{ "exportable", no_argument, NULL, 'e' },
{ "force", no_argument, NULL, 'f' },
@@ -26,11 +29,14 @@ static struct option long_opts[] = {
{ "help", no_argument, NULL, 'h' },
};
+static const char *short_opts = "F:D:X:c:b:B:d:kxoefqhV"
#ifdef WITH_SELINUX
-static const char *short_opts = "s:F:D:X:c:b:B:d:koefqhV";
-#else
-static const char *short_opts = "F:D:X:c:b:B:d:koefqhV";
+"s:"
+#endif
+#ifdef HAVE_SYS_XATTR_H
+"x"
#endif
+;
extern char *__progname;
@@ -77,6 +83,8 @@ static const char *help_string =
" --keep-time, -k When using --pack-dir only, use the timestamps\n"
" from the input files instead of setting\n"
" defaults on all input paths.\n"
+" --keep-xattr, -x When using --pack-dir only, read and pack the\n"
+" extended attributes from the input files.\n"
" --one-file-system, -o When using --pack-dir only, stay in local file\n"
" system and do not cross mount points.\n"
" --exportable, -e Generate an export table for NFS support.\n"
@@ -139,6 +147,7 @@ void process_command_line(options_t *opt, int argc, char **argv)
opt->compressor = compressor_get_default();
opt->blksz = SQFS_DEFAULT_BLOCK_SIZE;
opt->devblksz = SQFS_DEVBLK_SIZE;
+ opt->keep_xattr = false;
opt->keep_time = false;
opt->one_filesystem = false;
opt->exportable = false;
@@ -188,6 +197,11 @@ void process_command_line(options_t *opt, int argc, char **argv)
case 'k':
opt->keep_time = true;
break;
+#ifdef HAVE_SYS_XATTR_H
+ case 'x':
+ opt->keep_xattr = true;
+ break;
+#endif
case 'o':
opt->one_filesystem = true;
break;