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>
This commit is contained in:
Lu Chong 2013-11-05 19:49:30 +08:00 committed by Richard Purdie
parent 575dc3be34
commit 25443599ba
1 changed files with 16 additions and 2 deletions

View File

@ -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);