Commit 7345680734dc36ec3f33f8ebe671828c42c5515e
1 parent
9892e254
Exists in
master
and in
5 other branches
Remodelando interface hllapi para ficar mais compatível com scripts antigos
Showing
2 changed files
with
57 additions
and
48 deletions
Show diff stats
src/include/pw3270/hllapi.h
... | ... | @@ -38,8 +38,9 @@ |
38 | 38 | extern "C" { |
39 | 39 | #endif |
40 | 40 | |
41 | - #define HLLAPI_MAXLENGTH 4096 | |
41 | + #define HLLAPI_MAXLENGTH 4096 | |
42 | 42 | |
43 | + /* Function codes */ | |
43 | 44 | #define HLLAPI_CMD_CONNECTPS 1 /**< connect presentation space */ |
44 | 45 | #define HLLAPI_CMD_DISCONNECTPS 2 /**< disconnect presentation space */ |
45 | 46 | #define HLLAPI_CMD_INPUTSTRING 3 /**< send string */ |
... | ... | @@ -54,6 +55,14 @@ extern "C" { |
54 | 55 | #define HLLAPI_CMD_RECEIVEFILE 91 /**< Receive a file from the host */ |
55 | 56 | |
56 | 57 | #define HLLAPI_CMD_GETREVISION 2000 /**< Get lib3270 revision */ |
58 | + | |
59 | + | |
60 | + /* Result codes */ | |
61 | + #define HLLAPI_STATUS_SUCESS 0 /**< Good return code */ | |
62 | + #define HLLAPI_STATUS_BAD_PARAMETER 2 /**< Bad parameter or verb not supported */ | |
63 | + #define HLLAPI_STATUS_UNAVAILABLE 11 /**< Resource unavailable at this time */ | |
64 | + | |
65 | + | |
57 | 66 | |
58 | 67 | typedef enum _hllapi_packet |
59 | 68 | { | ... | ... |
src/plugins/remotectl/hllapi.c
... | ... | @@ -35,9 +35,24 @@ |
35 | 35 | #include <stdio.h> |
36 | 36 | #include <lib3270/log.h> |
37 | 37 | |
38 | +/*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | |
39 | + | |
40 | + static int connect_ps(char *buffer, unsigned short *length, unsigned short *rc); | |
41 | + static int disconnect_ps(char *buffer, unsigned short *length, unsigned short *rc); | |
42 | + static int get_library_revision(char *buffer, unsigned short *length, unsigned short *rc); | |
43 | + | |
38 | 44 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
39 | 45 | |
40 | -// static HANDLE hPipe = INVALID_HANDLE_VALUE; | |
46 | + static const struct _hllapi_call | |
47 | + { | |
48 | + unsigned long func; | |
49 | + int (*exec)(char *buffer, unsigned short *length, unsigned short *rc); | |
50 | + } hllapi_call[] = | |
51 | + { | |
52 | + { HLLAPI_CMD_CONNECTPS, connect_ps }, | |
53 | + { HLLAPI_CMD_DISCONNECTPS, disconnect_ps }, | |
54 | + { HLLAPI_CMD_GETREVISION, get_library_revision }, | |
55 | + }; | |
41 | 56 | |
42 | 57 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
43 | 58 | |
... | ... | @@ -46,56 +61,41 @@ |
46 | 61 | #else |
47 | 62 | LIB3270_EXPORT int hllapi(const unsigned long *func, char *buffer, unsigned short *length, unsigned short *rc) |
48 | 63 | #endif // _WIN32 |
49 | -{ | |
50 | - switch(*func) | |
51 | - { | |
52 | - case HLLAPI_CMD_CONNECTPS: | |
53 | - break; | |
54 | - | |
55 | - case HLLAPI_CMD_DISCONNECTPS: | |
56 | - break; | |
57 | - | |
58 | - case HLLAPI_CMD_INPUTSTRING: | |
59 | - break; | |
60 | - | |
61 | - case HLLAPI_CMD_WAIT: | |
62 | - break; | |
63 | - | |
64 | - case HLLAPI_CMD_COPYPS: | |
65 | - break; | |
66 | - | |
67 | - case HLLAPI_CMD_SEARCHPS: | |
68 | - break; | |
69 | - | |
70 | - case HLLAPI_CMD_QUERYCURSOR: | |
71 | - break; | |
72 | - | |
73 | - case HLLAPI_CMD_COPYPSTOSTR: | |
74 | - break; | |
75 | - | |
76 | - case HLLAPI_CMD_COPYSTRTOPS: | |
77 | - break; | |
78 | - | |
79 | - case HLLAPI_CMD_SETCURSOR: | |
80 | - break; | |
81 | - | |
82 | - case HLLAPI_CMD_SENDFILE: | |
83 | - break; | |
84 | - | |
85 | - case HLLAPI_CMD_RECEIVEFILE: | |
86 | - break; | |
87 | - | |
88 | - case HLLAPI_CMD_GETREVISION: | |
89 | - break; | |
90 | - | |
91 | - default: | |
92 | - *rc = EINVAL; | |
93 | - return EINVAL; | |
64 | +{ | |
65 | + int f; | |
66 | + | |
67 | + for(f=0;f< (sizeof (hllapi_call) / sizeof ((hllapi_call)[0])));f++) | |
68 | + { | |
69 | + if(hllapi_call[f].func == *func) | |
70 | + return hllapi_call[f].exec(buffer,length,rc); | |
94 | 71 | } |
95 | 72 | |
73 | + *rc = HLLAPI_STATUS_BAD_PARAMETER; | |
96 | 74 | |
97 | - return 0; | |
75 | + return *rc; | |
98 | 76 | } |
77 | + | |
78 | +static int connect_ps(char *buffer, unsigned short *length, unsigned short *rc) | |
79 | +{ | |
80 | + if(hllapi_init(buffer) == 0) | |
81 | + *rc = HLLAPI_STATUS_SUCESS; | |
82 | + else | |
83 | + *rc = HLLAPI_STATUS_UNAVAILABLE; | |
84 | + return 0; | |
85 | +} | |
86 | + | |
87 | +static int disconnect_ps(char *buffer, unsigned short *length, unsigned short *rc) | |
88 | +{ | |
89 | + *rc = hllapi_deinit(); | |
90 | + return 0; | |
91 | +} | |
92 | + | |
93 | +static int get_library_revision(char *buffer, unsigned short *length, unsigned short *rc) | |
94 | +{ | |
95 | + *rc = hllapi_get_revision(); | |
96 | + return 0; | |
97 | +} | |
98 | + | |
99 | 99 | |
100 | 100 | /* |
101 | 101 | static int cmd_connect_ps(const char *name) | ... | ... |