From 1d4989aa5f37401f41779543f7a9d539d4860356 Mon Sep 17 00:00:00 2001 From: "K. Lange" Date: Sun, 25 Feb 2018 23:05:30 +0900 Subject: [PATCH] Support arg parsing for uname --- uname.c | 58 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/uname.c b/uname.c index c39eb2e5..e33e7fea 100644 --- a/uname.c +++ b/uname.c @@ -48,36 +48,38 @@ int main(int argc, char * argv[]) { int flags = 0; int space = 0; -#if 0 - while ((c = getopt(argc, argv, "ahmnrsv")) != -1) { - switch (c) { - case 'a': - flags |= FLAG_ALL; - break; - case 's': - flags |= FLAG_SYSNAME; - break; - case 'n': - flags |= FLAG_NODENAME; - break; - case 'r': - flags |= FLAG_RELEASE; - break; - case 'v': - flags |= FLAG_VERSION; - break; - case 'm': - flags |= FLAG_MACHINE; - break; - case 'h': - default: - show_usage(argc, argv); - break; + for (int i = 1; i < argc; ++i) { + if (argv[i][0] == '-') { + char *c = &argv[i][1]; + while (*c) { + switch (*c) { + case 'a': + flags |= FLAG_ALL; + break; + case 's': + flags |= FLAG_SYSNAME; + break; + case 'n': + flags |= FLAG_NODENAME; + break; + case 'r': + flags |= FLAG_RELEASE; + break; + case 'v': + flags |= FLAG_VERSION; + break; + case 'm': + flags |= FLAG_MACHINE; + break; + case 'h': + default: + show_usage(argc, argv); + break; + } + c++; + } } } -#else - flags |= FLAG_ALL; -#endif uname(&u);