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; }
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(); }
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(); }