Ejemplo n.º 1
0
int 
_evas_xcb_xdefaults_int_get(const char *prog, const char *param) 
{
   char buff[1024];
   char *str = NULL;
   char **ea = NULL;
   unsigned int count = 0, i = 0;
   int ret = -1;

   if ((!_evas_xcb_xdefaults_data) || (!_evas_xcb_xdefaults_file))
     return 0;

   snprintf(buff, sizeof(buff), "*%s*.*%s*", prog, param);

   str = _evas_xcb_xdefaults_data;
   ea = eina_str_split_full(str, "\n", -1, &count);
   for (i = 0; i < count; i++) 
     {
        if (_evas_xcb_xdefaults_glob_match(ea[i], buff)) 
          sscanf(ea[i], "%*[^:]:%*[ ]%d", &ret);
     }
   if ((ea) && (ea[0]))
     {
        free(ea[0]);
        free(ea);
     }

   return ret;
}
Ejemplo n.º 2
0
SH_API Eina_Bool _read_stdin_list(void *data, Ecore_Fd_Handler *fd_handler)
{
   char **splitted;
   char *buffer;
   char c;
   int i = 0;
   int len = 0;
   Evas_Object *obj = data;

   if (!_stdin_prepare(fd_handler)) return 0;

   // allocate initial buffer
   buffer = malloc(sizeof(char));

   // get the buffer
   do {
     c = getc(stdin);
     buffer[i] = c;
     buffer = realloc(buffer, i + sizeof(buffer));
     i++;
   } while (c != EOF);

   // terminate the string.
   buffer[i - 1] = '\0';

   // split and append
   splitted = eina_str_split_full(buffer, "\n", 0, &len);

   for (i = 0; i < len; i++)
     elm_list_item_append(obj, splitted[i], NULL, NULL, NULL, NULL);

   elm_object_item_del(eina_list_data_get(eina_list_last(elm_list_items_get(obj))));

   elm_list_go(obj);

   // free the the pointers, delete handler when we don't need it
   E_FREE(splitted);
   E_FREE(buffer);
   ecore_main_fd_handler_del(fd_handler);
   return 0;

}
END_TEST

