1 #ifdef lint
2 static char sccsid[] = "@(#)nio.c 5.1 (BERKELEY) 08/31/84";
3 #endif
4
5 #include "uucp.h"
6 #include <sys/param.h>
7
8 extern unsigned short ntohs(), htons();
9
nturnon()10 nturnon()
11 {
12 return(0);
13 }
14
nturnoff()15 nturnoff()
16 {
17 return(0);
18 }
19
nwrmsg(type,str,fn)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
nrdmsg(str,fn)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
nwrdata(fp1,fn)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
nrddata(fn,fp2)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 }
146