events_send_msg(NULL, "DD0005",
EVENTS_TYPE_DAEMON, "*Director*",
(intptr_t)get_first_port_host_order(director->DIRaddrs), "Director configuration reloaded");
+ update_pid_file(director->pid_directory, "bacula-dir",
+ get_first_port_host_order(director->DIRaddrs));
ret = true; // reload ok
}
free_pool_memory(errmsg);
}
+/*
+ * Update a standard "Unix" pid file.
+ */
+int update_pid_file(char *dir, const char *progname, int port)
+{
+ POOLMEM *fname = get_pool_memory(PM_FNAME);
+ int ret = 0;
+ int pidfd;
+
+ Mmsg(fname, "%s/%s.%d.pid", dir, progname, port);
+ if ((pidfd = open(fname, O_WRONLY|O_APPEND, 0640)) >= 0) {
+ btime_t now = time(NULL);
+ set_own_time(pidfd, fname, now, now);
+ // Update mtime
+ close(pidfd);
+ } else {
+ ret = -1;
+ }
+
+ free_pool_memory(fname);
+ return ret;
+}
+
/*
* Delete the pid file if we created it
*/
int create_lock_file (char *fname, const char *progname, const char *filetype, POOLMEM **errmsg, int *fd);
void create_pid_file (char *dir, const char *progname, int port);
int delete_pid_file (char *dir, const char *progname, int port);
+int update_pid_file (char *dir, const char *progname, int port);
void drop (char *uid, char *gid, bool keep_readall_caps);
int reset_job_user();
int change_job_user(char *uname, char *gname, char *errmsg, int errlen);