18#include "apr_private.h"
19#include "apr_arch_file_io.h"
336 if (!
drive1 || !
drive2 || path1[1] !=
':' || path2[1] !=
':')
492 rootlen = pathlen = strlen(
addroot);
517 rootlen = pathlen = strlen(
addroot);
544 rootlen = pathlen = strlen(
addroot);
583 rootlen = pathlen = strlen(
addroot);
623 if (pathlen &&
path[pathlen - 1] !=
':') {
624 if (
path[pathlen - 1] !=
'/' &&
path[pathlen - 1] !=
'\\') {
625 if (pathlen + 1 >=
sizeof(
path))
690 if (rootlen && (pathlen <= rootlen))
701 else if (pathlen == 0
704 ||
path[pathlen - 4] ==
':'
705 ||
path[pathlen - 4] ==
'/'
706 ||
path[pathlen - 4] ==
'\\')
707 &&
path[pathlen - 3] ==
'.'
708 &&
path[pathlen - 2] ==
'.'
709 && (
path[pathlen - 1] ==
'/'
710 ||
path[pathlen - 1] ==
'\\')))
723 if (pathlen + 3 >=
sizeof(
path))
725 path[pathlen++] =
'.';
726 path[pathlen++] =
'.';
744 }
while (pathlen &&
path[pathlen - 1] !=
'/'
745 &&
path[pathlen - 1] !=
'\\');
785 path[pathlen] =
'\0';
920#ifdef XXX_FIGURE_THIS_OUT
929 if (pathlen + 1 >=
sizeof(
path))
995#if APR_HAS_UNICODE_FS
APR general purpose library routines.
request_rec int int apr_table_t const char * path
#define APR_STATUS_IS_ENOTDIR(s)
#define APR_STATUS_IS_ENOENT(s)
#define APR_STATUS_IS_EPATHWILD(s)
const char apr_ssize_t int flags
apr_memcache_server_t * server
const apr_xml_elem int style
const void apr_status_t(*) apr_status_t(* APR_DECLARE)(void) apr_pool_pre_cleanup_register(apr_pool_t *p
const char apr_file_t * file
const char const char * addpath
#define APR_FILEPATH_ENCODING_UTF8
#define APR_FILEPATH_NATIVE
#define APR_FILEPATH_NOTRELATIVE
#define APR_FILEPATH_SECUREROOTTEST
#define APR_FILEPATH_NOTABSOLUTE
#define APR_FILEPATH_NOTABOVEROOT
apr_array_header_t * pathelts
#define APR_FILEPATH_ENCODING_LOCALE
#define APR_FILEPATH_TRUENAME
int strncasecmp(const char *a, const char *b, size_t n)
#define apr_pcalloc(p, size)
apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p)
apr_status_t filepath_compare_drive(const char *path1, const char *path2, apr_pool_t *p)
apr_status_t filepath_has_drive(const char *rootpath, int only, apr_pool_t *p)
apr_status_t filepath_root_test(char *path, apr_pool_t *p)
apr_status_t filepath_drive_get(char **rootpath, char drive, apr_int32_t flags, apr_pool_t *p)
abts_suite * testpath(abts_suite *suite)
apr_status_t apr_filepath_list_merge_impl(char **liststr, apr_array_header_t *pathelts, char separator, apr_pool_t *p)
apr_status_t apr_filepath_list_split_impl(apr_array_header_t **pathelts, const char *liststr, char separator, apr_pool_t *p)
#define IF_WIN_OS_IS_UNICODE
static int same_drive(const char *path1, const char *path2)