From 044b6e2bbdb2d9f47da7947de16a89766502c317 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Sun, 1 Apr 2012 15:14:09 +0000 Subject: [PATCH] Iniciando implementacao de suporte iconv na biblioteca --- configure.ac | 12 ++++++++++++ src/gtk/v3270/iocallback.c | 9 +-------- src/include/lib3270/config.h.in | 1 + src/lib3270/Makefile.in | 2 +- src/lib3270/appres.h | 5 ----- src/lib3270/globals.h | 15 +++++++++++++++ src/lib3270/resolver.c | 15 +++++++++------ src/lib3270/rpq.c | 3 +-- src/lib3270/telnet.c | 4 ++-- 9 files changed, 42 insertions(+), 24 deletions(-) diff --git a/configure.ac b/configure.ac index c2dd04b..e925a42 100644 --- a/configure.ac +++ b/configure.ac @@ -111,6 +111,18 @@ esac DBG_LDFLAGS="-L.bin/Debug/lib" RLS_LDFLAGS="-L.bin/Release/lib -Wl,--strip-all" +#--[ Check gettext ]------------------------------------------------------------------------------------------------------------------------------------------ + +AC_PATH_TOOL([XGETTEXT], [xgettext], [no]) +AC_PATH_TOOL([MSGCAT], [msgcat], [no]) +AC_PATH_TOOL([MSGINIT], [msginit], [no]) +AC_PATH_TOOL([MSGFMT], [msgfmt], [no]) + +AC_CHECK_HEADER(libintl.h, AC_DEFINE(HAVE_LIBINTL)) +AC_CHECK_LIB(intl, gettext,[INTL_LIBS="-lintl"]) + +AC_SUBST(INTL_LIBS) + #--[ Check for ELF symbol visibility support ]---------------------------------------------------------------------------------------------------------------- # Try to compile PROGRAM, check for warnings diff --git a/src/gtk/v3270/iocallback.c b/src/gtk/v3270/iocallback.c index 2d64180..ab42921 100644 --- a/src/gtk/v3270/iocallback.c +++ b/src/gtk/v3270/iocallback.c @@ -47,10 +47,7 @@ #include #endif -#ifdef G_THREADS_ENABLED - static int static_CallAndWait(int(*callback)(H3270 *session, void *), H3270 *session, void *parm); -#endif - +static int static_CallAndWait(int(*callback)(H3270 *session, void *), H3270 *session, void *parm); static unsigned long static_AddInput(int source, H3270 *session, void (*fn)(H3270 *session)); static void static_RemoveSource(unsigned long id); @@ -242,8 +239,6 @@ static gboolean IO_closure(gpointer data) return 0; } -#ifdef G_THREADS_ENABLED - struct bgParameter { gboolean running; @@ -285,8 +280,6 @@ static int static_CallAndWait(int(*callback)(H3270 *session, void *), H3270 *ses return p.rc; } -#endif - static int static_Sleep(int seconds) { time_t end = time(0) + seconds; diff --git a/src/include/lib3270/config.h.in b/src/include/lib3270/config.h.in index e73f20e..5939221 100644 --- a/src/include/lib3270/config.h.in +++ b/src/include/lib3270/config.h.in @@ -39,6 +39,7 @@ #undef HAVE_GNUC_VISIBILITY #undef HAVE_LIBM + #undef HAVE_LIBINTL #undef HAVE_GNOME diff --git a/src/lib3270/Makefile.in b/src/lib3270/Makefile.in index 1970814..85a4d3c 100644 --- a/src/lib3270/Makefile.in +++ b/src/lib3270/Makefile.in @@ -34,7 +34,7 @@ SSL_CFLAGS=@LIBSSL_CFLAGS@ DLL_FLAGS=@DLL_FLAGS@ LDFLAGS=@LDFLAGS@ -LIBS=@LIBS@ @LIBSSL_LIBS@ @SOCKET_LIBS@ +LIBS=@LIBS@ @LIBSSL_LIBS@ @INTL_LIBS@ @SOCKET_LIBS@ DEBUG_CFLAGS=-DDEBUG=1 -g DEPENDS ?= *.h ../../src/include/*.h Makefile diff --git a/src/lib3270/appres.h b/src/lib3270/appres.h index f3c13f8..d4f5c36 100644 --- a/src/lib3270/appres.h +++ b/src/lib3270/appres.h @@ -232,9 +232,4 @@ typedef struct { extern AppRes appres; -// FIXME (perry#2#): Check for right implementation -#define _( x ) x -#define N_( x ) x -#define MSG_( c, s ) s - void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); diff --git a/src/lib3270/globals.h b/src/lib3270/globals.h index 19b4036..2c22294 100644 --- a/src/lib3270/globals.h +++ b/src/lib3270/globals.h @@ -53,6 +53,21 @@ #endif /*]*/ /* + * gettext stuff + */ +#ifdef HAVE_LIBINTL + #include + #define _( x ) gettext(x) + #define N_( x ) x + #define MSG_( c, s ) gettext(s) +#else + #define _( x ) x + #define N_( x ) x + #define MSG_( c, s ) s +#endif // HAVE_LIBINTL + + +/* * OS-specific #defines. Except for the blocking-connect workarounds, these * should be replaced with autoconf probes as soon as possible. */ diff --git a/src/lib3270/resolver.c b/src/lib3270/resolver.c index eecf4e8..6fb75fd 100644 --- a/src/lib3270/resolver.c +++ b/src/lib3270/resolver.c @@ -101,9 +101,12 @@ static int cresolve_host_and_port(H3270 *h, struct parms *p) if (rc) { - // FIXME (perry#1#): Correct this: What's wrong with gai_strerror? - // snprintf(errmsg, em_len, "%s/%s: %s", host, portname, gai_strerror(rc)); - snprintf(p->errmsg, p->em_len, "%s/%s: %d", p->host, p->portname, rc); +#ifdef WIN32 + #warning gai_strerror on windows is returning message in local_charset, need to set it to utf-8! + snprintf(p->errmsg, p->em_len, _( "Error %d resolving %s" ) , rc, p->host); +#else + snprintf(p->errmsg, p->em_len, _( "Error resolving %s: %s" ), p->host, gai_strerror(rc)); +#endif // WIN32 return -2; } @@ -116,7 +119,7 @@ static int cresolve_host_and_port(H3270 *h, struct parms *p) *p->pport = ntohs(((struct sockaddr_in6 *)res->ai_addr)->sin6_port); break; default: - snprintf(p->errmsg, p->em_len, "%s: unknown family %d", p->host,res->ai_family); + snprintf(p->errmsg, p->em_len, _( "%s: unknown family %d" ), p->host,res->ai_family); freeaddrinfo(res); return -1; } @@ -140,7 +143,7 @@ static int cresolve_host_and_port(H3270 *h, struct parms *p) { if (!(sp = getservbyname(portname, "tcp"))) { - snprintf(errmsg, em_len,_( "Unknown port number or service: %s" ),portname); + snprintf(p->errmsg, p->em_len,_( "Unknown port number or service: %s" ),portname); return -1; } port = sp->s_port; @@ -159,7 +162,7 @@ static int cresolve_host_and_port(H3270 *h, struct parms *p) sin->sin_addr.s_addr = inet_addr(host); if (sin->sin_addr.s_addr == (unsigned long)-1) { - snprintf(errmsg, em_len, _( "Unknown host:\n%s" ), host); + snprintf(p->errmsg, p->em_len, _( "Unknown host:\n%s" ), host); return -2; } } diff --git a/src/lib3270/rpq.c b/src/lib3270/rpq.c index 640cfe3..622e6f5 100644 --- a/src/lib3270/rpq.c +++ b/src/lib3270/rpq.c @@ -644,8 +644,7 @@ get_rpq_address(unsigned char *buf, const int maxlen) /* Give back storage obtained by getaddrinfo */ freeaddrinfo(res); } else { - rpq_warning("RPQ: can't resolve '%s': %s", - rpqtext, gai_strerror(ga_err)); + rpq_warning("RPQ: can't resolve '%s': %s",rpqtext, gai_strerror(ga_err)); } #else /*][*/ /* diff --git a/src/lib3270/telnet.c b/src/lib3270/telnet.c index e13d142..602492b 100644 --- a/src/lib3270/telnet.c +++ b/src/lib3270/telnet.c @@ -525,7 +525,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo if (resolve_host_and_port(proxy_host, proxy_portname, &proxy_port, &haddr.sa, &ha_len, errmsg, sizeof(errmsg)) < 0) { - popup_an_error(NULL,errmsg); + popup_an_error(session,errmsg); status_resolving(session,0); return -1; status_resolving(session,0); @@ -536,7 +536,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo &session->current_port, &haddr.sa, &ha_len, errmsg, sizeof(errmsg)) < 0) { popup_an_error(session,errmsg); - status_resolving(&h3270,0); + status_resolving(session,0); return -1; status_resolving(session,0); } -- libgit2 0.21.2