Branko �ibej wrote:
> Oh, yes: I've also got mods to APR (apr_filepath_merge,
> apr_filepath_get), but I have to research the impact on apr-util and
> httpd-2.0 before I dare commit those changes.
>
>
Well, it seems that neither apr-util nor httpd-2.0 will mind (I changed
the declaration of apr_filepath_get). But I don't have time to test
those changes on Unix. So I'm attaching a patch for APR. Anyone who
wants to test on Windows will need this patch to make commits work.
--
Brane �ibej <brane_at_xbc.nu> http://www.xbc.nu/brane/
Index: include/apr_file_info.h
===================================================================
RCS file: /home/cvs/apr/include/apr_file_info.h,v
retrieving revision 1.23
diff -u -r1.23 apr_file_info.h
--- include/apr_file_info.h 2001/08/18 15:15:46 1.23
+++ include/apr_file_info.h 2001/09/08 12:54:39
@@ -357,10 +357,12 @@
* Return the default file path (for relative file names)
* @ingroup apr_filepath
* @param path the default path string returned
+ * @param flags the desired APR_FILEPATH_ rules to apply
* @param p the pool to allocate the default path string from
* @deffunc apr_status_t apr_filepath_get(char **path, apr_pool_t *p)
*/
-APR_DECLARE(apr_status_t) apr_filepath_get(char **path, apr_pool_t *p);
+APR_DECLARE(apr_status_t) apr_filepath_get(char **path, apr_int32_t flags,
+ apr_pool_t *p);
/**
* Set the default file path (for relative file names)
Index: include/arch/win32/fileio.h
===================================================================
RCS file: /home/cvs/apr/include/arch/win32/fileio.h,v
retrieving revision 1.55
diff -u -r1.55 fileio.h
--- include/arch/win32/fileio.h 2001/08/28 21:45:04 1.55
+++ include/arch/win32/fileio.h 2001/09/08 12:54:41
@@ -229,12 +229,13 @@
/* The apr_filepath_merge wants to canonicalize the cwd to the
* addpath if the user passes NULL as the old root path (this
- * isn't true of an empty string "", which won't be concatinated.
+ * isn't true of an empty string "", which won't be concatenated.
*
* But we need to figure out what the cwd of a given volume is,
* when the user passes D:foo. This fn will determine D:'s cwd.
*/
-apr_status_t filepath_drive_get(char **rootpath, char drive, apr_pool_t *p);
+apr_status_t filepath_drive_get(char **rootpath, char drive,
+ apr_int32_t flags, apr_pool_t *p);
/* If the user passes d: vs. D: (or //mach/share vs. //MACH/SHARE),
Index: file_io/win32/filepath.c
===================================================================
RCS file: /home/cvs/apr/file_io/win32/filepath.c,v
retrieving revision 1.12
diff -u -r1.12 filepath.c
--- file_io/win32/filepath.c 2001/09/01 05:11:46 1.12
+++ file_io/win32/filepath.c 2001/09/08 12:54:41
@@ -358,7 +358,9 @@
/* This call _should_ test the path
*/
addtype = apr_filepath_root(&addroot, &addpath,
- APR_FILEPATH_TRUENAME, p);
+ APR_FILEPATH_TRUENAME
+ | (flags & APR_FILEPATH_NATIVE),
+ p);
if (addtype == APR_SUCCESS) {
addtype = APR_EABSOLUTE;
}
@@ -418,10 +420,11 @@
char *getpath;
#ifndef NETWARE
if (addtype == APR_EINCOMPLETE && addroot[1] == ':')
- rv = filepath_drive_get(&getpath, addroot[0], p);
+ rv = filepath_drive_get(&getpath, addroot[0],
+ (flags & APR_FILEPATH_NATIVE), p);
else
#endif
- rv = apr_filepath_get(&getpath, p);
+ rv = apr_filepath_get(&getpath, (flags & APR_FILEPATH_NATIVE), p);
if (rv != APR_SUCCESS)
return rv;
basepath = getpath;
@@ -430,7 +433,8 @@
if (!baseroot) {
/* This call should _not_ test the path
*/
- basetype = apr_filepath_root(&baseroot, &basepath, 0, p);
+ basetype = apr_filepath_root(&baseroot, &basepath,
+ (flags & APR_FILEPATH_NATIVE), p);
if (basetype == APR_SUCCESS) {
basetype = APR_EABSOLUTE;
}
@@ -745,7 +749,9 @@
/* This call _should_ test the path
*/
testtype = apr_filepath_root(&testroot, &testpath,
- APR_FILEPATH_TRUENAME, p);
+ APR_FILEPATH_TRUENAME
+ | (flags & APR_FILEPATH_NATIVE),
+ p);
if (testtype == APR_SUCCESS) {
rootlen = pathlen = (testpath - path);
memcpy(path, testroot, pathlen);
Index: file_io/win32/filesys.c
===================================================================
RCS file: /home/cvs/apr/file_io/win32/filesys.c,v
retrieving revision 1.2
diff -u -r1.2 filesys.c
--- file_io/win32/filesys.c 2001/09/02 05:10:41 1.2
+++ file_io/win32/filesys.c 2001/09/08 12:54:41
@@ -116,7 +116,8 @@
}
-apr_status_t filepath_drive_get(char **rootpath, char drive, apr_pool_t *p)
+apr_status_t filepath_drive_get(char **rootpath, char drive,
+ apr_int32_t flags, apr_pool_t *p)
{
char path[APR_PATH_MAX];
#if APR_HAS_UNICODE_FS
@@ -149,12 +150,12 @@
if (!GetFullPathName(drivestr, sizeof(path), path, &ignored))
return apr_get_os_error();
}
- /* ###: We really should consider adding a flag to allow the user
- * to have the APR_FILEPATH_NATIVE result
- */
- for (*rootpath = path; **rootpath; ++*rootpath) {
- if (**rootpath == '\\')
- **rootpath = '/';
+ if (!(flags & APR_FILEPATH_NATIVE))
+ {
+ for (*rootpath = path; **rootpath; ++*rootpath) {
+ if (**rootpath == '\\')
+ **rootpath = '/';
+ }
}
*rootpath = apr_pstrdup(p, path);
return APR_SUCCESS;
@@ -201,7 +202,7 @@
}
-APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath,
+APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags,
apr_pool_t *p)
{
char path[APR_PATH_MAX];
@@ -222,12 +223,12 @@
if (!GetCurrentDirectory(sizeof(path), path))
return apr_get_os_error();
}
- /* ###: We really should consider adding a flag to allow the user
- * to have the APR_FILEPATH_NATIVE result
- */
- for (*rootpath = path; **rootpath; ++*rootpath) {
- if (**rootpath == '\\')
- **rootpath = '/';
+ if (!(flags & APR_FILEPATH_NATIVE))
+ {
+ for (*rootpath = path; **rootpath; ++*rootpath) {
+ if (**rootpath == '\\')
+ **rootpath = '/';
+ }
}
*rootpath = apr_pstrdup(p, path);
return APR_SUCCESS;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:40 2006