]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Initialize the working_directory to a useful value until read from config file
authorAlain Spineux <alain@baculasystems.com>
Thu, 16 Jul 2020 11:40:01 +0000 (13:40 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:02:58 +0000 (09:02 +0100)
- to generate a backtrace in a valid directory
- use /tmp by default or the Windows directory given by GetTempPath()

bacula/src/dird/dird.c
bacula/src/filed/filed.c
bacula/src/lib/util.c
bacula/src/stored/stored.c

index 98f66e9a56d790bf0006c79c81e27738a78a6bf6..c54d4f8cc4a6ed53b17c6da0bf79d68ddfd47691 100644 (file)
@@ -255,6 +255,7 @@ int main (int argc, char *argv[])
    char *uid = NULL;
    char *gid = NULL;
 
+   init_working_directory();
    /* DELETE ME when bugs in MA1512, MA1632 MA1639 are fixed */
    MA1512_reload_job_end_cb = reload_job_end_cb;
 
index 964a13821df2987f759c8751a6bec906bbd75b1a..d15962480041e5748e4fb4acc76d1a00028918b1 100644 (file)
@@ -95,6 +95,7 @@ int main (int argc, char *argv[])
    char *gid = NULL;
 
    mark_heap();
+   init_working_directory();
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");
index fe6dea5aec42c9cd0037390833fd664e3e1b69b6..66736f518521578c59615301e97bb69c8b797fe5 100644 (file)
@@ -1005,7 +1005,27 @@ POOLMEM *edit_job_codes(JCR *jcr, POOLMEM *&omsg, char *imsg, const char *to, jo
    return omsg;
 }
 
-void set_working_directory(char *wd)
+/* initialize working_directory with a valid value until read from the config
+ * file, to have valid directory for backtrace
+ */
+void init_working_directory()
+{
+#ifdef HAVE_WIN32
+   static char tmp[MAX_PATH+1];
+   int ret = GetTempPathA(sizeof(tmp), tmp);
+   if (ret != 0) {
+      working_directory = tmp;
+   }
+#else
+   /* TMPDIR is the POSIX env variable, this is a better candidate than TMP */
+   working_directory = getenv("TMPDIR");
+   if (working_directory == NULL) {
+      working_directory = "/tmp";
+   }
+#endif
+}
+
+void set_working_directory(const char *wd)
 {
    struct stat stat_buf;
 
index 00280a907a1faf30a792db4a7c1200b23861c720..3de4ff523aab6d9f7a51cc0bec57dc79b862ab09 100644 (file)
@@ -132,6 +132,7 @@ int main (int argc, char *argv[])
    device_default_open_mode = omd_write;
 
    mark_heap();
+   init_working_directory();
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");