Skip to content

Commit 8da8fc3

Browse files
author
Sebastiano Merlino
committed
Added support to gettext
Modified code in order to avoid undefined refs Changed support_command in order to react to modification in multiple files
1 parent 9155cff commit 8da8fc3

File tree

6 files changed

+123
-9
lines changed

6 files changed

+123
-9
lines changed

configure.ac

+5
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,17 @@ AC_ARG_WITH(java-dir,
9393
fi
9494
])
9595

96+
AC_ARG_WITH(doc,
97+
[ --with-doc Compile DOC],
98+
[doc=true])
99+
96100
AM_CONDITIONAL([PYTHON], [test x$python = xtrue])
97101
AM_CONDITIONAL([JAVA], [test x$java = xtrue])
98102
AM_CONDITIONAL([PHP], [test x$php = xtrue])
99103
AM_CONDITIONAL([PERL], [test x$perl = xtrue])
100104
AM_CONDITIONAL([LUA], [test x$lua = xtrue])
101105
AM_CONDITIONAL([RUBY], [test x$ruby = xtrue])
106+
AM_CONDITIONAL([DOC], [test x$doc = xtrue])
102107

103108
LANGUAGES="C++"
104109

src/Makefile.am

+3-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ INCLUDES = -I../ -I$(srcdir)/httpserver/
2020
METASOURCES = AUTO
2121
lib_LTLIBRARIES = libhttpserver.la
2222
libhttpserver_la_SOURCES = string_utilities.cpp Webserver.cpp HttpUtils.cpp HttpEndpoint.cpp HttpRequest.cpp HttpResponse.cpp HttpResource.cpp
23-
noinst_HEADERS = httpserver/string_utilities.hpp
23+
noinst_HEADERS = httpserver/string_utilities.hpp gettext.h
2424
nobase_include_HEADERS = httpserver.h httpserver/Webserver.hpp httpserver/HttpUtils.hpp httpserver/HttpEndpoint.hpp httpserver/HttpRequest.hpp httpserver/HttpResponse.hpp httpserver/HttpResource.hpp
2525
AM_CXXFLAGS = -fPIC -Wall
2626
libhttpserver_la_LIBADD = -lmicrohttpd
2727
libhttpserver_la_LDFLAGS =
28+
29+

src/Webserver.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
#include <microhttpd.h>
3636

37+
#include "gettext.h"
3738
#include "HttpUtils.hpp"
3839
#include "HttpResource.hpp"
3940
#include "HttpResponse.hpp"
@@ -73,7 +74,7 @@ static void ignore_sigpipe ()
7374
sig.sa_flags = SA_RESTART;
7475
#endif
7576
if (0 != sigaction (SIGPIPE, &sig, &oldsig))
76-
fprintf (stderr, "Failed to install SIGPIPE handler: %s\n", strerror (errno));
77+
fprintf (stderr, gettext("Failed to install SIGPIPE handler: %s\n"), strerror (errno));
7778
}
7879

7980
//LOGGING DELEGATE
@@ -283,7 +284,7 @@ bool Webserver::start(bool blocking)
283284

284285
if(NULL == daemon)
285286
{
286-
cout << "Unable to connect daemon to port: " << this->port << endl;
287+
cout << gettext("Unable to connect daemon to port: ") << this->port << endl;
287288
return false;
288289
}
289290
this->running = true;

src/autogen_helpers/support_command

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
# License along with this library; if not, write to the Free Software
1717
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1818
#
19-
$(srcdir)/WebserverWrap.cpp $(srcdir)/WebserverWrap.h: $(top_srcdir)/src/httpserver/Webserver.hpp
19+
$(srcdir)/WebserverWrap.cpp $(srcdir)/WebserverWrap.h: $(top_srcdir)/src/httpserver/Webserver.hpp $(top_srcdir)/src/httpserver/HttpResponse.hpp $(top_srcdir)/src/httpserver/HttpRequest.hpp $(top_srcdir)/src/httpserver/HttpResource.hpp $(top_srcdir)/src/httpserver/HttpEndpoint.hpp $(top_srcdir)/src/httpserver/HttpUtils.hpp
2020
swig -c++ -$(language) $(swigoptions) -o $(srcdir)/WebserverWrap.cpp -I$(srcdir)/.. $(srcdir)/../httpserver/Webserver.hpp

