1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
diff --git a/atomicio.c b/atomicio.c
index 3930a07..8a15e6c 100644
--- a/atomicio.c
+++ b/atomicio.c
@@ -37,11 +37,7 @@
* ensure all of data on socket comes through. f==read || f==write
*/
ssize_t
-atomicio(f, fd, _s, n)
- ssize_t (*f) ();
- int fd;
- void *_s;
- size_t n;
+atomicio(ssize_t (*f)(int, void *, size_t), int fd, void *_s, size_t n)
{
char *s = _s;
ssize_t res, pos = 0;
diff --git a/client.c b/client.c
index 0a0a022..a898dec 100644
--- a/client.c
+++ b/client.c
@@ -298,11 +298,11 @@ client_sendmsg(struct client *cli, struct msg *msg)
return (-1);
xbuflen = htonl(buflen);
- if (atomicio(write, cli->s, &xbuflen, sizeof(xbuflen)) !=
+ if (atomicio((ssize_t (*)(int, void *, size_t))write, cli->s, &xbuflen, sizeof(xbuflen)) !=
sizeof(xbuflen))
return (-1);
- if (atomicio(write, cli->s, buf, buflen) == buflen)
+ if (atomicio((ssize_t (*)(int, void *, size_t))write, cli->s, buf, buflen) == buflen)
return (0);
return (-1);
diff --git a/trickledu.c b/trickledu.c
index c4c4a89..3a4fe0a 100644
--- a/trickledu.c
+++ b/trickledu.c
@@ -153,11 +153,11 @@ trickled_sendmsg(struct msg *msg)
return (-1); /* XXX fail? */
xbuflen = htonl(buflen);
- if (atomicio(libc_write, trickled_sock, &xbuflen, sizeof(xbuflen)) !=
+ if (atomicio((ssize_t (*)(int, void *, size_t))libc_write, trickled_sock, &xbuflen, sizeof(xbuflen)) !=
sizeof(xbuflen))
return (-1);
- if (atomicio(libc_write, trickled_sock, buf, buflen) == buflen)
+ if (atomicio((ssize_t (*)(int, void *, size_t))libc_write, trickled_sock, buf, buflen) == buflen)
return (0);
fail:
diff --git a/util.h b/util.h
index b00059c..2b44451 100644
--- a/util.h
+++ b/util.h
@@ -41,7 +41,7 @@
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
-ssize_t atomicio(ssize_t (*)(), int, void *, size_t);
+ssize_t atomicio(ssize_t (*f)(int, void *, size_t), int, void *, size_t);
char *get_progname(char *);
|