Annotation of 43BSD/ucb/tn3270/mset.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     Copyright 1984, 1985 by the Regents of the University of
                      3:  *     California and by Gregory Glenn Minshall.
                      4:  *
                      5:  *     Permission to use, copy, modify, and distribute these
                      6:  *     programs and their documentation for any purpose and
                      7:  *     without fee is hereby granted, provided that this
                      8:  *     copyright and permission appear on all copies and
                      9:  *     supporting documentation, the name of the Regents of
                     10:  *     the University of California not be used in advertising
                     11:  *     or publicity pertaining to distribution of the programs
                     12:  *     without specific prior permission, and notice be given in
                     13:  *     supporting documentation that copying and distribution is
                     14:  *     by permission of the Regents of the University of California
                     15:  *     and by Gregory Glenn Minshall.  Neither the Regents of the
                     16:  *     University of California nor Gregory Glenn Minshall make
                     17:  *     representations about the suitability of this software
                     18:  *     for any purpose.  It is provided "as is" without
                     19:  *     express or implied warranty.
                     20:  */
                     21: 
                     22: 
                     23: /* this program outputs the user's 3270 mapping table in a form suitable
                     24:  *     for inclusion in the environment.  Typically, this might be used
                     25:  *     by:
                     26:  *             setenv MAP3270 "`mset`"
                     27:  */
                     28: 
                     29: #include <curses.h>
                     30: #include "state.h"
                     31: #define LETS_SEE_ASCII
                     32: #include "m4.out"
                     33: 
                     34: static char array[5000];               /* lot's of room */
                     35: 
                     36: char *
                     37: addString(string, character)
                     38: char *string;
                     39: char character;
                     40: {
                     41:     *string++ = character;
                     42:     return(string);
                     43: }
                     44: 
                     45: char *
                     46: deleteString(string)
                     47: char *string;
                     48: {
                     49:     return(string-1);
                     50: }
                     51: 
                     52: printString(string, character, tc)
                     53: register char *string;
                     54: char character;
                     55: int tc;
                     56: {
                     57:     register char *st1;
                     58:     register int pchar;
                     59: 
                     60:     *string++ = character;
                     61:     st1 = array;
                     62: 
                     63:     printf("%s='", TC_Ascii[tc-TC_LOWEST].tc_name);
                     64:     while (st1 != string) {
                     65:        pchar = 0xff&(*st1++);
                     66:        switch (pchar) {
                     67:        case '\\':
                     68:        case '^':
                     69:        case '\'':
                     70:            printf("%c%c", '\\', pchar);
                     71:            break;
                     72:        default:
                     73:            printf("%s", unctrl(pchar));
                     74:            break;
                     75:        }
                     76:     }
                     77:     printf("';");
                     78: }
                     79: 
                     80: recurse(string, head)
                     81: char *string;
                     82: state *head;
                     83: {
                     84:                /*      if there is a left,
                     85:                 *          recurse on left,
                     86:                 *      if there is no down,
                     87:                 *          print the string to here
                     88:                 *      else,
                     89:                 *           add the current match to the string,
                     90:                 *           recurse.
                     91:                 *      exit.
                     92:                 */
                     93:     if (head->next) {
                     94:        recurse(string, head->next);
                     95:     }
                     96:     if (head->result != TC_GOTO) {
                     97:        printString(string, head->match, head->result);
                     98:     } else {
                     99:        string = addString(string, head->match);
                    100:        recurse(string, head->address);
                    101:        string = deleteString(string);
                    102:     }
                    103:     return;
                    104: }
                    105: main()
                    106: {
                    107:     state *head;
                    108:     state *InitControl();
                    109:     char *termPointer;
                    110:     char *getenv();
                    111: 
                    112:     head = InitControl();
                    113:     if (!head) {
                    114:        return(1);
                    115:     }
                    116:     termPointer = getenv("TERM");
                    117:     if (termPointer == 0) {
                    118:        termPointer = "3a";     /* use 3a as the terminal */
                    119:     }
                    120:     printf("%s{", termPointer);
                    121:     /* now, run through the table printing out entries */
                    122:     recurse(array, head);
                    123:     printf("}\n");
                    124:     return(0);
                    125: }

unix.superglobalmegacorp.com

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