Annotation of 3BSD/cmd/uucp/gio.c, revision 1.1.1.1

1.1       root        1: #define USER 1
                      2: #include <sys/pk.p>
                      3: #include <sys/param.h>
                      4: #include <sys/pk.h>
                      5: #include <sys/buf.h>
                      6: #include <setjmp.h>
                      7: #include "uucp.h"
                      8: 
                      9: 
                     10: jmp_buf Failbuf;
                     11: 
                     12: struct pack *Pk;
                     13: 
                     14: pkfail()
                     15: {
                     16:        longjmp(Failbuf, 1);
                     17: }
                     18: 
                     19: gturnon()
                     20: {
                     21:        int ret;
                     22:        struct pack *pkopen();
                     23:        if (setjmp(Failbuf))
                     24:                return(FAIL);
                     25:        if (Pkdrvon) {
                     26:                ret = pkon(Ofn, PACKSIZE);
                     27:                DEBUG(4, "pkon - %d ", ret);
                     28:                DEBUG(4, "Ofn - %d\n", Ofn);
                     29:                if (ret <= 0)
                     30:                        return(FAIL);
                     31:        }
                     32:        else {
                     33:                if (Debug > 4)
                     34:                        pkdebug = 1;
                     35:                Pk = pkopen(Ifn, Ofn);
                     36:                if ((int) Pk == NULL)
                     37:                        return(FAIL);
                     38:        }
                     39:        return(0);
                     40: }
                     41: 
                     42: 
                     43: gturnoff()
                     44: {
                     45:        if(setjmp(Failbuf))
                     46:                return(FAIL);
                     47:        if (Pkdrvon)
                     48:                pkoff(Ofn);
                     49:        else
                     50:                pkclose(Pk);
                     51:        return(0);
                     52: }
                     53: 
                     54: 
                     55: gwrmsg(type, str, fn)
                     56: char type, *str;
                     57: int fn;
                     58: {
                     59:        char bufr[BUFSIZ], *s;
                     60:        int len, i, ret;
                     61: 
                     62:        if(setjmp(Failbuf))
                     63:                return(FAIL);
                     64:        bufr[0] = type;
                     65:        s = &bufr[1];
                     66:        while (*str)
                     67:                *s++ = *str++;
                     68:        *s = '\0';
                     69:        if (*(--s) == '\n')
                     70:                *s = '\0';
                     71:        len = strlen(bufr) + 1;
                     72:        if ((i = len % PACKSIZE)) {
                     73:                len = len + PACKSIZE - i;
                     74:                bufr[len - 1] = '\0';
                     75:        }
                     76:        ret = gwrblk(bufr, len, fn);
                     77:        return(0);
                     78: }
                     79: 
                     80: 
                     81: grdmsg(str, fn)
                     82: char *str;
                     83: int fn;
                     84: {
                     85:        unsigned len;
                     86: 
                     87:        if(setjmp(Failbuf))
                     88:                return(FAIL);
                     89:        for (;;) {
                     90:                if (Pkdrvon)
                     91:                        len = read(fn, str, PACKSIZE);
                     92:                else
                     93:                        len = pkread(Pk, str, PACKSIZE);
                     94:                str += len;
                     95:                if (*(str - 1) == '\0')
                     96:                        break;
                     97:        }
                     98:        return(0);
                     99: }
                    100: 
                    101: 
                    102: gwrdata(fp1, fn)
                    103: FILE *fp1;
                    104: int fn;
                    105: {
                    106:        char bufr[BUFSIZ];
                    107:        int len;
                    108:        int ret;
                    109:        time_t t1, t2;
                    110:        long bytes;
                    111:        char text[BUFSIZ];
                    112: 
                    113:        if(setjmp(Failbuf))
                    114:                return(FAIL);
                    115:        bytes = 0L;
                    116:        time(&t1);
                    117:        while ((len = fread(bufr, sizeof (char), BUFSIZ, fp1)) > 0) {
                    118:                bytes += len;
                    119:                ret = gwrblk(bufr, len, fn);
                    120:                if (ret != len) {
                    121:                        return(FAIL);
                    122:                }
                    123:                if (len != BUFSIZ)
                    124:                        break;
                    125:        }
                    126:        ret = gwrblk(bufr, 0, fn);
                    127:        time(&t2);
                    128:        sprintf(text, "sent data %D bytes %D secs", bytes, t2 - t1);
                    129:        DEBUG(1, "%s\n", text);
                    130:        syslog(text);
                    131:        sysacct(bytes, t2 - t1);
                    132:        return(0);
                    133: }
                    134: 
                    135: 
                    136: grddata(fn, fp2)
                    137: FILE *fp2;
                    138: int fn;
                    139: {
                    140:        int len;
                    141:        char bufr[BUFSIZ];
                    142:        time_t t1, t2;
                    143:        long bytes;
                    144:        char text[BUFSIZ];
                    145: 
                    146:        if(setjmp(Failbuf))
                    147:                return(FAIL);
                    148:        bytes = 0L;
                    149:        time(&t1);
                    150:        for (;;) {
                    151:                len = grdblk(bufr, BUFSIZ, fn);
                    152:                if (len < 0) {
                    153:                        return(FAIL);
                    154:                }
                    155:                bytes += len;
                    156:                fwrite(bufr, sizeof (char), len, fp2);
                    157:                if (len < BUFSIZ)
                    158:                        break;
                    159:        }
                    160:        time(&t2);
                    161:        sprintf(text, "received data %D bytes %D secs", bytes, t2 - t1);
                    162:        DEBUG(1, "%s\n", text);
                    163:        syslog(text);
                    164:        sysacct(bytes, t2 - t1);
                    165:        return(0);
                    166: }
                    167: 
                    168: 
                    169: grdblk(blk, len,  fn)
                    170: int fn, len;
                    171: char *blk;
                    172: {
                    173:        int i, ret;
                    174: 
                    175:        for (i = 0; i < len; i += ret) {
                    176:                if (Pkdrvon)
                    177:                        ret = read(fn, blk, len - i);
                    178:                else
                    179:                        ret = pkread(Pk, blk, len - i);
                    180:                if (ret < 0)
                    181:                        return(FAIL);
                    182:                blk += ret;
                    183:                if (ret == 0)
                    184:                        return(i);
                    185:        }
                    186:        return(i);
                    187: }
                    188: 
                    189: 
                    190: gwrblk(blk, len, fn)
                    191: char *blk;
                    192: unsigned len;
                    193: int fn;
                    194: {
                    195:        int ret;
                    196: 
                    197:        if (Pkdrvon)
                    198:                ret = write(fn, blk, len);
                    199:        else
                    200:                ret = pkwrite(Pk, blk, len);
                    201:        return(ret);
                    202: }

unix.superglobalmegacorp.com

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