func: void svn_uri_split(const char **dirpath,const char **base_name,const char *uri,apr_pool_t *pool) if ( dirpath )  * dirpath = ( svn_uri_dirname ( uri , pool ) ); char *svn_uri_dirname(const char *uri,apr_pool_t *pool) apr_size_t len = strlen ( uri ) ; if ( svn_uri_is_root ( uri , len ) )  svn_boolean_t svn_uri_is_root(const char *uri,apr_size_t len) svn_uri_is_canonical ( uri , ( ( void * ) 0 ) ) ? ( ( void ) 0 ) : __assert_fail ( "svn_uri_is_canonical(uri, ((void *)0))" , "dirent_uri.c" , 958 , __PRETTY_FUNCTION__ ); svn_boolean_t svn_uri_is_canonical(const char *uri,apr_pool_t *scratch_pool) const char * ptr = uri ; const char * seg = uri ; if ( ( * uri ) == '\0' )  if ( ! svn_path_is_url ( uri ) )  while ( * ptr && ( * ptr ) != 47 && ( * ptr ) != ':' )  ptr ++; if ( ! ( ( * ptr ) == ':' && ( * ( ptr + 1 ) ) == 47 && ( * ( ptr + 2 ) ) == 47 ) )  ptr = uri; while ( ( * ptr ) != ':' )  if ( ( * ptr ) >= 65 && ( * ptr ) <= 'Z' )  ptr ++; ptr += 3; if ( ! ( * ptr ) )  seg = ptr; while ( * ptr && ( * ptr ) != 47 && ( * ptr ) != 64 )  ptr ++; if ( ( * ptr ) == 64 )  seg = ptr + 1; ptr = seg; if ( ( * ptr ) == '[' )  ptr ++; while ( ( * ptr ) == ':' || ( * ptr ) >= 48 && ( * ptr ) <= '9' || ( * ptr ) >= 'a' && ( * ptr ) <= 'f' )  ptr ++; if ( ( * ptr ) != ']' )  ptr ++; while ( * ptr && ( * ptr ) != 47 && ( * ptr ) != ':' )  if ( ( * ptr ) >= 65 && ( * ptr ) <= 'Z' )  ptr ++; if ( ( * ptr ) == ':' )  ptr ++; schema_data = ptr; while ( ( * ptr ) >= 48 && ( * ptr ) <= '9' )  port = 10 * port + ( ( * ptr ) - 48 ); ptr ++; if ( ptr == schema_data )  if ( * ptr && ( * ptr ) != 47 )  if ( port == 80 && strncmp ( uri , "http:" , 5 ) == 0 )  if ( port == 443 && strncmp ( uri , "https:" , 6 ) == 0 )  if ( port == 3690 && strncmp ( uri , "svn:" , 4 ) == 0 )  schema_data = ptr; apr_size_t seglen = ( ptr - seg ) ; if ( seglen == 1 && ( * seg ) == 46 )  if ( ( * ptr ) == 47 && ( * ( ptr + 1 ) ) == 47 )  if ( ! ( * ptr ) && ( * ( ptr - 1 ) ) == 47 && ptr - 1 != uri )  if ( ! ( * ptr ) )  if ( ( * ptr ) == 47 )  ptr ++; seg = ptr; while ( * ptr && ( * ptr ) != 47 )  ptr ++; ptr = schema_data; while ( * ptr )  if ( ( * ptr ) == 37 )  if ( ( ( * ( ptr + 1 ) ) < 48 || ( * ( ptr + 1 ) ) > '9' ) && ( ( * ( ptr + 1 ) ) < 65 || ( * ( ptr + 1 ) ) > 'F' ) )  if ( ( ( * ( ptr + 2 ) ) < 48 || ( * ( ptr + 2 ) ) > '9' ) && ( ( * ( ptr + 2 ) ) < 65 || ( * ( ptr + 2 ) ) > 'F' ) )  digitz [ 0 ] = * ( ++ ptr ); digitz [ 1 ] = * ( ++ ptr ); digitz [ 2 ] = '\0'; val = ( ( int ) ( strtol ( digitz , ( ( void * ) 0 ) , 16 ) ) ); if ( svn_uri__char_validity [ val ] )  if ( ( * ptr ) != 47 && ! svn_uri__char_validity [ ( unsigned char ) ( * ptr ) ] )  ptr ++; return len == uri_schema_root_length ( uri , len ) ; static apr_size_t uri_schema_root_length(const char *uri,apr_size_t len) for (i = 0; i < len; i++) if ( uri [ i ] == 47 )  if ( i > 0 && uri [ i - 1 ] == ':' && i < len - 1 && uri [ i + 1 ] == 47 )  if ( i == 5 && strncmp ( "file" , uri , 4 ) == 0 )  for (i += 2; i < len; i++) if ( uri [ i ] == 47 )  return len ; return apr_pstrmemdup ( pool , uri , len ) ; return apr_pstrmemdup ( pool , uri , uri_previous_segment ( uri , len ) ) ; static apr_size_t uri_previous_segment(const char *uri,apr_size_t len) apr_size_t i = len ; if ( len == 0 )  root_length = uri_schema_root_length ( uri , len ); static apr_size_t uri_schema_root_length(const char *uri,apr_size_t len) if ( uri [ i ] == 47 )  if ( i > 0 && uri [ i - 1 ] == ':' && i < len - 1 && uri [ i + 1 ] == 47 )  if ( i == 5 && strncmp ( "file" , uri , 4 ) == 0 )  if ( uri [ i ] == 47 )  return len ; while ( len > root_length && uri [ i ] != 47 )  if ( i == 0 && len > 1 && ( * uri ) == 47 )  return i ; 