quote: provide a means to escape strings with nul characters
authorAkim Demaille <akim@lrde.epita.fr>
Thu, 1 Nov 2012 13:47:03 +0000 (06:47 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 1 Nov 2012 13:47:32 +0000 (06:47 -0700)
* lib/quote.h, lib/quotearg.c (quote_mem, quote_n_mem): New functions.
(quote, quote_n): Rename formal arguments for consistency with
quotearg.

ChangeLog
lib/quote.h
lib/quotearg.c

index bf77930..720b7a2 100644 (file)
--- 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
index b30b166..e3b332d 100644 (file)
 #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 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 NAME,
-   suitable for diagnostics.  */
-char const *quote (char const *name);
+/* Return an unambiguous printable representation of ARG, suitable for
+   diagnostics.  */
+char const *quote (char const *arg);
 
 #endif /* !QUOTE_H_ */
index 1ea583d..7fb866d 100644 (file)
@@ -929,7 +929,7 @@ quotearg_custom_mem (char const *left_quote, char const *right_quote,
 }
 
 
-/* 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 @@ struct quoting_options quote_quoting_options =
   };
 
 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 (0, name);
+  return quote_n_mem (0, arg, argsize);
+}
+
+char const *
+quote_n (int n, char const *arg)
+{
+  return quote_n_mem (n, arg, SIZE_MAX);
+}
+
+char const *
+quote (char const *arg)
+{
+  return quote_n (0, arg);
 }