util: unify reading of /proc/cmdline
Instead of individually checking for containers in each user do this once in a new call proc_cmdline() that read the file only if we are not in a container.
This commit is contained in:
@@ -32,7 +32,6 @@
|
||||
#include "mount-setup.h"
|
||||
#include "special.h"
|
||||
#include "mkdir.h"
|
||||
#include "virt.h"
|
||||
#include "fileio.h"
|
||||
|
||||
static const char *arg_dest = "/tmp";
|
||||
@@ -395,16 +394,16 @@ static int parse_fstab(const char *prefix, bool initrd) {
|
||||
|
||||
static int parse_new_root_from_proc_cmdline(void) {
|
||||
_cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL;
|
||||
char *w, *state;
|
||||
int r;
|
||||
size_t l;
|
||||
bool noauto, nofail;
|
||||
char *w, *state;
|
||||
size_t l;
|
||||
int r;
|
||||
|
||||
r = read_one_line_file("/proc/cmdline", &line);
|
||||
if (r < 0) {
|
||||
log_error("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
|
||||
r = proc_cmdline(&line);
|
||||
if (r < 0)
|
||||
log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
|
||||
if (r <= 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
opts = strdup("ro");
|
||||
type = strdup("auto");
|
||||
@@ -477,17 +476,14 @@ static int parse_new_root_from_proc_cmdline(void) {
|
||||
static int parse_proc_cmdline(void) {
|
||||
_cleanup_free_ char *line = NULL;
|
||||
char *w, *state;
|
||||
int r;
|
||||
size_t l;
|
||||
int r;
|
||||
|
||||
if (detect_container(NULL) > 0)
|
||||
return 0;
|
||||
|
||||
r = read_one_line_file("/proc/cmdline", &line);
|
||||
if (r < 0) {
|
||||
r = proc_cmdline(&line);
|
||||
if (r < 0)
|
||||
log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
|
||||
if (r <= 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
FOREACH_WORD_QUOTED(w, l, line, state) {
|
||||
_cleanup_free_ char *word = NULL;
|
||||
|
||||
Reference in New Issue
Block a user