spmenu/libs/sort.c

32 lines
805 B
C
Raw Normal View History

char ** tokenize(char *source, const char *delim, int *llen) {
2023-03-09 11:56:44 +01:00
int listlength = 0, list_size = 0;
char **list = NULL, *token;
token = strtok(source, delim);
while (token) {
if (listlength + 1 >= list_size) {
if (!(list = realloc(list, (list_size += 8) * sizeof(*list))))
2023-04-21 11:56:45 +02:00
die("spmenu: unable to realloc %zu bytes\n", list_size * sizeof(*list));
2023-03-09 11:56:44 +01:00
}
if (!(list[listlength] = strdup(token)))
2023-04-21 11:56:45 +02:00
die("spmenu: unable to strdup %zu bytes\n", strlen(token) + 1);
2023-03-09 11:56:44 +01:00
token = strtok(NULL, delim);
listlength++;
}
*llen = listlength;
return list;
2023-03-09 10:10:29 +01:00
}
int arrayhas(char **list, int length, char *item) {
2023-03-09 11:56:44 +01:00
int i;
2023-03-09 10:10:29 +01:00
2023-03-09 11:56:44 +01:00
for (i = 0; i < length; i++) {
size_t len1 = strlen(list[i]);
size_t len2 = strlen(item);
if (!fstrncmp(list[i], item, len1 > len2 ? len2 : len1))
return 1;
2023-03-09 10:10:29 +01:00
}
2023-03-09 11:56:44 +01:00
return 0;
2023-03-09 10:10:29 +01:00
}