100 |
free (ptr); |
free (ptr); |
101 |
} |
} |
102 |
|
|
103 |
|
static int |
104 |
|
_destroy_item (void *item, void *data) |
105 |
|
{ |
106 |
|
free (item); |
107 |
|
return 0; |
108 |
|
} |
109 |
|
|
110 |
void |
void |
111 |
sieve_slist_destroy (list_t *plist) |
sieve_slist_destroy (list_t *plist) |
112 |
{ |
{ |
113 |
iterator_t itr; |
if (!plist) |
|
|
|
|
if (!plist || iterator_create (&itr, *plist)) |
|
114 |
return; |
return; |
115 |
|
list_do (*plist, _destroy_item, NULL); |
|
for (iterator_first (itr); !iterator_is_done (itr); iterator_next (itr)) |
|
|
{ |
|
|
char *s; |
|
|
iterator_current (itr, (void **)&s); |
|
|
free (s); |
|
|
} |
|
|
iterator_destroy (&itr); |
|
116 |
list_destroy (plist); |
list_destroy (plist); |
117 |
} |
} |
118 |
|
|
229 |
const char *fmt, va_list ap) |
const char *fmt, va_list ap) |
230 |
{ |
{ |
231 |
if (filename) |
if (filename) |
232 |
fprintf (stderr, "%s:%d: ", filename, lineno); |
fprintf (stderr, "%s:%d: ", filename, lineno); |
233 |
vfprintf (stderr, fmt, ap); |
vfprintf (stderr, fmt, ap); |
234 |
fprintf (stderr, "\n"); |
fprintf (stderr, "\n"); |
235 |
return 0; |
return 0; |