jim 98/09/25 16:01:55
Modified: src/main alloc.c util.c Log: Maintain state of errno in ap_pcfg_openfile and the functions that it calls. Needed when parsing .htaccess Revision Changes Path 1.100 +6 -1 apache-1.3/src/main/alloc.c Index: alloc.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/alloc.c,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- alloc.c 1998/08/14 02:49:47 1.99 +++ alloc.c 1998/09/25 23:01:49 1.100 @@ -1744,6 +1744,7 @@ FILE *fd = NULL; int baseFlag, desc; int modeFlags = 0; + int saved_errno; #ifdef WIN32 modeFlags = _S_IREAD | _S_IWRITE; @@ -1766,22 +1767,26 @@ else { fd = fopen(name, mode); } - + saved_errno = errno; if (fd != NULL) ap_note_cleanups_for_file(a, fd); ap_unblock_alarms(); + errno = saved_errno; return fd; } API_EXPORT(FILE *) ap_pfdopen(pool *a, int fd, const char *mode) { FILE *f; + int saved_errno; ap_block_alarms(); f = ap_fdopen(fd, mode); + saved_errno = errno; if (f != NULL) ap_note_cleanups_for_file(a, f); ap_unblock_alarms(); + errno = saved_errno; return f; } 1.134 +5 -0 apache-1.3/src/main/util.c Index: util.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/util.c,v retrieving revision 1.133 retrieving revision 1.134 diff -u -r1.133 -r1.134 --- util.c 1998/09/17 15:56:08 1.133 +++ util.c 1998/09/25 23:01:49 1.134 @@ -738,6 +738,7 @@ poolfile_t *new_pfile; FILE *file; struct stat stbuf; + int saved_errno; if (name == NULL) { ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, NULL, @@ -747,9 +748,11 @@ file = ap_pfopen(p, name, "r"); #ifdef DEBUG + saved_errno = errno; ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, NULL, "Opening config file %s (%s)", name, (file == NULL) ? strerror(errno) : "successful"); + errno = saved_errno; #endif if (file == NULL) return NULL; @@ -761,10 +764,12 @@ #else strcmp(name, "/dev/null") != 0) { #endif + saved_errno = errno; ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, NULL, "Access to file %s denied by server: not a regular file", name); ap_pfclose(p, file); + errno = saved_errno; return NULL; }