hush: simplify parse_stream_dquoted
authorDenys Vlasenko <dvlasenk@redhat.com>
Thu, 9 Sep 2010 10:58:19 +0000 (12:58 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Thu, 9 Sep 2010 10:58:19 +0000 (12:58 +0200)
function                                             old     new   delta
parse_stream_dquoted                                 303     250     -53

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
shell/hush.c

index d76fe85f6ee2ee139551655f7323d9e9a18f450c..5af525982143f1aa2eb6bd80f71fae331c314f83 100644 (file)
@@ -3777,15 +3777,12 @@ static int parse_stream_dquoted(o_string *as_string,
                 * NB: in (unquoted) heredoc, above does not apply to ".
                 */
                if (next == dquote_end || strchr("$`\\\n", next) != NULL) {
-                       ch = i_getch(input);
-                       if (ch != '\n') {
-                               o_addqchr(dest, ch);
-                               nommu_addchr(as_string, ch);
-                       }
-               } else {
-                       o_addqchr(dest, '\\');
-                       nommu_addchr(as_string, '\\');
-               }
+                       ch = i_getch(input); /* eat next */
+                       if (ch == '\n')
+                               goto again; /* skip \<newline> */
+               } /* else: ch remains == '\\', and we double it */
+               o_addqchr(dest, ch);
+               nommu_addchr(as_string, ch);
                goto again;
        }
        if (ch == '$') {
@@ -3808,13 +3805,6 @@ static int parse_stream_dquoted(o_string *as_string,
        }
 #endif
        o_addQchr(dest, ch);
-       if (ch == '='
-        && (dest->o_assignment == MAYBE_ASSIGNMENT
-           || dest->o_assignment == WORD_IS_KEYWORD)
-        && is_well_formed_var_name(dest->data, '=')
-       ) {
-               dest->o_assignment = DEFINITELY_ASSIGNMENT;
-       }
        goto again;
 #undef as_string
 }