From f90ede0531d9279421db6ea4e797fa846d895462 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 16 Mar 2012 21:53:38 +0000 Subject: [PATCH] Movendo mais "statics" para a estrutura de sessao, simplificando chamadas --- Makefile.in | 2 +- src/gtk/Makefile.in | 2 +- src/include/lib3270.h | 3 --- src/include/lib3270/action_table.h | 1 + src/include/lib3270/session.h | 3 +++ src/lib3270/api.h | 45 +++------------------------------------------ src/lib3270/ctlr.c | 17 ++++++++--------- src/lib3270/init.c | 26 +++++++++++++++++++++++--- src/lib3270/kybd.c | 25 +++++++++++-------------- src/lib3270/macros.c | 4 +++- src/lib3270/paste.c | 4 ++-- src/lib3270/screen.c | 131 ++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------- src/lib3270/screenc.h | 3 ++- src/lib3270/trace_dsc.h | 37 ++++++++++++++++++++++++++----------- 14 files changed, 110 insertions(+), 193 deletions(-) diff --git a/Makefile.in b/Makefile.in index 44483a5..f084c56 100644 --- a/Makefile.in +++ b/Makefile.in @@ -50,7 +50,7 @@ EXEEXT=@EXEEXT@ DBGLIB=-L../../$(BINDIR)/Debug/lib -l3270 RLSLIB=-L../../$(BINDIR)/Release/lib -l3270 TMPDIR=$(PWD)/.tmp - +GLOBAL_DEPS=$(PWD)/include/*.h $(PWD)/include/lib3270/*.h #---[ Tools ]------------------------------------------------------------------ VALGRIND=@VALGRIND@ diff --git a/src/gtk/Makefile.in b/src/gtk/Makefile.in index b189952..f94b248 100644 --- a/src/gtk/Makefile.in +++ b/src/gtk/Makefile.in @@ -55,7 +55,7 @@ SOURCES=main.c mainwindow.c actions.c fonts.c \ $(foreach SRC, $(COMMON_SRC), common/$(SRC)) \ $(foreach SRC, $(UI_PARSER_SRC), uiparser/$(SRC)) -DEPENDS=*.h common/*.h uiparser/*.h v3270/*.h +DEPENDS=*.h common/*.h uiparser/*.h v3270/*.h $(GLOBAL_DEPS) VALGRIND=@VALGRIND@ diff --git a/src/include/lib3270.h b/src/include/lib3270.h index 0f51fa0..890f233 100644 --- a/src/include/lib3270.h +++ b/src/include/lib3270.h @@ -26,7 +26,6 @@ * erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) * licinio@bb.com.br (Licínio Luis Branco) * kraucer@bb.com.br (Kraucer Fernandes Mazuco) - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) * */ @@ -205,8 +204,6 @@ LIB3270_CONNECTED_TN3270E /**< connected in TN3270E mode, 3270 mode */ } LIB3270_CSTATE; -// #include - #ifdef __cplusplus extern "C" { #endif diff --git a/src/include/lib3270/action_table.h b/src/include/lib3270/action_table.h index 1e2e20e..d160e6b 100644 --- a/src/include/lib3270/action_table.h +++ b/src/include/lib3270/action_table.h @@ -69,6 +69,7 @@ DECLARE_LIB3270_ACTION( eraseeol ) DECLARE_LIB3270_ACTION( erase ) DECLARE_LIB3270_ACTION( delete ) + DECLARE_LIB3270_ACTION( dup ) DECLARE_LIB3270_ACTION( backspace ) DECLARE_LIB3270_ACTION( previousword ) diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h index e646523..cc4256e 100644 --- a/src/include/lib3270/session.h +++ b/src/include/lib3270/session.h @@ -113,6 +113,7 @@ // Screen contents void * buffer[2]; /**< Internal buffers */ struct ea * ea_buf; /**< 3270 device buffer. ea_buf[-1] is the dummy default field attribute */ + struct ea * aea_buf; /** alternate 3270 extended attribute buffer */ struct lib3270_text * text; /**< Converted 3270 chars */ // host.c @@ -159,6 +160,8 @@ void (*set_timer)(H3270 *session, unsigned char on); void (*erase)(H3270 *session); + void (*suspend)(H3270 *session); + void (*resume)(H3270 *session); void (*cursor)(H3270 *session, LIB3270_CURSOR id); void (*set_selection)(H3270 *session, unsigned char on); void (*ctlr_done)(H3270 *session); diff --git a/src/lib3270/api.h b/src/lib3270/api.h index 835bb87..cc0b8d4 100644 --- a/src/lib3270/api.h +++ b/src/lib3270/api.h @@ -306,45 +306,6 @@ #define CHAR_ATTR_UNCONVERTED CHAR_ATTR_CG -/* - struct lib3270_screen_callbacks - { - unsigned short sz; - - int (*init)(void); - int (*notify)(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg); - void (*model_changed)(H3270 *session, const char *name, int model, int rows, int cols); - int (*addch)(int row, int col, unsigned char c, unsigned short attr); - void (*charset)(char *dcs); - void (*title)(char *text); - void (*ring_bell)(void); - void (*redraw)(void); - void (*move_cursor)(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr); - int (*set_suspended)(int state); - void (*set_script)(SCRIPT_STATE state); - void (*reset)(int lock); - void (*status)(H3270 *session, LIB3270_STATUS id); - void (*cursor)(H3270 *session, LIB3270_CURSOR mode); - void (*lu)(H3270 *session, const char *lu); - void (*set_oia)(H3270 *session, OIA_FLAG id, unsigned char on); - - void (*erase)(H3270 *session); - void (*display)(H3270 *session); - void (*set_viewsize)(H3270 *session, unsigned short rows, unsigned short cols); - - - void (*toggle_changed)(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name); - void (*show_timer)(long seconds); - - // Console/Trace window - HCONSOLE (*console_new)(const char *title, const char *label); - void (*console_delete)(HCONSOLE hwnd); - int (*console_append)(HCONSOLE hwnd, const char *fmt, va_list args); - char * (*console_entry)(HCONSOLE hwnd); - - }; -*/ - struct lib3270_option { const char *name; @@ -392,7 +353,7 @@ LOCAL_EXTERN unsigned char get_field_attribute(H3270 *session, int baddr); - LOCAL_EXTERN int screen_read(char *dest, int baddr, int count); +// LOCAL_EXTERN int screen_read(char *dest, int baddr, int count); LOCAL_EXTERN void Input_String(const unsigned char *str); LOCAL_EXTERN void screen_size(int *rows, int *cols); @@ -432,8 +393,8 @@ // LOCAL_EXTERN int ctlr_get_rows(void) __attribute__ ((deprecated)); /* Screen calls */ - LOCAL_EXTERN void screen_resume(H3270 *session); - LOCAL_EXTERN void screen_suspend(H3270 *session); +// LOCAL_EXTERN void screen_resume(H3270 *session); +// LOCAL_EXTERN void screen_suspend(H3270 *session); LOCAL_EXTERN void screen_disp(H3270 *session); /* Cursor calls */ diff --git a/src/lib3270/ctlr.c b/src/lib3270/ctlr.c index e13bb5b..ac8ae6b 100644 --- a/src/lib3270/ctlr.c +++ b/src/lib3270/ctlr.c @@ -90,7 +90,7 @@ unsigned char crm_attr[16]; Boolean dbcs = False; /* Statics */ -static struct ea *aea_buf; /* alternate 3270 extended attribute buffer */ +// static struct ea *aea_buf; /* alternate 3270 extended attribute buffer */ static unsigned char *zero_buf; // empty buffer, for area clears static void set_formatted(H3270 *session); static void ctlr_blanks(void); @@ -174,7 +174,7 @@ void ctlr_reinit(H3270 *session, unsigned cmask) session->ea_buf = tmp + 1; session->buffer[1] = tmp = lib3270_calloc(sizeof(struct ea),sz+1,session->buffer[1]); - aea_buf = tmp + 1; + session->aea_buf = tmp + 1; session->text = lib3270_calloc(sizeof(struct lib3270_text),sz,session->text); @@ -1945,8 +1945,7 @@ ctlr_write_sscp_lu(unsigned char buf[], int buflen) /* Some hosts forget they're talking SSCP-LU. */ cp++; i++; - trace_ds(" StartField%s %s [translated to space]\n", - rcba(buffer_addr), see_attr(*cp)); + trace_ds(" StartField%s %s [translated to space]\n",rcba(buffer_addr), see_attr(*cp)); ctlr_add(buffer_addr, EBC_space, default_cs); ctlr_add_fg(buffer_addr, default_fg); ctlr_add_bg(buffer_addr, default_bg); @@ -2619,20 +2618,20 @@ void changed(H3270 *session, int bstart, int bend) */ void ctlr_altbuffer(H3270 *session, int alt) { - struct ea *etmp; - CHECK_SESSION_HANDLE(session); if (alt != session->is_altbuffer) { + struct ea *etmp; etmp = session->ea_buf; - session->ea_buf = aea_buf; - aea_buf = etmp; + session->ea_buf = session->aea_buf; + session->aea_buf = etmp; session->is_altbuffer = alt; + lib3270_unselect(session); + ALL_CHANGED; - // unselect(0, ROWS*COLS); /* * There may be blinkers on the alternate screen; schedule one diff --git a/src/lib3270/init.c b/src/lib3270/init.c index 676c39c..bdb35ce 100644 --- a/src/lib3270/init.c +++ b/src/lib3270/init.c @@ -77,17 +77,30 @@ void lib3270_session_free(H3270 *h) static void update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor) { - } static void nop_char(H3270 *session, unsigned char chr) { - } static void nop(H3270 *session) { +} +static void update_model(H3270 *session, const char *name, int model, int rows, int cols) +{ +} + +static void changed(H3270 *session, int bstart, int bend) +{ +} + +static void update_cursor(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr) +{ +} + +static void update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) +{ } static void lib3270_session_init(H3270 *hSession, const char *model) @@ -99,10 +112,17 @@ static void lib3270_session_init(H3270 *hSession, const char *model) memset(hSession,0,sizeof(H3270)); hSession->sz = sizeof(H3270); - // A few dummy calls to avoid "ifs" + // Dummy calls to avoid "ifs" hSession->update = update_char; + hSession->update_model = update_model; + hSession->update_cursor = update_cursor; hSession->set_selection = nop_char; hSession->ctlr_done = nop; + hSession->changed = changed; + hSession->erase = screen_disp; + hSession->suspend = nop; + hSession->resume = screen_disp; + hSession->update_oia = update_oia; hSession->sock = -1; hSession->model_num = -1; diff --git a/src/lib3270/kybd.c b/src/lib3270/kybd.c index f65d668..4988206 100644 --- a/src/lib3270/kybd.c +++ b/src/lib3270/kybd.c @@ -1750,10 +1750,9 @@ do_delete(void) LIB3270_ACTION( delete ) { -// reset_idle_timer(); - if (kybdlock) { + if (kybdlock) + { ENQUEUE_ACTION(lib3270_delete); -// enq_ta(Delete_action, CN, CN); return 0; } #if defined(X3270_ANSI) /*[*/ @@ -1781,8 +1780,8 @@ LIB3270_ACTION( delete ) */ LIB3270_ACTION( backspace ) { -// reset_idle_timer(); - if (kybdlock) { + if (kybdlock) + { ENQUEUE_ACTION( lib3270_backspace ); return 0; } @@ -2316,13 +2315,12 @@ LIB3270_CURSOR_ACTION( newline ) /* * DUP key - */ /* -void -Dup_action(Widget w unused, XEvent *event, String *params, Cardinal *num_params) + */ +LIB3270_ACTION( dup ) { -// reset_idle_timer(); - if (kybdlock) { - enq_ta(Dup_action, CN, CN); + if (kybdlock) + { + ENQUEUE_ACTION(lib3270_enter); return; } #if defined(X3270_ANSI) @@ -2330,10 +2328,9 @@ Dup_action(Widget w unused, XEvent *event, String *params, Cardinal *num_params) return; #endif if (key_Character(EBC_dup, False, False, NULL)) - cursor_move(next_unprotected(h3270.cursor_addr)); + cursor_move(next_unprotected(hSession->cursor_addr)); } -*/ - + /* * FM key */ /* diff --git a/src/lib3270/macros.c b/src/lib3270/macros.c index a757472..4e8c46d 100644 --- a/src/lib3270/macros.c +++ b/src/lib3270/macros.c @@ -104,8 +104,9 @@ LIB3270_MACRO( get ) { - int start, qtd, rows, cols, row, col; char *buffer = NULL; +/* + int start, qtd, rows, cols, row, col; switch(argc) { @@ -167,6 +168,7 @@ buffer = malloc(qtd+1); screen_read(buffer, start, qtd); +*/ return buffer; } diff --git a/src/lib3270/paste.c b/src/lib3270/paste.c index d24a63e..bcd93cd 100644 --- a/src/lib3270/paste.c +++ b/src/lib3270/paste.c @@ -190,7 +190,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) if(kybdlock) return -EINVAL; - screen_suspend(h); + h->suspend(h); while(*str && last && !kybdlock && h->cursor_addr >= data.orig_addr) { @@ -230,7 +230,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) } } - screen_resume(h); + h->resume(h); return data.qtd; } diff --git a/src/lib3270/screen.c b/src/lib3270/screen.c index 511d766..581aba9 100644 --- a/src/lib3270/screen.c +++ b/src/lib3270/screen.c @@ -96,9 +96,7 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att /* Converted char has changed, update it */ session->text[baddr].chr = c; session->text[baddr].attr = attr; - - if(session->update) - session->update(session,baddr,c,attr,baddr == session->cursor_addr); + session->update(session,baddr,c,attr,baddr == session->cursor_addr); } /** @@ -116,16 +114,12 @@ int screen_init(H3270 *session) lib3270_register_schange(session,ST_3270_MODE, status_3270_mode,0); lib3270_register_schange(session,ST_PRINTER, status_printer,0); -// lib3270_register_schange(session,ST_HALF_CONNECT, relabel,0); -// lib3270_register_schange(session,ST_CONNECT, relabel,0); -// lib3270_register_schange(session,ST_3270_MODE, relabel,0); - /* Set up the controller. */ ctlr_init(session,-1); ctlr_reinit(session,-1); /* Finish screen initialization. */ - screen_suspend(session); + session->suspend(session); return 0; } @@ -143,7 +137,7 @@ static unsigned short color_from_fa(unsigned char fa) /* * Find the display attributes for a baddr, fa_addr and fa. */ -static unsigned short calc_attrs(int baddr, int fa_addr, int fa) +static unsigned short calc_attrs(H3270 *session, int baddr, int fa_addr, int fa) { unsigned short fg=0, bg=0, a; int gr; @@ -152,10 +146,10 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa) /* Monochrome is easy, and so is color if nothing is specified. */ if (!appres.m3279 || - (!h3270.ea_buf[baddr].fg && - !h3270.ea_buf[fa_addr].fg && - !h3270.ea_buf[baddr].bg && - !h3270.ea_buf[fa_addr].bg)) + (!session->ea_buf[baddr].fg && + !session->ea_buf[fa_addr].fg && + !session->ea_buf[baddr].bg && + !session->ea_buf[fa_addr].bg)) { a = color_from_fa(fa); } @@ -163,23 +157,23 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa) { /* The current location or the fa specifies the fg or bg. */ - if (h3270.ea_buf[baddr].fg) + if (session->ea_buf[baddr].fg) { - fg = h3270.ea_buf[baddr].fg & 0x0f; + fg = session->ea_buf[baddr].fg & 0x0f; } - else if (h3270.ea_buf[fa_addr].fg) + else if (session->ea_buf[fa_addr].fg) { - fg = h3270.ea_buf[fa_addr].fg & 0x0f; + fg = session->ea_buf[fa_addr].fg & 0x0f; } else { fg = DEFCOLOR_MAP(fa); } - if (h3270.ea_buf[baddr].bg) - bg = h3270.ea_buf[baddr].bg & 0x0f; - else if (h3270.ea_buf[fa_addr].bg) - bg = h3270.ea_buf[fa_addr].bg & 0x0f; + if (session->ea_buf[baddr].bg) + bg = session->ea_buf[baddr].bg & 0x0f; + else if (session->ea_buf[fa_addr].bg) + bg = session->ea_buf[fa_addr].bg & 0x0f; else bg = 0; @@ -188,10 +182,10 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa) /* Compute the display attributes. */ - if (h3270.ea_buf[baddr].gr) - gr = h3270.ea_buf[baddr].gr; - else if (h3270.ea_buf[fa_addr].gr) - gr = h3270.ea_buf[fa_addr].gr; + if (session->ea_buf[baddr].gr) + gr = session->ea_buf[baddr].gr; + else if (session->ea_buf[fa_addr].gr) + gr = session->ea_buf[fa_addr].gr; else gr = 0; @@ -216,16 +210,6 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa) return a; } -/* Erase screen */ -void screen_erase(H3270 *session) -{ - /* If the application supplies a callback use it!, if not just redraw with blanks */ - if(session->erase) - session->erase(session); - else - screen_update(session,0,session->rows * session->cols); -} - LIB3270_EXPORT void lib3270_get_screen_size(H3270 *h, int *r, int *c) { *r = h->rows; @@ -244,8 +228,7 @@ void update_model_info(H3270 *session, int model, int cols, int rows) /* Update the model name. */ (void) sprintf(session->model_name, "327%c-%d%s",appres.m3279 ? '9' : '8',session->model_num,appres.extended ? "-E" : ""); - if(session->update_model) - session->update_model(session, session->model_name,session->model_num,rows,cols); + session->update_model(session, session->model_name,session->model_num,rows,cols); } LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned char *chr, unsigned short *attr) @@ -269,40 +252,6 @@ LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned return 0; } -/* Get screen contents */ -int screen_read(char *dest, int baddr, int count) -{ - unsigned char fa = get_field_attribute(&h3270,baddr); - int max = (h3270.maxROWS * h3270.maxCOLS); - - *dest = 0; - - while(count-- > 0) - { - if(baddr > max) - { - *dest = 0; - return EFAULT; - } - - if (h3270.ea_buf[baddr].fa) - fa = h3270.ea_buf[baddr].fa; - - if(FA_IS_ZERO(fa)) - *dest = ' '; - else if(h3270.ea_buf[baddr].cc) - *dest = ebc2asc[h3270.ea_buf[baddr].cc]; - else - *dest = ' '; - - dest++; - baddr++; - } - *dest = 0; - - return 0; -} - /* Display what's in the buffer. */ static void screen_update(H3270 *session, int bstart, int bend) { @@ -316,8 +265,6 @@ static void screen_update(H3270 *session, int bstart, int bend) a = color_from_fa(fa); fa_addr = find_field_attribute(session,bstart); // may be -1, that's okay -// Trace("%s ea_buf=%p",__FUNCTION__,ea_buf); - for(baddr = bstart; baddr < bend; baddr++) { if(session->ea_buf[baddr].fa) @@ -325,7 +272,7 @@ static void screen_update(H3270 *session, int bstart, int bend) // Field attribute. fa_addr = baddr; fa = session->ea_buf[baddr].fa; - a = calc_attrs(baddr, baddr, fa); + a = calc_attrs(session, baddr, baddr, fa); addch(session,baddr,' ',(attr = COLOR_GREEN)|CHAR_ATTR_MARKER); } else if (FA_IS_ZERO(fa)) @@ -342,14 +289,7 @@ static void screen_update(H3270 *session, int bstart, int bend) } else { -// unsigned short b; - // - // Override some of the field - // attributes. - // -// attr = b = calc_attrs(baddr, fa_addr, fa); - - attr = calc_attrs(baddr, fa_addr, fa); + attr = calc_attrs(session, baddr, fa_addr, fa); } if (session->ea_buf[baddr].cs == CS_LINEDRAW) @@ -370,10 +310,7 @@ static void screen_update(H3270 *session, int bstart, int bend) } } - - if(session->changed) - session->changed(session,bstart,bend); - + session->changed(session,bstart,bend); } void screen_disp(H3270 *session) @@ -381,15 +318,6 @@ void screen_disp(H3270 *session) screen_update(session,0,session->rows*session->cols); } -void screen_suspend(H3270 *session) -{ -} - -void screen_resume(H3270 *session) -{ - screen_disp(session); -} - LIB3270_EXPORT int lib3270_get_cursor_address(H3270 *h) { CHECK_SESSION_HANDLE(h); @@ -408,9 +336,7 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *h, int baddr) return ret; h->cursor_addr = baddr; - - if(h->update_cursor) - h->update_cursor(h,(unsigned short) (baddr/h->cols),(unsigned short) (baddr%h->cols),h->text[baddr].chr,h->text[baddr].attr); + h->update_cursor(h,(unsigned short) (baddr/h->cols),(unsigned short) (baddr%h->cols),h->text[baddr].chr,h->text[baddr].attr); return ret; } @@ -421,13 +347,8 @@ void set_status(H3270 *session, LIB3270_FLAG id, Boolean on) { CHECK_SESSION_HANDLE(session); - if(id < LIB3270_FLAG_COUNT) - { - session->oia_flag[id] = (on != 0); - - if(session->update_oia) - session->update_oia(session,id,session->oia_flag[id]); - } + session->oia_flag[id] = (on != 0); + session->update_oia(session,id,session->oia_flag[id]); } diff --git a/src/lib3270/screenc.h b/src/lib3270/screenc.h index 4a3d29e..87671a5 100644 --- a/src/lib3270/screenc.h +++ b/src/lib3270/screenc.h @@ -26,8 +26,9 @@ #define screen_132() /* */ #define screen_80() /* */ +#define screen_erase(x) x->erase(x) +// LIB3270_INTERNAL void screen_erase(H3270 *session); -LIB3270_INTERNAL void screen_erase(H3270 *session); LIB3270_INTERNAL void screen_changed(H3270 *session, int bstart, int bend); LIB3270_INTERNAL int screen_init(H3270 *session); // LIB3270_INTERNAL void screen_flip(void); diff --git a/src/lib3270/trace_dsc.h b/src/lib3270/trace_dsc.h index 48a166f..6c2545b 100644 --- a/src/lib3270/trace_dsc.h +++ b/src/lib3270/trace_dsc.h @@ -1,15 +1,30 @@ /* - * Copyright 1995, 1999, 2001, 2002, 2003, 2005, 2006 by Paul Mattes. - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation. - * - * x3270, c3270, s3270 and tcl3270 are distributed in the hope that they will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE - * for more details. + * "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., 59 Temple + * Place, Suite 330, Boston, MA, 02111-1307, USA + * + * Este programa está nomeado como trace_dsc.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) + * */ /* -- libgit2 0.21.2