bjh 99/11/03 04:47:24
Modified: src/lib/apr/file_io/os2 readwrite.c src/main http_protocol.c Log: OS/2: Don't return APR_EOF from ap_read(). EOF is indicated by a APR_SUCCESS status with nbytes set to 0. Revision Changes Path 1.6 +10 -15 apache-2.0/src/lib/apr/file_io/os2/readwrite.c Index: readwrite.c =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/readwrite.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- readwrite.c 1999/10/19 15:24:19 1.5 +++ readwrite.c 1999/11/03 12:47:22 1.6 @@ -85,8 +85,11 @@ while (rc == 0 && size > 0) { if (thefile->bufpos >= thefile->dataRead) { rc = DosRead(thefile->filedes, thefile->buffer, APR_FILE_BUFSIZE, &thefile->dataRead ); - if (thefile->dataRead == 0) + if (thefile->dataRead == 0) { + if (rc == 0) + thefile->eof_hit = TRUE; break; + } thefile->filePtr += thefile->dataRead; thefile->bufpos = 0; } @@ -99,15 +102,6 @@ } *nbytes = rc == 0 ? pos - (char *)buf : 0; - - // if an error occurred report it - // if we read some data but hit EOF before reading 'size' bytes, return Ok (0) - // if we hit EOF with no data read, return -1 - if (size && rc == 0 && pos == (char *)buf) { - thefile->eof_hit = TRUE; - *_errno() = APR_EOF; - return APR_EOF; - } return os2errno(rc); } else { rc = DosRead(thefile->filedes, buf, *nbytes, &bytesread); @@ -307,15 +301,16 @@ ap_status_t ap_fgets(char *str, int len, ap_file_t *thefile) { ssize_t readlen; - ap_status_t rv; + ap_status_t rv = APR_SUCCESS; int i; for (i = 0; i < len-1; i++) { readlen = 1; rv = ap_read(thefile, str+i, &readlen); - - if (rv != APR_SUCCESS) { - return rv; + + if (readlen != 1) { + rv = APR_EOF; + break; } if (str[i] == '\r') @@ -324,7 +319,7 @@ break; } str[i] = 0; - return APR_SUCCESS; + return rv; } 1.35 +1 -1 apache-2.0/src/main/http_protocol.c Index: http_protocol.c =================================================================== RCS file: /home/cvs/apache-2.0/src/main/http_protocol.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- http_protocol.c 1999/11/02 14:34:32 1.34 +++ http_protocol.c 1999/11/03 12:47:23 1.35 @@ -2111,7 +2111,7 @@ while (!ap_is_aborted(r->connection)) { rv = ap_bread(fb, buf, sizeof(buf), &n); if (n == 0) { - if (rv == APR_SUCCESS || rv == APR_EOF) { /* eof */ + if (rv == APR_SUCCESS) { /* eof */ (void) ap_rflush(r); break; }