|
|
1.1 ! root 1: /* /sccs/src/cmd/uucp/s.gio.c ! 2: gio.c 1.2 8/30/84 17:37:24 ! 3: */ ! 4: #include "uucp.h" ! 5: VERSION(@(#)gio.c 1.2); ! 6: ! 7: #include "pk.h" ! 8: ! 9: jmp_buf Gfailbuf; ! 10: struct pack *Pk; ! 11: ! 12: pkfail() ! 13: { ! 14: longjmp(Gfailbuf, 1); ! 15: } ! 16: ! 17: gturnon() ! 18: { ! 19: struct pack *pkopen(); ! 20: if (setjmp(Gfailbuf)) ! 21: return(FAIL); ! 22: if (Debug > 4) ! 23: pkdebug = 1; ! 24: Pk = pkopen(Ifn, Ofn); ! 25: if ((int) Pk == NULL) ! 26: return(FAIL); ! 27: return(0); ! 28: } ! 29: ! 30: ! 31: gturnoff() ! 32: { ! 33: if(setjmp(Gfailbuf)) ! 34: return(FAIL); ! 35: pkclose(Pk); ! 36: return(0); ! 37: } ! 38: ! 39: ! 40: gwrmsg(type, str, fn) ! 41: char type, *str; ! 42: { ! 43: char bufr[BUFSIZ], *s; ! 44: int len, i; ! 45: ! 46: if(setjmp(Gfailbuf)) ! 47: return(FAIL); ! 48: bufr[0] = type; ! 49: s = &bufr[1]; ! 50: while (*str) ! 51: *s++ = *str++; ! 52: *s = '\0'; ! 53: if (*(--s) == '\n') ! 54: *s = '\0'; ! 55: len = strlen(bufr) + 1; ! 56: if ((i = len % PACKSIZE)) { ! 57: len = len + PACKSIZE - i; ! 58: bufr[len - 1] = '\0'; ! 59: } ! 60: gwrblk(bufr, len, fn); ! 61: return(0); ! 62: } ! 63: ! 64: ! 65: /*ARGSUSED*/ ! 66: grdmsg(str, fn) ! 67: char *str; ! 68: { ! 69: unsigned len; ! 70: ! 71: if(setjmp(Gfailbuf)) ! 72: return(FAIL); ! 73: for (;;) { ! 74: len = pkread(Pk, str, PACKSIZE); ! 75: if (len == 0) ! 76: continue; ! 77: str += len; ! 78: if (*(str - 1) == '\0') ! 79: break; ! 80: } ! 81: return(0); ! 82: } ! 83: ! 84: ! 85: gwrdata(fp1, fn) ! 86: FILE *fp1; ! 87: { ! 88: char bufr[BUFSIZ]; ! 89: int len; ! 90: int ret; ! 91: time_t ticks; ! 92: long bytes; ! 93: char text[BUFSIZ]; ! 94: ! 95: if(setjmp(Gfailbuf)) ! 96: return(FAIL); ! 97: bytes = 0L; ! 98: (void) millitick(); /* set msec timer */ ! 99: while ((len = fread(bufr, sizeof (char), BUFSIZ, fp1)) > 0) { ! 100: bytes += len; ! 101: ret = gwrblk(bufr, len, fn); ! 102: if (ret != len) { ! 103: return(FAIL); ! 104: } ! 105: if (len != BUFSIZ) ! 106: break; ! 107: } ! 108: ret = gwrblk(bufr, 0, fn); ! 109: ticks = millitick(); ! 110: (void) sprintf(text, "-> %ld / %ld.%.3d secs", bytes, ticks / 1000, ! 111: ticks % 1000); ! 112: DEBUG(4, "%s\n", text); ! 113: syslog(text); ! 114: return(0); ! 115: } ! 116: ! 117: ! 118: grddata(fn, fp2) ! 119: FILE *fp2; ! 120: { ! 121: int len; ! 122: char bufr[BUFSIZ]; ! 123: time_t ticks; ! 124: long bytes; ! 125: char text[BUFSIZ]; ! 126: ! 127: if(setjmp(Gfailbuf)) ! 128: return(FAIL); ! 129: bytes = 0L; ! 130: (void) millitick(); /* set msec timer */ ! 131: for (;;) { ! 132: len = grdblk(bufr, BUFSIZ, fn); ! 133: if (len < 0) { ! 134: return(FAIL); ! 135: } ! 136: bytes += len; ! 137: if (fwrite(bufr, sizeof (char), len, fp2) != len) ! 138: return(FAIL); ! 139: if (len < BUFSIZ) ! 140: break; ! 141: } ! 142: ticks = millitick(); ! 143: (void) sprintf(text, "<- %ld / %ld.%.3d secs", ! 144: bytes, ticks / 1000, ticks % 1000); ! 145: DEBUG(4, "%s\n", text); ! 146: syslog(text); ! 147: return(0); ! 148: } ! 149: ! 150: ! 151: /*ARGSUSED*/ ! 152: grdblk(blk, len, fn) ! 153: char *blk; ! 154: { ! 155: int i, ret; ! 156: ! 157: for (i = 0; i < len; i += ret) { ! 158: ret = pkread(Pk, blk, len - i); ! 159: if (ret < 0) ! 160: return(FAIL); ! 161: blk += ret; ! 162: if (ret == 0) ! 163: return(i); ! 164: } ! 165: return(i); ! 166: } ! 167: ! 168: ! 169: /*ARGSUSED*/ ! 170: gwrblk(blk, len, fn) ! 171: char *blk; ! 172: { ! 173: int ret; ! 174: ! 175: ret = pkwrite(Pk, blk, len); ! 176: return(ret); ! 177: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.