bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 10/11] quote consistently and make tests pass with new quotin


From: Akim Demaille
Subject: Re: [PATCH 10/11] quote consistently and make tests pass with new quoting from gnulib
Date: Tue, 6 Mar 2012 09:33:46 +0100

Le 5 mars 2012 à 18:58, Paul Eggert a écrit :

> The overall idea looks good.  A few minor comments:
> 
> +/* The quoting option used by quote_n and quote.  */
> +static struct quoting_options quote_quoting_options_ =
> 
> Remove "static"; it's ineffective and misleading here.
> 
> +/*----------------------.
> +| Former quote module.  |
> +`----------------------*/
> 
> No need to put history into the commentary, so please
> remove this.
> 
> Can you push this into gnulib?  If not, I'll volunteer.

I've made the changes you asked for, but I can't push
into gnulib.  Thanks!

From a50e4ee6b53f0c20c49cc435f62233da6f27a39d Mon Sep 17 00:00:00 2001
From: Akim Demaille <address@hidden>
Date: Wed, 22 Feb 2012 15:26:17 +0100
Subject: [PATCH] quote: fuse into quotearg.

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 within 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_, 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.
---
 lib/quote.c    |   40 ----------------------------------------
 lib/quote.h    |   15 +++++++++++++++
 lib/quotearg.c |   31 ++++++++++++++++++++++++++++++-
 modules/quote  |    4 ----
 4 files changed, 45 insertions(+), 45 deletions(-)
 delete mode 100644 lib/quote.c

diff --git a/lib/quote.c b/lib/quote.c
deleted file mode 100644
index b46fd83..0000000
--- 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 <address@hidden> */
-
-#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);
-}
diff --git a/lib/quote.h b/lib/quote.h
index 140908b..1ca3585 100644
--- a/lib/quote.h
+++ b/lib/quote.h
@@ -15,6 +15,21 @@
    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
 
+/* From quotearg.h.  */
+struct quoting_options;
+
+/* The quoting option used by quote_n and quote.  */
+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_ */
diff --git a/lib/quotearg.c b/lib/quotearg.c
index c37aa35..a0aac8b 100644
--- 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 @@ set_custom_quoting (struct quoting_options *o,
 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,31 @@ quotearg_custom_mem (char const *left_quote, char const 
*right_quote,
   return quotearg_n_custom_mem (0, left_quote, right_quote, arg,
                                 argsize);
 }
+
+
+/*----------.
+| quote_*.  |
+`----------*/
+
+/* The quoting option used by quote_n and quote.  */
+struct quoting_options quote_quoting_options_ =
+  {
+    locale_quoting_style,
+    0,
+    { 0 },
+    NULL, NULL
+  };
+
+struct quoting_options *quote_quoting_options = &quote_quoting_options_;
+
+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);
+}
diff --git a/modules/quote b/modules/quote
index 02bfc94..863fc16 100644
--- a/modules/quote
+++ b/modules/quote
@@ -3,7 +3,6 @@ Quote arguments for use in error messages.
 
 Files:
 lib/quote.h
-lib/quote.c
 m4/quote.m4
 
 Depends-on:
@@ -12,9 +11,6 @@ quotearg
 configure.ac:
 gl_QUOTE
 
-Makefile.am:
-lib_SOURCES += quote.c
-
 Include:
 "quote.h"
 
-- 
1.7.9.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]