Annotation of researchv10no/ncurses/screen/mkti4.c, revision 1.1

1.1     ! root        1: /*     "mkti4" produces a C file, ti4.c, which contains the            */
        !             2: /*     proper string definitions found in "caps", the source of        */
        !             3: /*     curses structure element definitions.                           */
        !             4: 
        !             5: #include       <stdio.h>
        !             6: 
        !             7: /*     @(#) mkti4.c: 1.1 10/15/83      (1.3    12/16/83)       */
        !             8: 
        !             9: #define                TRUE            1
        !            10: #define                FALSE           0
        !            11: #define                FAILURE         (-1)
        !            12: 
        !            13: #define                CAPS            "caps"
        !            14: 
        !            15: char *part1[] =
        !            16:   {
        !            17:        "/*\n",
        !            18:            " * ti4 [term]\n",
        !            19:            " * dummy program to test termlib.\n",
        !            20:            " * gets entry, counts it, and prints it.\n",
        !            21:            " */\n",
        !            22:            "#include <stdio.h>\n",
        !            23:            "#include \"curses.h\"\n",
        !            24:            "#include \"term.h\"\n",
        !            25:            "\n",
        !            26:            "#define prb(name)\tif (name) printf(\"name\\n\")\n",
        !            27:            "#define prn(name)\tif (name != -1) printf(\"name = %d\\n\", \
        !            28: name)\n",
        !            29:            "#define prs(name)\tif (name) {printf(\"name = '\"); pr(name); \
        !            30: printf(\"'\\n\");}\n",
        !            31:            "\n",
        !            32:            "char buf[1024];\n",
        !            33:            "char *getenv();\n",
        !            34:            "\n",
        !            35:            "main(argc, argv) char **argv; {\n",
        !            36:            "\tchar *p;\n",
        !            37:            "\tint rc;\n",
        !            38:            "\n",
        !            39:            "\tif (argc < 2)\n",
        !            40:            "\t\tp = getenv(\"TERM\");\n",
        !            41:            "\telse\n",
        !            42:            "\t\tp = argv[1];\n",
        !            43:            "\tprintf(\"Terminal type %s\\n\", p);\n",
        !            44:            "\tsetupterm(p,1,0);\n",
        !            45:            "\n",
        !            46:            "\tprintf(\"flags\\n\");\n",
        !            47:            "\n",0
        !            48:   } ;
        !            49: char *part2[] =
        !            50:   {
        !            51:        "\n",
        !            52:            "\tprintf(\"\\nnumbers\\n\");\n",
        !            53:            "\n",0
        !            54:   } ;
        !            55: char *part3[] =
        !            56:   {
        !            57:        "\n",
        !            58:            "\tprintf(\"\\nstrings\\n\");\n",
        !            59:            "\n",0
        !            60:   } ;
        !            61: char *part4[] =
        !            62:   {
        !            63:        "\n",
        !            64:            "\tprintf(\"end of strings\\n\");\n",
        !            65:            "\treset_shell_mode();\n",
        !            66:            "\texit(0);\n",
        !            67:            "}\n",
        !            68:            "\n",
        !            69:            "pr(p)\n",
        !            70:            "register char *p;\n",
        !            71:            "{\n",
        !            72:            "\tchar *rdchar();\n",
        !            73:            "\n",
        !            74:            "\tfor (; *p; p++)\n",
        !            75:            "\t\tprintf(\"%s\", rdchar(*p));\n",
        !            76:            "}\n",
        !            77:            "\n",
        !            78:            "/*\n",
        !            79:            " * rdchar: returns a readable representation of an ASCII char, \
        !            80: using ^ notation.\n",
        !            81:            " */\n",
        !            82:            "#include <ctype.h>\n",
        !            83:            "char *rdchar(c)\n",
        !            84:            "char c;\n",
        !            85:            "{\n",
        !            86:            "\tstatic char ret[4];\n",
        !            87:            "\tregister char *p;\n",
        !            88:            "\n",
        !            89:            "\t/*\n",
        !            90:            "\t * Due to a bug in isprint, this prints spaces as ^`, but \
        !            91: this is OK\n",
        !            92:            "\t * because we want something to show up on the screen.\n",
        !            93:            "\t */\n",
        !            94:            "\tret[0] = ((c&0377) > 0177) ? '\\'' : ' ';\n",
        !            95:            "\tc &= 0177;\n",
        !            96:            "\tret[1] = isprint(c) ? ' ' : '^';\n",
        !            97:            "\tret[2] = isprint(c) ?  c  : c^0100;\n",
        !            98:            "\tret[3] = 0;\n",
        !            99:            "\tfor (p=ret; *p==' '; p++)\n",
        !           100:            "\t\t;\n",
        !           101:            "\treturn (p);\n",
        !           102:            "}\n",
        !           103:            0
        !           104:   } ;
        !           105: 
        !           106: main(argc,argv)
        !           107: 
        !           108: int argc ;
        !           109: char **argv ;
        !           110: 
        !           111:   {
        !           112:        register char **section ;
        !           113:        register char *ptr ;
        !           114:        register int i ;
        !           115:        char line[256],word[120] ;
        !           116:        FILE *fp ;
        !           117: 
        !           118:        if (--argc <= 0) ptr = CAPS ;
        !           119:        else ptr = *++argv ;
        !           120: 
        !           121:        if ((fp = fopen(ptr,"r")) == (FILE*)NULL)
        !           122:          {
        !           123:            perror(ptr) ;
        !           124:            exit(1) ;
        !           125:          }
        !           126: 
        !           127: /*     Print out the first section of the program.                     */
        !           128: 
        !           129:        for (section= &part1[0]; *section ;) fputs(*section++,stdout) ;
        !           130: 
        !           131: /*     Look for "--- begin bool" in "caps" file.                       */
        !           132: 
        !           133:        while (ptr = fgets(&line[0],sizeof(line),fp))
        !           134:          {
        !           135:            if (strncmp(ptr,"--- begin bool",sizeof("--- begin bool")-1)
        !           136:                == 0) break ;
        !           137:          }
        !           138:        if (ptr == (char*)NULL)
        !           139:          {
        !           140:            fprintf(stderr,"Unable to find \"--- begin bool\"\n") ;
        !           141:            exit(1) ;
        !           142:          }
        !           143: 
        !           144:        while (ptr = fgets(&line[0],sizeof(line),fp))
        !           145:          {
        !           146:            if (*ptr == '#') continue ;
        !           147:            if (strncmp(ptr,"--- end bool",sizeof("--- end bool")-1)
        !           148:                == 0) break ;
        !           149: 
        !           150:            if (sscanf(ptr,"%s",&word[0]) == 1)
        !           151:              {
        !           152: /*     Remove the comma after the word.                                */
        !           153: 
        !           154:                word[strlen(&word[0])-1] = '\0' ;
        !           155:                fprintf(stdout,"\t    prb(%s) ;\n",&word[0]) ;
        !           156:              }
        !           157:          }
        !           158:        if (ptr == (char*)NULL)
        !           159:          {
        !           160:            fprintf(stderr,"Premature termination during bools\n") ;
        !           161:            exit(1) ;
        !           162:          }
        !           163: 
        !           164: /*     Print out the second section of the program.                    */
        !           165: 
        !           166:        for (section= &part2[0]; *section ;) fputs(*section++,stdout) ;
        !           167: 
        !           168: /*     Look for "--- begin num" in "caps" file.                        */
        !           169: 
        !           170:        while (ptr = fgets(&line[0],sizeof(line),fp))
        !           171:          {
        !           172:            if (*ptr == '#') continue ;
        !           173:            if (strncmp(ptr,"--- begin num",sizeof("--- begin num")-1)
        !           174:                == 0) break ;
        !           175:          }
        !           176:        if (ptr == (char*)NULL)
        !           177:          {
        !           178:            fprintf(stderr,"Unable to find \"--- begin num\"\n") ;
        !           179:            exit(1) ;
        !           180:          }
        !           181: 
        !           182:        while (ptr = fgets(&line[0],sizeof(line),fp))
        !           183:          {
        !           184:            if (*ptr == '#') continue ;
        !           185:            if (strncmp(ptr,"--- end num",sizeof("--- end num")-1)
        !           186:                == 0) break ;
        !           187: 
        !           188:            if (sscanf(ptr,"%s",&word[0]) == 1)
        !           189:              {
        !           190: /*     Remove the comma after the word.                                */
        !           191: 
        !           192:                word[strlen(&word[0])-1] = '\0' ;
        !           193:                fprintf(stdout,"\t    prn(%s) ;\n",&word[0]) ;
        !           194:              }
        !           195:          }
        !           196:        if (ptr == (char*)NULL)
        !           197:          {
        !           198:            fprintf(stderr,"Premature termination during nums\n") ;
        !           199:            exit(1) ;
        !           200:          }
        !           201: 
        !           202: /*     Print out the third section of the program.                     */
        !           203: 
        !           204:        for (section= &part3[0]; *section ;) fputs(*section++,stdout) ;
        !           205: 
        !           206: /*     Look for "--- begin str" in "caps" file.                        */
        !           207: 
        !           208:        while (ptr = fgets(&line[0],sizeof(line),fp))
        !           209:          {
        !           210:            if (*ptr == '#') continue ;
        !           211:            if (strncmp(ptr,"--- begin str",sizeof("--- begin str")-1)
        !           212:                == 0) break ;
        !           213:          }
        !           214:        if (ptr == (char*)NULL)
        !           215:          {
        !           216:            fprintf(stderr,"Unable to find \"--- begin str\"\n") ;
        !           217:            exit(1) ;
        !           218:          }
        !           219: 
        !           220:        while (ptr = fgets(&line[0],sizeof(line),fp))
        !           221:          {
        !           222:            if (*ptr == '#') continue ;
        !           223:            if (strncmp(ptr,"--- end str",sizeof("--- end str")-1)
        !           224:                == 0) break ;
        !           225: 
        !           226:            if (sscanf(ptr,"%s",&word[0]) == 1)
        !           227:              {
        !           228: /*     Remove the comma after the word.                                */
        !           229: 
        !           230:                word[strlen(&word[0])-1] = '\0' ;
        !           231:                fprintf(stdout,"\t    prs(%s) ;\n",&word[0]) ;
        !           232:              }
        !           233:          }
        !           234:        if (ptr == (char*)NULL)
        !           235:          {
        !           236:            fprintf(stderr,"Premature termination during strs\n") ;
        !           237:            exit(1) ;
        !           238:          }
        !           239: 
        !           240: /*     Print out final section of program.                             */
        !           241: 
        !           242:        for (section= &part4[0]; *section ;) fputs(*section++,stdout) ;
        !           243:        exit(0) ;
        !           244:   }

unix.superglobalmegacorp.com

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