Annotation of 43BSDReno/usr.bin/uucp/gio.c, revision 1.1

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

unix.superglobalmegacorp.com

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