From 245f6d5a587c058116f46c81f78d42dda63b08ef Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Thu, 11 Jul 2019 14:25:16 -0300 Subject: [PATCH] Moving terminal definitions to separated include file. Fixing memory leaks detected with valgrind --- Makefile.in | 3 +-- src/dialogs/print/print.c | 2 +- src/include/terminal.h | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/terminal/accessible.c | 2 +- src/terminal/blink.c | 2 +- src/terminal/callbacks.c | 2 +- src/terminal/charset.c | 2 +- src/terminal/colors.c | 2 +- src/terminal/draw.c | 2 +- src/terminal/font.c | 2 +- src/terminal/iocallback.c | 2 +- src/terminal/keyboard.c | 2 +- src/terminal/linux/iosource.c | 2 +- src/terminal/mouse.c | 2 +- src/terminal/oia.c | 2 +- src/terminal/private.h | 183 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/terminal/properties.c | 2 +- src/terminal/security.c | 3 +-- src/terminal/selection.c | 2 +- src/terminal/widget.c | 2 +- valgrind.suppression | 22 ++++++++++++++++++++++ 21 files changed, 223 insertions(+), 203 deletions(-) create mode 100644 src/include/terminal.h delete mode 100644 src/terminal/private.h diff --git a/Makefile.in b/Makefile.in index 813684a..e2a9edb 100644 --- a/Makefile.in +++ b/Makefile.in @@ -94,8 +94,7 @@ DEPENDS= \ src/include/v3270/*.h \ src/filetransfer/marshal.h \ src/filetransfer/private.h \ - src/terminal/marshal.h \ - src/terminal/private.h + src/terminal/marshal.h CFLAGS= \ @CFLAGS@ \ diff --git a/src/dialogs/print/print.c b/src/dialogs/print/print.c index 9b9dc27..f679772 100644 --- a/src/dialogs/print/print.c +++ b/src/dialogs/print/print.c @@ -29,7 +29,7 @@ #include "private.h" #include - #include "../../terminal/private.h" // Required for v3270 signal. + #include #include #include diff --git a/src/include/terminal.h b/src/include/terminal.h new file mode 100644 index 0000000..3000d02 --- /dev/null +++ b/src/include/terminal.h @@ -0,0 +1,183 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como - e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +#include +#include + +G_BEGIN_DECLS + + struct _v3270Class + { + GtkWidgetClass parent_class; + + // Internal properties. + struct { + + size_t count; // Number of properties. + + GParamSpec * font_family; + GParamSpec * toggle[LIB3270_TOGGLE_COUNT]; // Toggle properties. + + // Signal related properties + GParamSpec * online; + GParamSpec * luname; + GParamSpec * model; + GParamSpec * selection; + + struct + { + guint toggle; + guint boolean; + guint integer; + guint str; + } type; + + } properties; + + // Cursors + GdkCursor * cursors[LIB3270_POINTER_COUNT]; + + // Signals + void (*activate)(GtkWidget *widget); + void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE toggle_id,gboolean toggle_state,const gchar *toggle_name); + void (*message_changed)(v3270 *widget, LIB3270_MESSAGE id); + void (*popup_message)(GtkWidget *widget, LIB3270_NOTIFY id , const gchar *title, const gchar *message, const gchar *text); + + }; + +/*--[ Defines]---------------------------------------------------------------------------------------*/ + + #define OIA_TOP_MARGIN 2 + + #define KEY_FLAG_SHIFT 0x0001 + + #ifndef WIN32 + #define KEY_FLAG_ALT 0x0002 + #endif // !WIN32 + +/*--[ Globals ]--------------------------------------------------------------------------------------*/ + + struct v3270_ssl_status_msg + { + long id; + const gchar * icon; + const gchar * text; + const gchar * message; + }; + +/*--[ Widget data ]----------------------------------------------------------------------------------*/ + + struct _v3270 + { + GtkWidget parent; + + // flags + int selecting : 1; /**< Selecting region */ + int moving : 1; /**< Moving selected region */ + int resizing : 1; /**< Resizing selected region */ + int table : 1; /**< Copy mode is table */ + int scaled_fonts : 1; /**< Use scaled fonts */ + int drawing : 1; /**< Draw widget? */ + +#if GTK_CHECK_VERSION(3,0,0) + +#else + gint width; + gint height; +#endif // GTK_CHECK_VERSION(3,0,0) + + GSource * timer; + GtkIMContext * input_method; + unsigned short keyflags; + + struct + { + char * text; /**< Clipboard contents (lib3270 charset) */ + int baddr; /**< Selection addr */ + } selection; + + LIB3270_POINTER pointer_id; + unsigned char pointer; /**< Mouse pointer ID */ + + // Font info + cairo_surface_t * surface; + v3270FontInfo font; + + gint minimum_width; + gint minimum_height; + + // Colors + GdkRGBA color[V3270_COLOR_COUNT]; /**< Terminal widget colors */ + + // OIA + struct + { + GdkRectangle rect[V3270_OIA_FIELD_COUNT]; + V3270_OIA_FIELD selected; /**< Clicked OIA field */ + } oia; + + struct + { + unsigned char show; /**< Cursor flag */ + unsigned char chr; /**< Char at cursor position */ + unsigned short attr; /**< Attribute at cursor position */ + GdkRectangle rect; /**< Cursor rectangle */ + GSource * timer; /**< Cursor blinking timer */ + cairo_surface_t * surface; /**< Cursor image */ + } cursor; + + // Acessibility + GtkAccessible * accessible; + + // Session + H3270 * host; /**< Related 3270 session */ + gchar * session_name; /**< Session name (for window title) */ + + // Auto disconnect + struct + { + time_t timestamp; /**< Last action in this widget */ + guint disconnect; /**< Time (in minutes) for auto disconnect */ + GSource * timer; /**< Auto disconnect timer */ + } activity; + + char script; /**< @brief Script ID */ + + // Blink + struct + { + int show : 1; /**< @brief Show element? */ + GSource * timer; /**< @brief Timer source. */ + } blink; + + }; + +/*--[ Globals ]--------------------------------------------------------------------------------------*/ + +G_END_DECLS diff --git a/src/terminal/accessible.c b/src/terminal/accessible.c index 452b05b..b40d2b9 100644 --- a/src/terminal/accessible.c +++ b/src/terminal/accessible.c @@ -40,7 +40,7 @@ #include #include #include - #include "private.h" + #include #include #ifdef GDK_WINDOWING_X11 diff --git a/src/terminal/blink.c b/src/terminal/blink.c index a1a5557..3971cd6 100644 --- a/src/terminal/blink.c +++ b/src/terminal/blink.c @@ -28,7 +28,7 @@ */ #include - #include "private.h" + #include #include /*--[ Implement ]------------------------------------------------------------------------------------*/ diff --git a/src/terminal/callbacks.c b/src/terminal/callbacks.c index 95ab36c..0d1bedd 100644 --- a/src/terminal/callbacks.c +++ b/src/terminal/callbacks.c @@ -33,7 +33,7 @@ #include #endif // _WIN32 - #include "private.h" + #include #include #include diff --git a/src/terminal/charset.c b/src/terminal/charset.c index e003fc6..5a96cf2 100644 --- a/src/terminal/charset.c +++ b/src/terminal/charset.c @@ -27,7 +27,7 @@ * */ - #include "private.h" + #include #include #include #include diff --git a/src/terminal/colors.c b/src/terminal/colors.c index d646bd1..6c4fb61 100644 --- a/src/terminal/colors.c +++ b/src/terminal/colors.c @@ -28,7 +28,7 @@ */ #include - #include "private.h" + #include #include #include diff --git a/src/terminal/draw.c b/src/terminal/draw.c index fee3c6c..2d2b4f6 100644 --- a/src/terminal/draw.c +++ b/src/terminal/draw.c @@ -42,7 +42,7 @@ #include #include - #include "private.h" + #include /*--[ Implement ]------------------------------------------------------------------------------------*/ diff --git a/src/terminal/font.c b/src/terminal/font.c index afe3ed3..98f7042 100644 --- a/src/terminal/font.c +++ b/src/terminal/font.c @@ -28,7 +28,7 @@ */ #include - #include "private.h" + #include #include #include diff --git a/src/terminal/iocallback.c b/src/terminal/iocallback.c index 9ed8ced..3f079ff 100644 --- a/src/terminal/iocallback.c +++ b/src/terminal/iocallback.c @@ -31,7 +31,7 @@ #include #include #include -#include "private.h" +#include static void * static_AddSource(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata); static void static_RemoveSource(H3270 *session, void *id); diff --git a/src/terminal/keyboard.c b/src/terminal/keyboard.c index efd841d..6603289 100644 --- a/src/terminal/keyboard.c +++ b/src/terminal/keyboard.c @@ -39,7 +39,7 @@ #include #include - #include "private.h" + #include #if GTK_CHECK_VERSION(3,0,0) #include diff --git a/src/terminal/linux/iosource.c b/src/terminal/linux/iosource.c index c057c8d..b45ec0b 100644 --- a/src/terminal/linux/iosource.c +++ b/src/terminal/linux/iosource.c @@ -32,7 +32,7 @@ #include #include #include - #include "../private.h" + #include /*---[ Structs ]-------------------------------------------------------------------------------------------*/ diff --git a/src/terminal/mouse.c b/src/terminal/mouse.c index 9ac7512..90a9bc8 100644 --- a/src/terminal/mouse.c +++ b/src/terminal/mouse.c @@ -31,7 +31,7 @@ #include #include #include - #include "private.h" + #include #include #include #include diff --git a/src/terminal/oia.c b/src/terminal/oia.c index 51e7db5..cd12927 100644 --- a/src/terminal/oia.c +++ b/src/terminal/oia.c @@ -55,7 +55,7 @@ #endif // HAVE_LIBM #include - #include "private.h" + #include #include #include diff --git a/src/terminal/private.h b/src/terminal/private.h deleted file mode 100644 index ca98e76..0000000 --- a/src/terminal/private.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como private.h e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - */ - -#include -#include - -G_BEGIN_DECLS - - struct _v3270Class - { - GtkWidgetClass parent_class; - - // Internal properties. - struct { - - size_t count; // Number of properties. - - GParamSpec * font_family; - GParamSpec * toggle[LIB3270_TOGGLE_COUNT]; // Toggle properties. - - // Signal related properties - GParamSpec * online; - GParamSpec * luname; - GParamSpec * model; - GParamSpec * selection; - - struct - { - guint toggle; - guint boolean; - guint integer; - guint str; - } type; - - } properties; - - // Cursors - GdkCursor * cursors[LIB3270_POINTER_COUNT]; - - // Signals - void (*activate)(GtkWidget *widget); - void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE toggle_id,gboolean toggle_state,const gchar *toggle_name); - void (*message_changed)(v3270 *widget, LIB3270_MESSAGE id); - void (*popup_message)(GtkWidget *widget, LIB3270_NOTIFY id , const gchar *title, const gchar *message, const gchar *text); - - }; - -/*--[ Defines]---------------------------------------------------------------------------------------*/ - - #define OIA_TOP_MARGIN 2 - - #define KEY_FLAG_SHIFT 0x0001 - - #ifndef WIN32 - #define KEY_FLAG_ALT 0x0002 - #endif // !WIN32 - -/*--[ Globals ]--------------------------------------------------------------------------------------*/ - - struct v3270_ssl_status_msg - { - long id; - const gchar * icon; - const gchar * text; - const gchar * message; - }; - -/*--[ Widget data ]----------------------------------------------------------------------------------*/ - - struct _v3270 - { - GtkWidget parent; - - // flags - int selecting : 1; /**< Selecting region */ - int moving : 1; /**< Moving selected region */ - int resizing : 1; /**< Resizing selected region */ - int table : 1; /**< Copy mode is table */ - int scaled_fonts : 1; /**< Use scaled fonts */ - int drawing : 1; /**< Draw widget? */ - -#if GTK_CHECK_VERSION(3,0,0) - -#else - gint width; - gint height; -#endif // GTK_CHECK_VERSION(3,0,0) - - GSource * timer; - GtkIMContext * input_method; - unsigned short keyflags; - - struct - { - char * text; /**< Clipboard contents (lib3270 charset) */ - int baddr; /**< Selection addr */ - } selection; - - LIB3270_POINTER pointer_id; - unsigned char pointer; /**< Mouse pointer ID */ - - // Font info - cairo_surface_t * surface; - v3270FontInfo font; - - gint minimum_width; - gint minimum_height; - - // Colors - GdkRGBA color[V3270_COLOR_COUNT]; /**< Terminal widget colors */ - - // OIA - struct - { - GdkRectangle rect[V3270_OIA_FIELD_COUNT]; - V3270_OIA_FIELD selected; /**< Clicked OIA field */ - } oia; - - struct - { - unsigned char show; /**< Cursor flag */ - unsigned char chr; /**< Char at cursor position */ - unsigned short attr; /**< Attribute at cursor position */ - GdkRectangle rect; /**< Cursor rectangle */ - GSource * timer; /**< Cursor blinking timer */ - cairo_surface_t * surface; /**< Cursor image */ - } cursor; - - // Acessibility - GtkAccessible * accessible; - - // Session - H3270 * host; /**< Related 3270 session */ - gchar * session_name; /**< Session name (for window title) */ - - // Auto disconnect - struct - { - time_t timestamp; /**< Last action in this widget */ - guint disconnect; /**< Time (in minutes) for auto disconnect */ - GSource * timer; /**< Auto disconnect timer */ - } activity; - - char script; /**< @brief Script ID */ - - // Blink - struct - { - int show : 1; /**< @brief Show element? */ - GSource * timer; /**< @brief Timer source. */ - } blink; - - }; - -/*--[ Globals ]--------------------------------------------------------------------------------------*/ - -G_END_DECLS diff --git a/src/terminal/properties.c b/src/terminal/properties.c index 4fc4fc6..4652465 100644 --- a/src/terminal/properties.c +++ b/src/terminal/properties.c @@ -43,7 +43,7 @@ #include #include #include - #include "private.h" + #include #define PROP_BEGIN 2 diff --git a/src/terminal/security.c b/src/terminal/security.c index 2e9867e..1045c37 100644 --- a/src/terminal/security.c +++ b/src/terminal/security.c @@ -35,8 +35,7 @@ #include #include #include - - #include "private.h" + #include /*--[ Implement ]------------------------------------------------------------------------------------*/ diff --git a/src/terminal/selection.c b/src/terminal/selection.c index 82dc871..407dcc5 100644 --- a/src/terminal/selection.c +++ b/src/terminal/selection.c @@ -30,7 +30,7 @@ #include #include #include - #include "private.h" + #include #include #include #include diff --git a/src/terminal/widget.c b/src/terminal/widget.c index b39d98d..c7900a3 100644 --- a/src/terminal/widget.c +++ b/src/terminal/widget.c @@ -28,7 +28,7 @@ */ #include - #include "private.h" + #include #include "marshal.h" #include diff --git a/valgrind.suppression b/valgrind.suppression index d65bea1..a1efd7a 100644 --- a/valgrind.suppression +++ b/valgrind.suppression @@ -1,4 +1,11 @@ { + libcrypto_BIO_read + Memcheck:Cond + ... + fun:BIO_read +} + +{ libcrypt_FIPS_selftest Memcheck:Cond ... @@ -138,3 +145,18 @@ fun:cairo_mask } +{ + gtk_css_dimension_value_new + Memcheck:Leak + ... + fun:gtk_css_dimension_value_new +} + +{ + gtk_style_constructed + Memcheck:Leak + ... + fun:gtk_style_constructed +} + + -- libgit2 0.21.2