From 3be912e4af90a9818a78239daaee4a15bdbcda06 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sat, 26 Oct 2019 10:01:46 +0200 Subject: [PATCH] parser: use grammar_file instead of current_file * src/parse-gram (%initial-action): here. (handle_skeleton): Don't depend on the current file name to look for "local" skeletons (subject to changes coming from "#lines"): depend only on the initial file name, the one given on the command line. --- src/parse-gram.y | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/parse-gram.y b/src/parse-gram.y index d5399c75..ccc3c315 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -136,8 +136,8 @@ { /* Bison's grammar can initial empty locations, hence a default location is needed. */ - boundary_set (&@$.start, current_file, 1, 1, 1); - boundary_set (&@$.end, current_file, 1, 1, 1); + boundary_set (&@$.start, grammar_file, 1, 1, 1); + boundary_set (&@$.end, grammar_file, 1, 1, 1); } /* Define the tokens together with their human representation. */ @@ -1033,16 +1033,16 @@ handle_skeleton (location const *loc, char const *skel) char const *skeleton_user = skel; if (strchr (skeleton_user, '/')) { - size_t dir_length = strlen (current_file); - while (dir_length && current_file[dir_length - 1] != '/') + size_t dir_length = strlen (grammar_file); + while (dir_length && grammar_file[dir_length - 1] != '/') --dir_length; - while (dir_length && current_file[dir_length - 1] == '/') + while (dir_length && grammar_file[dir_length - 1] == '/') --dir_length; char *skeleton_build = xmalloc (dir_length + 1 + strlen (skeleton_user) + 1); if (dir_length > 0) { - memcpy (skeleton_build, current_file, dir_length); + memcpy (skeleton_build, grammar_file, dir_length); skeleton_build[dir_length++] = '/'; } strcpy (skeleton_build + dir_length, skeleton_user);