]> git.wh0rd.org - patches.git/blame - ldrviewer-retry.patch
sync vapier-m
[patches.git] / ldrviewer-retry.patch
CommitLineData
5e993f12 1? ldrs
2? ldrviewer
3Index: headers.h
4===================================================================
5RCS file: /cvsroot/gcc3/ldrviewer/headers.h,v
6retrieving revision 1.2
7diff -u -p -r1.2 headers.h
8--- headers.h 22 Sep 2006 01:44:59 -0000 1.2
9+++ headers.h 17 Oct 2006 20:54:10 -0000
10@@ -21,6 +21,7 @@
11 #include <stdlib.h>
12 #include <string.h>
13 #include <strings.h>
14+#include <errno.h>
15 #include <assert.h>
16 #include <stdint.h>
17 #include <sys/types.h>
18Index: helpers.c
19===================================================================
20RCS file: /cvsroot/gcc3/ldrviewer/helpers.c,v
21retrieving revision 1.2
22diff -u -p -r1.2 helpers.c
23--- helpers.c 22 Sep 2006 01:44:59 -0000 1.2
24+++ helpers.c 17 Oct 2006 20:54:10 -0000
25@@ -40,3 +40,24 @@ int parse_bool(const char *boo)
26 return 0;
27 err("Invalid boolean: '%s'", boo);
28 }
29+
30+ssize_t read_retry(int fd, void *buf, size_t count)
31+{
32+ ssize_t ret = 0, temp_ret;
33+ while (count > 0) {
34+ temp_ret = read(fd, buf, count);
35+ if (temp_ret > 0) {
36+ ret += temp_ret;
37+ buf += temp_ret;
38+ count -= temp_ret;
39+ } else if (temp_ret == 0) {
40+ break;
41+ } else {
42+ if (errno == EINTR)
43+ continue;
44+ ret = -1;
45+ break;
46+ }
47+ }
48+ return ret;
49+}
50Index: helpers.h
51===================================================================
52RCS file: /cvsroot/gcc3/ldrviewer/helpers.h,v
53retrieving revision 1.2
54diff -u -p -r1.2 helpers.h
55--- helpers.h 22 Sep 2006 01:44:59 -0000 1.2
56+++ helpers.h 17 Oct 2006 20:54:10 -0000
57@@ -41,5 +41,6 @@ extern const char *argv0;
58 void *xmalloc(size_t);
59 void *xrealloc(void *, size_t);
60 int parse_bool(const char *);
61+ssize_t read_retry(int, void *, size_t);
62
63 #endif
64Index: ldr.c
65===================================================================
66RCS file: /cvsroot/gcc3/ldrviewer/ldr.c,v
67retrieving revision 1.2
68diff -u -p -r1.2 ldr.c
69--- ldr.c 22 Sep 2006 01:44:59 -0000 1.2
70+++ ldr.c 17 Oct 2006 20:54:10 -0000
71@@ -379,7 +379,7 @@ canned_failure:
72 printf("OK!\n");
73
74 printf("Trying to read autobaud ... ");
75- ret = read(fd, autobaud, 4);
76+ ret = read_retry(fd, autobaud, 4);
77 if (ret != 4)
78 goto canned_failure;
79 printf("OK!\n");