src/gettext.h

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
/* Convenience header for conditional use of GNU <libintl.h>.
2+
Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2012 Free Software
3+
Foundation, Inc.
4+
5+
This program is free software; you can redistribute it and/or modify
6+
it under the terms of the GNU General Public License as published by
7+
the Free Software Foundation; either version 3, or (at your option)
8+
any later version.
9+
10+
This program is distributed in the hope that it will be useful,
11+
but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
GNU General Public License for more details.
14+
15+
You should have received a copy of the GNU General Public License along
16+
with this program; if not, write to the Free Software Foundation,
17+
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18+
19+
#ifndef _LIBGETTEXT_H
20+
#define _LIBGETTEXT_H 1
21+
22+
/* NLS can be disabled through the configure --disable-nls option. */
23+
#if ENABLE_NLS
24+
25+
/* Get declarations of GNU message catalog functions. */
26+
# include <libintl.h>
27+
28+
/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
29+
the gettext() and ngettext() macros. This is an alternative to calling
30+
textdomain(), and is useful for libraries. */
31+
# ifdef DEFAULT_TEXT_DOMAIN
32+
# undef gettext
33+
# define gettext(Msgid) \
34+
dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
35+
# undef ngettext
36+
# define ngettext(Msgid1, Msgid2, N) \
37+
dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
38+
# endif
39+
40+
#else
41+
42+
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
43+
chokes if dcgettext is defined as a macro. So include it now, to make
44+
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
45+
as well because people using "gettext.h" will not include <libintl.h>,
46+
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
47+
is OK. */
48+
#if defined(__sun)
49+
# include <locale.h>
50+
#endif
51+
52+
/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
53+
<libintl.h>, which chokes if dcgettext is defined as a macro. So include
54+
it now, to make later inclusions of <libintl.h> a NOP. */
55+
#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
56+
# include <cstdlib>
57+
# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
58+
# include <libintl.h>
59+
# endif
60+
#endif
61+
62+
/* Disabled NLS.
63+
The casts to 'const char *' serve the purpose of producing warnings
64+
for invalid uses of the value returned from these functions.
65+
On pre-ANSI systems without 'const', the config.h file is supposed to
66+
contain "#define const". */
67+
# undef gettext
68+
# define gettext(Msgid) ((const char *) (Msgid))
69+
# undef dgettext
70+
# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
71+
# undef dcgettext
72+
# define dcgettext(Domainname, Msgid, Category) \
73+
((void) (Category), dgettext (Domainname, Msgid))
74+
# undef ngettext
75+
# define ngettext(Msgid1, Msgid2, N) \
76+
((N) == 1 \
77+
? ((void) (Msgid2), (const char *) (Msgid1)) \
78+
: ((void) (Msgid1), (const char *) (Msgid2)))
79+
# undef dngettext
80+
# define dngettext(Domainname, Msgid1, Msgid2, N) \
81+
((void) (Domainname), ngettext (Msgid1, Msgid2, N))
82+
# undef dcngettext
83+
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
84+
((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
85+
# undef textdomain
86+
# define textdomain(Domainname) ((const char *) (Domainname))
87+
# undef bindtextdomain
88+
# define bindtextdomain(Domainname, Dirname) \
89+
((void) (Domainname), (const char *) (Dirname))
90+
# undef bind_textdomain_codeset
91+
# define bind_textdomain_codeset(Domainname, Codeset) \
92+
((void) (Domainname), (const char *) (Codeset))
93+
94+
#endif
95+
96+
/* Prefer gnulib's setlocale override over libintl's setlocale override. */
97+
#ifdef GNULIB_defined_setlocale
98+
# undef setlocale
99+
# define setlocale rpl_setlocale
100+
#endif
101+
102+
/* A pseudo function call that serves as a marker for the automated
103+
extraction of messages, but does not call gettext(). The run-time
104+
translation is done at a different place in the code.
105+
The argument, String, should be a literal string. Concatenated strings
106+
and other string expressions won't work.
107+
The macro's expansion is not parenthesized, so that it is suitable as
108+
initializer for static 'char[]' or 'const char[]' variables. */
109+
#define gettext_noop(String) String
110+
111+
#endif /* _LIBGETTEXT_H */

src/httpserver/HttpResponse.hpp

-5
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,6 @@ class HttpResponse
144144
* @param footers The footers key-value map to set for the response.
145145
**/
146146
void setFooters(const std::map<std::string, std::string>& footers);
147-
/**
148-
* Method used to set all cookies of the response.
149-
* @param cookies The cookies key-value map to set for the response.
150-
**/
151-
void setCookies(const std::map<std::string, std::string>& cookies);
152147
/**
153148
* Method used to set the response code of the response
154149
* @param responseCode the response code to set

0 commit comments

Comments
 (0)