Annotation of researchv10no/games/trek/getpar.c, revision 1.1

1.1     ! root        1: # include      "trek.h"
        !             2: # define       ECHO 010
        !             3: 
        !             4: /**
        !             5:  **    get integer parameter
        !             6:  **/
        !             7: 
        !             8: char           eof;
        !             9: 
        !            10: getintpar(s, n)
        !            11: char   *s;
        !            12: int    *n;
        !            13: {
        !            14:        register int            i;
        !            15: 
        !            16:        for ever {
        !            17:                while ((eof|mkfault)==0 && lineended() && s) {
        !            18:                        printf("%s: %n", s);
        !            19:                        newline();
        !            20:                }
        !            21:                if((i=readint(n)) < 0)
        !            22:                        return(0);
        !            23:                if(i>0)
        !            24:                        return(1);
        !            25:                printf("? ");
        !            26:                flushin();
        !            27:        }
        !            28: }
        !            29: 
        !            30: /**
        !            31:  **    get floating parameter
        !            32:  **/
        !            33: 
        !            34: getfltpar(s, f)
        !            35: char   *s;
        !            36: float  *f;
        !            37: {
        !            38:        register int            i;
        !            39: 
        !            40:        for ever {
        !            41:                while ((eof|mkfault)==0 && lineended() && s) {
        !            42:                        printf("%s: %n", s);
        !            43:                        newline();
        !            44:                }
        !            45:                if((i=readreal(f)) < 0)
        !            46:                        return(0);
        !            47:                if(i>0)
        !            48:                        return(1);
        !            49:                printf("? ");
        !            50:                flushin();
        !            51:        }
        !            52: }
        !            53: 
        !            54: /**
        !            55:  **    get yes/no parameter
        !            56:  **/
        !            57: 
        !            58: CVNTAB Yntab[]
        !            59: {
        !            60:        "n",    "o",
        !            61:        "y",    "es",
        !            62:        0
        !            63: };
        !            64: 
        !            65: getynpar(s)
        !            66: char   *s;
        !            67: {
        !            68:        return(getcodpar(s, Yntab));
        !            69: }
        !            70: 
        !            71: 
        !            72: /**
        !            73:  **    get coded parameter
        !            74:  **/
        !            75: 
        !            76: getcodpar(s, tab)
        !            77: char   *s;
        !            78: CVNTAB tab[];
        !            79: {
        !            80:        char                    input[100];
        !            81:        register CVNTAB         *r;
        !            82:        register char           *p, *q;
        !            83:        int                     c;
        !            84: 
        !            85:        for ever {
        !            86:                while ((eof|mkfault)==0 && lineended() && s) {
        !            87:                        printf("%s: %n", s);
        !            88:                        newline();
        !            89:                }
        !            90:                if((c=reads(" \t\n0123456789-./;", input)) < 0)
        !            91:                        return(-1);
        !            92:                if (c) {
        !            93:                        if (*input == '?') {
        !            94:                                for(r=tab; r->abrev; r++)
        !            95:                                        printf("\t%s-%s\n", r->abrev, r->full);
        !            96:                                continue;
        !            97:                        }
        !            98:                        for (r = tab; r->abrev; r++)
        !            99:                        {
        !           100:                                p = input;
        !           101:                                for (q = r->abrev; *q; q++)
        !           102:                                        if (*p++ != *q)
        !           103:                                                break;
        !           104:                                if (!*q)
        !           105:                                {
        !           106:                                        for (q = r->full; *p && *q; q++, p++)
        !           107:                                                if (*p != *q)
        !           108:                                                        break;
        !           109:                                        if (!*p || !*q)
        !           110:                                                break;
        !           111:                                }
        !           112:                        }
        !           113:                }
        !           114:                if (c==0 || r->abrev==0)
        !           115:                {
        !           116:                        printf("? ");
        !           117:                        flushin();
        !           118:                        continue;
        !           119:                }
        !           120:                return(r-tab);
        !           121:        }
        !           122: }
        !           123: 
        !           124: 
        !           125: /**
        !           126:  **    get password
        !           127:  **/
        !           128: 
        !           129: getpasswd(buf)
        !           130: char buf[];
        !           131: {
        !           132:        int s, m;
        !           133:        register char c; register int ptr;
        !           134:        struct{ int junk[2];
        !           135:                int mode;
        !           136:        } b;
        !           137: 
        !           138:        s=signal(SIGINT,1);
        !           139:        gtty(0,&b); m=b.mode; b.mode =& ~ECHO; stty(0,&b);
        !           140:        flushin();
        !           141:        printf("Enter password: %n");
        !           142:        
        !           143:        ptr=0;
        !           144:        while((c=readchar())!='\n') {
        !           145:                if(ptr<PWDLEN) buf[ptr++]=c;
        !           146:        }
        !           147:        while(ptr<PWDLEN) buf[ptr++]=0;
        !           148:        b.mode = m; stty(0,&b);
        !           149:        printf("\n");
        !           150:        signal(SIGINT,s);
        !           151:        flushin();
        !           152: }
        !           153: 
        !           154: readsep(s)
        !           155: char *s;
        !           156: {
        !           157:        register char rc;
        !           158: 
        !           159:        if(!(rc=any(nextchar(),s)))
        !           160:                backspace();
        !           161:        return(mkfault?(-1):rc);
        !           162: }

unix.superglobalmegacorp.com

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