comparison libaudacious/beepctrl.c @ 1582:d7af2755a397 trunk

[svn] - gcc 4.1.0, 4.1.1, 4.1.2 tree optimization workaround: Remove read_all() and write_all() routines. They had no effect nor merit here, and generally caused trouble.
author nenolod
date Mon, 14 Aug 2006 17:55:44 -0700
parents 68aec931b0b6
children 58f3eb64f390
comparison
equal deleted inserted replaced
1581:68aec931b0b6 1582:d7af2755a397
43 43
44 #ifdef HAVE_UNISTD_H 44 #ifdef HAVE_UNISTD_H
45 #include <unistd.h> 45 #include <unistd.h>
46 #endif 46 #endif
47 47
48 static gint
49 read_all(gint fd, gpointer buf, size_t count)
50 {
51 size_t left = count;
52 gint r;
53
54 do {
55 if ((r = read(fd, buf, left)) < 0) {
56 count = -1;
57 break;
58 }
59 left -= r;
60 buf = (gchar *) buf + r;
61 }
62 while (left > 0);
63
64 return count - left;
65 }
66
67 static gint
68 write_all(gint fd, gconstpointer buf, size_t count)
69 {
70 size_t left = count;
71 gint written;
72
73 do {
74 if ((written = write(fd, buf, left)) < 0) {
75 count = -1;
76 break;
77 }
78 left -= written;
79 buf = (gchar *) buf + written;
80 }
81 while (left > 0);
82
83 return count - left;
84 }
85
86 static gpointer 48 static gpointer
87 remote_read_packet(gint fd, ServerPktHeader * pkt_hdr) 49 remote_read_packet(gint fd, ServerPktHeader * pkt_hdr)
88 { 50 {
89 gpointer data = NULL; 51 gpointer data = NULL;
90 52
91 if (read_all(fd, pkt_hdr, sizeof(ServerPktHeader)) == 53 if (read(fd, pkt_hdr, sizeof(ServerPktHeader)) ==
92 sizeof(ServerPktHeader)) { 54 sizeof(ServerPktHeader)) {
93 if (pkt_hdr->data_length) { 55 if (pkt_hdr->data_length) {
94 size_t data_length = pkt_hdr->data_length; 56 size_t data_length = pkt_hdr->data_length;
95 data = g_malloc0(data_length); 57 data = g_malloc0(data_length);
96 if ((size_t)read_all(fd, data, data_length) < data_length) { 58 if ((size_t)read(fd, data, data_length) < data_length) {
97 g_free(data); 59 g_free(data);
98 data = NULL; 60 data = NULL;
99 } 61 }
100 } 62 }
101 } 63 }
121 ClientPktHeader pkt_hdr; 83 ClientPktHeader pkt_hdr;
122 84
123 pkt_hdr.version = XMMS_PROTOCOL_VERSION; 85 pkt_hdr.version = XMMS_PROTOCOL_VERSION;
124 pkt_hdr.command = command; 86 pkt_hdr.command = command;
125 pkt_hdr.data_length = data_length; 87 pkt_hdr.data_length = data_length;
126 if ((size_t)write_all(fd, &pkt_hdr, sizeof(ClientPktHeader)) < sizeof(pkt_hdr)) 88 if ((size_t)write(fd, &pkt_hdr, sizeof(ClientPktHeader)) < sizeof(pkt_hdr))
127 return; 89 return;
128 if (data_length && data) 90 if (data_length && data)
129 write_all(fd, data, data_length); 91 write(fd, data, data_length);
130 } 92 }
131 93
132 static void 94 static void
133 remote_send_guint32(gint session, guint32 cmd, guint32 val) 95 remote_send_guint32(gint session, guint32 cmd, guint32 val)
134 { 96 {