return sd_bus_message_append(m, "s", formatted);
}
+
+const char *home_record_dir(void) {
+ return secure_getenv("SYSTEMD_HOME_RECORD_DIR") ?: "/var/lib/systemd/home/";
+}
/* Many of our operations might be slow due to crypto, fsck, recursive chown() and so on. For these
* operations permit a *very* long timeout */
#define HOME_SLOW_BUS_CALL_TIMEOUT_USEC (2*USEC_PER_MINUTE)
+
+const char *home_record_dir(void);
return r;
(void) mkdir("/var/lib/systemd/", 0755);
- (void) mkdir("/var/lib/systemd/home/", 0700);
+ (void) mkdir(home_record_dir(), 0700);
- fn = strjoina("/var/lib/systemd/home/", h->user_name, ".identity");
+ fn = strjoina(home_record_dir(), "/", h->user_name, ".identity");
r = write_string_file(fn, text, WRITE_STRING_FILE_ATOMIC|WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MODE_0600|WRITE_STRING_FILE_SYNC);
if (r < 0)
assert(h);
- fn = strjoina("/var/lib/systemd/home/", h->user_name, ".identity");
+ fn = strjoina(home_record_dir(), "/", h->user_name, ".identity");
if (unlink(fn) < 0 && errno != ENOENT)
return -errno;
if (unlinkat(dir_fd, fname, 0) < 0)
return log_error_errno(errno, "Failed to remove empty user record file %s: %m", fname);
- log_notice("Discovered empty user record file /var/lib/systemd/home/%s, removed automatically.", fname);
+ log_notice("Discovered empty user record file %s/%s, removed automatically.", home_record_dir(), fname);
return 0;
}
assert(m);
- d = opendir("/var/lib/systemd/home/");
+ d = opendir(home_record_dir());
if (!d)
return log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_ERR, errno,
- "Failed to open /var/lib/systemd/home/: %m");
+ "Failed to open %s: %m", home_record_dir());
FOREACH_DIRENT(de, d, return log_error_errno(errno, "Failed to read record directory: %m")) {
_cleanup_free_ char *n = NULL;