summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMasahiro Yamada <masahiroy@kernel.org>2024-02-02 18:58:07 +0300
committerMasahiro Yamada <masahiroy@kernel.org>2024-02-19 12:20:40 +0300
commit52907c07c49b7b820924773d596c5eec5eaf7469 (patch)
tree2f72c09e50d916bbd86fa62c4276d6fae2da817f /scripts
parentd3d16228a520ce49884d3bb90b67c12726c63020 (diff)
downloadlinux-52907c07c49b7b820924773d596c5eec5eaf7469.tar.xz
kconfig: replace current_pos with separate cur_{filename,lineno}
Replace current_pos with separate variables representing the file name and the line number, respectively. No functional change is intended. By the way, you might wonder why the "<none>" fallback exists in zconf_curname(). menu_add_symbol() saves the current file and the line number. It is intended to be called only during the yyparse() time. However, menu_finalize() calls it, where there is no file being parsed. This is a long-standing hack that should be fixed later. I left a FIXME comment. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/kconfig/lexer.l25
1 files changed, 17 insertions, 8 deletions
diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l
index 1bb372868ecf..540098435a3b 100644
--- a/scripts/kconfig/lexer.l
+++ b/scripts/kconfig/lexer.l
@@ -22,10 +22,14 @@
#define START_STRSIZE 16
-static struct {
- struct file *file;
- int lineno;
-} current_pos;
+/* The Kconfig file currently being parsed. */
+static const char *cur_filename;
+
+/*
+ * The line number of the current statement. This does not match yylineno.
+ * yylineno is used by the lexer, while cur_lineno is used by the parser.
+ */
+static int cur_lineno;
static int prev_prev_token = T_EOL;
static int prev_token = T_EOL;
@@ -279,9 +283,14 @@ repeat:
* of each statement. Generally, \n is a statement
* terminator in Kconfig, but it is not always true
* because \n could be escaped by a backslash.
+ *
+ * FIXME:
+ * cur_filename and cur_lineno are used even after
+ * yyparse(); menu_finalize() calls menu_add_symbol().
+ * This should be fixed.
*/
- current_pos.file = current_file;
- current_pos.lineno = yylineno;
+ cur_filename = current_file ? current_file->name : "<none>";
+ cur_lineno = yylineno;
}
}
@@ -462,10 +471,10 @@ static void zconf_endfile(void)
int zconf_lineno(void)
{
- return current_pos.lineno;
+ return cur_lineno;
}
const char *zconf_curname(void)
{
- return current_pos.file ? current_pos.file->name : "<none>";
+ return cur_filename;
}