|
|
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.