Commit 3e599ae12deafee2d51d9af84bd851c1c5a5b184

Authored by perry.werneck@gmail.com
1 parent b7cc91ca

Incluindo opção que permite o envio de logs para o serviço do sistema quando disponível

@@ -165,6 +165,7 @@ AC_PATH_TOOL([RPMBUILD], [rpmbuild], [no]) @@ -165,6 +165,7 @@ AC_PATH_TOOL([RPMBUILD], [rpmbuild], [no])
165 AC_PATH_TOOL([DPKGBUILD], [dpkg-buildpackage], [no]) 165 AC_PATH_TOOL([DPKGBUILD], [dpkg-buildpackage], [no])
166 166
167 AC_CHECK_HEADER(libintl.h, AC_DEFINE(HAVE_LIBINTL)) 167 AC_CHECK_HEADER(libintl.h, AC_DEFINE(HAVE_LIBINTL))
  168 +AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG))
168 AC_CHECK_LIB(intl, gettext,[INTL_LIBS="-lintl"]) 169 AC_CHECK_LIB(intl, gettext,[INTL_LIBS="-lintl"])
169 170
170 AC_SUBST(INTL_LIBS) 171 AC_SUBST(INTL_LIBS)
src/include/lib3270/config.h.in
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
42 #undef HAVE_LIBM 42 #undef HAVE_LIBM
43 #undef HAVE_LIBINTL 43 #undef HAVE_LIBINTL
44 #undef HAVE_GETADDRINFO 44 #undef HAVE_GETADDRINFO
  45 + #undef HAVE_SYSLOG
45 46
46 #ifdef WIN32 47 #ifdef WIN32
47 #undef HAVE_WIN_REGISTRY 48 #undef HAVE_WIN_REGISTRY
src/pw3270/main.c
@@ -42,6 +42,10 @@ @@ -42,6 +42,10 @@
42 #include "v3270/accessible.h" 42 #include "v3270/accessible.h"
43 #include <stdlib.h> 43 #include <stdlib.h>
44 44
  45 +#if defined( HAVE_SYSLOG )
  46 + #include <syslog.h>
  47 +#endif // HAVE_SYSLOG
  48 +
45 #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME) 49 #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME)
46 50
47 /*--[ Statics ]--------------------------------------------------------------------------------------*/ 51 /*--[ Statics ]--------------------------------------------------------------------------------------*/
@@ -55,9 +59,15 @@ @@ -55,9 +59,15 @@
55 #endif // HAVE_GTKMAC 59 #endif // HAVE_GTKMAC
56 60
57 #if defined( WIN32 ) 61 #if defined( WIN32 )
58 - static const gchar * appname = PACKAGE_NAME; 62 + static const gchar * appname = PACKAGE_NAME;
59 #endif // WIN32 63 #endif // WIN32
60 64
  65 +#if defined( HAVE_SYSLOG )
  66 + static gboolean log_to_syslog = FALSE;
  67 +#endif // HAVE_SYSLOG
  68 +
  69 +
  70 +
61 /*--[ Implement ]------------------------------------------------------------------------------------*/ 71 /*--[ Implement ]------------------------------------------------------------------------------------*/
62 72
63 static int initialize(void) 73 static int initialize(void)
@@ -182,6 +192,52 @@ static gboolean optcolors(const gchar *option_name, const gchar *value, gpointer @@ -182,6 +192,52 @@ static gboolean optcolors(const gchar *option_name, const gchar *value, gpointer
182 return FALSE; 192 return FALSE;
183 } 193 }
184 194
  195 +#if defined( HAVE_SYSLOG )
  196 +static void g_syslog(const gchar *log_domain,GLogLevelFlags log_level,const gchar *message,gpointer user_data)
  197 +{
  198 + static const struct _logtype
  199 + {
  200 + GLogLevelFlags log_level;
  201 + int priority;
  202 + const gchar * msg;
  203 + } logtype[] =
  204 + {
  205 + { G_LOG_FLAG_RECURSION, LOG_INFO, "recursion" },
  206 + { G_LOG_FLAG_FATAL, LOG_ERR, "fatal error" },
  207 +
  208 + /* GLib log levels */
  209 + { G_LOG_LEVEL_ERROR, LOG_ERR, "error" },
  210 + { G_LOG_LEVEL_CRITICAL, LOG_ERR, "critical error" },
  211 + { G_LOG_LEVEL_WARNING, LOG_ERR, "warning" },
  212 + { G_LOG_LEVEL_MESSAGE, LOG_ERR, "message" },
  213 + { G_LOG_LEVEL_INFO, LOG_INFO, "info" },
  214 + { G_LOG_LEVEL_DEBUG, LOG_DEBUG, "debug" },
  215 + };
  216 +
  217 + int f;
  218 +
  219 + for(f=0;f<G_N_ELEMENTS(logtype);f++)
  220 + {
  221 + if(logtype[f].log_level == log_level)
  222 + {
  223 + gchar *ptr;
  224 + gchar *text = g_strdup_printf("%s: %s %s",logtype[f].msg,log_domain ? log_domain : "",message);
  225 + for(ptr = text;*ptr;ptr++)
  226 + {
  227 + if(*ptr < ' ')
  228 + *ptr = ' ';
  229 + }
  230 +
  231 + syslog(logtype[f].priority,"%s",text);
  232 + g_free(text);
  233 + return;
  234 + }
  235 + }
  236 +
  237 + syslog(LOG_INFO,"%s %s",log_domain ? log_domain : "", message);
  238 +}
  239 +#endif // HAVE_SYSLOG
  240 +
185 int main(int argc, char *argv[]) 241 int main(int argc, char *argv[])
186 { 242 {
187 static const gchar * session_name = PACKAGE_NAME; 243 static const gchar * session_name = PACKAGE_NAME;
@@ -252,6 +308,9 @@ int main(int argc, char *argv[]) @@ -252,6 +308,9 @@ int main(int argc, char *argv[])
252 { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), NULL }, 308 { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), NULL },
253 { "colors", 'c', 0, G_OPTION_ARG_CALLBACK, optcolors, N_( "Set reported colors (8/16)" ), "16" }, 309 { "colors", 'c', 0, G_OPTION_ARG_CALLBACK, optcolors, N_( "Set reported colors (8/16)" ), "16" },
254 { "systype", 't', 0, G_OPTION_ARG_STRING, &system, N_( "Host system type" ), "S390" }, 310 { "systype", 't', 0, G_OPTION_ARG_STRING, &system, N_( "Host system type" ), "S390" },
  311 +#if defined( HAVE_SYSLOG )
  312 + { "syslog", 'l', 0, G_OPTION_ARG_NONE, &log_to_syslog, N_( "Send messages to syslog" ), NULL },
  313 +#endif
255 314
256 { NULL } 315 { NULL }
257 }; 316 };
@@ -292,6 +351,14 @@ int main(int argc, char *argv[]) @@ -292,6 +351,14 @@ int main(int argc, char *argv[])
292 return -1; 351 return -1;
293 } 352 }
294 353
  354 +#if defined( HAVE_SYSLOG )
  355 + if(log_to_syslog)
  356 + {
  357 + openlog(g_get_prgname(), LOG_NDELAY|LOG_NDELAY, LOG_USER);
  358 + g_log_set_default_handler(g_syslog,NULL);
  359 + }
  360 +#endif // HAVE_SYSLOG
  361 +
295 } 362 }
296 363
297 { 364 {