Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bdsh/cmds/modules/cat/cat.c

    r0845589 ra33706e  
    6363static bool should_quit = false;
    6464static bool dash_represents_stdin = false;
    65 static unsigned int lineno = 0;
    66 static bool number = false;
    67 static bool last_char_was_newline = false;
    6865
    6966static console_ctrl_t *console = NULL;
     
    7875        { "hex", no_argument, 0, 'x' },
    7976        { "stdin", no_argument, 0, 's' },
    80         { "number", no_argument, 0, 'n' },
    8177        { 0, 0, 0, 0 }
    8278};
     
    9995                "  -m, --more       Pause after each screen full\n"
    10096                "  -x, --hex        Print bytes as hex values\n"
    101                 "  -s, --stdin      Treat `-' in file list as standard input\n"
    102                 "  -n, --number     Number all output lines\n"
     97                "  -s  --stdin      Treat `-' in file list as standard input\n"
    10398                "Currently, %s is under development, some options don't work.\n",
    10499                cmdname, cmdname);
     
    122117static void waitkey()
    123118{
    124         cons_event_t ev;
    125         kbd_event_t *kev;
     119        kbd_event_t ev;
    126120       
    127121        while (true) {
    128                 if (!console_get_event(console, &ev)) {
     122                if (!console_get_kbd_event(console, &ev)) {
    129123                        return;
    130124                }
    131                 if (ev.type == CEV_KEY && ev.ev.key.type == KEY_PRESS) {
    132                         kev = &ev.ev.key;
    133                        
    134                         if (kev->key == KC_ESCAPE || kev->key == KC_Q) {
     125                if (ev.type == KEY_PRESS) {
     126                        if (ev.key == KC_ESCAPE || ev.key == KC_Q) {
    135127                                should_quit = true;
    136128                                return;
    137129                        }
    138                         if (kev->key == KC_C) {
     130                        if (ev.key == KC_C) {
    139131                                paging_enabled = false;
    140132                                return;
    141133                        }
    142                         if (kev->key == KC_ENTER || kev->key == KC_SPACE ||
    143                             kev->key == KC_PAGE_DOWN) {
     134                        if (ev.key == KC_ENTER || ev.key == KC_SPACE ||
     135                            ev.key == KC_PAGE_DOWN) {
    144136                                return;
    145137                        }
     
    158150static void paged_char(wchar_t c)
    159151{
    160         if (last_char_was_newline && number) {
    161                 lineno++;
    162                 printf("%6u  ", lineno);
    163         }
    164152        putchar(c);
    165         last_char_was_newline = c == '\n';
    166153        if (paging_enabled) {
    167154                chars_remaining--;
     
    189176
    190177        bool reading_stdin = dash_represents_stdin && (str_cmp(fname, "-") == 0);
    191        
     178
    192179        if (reading_stdin) {
    193180                fd = fileno(stdin);
    194181                /* Allow storing the whole UTF-8 character. */
    195182                blen = STR_BOUNDS(1);
    196         } else
     183        } else {
    197184                fd = open(fname, O_RDONLY);
    198        
     185        }
    199186        if (fd < 0) {
    200187                printf("Unable to open %s\n", fname);
     
    235222                        bytes_to_read = 1;
    236223                } else {
    237                         if ((length != CAT_FULL_FILE) &&
    238                             (length - (off64_t)count <= (off64_t)(blen - copied_bytes))) {
     224                        if ((length != CAT_FULL_FILE)
     225                            && (length - (off64_t)count <= (off64_t)(blen - copied_bytes))) {
    239226                                bytes_to_read = (size_t) (length - count);
    240227                        } else {
     
    242229                        }
    243230                }
    244                
    245231                bytes = read(fd, buff + copied_bytes, bytes_to_read);
    246232                bytes += copied_bytes;
     
    275261                        reads++;
    276262                }
    277                
    278                 if (reading_stdin)
     263
     264                if (reading_stdin) {
    279265                        fflush(stdout);
     266                }
    280267        } while (bytes > 0 && !should_quit && (count < length || length == CAT_FULL_FILE));
    281268
     
    316303        should_quit = false;
    317304        console = console_init(stdin, stdout);
    318         number = false;
    319         lineno = 0;
    320         /* This enables printing of the first number. */
    321         last_char_was_newline = true;
    322 
    323305
    324306        argc = cli_count_args(argv);
    325307
    326308        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    327                 c = getopt_long(argc, argv, "xhvmH:t:b:s:n", long_options, &opt_ind);
     309                c = getopt_long(argc, argv, "xhvmH:t:b:s", long_options, &opt_ind);
    328310                switch (c) {
    329311                case 'h':
     
    362344                        dash_represents_stdin = true;
    363345                        break;
    364                 case 'n':
    365                         number = true;
    366                         break;
    367346                }
    368347        }
Note: See TracChangeset for help on using the changeset viewer.