X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-config.c;h=7e2cb40507b276c44516c91dc586c2d21d3d8575;hb=350f165da982685f2ea7c6d0899e9711b2c35982;hp=016da835c1835f7219bd8980a98d43cbbf230447;hpb=42da0c1455b0348c7163683023148ae37eb925e5;p=src%2Fapp-framework-binder.git diff --git a/src/afb-config.c b/src/afb-config.c index 016da835..7e2cb405 100644 --- a/src/afb-config.c +++ b/src/afb-config.c @@ -148,7 +148,7 @@ static AFB_options cliOptions[] = { {SET_WEAK_LDPATH, 1, "weak-ldpaths","Same as --ldpaths but ignore errors"}, {NO_LDPATH, 0, "no-ldpaths", "Discard default ldpaths loading"}, - {SET_AUTH_TOKEN, 1, "token", "Initial Secret [default=no-session, --token= for session without authentication]"}, + {SET_AUTH_TOKEN, 1, "token", "Initial Secret [default=random, use --token="" to allow any token]"}, {SET_RNDTOKEN, 0, "random-token","Enforce a random token"}, {DISPLAY_VERSION, 0, "version", "Display version and copyright"}, @@ -754,12 +754,47 @@ void afb_config_dump(struct afb_config *config) #undef NN } +static void on_environment_list(struct afb_config_list **to, const char *name) +{ + char *value = getenv(name); + + if (value) + list_add(to, value); +} + +static void on_environment_enum(int *to, const char *name, struct enumdesc *desc) +{ + char *value = getenv(name); + + if (value) { + while (desc->name) { + if (strcmp(desc->name, value)) + desc++; + else { + *to = desc->value; + return; + } + } + WARNING("Unknown value %s for environment variable %s, ignored", value, name); + } +} + +static void parse_environment(struct afb_config *config) +{ + on_environment_enum(&config->tracereq, "AFB_TRACEREQ", tracereq_desc); + on_environment_enum(&config->traceditf, "AFB_TRACEDITF", traceditf_desc); + on_environment_enum(&config->tracesvc, "AFB_TRACESVC", tracesvc_desc); + on_environment_enum(&config->traceevt, "AFB_TRACEEVT", traceevt_desc); + on_environment_list(&config->ldpaths, "AFB_LDPATHS"); +} + struct afb_config *afb_config_parse_arguments(int argc, char **argv) { struct afb_config *result; result = calloc(1, sizeof *result); + parse_environment(result); parse_arguments(argc, argv, result); fulfill_config(result); if (verbosity >= 3)