manoj 99/10/31 01:02:57
Modified: src/include buff.h
src/main buff.c http_protocol.c util_script.c
src/modules/standard mod_cgi.c
Log:
Undo the ap_bgets errno patch. It will return status with ap_berror().
Revision Changes Path
1.10 +1 -2 apache-2.0/src/include/buff.h
Index: buff.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/include/buff.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -u -r1.9 -r1.10
--- buff.h 1999/10/30 08:05:07 1.9
+++ buff.h 1999/10/31 09:02:52 1.10
@@ -184,8 +184,7 @@
/* I/O */
API_EXPORT(ap_status_t) ap_bread(BUFF *fb, void *buf, ap_size_t nbyte,
ap_ssize_t *bytes_read);
-API_EXPORT(ap_status_t) ap_bgets(char *s, int n, BUFF *fb,
- ap_ssize_t *bytes_read);
+API_EXPORT(int) ap_bgets(char *s, int n, BUFF *fb);
API_EXPORT(int) ap_blookc(BUFF *fb);
API_EXPORT(ap_status_t) ap_bwrite(BUFF *fb, const void *buf, ap_size_t nbyte,
ap_ssize_t *bytes_written);
1.22 +10 -21 apache-2.0/src/main/buff.c
Index: buff.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/main/buff.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -u -r1.21 -r1.22
--- buff.c 1999/10/30 08:05:08 1.21
+++ buff.c 1999/10/31 09:02:53 1.22
@@ -429,11 +429,8 @@
* read, it is replaced by a newline character. The string is then
* terminated with a null character.
*
- * Works a little differently than the other BUFF functions, returning
- * APR_EOF on end-of-file instead of just setting bytes_read = 0,
- * because it makes code simpler.
- *
- * XXX - I'm undecided on keeping this function inconsistent - manoj
+ * Returns the number of bytes stored in buff, or zero on end of
+ * transmission, or -1 on an error.
*
* Notes:
* If null characters are expected in the data stream, then
@@ -443,20 +440,19 @@
* CR characters in the byte stream not immediately followed by a LF
* will be preserved.
*/
-API_EXPORT(ap_status_t) ap_bgets(char *buff, int n, BUFF *fb,
- ap_ssize_t *bytes_read)
+API_EXPORT(int) ap_bgets(char *buff, int n, BUFF *fb)
{
int i, ch, ct;
ap_status_t rv;
/* Can't do bgets on an unbuffered stream */
if (!(fb->flags & B_RD)) {
- *bytes_read = 0;
- return APR_EINVAL;
+ errno = EINVAL;
+ return -1;
}
if (fb->flags & B_RDERR) {
- *bytes_read = 0;
- return fb->saved_errno;
+ errno = fb->saved_errno;
+ return -1;
}
ct = 0;
@@ -470,13 +466,9 @@
break;
rv = read_with_errors(fb, fb->inptr, fb->bufsiz, &i);
if (rv != APR_SUCCESS) {
+ errno = rv;
buff[ct] = '\0';
- *bytes_read = ct;
-#ifdef MIDWAY_ERROR_RETURNS_ERROR_BLAH_BLAH_BLAH
- return rv;
-#else
- return *bytes_read ? APR_SUCCESS : rv;
-#endif
+ return ct ? ct : -1;
}
fb->incnt = i;
if (i == 0)
@@ -509,10 +501,7 @@
fb->inptr += i;
buff[ct] = '\0';
- *bytes_read = ct;
- if (i == 0)
- return APR_EOF;
- return APR_SUCCESS;
+ return ct;
}
/*
1.30 +10 -11 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.29
retrieving revision 1.30
diff -u -d -u -r1.29 -r1.30
--- http_protocol.c 1999/10/30 08:05:08 1.29
+++ http_protocol.c 1999/10/31 09:02:53 1.30
@@ -674,24 +674,23 @@
static int getline(char *s, int n, BUFF *in, int fold)
{
char *pos, next;
- ap_status_t retval;
- ap_ssize_t nbytes;
+ int retval;
int total = 0;
pos = s;
do {
- retval = ap_bgets(pos, n, in, &nbytes);
- /* retval == APR_EOF if EOF, normal error codes otherwise */
+ retval = ap_bgets(pos, n, in);
+ /* retval == -1 if error, 0 if EOF */
- if (retval != APR_SUCCESS) /* error or eof */
- return ((retval != APR_EOF) && (total == 0)) ? -1 : total;
+ if (retval <= 0)
+ return ((retval < 0) && (total == 0)) ? -1 : total;
- /* nbytes is the number of characters read, not including NUL */
+ /* retval is the number of characters read, not including NUL */
- n -= nbytes; /* Keep track of how much of s is full */
- pos += (nbytes - 1); /* and where s ends */
- total += nbytes; /* and how long s has become */
+ n -= retval; /* Keep track of how much of s is full */
+ pos += (retval - 1); /* and where s ends */
+ total += retval; /* and how long s has become */
if (*pos == '\n') { /* Did we get a full line of input? */
/*
@@ -716,7 +715,7 @@
* the last line was not empty and we have room in the buffer and
* the next line begins with a continuation character.
*/
- } while (fold && (nbytes != 1) && (n > 1)
+ } while (fold && (retval != 1) && (n > 1)
&& (next = ap_blookc(in))
&& ((next == ' ') || (next == '\t')));
1.16 +1 -2 apache-2.0/src/main/util_script.c
Index: util_script.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/main/util_script.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -u -r1.15 -r1.16
--- util_script.c 1999/10/30 08:05:09 1.15
+++ util_script.c 1999/10/31 09:02:54 1.16
@@ -616,8 +616,7 @@
static int getsfunc_BUFF(char *w, int len, void *fb)
{
- ap_ssize_t n; /* Ignored */
- return ap_bgets(w, len, (BUFF *) fb, &n) == APR_SUCCESS;
+ return ap_bgets(w, len, (BUFF *) fb) > 0;
}
API_EXPORT(int) ap_scan_script_header_err_buff(request_rec *r, BUFF *fb,
1.18 +10 -19 apache-2.0/src/modules/standard/mod_cgi.c
Index: mod_cgi.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/modules/standard/mod_cgi.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -u -r1.17 -r1.18
--- mod_cgi.c 1999/10/30 08:05:10 1.17
+++ mod_cgi.c 1999/10/31 09:02:55 1.18
@@ -201,7 +201,6 @@
ap_file_t *f;
int i;
struct stat finfo;
- ap_ssize_t n; /* Ignored */
if (!conf->logname ||
((stat(ap_server_root_relative(r->pool, conf->logname), &finfo) == 0)
@@ -209,22 +208,19 @@
(ap_open(&f, ap_server_root_relative(r->pool, conf->logname),
APR_APPEND, APR_OS_DEFAULT, r->pool) != APR_SUCCESS)) {
/* Soak up script output */
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in, &n)
- == APR_SUCCESS)
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in) > 0)
continue;
#ifdef WIN32
/* Soak up stderr and redirect it to the error log.
* Script output to stderr is already directed to the error log
* on Unix, thanks to the magic of fork().
*/
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err, &n)
- == APR_SUCCESS) {
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, 0, r,
"%s", argsbuffer);
}
#else
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err, &n)
- == APR_SUCCESS)
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0)
continue;
#endif
return ret;
@@ -260,19 +256,18 @@
if (sbuf && *sbuf)
ap_fprintf(f, "%s\n", sbuf);
- if (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in, &n) == APR_SUCCESS)
{
+ if (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in) > 0) {
ap_puts("%stdout\n", f);
ap_puts(argsbuffer, f);
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in, &n) > 0)
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in) > 0)
ap_puts(argsbuffer, f);
ap_puts("\n", f);
}
- if (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err, &n) ==
APR_SUCCESS) {
+ if (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
ap_puts("%stderr\n", f);
ap_puts(argsbuffer, f);
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err, &n)
- == APR_SUCCESS)
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0)
ap_puts(argsbuffer, f);
ap_puts("\n", f);
}
@@ -450,7 +445,6 @@
char *argv0, *dbuf = NULL;
char *command;
char **argv = NULL;
- ap_ssize_t n; /* Ignored */
BUFF *script_out = NULL, *script_in = NULL, *script_err = NULL;
char argsbuffer[HUGE_STRING_LEN];
@@ -597,12 +591,10 @@
if (location && location[0] == '/' && r->status == 200) {
/* Soak up all the script output */
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in, &n)
- == APR_SUCCESS) {
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in) > 0) {
continue;
}
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err, &n)
- == APR_SUCCESS) {
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
continue;
}
/* This redirect needs to be a GET no matter what the original
@@ -633,8 +625,7 @@
}
ap_bclose(script_in);
- while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err, &n)
- == APR_SUCCESS) {
+ while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
continue;
}
ap_bclose(script_err);