Annotation of researchv9/cmd/echo.c, revision 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.