Commit 99986be0b9c540317da421312a0faaf26b34617a

Authored by Perry Werneck
1 parent a26cc869
Exists in master

Incluindo mecanismo para geração de arquivo de trace com as chamadas da API.

configure.ac
... ... @@ -335,6 +335,15 @@ if test "$app_cv_pic" == "yes"; then
335 335 fi
336 336  
337 337 dnl ---------------------------------------------------------------------------
  338 +dnl Enable/Disable trace file
  339 +dnl ---------------------------------------------------------------------------
  340 +AC_ARG_ENABLE([trace],[AS_HELP_STRING([--enable-trace], [Enable creation of trace file])],[app_cv_trace="$enableval"],[app_cv_trace="no"])
  341 +
  342 +if test "$app_cv_trace" == "yes"; then
  343 + AC_DEFINE(ENABLE_TRACE_TO_FILE)
  344 +fi
  345 +
  346 +dnl ---------------------------------------------------------------------------
338 347 dnl Output config
339 348 dnl ---------------------------------------------------------------------------
340 349  
... ...
pw3270-sharp.cbp
... ... @@ -43,6 +43,7 @@
43 43 <Linker>
44 44 <Add library="pw3270cpp" />
45 45 </Linker>
  46 + <Unit filename="src/include/config.h.in" />
46 47 <Unit filename="src/native/actions.cc" />
47 48 <Unit filename="src/native/get.cc" />
48 49 <Unit filename="src/native/init.cc" />
... ...
src/include/config.h.in
... ... @@ -43,5 +43,12 @@
43 43 */
44 44 #undef HAVE_GNUC_VISIBILITY
45 45  
  46 + /**
  47 + * @brief Ativa trace em um arquivo texto.
  48 + *
  49 + */
  50 + #undef ENABLE_TRACE_TO_FILE
  51 +
  52 +
46 53  
47 54 #endif // CONFIG_H_INCLUDED
... ...
src/native/Makefile.in
... ... @@ -67,7 +67,7 @@ CC=@CC@
67 67 LD=@CXX@
68 68  
69 69 LIBS=-lpw3270cpp @LIBS@ @LIBICONV@
70   -CFLAGS=@CFLAGS@
  70 +CFLAGS=-I../include @CFLAGS@
71 71 LDFLAGS=@LDFLAGS@
72 72  
73 73 #---[ Rules ]----------------------------------------------------------------------------
... ...
src/native/get.cc
... ... @@ -63,6 +63,8 @@
63 63  
64 64 int tn3270_get_cstate(h3270::session *ses) {
65 65  
  66 + trace_to_file("%s: %d",__FUNCTION__,(int) ses->get_cstate());
  67 +
66 68 try {
67 69 return (int) ses->get_cstate();
68 70 } catch(std::exception &e) {
... ...
src/native/init.cc
... ... @@ -42,6 +42,9 @@
42 42 *
43 43 */
44 44 h3270::session * tn3270_create_session(const char *name) {
  45 +
  46 + trace_to_file("%s(%s)",__FUNCTION__,name ? name : "");
  47 +
45 48 try {
46 49 return h3270::session::create(name);
47 50 } catch(std::exception &e) {
... ... @@ -55,6 +58,9 @@
55 58 *
56 59 */
57 60 int tn3270_destroy_session(h3270::session *ses) {
  61 +
  62 + trace_to_file("%s",__FUNCTION__);
  63 +
58 64 try {
59 65 delete ses;
60 66 } catch(std::exception &e) {
... ... @@ -64,3 +70,23 @@
64 70 return 0;
65 71 }
66 72  
  73 +#ifdef ENABLE_TRACE_TO_FILE
  74 + void write_trace(const char *fmt, ...) {
  75 +
  76 + FILE *trace = fopen(PACKAGE_NAME ".trace","a");
  77 + if(trace) {
  78 + va_list arg_ptr;
  79 + va_start(arg_ptr, fmt);
  80 + vfprintf(trace, fmt, arg_ptr);
  81 + fprintf(trace,"\n");
  82 + va_end(arg_ptr);
  83 + fclose(trace);
  84 + }
  85 +#ifdef DEBUG
  86 + else {
  87 + perror(PACKAGE_NAME ".trace");
  88 + }
  89 +#endif // DEBUG
  90 +
  91 + }
  92 +#endif // ENABLE_TRACE_TO_FILE
... ...
src/native/private.h
... ... @@ -35,6 +35,8 @@
35 35  
36 36 #define PRIVATE_H_INCLUDED
37 37  
  38 + #include <config.h>
  39 +
38 40 #if defined(_WIN32)
39 41  
40 42 #include <windows.h>
... ... @@ -63,6 +65,13 @@
63 65 #define debug( fmt, ... ) /* */
64 66 #endif // DEBUG
65 67  
  68 + #ifdef ENABLE_TRACE_TO_FILE
  69 + DLL_PRIVATE void write_trace(const char *fmt, ...);
  70 + #define trace_to_file( ... ) write_trace(__VA_ARGS__)
  71 + #else
  72 + #define trace( ... ) /* */
  73 + #endif // ENABLE_TRACE_TO_FILE
  74 +
66 75 #include <pw3270cpp.h>
67 76 #include <cerrno>
68 77 #include <cstring>
... ...
src/native/screen.cc
... ... @@ -70,6 +70,7 @@ int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int s
70 70 try {
71 71 memset(str,0,sz+1);
72 72 strncpy(str,ses->get_string_at(row,col,sz).c_str(),sz);
  73 + trace_to_file("%s(%d,%d,%d):\n%s\n",__FUNCTION__,row,col,sz,str);
73 74 } catch(std::exception &e) {
74 75 tn3270_lasterror = e.what();
75 76 return -1;
... ... @@ -79,6 +80,7 @@ int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int s
79 80  
80 81 int tn3270_set_string_at(h3270::session *ses, int row, int col, const char* str) {
81 82 try {
  83 + trace_to_file("%s(%d,%d):\n%s\n",__FUNCTION__,row,col,str);
82 84 debug("%s(%d,%d,\"%s\")",__FUNCTION__,row,col,str);
83 85 ses->set_string_at(row,col,str);
84 86 } catch(std::exception &e) {
... ...
src/native/set.cc
... ... @@ -63,6 +63,7 @@ int tn3270_set_cursor_addr(h3270::session *ses, int addr) {
63 63  
64 64 int tn3270_set_charset(h3270::session *ses, const char* str) {
65 65 try {
  66 + trace_to_file("%s: \"%s\" -> \"%s\"",__FUNCTION__,ses->get_display_charset().c_str(),str);
66 67 ses->set_display_charset(NULL, str);
67 68 } catch(std::exception &e) {
68 69 tn3270_lasterror = e.what();
... ...