Annotation of researchv9/cmd/echo.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: 
                      3: main(argc, argv)
                      4: char **argv;
                      5: {
                      6:        register char   *cp;
                      7:        register int    i, wd;
                      8:        int     j;
                      9:        int nflg = 0;
                     10:        int escflg = 0;
                     11: 
                     12:        while (argc > 1) {
                     13:                if (strcmp(argv[1], "-n")==0) {
                     14:                        nflg++;
                     15:                        argc--;
                     16:                        argv++;
                     17:                } else if (strcmp(argv[1], "-e")==0) {
                     18:                        escflg++;
                     19:                        argc--;
                     20:                        argv++;
                     21:                } else if (strcmp(argv[1], "-ne")==0 ||
                     22:                           strcmp(argv[1], "-en")==0) {
                     23:                        escflg++;
                     24:                        nflg++;
                     25:                        argc--;
                     26:                        argv++;
                     27:                        break;
                     28:                } else
                     29:                        break;
                     30:        }
                     31:        for (i = 1; i < argc; i++) {
                     32:                for (cp = argv[i]; *cp; cp++) {
                     33:                        if (*cp == '\\' && escflg)
                     34:                        switch (*++cp) {
                     35:                                case 'b':
                     36:                                        putchar('\b');
                     37:                                        continue;
                     38: 
                     39:                                case 'c':
                     40:                                        return 0;
                     41: 
                     42:                                case 'f':
                     43:                                        putchar('\f');
                     44:                                        continue;
                     45: 
                     46:                                case 'n':
                     47:                                        putchar('\n');
                     48:                                        continue;
                     49: 
                     50:                                case 'r':
                     51:                                        putchar('\r');
                     52:                                        continue;
                     53: 
                     54:                                case 't':
                     55:                                        putchar('\t');
                     56:                                        continue;
                     57: 
                     58:                                case '\\':
                     59:                                        putchar('\\');
                     60:                                        continue;
                     61: 
                     62:                                case '0': case '1': case '2': case '3':
                     63:                                case '4': case '5': case '6': case '7':
                     64:                                        wd = *cp&07;
                     65:                                        j = 0;
                     66:                                        while (*++cp>='0' && *cp<='7' && ++j<3){
                     67:                                                wd <<= 3;
                     68:                                                wd |= (*cp - '0');
                     69:                                        }
                     70:                                        putchar(wd);
                     71:                                        --cp;
                     72:                                        continue;
                     73: 
                     74:                                default:
                     75:                                        cp--;
                     76:                        }
                     77:                        putchar(*cp);
                     78:                }
                     79:                if (i < argc-1)
                     80:                        putchar(' ');
                     81:        }
                     82:        if (!nflg)
                     83:                putchar('\n');
                     84:        return 0;
                     85: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.