43 mkhash (
const char *
name)
64 static int cache_inited = 0;
74 bzero (&(cache[i]),
sizeof (cache[i]));
80 cache_get_name (
const char *
name,
int h)
84 if (cache_inited == 0)
103 cache_add_name (
const char *
name,
int h)
115 if (cache[h].
next != NULL)
124 cache_inc (
const char *
name)
127 int h = mkhash (
name);
128 nc = cache_get_name (
name, h);
132 nc = cache_add_name (
name, h);
138 cache_dec (
const char *
name)
147 nc = cache_get_name (
name, h);
154 int h = mkhash (
name);
157 if (nc->
next != NULL)
160 if (nc->
prev != NULL)
179 arglst = arglst->
next;
184 arglst->
next = g_malloc0 (
sizeof (
struct arglist));
185 arglst->
hash = mkhash (arglst->
name);
197 new = g_malloc0 (
sizeof (
struct arglist));
198 new->name = cache_inc (
name);
202 new->hash = mkhash (new->name);
209 int h = mkhash (
name);
213 while (arg->
next != NULL)
234 arglst = arg_get (arglst,
name);
260 args = arg_get (args,
name);
264 return (args->
value);
272 args = arg_get (args,
name);
284 const char *spaces =
"--------------------";
309 args->
name, (
int) GPOINTER_TO_SIZE (args->
value));
313 args->
name, (
int) GPOINTER_TO_SIZE (args->
value));
328 cache_dec (arg->
name);
351 cache_dec (arg->
name);
362 int h = mkhash (
name);
364 struct arglist *element = NULL;
372 while (pivot->
next != NULL)
374 if (pivot->
hash == h && strcmp (pivot->
name,
name) == 0)
382 if (!element || element->
hash != h || strcmp (element->
name,
name))
387 element = args->
next;
388 memcpy (&store, element,
sizeof (
struct arglist));
389 memcpy (element, args,
sizeof (
struct arglist));
390 memcpy (args, &store,
sizeof (
struct arglist));
395 while (pivot->
next != NULL && pivot->
next != element)
399 element->
next = NULL;
int arg_set_value(struct arglist *arglst, const char *name, void *value)
void arg_prepend_value(struct arglist **list, const char *name, int type, void *value)
void arg_free(struct arglist *arg)
Struct to cache names (keys) of arglist entries.
void log_legacy_write(const char *format,...)
Legacy function to write a log message.
void arg_free_all(struct arglist *arg)
void arg_dump(struct arglist *args, int level)
void arg_add_value(struct arglist *arglst, const char *name, int type, void *value)
int arg_get_value_int(struct arglist *args, const char *name)
void arg_del_value(struct arglist *args, const char *name)
int arg_get_type(struct arglist *args, const char *name)
void * arg_get_value(struct arglist *args, const char *name)