changeset 17146:decc44342646

quote: provide a means to escape strings with nul characters * lib/quote.h, lib/quotearg.c (quote_mem, quote_n_mem): New functions. (quote, quote_n): Rename formal arguments for consistency with quotearg.
author Akim Demaille <akim@lrde.epita.fr>
date Thu, 01 Nov 2012 06:47:03 -0700
parents 3db954427a47
children c4a6dcd5073a
files ChangeLog lib/quote.h lib/quotearg.c
diffstat 3 files changed, 43 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+	quote: provide a means to escape strings with nul characters
+	* lib/quote.h, lib/quotearg.c (quote_mem, quote_n_mem): New functions.
+	(quote, quote_n): Rename formal arguments for consistency with
+	quotearg.
+
 2012-10-30  Paul Eggert  <eggert@cs.ucla.edu>
 
 	test-raise: don't assume 199 is an invalid signal
--- a/lib/quote.h
+++ b/lib/quote.h
@@ -18,16 +18,29 @@
 #ifndef QUOTE_H_
 # define QUOTE_H_ 1
 
+# include <stddef.h>
+
 /* The quoting options used by quote_n and quote.  Its type is incomplete,
    so it's useful only in expressions like '&quote_quoting_options'.  */
 extern struct quoting_options quote_quoting_options;
 
-/* Return an unambiguous printable representation of NAME,
-   allocated in slot N, suitable for diagnostics.  */
-char const *quote_n (int n, char const *name);
+/* Return an unambiguous printable representation of ARG (of size
+   ARGSIZE), allocated in slot N, suitable for diagnostics.  If
+   ARGSIZE is SIZE_MAX, use the string length of the argument for
+   ARGSIZE.  */
+char const *quote_n_mem (int n, char const *arg, size_t argsize);
 
-/* Return an unambiguous printable representation of NAME,
-   suitable for diagnostics.  */
-char const *quote (char const *name);
+/* Return an unambiguous printable representation of ARG (of size
+   ARGSIZE), suitable for diagnostics.  If ARGSIZE is SIZE_MAX, use
+   the string length of the argument for ARGSIZE.  */
+char const *quote_mem (char const *arg, size_t argsize);
+
+/* Return an unambiguous printable representation of ARG, allocated in
+   slot N, suitable for diagnostics.  */
+char const *quote_n (int n, char const *arg);
+
+/* Return an unambiguous printable representation of ARG, suitable for
+   diagnostics.  */
+char const *quote (char const *arg);
 
 #endif /* !QUOTE_H_ */
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -929,7 +929,7 @@
 }
 
 
-/* The quoting option used by quote_n and quote.  */
+/* The quoting option used by the functions of quote.h.  */
 struct quoting_options quote_quoting_options =
   {
     locale_quoting_style,
@@ -939,13 +939,25 @@
   };
 
 char const *
-quote_n (int n, char const *name)
+quote_n_mem (int n, char const *arg, size_t argsize)
 {
-  return quotearg_n_options (n, name, SIZE_MAX, &quote_quoting_options);
+  return quotearg_n_options (n, arg, argsize, &quote_quoting_options);
 }
 
 char const *
-quote (char const *name)
+quote_mem (char const *arg, size_t argsize)
+{
+  return quote_n_mem (0, arg, argsize);
+}
+
+char const *
+quote_n (int n, char const *arg)
 {
-  return quote_n (0, name);
+  return quote_n_mem (n, arg, SIZE_MAX);
 }
+
+char const *
+quote (char const *arg)
+{
+  return quote_n (0, arg);
+}