From 40b8855cda3104e67440fd169eb59d2a5f663547 Mon Sep 17 00:00:00 2001 From: Gitea Date: Sun, 13 Dec 2020 09:25:50 -0600 Subject: [PATCH] formatting changes, using getopt() now --- cat.c | 55 ++++++++++++++++++++----------------------------------- 1 file changed, 20 insertions(+), 35 deletions(-) diff --git a/cat.c b/cat.c index 18939ec..118af26 100755 --- a/cat.c +++ b/cat.c @@ -5,67 +5,52 @@ #include int main(int argc, char *argv[]) { - FILE * current_input_file; + FILE * cur_in_file; int i; char c; int using_unbuffered_output; int error_occurred; - for(i = 1; i < argc; i++) { - if(argv[i][0] == '-') { - if(argv[i][1] == 'u') { - using_unbuffered_output = 1; - i = argc; - } + while((c = getopt(argc, argv, "u")) != -1) { + if(c == 'u') { + using_unbuffered_output = 1; } } - if(argc == 1) { - current_input_file = stdin; - for(c = fgetc(current_input_file); c != EOF; - c = fgetc(current_input_file)) { + if(argc == 1 || optind == argc) { + cur_in_file = stdin; + for(c = fgetc(cur_in_file); c != EOF; c = fgetc(cur_in_file)) { if(using_unbuffered_output) { - write(1, &c, 1); + write(1, &c, 1); } else { - fprintf(stdout, "%c", c); + fprintf(stdout, "%c", c); } } - fclose(current_input_file); + fclose(cur_in_file); } - for(i = 1; i < argc; i++) { + for(i = optind; i < argc; i++) { if(argv[i][0] == '-' && argv[i][1] == '\0') { - current_input_file = stdin; - } - else if(argv[i][0] == '-' && argv[i][1] == 'u' && - argv[i][2] == '\0') { - if(argc > 2) { - continue; - } - else { - current_input_file = stdin; - } + cur_in_file = stdin; } else { - current_input_file = fopen(argv[i], "r"); - if(current_input_file == NULL) { - fprintf(stderr, "%s: %s: No such file or directory\n", - argv[0], argv[i]); - error_occurred = 1; + cur_in_file = fopen(argv[i], "r"); + if(cur_in_file == NULL) { + fprintf(stderr, "%s: %s: No such file or directory\n", argv[0], argv[i]); + error_occurred = 1; } } - for(c = fgetc(current_input_file); c != EOF; - c = fgetc(current_input_file)) { + for(c = fgetc(cur_in_file); c != EOF; c = fgetc(cur_in_file)) { if(using_unbuffered_output) { - write(1, &c, 1); + write(1, &c, 1); } else { - fprintf(stdout, "%c", c); + fprintf(stdout, "%c", c); } } - fclose(current_input_file); + fclose(cur_in_file); } if(error_occurred) {