From 56509ab16c8d2225182eb0400e5c6a4900870391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Fri, 17 Sep 2021 22:34:52 +0200 Subject: Fix mktpl bug --- mktpl/mktpl.lex | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'mktpl/mktpl.lex') diff --git a/mktpl/mktpl.lex b/mktpl/mktpl.lex index e530e45..56ce93f 100644 --- a/mktpl/mktpl.lex +++ b/mktpl/mktpl.lex @@ -20,10 +20,10 @@ \<%= text(); BEGIN(PRNT); \<%[^=] text(); BEGIN(EVAL); -. apnd(); +(.|\n) apnd(); %\> prnt(); BEGIN(0); -(.|\n) apnd(); +(.|\n) apnd(); %\> eval(); BEGIN(0); <> prnt(); yyterminate(); @@ -52,27 +52,26 @@ apnd() } buf[len++] = *yytext; - buf[len+1] = 0; } void eval() { - printf("%s\n", buf); + printf("%.*s\n", len, buf); len = 0; } void text() { - char *t; + int i; printf("printf(\""); - for(t = buf; *t; t++){ - if(*t == '\\') printf("\\\\"); - else if(*t == '"') printf("\\\""); - else if(*t == '\n') printf("\\n"); - else printf("%c", *t); + for(i = 0; i < len; i++){ + if(buf[i] == '\\') printf("\\\\"); + else if(buf[i] == '"') printf("\\\""); + else if(buf[i] == '\n') printf("\\n"); + else printf("%c", buf[i]); } printf("\");\n"); len = 0; @@ -81,6 +80,6 @@ text() void prnt() { - printf("printf(\"%%s\", %s);\n", buf); + printf("printf(\"%%s\", %.*s);\n", len, buf); len = 0; } \ No newline at end of file -- cgit v1.2.3