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 |