From ba5ede08e424d1a0b6f902752ccd6d9e0f75862f Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 20 Oct 2009 19:52:21 +0000 Subject: [PATCH] Using getopt() for coherence with the other tools --- src/basename.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/basename.c b/src/basename.c index 030e753..f29208d 100644 --- a/src/basename.c +++ b/src/basename.c @@ -16,8 +16,9 @@ -#include +#include #include +#include #include @@ -36,7 +37,7 @@ static int _basename(char * arg, char const * suf) if(alen < slen && strcmp(suf, &str[slen - alen]) == 0) str[slen - alen] = '\0'; } - printf("%s\n", str); + puts(str); return 0; } @@ -52,9 +53,15 @@ static int _usage(void) /* main */ int main(int argc, char * argv[]) { - if(argc == 2) - return _basename(argv[1], NULL); - if(argc == 3) - return _basename(argv[1], argv[2]); - return _usage(); + int o; + + while((o = getopt(argc, argv, "")) != -1) + switch(o) + { + default: + return _usage(); + } + if(optind != argc - 1 && optind != argc - 2) + return _usage(); + return (_basename(argv[optind], argv[optind + 1]) == 0) ? 0 : 2; }