<< std::endl;
String fname = GetCrashReportFilename();
- Utility::MkDir(Utility::DirName(fname), 0750);
+ String dirName = Utility::DirName(fname);
+
+ if (!Utility::PathExists(dirName)) {
+#ifndef _WIN32
+ if (mkdir(dirName.CStr(), 0700) < 0 && errno != EEXIST) {
+#else /*_ WIN32 */
+ if (mkdir(dirName.CStr()) < 0 && errno != EEXIST) {
+#endif /* _WIN32 */
+ std::cerr << "Could not create directory '" << dirName << "': Error " << errno << ", " << strerror(errno) << "\n";
+ }
+ }
bool interactive_debugger = Convert::ToBool(ScriptGlobal::Get("AttachDebugger"));
ofs << "\n";
ofs.close();
} else {
- Log(LogCritical, "Application", "Icinga 2 has terminated unexpeectedly. Attaching debugger...");
+ Log(LogCritical, "Application", "Icinga 2 has terminated unexpectedly. Attaching debugger...");
}
AttachDebugger(fname, interactive_debugger);
#endif /* _WIN32 */
String fname = GetCrashReportFilename();
- Utility::MkDir(Utility::DirName(fname), 0750);
+ String dirName = Utility::DirName(fname);
+
+ if (!Utility::PathExists(dirName)) {
+#ifndef _WIN32
+ if (mkdir(dirName.CStr(), 0700) < 0 && errno != EEXIST) {
+#else /*_ WIN32 */
+ if (mkdir(dirName.CStr()) < 0 && errno != EEXIST) {
+#endif /* _WIN32 */
+ std::cerr << "Could not create directory '" << dirName << "': Error " << errno << ", " << strerror(errno) << "\n";
+ }
+ }
bool interactive_debugger = Convert::ToBool(ScriptGlobal::Get("AttachDebugger"));
- if (interactive_debugger) {
+ if (!interactive_debugger) {
std::ofstream ofs;
ofs.open(fname.CStr());
l_InExceptionHandler = true;
String fname = GetCrashReportFilename();
- Utility::MkDir(Utility::DirName(fname), 0750);
+ String dirName = Utility::DirName(fname);
+
+ if (!Utility::PathExists(dirName)) {
+#ifndef _WIN32
+ if (mkdir(dirName.CStr(), 0700) < 0 && errno != EEXIST) {
+#else /*_ WIN32 */
+ if (mkdir(dirName.CStr()) < 0 && errno != EEXIST) {
+#endif /* _WIN32 */
+ std::cerr << "Could not create directory '" << dirName << "': Error " << errno << ", " << strerror(errno) << "\n";
+ }
+ }
std::ofstream ofs;
ofs.open(fname.CStr());