|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.