From: Paul Eggert Date: Sun, 19 Sep 2004 00:58:47 +0000 (+0000) Subject: (main): Reject unknown options instead of X-Git-Tag: COREUTILS-5_3_0~682 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f5c2a84158f3a50303a77e91d4940ff9880117f;p=platform%2Fupstream%2Fcoreutils.git (main): Reject unknown options instead of interpreting them as a directory to chroot to. --- diff --git a/src/chroot.c b/src/chroot.c index 37e749c..565e269 100644 --- a/src/chroot.c +++ b/src/chroot.c @@ -76,27 +76,22 @@ main (int argc, char **argv) parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION, usage, AUTHORS, (char const *) NULL); - /* The above handles --help and --version. - Since there is no other invocation of getopt, handle `--' here. */ - if (1 < argc && STREQ (argv[1], "--")) - { - --argc; - ++argv; - } + if (getopt_long (argc, argv, "", NULL, NULL) != -1) + usage (EXIT_FAILURE); - if (argc <= 1) + if (argc <= optind) { error (0, 0, _("missing operand")); usage (EXIT_FAIL); } - if (chroot (argv[1])) + if (chroot (argv[optind]) != 0) error (EXIT_FAIL, errno, _("cannot change root directory to %s"), argv[1]); if (chdir ("/")) error (EXIT_FAIL, errno, _("cannot chdir to root directory")); - if (argc == 2) + if (argc == optind + 1) { /* No command. Run an interactive shell. */ char *shell = getenv ("SHELL"); @@ -104,11 +99,12 @@ main (int argc, char **argv) shell = "/bin/sh"; argv[0] = shell; argv[1] = "-i"; + argv[2] = NULL; } else { /* The following arguments give the command. */ - argv += 2; + argv += optind + 1; } /* Execute the given command. */