>From 53e70237c9438ed145014a7187678e84a10e98fc Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 22 Feb 2012 15:26:17 +0100 Subject: [PATCH] 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. --- 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 163e154..3eedf1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2012-03-06 Akim Demaille + + 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 math: Ensure declarations of math functions. 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 . */ - -/* Written by Paul Eggert */ - -#include - -#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 . */ +#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 #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