From fbedacfc8caa1ec8f14e664a881cb0a93c8f8712 Mon Sep 17 00:00:00 2001 From: Jérémie Koenig Date: Fri, 26 Mar 2010 19:08:53 +0100 Subject: Hurd compat fixes. Mostly dealing with absent PATH_MAX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Koenig Signed-off-by: Denys Vlasenko --- scripts/basic/docproc.c | 22 ++++++++++++---------- scripts/basic/fixdep.c | 4 ++-- scripts/kconfig/confdata.c | 3 ++- scripts/kconfig/mconf.c | 2 +- scripts/kconfig/zconf.l | 3 ++- scripts/kconfig/zconf.y | 6 ++++-- 6 files changed, 23 insertions(+), 17 deletions(-) (limited to 'scripts') diff --git a/scripts/basic/docproc.c b/scripts/basic/docproc.c index dc7a0fcd2..ef5181226 100644 --- a/scripts/basic/docproc.c +++ b/scripts/basic/docproc.c @@ -79,7 +79,9 @@ void exec_kernel_doc(char **svec) { pid_t pid; int ret; - char real_filename[PATH_MAX + 1]; + char *real_filename; + int rflen; + /* Make sure output generated so far are flushed */ fflush(stdout); switch(pid=fork()) { @@ -87,10 +89,11 @@ void exec_kernel_doc(char **svec) perror("fork"); exit(1); case 0: - memset(real_filename, 0, sizeof(real_filename)); - strncat(real_filename, getenv("SRCTREE"), PATH_MAX); - strncat(real_filename, KERNELDOCPATH KERNELDOC, - PATH_MAX - strlen(real_filename)); + rflen = strlen(getenv("SRCTREE")); + rflen += strlen(KERNELDOCPATH KERNELDOC); + real_filename = alloca(rflen + 1); + strcpy(real_filename, getenv("SRCTREE")); + strcat(real_filename, KERNELDOCPATH KERNELDOC); execvp(real_filename, svec); fprintf(stderr, "exec "); perror(real_filename); @@ -166,11 +169,10 @@ void find_export_symbols(char * filename) struct symfile *sym; char line[MAXLINESZ]; if (filename_exist(filename) == NULL) { - char real_filename[PATH_MAX + 1]; - memset(real_filename, 0, sizeof(real_filename)); - strncat(real_filename, getenv("SRCTREE"), PATH_MAX); - strncat(real_filename, filename, - PATH_MAX - strlen(real_filename)); + int rflen = strlen(getenv("SRCTREE")) + strlen(filename); + char *real_filename = alloca(rflen + 1); + strcpy(real_filename, getenv("SRCTREE")); + strcat(real_filename, filename); sym = add_new_file(filename); fp = fopen(real_filename, "r"); if (fp == NULL) diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 6d61044c4..bbb575cec 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -203,7 +203,7 @@ void clear_config(void) */ void use_config(char *m, int slen) { - char s[PATH_MAX]; + char *s = alloca(slen+1); char *p; if (is_defined_config(m, slen)) @@ -310,7 +310,7 @@ void parse_dep_file(void *map, size_t len) char *m = map; char *end = m + len; char *p; - char s[PATH_MAX]; + char *s = alloca(len); p = memchr(m, ':', len); if (!p) { diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 9365a12c2..4f83fbfa2 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -70,12 +70,13 @@ static char *conf_expand_value(const char *in) char *conf_get_default_confname(void) { struct stat buf; - static char fullname[PATH_MAX+1]; + static char *fullname = NULL; char *env, *name; name = conf_expand_value(conf_defname); env = getenv(SRCTREE); if (env) { + fullname = realloc(fullname, strlen(env) + strlen(name) + 2); sprintf(fullname, "%s/%s", env, name); if (!stat(fullname, &buf)) return fullname; diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 647ec09f1..0c548bfc0 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -258,7 +258,7 @@ search_help[] = N_( static char buf[4096], *bufptr = buf; static char input_buf[4096]; -static char filename[PATH_MAX+1] = ".config"; +static const char filename[] = ".config"; static char *args[1024], **argptr = args; static int indent; static struct termios ios_org; diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l index d839577ca..6a58b80d3 100644 --- a/scripts/kconfig/zconf.l +++ b/scripts/kconfig/zconf.l @@ -265,13 +265,14 @@ static void zconf_endhelp(void) */ FILE *zconf_fopen(const char *name) { - char *env, fullname[PATH_MAX+1]; + char *env; FILE *f; f = fopen(name, "r"); if (!f && name[0] != '/') { env = getenv(SRCTREE); if (env) { + char *fullname = alloca(strlen(env) + strlen(name) + 2); sprintf(fullname, "%s/%s", env, name); f = fopen(fullname, "r"); } diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y index 0a7a79664..2007a4e02 100644 --- a/scripts/kconfig/zconf.y +++ b/scripts/kconfig/zconf.y @@ -14,8 +14,6 @@ #define LKC_DIRECT_LINK #include "lkc.h" -#include "zconf.hash.c" - #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) #define PRINTD 0x0001 @@ -99,6 +97,10 @@ static struct menu *current_menu, *current_entry; menu_end_menu(); } if_entry menu_entry choice_entry +%{ +#include "zconf.hash.c" +%} + %% input: stmt_list; -- cgit v1.2.3