Commit c35dcdd00512fef7c644adaab6e984e91d3d3dc0
1 parent
1a9aa427
Exists in
master
and in
5 other branches
Implementando chamadas HLLAPI
Showing
3 changed files
with
48 additions
and
6 deletions
Show diff stats
src/plugins/hllapi/calls.c
@@ -461,3 +461,17 @@ | @@ -461,3 +461,17 @@ | ||
461 | #warning Implementar | 461 | #warning Implementar |
462 | return -1; | 462 | return -1; |
463 | } | 463 | } |
464 | + | ||
465 | + char * hllapi_get_string(int offset, size_t len) | ||
466 | + { | ||
467 | + if(!(get_text_at_offset && hSession)) | ||
468 | + return NULL; | ||
469 | + | ||
470 | + return get_text_at_offset(hSession,offset-1,len); | ||
471 | + } | ||
472 | + | ||
473 | + void hllapi_free(void *p) | ||
474 | + { | ||
475 | + if(release_memory) | ||
476 | + release_memory(p); | ||
477 | + } |
src/plugins/hllapi/client.h
@@ -60,4 +60,8 @@ | @@ -60,4 +60,8 @@ | ||
60 | int hllapi_pipe_setcursor(void *h, int baddr); | 60 | int hllapi_pipe_setcursor(void *h, int baddr); |
61 | int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); | 61 | int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); |
62 | 62 | ||
63 | + char * hllapi_get_string(int offset, size_t len); | ||
64 | + void hllapi_free(void *p); | ||
65 | + | ||
66 | + | ||
63 | 67 |
src/plugins/hllapi/hllapi.c
@@ -316,15 +316,34 @@ static int search_ps(char *buffer, unsigned short *length, unsigned short *ps) | @@ -316,15 +316,34 @@ static int search_ps(char *buffer, unsigned short *length, unsigned short *ps) | ||
316 | * 24 The search string was not found. | 316 | * 24 The search string was not found. |
317 | * | 317 | * |
318 | */ | 318 | */ |
319 | - size_t szBuffer = strlen(buffer); | 319 | + size_t szBuffer = strlen(buffer); |
320 | + char * text; | ||
321 | + int rc = -1; | ||
320 | 322 | ||
321 | - if(*length < szBuffer) | 323 | + if(*length < szBuffer) |
322 | szBuffer = *length; | 324 | szBuffer = *length; |
325 | + | ||
326 | + | ||
327 | + text = hllapi_get_string(*ps,szBuffer); | ||
328 | + if(!text) | ||
329 | + return HLLAPI_STATUS_SYSTEM_ERROR; | ||
330 | + | ||
331 | + if(strncmp(text,buffer,szBuffer)) | ||
332 | + { | ||
333 | + // String not found | ||
334 | + *ps = 0; | ||
335 | + rc = 24; | ||
336 | + } | ||
337 | + else | ||
338 | + { | ||
339 | + // String found | ||
340 | + *ps = 1; | ||
341 | + rc = 0; | ||
342 | + } | ||
343 | + | ||
344 | + hllapi_free(text); | ||
323 | 345 | ||
324 | - | ||
325 | - #warning Implementar | ||
326 | - | ||
327 | - return HLLAPI_STATUS_SYSTEM_ERROR; | 346 | + return rc; |
328 | } | 347 | } |
329 | 348 | ||
330 | static int copy_ps(char *buffer, unsigned short *length, unsigned short *rc) | 349 | static int copy_ps(char *buffer, unsigned short *length, unsigned short *rc) |
@@ -338,6 +357,11 @@ static int copy_ps(char *buffer, unsigned short *length, unsigned short *rc) | @@ -338,6 +357,11 @@ static int copy_ps(char *buffer, unsigned short *length, unsigned short *rc) | ||
338 | * | 357 | * |
339 | * | 358 | * |
340 | */ | 359 | */ |
360 | + size_t szBuffer = strlen(buffer); | ||
361 | + | ||
362 | + if(*length < szBuffer) | ||
363 | + szBuffer = *length; | ||
364 | + | ||
341 | 365 | ||
342 | #warning Implementar | 366 | #warning Implementar |
343 | 367 |