Hello,

In yacc the function print_grammar() writes the file y.output if
the -v option is used. fprintf() can be used directly for writing
"spacing" space characters of indentation so a loop can be removed.

- Michael


Index: reader.c
===================================================================
RCS file: /cvs/src/usr.bin/yacc/reader.c,v
retrieving revision 1.34
diff -u -p -u -r1.34 reader.c
--- reader.c    25 May 2017 20:11:03 -0000      1.34
+++ reader.c    3 Jan 2018 12:40:54 -0000
@@ -1806,7 +1806,7 @@ pack_grammar(void)
 void
 print_grammar(void)
 {
-       int i, j, k;
+       int i, k;
        int spacing = 0;
        FILE *f = verbose_file;
 
@@ -1822,9 +1822,8 @@ print_grammar(void)
                        spacing = strlen(symbol_name[rlhs[i]]) + 1;
                } else {
                        fprintf(f, "%4d  ", i - 2);
-                       j = spacing;
-                       while (--j >= 0)
-                               putc(' ', f);
+                       if (spacing > 0)
+                               fprintf(f, "%*s", spacing, "");
                        putc('|', f);
                }
 

Reply via email to