Annotation of coherent/d/bin/uucheck/uucheckname/interact.c, revision 1.1

1.1     ! root        1: /* interact.c -- routines for interacting with the user.
        !             2:  * part of uucheckname.
        !             3:  */
        !             4: #include "uucheck.h"
        !             5: #include "uucheckname.h"
        !             6: 
        !             7: /* Get a yes or no from the user.  Reprompt as necessary, give up after
        !             8:  * PATIENCE number of tries.
        !             9:  * Understands a wide variety of variations.
        !            10:  * Returns TRUE on yes, FALSE on no.
        !            11:  */
        !            12: #define PATIENCE 10
        !            13: 
        !            14: boolean
        !            15: get_yes_or_no()
        !            16: {
        !            17:        boolean have_answer = FALSE;
        !            18:        boolean answer;
        !            19:        unsigned int give_up_count = 0;
        !            20:        
        !            21:        while (!have_answer && give_up_count < PATIENCE) {
        !            22:                gets(bigbuf);
        !            23: 
        !            24:                if (lookup(bigbuf, yes_table) != NULL) {
        !            25:                        answer = TRUE;
        !            26:                        have_answer = TRUE;
        !            27:                } else if (lookup(bigbuf, no_table) != NULL) {
        !            28:                        answer = FALSE;
        !            29:                        have_answer = TRUE;
        !            30:                } /* if lookup bigbuf in yes_table, else no_table */
        !            31: 
        !            32:                /* If we still don't have a valid answer, prompt for one.  */
        !            33:                if (!have_answer && ++give_up_count < PATIENCE) {
        !            34:                        printf("Please enter y or n:  ");
        !            35:                } /* if (!have_answer) */
        !            36: 
        !            37:        } /* while (!have_answer) */
        !            38: 
        !            39:        if (!have_answer) {
        !            40:                printf("PATIENCE exceeded; assuming \"no\" :-(.\n");
        !            41:                answer = FALSE;
        !            42:        } /* if (!have_answer) */
        !            43: 
        !            44:        return(answer);
        !            45: } /* get_yes_or_no() */
        !            46: 
        !            47: void
        !            48: recreate_uucpname()
        !            49: {
        !            50:        FILE *fp;
        !            51: 
        !            52:        MESSAGE("Recreating uucpname.\n");
        !            53:        printf("Please enter a new uucpname:  ");
        !            54:        gets(bigbuf);
        !            55:        /* Open /etc/uucpname and write out the new name.  */
        !            56:        if ((fp = fopen(NAMEFILE, "w")) == (FILE *) NULL) {
        !            57:                /* Remember, we should be root here.  */
        !            58:                FATAL("How strange!  I can't open %s for writing!\n", NAMEFILE);
        !            59:        } /* If can not open NAMEFILE.  */
        !            60:        strcat(bigbuf, "\n");
        !            61:        fputs(bigbuf, fp);
        !            62:        fclose(fp);
        !            63:        /* Now re-check that name.  */
        !            64:        error = FALSE;
        !            65:        warning = FALSE;
        !            66:        uucheckname();
        !            67: } /* recreate_uucpname() */

unix.superglobalmegacorp.com

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