From cb197e459c381591f9cb0a92a0cbd720bdbda5a7 Mon Sep 17 00:00:00 2001 From: zlg Date: Wed, 21 May 2014 05:54:51 -0500 Subject: Refactor flag handling --- ch5/5-16_dir-order.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'ch5/5-16_dir-order.c') diff --git a/ch5/5-16_dir-order.c b/ch5/5-16_dir-order.c index eabf755..7533b3b 100644 --- a/ch5/5-16_dir-order.c +++ b/ch5/5-16_dir-order.c @@ -162,16 +162,26 @@ int main (int argc, char *argv[]) { int nlines; /* number of input lines read */ if (argc > 1) { - int i; - for (i = 1; --argc; i++) { - if (strcmp(argv[i], "-n") == 0) { - numeric = 1; - } else if (strcmp(argv[i], "-r") == 0) { - reverse = 1; - } else if (strcmp(argv[i], "-f") == 0) { - fold = 1; - } else if (strcmp(argv[i], "-d") == 0) { - dir = 1; + int i, j; + for (i = 1, j = 0; --argc; i++) { + if (argv[i][j++] == '-') { + while (argv[i][j] != '\0') { + switch(argv[i][j]) { + case 'n': + numeric = 1; + break; + case 'r': + reverse = 1; + break; + case 'f': + fold = 1; + break; + case 'd': + dir = 1; + break; + } + j++; + } } } } -- cgit v1.2.3-54-g00ecf