Annotation of 43BSD/usr.bin/uucp/gio.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)gio.c      5.6 (Berkeley) 10/9/85";
                      3: #endif
                      4: 
                      5: #include "uucp.h"
                      6: #include "pk.h"
                      7: #include <setjmp.h>
                      8: 
                      9: jmp_buf Failbuf;
                     10: 
                     11: int Retries = 0;
                     12: struct pack *Pk;
                     13: 
                     14: pkfail()
                     15: {
                     16:        longjmp(Failbuf, 1);
                     17: }
                     18: 
                     19: gturnon()
                     20: {
                     21:        struct pack *pkopen();
                     22: 
                     23:        if (setjmp(Failbuf))
                     24:                return FAIL;
                     25:        Pk = pkopen(Ifn, Ofn);
                     26:        if (Pk == NULL)
                     27:                return FAIL;
                     28:        return SUCCESS;
                     29: }
                     30: 
                     31: gturnoff()
                     32: {
                     33:        if(setjmp(Failbuf))
                     34:                return(FAIL);
                     35:        pkclose(Pk);
                     36:        return SUCCESS;
                     37: }
                     38: 
                     39: 
                     40: gwrmsg(type, str, fn)
                     41: char type;
                     42: register char *str;
                     43: {
                     44:        char bufr[BUFSIZ];
                     45:        register char *s;
                     46:        int len, i;
                     47: 
                     48:        if(setjmp(Failbuf))
                     49:                return(FAIL);
                     50:        bufr[0] = type;
                     51:        s = &bufr[1];
                     52:        while (*str)
                     53:                *s++ = *str++;
                     54:        *s = '\0';
                     55:        if (*(--s) == '\n')
                     56:                *s = '\0';
                     57:        len = strlen(bufr) + 1;
                     58:        if ((i = len % PACKSIZE)) {
                     59:                len = len + PACKSIZE - i;
                     60:                bufr[len - 1] = '\0';
                     61:        }
                     62:        gwrblk(bufr, len, fn);
                     63:        return SUCCESS;
                     64: }
                     65: 
                     66: /*ARGSUSED*/
                     67: grdmsg(str, fn)
                     68: register char *str;
                     69: {
                     70:        unsigned len;
                     71: 
                     72:        if(setjmp(Failbuf))
                     73:                return FAIL;
                     74:        for (;;) {
                     75:                len = pkread(Pk, str, PACKSIZE);
                     76:                if (len == 0)
                     77:                        continue;
                     78:                str += len;
                     79:                if (*(str - 1) == '\0')
                     80:                        break;
                     81:        }
                     82:        return SUCCESS;
                     83: }
                     84: 
                     85: 
                     86: gwrdata(fp1, fn)
                     87: FILE *fp1;
                     88: {
                     89:        char bufr[BUFSIZ];
                     90:        register int len;
                     91:        int ret, mil;
                     92:        struct timeb t1, t2;
                     93:        long bytes;
                     94:        char text[BUFSIZ];
                     95: 
                     96:        if(setjmp(Failbuf))
                     97:                return FAIL;
                     98:        bytes = 0L;
                     99:        Retries = 0;
                    100: #ifdef USG
                    101:        time(&t1.time);
                    102:        t1.millitm = 0;
                    103: #else !USG
                    104:        ftime(&t1);
                    105: #endif !USG
                    106:        while ((len = read(fileno(fp1), bufr, BUFSIZ)) > 0) {
                    107:                bytes += len;
                    108:                ret = gwrblk(bufr, len, fn);
                    109:                if (ret != len) {
                    110:                        return FAIL;
                    111:                }
                    112:                if (len != BUFSIZ)
                    113:                        break;
                    114:        }
                    115:        ret = gwrblk(bufr, 0, fn);
                    116: #ifdef USG
                    117:        time(&t2.time);
                    118:        t2.millitm = 0;
                    119: #else !USG
                    120:        ftime(&t2);
                    121: #endif !USG
                    122:        Now = t2;
                    123:        t2.time -= t1.time;
                    124:        mil = t2.millitm - t1.millitm;
                    125:        if (mil < 0) {
                    126:                --t2.time;
                    127:                mil += 1000;
                    128:        }
                    129:        sprintf(text, "sent data %ld bytes %ld.%02d secs",
                    130:                                bytes, (long)t2.time, mil/10);
                    131:        sysacct(bytes, t2.time);
                    132:        if (Retries > 0) 
                    133:                sprintf((char *)text+strlen(text)," %d retries", Retries);
                    134:        DEBUG(1, "%s\n", text);
                    135:        syslog(text);
                    136:        return SUCCESS;
                    137: }
                    138: 
                    139: grddata(fn, fp2)
                    140: FILE *fp2;
                    141: {
                    142:        register int len;
                    143:        char bufr[BUFSIZ];
                    144:        struct timeb t1, t2;
                    145:        int mil;
                    146:        long bytes;
                    147:        char text[BUFSIZ];
                    148: 
                    149:        if(setjmp(Failbuf))
                    150:                return FAIL;
                    151:        bytes = 0L;
                    152:        Retries = 0;
                    153: #ifdef USG
                    154:        time(&t1.time);
                    155:        t1.millitm = 0;
                    156: #else !USG
                    157:        ftime(&t1);
                    158: #endif !USG
                    159:        for (;;) {
                    160:                len = grdblk(bufr, BUFSIZ, fn);
                    161:                if (len < 0) {
                    162:                        return FAIL;
                    163:                }
                    164:                bytes += len;
                    165:                if (write(fileno(fp2), bufr, len) != len)
                    166:                        return FAIL;
                    167:                if (len < BUFSIZ)
                    168:                        break;
                    169:        }
                    170: #ifdef USG
                    171:        time(&t2.time);
                    172:        t2.millitm = 0;
                    173: #else !USG
                    174:        ftime(&t2);
                    175: #endif !USG
                    176:        Now = t2;
                    177:        t2.time -= t1.time;
                    178:        mil = t2.millitm - t1.millitm;
                    179:        if (mil < 0) {
                    180:                --t2.time;
                    181:                mil += 1000;
                    182:        }
                    183:        sprintf(text, "received data %ld bytes %ld.%02d secs",
                    184:                                bytes, (long)t2.time, mil/10);
                    185:        sysacct(bytes, t2.time);
                    186:        if (Retries > 0) 
                    187:                sprintf((char *)text+strlen(text)," %d retries", Retries);
                    188:        DEBUG(1, "%s\n", text);
                    189:        syslog(text);
                    190:        return SUCCESS;
                    191: }
                    192: 
                    193: #if !defined(BSD4_2) && !defined(USG)
                    194: /* call ultouch every TC calls to either grdblk or gwrblk */
                    195: #define        TC      20
                    196: static int tc = TC;
                    197: #endif !BSD4_2 && !USG
                    198: 
                    199: /*ARGSUSED*/
                    200: grdblk(blk, len,  fn)
                    201: register int len;
                    202: char *blk;
                    203: {
                    204:        register int i, ret;
                    205: 
                    206: #if !defined(BSD4_2) && !defined(USG)
                    207:        /* call ultouch occasionally */
                    208:        if (--tc < 0) {
                    209:                tc = TC;
                    210:                ultouch();
                    211:        }
                    212: #endif !BSD4_2 && !USG
                    213:        for (i = 0; i < len; i += ret) {
                    214:                ret = pkread(Pk, blk, len - i);
                    215:                if (ret < 0)
                    216:                        return FAIL;
                    217:                blk += ret;
                    218:                if (ret == 0)
                    219:                        return i;
                    220:        }
                    221:        return i;
                    222: }
                    223: 
                    224: /*ARGSUSED*/
                    225: gwrblk(blk, len, fn)
                    226: register char *blk;
                    227: {
                    228: #if !defined(BSD4_2) && !defined(USG)
                    229:        /* call ultouch occasionally */
                    230:        if (--tc < 0) {
                    231:                tc = TC;
                    232:                ultouch();
                    233:        }
                    234: #endif !BSD4_2 && !USG
                    235:        return  pkwrite(Pk, blk, len);
                    236: }

unix.superglobalmegacorp.com

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