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;
}