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