aboutsummaryrefslogtreecommitdiff
path: root/ubifs-utils
diff options
context:
space:
mode:
Diffstat (limited to 'ubifs-utils')
-rw-r--r--ubifs-utils/common/ubifs.h2
-rw-r--r--ubifs-utils/mkfs.ubifs/mkfs.ubifs.c29
2 files changed, 16 insertions, 15 deletions
diff --git a/ubifs-utils/common/ubifs.h b/ubifs-utils/common/ubifs.h
index 58aaba9..502a39a 100644
--- a/ubifs-utils/common/ubifs.h
+++ b/ubifs-utils/common/ubifs.h
@@ -277,6 +277,7 @@ struct ubifs_znode
* 2 - files, 3 - more details
* @program_type: used to identify the type of current program
* @program_name: program name
+ * @dev_name: device name
*
* @jhead_cnt: count of journal heads
* @max_bud_bytes: maximum number of bytes allowed in buds
@@ -368,6 +369,7 @@ struct ubifs_info
int debug_level;
int program_type;
const char *program_name;
+ char *dev_name;
int jhead_cnt;
long long max_bud_bytes;
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
index f66c6a4..1cafbf3 100644
--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
+++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
@@ -145,7 +145,6 @@ static char *root;
static int root_len;
static struct fscrypt_context *root_fctx;
static struct stat root_st;
-static char *output;
static int out_fd;
static int out_ubi;
static int squash_owner;
@@ -407,10 +406,10 @@ static int validate_options(void)
{
int tmp;
- if (!output)
+ if (!c->dev_name)
return errmsg("no output file or UBI volume specified");
if (root) {
- tmp = is_contained(output, root);
+ tmp = is_contained(c->dev_name, root);
if (tmp < 0)
return errmsg("failed to perform output file root check");
else if (tmp)
@@ -641,7 +640,7 @@ static int get_options(int argc, char**argv)
return errmsg("bad maximum LEB count");
break;
case 'o':
- output = xstrdup(optarg);
+ c->dev_name = xstrdup(optarg);
break;
case 'D':
tbl_file = optarg;
@@ -835,13 +834,13 @@ static int get_options(int argc, char**argv)
}
}
- if (optind != argc && !output)
- output = xstrdup(argv[optind]);
+ if (optind != argc && !c->dev_name)
+ c->dev_name = xstrdup(argv[optind]);
- if (!output)
+ if (!c->dev_name)
return errmsg("not output device or file specified");
- out_ubi = !open_ubi(output);
+ out_ubi = !open_ubi(c->dev_name);
if (out_ubi) {
c->min_io_size = c->di.min_io_size;
@@ -921,7 +920,7 @@ static int get_options(int argc, char**argv)
printf("\tmin_io_size: %d\n", c->min_io_size);
printf("\tleb_size: %d\n", c->leb_size);
printf("\tmax_leb_cnt: %d\n", c->max_leb_cnt);
- printf("\toutput: %s\n", output);
+ printf("\toutput: %s\n", c->dev_name);
printf("\tjrn_size: %llu\n", c->max_bud_bytes);
printf("\treserved: %llu\n", c->rp_size);
switch (c->default_compr) {
@@ -2855,11 +2854,11 @@ static int check_volume_empty(void)
static int open_target(void)
{
if (out_ubi) {
- out_fd = open(output, O_RDWR | O_EXCL);
+ out_fd = open(c->dev_name, O_RDWR | O_EXCL);
if (out_fd == -1)
return sys_errmsg("cannot open the UBI volume '%s'",
- output);
+ c->dev_name);
if (ubi_set_property(out_fd, UBI_VOL_PROP_DIRECT_WRITE, 1)) {
close(out_fd);
return sys_errmsg("ubi_set_property(set direct_write) failed");
@@ -2872,11 +2871,11 @@ static int open_target(void)
}
}
} else {
- out_fd = open(output, O_CREAT | O_RDWR | O_TRUNC,
+ out_fd = open(c->dev_name, O_CREAT | O_RDWR | O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
if (out_fd == -1)
return sys_errmsg("cannot create output file '%s'",
- output);
+ c->dev_name);
}
return 0;
}
@@ -2896,7 +2895,7 @@ static int close_target(void)
if (ubi && ubi_set_property(out_fd, UBI_VOL_PROP_DIRECT_WRITE, 0))
return sys_errmsg("ubi_set_property(clear direct_write) failed");
if (close(out_fd) == -1)
- return sys_errmsg("cannot close the target '%s'", output);
+ return sys_errmsg("cannot close the target '%s'", c->dev_name);
}
return 0;
}
@@ -3094,7 +3093,7 @@ int main(int argc, char *argv[])
printf("Success!\n");
out:
- free(output);
+ free(c->dev_name);
close_ubi();
crypto_cleanup();
return err;