summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLu Chong <Chong.Lu@windriver.com>2013-11-05 19:49:30 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-11-08 17:25:34 +0000
commit25443599ba615ca6f61fe30650b300ef6c898d82 (patch)
tree8ace026ab3ab5881ab364ffc094ba69daaca2655
parent575dc3be347f3047d1012c273deb8fd5365f38ae (diff)
downloadopenembedded-core-contrib-25443599ba615ca6f61fe30650b300ef6c898d82.tar.gz
makedevs: several fixes
This patch fixes below issues: 1. In makedevs.c file, it lost related functions definition about "-q" and "--squash" options. So we should remove help information of these options from makedevs.c to fix this issue. 2. Previously, It returned nothing when makedevs command be executed with none or invalid option. We hope to print help information and return non-zero value. 3. If use '-d' option to pick non-existent dir, error messages should be returned. (From OE-Core rev: 24089364c3d11665c9ac3210c1fa2488017b6b73) Signed-off-by: Lu Chong <Chong.Lu@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
index 53700c687f..003d4c3fa4 100644
--- a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
+++ b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
@@ -434,7 +434,6 @@ static int parse_devtable(FILE * devtable)
static struct option long_options[] = {
{"root", 1, NULL, 'r'},
{"help", 0, NULL, 'h'},
- {"squash", 0, NULL, 'q'},
{"version", 0, NULL, 'v'},
{"devtable", 1, NULL, 'D'},
{NULL, 0, NULL, 0}
@@ -446,7 +445,6 @@ static char *helptext =
"Options:\n"
" -r, -d, --root=DIR Build filesystem from directory DIR (default: cwd)\n"
" -D, --devtable=FILE Use the named FILE as a device table file\n"
- " -q, --squash Squash permissions and owners making all files be owned by root\n"
" -h, --help Display this help text\n"
" -v, --version Display version information\n\n";
@@ -463,9 +461,15 @@ int main(int argc, char **argv)
FILE *passwd_file = NULL;
FILE *group_file = NULL;
FILE *devtable = NULL;
+ DIR *dir = NULL;
umask (0);
+ if (argc==1) {
+ fprintf(stderr, helptext);
+ exit(1);
+ }
+
while ((opt = getopt_long(argc, argv, "D:d:r:qhv",
long_options, &c)) >= 0) {
switch (opt) {
@@ -484,6 +488,11 @@ int main(int argc, char **argv)
if (rootdir != default_rootdir) {
error_msg_and_die("root directory specified more than once");
}
+ if ((dir = opendir(optarg)) == NULL) {
+ perror_msg_and_die(optarg);
+ } else {
+ closedir(dir);
+ }
rootdir = xstrdup(optarg);
break;
@@ -497,6 +506,11 @@ int main(int argc, char **argv)
}
}
+ if (argv[optind] != NULL) {
+ fprintf(stderr, helptext);
+ exit(1);
+ }
+
// Get name-id mapping
sprintf(passwd_path, "%s/etc/passwd", rootdir);
sprintf(group_path, "%s/etc/group", rootdir);