changeset 11891:77de0cfcbcf7

quotearg: document limitations of quote_these_too * lib/quotearg.c (quotearg_buffer_restyled): Add comments where those limitations are created. * lib/quotearg.h (set_char_quoting): Document that digits and letters that are special after backslash are not permitted. (quotearg_char): Cross-reference set_char_quoting documentation.
author Joel E. Denny <jdenny@clemson.edu>
date Sat, 22 Aug 2009 20:55:17 -0400
parents 96999501e6ed
children 26347f7d2cac
files ChangeLog lib/quotearg.c lib/quotearg.h
diffstat 3 files changed, 21 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-08-22  Joel E. Denny  <jdenny@clemson.edu>
+
+	quotearg: document limitations of quote_these_too
+	* lib/quotearg.c (quotearg_buffer_restyled): Add comments where
+	those limitations are created.
+	* lib/quotearg.h (set_char_quoting): Document that digits and
+	letters that are special after backslash are not permitted.
+	(quotearg_char): Cross-reference set_char_quoting documentation.
+
 2009-08-23  Joel E. Denny  <jdenny@clemson.edu>
 
 	quotearg: implement custom_quoting_style
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -336,6 +336,10 @@
 		  STORE ('0');
 		}
 	      c = '0';
+	      /* We don't have to worry that this last '0' will be
+		 backslash-escaped because, again, quote_string should
+		 not start with it and because quote_these_too is
+		 documented as not accepting it.  */
 	    }
 	  else if (flags & QA_ELIDE_NULL_BYTES)
 	    continue;
@@ -461,7 +465,9 @@
 	     escape by prepending a backslash.  However, it's hard to
 	     imagine any locale that would use digits or letters as
 	     quotes, and set_custom_quoting is documented not to accept
-	     them.  */
+	     them.  Also, a digit or a special letter would cause
+	     trouble if it appeared in quote_these_too, but that's also
+	     documented as not accepting them.  */
 	  break;
 
 	default:
--- a/lib/quotearg.h
+++ b/lib/quotearg.h
@@ -255,7 +255,9 @@
    set the value of the quoting options for character C to I.
    Return the old value.  Currently, the only values defined for I are
    0 (the default) and 1 (which means to quote the character even if
-   it would not otherwise be quoted).  */
+   it would not otherwise be quoted).  C must never be a digit or a
+   letter that has special meaning after a backslash (for example, "\t"
+   for tab).  */
 int set_char_quoting (struct quoting_options *o, char c, int i);
 
 /* In O (or in the default if O is null),
@@ -345,7 +347,8 @@
 char *quotearg_style_mem (enum quoting_style s,
 			  char const *arg, size_t argsize);
 
-/* Like quotearg (ARG), except also quote any instances of CH.  */
+/* Like quotearg (ARG), except also quote any instances of CH.
+   See set_char_quoting for a description of acceptable CH values.  */
 char *quotearg_char (char const *arg, char ch);
 
 /* Like quotearg_char (ARG, CH), except it can quote null bytes.  */