--- fetch.c 2008-06-16 16:34:37.000000000 +0200 +++ fetch.c.new 2009-05-19 02:35:48.473000809 +0200 @@ -30,18 +30,34 @@ char *pathInfoString; char *queryString; char *userStr; + char *pch; + char *p[3]; + int i=0; DEBUG_Msg("\n"); userStr = (char *) 0; - pathInfoString = getenv("PATH_INFO"); + //pathInfoString = getenv("PATH_INFO"); + pathInfoString = getenv("PATH_TRANSLATED"); if ( pathInfoString ) /* use PATH_INFO */ { if ( pathInfoString[0] != 0 ) { - DEBUG_Msg("Trying to extract user from PATH_INFO."); + DEBUG_Msg("Trying to extract user from PATH_TRANSLATED."); + + userStr = GetPathComponents(3, pathInfoString); + DEBUG_Str("userstr1", userStr); + + pch = strtok(userStr, "/"); + + while (pch != NULL) { + p[i] = pch; + pch = strtok (NULL, "/"); + i++; + } - userStr = GetPathComponents(1, pathInfoString); + userStr = p[2]; + DEBUG_Str("userstr2", userStr); } else { @@ -68,9 +84,10 @@ /* Handle ~ notation */ if (userStr) { - if (userStr[0] == '~') + DEBUG_Str("userstr3", userStr); + if (userStr[0] == 'home') { - userStr++; + userStr = userStr + 2; } } @@ -100,7 +117,7 @@ DEBUG_Msg("Trying to extract script from PATH_INFO"); scrStr = StripPathComponents(1,pathInfoString); - if ( ! strlen(scrStr) ) { scrStr = 0; } + if ( ! strlen(scrStr) ) { scrStr = StripPathComponents(0,pathInfoString); } DEBUG_Str("Extracted PATH_INFO", scrStr); }