blob: 529a031dd5fb1b148f5531c034554f6610cd7099 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/**
* \file array.h
* \author Michal Čihař
*
* String arrays handling code.
*/
#include "array.h"
#include <stdlib.h>
#include <string.h>
void GSM_StringArray_New(GSM_StringArray *array)
{
array->used = 0;
array->allocated = 0;
array->data = NULL;
}
void GSM_StringArray_Free(GSM_StringArray *array)
{
size_t i;
for (i = 0; i < array->used; i++) {
free(array->data[i]);
}
free(array->data);
GSM_StringArray_New(array);
}
gboolean GSM_StringArray_Add(GSM_StringArray *array, const char *string)
{
char **newdata;
/* Allocate extra space if needed */
if (array->used + 1 > array->allocated) {
newdata = realloc(array->data, (array->allocated + 10) * sizeof(char *));
if (newdata == NULL) return FALSE;
array->allocated += 10;
array->data = newdata;
}
array->data[array->used] = strdup(string);
if (array->data[array->used] == NULL) return FALSE;
array->used++;
return TRUE;
}
gboolean GSM_StringArray_Find(GSM_StringArray *array, const char *string)
{
size_t i;
for (i = 0; i < array->used; i++) {
if (strcmp(array->data[i], string) == 0) return TRUE;
}
return FALSE;
}
/* Editor configuration
* vim: noexpandtab sw=8 ts=8 sts=8 tw=72:
*/
|