void Settings::LoadSettings() { pstring directory = getenv("HOME"); directory << "/.config"; if (!DoesDirectoryExist(directory.c_str())) mkdir(directory.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); directory << "/AimTux/"; if (!DoesDirectoryExist(directory.c_str())) mkdir(directory.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); }
pstring GetConfigDirectory() { pstring directory = getenv("HOME"); directory << "/.config"; if (!DoesDirectoryExist(directory.c_str())) mkdir(directory.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); directory << "/AimTux/"; if (!DoesDirectoryExist(directory.c_str())) mkdir(directory.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); return directory; }
void DirectorySearchRules::ResolveDirectory( ResChar destination[], unsigned destinationCount, const ResChar baseName[]) const { // We have a problem with basic paths (like '../') // These will match for most directories -- which means that // there is some ambiguity. Let's prefer to use the first // registered path for simple relative paths like this. bool useBaseName = (baseName[0] != '.' && DoesDirectoryExist(baseName)); if (!useBaseName) { const ResChar* b = _buffer; if (!_bufferOverflow.empty()) { b = AsPointer(_bufferOverflow.begin()); } const auto* baseEnd = XlStringEnd(baseName); ResChar tempBuffer[MaxPath]; ResChar* workingBuffer = (baseName!=destination) ? destination : tempBuffer; unsigned workingBufferSize = (baseName!=destination) ? destinationCount : unsigned(dimof(tempBuffer)); for (unsigned c=0; c<_startPointCount; ++c) { XlConcatPath(workingBuffer, workingBufferSize, &b[_startOffsets[c]], baseName, baseEnd); if (DoesDirectoryExist(workingBuffer)) { if (workingBuffer != destination) XlCopyString(destination, destinationCount, workingBuffer); return; } } } if (baseName != destination) XlCopyString(destination, destinationCount, baseName); }