Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f855aa6 authored by Sam Ravnborg's avatar Sam Ravnborg
Browse files

kconfig: add helper to set config symbol from environment variable



Add conf_set_env_sym() that can set an already defined symbol
based on the value of an environment variable.

Unknown symbols are silently ignored.
A warning is printed if the value of the environment variable
is unexpected.

Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
parent 9c900a9c
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -145,6 +145,33 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
	return 0;
}

/* Read an environment variable and assign the value to the symbol */
int conf_set_env_sym(const char *env, const char *symname, int def)
{
	struct symbol *sym;
	char *p;
	int def_flags;

	p = getenv(env);
	if (p) {
		char warning[200];
		sprintf(warning, "Environment variable (%s = \"%s\")", env, p);
		conf_filename = warning;
		def_flags = SYMBOL_DEF << def;
		if (def == S_DEF_USER) {
			sym = sym_find(symname);
			if (!sym)
				return 1;
		} else {
			sym = sym_lookup(symname, 0);
			if (sym->type == S_UNKNOWN)
				sym->type = S_OTHER;
		}
		conf_set_sym_val(sym, def, def_flags, p);
	}
	return 0;
}

int conf_read_simple(const char *name, int def)
{
	FILE *in = NULL;
+1 −0
Original line number Diff line number Diff line

/* confdata.c */
P(conf_parse,void,(const char *name));
P(conf_set_env_sym,int,(const char *envname, const char *symname, int def));
P(conf_read,int,(const char *name));
P(conf_read_simple,int,(const char *name, int));
P(conf_write,int,(const char *name));