Annotation of coherent/g/usr/lib/uucp/uuinstall/main.c, revision 1.1.1.1

1.1       root        1: 
                      2: #include "uuinstall.h"
                      3: 
                      4: main()
                      5: {
                      6:        char choice;
                      7:        int position;                   /* position of entry within file,
                      8:                                         * returned by get_entry.
                      9:                                         */
                     10: 
                     11:        umask(0177);
                     12:        init_curses();                  /* initialize our curses stuff */
                     13: 
                     14: 
                     15:        do{
                     16:                dialflag = 0;           /* set our flags to a default condition */
                     17:                sysflag = 0;
                     18:                portflag = 0;
                     19: 
                     20:                prevrow = 0;            /* set up our coordinates to highlite */
                     21:                prevcol = 1;            /* an entry */
                     22:                newrow = 0;
                     23:                newcol = 1;
                     24: 
                     25:                open_menu();            /* print our opening (main) menu */
                     26: 
                     27:                choice = get_main_opt();   /* get user's choice of file to
                     28:                                            * work with or possibly exit.
                     29:                                            */
                     30: 
                     31: /* Here's the scoop: Now that we have a file to work with, we need to find
                     32:  * out what to do with it... modify, add, delete or view and entry. We call
                     33:  * get_action() to determine this. get_action() will return a -1 if we're not
                     34:  * going to do anything. If we're going to view, delete or edit a file, we
                     35:  * call open_config() file to open the proper file and set up our selection
                     36:  * screen, then we  call get_entry to get the entry number in the file we
                     37:  * will work with. If we don't select an entry with get_entry(), a -1 is
                     38:  * returned, else we display the record.
                     39: 
                     40:  * display_rec() does more than just display a record. From there, we delete
                     41:  * an entry or modify and entry.
                     42:  */
                     43:                switch(choice){
                     44:                        case 'd':       dialflag = 1;   /* work with dial file */
                     45:                                        action = get_action();
                     46:                                        if ((action != 'a') && (action != -1)){
                     47:                                                open_config_file();
                     48:                                                position = get_entry();
                     49:                                                if (position != -1)
                     50:                                                        display_rec(position,action);
                     51:                                        }
                     52:                                        if(action == 'a')
                     53:                                                add_dial();
                     54:                                        break;  
                     55: 
                     56:                        case 'p':       portflag = 1;   /* work with port file */
                     57:                                        action = get_action();
                     58:                                        if ((action != 'a') && (action != -1)){
                     59:                                                open_config_file();
                     60:                                                position = get_entry();
                     61:                                                if (position != -1);
                     62:                                                        display_rec(position,action);
                     63:                                        }
                     64:                                        if(action == 'a')
                     65:                                                add_port();
                     66:                                        break;
                     67: 
                     68:                        case 's':       sysflag = 1;    /* work with sys file */
                     69:                                        action = get_action();
                     70:                                        if ((action != 'a') && (action != -1)){
                     71:                                                open_config_file();
                     72:                                                position = get_entry();
                     73:                                                if(position != -1)
                     74:                                                        display_rec(position,action);
                     75:                                        }
                     76:                                        if (action == 'a')
                     77:                                                add_sys();
                     78:                                        break;
                     79: 
                     80:                        case 'q':       exit_program(0);
                     81:                                        /* NOT REACHED */
                     82:                }
                     83:                choice = '\0';
                     84:                action = '\0';
                     85:                wclear(selwin);
                     86:                wclear(promptwin);
                     87:                wrefresh(selwin);
                     88:                wrefresh(promptwin);
                     89:        }
                     90:        while (choice != 'q');
                     91: }
                     92: 
                     93: 
                     94: /* initialize curses stuff: allocate new windows, set up stdscr */
                     95: 
                     96: init_curses()
                     97: {
                     98: 
                     99:        /* This is the window that will be used to display and highlight
                    100:         * file entry selections.
                    101:         */
                    102:        if ((selwin = newwin(20, 80, 0 ,0)) == NULL)
                    103:                fatal("Failed to allocate selection window.");
                    104: 
                    105:        /* this window will be used to display prompts and some help info */
                    106:        if((promptwin = newwin(4, 40, 20, 0)) == NULL)
                    107:                fatal("Failed to allocate prompt window.");
                    108: 
                    109:        /* this window will do the data entry and display work as well as
                    110:         * some prompting and help functions.
                    111:         */
                    112:        if((portwin = newwin(24, 80, 0, 0)) == NULL)
                    113:                fatal("Failed to allocate prompt window.");
                    114: 
                    115: 
                    116:        initscr();
                    117:        raw();
                    118:        noecho();
                    119: 
                    120:        if(!has_colors()){
                    121:                use_colors = 0;
                    122: 
                    123:        }else{
                    124:                use_colors = 1;
                    125:                start_color();
                    126:                init_pair(1,COLOR_BLUE, COLOR_WHITE);
                    127:                wattron(stdscr,COLOR_PAIR(1));
                    128:        }
                    129: 
                    130:        clear();
                    131:        refresh();
                    132: }
                    133: 
                    134: 
                    135: /* exit_program: resets curses stuff and exits program. */
                    136: 
                    137: exit_program(stat)
                    138: int stat;              /* exit status passed by calling function */
                    139: {
                    140:        clear();
                    141:        refresh();
                    142:        echo();
                    143:        noraw();
                    144:        exit(stat);
                    145: }
                    146: 
                    147: /* open_menu() prints our opening screen where we display the name of
                    148:  * the system we happen to be and prompt to examine the port, sys or
                    149:  * dial files.
                    150:  */
                    151: 
                    152: open_menu()
                    153: {
                    154: 
                    155:        move(3,25);
                    156: 
                    157:        if(use_colors){
                    158:                init_pair(1,COLOR_WHITE, COLOR_RED);
                    159:        }else{
                    160:                standout(); 
                    161:        }
                    162: 
                    163:        printw("UUCP Configuration: Main menu");
                    164: 
                    165:        if(use_colors) 
                    166:                init_pair(1,COLOR_BLUE, COLOR_WHITE); 
                    167:        else
                    168:                standend();
                    169: 
                    170:        move(SYSLINE,5);
                    171:        printw("<s>ys file              Configuration information for specific systems");
                    172:        move(PORTLINE,5);
                    173:        printw("<p>ort file     Information for individual ports");
                    174:        move(DIALLINE,5);
                    175:        printw("<d>ial file     Configuration information for dialing modems");
                    176:        
                    177: 
                    178:        move(20,5);
                    179:        printw("Press the letter corresponding to the file you wish to examine");
                    180:        move(21,27);
                    181:        printw("or <q> to quit.");
                    182:        refresh();
                    183: }
                    184: 
                    185: 
                    186: /* get_main_opt():     Gets the user's choice of which file to process,
                    187:  *                     which is one of the uucp config files or to exit.
                    188:  */
                    189: 
                    190: get_main_opt()
                    191: {
                    192: 
                    193:        char ch;
                    194: 
                    195:        ch = ' ';
                    196: 
                    197:        while( (ch != 'q') && (ch != 'p') && (ch != 's') && (ch != 'd')){
                    198:                ch = getch();
                    199:        }
                    200: 
                    201:        return (ch);
                    202: }
                    203:                
                    204: 
                    205: /* get_action(): The user will have selected a configuration file to work
                    206:  *             with by this time. This will prompt the user to perform
                    207:  *             one of the following functions: ADD an entry, REMOVE an
                    208:  *             existing entry or MODIFY an existing entry.
                    209:  */
                    210: 
                    211: get_action()
                    212: {
                    213:        char ch;
                    214:        char file[5];
                    215:        clear();
                    216: 
                    217:        move(1,34);
                    218:        standout();
                    219:        printw("Action menu");
                    220:        standend();
                    221: 
                    222:        move(5,17);
                    223: 
                    224:        /* determine which file we are working with from the flag(s) set and
                    225:         * print a small message to reflect this as a cue to the user.
                    226:         */
                    227: 
                    228:        if(dialflag)
                    229:                strcpy(file,"dial");
                    230:        if(sysflag)
                    231:                strcpy(file,"sys");
                    232:        if(portflag)
                    233:                strcpy(file, "port");
                    234: 
                    235:        printw("You have selected to work with the %s file.",file);
                    236:        move(7,17);
                    237:        printw("Do you wish to:");
                    238:        move(8,32);
                    239:        printw("<a>dd an entry");
                    240:        move(9,32);
                    241:        printw("<d>elete an existing entry");
                    242:        move(10,32);
                    243:        printw("<m>odify an existing entry");
                    244:        move(11,32);
                    245:        printw("<v>iew an existing entry");
                    246: 
                    247:        move(15,12);
                    248:        printw("Press the letter corresponding to the action you wish to");
                    249:        move(16,18);
                    250:        printw("perform or press <RETURN> for the main menu.");
                    251: 
                    252:        refresh();
                    253: 
                    254:        do{
                    255:                ch = getch();
                    256:        }
                    257:        while( (ch!='\n') && (ch!='a') && (ch!='d') && (ch!='m') && (ch!='v'));
                    258:        clear();
                    259:        refresh();
                    260: 
                    261:        if (ch == '\n')
                    262:                ch = -1;
                    263: 
                    264:        return (ch);
                    265: }

unix.superglobalmegacorp.com

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