MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / DetectDataDir

Function DetectDataDir

libi2pd/FS.cpp:86–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84 }
85
86 void DetectDataDir(const std::string & cmdline_param, bool isService) {
87 // with 'datadir' option
88 if (cmdline_param != "") {
89 dataDir = cmdline_param;
90 return;
91 }
92
93#if !defined(MAC_OSX) && !defined(ANDROID)
94 // with 'service' option
95 if (isService) {
96#ifdef _WIN32
97 wchar_t commonAppData[MAX_PATH];
98 if(SHGetFolderPathW(NULL, CSIDL_COMMON_APPDATA, NULL, 0, commonAppData) != S_OK)
99 {
100#ifdef WIN32_APP
101 MessageBox(NULL, TEXT("Unable to get common AppData path!"), TEXT("I2Pd: error"), MB_ICONERROR | MB_OK);
102#else
103 fprintf(stderr, "Error: Unable to get common AppData path!");
104#endif
105 exit(1);
106 }
107 else
108 {
109#if ((BOOST_VERSION >= 108500) || STD_FILESYSTEM)
110 dataDir = fs_lib::path(commonAppData).string() + "\\" + appName;
111#else
112 dataDir = fs_lib::wpath(commonAppData).string() + "\\" + appName;
113#endif
114 }
115#else
116 dataDir = "/var/lib/" + appName;
117#endif
118 return;
119 }
120#endif
121
122 // detect directory as usual
123#ifdef _WIN32
124 wchar_t localAppData[MAX_PATH];
125
126 // check executable directory first
127 if(!GetModuleFileNameW(NULL, localAppData, MAX_PATH))
128 {
129#ifdef WIN32_APP
130 MessageBox(NULL, TEXT("Unable to get application path!"), TEXT("I2Pd: error"), MB_ICONERROR | MB_OK);
131#else
132 fprintf(stderr, "Error: Unable to get application path!");
133#endif
134 exit(1);
135 }
136 else
137 {
138#if ((BOOST_VERSION >= 108500) || STD_FILESYSTEM)
139 auto execPath = fs_lib::path(localAppData).parent_path();
140#else
141 auto execPath = fs_lib::wpath(localAppData).parent_path();
142#endif
143

Callers 2

initMethod · 0.85
InitI2PFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected