changeset 16594:2dc96bd6b0d0

quote: fuse into quotearg This patch is made for the benefit of Bison. quote does not leave the choice of the quoting style to the user. quoting_style provides poor customizability, yet quoting_options, which is very rich, is hidden inside quotearg.c. So in order to allow quote customization, move its implementation to quotearg.c. * lib/quote.c: Remove. * modules/quote: Adjust. * lib/quotearg.c (quoting_options_from_style): Fix a compiler warning: provide all the members of literal structs. (quote_quoting_options): New. (quote, quote_n): Import implementation from quote.c. * lib/quote.h: Import the comments from quote.c. (quote_quoting_options): New.
author Akim Demaille <demaille@gostai.com>
date Tue, 06 Mar 2012 23:35:28 -0800
parents 1227bdffccae
children 6d5adeda9a06
files ChangeLog lib/quote.c lib/quote.h lib/quotearg.c modules/quote
diffstat 5 files changed, 54 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2012-03-06  Akim Demaille  <demaille@gostai.com>
+
+	quote: fuse into quotearg
+	This patch is made for the benefit of Bison.
+	quote does not leave the choice of the quoting style to the user.
+	quoting_style provides poor customizability, yet quoting_options,
+	which is very rich, is hidden inside quotearg.c.  So in order to
+	allow quote customization, move its implementation to quotearg.c.
+	* lib/quote.c: Remove.
+	* modules/quote: Adjust.
+	* lib/quotearg.c (quoting_options_from_style): Fix a compiler
+	warning: provide all the members of literal structs.
+	(quote_quoting_options): New.
+	(quote, quote_n): Import implementation from quote.c.
+	* lib/quote.h: Import the comments from quote.c.
+	(quote_quoting_options): New.
+
 2012-03-06  Bruno Haible  <bruno@clisp.org>
 
 	Tests for module 'expm1l-ieee'.
deleted file mode 100644
--- a/lib/quote.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* quote.c - quote arguments for output
-
-   Copyright (C) 1998-2001, 2003, 2005-2006, 2009-2012 Free Software
-   Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Written by Paul Eggert <eggert@twinsun.com> */
-
-#include <config.h>
-
-#include "quotearg.h"
-#include "quote.h"
-
-/* Return an unambiguous printable representation of NAME,
-   allocated in slot N, suitable for diagnostics.  */
-char const *
-quote_n (int n, char const *name)
-{
-  return quotearg_n_style (n, locale_quoting_style, name);
-}
-
-/* Return an unambiguous printable representation of NAME,
-   suitable for diagnostics.  */
-char const *
-quote (char const *name)
-{
-  return quote_n (0, name);
-}
--- a/lib/quote.h
+++ b/lib/quote.h
@@ -15,6 +15,19 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef QUOTE_H_
+# define QUOTE_H_ 1
 
+/* 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 NAME,
+   suitable for diagnostics.  */
 char const *quote (char const *name);
+
+#endif /* !QUOTE_H_ */
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -27,6 +27,7 @@
 #include <config.h>
 
 #include "quotearg.h"
+#include "quote.h"
 
 #include "xalloc.h"
 #include "c-strcaseeq.h"
@@ -177,7 +178,7 @@
 static struct quoting_options /* NOT PURE!! */
 quoting_options_from_style (enum quoting_style style)
 {
-  struct quoting_options o = { 0 };
+  struct quoting_options o = { 0, 0, { 0 }, NULL, NULL };
   if (style == custom_quoting_style)
     abort ();
   o.style = style;
@@ -926,3 +927,25 @@
   return quotearg_n_custom_mem (0, left_quote, right_quote, arg,
                                 argsize);
 }
+
+
+/* The quoting option used by quote_n and quote.  */
+struct quoting_options quote_quoting_options =
+  {
+    locale_quoting_style,
+    0,
+    { 0 },
+    NULL, NULL
+  };
+
+char const *
+quote_n (int n, char const *name)
+{
+  return quotearg_n_options (n, name, SIZE_MAX, &quote_quoting_options);
+}
+
+char const *
+quote (char const *name)
+{
+  return quote_n (0, name);
+}
--- a/modules/quote
+++ b/modules/quote
@@ -3,7 +3,6 @@
 
 Files:
 lib/quote.h
-lib/quote.c
 m4/quote.m4
 
 Depends-on:
@@ -12,9 +11,6 @@
 configure.ac:
 gl_QUOTE
 
-Makefile.am:
-lib_SOURCES += quote.c
-
 Include:
 "quote.h"