Rev 5191 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5191 | Rev 6324 | ||
---|---|---|---|
Line 61... | Line 61... | ||
61 | int |
61 | int |
62 | simple_object_internal_read (int descriptor, off_t offset, |
62 | simple_object_internal_read (int descriptor, off_t offset, |
63 | unsigned char *buffer, size_t size, |
63 | unsigned char *buffer, size_t size, |
64 | const char **errmsg, int *err) |
64 | const char **errmsg, int *err) |
65 | { |
65 | { |
66 | ssize_t got; |
- | |
67 | - | ||
68 | if (lseek (descriptor, offset, SEEK_SET) < 0) |
66 | if (lseek (descriptor, offset, SEEK_SET) < 0) |
69 | { |
67 | { |
70 | *errmsg = "lseek"; |
68 | *errmsg = "lseek"; |
71 | *err = errno; |
69 | *err = errno; |
72 | return 0; |
70 | return 0; |
73 | } |
71 | } |
Line -... | Line 72... | ||
- | 72 | ||
- | 73 | do |
|
74 | 74 | { |
|
75 | got = read (descriptor, buffer, size); |
75 | ssize_t got = read (descriptor, buffer, size); |
- | 76 | if (got == 0) |
|
- | 77 | break; |
|
- | 78 | else if (got > 0) |
|
- | 79 | { |
|
- | 80 | buffer += got; |
|
- | 81 | size -= got; |
|
- | 82 | } |
|
76 | if (got < 0) |
83 | else if (errno != EINTR) |
77 | { |
84 | { |
78 | *errmsg = "read"; |
85 | *errmsg = "read"; |
79 | *err = errno; |
86 | *err = errno; |
80 | return 0; |
87 | return 0; |
- | 88 | } |
|
- | 89 | } |
|
Line 81... | Line 90... | ||
81 | } |
90 | while (size > 0); |
82 | 91 | ||
83 | if ((size_t) got < size) |
92 | if (size > 0) |
84 | { |
93 | { |
85 | *errmsg = "file too short"; |
94 | *errmsg = "file too short"; |
86 | *err = 0; |
95 | *err = 0; |
Line 96... | Line 105... | ||
96 | int |
105 | int |
97 | simple_object_internal_write (int descriptor, off_t offset, |
106 | simple_object_internal_write (int descriptor, off_t offset, |
98 | const unsigned char *buffer, size_t size, |
107 | const unsigned char *buffer, size_t size, |
99 | const char **errmsg, int *err) |
108 | const char **errmsg, int *err) |
100 | { |
109 | { |
101 | ssize_t wrote; |
- | |
102 | - | ||
103 | if (lseek (descriptor, offset, SEEK_SET) < 0) |
110 | if (lseek (descriptor, offset, SEEK_SET) < 0) |
104 | { |
111 | { |
105 | *errmsg = "lseek"; |
112 | *errmsg = "lseek"; |
106 | *err = errno; |
113 | *err = errno; |
107 | return 0; |
114 | return 0; |
108 | } |
115 | } |
Line -... | Line 116... | ||
- | 116 | ||
- | 117 | do |
|
109 | 118 | { |
|
110 | wrote = write (descriptor, buffer, size); |
119 | ssize_t wrote = write (descriptor, buffer, size); |
- | 120 | if (wrote == 0) |
|
- | 121 | break; |
|
- | 122 | else if (wrote > 0) |
|
- | 123 | { |
|
- | 124 | buffer += wrote; |
|
- | 125 | size -= wrote; |
|
- | 126 | } |
|
111 | if (wrote < 0) |
127 | else if (errno != EINTR) |
112 | { |
128 | { |
113 | *errmsg = "write"; |
129 | *errmsg = "write"; |
114 | *err = errno; |
130 | *err = errno; |
115 | return 0; |
131 | return 0; |
- | 132 | } |
|
- | 133 | } |
|
Line 116... | Line 134... | ||
116 | } |
134 | while (size > 0); |
117 | 135 | ||
118 | if ((size_t) wrote < size) |
136 | if (size > 0) |
119 | { |
137 | { |
120 | *errmsg = "short write"; |
138 | *errmsg = "short write"; |
121 | *err = 0; |
139 | *err = 0; |