summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--substdi.c45
-rw-r--r--substdo.c46
2 files changed, 27 insertions, 64 deletions
diff --git a/substdi.c b/substdi.c
index 42407a1..601d949 100644
--- a/substdi.c
+++ b/substdi.c
@@ -2,13 +2,9 @@
2#include "byte.h" 2#include "byte.h"
3#include "error.h" 3#include "error.h"
4 4
5static int oneread(op,fd,buf,len) 5static int oneread(ssize_t (*op)(int, void*, size_t), int fd, char *buf, int len)
6register int (*op)();
7register int fd;
8register char *buf;
9register int len;
10{ 6{
11 register int r; 7 int r;
12 8
13 for (;;) { 9 for (;;) {
14 r = op(fd,buf,len); 10 r = op(fd,buf,len);
@@ -17,13 +13,10 @@ register int len;
17 } 13 }
18} 14}
19 15
20static int getthis(s,buf,len) 16static int getthis(substdio *s, char *buf, int len)
21register substdio *s;
22register char *buf;
23register int len;
24{ 17{
25 register int r; 18 int r;
26 register int q; 19 int q;
27 20
28 r = s->p; 21 r = s->p;
29 q = r - len; 22 q = r - len;
@@ -33,11 +26,10 @@ register int len;
33 return r; 26 return r;
34} 27}
35 28
36int substdio_feed(s) 29int substdio_feed(substdio *s)
37register substdio *s;
38{ 30{
39 register int r; 31 int r;
40 register int q; 32 int q;
41 33
42 if (s->p) return s->p; 34 if (s->p) return s->p;
43 q = s->n; 35 q = s->n;
@@ -50,12 +42,9 @@ register substdio *s;
50 return r; 42 return r;
51} 43}
52 44
53int substdio_bget(s,buf,len) 45int substdio_bget(substdio *s, char *buf, int len)
54register substdio *s;
55register char *buf;
56register int len;
57{ 46{
58 register int r; 47 int r;
59 48
60 if (s->p > 0) return getthis(s,buf,len); 49 if (s->p > 0) return getthis(s,buf,len);
61 r = s->n; if (r <= len) return oneread(s->op,s->fd,buf,r); 50 r = s->n; if (r <= len) return oneread(s->op,s->fd,buf,r);
@@ -63,12 +52,9 @@ register int len;
63 return getthis(s,buf,len); 52 return getthis(s,buf,len);
64} 53}
65 54
66int substdio_get(s,buf,len) 55int substdio_get(substdio *s, char *buf, int len)
67register substdio *s;
68register char *buf;
69register int len;
70{ 56{
71 register int r; 57 int r;
72 58
73 if (s->p > 0) return getthis(s,buf,len); 59 if (s->p > 0) return getthis(s,buf,len);
74 if (s->n <= len) return oneread(s->op,s->fd,buf,len); 60 if (s->n <= len) return oneread(s->op,s->fd,buf,len);
@@ -76,15 +62,12 @@ register int len;
76 return getthis(s,buf,len); 62 return getthis(s,buf,len);
77} 63}
78 64
79char *substdio_peek(s) 65char *substdio_peek(substdio *s)
80register substdio *s;
81{ 66{
82 return s->x + s->n; 67 return s->x + s->n;
83} 68}
84 69
85void substdio_seek(s,len) 70void substdio_seek(substdio *s, int len)
86register substdio *s;
87register int len;
88{ 71{
89 s->n += len; 72 s->n += len;
90 s->p -= len; 73 s->p -= len;
diff --git a/substdo.c b/substdo.c
index fb616f7..5eb6d5d 100644
--- a/substdo.c
+++ b/substdo.c
@@ -3,13 +3,9 @@
3#include "byte.h" 3#include "byte.h"
4#include "error.h" 4#include "error.h"
5 5
6static int allwrite(op,fd,buf,len) 6static int allwrite(ssize_t (*op)(int, const void*, size_t), int fd, char *buf, int len)
7register int (*op)();
8register int fd;
9register char *buf;
10register int len;
11{ 7{
12 register int w; 8 int w;
13 9
14 while (len) { 10 while (len) {
15 w = op(fd,buf,len); 11 w = op(fd,buf,len);
@@ -17,17 +13,16 @@ register int len;
17 if (errno == error_intr) continue; 13 if (errno == error_intr) continue;
18 return -1; /* note that some data may have been written */ 14 return -1; /* note that some data may have been written */
19 } 15 }
20 if (w == 0) ; /* luser's fault */ 16 /* if (w == 0) ; luser's fault */
21 buf += w; 17 buf += w;
22 len -= w; 18 len -= w;
23 } 19 }
24 return 0; 20 return 0;
25} 21}
26 22
27int substdio_flush(s) 23int substdio_flush(substdio *s)
28register substdio *s;
29{ 24{
30 register int p; 25 int p;
31 26
32 p = s->p; 27 p = s->p;
33 if (!p) return 0; 28 if (!p) return 0;
@@ -35,12 +30,9 @@ register substdio *s;
35 return allwrite(s->op,s->fd,s->x,p); 30 return allwrite(s->op,s->fd,s->x,p);
36} 31}
37 32
38int substdio_bput(s,buf,len) 33int substdio_bput(substdio *s, char *buf, int len)
39register substdio *s;
40register char *buf;
41register int len;
42{ 34{
43 register int n; 35 int n;
44 36
45 while (len > (n = s->n - s->p)) { 37 while (len > (n = s->n - s->p)) {
46 byte_copy(s->x + s->p,n,buf); s->p += n; buf += n; len -= n; 38 byte_copy(s->x + s->p,n,buf); s->p += n; buf += n; len -= n;
@@ -52,12 +44,9 @@ register int len;
52 return 0; 44 return 0;
53} 45}
54 46
55int substdio_put(s,buf,len) 47int substdio_put(substdio *s, char *buf, int len)
56register substdio *s;
57register char *buf;
58register int len;
59{ 48{
60 register int n; 49 int n;
61 50
62 n = s->n; 51 n = s->n;
63 if (len > n - s->p) { 52 if (len > n - s->p) {
@@ -77,32 +66,23 @@ register int len;
77 return 0; 66 return 0;
78} 67}
79 68
80int substdio_putflush(s,buf,len) 69int substdio_putflush(substdio* s, char *buf, int len)
81register substdio *s;
82register char *buf;
83register int len;
84{ 70{
85 if (substdio_flush(s) == -1) return -1; 71 if (substdio_flush(s) == -1) return -1;
86 return allwrite(s->op,s->fd,buf,len); 72 return allwrite(s->op,s->fd,buf,len);
87} 73}
88 74
89int substdio_bputs(s,buf) 75int substdio_bputs(substdio *s, char *buf)
90register substdio *s;
91register char *buf;
92{ 76{
93 return substdio_bput(s,buf,str_len(buf)); 77 return substdio_bput(s,buf,str_len(buf));
94} 78}
95 79
96int substdio_puts(s,buf) 80int substdio_puts(substdio *s, char *buf)
97register substdio *s;
98register char *buf;
99{ 81{
100 return substdio_put(s,buf,str_len(buf)); 82 return substdio_put(s,buf,str_len(buf));
101} 83}
102 84
103int substdio_putsflush(s,buf) 85int substdio_putsflush(substdio *s, char *buf)
104register substdio *s;
105register char *buf;
106{ 86{
107 return substdio_putflush(s,buf,str_len(buf)); 87 return substdio_putflush(s,buf,str_len(buf));
108} 88}