Patchwork makedevs: fix return error value when input invalid arguments

login
register
mail settings
Submitter Chong.Lu@windriver.com
Date Nov. 4, 2013, 8:41 a.m.
Message ID <1383554475-20223-1-git-send-email-Chong.Lu@windriver.com>
Download mbox | patch
Permalink /patch/61081/
State New
Headers show

Comments

Chong.Lu@windriver.com - Nov. 4, 2013, 8:41 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             |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
Richard Purdie - Nov. 4, 2013, 11:40 a.m.
On Mon, 2013-11-04 at 16:41 +0800, Chong.Lu@windriver.com wrote:
> From: Lu Chong <Chong.Lu@windriver.com>
> 
> Remove "-q" and "--squash" options of help information.

Why are we removing this?

Cheers,

Richard
Chong.Lu@windriver.com - Nov. 5, 2013, 8:34 a.m.
There is no function to implement "-q" and "--squash" in source 
code(makedevs.c).
I also checked in busybox, but I didn't find the function.
So, may I need to add this function? or remove this options of help 
information.

Best Regards
Chong

On 11/04/2013 07:40 PM, Richard Purdie wrote:
> On Mon, 2013-11-04 at 16:41 +0800, Chong.Lu@windriver.com wrote:
>> From: Lu Chong <Chong.Lu@windriver.com>
>>
>> Remove "-q" and "--squash" options of help information.
> Why are we removing this?
>
> Cheers,
>
> Richard
>
>
>
>
Richard Purdie - Nov. 5, 2013, 8:39 a.m.
On Tue, 2013-11-05 at 16:34 +0800, Lu Chong wrote:
> There is no function to implement "-q" and "--squash" in source 
> code(makedevs.c).
> I also checked in busybox, but I didn't find the function.
> So, may I need to add this function? or remove this options of help 
> information.

I kind of guessed this. These kind of details need to be mentioned in
the commit message. Its not good enough to say what changed, you also
need to say why.

Cheers,

Richard

> Best Regards
> Chong
> 
> On 11/04/2013 07:40 PM, Richard Purdie wrote:
> > On Mon, 2013-11-04 at 16:41 +0800, Chong.Lu@windriver.com wrote:
> >> From: Lu Chong <Chong.Lu@windriver.com>
> >>
> >> Remove "-q" and "--squash" options of help information.
> > Why are we removing this?
> >
> > Cheers,
> >
> > Richard
> >
> >
> >
> >
>

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..96362a5 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";
 
@@ -466,6 +464,11 @@  int main(int argc, char **argv)
 
 	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 +487,9 @@  int main(int argc, char **argv)
 			if (rootdir != default_rootdir) {
 				error_msg_and_die("root directory specified more than once");
 			}
+			if (NULL==opendir(optarg)) {
+				perror_msg_and_die(optarg);
+			}
 			rootdir = xstrdup(optarg);
 			break;
 
@@ -497,6 +503,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);