Commit c35dcdd00512fef7c644adaab6e984e91d3d3dc0

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

Implementando chamadas HLLAPI

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