sysusers: optionally, read sysuers configuration from standard input

This commit is contained in:
Lennart Poettering 2014-08-19 02:14:32 +02:00
parent d61bb44a89
commit dfc87cbfe5
2 changed files with 18 additions and 8 deletions

View file

@ -75,7 +75,10 @@
basename of a file is specified, all directories as
specified in
<citerefentry><refentrytitle>sysusers.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
are searched for a matching file.</para>
are searched for a matching file. If the string
<filename>-</filename> is specified as filenames
entries from the standard input of the process are
read.</para>
</refsect1>
<refsect1>

View file

@ -1573,20 +1573,27 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
static int read_config_file(const char *fn, bool ignore_enoent) {
_cleanup_fclose_ FILE *f = NULL;
_cleanup_fclose_ FILE *rf = NULL;
FILE *f = NULL;
char line[LINE_MAX];
unsigned v = 0;
int r;
assert(fn);
r = search_and_fopen_nulstr(fn, "re", arg_root, conf_file_dirs, &f);
if (r < 0) {
if (ignore_enoent && r == -ENOENT)
return 0;
if (streq(fn, "-"))
f = stdin;
else {
r = search_and_fopen_nulstr(fn, "re", arg_root, conf_file_dirs, &rf);
if (r < 0) {
if (ignore_enoent && r == -ENOENT)
return 0;
log_error("Failed to open '%s', ignoring: %s", fn, strerror(-r));
return r;
log_error("Failed to open '%s', ignoring: %s", fn, strerror(-r));
return r;
}
f = rf;
}
FOREACH_LINE(line, f, break) {