bug-bison
[Top][All Lists]
Advanced

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

[PATCH] quote: fuse into quotearg


From: Paul Eggert
Subject: [PATCH] quote: fuse into quotearg
Date: Tue, 06 Mar 2012 23:41:41 -0800
User-agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2

On 03/06/2012 02:28 PM, Akim Demaille wrote:
> All this is perfect with me!  Thanks for the work.

OK, I pushed the gnulib part, in your name.  Here's the patch,
which I'm CC'ing to bug-gnulib.

====

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.
---
 ChangeLog      |   17 +++++++++++++++++
 lib/quote.c    |   40 ----------------------------------------
 lib/quote.h    |   13 +++++++++++++
 lib/quotearg.c |   25 ++++++++++++++++++++++++-
 modules/quote  |    4 ----
 5 files changed, 54 insertions(+), 45 deletions(-)
 delete mode 100644 lib/quote.c

diff --git a/ChangeLog b/ChangeLog
index 62f2e77..a9a8e94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2012-03-06  Akim Demaille  <address@hidden>
+
+       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  <address@hidden>
 
        Tests for module 'expm1l-ieee'.
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..b30b166 100644
--- 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_ */
diff --git a/lib/quotearg.c b/lib/quotearg.c
index c37aa35..1ea583d 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,25 @@ quotearg_custom_mem (char const *left_quote, char const 
*right_quote,
   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);
+}
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.6.5




reply via email to

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