Commit | Line | Data |
---|---|---|
d5f442e1 RC |
1 | #ifdef lint |
2 | static char sccsid[] = "@(#)nio.c 5.1 (BERKELEY) %G%"; | |
3 | #endif | |
4 | ||
5 | #include "uucp.h" | |
6 | #include <sys/param.h> | |
7 | ||
8 | extern unsigned short ntohs(), htons(); | |
9 | ||
10 | nturnon() | |
11 | { | |
12 | return(0); | |
13 | } | |
14 | ||
15 | nturnoff() | |
16 | { | |
17 | return(0); | |
18 | } | |
19 | ||
20 | nwrmsg(type, str, fn) | |
21 | char type; | |
22 | register char *str; | |
23 | { | |
24 | char bufr[BUFSIZ]; | |
25 | register char *cp = bufr; | |
26 | unsigned short nlen; | |
27 | int len; | |
28 | ||
29 | for (*cp++ = type; *cp = *str++; cp++) | |
30 | ; | |
31 | if (cp[-1] == '\n') | |
32 | *--cp = (char)0; | |
33 | len = (cp - bufr) + 1; | |
34 | nlen = htons(len); | |
35 | if (write(fn, &nlen, sizeof nlen) != sizeof nlen || | |
36 | write(fn, bufr, len) != len) | |
37 | return(FAIL); | |
38 | return(0); | |
39 | } | |
40 | ||
41 | nrdmsg(str, fn) | |
42 | char *str; | |
43 | { | |
44 | int count, cc; | |
45 | unsigned short ncount; | |
46 | ||
47 | if ((cc = read(fn, &ncount, sizeof ncount)) != sizeof ncount) { | |
48 | DEBUG(7, "nrdmsg bad byte count read (%d)\n", cc); | |
49 | return(FAIL); | |
50 | } | |
51 | count = ntohs(ncount); | |
52 | DEBUG(7, "nrdmsg expecting %d bytes, got ", count); | |
53 | if ((cc = read(fn, str, count)) != count) { | |
54 | DEBUG(7, "%d\n", cc); | |
55 | return(FAIL); | |
56 | } | |
57 | DEBUG(7, "them%c", '\n'); | |
58 | return(0); | |
59 | } | |
60 | ||
61 | /* call ultouch every TC calls to either grdblk or gwrblk -- rti!trt */ | |
62 | #define TC 60 | |
63 | static int tc = TC; | |
64 | ||
65 | nwrdata(fp1, fn) | |
66 | FILE *fp1; | |
67 | { | |
68 | int len, cc; | |
69 | unsigned short nlen; | |
70 | char bufr[BUFSIZ], msg[64]; | |
71 | extern long time(); | |
72 | long bytes = 0L, secs = time((long *)0); | |
73 | ||
74 | while ((len = fread(bufr, sizeof(char), BUFSIZ, fp1)) > 0) { | |
75 | /* call ultouch occasionally -- rti!trt */ | |
76 | if (--tc < 0) { | |
77 | tc = TC; | |
78 | ultouch(); | |
79 | } | |
80 | DEBUG(7, "nwrdata writing %d bytes, ", len); | |
81 | nlen = htons((unsigned short)len); | |
82 | if ((cc = write(fn, &nlen, sizeof nlen)) != sizeof nlen) { | |
83 | DEBUG(7, "bad byte count write (%d)\n", cc); | |
84 | return(FAIL); | |
85 | } | |
86 | if ((cc = write(fn, bufr, len)) != len) { | |
87 | DEBUG(7, "wrote %d\n", cc); | |
88 | return(FAIL); | |
89 | } | |
90 | DEBUG(7, "succeeded%c", '\n'); | |
91 | bytes += len; | |
92 | } | |
93 | nlen = 0; | |
94 | DEBUG(7, "nwrdata writing eof marker, ", 0); | |
95 | if ((cc = write(fn, &nlen, sizeof nlen)) != sizeof nlen) { | |
96 | DEBUG(7, "bad byte count write (%d)\n", cc); | |
97 | return(FAIL); | |
98 | } | |
99 | DEBUG(7, "succeeded%c", '\n'); | |
100 | secs = time((long *)0) - secs; | |
101 | sprintf(msg, "sent data %ld bytes %ld secs", bytes, secs); | |
102 | DEBUG(1, "%s\n", msg); | |
103 | syslog(msg); | |
104 | sysacct(bytes, secs); | |
105 | return(0); | |
106 | } | |
107 | ||
108 | nrddata(fn, fp2) | |
109 | FILE *fp2; | |
110 | { | |
111 | int len, cc; | |
112 | unsigned short nlen; | |
113 | char bufr[BUFSIZ], msg[64]; | |
114 | extern long time(); | |
115 | long bytes = 0L, secs = time((long *)0); | |
116 | ||
117 | for (;;) { | |
118 | /* call ultouch occasionally -- rti!trt */ | |
119 | if (--tc < 0 ) { | |
120 | tc = TC; | |
121 | ultouch(); | |
122 | } | |
123 | if ((cc = read(fn, &nlen, sizeof nlen)) != sizeof nlen) { | |
124 | DEBUG(7, "nrddata bad byte count read (%d)\n", cc); | |
125 | return(FAIL); | |
126 | } | |
127 | len = ntohs(nlen); | |
128 | if (len == 0) | |
129 | break; | |
130 | DEBUG(7, "nrddata expecting %d bytes, got ", len); | |
131 | if ((cc = read(fn, bufr, len)) != len || | |
132 | fwrite(bufr, sizeof(char), len, fp2) != len) { | |
133 | DEBUG(7, "%d\n", cc); | |
134 | return(FAIL); | |
135 | } | |
136 | DEBUG(7, "them%c", '\n'); | |
137 | bytes += len; | |
138 | } | |
139 | secs = time((long *)0) - secs; | |
140 | sprintf(msg, "received data %ld bytes %ld secs", bytes, secs); | |
141 | DEBUG(1, "%s\n", msg); | |
142 | syslog(msg); | |
143 | sysacct(bytes, secs); | |
144 | return(0); | |
145 | } |