|
From: | Andreas Born |
Subject: | Re: [bug #27695] parser.sh ignores the closing quote when preceeded by a variable |
Date: | Sun, 06 Dec 2009 23:57:51 +0100 |
User-agent: | Thunderbird 2.0.0.23 (X11/20090827) |
grub> echo "$root" grub>" hd0,1 Vladimir 'phcoder' Serbinenko schrieb:
Andreas Born wrote:URL: <http://savannah.gnu.org/bugs/?27695> Summary: parser.sh ignores the closing quote when preceeded by a variableAttached patch should fix this bugProject: GNU GRUB Submitted by: shador Submitted on: Di 13 Okt 2009 21:11:16 GMT Category: Terminal Severity: Major Priority: 5 - Normal Item Group: Software Error Status: None Privacy: Public Assigned to: NoneOriginator Name: Originator Email: Open/Closed: OpenDiscussion Lock: AnyRelease: Release: SVNReproducibility: Every Time Planned Release: None _______________________________________________________ Details: The problem is reproducible with this example:set blub=blob echo $blubblobecho "${blub}"blobecho "$blub"=> fails, the closing quote is ignoredecho "$blub""blob => works as workaround The real trouble starts with strings containing spaces. But it can be fixed, as shown, by adding another quote at the end or using ${...}. This was tested with beta~4. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?27695> _______________________________________________ Nachricht geschickt von/durch Savannah http://savannah.gnu.org/ _______________________________________________ Bug-grub mailing list address@hidden http://lists.gnu.org/mailman/listinfo/bug-grub
=== modified file 'script/lexer.c' --- script/lexer.c 2009-11-23 15:37:33 +0000 +++ script/lexer.c 2009-11-29 00:16:30 +0000 @@ -350,9 +350,11 @@ if (! (check_varstate (newstate))) { if (state->state == GRUB_PARSER_STATE_VARNAME2 - || state->state == GRUB_PARSER_STATE_QVARNAME2) - nextchar (state); - state->state = newstate; + || state->state == GRUB_PARSER_STATE_QVARNAME2) + { + nextchar (state); + state->state = newstate; + } break; } @@ -378,7 +380,6 @@ buffer[bufpos++] = 0; - state->state = newstate; yylval->arg = grub_script_arg_add (parsestate, yylval->arg, GRUB_SCRIPT_ARG_TYPE_VAR, buffer); grub_dprintf ("scripting", "vartoken=`%s'\n", buffer);
[Prev in Thread] | Current Thread | [Next in Thread] |