static void BuildFolderPath (const XBOX::VFilePath& inBaseFolder, const XBOX::VString& inPath, XBOX::VFilePath& outPath) { if (inPath.IsEmpty()) { outPath.FromFilePath (inBaseFolder); } else { XBOX::VString pathString (inPath); if ((pathString[0] == CHAR_SOLIDUS) // POSIX Path ? #if VERSIONWIN || ((pathString.GetLength() > 2) && (pathString[1] == CHAR_COLON) && (pathString[2] == CHAR_SOLIDUS)) // POSIX path like c:/blahblah/ #endif ) { if (!pathString.IsEmpty() && (pathString[pathString.GetLength()-1] != CHAR_SOLIDUS)) pathString.AppendUniChar (CHAR_SOLIDUS); outPath.FromFullPath (pathString, XBOX::FPS_POSIX); } else if ((pathString[0] != CHAR_FULL_STOP) && (pathString.FindUniChar (XBOX::FOLDER_SEPARATOR) > 0)) { if (!pathString.IsEmpty() && (pathString[pathString.GetLength()-1] != XBOX::FOLDER_SEPARATOR)) pathString.AppendUniChar (XBOX::FOLDER_SEPARATOR); outPath.FromFullPath (pathString, XBOX::FPS_SYSTEM); } else { XBOX::VFilePath baseFolder (inBaseFolder); if ((pathString[0] == CHAR_FULL_STOP) && (pathString[1] == CHAR_SOLIDUS)) pathString.Remove (1, 2); while ((pathString[0] == CHAR_FULL_STOP) && (pathString[1] == CHAR_FULL_STOP) && (pathString[2] == CHAR_SOLIDUS)) { pathString.Remove (1, 3); baseFolder = baseFolder.ToParent(); } pathString.ExchangeAll (CHAR_SOLIDUS, XBOX::FOLDER_SEPARATOR); if (!pathString.IsEmpty() && (pathString[pathString.GetLength()-1] != XBOX::FOLDER_SEPARATOR)) pathString.AppendUniChar (XBOX::FOLDER_SEPARATOR); outPath.FromRelativePath (baseFolder, pathString); } } }
void VHTTPServerLog::_GetLogFilePath (XBOX::VFilePath& outFilepath) { XBOX::VFilePath logFolderPath (fSettings.GetLogPath()); if (logFolderPath.IsValid() && logFolderPath.IsFolder()) { XBOX::VFolder folder (fSettings.GetLogPath()); if (!folder.Exists()) folder.CreateRecursive(); } outFilepath.FromFilePath (fSettings.GetLogPath()); outFilepath.SetFileName (fSettings.GetLogFileName()); }