diff options
Diffstat (limited to 'scripts/kconfig/util.c')
| -rw-r--r-- | scripts/kconfig/util.c | 33 | 
1 files changed, 13 insertions, 20 deletions
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c index c6f6e21b809f..a365594770d9 100644 --- a/scripts/kconfig/util.c +++ b/scripts/kconfig/util.c @@ -14,18 +14,16 @@  struct file *file_lookup(const char *name)  {  	struct file *file; -	char *file_name = sym_expand_string_value(name);  	for (file = file_list; file; file = file->next) {  		if (!strcmp(name, file->name)) { -			free(file_name);  			return file;  		}  	}  	file = xmalloc(sizeof(*file));  	memset(file, 0, sizeof(*file)); -	file->name = file_name; +	file->name = xstrdup(name);  	file->next = file_list;  	file_list = file;  	return file; @@ -34,8 +32,6 @@ struct file *file_lookup(const char *name)  /* write a dependency file as used by kbuild to track dependencies */  int file_write_dep(const char *name)  { -	struct symbol *sym, *env_sym; -	struct expr *e;  	struct file *file;  	FILE *out; @@ -54,21 +50,7 @@ int file_write_dep(const char *name)  	fprintf(out, "\n%s: \\\n"  		     "\t$(deps_config)\n\n", conf_get_autoconfig_name()); -	expr_list_for_each_sym(sym_env_list, e, sym) { -		struct property *prop; -		const char *value; - -		prop = sym_get_env_prop(sym); -		env_sym = prop_get_symbol(prop); -		if (!env_sym) -			continue; -		value = getenv(env_sym->name); -		if (!value) -			value = ""; -		fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); -		fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); -		fprintf(out, "endif\n"); -	} +	env_write_dep(out, conf_get_autoconfig_name());  	fprintf(out, "\n$(deps_config): ;\n");  	fclose(out); @@ -165,3 +147,14 @@ char *xstrdup(const char *s)  	fprintf(stderr, "Out of memory.\n");  	exit(1);  } + +char *xstrndup(const char *s, size_t n) +{ +	char *p; + +	p = strndup(s, n); +	if (p) +		return p; +	fprintf(stderr, "Out of memory.\n"); +	exit(1); +}  | 
