#include "aa_config.h"
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include "tLocale.h"
#include "tDirectories.h"
#include "tString.h"
#include "tConfiguration.h"
#include "tCommandLine.h"
#include "tMemManager.h"
#include <pwd.h>
#include <dirent.h>
Go to the source code of this file.
Classes | |
class | tPathConfig |
class | tPathData |
class | tPathMusic |
class | tPathVar |
class | tPathScreenshot |
class | tPathToExecutable |
Class holding our best guess of the path to the binary executable. More... | |
struct | tRunningInBuildDirectory |
class | tDirectoriesCommandLineAnalyzer |
Defines | |
#define | PROGNAME "armagetronad" |
#define | PROGNAMEBASE "armagetronad" |
#define | PROGDIR_SUFFIX "" |
#define | PREFIX "/usr/local" |
#define | BINDIR "/usr/local/bin" |
#define | SYSBINDIR "/does/not/exist" |
#define | DATASUFFIX "" |
#define | CONFIGSUFFIX "" |
#define | PROGDIR PROGNAME PROGDIR_SUFFIX |
#define | expand_home_c(c) expand_home(tString(c)) |
#define | QUIT(x) { std::ostringstream s; s << x; quitWithMessage(s.str().c_str()); name_.Clear(); } return false |
Functions | |
tString | expand_home (const tString &pathname) |
static bool | st_IsPathDelimiter (char c) |
static bool | mkdir_recurse (char *pathname, size_t safe_path) |
char * | eh_getdir (const char *da, size_t *len) |
static bool | tStringLessThan (const tString &s1, const tString &s2) |
void | ReplacePath (tString &path, char const *replacement) |
bool | TestPath (char const *path, char const *file) |
bool | TestConfigurationPath (char const *path) |
bool | TestDataPath (char const *path) |
static tString | GetParent (char const *child, int levels) |
static tString | GenerateParentOfExecutable (int levels=2) |
static tString | GeneratePrefix () |
static char const * | GetPrefix () |
static tString | st_RelocatePath (tString const &original) |
static void | FindDataPath () |
static void | FindConfigurationPath () |
static bool | ReadDir (tCommandLineParser &parser, tString &target, const char *argument) |
void | st_PrintPathInfo (tOutput &buf) |
Variables | |
static const char * | s_topSourceDir = "." |
static tString | st_prefixCompiled (PREFIX) |
static tString | st_bindirCompiled (BINDIR) |
static tString | st_DataDir (".") |
static tString | st_MusicDir (".") |
static tString | st_UserDataDir (expand_home_c("~/."PROGDIR)) |
static tString | st_ConfigDir ("") |
static tString | st_ScriptDir ("") |
static tString | st_UserConfigDir ("") |
static tString | st_VarDir ("") |
static tString | st_ResourceDir ("") |
static tString | st_AutoResourceDir ("") |
static tString | st_IncludedResourceDir ("") |
static tString | st_ScreenshotDir ("") |
static bool | st_checkPathAbsolute = true |
static bool | st_checkPathRelative = true |
static bool | st_checkPathHidden = true |
static const tPathConfig | st_Config |
static const tPathData | st_Data |
static const tPathMusic | st_Music |
static const tPathVar | st_Var |
static const tPathScreenshot | st_Screenshot |
static const tPathResource | st_Resource |
static const tPathScripts | st_Scripts |
static bool | st_protectFiles = true |
tSettingItem< bool > | st_protectFilesConf ("PROTECT_SENSITIVE_FILES", st_protectFiles) |
static tPathToExecutable | st_pathToExecutable |
static tDirectoriesCommandLineAnalyzer | analyzer |
char * | st_userConfigs [] |
#define BINDIR "/usr/local/bin" |
#define CONFIGSUFFIX "" |
Definition at line 124 of file tDirectories.cpp.
#define DATASUFFIX "" |
Definition at line 120 of file tDirectories.cpp.
#define PREFIX "/usr/local" |
Definition at line 102 of file tDirectories.cpp.
#define PROGDIR PROGNAME PROGDIR_SUFFIX |
Definition at line 127 of file tDirectories.cpp.
#define PROGDIR_SUFFIX "" |
Definition at line 73 of file tDirectories.cpp.
#define PROGNAME "armagetronad" |
#define PROGNAMEBASE "armagetronad" |
Definition at line 69 of file tDirectories.cpp.
#define QUIT | ( | x | ) | { std::ostringstream s; s << x; quitWithMessage(s.str().c_str()); name_.Clear(); } return false |
Definition at line 1249 of file tDirectories.cpp.
#define SYSBINDIR "/does/not/exist" |
Definition at line 116 of file tDirectories.cpp.
char* eh_getdir | ( | const char * | da, | |
size_t * | len | |||
) |
Definition at line 394 of file tDirectories.cpp.
References d, free, malloc, NULL, and strdup.
Referenced by expand_home().
00394 { 00395 const char *s, *r, *d; 00396 char *type = 0, *user = 0, *ret = 0; 00397 size_t l; 00398 00399 // Step 1: Extract type, user, and *len 00400 if (da[0] == '~') { 00401 type = strdup("HOME"); 00402 { 00403 // find first occurence of slash or backslash 00404 char const * slash = strchr(da, '/'); 00405 char const * backslash = strchr(da, '\\'); 00406 if ( slash && backslash ) 00407 d = slash < backslash ? slash : backslash; 00408 else 00409 d = slash ? slash : backslash; 00410 } 00411 l = ((d ? d : strchr(da, '\0')) - da - 1) * sizeof(char); 00412 user = (char *)memcpy(malloc(l + sizeof(char)), da + 1, l); user[l] = '\0'; 00413 *len = l + 1; 00414 } else if (!strncmp(da, "${", 2)) { 00415 s = strchr(da, '}'); 00416 if (!s) { 00417 // Invalid structure 00418 return 0; 00419 } 00420 if ((r = strchr(da, ':'))) { 00421 l = (s - r - 1) * sizeof(char); 00422 user = (char *)memcpy(malloc(l + sizeof(char)), r + 1, l); user[l] = '\0'; 00423 } else { 00424 r = s; 00425 user = (char *)malloc(sizeof(char)); 00426 user[0] = '\0'; 00427 } 00428 l = (r - da - 2) * sizeof(char); 00429 type = (char *)memcpy(malloc(l + sizeof(char)), da + 2, l); type[l] = '\0'; 00430 *len = s - da + 1; 00431 } 00432 00433 // Step 2: Resolve type/user into ret 00434 #ifdef WIN32 00435 if (!strcmp(type, "HOME")) { 00436 free(type); 00437 type = strdup("HOMEPATH"); 00438 } 00439 #endif 00440 if ((ret = getenv(type))) 00441 ret = strdup(ret); 00442 else { 00443 # ifdef WIN32 00444 { 00445 char path[MAX_PATH]; 00446 int ssf = 0; 00447 00448 // Bug! This assumes user == current user! (who cares, but... yeah) 00449 if (!strcmp(type, "HOME")) ssf = 0x28; 00450 if (!strcmp(type, "APPDATA")) ssf = 0x1a; 00451 if (!strcmp(type, "COMMONAPPDATA")) ssf = 0x23; 00452 if (!strcmp(type, "DESKTOP")) ssf = 0x10; 00453 if (!strcmp(type, "LOCALAPPDATA")) ssf = 0x1c; 00454 if (!strcmp(type, "MYPICTURES")) ssf = 0x27; 00455 if (!strcmp(type, "PERSONAL")) ssf = 0x05; 00456 if (!strcmp(type, "PROFILE")) ssf = 0x28; 00457 if (!strcmp(type, "SYSTEM")) ssf = 0x25; 00458 if (!strcmp(type, "WINDOWS")) ssf = 0x24; 00459 00460 //if (ssf && SUCCEEDED(SHGetFolderPath(NULL, ssf, NULL, 0, path))) 00461 if (ssf && SHGetSpecialFolderPath(NULL, path, ssf, 1)) 00462 ret = strdup(path); 00463 } 00464 # else 00465 // fall back to default for HOME 00466 if (!strcmp(type, "HOME")) { 00467 struct passwd *pw; 00468 00469 if (user[0] == '\0') // Current user 00470 pw = getpwuid(getuid()); 00471 else 00472 pw = getpwnam(user); 00473 if (pw) 00474 ret = strdup(pw->pw_dir); 00475 // struct passwd seems to do some really freaky stuff and doesn't like freeing? can someone confirm this? 00476 } 00477 # endif 00478 // TODO: fall back to hardcoded stuff in some cases? 00479 } 00480 00481 #ifdef DEBUG_PATH 00482 std::cout << "Changing " << type << " to " << ret << "\n"; 00483 #endif 00484 00485 // Step 3: Cleanup 00486 free(type); 00487 free(user); 00488 if (!ret && da[0] != '~') { 00489 // Valid, but undefined 00490 free(ret); 00491 ret = (char *)malloc(sizeof(char)); 00492 ret[0] = '\0'; 00493 } 00494 00495 return ret; 00496 }
Definition at line 498 of file tDirectories.cpp.
References eh_getdir(), and free.
00498 { 00499 const char *pn = (const char *)pathname; 00500 char *s; 00501 size_t len; 00502 tString r; 00503 00504 if ((pn[0] == '~' || !strncmp(pn, "${", 2)) && (s = eh_getdir(pn, &len))) { 00505 tString sStr(s); 00506 r = sStr << (pn + len); 00507 free(s); 00508 } 00509 else 00510 r = pathname; 00511 00512 #ifdef DEBUG 00513 printf("changed %s to %s\n", (const char *)pathname, (const char *)r); 00514 #endif 00515 return r; 00516 }
static void FindConfigurationPath | ( | ) | [static] |
Definition at line 1541 of file tDirectories.cpp.
References st_DataDir, st_RelocatePath(), tERR_WARN, and TestConfigurationPath().
Referenced by tDirectoriesCommandLineAnalyzer::DoInitialize().
01542 { 01543 #ifndef MACOSX_XCODE 01544 #ifndef WIN32 01545 if ( TestConfigurationPath( st_RelocatePath( tString( AA_SYSCONFDIR ) ) ) ) return; 01546 #endif 01547 01548 // look for configuration where the data is 01549 if ( TestConfigurationPath(st_DataDir + "/config") ) return; 01550 01551 tERR_WARN("Could not determine path to configuration files. Using defaults or command line arguments.\n"); 01552 #endif // !MACOSX_XCODE 01553 }
static void FindDataPath | ( | ) | [static] |
Definition at line 1518 of file tDirectories.cpp.
References con, tPathToExecutable::Get(), GetParent(), st_RelocatePath(), tERR_MESSAGE, and TestDataPath().
Referenced by tDirectoriesCommandLineAnalyzer::DoInitialize().
01519 { 01520 #ifndef MACOSX_XCODE 01521 #ifdef WIN32 01522 // look for data in the same directory as the executable 01523 if ( TestDataPath(GetParent(st_pathToExecutable.Get(), 1) ) ) return; 01524 #else 01525 // try to use path substitution 01526 if ( TestDataPath( st_RelocatePath( tString(AA_DATADIR ) ) ) ) return; 01527 // if ( TestDataPath( AddPrefix( DATASUFFIX ) ) ) return; 01528 #endif 01529 01530 #ifdef DEBUG_PATH 01531 con << "Data sarch failed, trying debug fallback.\n"; 01532 #endif 01533 01534 #ifdef DEBUG_PATH 01535 tERR_MESSAGE("Could not determine path to data files. Using defaults or command line arguments.\n"); 01536 #endif 01537 #endif // !MACOSX_XCODE 01538 }
static tString GenerateParentOfExecutable | ( | int | levels = 2 |
) | [static] |
Definition at line 1411 of file tDirectories.cpp.
References tPathToExecutable::Get(), and GetParent().
Referenced by GeneratePrefix().
01412 { 01413 return GetParent( st_pathToExecutable.Get(), levels ); 01414 }
static tString GeneratePrefix | ( | ) | [static] |
Definition at line 1423 of file tDirectories.cpp.
References con, GenerateParentOfExecutable(), tString::Len(), st_bindirCompiled, st_prefixCompiled, tString::SubStr(), tERR_ERROR, and TestPath().
Referenced by GetPrefix().
01424 { 01425 // fetch prefix as it was compiled in 01426 tString const & prefixCompiled = st_prefixCompiled; 01427 // the binary path as it was compiled in 01428 tString const & bindirCompiled = st_bindirCompiled; 01429 // and the current binary path 01430 tString bindirNow(GenerateParentOfExecutable(1)); 01431 01432 // the length of the bindir suffix, the part that is added below prefix 01433 int bindirSuffixLength=bindirCompiled.Len() - prefixCompiled.Len(); 01434 01435 // the end of the prefix part in binDirNow according to that 01436 int bindirNowPrefixEnd=bindirNow.Len() - 1 - bindirSuffixLength; 01437 if ( bindirNowPrefixEnd < 0 ) 01438 bindirNowPrefixEnd = 0; 01439 01440 // check that the binary path now ends the same way 01441 tString suffixNow = bindirNow.SubStr( bindirNowPrefixEnd + 1 ); 01442 tString suffixCompiled = bindirCompiled.SubStr( prefixCompiled.Len() ); 01443 01444 #ifdef DEBUG_PATH 01445 con << "suffices: " << suffixNow << ", " << suffixCompiled << "\n"; 01446 #endif 01447 01448 if ( suffixNow != suffixCompiled ) 01449 { 01450 // may we be running inside the build directory? 01451 int bindirEndStart = bindirNow.Len() - 5; 01452 if ( bindirEndStart < 0 ) 01453 bindirEndStart = 0; 01454 01455 tString bindirEnd = bindirNow.SubStr( bindirEndStart ); 01456 01457 #ifdef DEBUG_PATH 01458 con << "bindirEnd: " << bindirEnd << "\n"; 01459 #endif 01460 01461 if ( TestPath( bindirNow, "Makefile" ) ) 01462 throw tRunningInBuildDirectory(); 01463 01464 tERR_ERROR("Relocation error. The binary was supposed to be installed into " << bindirCompiled << " and found itself in " << bindirNow << " and could not find out what this means for the prefix " << prefixCompiled << "." ); 01465 } 01466 01467 // generate prefix 01468 tString prefixNow = bindirNow.SubStr( 0, bindirNowPrefixEnd ); 01469 01470 #ifdef DEBUG_PATH 01471 con << "prefix: " << prefixNow << "\n"; 01472 #endif 01473 01474 return prefixNow; 01475 }
static tString GetParent | ( | char const * | child, | |
int | levels | |||
) | [static] |
Definition at line 1343 of file tDirectories.cpp.
References c, and tString::Size().
Referenced by FindDataPath(), and GenerateParentOfExecutable().
01344 { 01345 tString ret( child ); 01346 01347 // strip last two path segments 01348 int toStrip = levels; 01349 int stripCurrent = ret.Size()-1; 01350 while (stripCurrent >= 0 && toStrip > 0) 01351 { 01352 char & c = ret[ stripCurrent ]; 01353 // count separators 01354 if (c == '/' || c == '\\' || c == ':') 01355 --toStrip; 01356 c=0; 01357 --stripCurrent; 01358 } 01359 01360 #ifdef DEBUG_PATH 01361 std::cout << "Parent: " << ret << "\n"; 01362 #endif 01363 01364 return tString(static_cast<char const *>(ret)); 01365 }
static char const* GetPrefix | ( | ) | [static] |
Definition at line 1478 of file tDirectories.cpp.
References GeneratePrefix().
Referenced by tDirectoriesCommandLineAnalyzer::DoAnalyze(), and st_RelocatePath().
01479 { 01480 static tString ret( GeneratePrefix() ); 01481 return ret; 01482 }
static bool mkdir_recurse | ( | char * | pathname, | |
size_t | safe_path | |||
) | [static] |
Definition at line 255 of file tDirectories.cpp.
References con, and st_IsPathDelimiter().
Referenced by tPath::GetWritePath(), and tPathResource::GetWritePath().
00255 { 00256 // method: strip path segments from the end, try to make the directory up to there. 00257 // once this succeeded, rebuild the path, making all the subdirectories as you go. 00258 00259 size_t i; 00260 bool fs = false; // forward search flag. if set, start rebuilding the path 00261 bool e = false; // error flag. 00262 00263 size_t len = strlen(pathname); // the total length of the path 00264 00265 for (i = len - 1; i < len && !e; fs ? ++i : --i) { 00266 if ( st_IsPathDelimiter( pathname[i] ) ) { 00267 if (pathname[i + 1] == '.' && i + 2 > safe_path) 00268 return false; // abort; we have a hidden file/dir! 00269 char delimiter = pathname[i]; 00270 pathname[i] = '\0'; 00271 00272 #ifdef DEBUG_PATH 00273 static bool first = true; 00274 if (fs || first ) 00275 { 00276 first = false; 00277 con << "Making directory " << pathname << "\n"; 00278 } 00279 #endif 00280 00281 if (!mkdir(pathname, 0777) || errno == EEXIST) 00282 fs = true; 00283 else if (fs) 00284 e = true; 00285 pathname[i] = delimiter; 00286 } 00287 if (i == 0 && !fs) 00288 e = true; 00289 } 00290 return !e; 00291 }
static bool ReadDir | ( | tCommandLineParser & | parser, | |
tString & | target, | |||
const char * | argument | |||
) | [static] |
Definition at line 1557 of file tDirectories.cpp.
References expand_home_c, and tCommandLineParser::GetOption().
Referenced by tDirectoriesCommandLineAnalyzer::DoAnalyze().
01558 { 01559 if ( parser.GetOption( target, argument ) ) 01560 { 01561 target = expand_home_c( target ); 01562 01563 return true; 01564 } 01565 01566 return false; 01567 }
void ReplacePath | ( | tString & | path, | |
char const * | replacement | |||
) |
Definition at line 1275 of file tDirectories.cpp.
References tString::Len().
Referenced by TestConfigurationPath(), and TestDataPath().
01276 { 01277 // don't do a thing if the path is already set 01278 if ( path.Len() < 3 ) 01279 { 01280 path = replacement; 01281 } 01282 }
static bool st_IsPathDelimiter | ( | char | c | ) | [static] |
Definition at line 243 of file tDirectories.cpp.
Referenced by tPath::IsValidPath(), and mkdir_recurse().
void st_PrintPathInfo | ( | tOutput & | buf | ) |
Definition at line 1671 of file tDirectories.cpp.
References tDirectories::Config(), tDirectories::Data(), tPath::GetPaths(), tPath::GetReadPath(), tDirectories::Resource(), tDirectories::Screenshot(), and tDirectories::Var().
Referenced by sg_DisplayVersionInfo().
01671 { 01672 tString const hcol("0xff8888"); 01673 buf << hcol << "$path_info_user_cfg" << "0xRESETT\n " << tDirectories::Var().GetReadPath("user.cfg") << "\n" 01674 << hcol << "$path_info_config" << "0xRESETT\n" << tDirectories::Config().GetPaths() 01675 << hcol << "$path_info_resource" << "0xRESETT\n" << tDirectories::Resource().GetPaths() 01676 << hcol << "$path_info_data" << "0xRESETT\n" << tDirectories::Data().GetPaths() 01677 << hcol << "$path_info_screenshot" << "0xRESETT\n" << tDirectories::Screenshot().GetPaths() 01678 << hcol << "$path_info_var" << "0xRESETT\n" << tDirectories::Var().GetPaths(); 01679 }
Definition at line 1496 of file tDirectories.cpp.
References GetPrefix(), tString::Len(), st_prefixCompiled, tString::StartsWith(), and tString::SubStr().
Referenced by FindConfigurationPath(), and FindDataPath().
01497 { 01498 // fetch prefix as it was compiled in 01499 tString const & prefixCompiled = st_prefixCompiled; 01500 // and as it is now 01501 static tString prefixNow(GetPrefix()); 01502 01503 // see if the passed string starts with it 01504 if ( original.StartsWith( prefixCompiled ) ) 01505 { 01506 // replace the prefix with the real prefix and return the result 01507 return prefixNow + original.SubStr( prefixCompiled.Len()-1 ); 01508 } 01509 else 01510 { 01511 // don't relocate and hope it works 01512 return original; 01513 } 01514 }
bool TestConfigurationPath | ( | char const * | path | ) |
Definition at line 1301 of file tDirectories.cpp.
References con, ReplacePath(), st_ConfigDir, and TestPath().
Referenced by tDirectoriesCommandLineAnalyzer::DoInitialize(), and FindConfigurationPath().
01302 { 01303 if ( TestPath( path, "settings.cfg" ) ) 01304 { 01305 #ifdef DEBUG_PATH 01306 con << "Configuration path " << path << " is good.\n"; 01307 #endif 01308 // replace data paths 01309 ReplacePath( st_ConfigDir, path ); 01310 01311 return true; 01312 } 01313 01314 #ifdef DEBUG_PATH 01315 con << "Configuration path " << path << " is bad!\n"; 01316 #endif 01317 01318 return false; 01319 }
bool TestDataPath | ( | char const * | path | ) |
Definition at line 1322 of file tDirectories.cpp.
References con, ReplacePath(), st_DataDir, and TestPath().
Referenced by tDirectoriesCommandLineAnalyzer::DoInitialize(), and FindDataPath().
01323 { 01324 if ( TestPath( path, "language/english_base.txt") ) 01325 { 01326 #ifdef DEBUG_PATH 01327 con << "Data path " << path << " is good.\n"; 01328 #endif 01329 // replace data paths 01330 ReplacePath( st_DataDir, path ); 01331 01332 return true; 01333 } 01334 01335 #ifdef DEBUG_PATH 01336 con << "Data path " << path << " is bad!\n"; 01337 #endif 01338 01339 return false; 01340 }
bool TestPath | ( | char const * | path, | |
char const * | file | |||
) |
Definition at line 1285 of file tDirectories.cpp.
References con.
Referenced by tDirectoriesCommandLineAnalyzer::DoInitialize(), GeneratePrefix(), TestConfigurationPath(), and TestDataPath().
01286 { 01287 std::string testData( path ); 01288 testData += "/"; 01289 testData += file; 01290 std::ifstream f(testData.c_str()); 01291 01292 01293 #ifdef DEBUG_PATH 01294 con << "Testing existence of file " << testData << ( f.good() ? " : good.\n" : " : bad!\n" ); 01295 #endif 01296 01297 return ( f.good() ); 01298 }
Definition at line 1195 of file tDirectories.cpp.
References tString::Len().
Referenced by tDirectories::SortFiles().
01196 { 01197 for (int i = 0; i < s1.Len() - 1; i++) 01198 { 01199 if ( tolower( s2( i ) ) >= tolower( s1( i ) ) ) 01200 { 01201 return false; 01202 } 01203 } 01204 return true; 01205 }
tDirectoriesCommandLineAnalyzer analyzer [static] |
Definition at line 1657 of file tDirectories.cpp.
const char* s_topSourceDir = "." [static] |
Definition at line 55 of file tDirectories.cpp.
Referenced by tDirectoriesCommandLineAnalyzer::DoInitialize().
tString st_AutoResourceDir("") [static] |
tString st_bindirCompiled(BINDIR) [static] |
Referenced by GeneratePrefix().
bool st_checkPathAbsolute = true [static] |
Definition at line 293 of file tDirectories.cpp.
bool st_checkPathHidden = true [static] |
Definition at line 295 of file tDirectories.cpp.
bool st_checkPathRelative = true [static] |
Definition at line 294 of file tDirectories.cpp.
const tPathConfig st_Config [static] |
Definition at line 546 of file tDirectories.cpp.
tString st_ConfigDir("") [static] |
Definition at line 566 of file tDirectories.cpp.
tString st_DataDir(".") [static] |
Referenced by tDirectoriesCommandLineAnalyzer::DoAnalyze(), tDirectoriesCommandLineAnalyzer::DoInitialize(), FindConfigurationPath(), tPathScripts::GetDirPath(), tPathResource::GetDirPath(), tPathResource::Paths(), tPathScreenshot::Paths(), tPathVar::Paths(), tPathData::Paths(), tPathConfig::Paths(), tDirectories::SetData(), and TestDataPath().
tString st_IncludedResourceDir("") [static] |
const tPathMusic st_Music [static] |
Definition at line 582 of file tDirectories.cpp.
tString st_MusicDir(".") [static] |
Referenced by tPathMusic::Paths().
tPathToExecutable st_pathToExecutable [static] |
Definition at line 1409 of file tDirectories.cpp.
tString st_prefixCompiled(PREFIX) [static] |
Referenced by GeneratePrefix(), and st_RelocatePath().
bool st_protectFiles = true [static] |
Definition at line 772 of file tDirectories.cpp.
tSettingItem<bool> st_protectFilesConf("PROTECT_SENSITIVE_FILES", st_protectFiles) |
const tPathResource st_Resource [static] |
Definition at line 715 of file tDirectories.cpp.
tString st_ResourceDir("") [static] |
const tPathScreenshot st_Screenshot [static] |
Definition at line 652 of file tDirectories.cpp.
tString st_ScreenshotDir("") [static] |
Referenced by tPathScreenshot::Paths(), and tDirectories::SetScreenshot().
tString st_ScriptDir("") [static] |
const tPathScripts st_Scripts [static] |
Definition at line 727 of file tDirectories.cpp.
tString st_UserConfigDir("") [static] |
char* st_userConfigs[] |
Definition at line 771 of file tConfiguration.cpp.
tString st_UserDataDir(expand_home_c("~/."PROGDIR)) [static] |
Definition at line 630 of file tDirectories.cpp.
Referenced by tDirectoriesCommandLineAnalyzer::DoAnalyze(), tPathVar::Paths(), and tDirectories::SetVar().