chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util, core: add support for ephemeral status lines
[elogind.git]
/
src
/
shared
/
path-lookup.c
diff --git
a/src/shared/path-lookup.c
b/src/shared/path-lookup.c
index a9c3e21d5120836ea8d02a64ab42d3c19b70ade7..ffdc5367cb79bf6f416f6950eedc75ebaff31d62 100644
(file)
--- a/
src/shared/path-lookup.c
+++ b/
src/shared/path-lookup.c
@@
-22,6
+22,7
@@
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <unistd.h>
#include <errno.h>
@@
-31,23
+32,35
@@
#include "path-util.h"
#include "path-lookup.h"
#include "path-util.h"
#include "path-lookup.h"
+static const char* const systemd_running_as_table[_SYSTEMD_RUNNING_AS_MAX] = {
+ [SYSTEMD_SYSTEM] = "system",
+ [SYSTEMD_USER] = "user"
+};
+
+DEFINE_STRING_TABLE_LOOKUP(systemd_running_as, SystemdRunningAs);
+
int user_config_home(char **config_home) {
const char *e;
int user_config_home(char **config_home) {
const char *e;
+ char *r;
e = getenv("XDG_CONFIG_HOME");
if (e) {
e = getenv("XDG_CONFIG_HOME");
if (e) {
- if (asprintf(config_home, "%s/systemd/user", e) < 0)
+ r = strappend(e, "/systemd/user");
+ if (!r)
return -ENOMEM;
return -ENOMEM;
+ *config_home = r;
return 1;
} else {
const char *home;
home = getenv("HOME");
if (home) {
return 1;
} else {
const char *home;
home = getenv("HOME");
if (home) {
- if (asprintf(config_home, "%s/.config/systemd/user", home) < 0)
+ r = strappend(home, "/.config/systemd/user");
+ if (!r)
return -ENOMEM;
return -ENOMEM;
+ *config_home = r;
return 1;
}
}
return 1;
}
}
@@
-224,14
+237,13
@@
fail:
int lookup_paths_init(
LookupPaths *p,
int lookup_paths_init(
LookupPaths *p,
-
Manager
RunningAs running_as,
+
Systemd
RunningAs running_as,
bool personal,
const char *generator,
const char *generator_early,
const char *generator_late) {
const char *e;
bool personal,
const char *generator,
const char *generator_early,
const char *generator_late) {
const char *e;
- char *t;
assert(p);
assert(p);
@@
-256,7
+268,7
@@
int lookup_paths_init(
* for the system stuff but avoid it for user
* stuff. */
* for the system stuff but avoid it for user
* stuff. */
- if (running_as ==
MANAGER
_USER) {
+ if (running_as ==
SYSTEMD
_USER) {
if (personal)
p->unit_path = user_dirs(generator, generator_early, generator_late);
if (personal)
p->unit_path = user_dirs(generator, generator_early, generator_late);
@@
-308,22
+320,19
@@
int lookup_paths_init(
return -ENOMEM;
strv_uniq(p->unit_path);
return -ENOMEM;
strv_uniq(p->unit_path);
- path_strv_remove_empty(p->unit_path);
if (!strv_isempty(p->unit_path)) {
if (!strv_isempty(p->unit_path)) {
-
- t = strv_join(p->unit_path, "\n\t");
+ char _cleanup_free_ *t = strv_join(p->unit_path, "\n\t");
if (!t)
return -ENOMEM;
if (!t)
return -ENOMEM;
- log_debug("Looking for unit files in:\n\t%s", t);
- free(t);
+ log_info("Looking for unit files in (higher priority first):\n\t%s", t);
} else {
} else {
- log_
debug
("Ignoring unit files.");
+ log_
info
("Ignoring unit files.");
strv_free(p->unit_path);
p->unit_path = NULL;
}
strv_free(p->unit_path);
p->unit_path = NULL;
}
- if (running_as ==
MANAGER
_SYSTEM) {
+ if (running_as ==
SYSTEMD
_SYSTEM) {
#ifdef HAVE_SYSV_COMPAT
/* /etc/init.d/ compatibility does not matter to users */
#ifdef HAVE_SYSV_COMPAT
/* /etc/init.d/ compatibility does not matter to users */
@@
-371,37
+380,32
@@
int lookup_paths_init(
strv_uniq(p->sysvinit_path);
strv_uniq(p->sysvrcnd_path);
strv_uniq(p->sysvinit_path);
strv_uniq(p->sysvrcnd_path);
- path_strv_remove_empty(p->sysvinit_path);
- path_strv_remove_empty(p->sysvrcnd_path);
if (!strv_isempty(p->sysvinit_path)) {
if (!strv_isempty(p->sysvinit_path)) {
-
- t = strv_join(p->sysvinit_path, "\n\t");
+ char _cleanup_free_ *t = strv_join(p->sysvinit_path, "\n\t");
if (!t)
return -ENOMEM;
if (!t)
return -ENOMEM;
- log_debug("Looking for SysV init scripts in:\n\t%s", t);
- free(t);
+ log_info("Looking for SysV init scripts in:\n\t%s", t);
} else {
} else {
- log_
debug
("Ignoring SysV init scripts.");
+ log_
info
("Ignoring SysV init scripts.");
strv_free(p->sysvinit_path);
p->sysvinit_path = NULL;
}
if (!strv_isempty(p->sysvrcnd_path)) {
strv_free(p->sysvinit_path);
p->sysvinit_path = NULL;
}
if (!strv_isempty(p->sysvrcnd_path)) {
-
-
t =
strv_join(p->sysvrcnd_path, "\n\t");
+ char _cleanup_free_ *t =
+
strv_join(p->sysvrcnd_path, "\n\t");
if (!t)
return -ENOMEM;
log_debug("Looking for SysV rcN.d links in:\n\t%s", t);
if (!t)
return -ENOMEM;
log_debug("Looking for SysV rcN.d links in:\n\t%s", t);
- free(t);
} else {
log_debug("Ignoring SysV rcN.d links.");
strv_free(p->sysvrcnd_path);
p->sysvrcnd_path = NULL;
}
#else
} else {
log_debug("Ignoring SysV rcN.d links.");
strv_free(p->sysvrcnd_path);
p->sysvrcnd_path = NULL;
}
#else
- log_
debug("Disabled SysV init scripts and rcN.d links support
");
+ log_
info("SysV init scripts and rcN.d links support disabled
");
#endif
}
#endif
}