summaryrefslogtreecommitdiffstats
path: root/HACKING
diff options
context:
space:
mode:
authorRichard Jones <rjones@trick.home.annexia.org>2009-07-27 22:27:45 +0100
committerRichard Jones <rjones@trick.home.annexia.org>2009-07-28 10:57:57 +0100
commit0f2e9c84e9ff1071260770930068642ecc8ac0d9 (patch)
treef4e466d6fb3710d589c21c8849c27f9f2f55ced2 /HACKING
parentbf920f57677c67f903cf8c4c985ce3d290b1dbde (diff)
downloadlibguestfs-0f2e9c84e9ff1071260770930068642ecc8ac0d9.tar.gz
libguestfs-0f2e9c84e9ff1071260770930068642ecc8ac0d9.tar.xz
libguestfs-0f2e9c84e9ff1071260770930068642ecc8ac0d9.zip
Replace shell_quote function with %Q and %R printf specifiers.
%Q => simple shell quoted string %R => path will be prefixed by /sysroot eg. snprintf (cmd, sizeof cmd, "cat %R", path); system (cmd);
Diffstat (limited to 'HACKING')
-rw-r--r--HACKING22
1 files changed, 22 insertions, 0 deletions
diff --git a/HACKING b/HACKING
index 42f4f77c..336fc7c6 100644
--- a/HACKING
+++ b/HACKING
@@ -126,3 +126,25 @@ into the appliance.
Debugging messages are never translated, since they are intended for
the programmers.
+
+Extended printf
+----------------------------------------------------------------------
+
+In the daemon code we have created custom printf formatters %Q and %R,
+which are used to do shell quoting.
+
+%Q => Simple shell quoted string. Any spaces or other shell characters
+ are escaped for you.
+
+%R => Same as %Q except the string is treated as a path which is prefixed
+ by the sysroot.
+
+eg.
+
+asprintf (&cmd, "cat %R", path);
+==> "cat /sysroot/some\ path\ with\ spaces"
+
+Note: Do NOT use these when you are passing parameters to the
+command{,r,v,rv}() functions. These parameters do NOT need to be
+quoted because they are not passed via the shell (instead, straight to
+exec). You probably want to use the sysroot_path() function however.