Changeset 248
- Timestamp:
- Jun 1, 2009, 11:25:53 AM (16 years ago)
- Location:
- branches/samba-3.3.x/source
- Files:
-
- 1 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.3.x/source/lib/system.c
r221 r248 120 120 { 121 121 ssize_t ret; 122 int fds, err = 0;123 124 int timeout=1000; /* Timeout for select */125 122 do { 126 if (err == EAGAIN && timeout != 0) { 127 fds = fd; 128 ret = os2_select(&fds, 1, 0, 0, timeout); 129 if (ret != 1) { 130 err = errno; 131 DEBUG(5,("sys_read: select ret: %d,%s\n", ret, strerror(errno))); \ 132 if (ret == 0) { 133 err = errno = EAGAIN; 134 ret = -1; 135 continue; 136 } 137 if (err == EINTR) 138 continue; 139 return -1; 140 } 141 } 142 /* ret = read(fd, buf, count); */ 143 ret = recv(fd, buf, count,0); 144 err = errno; 145 } while (ret == -1 && (errno == EINTR || (errno == EAGAIN && timeout != 0))); 146 return ret; 147 } 123 ret = read(fd, buf, count); 124 } while (ret == -1 && errno == EINTR); 125 return ret; 126 } 127 148 128 /******************************************************************* 149 129 A write wrapper that will deal with EINTR. 150 130 ********************************************************************/ 151 152 131 ssize_t sys_write(int fd, const void *buf, size_t count) 153 132 { 154 133 ssize_t ret; 155 int fds, err = 0;156 157 int timeout=1000; /* Timeout for select */158 134 do { 159 if (err == EAGAIN && timeout != 0) { 160 fds = fd; 161 ret = os2_select(&fds, 0, 1, 0, timeout); 162 if (ret != 1) { 163 err = errno; 164 DEBUG(5,("sys_write: select ret: %d,%s\n", ret, strerror(errno))); \ 165 if (ret == 0) { 166 err = errno = EAGAIN; 167 ret = -1; 168 continue; 169 } 170 if (err == EINTR) 171 continue; 172 return -1; 173 } 174 } 175 /* ret = write(fd, buf, count); */ 176 ret = send(fd, buf, count,0); 177 err = errno; 178 } while (ret == -1 && (errno == EINTR || (errno == EAGAIN && timeout != 0))); 135 ret = write(fd, buf, count); 136 } while (ret == -1 && errno == EINTR); 179 137 return ret; 180 138 } … … 220 178 ret = pread(fd, buf, count, off); 221 179 #endif 222 #ifndef __OS2__223 180 } while (ret == -1 && errno == EINTR); 224 #else225 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */226 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));227 #endif228 181 return ret; 229 182 } … … 245 198 ret = pwrite(fd, buf, count, off); 246 199 #endif 247 #ifndef __OS2__248 200 } while (ret == -1 && errno == EINTR); 249 #else250 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */251 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));252 #endif253 201 return ret; 254 202 } … … 265 213 do { 266 214 ret = send(s, msg, len, flags); 267 #ifndef __OS2__268 215 } while (ret == -1 && errno == EINTR); 269 #else270 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */271 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));272 #endif273 216 return ret; 274 217 } … … 284 227 do { 285 228 ret = sendto(s, msg, len, flags, to, tolen); 286 #ifndef __OS2__287 229 } while (ret == -1 && errno == EINTR); 288 #else289 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */290 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));291 #endif292 230 return ret; 293 231 } … … 317 255 do { 318 256 ret = recvfrom(s, buf, len, flags, from, fromlen); 319 #ifndef __OS2__320 257 } while (ret == -1 && errno == EINTR); 321 #else322 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */323 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));324 #endif325 258 return ret; 326 259 } … … 336 269 do { 337 270 ret = fcntl(fd, cmd, arg); 338 #ifndef __OS2__339 271 } while (ret == -1 && errno == EINTR); 340 #else341 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */342 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));343 #endif344 272 return ret; 345 273 } … … 355 283 do { 356 284 ret = fcntl(fd, cmd, arg); 357 #ifndef __OS2__358 285 } while (ret == -1 && errno == EINTR); 359 #else360 /* On OS/2 - we randomly get 'Resource Temporarily Unavailable' errors - ignore these */361 } while (ret == -1 && ((errno == EINTR)||(errno == EAGAIN)));362 #endif363 286 return ret; 364 287 } -
branches/samba-3.3.x/source/lib/util.c
r206 r248 950 950 if((val = sys_fcntl_long(fd, F_GETFL, 0)) == -1) 951 951 return -1; 952 #ifndef __OS2__ 952 953 if(set) /* Turn blocking on - ie. clear nonblock flag */ 953 954 val &= ~FLAG_TO_SET; … … 955 956 val |= FLAG_TO_SET; 956 957 return sys_fcntl_long( fd, F_SETFL, val); 958 #else 959 if(set) /* turn blocking on - ie. clear nonblock flag */ 960 val = 0; 961 else 962 val = 1; 963 return os2_ioctl(fd, FIONBIO, (char *) &val, sizeof(val)); 964 #endif 965 957 966 #undef FLAG_TO_SET 958 967 }
Note:
See TracChangeset
for help on using the changeset viewer.