diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-25 16:54:01 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-25 16:54:01 -0700 |
commit | f3ae1c75203535f65448517e46c8dd70a56b6c71 (patch) | |
tree | 58f719cb97666dcfb3392c6c0547d6cbce2e68c8 /scripts/kconfig/zconf.l | |
parent | 9720d75399fd2655a6b6fb06abcf548150f22362 (diff) | |
parent | d49e46875c11a09e80e76c66db90710369b8fe12 (diff) |
Merge branch 'kconfig-for-40' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6
* 'kconfig-for-40' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
xconfig: merge code path to conf_write()
kconfig: do not record timestamp in .config
gconfig: Hide unused left treeview when start up the interface
gconfig: enable rules hint for main treeviews
MAINTAINERS: Update KCONFIG entry
kconfig-language: add to hints
kconfig: Document the new "visible if" syntax
kconfig: quiet commands when V=0
kconfig: change update-po-config to reflect new layout of arch/um
kconfig: make update-po-config work in KBUILD_OUTPUT
kconfig: rearrange clean-files
kconfig: change gconf to modify hostprogs-y like nconf and mconf
kconfig: change qconf to modify hostprogs-y like nconf and mconf
kconfig: only build kxgettext when needed
nconfig: Silence unused return values from wattrset
kconfig: Do not record timestamp in auto.conf and autoconf.h
kconfig: get rid of unused flags
kconfig: allow multiple inclusion of the same file
kconfig: Avoid buffer underrun in choice input
Diffstat (limited to 'scripts/kconfig/zconf.l')
-rw-r--r-- | scripts/kconfig/zconf.l | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l index 3dbaec185cc..b22f884f902 100644 --- a/scripts/kconfig/zconf.l +++ b/scripts/kconfig/zconf.l @@ -294,11 +294,11 @@ void zconf_initscan(const char *name) current_file = file_lookup(name); current_file->lineno = 1; - current_file->flags = FILE_BUSY; } void zconf_nextfile(const char *name) { + struct file *iter; struct file *file = file_lookup(name); struct buffer *buf = malloc(sizeof(*buf)); memset(buf, 0, sizeof(*buf)); @@ -314,18 +314,25 @@ void zconf_nextfile(const char *name) buf->parent = current_buf; current_buf = buf; - if (file->flags & FILE_BUSY) { - printf("%s:%d: do not source '%s' from itself\n", - zconf_curname(), zconf_lineno(), name); - exit(1); - } - if (file->flags & FILE_SCANNED) { - printf("%s:%d: file '%s' is already sourced from '%s'\n", - zconf_curname(), zconf_lineno(), name, - file->parent->name); - exit(1); + for (iter = current_file->parent; iter; iter = iter->parent ) { + if (!strcmp(current_file->name,iter->name) ) { + printf("%s:%d: recursive inclusion detected. " + "Inclusion path:\n current file : '%s'\n", + zconf_curname(), zconf_lineno(), + zconf_curname()); + iter = current_file->parent; + while (iter && \ + strcmp(iter->name,current_file->name)) { + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno-1); + iter = iter->parent; + } + if (iter) + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno+1); + exit(1); + } } - file->flags |= FILE_BUSY; file->lineno = 1; file->parent = current_file; current_file = file; @@ -335,8 +342,6 @@ static void zconf_endfile(void) { struct buffer *parent; - current_file->flags |= FILE_SCANNED; - current_file->flags &= ~FILE_BUSY; current_file = current_file->parent; parent = current_buf->parent; |