Commit 5559de218fbff25286813a50ec4b4f31a0dcb53c
1 parent
23391401
Exists in
master
and in
5 other branches
Incluindo funcoes extras do hllapi na classe base
Showing
3 changed files
with
43 additions
and
4 deletions
Show diff stats
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; | ... | ... |