aboutsummaryrefslogtreecommitdiff
path: root/trans/hello.c
diff options
context:
space:
mode:
Diffstat (limited to 'trans/hello.c')
-rw-r--r--trans/hello.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/trans/hello.c b/trans/hello.c
index 4e88c609..d1884df1 100644
--- a/trans/hello.c
+++ b/trans/hello.c
@@ -246,9 +246,26 @@ trivfs_append_args (struct trivfs_control *fsys,
{
error_t err;
char *opt;
+ size_t opt_len;
+ FILE *s;
+ char *c;
- if (asprintf (&opt, "--contents=%s", contents) < 0)
- return ENOMEM;
+ s = open_memstream (&opt, &opt_len);
+ fprintf (s, "--contents='");
+
+ for (c = contents; *c; c++)
+ switch (*c)
+ {
+ case 0x27: /* Single quote. */
+ fprintf (s, "'\"'\"'");
+ break;
+
+ default:
+ fprintf (s, "%c", *c);
+ }
+
+ fprintf (s, "'");
+ fclose (s);
err = argz_add (argz, argz_len, opt);