[Top][All Lists]
[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 '"e_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, "e_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
- [PATCH] quote: fuse into quotearg,
Paul Eggert <=