cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c
stoddard00/02/15 19:32:50 Modified:src/lib/apr/file_io/win32 open.c Log: APR is creating files by default whenever ap_open is called and the file does not exist (i.e., passing OPEN_ALWAYS by default to CreateFile). This causes .htaccess files to be created all over the place. Submitted by: Tim Costello [EMAIL PROTECTED] Reviewed by: Bill Stoddard [EMAIL PROTECTED] Revision ChangesPath 1.19 +21 -2 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- open.c2000/02/15 00:15:44 1.18 +++ open.c2000/02/16 03:32:49 1.19 @@ -80,6 +80,7 @@ { DWORD oflags = 0; DWORD createflags = 0; +DWORD attributes = 0; (*dafile) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t)); @@ -106,12 +107,25 @@ (*dafile)-demonfname = canonical_filename((*dafile)-cntxt, fname); (*dafile)-lowerdemonfname = strlwr((*dafile)-demonfname); -createflags = OPEN_ALWAYS; if (flag APR_CREATE) { if (flag APR_EXCL) { +/* only create new if file does not already exist */ createflags = CREATE_NEW; +} else if (flag APR_TRUNCATE) { +/* truncate existing file or create new */ +createflags = CREATE_ALWAYS; +} else { +/* open existing but create if necessary */ +createflags = OPEN_ALWAYS; } +} else if (flag APR_TRUNCATE) { +/* only truncate if file already exists */ +createflags = TRUNCATE_EXISTING; +} else { +/* only open if file already exists */ +createflags = OPEN_EXISTING; } + if ((flag APR_EXCL) !(flag APR_CREATE)) { (*dafile)-filehand = INVALID_HANDLE_VALUE; return APR_EACCES; @@ -128,8 +142,13 @@ createflags = TRUNCATE_EXISTING; } +attributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN; +if (flag APR_DELONCLOSE) { +attributes |= FILE_FLAG_DELETE_ON_CLOSE; +} + (*dafile)-filehand = CreateFile(fname, oflags, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - NULL, createflags, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0); + NULL, createflags, attributes, 0); if ((*dafile)-filehand == INVALID_HANDLE_VALUE) { return GetLastError();
cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c
stoddard00/01/31 16:13:37 Modified:src/lib/apr/file_io/win32 open.c Log: Open files for sequential access. This is a file system cache optimization for when files are accessed sequentially (a common case with Apache). This does not prevent a file from being accessed randomly. Revision ChangesPath 1.16 +1 -1 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- open.c1999/12/17 15:14:06 1.15 +++ open.c2000/02/01 00:13:28 1.16 @@ -131,7 +131,7 @@ } (*dafile)-filehand = CreateFile(fname, oflags, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - NULL, createflags, FILE_ATTRIBUTE_NORMAL, 0); + NULL, createflags, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0); if ((*dafile)-filehand == INVALID_HANDLE_VALUE) { theerror = GetLastError();
cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c
rbb 99/12/17 07:14:07 Modified:src/lib/apr/file_io/win32 open.c Log: With this change, error loggin on Win32 works again. Revision ChangesPath 1.15 +0 -1 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- open.c1999/12/15 18:06:32 1.14 +++ open.c1999/12/17 15:14:06 1.15 @@ -211,7 +211,6 @@ (*thefile)-filehand = GetStdHandle(STD_ERROR_HANDLE); (*thefile)-cntxt = cont; (*thefile)-fname = NULL; -(*thefile)-filehand = NULL; (*thefile)-stated = 0; (*thefile)-buffered = 0; (*thefile)-eof_hit = 0;
cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c
rbb 99/12/14 10:25:51 Modified:src/lib/apr/file_io/win32 open.c Log: Add support for ap_open_stderr Revision ChangesPath 1.13 +19 -0 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- open.c1999/12/09 21:00:09 1.12 +++ open.c1999/12/14 18:25:48 1.13 @@ -199,3 +199,22 @@ } APR_SUCCESS; } + +ap_status_t ap_open_stderr(struct file_t **thefile, ap_context_t *cont) +{ +(*thefile) = ap_pcalloc(cont, sizeof(ap_os_file_t *)); +if ((*thefile) == NULL) { +return APR_ENOMEM; +} + +(*thefile)-filehand = GetStdHandle(STD_ERROR_HANDLE); +(*thefile)-cntxt = cont; +(*thefile)-fname = NULL; +(*thefile)-filehand = NULL; +(*thefile)-stated = 0; +(*thefile)-buffered = 0; +(*thefile)-eof_hit = 0; + +return APR_SUCCESS; +} +
cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c
stoddard99/11/03 14:01:48 Modified:src/lib/apr/file_io/win32 open.c Log: Win32 APR: Handle open for append correctly. Revision ChangesPath 1.10 +4 -0 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- open.c1999/10/21 00:31:09 1.9 +++ open.c1999/11/03 22:01:46 1.10 @@ -136,6 +136,10 @@ theerror = GetLastError(); return APR_EEXIST; } +if (flag APR_APPEND) { +SetFilePointer((*dafile)-filehand, 0, NULL, FILE_END); +} + (*dafile)-stated = 0; /* we haven't called stat for this file yet. */ (*dafile)-eof_hit = 0; ap_register_cleanup((*dafile)-cntxt, (void *)(*dafile), file_cleanup,
cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c
stoddard99/10/12 18:38:13 Modified:src/lib/apr/file_io/win32 open.c Log: Register a clean-up on each file open make sure all the file_t fields are initialized Revision ChangesPath 1.5 +7 -2 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- open.c1999/10/06 23:03:54 1.4 +++ open.c1999/10/13 01:38:13 1.5 @@ -101,6 +101,8 @@ } if (flag APR_BUFFERED) { +(*dafile)-buffered = TRUE; +} else { (*dafile)-buffered = FALSE; } (*dafile)-fname = strdup(fname); @@ -137,7 +139,10 @@ theerror = GetLastError(); return APR_EEXIST; } +(*dafile)-stated = 0; /* we haven't called stat for this file yet. */ (*dafile)-eof_hit = 0; +ap_register_cleanup((*dafile)-cntxt, (void *)(*dafile), file_cleanup, +ap_null_cleanup); return APR_SUCCESS; } @@ -156,10 +161,10 @@ char *temp = canonical_filename(cont, path); if (DeleteFile(temp)) { - return APR_SUCCESS; +return APR_SUCCESS; } else { - return APR_EEXIST; +return APR_EEXIST; } }
cvs commit: apache-2.0/src/lib/apr/file_io/win32 open.c dir.c fileacc.c
stoddard99/10/04 18:11:51 Modified:src/lib/apr/file_io/win32 open.c dir.c fileacc.c Log: More argument swaps... Revision ChangesPath 1.3 +4 -4 apache-2.0/src/lib/apr/file_io/win32/open.c Index: open.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- open.c1999/09/22 17:53:18 1.2 +++ open.c1999/10/05 01:11:48 1.3 @@ -77,8 +77,8 @@ } } -ap_status_t ap_open(ap_context_t *cont, const char *fname, ap_int32_t flag, ap_fileperms_t perm, - struct file_t **dafile) +ap_status_t ap_open(struct file_t **dafile, ap_context_t *cont, const char *fname, +ap_int32_t flag, ap_fileperms_t perm) { DWORD oflags = 0; DWORD createflags = 0; @@ -172,8 +172,8 @@ return APR_SUCCESS; } -ap_status_t ap_put_os_file(ap_context_t *cont, struct file_t **file, -ap_os_file_t *thefile) +ap_status_t ap_put_os_file(struct file_t **file, ap_os_file_t *thefile, + ap_context_t *cont) { if (cont == NULL) { return APR_ENOCONT; 1.3 +2 -3 apache-2.0/src/lib/apr/file_io/win32/dir.c Index: dir.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/dir.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- dir.c 1999/10/04 16:36:52 1.2 +++ dir.c 1999/10/05 01:11:49 1.3 @@ -137,7 +137,7 @@ return APR_SUCCESS; } if ((stat = ap_closedir(thedir)) == APR_SUCCESS) { - if ((stat = ap_opendir(cont, temp, thedir)) == APR_SUCCESS) { + if ((stat = ap_opendir(thedir, cont, temp)) == APR_SUCCESS) { ap_readdir(thedir); return APR_SUCCESS; } @@ -218,8 +218,7 @@ return APR_SUCCESS; } -ap_status_t ap_put_os_dir(ap_context_t *cont, struct dir_t **dir, -ap_os_dir_t *thedir) +ap_status_t ap_put_os_dir(struct dir_t **dir, ap_os_dir_t *thedir, ap_context_t *cont) { if (cont == NULL) { return APR_ENOCONT; 1.5 +1 -1 apache-2.0/src/lib/apr/file_io/win32/fileacc.c Index: fileacc.c === RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/fileacc.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- fileacc.c 1999/10/04 16:36:52 1.4 +++ fileacc.c 1999/10/05 01:11:49 1.5 @@ -183,7 +183,7 @@ ap_status_t ap_get_filedata(struct file_t *file, char *key, void *data) { if (file != NULL) { -return ap_get_userdata(file-cntxt, key, data); +return ap_get_userdata(data, file-cntxt, key); } else { data = NULL;