Patchwork [V2] makedevs: fix return error value when input invalid arguments

login
register
mail settings
Submitter Chong.Lu@windriver.com
Date Nov. 4, 2013, 9:21 a.m.
Message ID <1383556907-25837-1-git-send-email-Chong.Lu@windriver.com>
Download mbox | patch
Permalink /patch/61083/
State New
Headers show

Comments

Chong.Lu@windriver.com - Nov. 4, 2013, 9:21 a.m.
From: Lu Chong <Chong.Lu@windriver.com>

Remove "-q" and "--squash" options of help information.
Print help information and return non-zero value when makedevs has none option.
If rootdir is not exist, there would be print error messages.

Signed-off-by: Lu Chong <Chong.Lu@windriver.com>
---
 .../makedevs/makedevs-1.0.0/makedevs.c             |   18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

Patch

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 53700c6..003d4c3 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);