Browse Source

cleanup/simplify kconfig changes for O= builds

No functional change.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Peter Korsgaard 15 years ago
parent
commit
b8cca06b50
3 changed files with 46 additions and 66 deletions
  1. 20 44
      package/config/confdata.c
  2. 0 1
      package/config/lkc.h
  3. 26 21
      package/config/util.c

+ 20 - 44
package/config/confdata.c

@@ -404,6 +404,9 @@ int conf_write(const char *name)
 	int use_timestamp = 1;
 	char *env;
 
+	if (!name)
+		name = conf_get_configname();
+
 	dirname[0] = 0;
 	if (name && name[0]) {
 		struct stat st;
@@ -423,17 +426,8 @@ int conf_write(const char *name)
 				basename = conf_get_configname();
 		} else
 			basename = name;
-	} else {
-		char *slash;
-
+	} else
 		basename = conf_get_configname();
-		if((slash = strrchr(basename, '/'))) {
-			int size = slash - basename + 1;
-			memcpy(dirname, basename, size);
-			dirname[size] = 0;
-			basename = slash + 1;
-		}
-	}
 
 	sprintf(newname, "%s%s", dirname, basename);
 	env = getenv("KCONFIG_OVERWRITECONFIG");
@@ -697,51 +691,31 @@ int conf_write_autoconf(void)
 	FILE *out, *out_h;
 	time_t now;
 	int i, l;
-	char buf[PATH_MAX+1];
-	char buf2[PATH_MAX+1];
+	char dir[PATH_MAX+1], buf[PATH_MAX+1];
+	char *s;
 
-	sym_clear_all_valid();
+	strcpy(dir, conf_get_configname());
+	s = strrchr(dir, '/');
+	if (s)
+		s[1] = 0;
+	else
+		dir[0] = 0;
 
-	name = conf_get_configname();
-	str = strrchr(name, '/');
+	sym_clear_all_valid();
 
-	memset(buf, 0, PATH_MAX+1);
-	if(str)
-	{
-		strncpy(buf, name, str - name + 1);
-	}
-	strcat(buf, ".config.cmd");
+	sprintf(buf, "%s.config.cmd", dir);
 	file_write_dep(buf);
 
-	memset(buf, 0, PATH_MAX+1);
-	if(str)
-	{
-		strncpy(buf, name, str - name + 1);
-	}
-	strcat(buf, ".auto.deps");
-	write_make_deps(buf);
-
 	if (conf_split_config())
 		return 1;
 
-	memset(buf, 0, PATH_MAX+1);
-	if(str)
-	{
-		strncpy(buf, name, str - name + 1);
-	}
-	strcat(buf, ".tmpconfig");
-	memset(buf2, 0, PATH_MAX+1);
-	if(str)
-	{
-		strncpy(buf2, name, str - name + 1);
-	}
-	strcat(buf2, ".tmpconfig.h");
-
+	sprintf(buf, "%s.tmpconfig", dir);
 	out = fopen(buf, "w");
 	if (!out)
 		return 1;
 
-	out_h = fopen(buf2, "w");
+	sprintf(buf, "%s.tmpconfig.h", dir);
+	out_h = fopen(buf, "w");
 	if (!out_h) {
 		fclose(out);
 		return 1;
@@ -823,13 +797,15 @@ int conf_write_autoconf(void)
 	name = getenv("KCONFIG_AUTOHEADER");
 	if (!name)
 		name = "include/linux/autoconf.h";
-	if (rename(buf2, name))
+	sprintf(buf, "%s.tmpconfig.h", dir);
+	if (rename(buf, name))
 		return 1;
 	name = conf_get_autoconfig_name();
 	/*
 	 * This must be the last step, kbuild has a dependency on auto.conf
 	 * and this marks the successful completion of the previous steps.
 	 */
+	sprintf(buf, "%s.tmpconfig", dir);
 	if (rename(buf, name))
 		return 1;
 

+ 0 - 1
package/config/lkc.h

@@ -102,7 +102,6 @@ void menu_set_type(int type);
 /* util.c */
 struct file *file_lookup(const char *name);
 int file_write_dep(const char *name);
-int write_make_deps(const char *name);
 
 struct gstr {
 	size_t len;

+ 26 - 21
package/config/util.c

@@ -51,25 +51,27 @@ static char* br2_symbol_printer(const char * const in)
 }
 
 /* write dependencies of the infividual config-symbols */
-int write_make_deps(const char *name)
+static int write_make_deps(const char *name)
 {
-	const char *str;
-	char buf[PATH_MAX+1];
+	char *str;
+	char dir[PATH_MAX+1], buf[PATH_MAX+1], buf2[PATH_MAX+1];
 	struct menu *menu;
 	struct symbol *sym;
 	struct property *prop, *p;
 	unsigned done;
+	const char * const name_tmp = "..make.deps.tmp";
 	FILE *out;
 	if (!name)
 		name = ".auto.deps";
 
-	str = strrchr(name, '/');
-	memset(buf, 0, PATH_MAX+1);
-	if(str)
-	{
-		strncpy(buf, name, str - name + 1);
-	}
-	strcat(buf, "..make.deps.tmp");
+	strcpy(dir, conf_get_configname());
+	str = strrchr(dir, '/');
+	if (str)
+		str[1] = 0;
+	else
+		dir[0] = 0;
+
+	sprintf(buf, "%s%s", dir, name_tmp);
 	out = fopen(buf, "w");
 	if (!out)
 		return 1;
@@ -129,7 +131,8 @@ next:
 		}
 	}
 	fclose(out);
-	rename(buf, name);
+	sprintf(buf2, "%s%s", dir, name);
+	rename(buf, buf2);
 	printf(_("#\n"
 		 "# make dependencies written to %s\n"
 		 "# ATTENTION buildroot devels!\n"
@@ -141,8 +144,8 @@ next:
 /* write a dependency file as used by kbuild to track dependencies */
 int file_write_dep(const char *name)
 {
-	const char *str;
-	char buf[PATH_MAX+1];
+	char *str;
+	char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1];
 	struct symbol *sym, *env_sym;
 	struct expr *e;
 	struct file *file;
@@ -151,14 +154,14 @@ int file_write_dep(const char *name)
 	if (!name)
 		name = ".kconfig.d";
 
-	str = strrchr(name, '/');
-	memset(buf, 0, PATH_MAX+1);
-	if(str)
-	{
-		strncpy(buf, name, str - name + 1);
-	}
-	strcat(buf, "..config.tmp");
+	strcpy(dir, conf_get_configname());
+	str = strrchr(dir, '/');
+	if (str)
+		str[1] = 0;
+	else
+		dir[0] = 0;
 
+	sprintf(buf, "%s..config.tmp", dir);
 	out = fopen(buf, "w");
 	if (!out)
 		return 1;
@@ -190,7 +193,9 @@ int file_write_dep(const char *name)
 
 	fprintf(out, "\n$(deps_config): ;\n");
 	fclose(out);
-	rename(buf, name);
+	sprintf(buf2, "%s%s", dir, name);
+	rename(buf, buf2);
+	return write_make_deps(NULL);
 }