Richard W.M. Jones wrote: ... A few small suggestions on the generated code:
diff --git a/src/generator.ml b/src/generator.ml ... + pr " printf (\"%%s\", \"%s\");\n" shortname; + List.iter ( + function + | String n (* strings *) + | Device n + | Pathname n + | Dev_or_Path n + | FileIn n + | FileOut n -> + (* guestfish doesn't support string escaping, so neither do we *) + pr " printf (\" \\\"%%s\\\"\", %s);\n" n + | OptString n -> (* string option *) + pr " if (%s) printf (\" \\\"%%s\\\"\", %s);\n" n n; + pr " else printf (\" null\");\n" + | StringList n + | DeviceList n -> (* string list *) + pr " printf (\"\\\"\");\n";
How about this, instead? pr " putchar ('\"');\n";
+ pr " for (i = 0; %s[i]; ++i) {\n" n; + pr " if (i > 0) putchar (' ');\n"; + pr " printf (\"%%s\", %s[i]);\n" n;
The minimalist in me prefers to use fputs in cases like this: pr " fputs (%s[i], stdout);\n" n;
+ pr " }\n"; + pr " printf (\"\\\"\");\n";
Same as above.
+ | Bool n -> (* boolean *) + pr " if (%s) printf (\" true\");\n" n; + pr " else printf (\" false\");\n"
you might like to replace the two lines above with this one: pr " printf (%s ? \" true\" : \" false\");\n" n; or this, pr " fputs (%s ? \" true\" : \" false\", stdout);\n" n;
+ | Int n -> (* int *) + pr " printf (\" %%d\", %s);\n" n + ) (snd style); + pr " printf (\"\\n\");\n"; + pr " }\n"; + pr "\n"; + in