Commit 5559de218fbff25286813a50ec4b4f31a0dcb53c

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

Incluindo funcoes extras do hllapi na classe base

src/classlib/local.cc
... ... @@ -305,6 +305,8 @@
305 305 const char * (*_get_display_charset)(H3270 *hSession);
306 306 int (*_set_host_charset)(H3270 *hSession, const char *name);
307 307 const char * (*_get_host_charset)(H3270 *hSession);
  308 + int (*_print)(H3270 *hSession);
  309 + int (*_erase_eof)(H3270 *hSession);
308 310  
309 311 public:
310 312  
... ... @@ -354,6 +356,8 @@
354 356 { (void **) & _get_display_charset, "lib3270_get_display_charset" },
355 357 { (void **) & _set_host_charset, "lib3270_set_host_charset" },
356 358 { (void **) & _get_host_charset, "lib3270_get_host_charset" },
  359 + { (void **) & _erase_eof, "lib3270_eraseeof" },
  360 + { (void **) & _print, "lib3270_print" },
357 361  
358 362 };
359 363  
... ... @@ -561,6 +565,17 @@
561 565 return new string(_get_host_charset(hSession));
562 566 }
563 567  
  568 + int erase_eof(void)
  569 + {
  570 + return _erase_eof(hSession);
  571 + }
  572 +
  573 + int print(void)
  574 + {
  575 + return _print(hSession);
  576 + }
  577 +
  578 +
564 579 };
565 580  
566 581 session * session::create_local(void)
... ...
src/classlib/remote.cc
... ... @@ -55,6 +55,8 @@
55 55 #define HLLAPI_PACKET_GET_CURSOR "getCursorAddress"
56 56 #define HLLAPI_PACKET_ENTER "enter"
57 57 #define HLLAPI_PACKET_QUIT "quit"
  58 + #define HLLAPI_PACKET_ERASE_EOF "eraseEOF"
  59 + #define HLLAPI_PACKET_PRINT "print"
58 60 #endif // WIN32
59 61  
60 62 #include <pw3270/class.h>
... ... @@ -300,7 +302,12 @@
300 302  
301 303 // Get application path
302 304 *appName = 0;
303   - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS)
  305 + if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\pw3270",0,KEY_QUERY_VALUE,&hKey) != ERROR_SUCCESS)
  306 + {
  307 + throw exception("Can't open key %s","HKLM\\Software\\pw3270");
  308 + return;
  309 + }
  310 + else
304 311 {
305 312 unsigned long datatype; // #defined in winnt.h (predefined types 0-11)
306 313 if(RegQueryValueExA(hKey,"appName",NULL,&datatype,(LPBYTE) appName,&datalen) != ERROR_SUCCESS)
... ... @@ -308,6 +315,12 @@
308 315 RegCloseKey(hKey);
309 316 }
310 317  
  318 + if(!*appName)
  319 + {
  320 + throw exception("key %s\\appName is invalid","HKLM\\Software\\pw3270");
  321 + return;
  322 + }
  323 +
311 324 trace("%s appname=%s\n",__FUNCTION__,appName);
312 325  
313 326 snprintf(buffer,79,"%s --session=\"H%06d\"",appName,getpid());
... ... @@ -327,7 +340,7 @@
327 340 }
328 341 else
329 342 {
330   - throw exception("Can't start %s session",PACKAGE_NAME);
  343 + throw exception("Can't start %s",appName);
331 344 return;
332 345 }
333 346  
... ... @@ -354,11 +367,11 @@
354 367  
355 368 free(str);
356 369  
357   - timer = time(0)+5;
  370 + timer = time(0)+20;
358 371 while(hPipe == INVALID_HANDLE_VALUE && time(0) < timer)
359 372 {
360   - Sleep(10);
361 373 hPipe = FindFirstFile(buffer, &FindFileData);
  374 + Sleep(10);
362 375 }
363 376  
364 377 if(hPipe != INVALID_HANDLE_VALUE)
... ... @@ -1165,6 +1178,16 @@
1165 1178  
1166 1179 #endif // HAVE_DBUS
1167 1180  
  1181 + int erase_eof(void)
  1182 + {
  1183 + return query_intval(HLLAPI_PACKET_ERASE_EOF);
  1184 + }
  1185 +
  1186 + int print(void)
  1187 + {
  1188 + return query_intval(HLLAPI_PACKET_PRINT);
  1189 + }
  1190 +
1168 1191 };
1169 1192  
1170 1193 session * session::create_remote(const char *session)
... ...
src/classlib/testprogram.cc
... ... @@ -39,6 +39,7 @@
39 39 {
40 40 string *s;
41 41 session *session = session::start("pw3270:a");
  42 +// session *session = session::start("new");
42 43  
43 44 cout << "pw3270 version: " << session->get_version() << endl;
44 45 cout << "pw3270 revision: " << session->get_revision() << endl << endl;
... ...