Preparation for reuse in vmspawn.
#include "log.h"
#include "missing-network.h"
#include "parse-util.h"
+#include "path-util.h"
#include "process-util.h"
#include "string-util.h"
#include "strv.h"
return fd;
}
+int parse_user_shell(const char *s, char **ret_sh, bool *ret_copy) {
+ char *sh;
+ int r;
+
+ if (path_is_absolute(s) && path_is_normalized(s)) {
+ sh = strdup(s);
+ if (!sh)
+ return -ENOMEM;
+
+ *ret_sh = sh;
+ *ret_copy = false;
+ } else {
+ r = parse_boolean(s);
+ if (r < 0)
+ return r;
+
+ *ret_sh = NULL;
+ *ret_copy = r;
+ }
+
+ return 0;
+}
+
static const char *mangle_base(const char *s, unsigned *base) {
const char *k;
int parse_range(const char *t, unsigned *lower, unsigned *upper);
int parse_errno(const char *t);
int parse_fd(const char *t);
+int parse_user_shell(const char *s, char **ret_sh, bool *ret_copy);
#define SAFE_ATO_REFUSE_PLUS_MINUS (1U << 30)
#define SAFE_ATO_REFUSE_LEADING_ZERO (1U << 29)
return 0;
}
-int parse_bind_user_shell(const char *s, char **ret_sh, bool *ret_copy) {
- char *sh;
- int r;
-
- if (path_is_absolute(s) && path_is_normalized(s)) {
- sh = strdup(s);
- if (!sh)
- return -ENOMEM;
-
- *ret_sh = sh;
- *ret_copy = false;
- } else {
- r = parse_boolean(s);
- if (r < 0)
- return r;
-
- *ret_sh = NULL;
- *ret_copy = r;
- }
-
- return 0;
-}
-
int config_parse_bind_user_shell(
const char *unit,
const char *filename,
return 0;
}
- r = parse_bind_user_shell(rvalue, &sh, ©);
+ r = parse_user_shell(rvalue, &sh, ©);
if (r == -ENOMEM)
return log_oom();
if (r < 0) {
CONFIG_PARSER_PROTOTYPE(config_parse_bind_user);
CONFIG_PARSER_PROTOTYPE(config_parse_bind_user_shell);
-int parse_bind_user_shell(const char *s, char **ret_sh, bool *ret_copy);
-
const char* resolv_conf_mode_to_string(ResolvConfMode a) _const_;
ResolvConfMode resolv_conf_mode_from_string(const char *s) _pure_;
case ARG_BIND_USER_SHELL: {
bool copy = false;
char *sh = NULL;
- r = parse_bind_user_shell(optarg, &sh, ©);
+ r = parse_user_shell(optarg, &sh, ©);
if (r == -ENOMEM)
return log_oom();
if (r < 0)