START_TEST(str_split)
{
   char **result;
   unsigned int elements;

   eina_init();

   result = eina_str_split_full("nomatch", "", -1, &elements);
   fail_if(result != NULL);
   fail_if(elements != 0);

   result = eina_str_split_full("nomatch", "x", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 1);
   fail_if(strcmp(result[0], "nomatch") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full("nomatch", "xyz", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 1);
   fail_if(strcmp(result[0], "nomatch") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full("match:match:match", ":", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 3);
   while (elements >= 1)
     {
	elements--;
	fail_if(strcmp(result[elements], "match") != 0);
     }
   free(result[0]);
   free(result);

   result = eina_str_split_full("a:b:c", ":", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 3);
   fail_if(strcmp(result[0], "a") != 0);
   fail_if(strcmp(result[1], "b") != 0);
   fail_if(strcmp(result[2], "c") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full("a:b:", ":", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 3);
   fail_if(strcmp(result[0], "a") != 0);
   fail_if(strcmp(result[1], "b") != 0);
   fail_if(strcmp(result[2], "") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full(":b:c", ":", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 3);
   fail_if(strcmp(result[0], "") != 0);
   fail_if(strcmp(result[1], "b") != 0);
   fail_if(strcmp(result[2], "c") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full(":", ":", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 2);
   fail_if(strcmp(result[0], "") != 0);
   fail_if(strcmp(result[1], "") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full("a", "!!!!!!!!!", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 1);
   fail_if(strcmp(result[0], "a") != 0);
   free(result[0]);
   free(result);

   result = eina_str_split_full("aaba", "ab", -1, &elements);
   fail_if(result == NULL);
   fail_if(elements != 2);
   fail_if(strcmp(result[0], "a") != 0);
   fail_if(strcmp(result[1], "a") != 0);
   free(result[0]);
   free(result);

   eina_shutdown();
}
Ejemplo n.º 4
0
END_TEST

START_TEST(str_split)
{
   char **result;
   unsigned int elements;
   char *str;

   eina_init();

   result = eina_str_split_full(NULL, ":", 1, &elements);
        fail_if(result != NULL);
        fail_if(elements != 0);

   result = eina_str_split_full("nomatch", NULL, 1, &elements);
        fail_if(result != NULL);
        fail_if(elements != 0);

   result = eina_str_split_full("match:match", ":", 1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 1);
        fail_if(strcmp(result[0], "match:match") != 0);
        free(result[0]);
        free(result);

   result = eina_str_split_full("match:match:nomatch:nomatch", ":", 3, &elements);
        fail_if(result == NULL);
        fail_if(elements != 3);
        fail_if(strcmp(result[0], "match") != 0);
        fail_if(strcmp(result[1], "match") != 0);
        fail_if(strcmp(result[2], "nomatch:nomatch") != 0);
        free(result[0]);
        free(result);

   result = eina_str_split_full("nomatch", "", -1, &elements);
        fail_if(result != NULL);
        fail_if(elements != 0);

   result = eina_str_split_full("nomatch", "x", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 1);
        fail_if(strcmp(result[0], "nomatch") != 0);
        fail_if(result[1]);
        free(result[0]);
        free(result);

   result = eina_str_split_full("nomatch", "xyz", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 1);
        fail_if(strcmp(result[0], "nomatch") != 0);
        fail_if(result[1]);
        free(result[0]);
        free(result);

   result = eina_str_split_full("match:match:match", ":", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 3);
   for (elements = 0; elements < 3 - 1; elements++)
     fail_if(strcmp(result[elements], "match") != 0);
     fail_if(result[3]);
        free(result[0]);
        free(result);

   str = malloc(sizeof(char) * 1024);
   str[0] = 0;
   for (elements = 0; elements < 300; elements++)
     strcat(str, "ma:");
   strcat(str, "ma");
   result = eina_str_split_full(str, ":", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 301);
        free(result[0]);
        free(result);
   free(str);

   result = eina_str_split_full("a:b:c", ":", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 3);
        fail_if(strcmp(result[0], "a") != 0);
        fail_if(strcmp(result[1], "b") != 0);
        fail_if(strcmp(result[2], "c") != 0);
        fail_if(result[3]);
        free(result[0]);
        free(result);

   result = eina_str_split_full("a:b:", ":", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 3);
        fail_if(strcmp(result[0], "a") != 0);
        fail_if(strcmp(result[1], "b") != 0);
        fail_if(strcmp(result[2], "") != 0);
        fail_if(result[3]);
        free(result[0]);
        free(result);

   result = eina_str_split_full(":b:c", ":", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 3);
        fail_if(strcmp(result[0], "") != 0);
        fail_if(strcmp(result[1], "b") != 0);
        fail_if(strcmp(result[2], "c") != 0);
        fail_if(result[3]);
        free(result[0]);
        free(result);

   result = eina_str_split_full(":", ":", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 2);
        fail_if(strcmp(result[0], "") != 0);
        fail_if(strcmp(result[1], "") != 0);
        fail_if(result[2]);
        free(result[0]);
        free(result);

   result = eina_str_split_full("a", "!!!!!!!!!", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 1);
        fail_if(strcmp(result[0], "a") != 0);
        fail_if(result[1]);
        free(result[0]);
        free(result);

   result = eina_str_split_full("aaba", "ab", -1, &elements);
        fail_if(result == NULL);
        fail_if(elements != 2);
        fail_if(strcmp(result[0], "a") != 0);
        fail_if(strcmp(result[1], "a") != 0);
        fail_if(result[2]);
        free(result[0]);
        free(result);

   eina_shutdown();
}