mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 17:59:07 -04:00
165 lines
4.8 KiB
Plaintext
165 lines
4.8 KiB
Plaintext
$NetBSD: patch-am,v 1.2 2013/03/28 21:25:52 joerg Exp $
|
|
|
|
--- libs/gib/gib_function.c.orig 2004-04-09 18:18:19.000000000 +0000
|
|
+++ libs/gib/gib_function.c
|
|
@@ -160,79 +160,108 @@ GIB_Function_Find (const char *name)
|
|
return (gib_function_t *) Hash_Find (gib_functions, name);
|
|
}
|
|
|
|
+struct prepare_args_data {
|
|
+ gib_var_t *var;
|
|
+ hashtab_t **zero;
|
|
+ unsigned int i, ind;
|
|
+ unsigned int argc;
|
|
+ const char **args;
|
|
+ cbuf_t *cbuf;
|
|
+};
|
|
+
|
|
+static qboolean
|
|
+prepare_args_iterate (void *data_, void *arg_, llist_node_t *node)
|
|
+{
|
|
+ char *arg = arg_;
|
|
+ struct prepare_args_data *data = data_;
|
|
+ data->var = GIB_Var_Get_Complex (&GIB_DATA(data->cbuf)->locals, data->zero,
|
|
+ arg, &data->ind, true);
|
|
+ if (!data->var->array[0].value)
|
|
+ data->var->array[0].value = dstring_newstr ();
|
|
+ dstring_copystr (data->var->array[0].value, data->args[data->i]);
|
|
+ data->i++;
|
|
+ return data->i < data->argc;
|
|
+}
|
|
+
|
|
static void
|
|
GIB_Function_Prepare_Args (cbuf_t * cbuf, const char **args, unsigned int
|
|
argc, llist_t *arglist)
|
|
{
|
|
static hashtab_t *zero = 0;
|
|
- unsigned int i, ind;
|
|
- gib_var_t *var;
|
|
+ struct prepare_args_data data;
|
|
static char argss[] = "args";
|
|
|
|
- static qboolean
|
|
- iterate (char *arg, llist_node_t *node)
|
|
- {
|
|
- var = GIB_Var_Get_Complex (&GIB_DATA(cbuf)->locals, &zero,
|
|
- arg, &ind, true);
|
|
- if (!var->array[0].value)
|
|
- var->array[0].value = dstring_newstr ();
|
|
- dstring_copystr (var->array[0].value, args[i]);
|
|
- i++;
|
|
- return i < argc;
|
|
- }
|
|
+ data.cbuf = cbuf;
|
|
+ data.argc = argc;
|
|
+ data.args = args;
|
|
+ data.i = 1;
|
|
+ data.zero = &zero;
|
|
+ llist_iterate (arglist, prepare_args_iterate, &data);
|
|
|
|
- i = 1; llist_iterate (arglist, LLIST_ICAST (iterate));
|
|
-
|
|
- var =
|
|
+ data.var =
|
|
GIB_Var_Get_Complex (&GIB_DATA (cbuf)->locals, &zero, argss,
|
|
- &ind, true);
|
|
- var->array = realloc (var->array, sizeof (struct gib_varray_s) * argc);
|
|
- memset (var->array + 1, 0, (argc - 1) * sizeof (struct gib_varray_s));
|
|
- var->size = argc;
|
|
- for (i = 0; i < argc; i++) {
|
|
- if (var->array[i].value)
|
|
- dstring_clearstr (var->array[i].value);
|
|
+ &data.ind, true);
|
|
+ data.var->array = realloc (data.var->array, sizeof (struct gib_varray_s) * argc);
|
|
+ memset (data.var->array + 1, 0, (argc - 1) * sizeof (struct gib_varray_s));
|
|
+ data.var->size = argc;
|
|
+ for (data.i = 0; data.i < argc; data.i++) {
|
|
+ if (data.var->array[data.i].value)
|
|
+ dstring_clearstr (data.var->array[data.i].value);
|
|
else
|
|
- var->array[i].value = dstring_newstr ();
|
|
- dstring_appendstr (var->array[i].value, args[i]);
|
|
+ data.var->array[data.i].value = dstring_newstr ();
|
|
+ dstring_appendstr (data.var->array[data.i].value, args[data.i]);
|
|
}
|
|
}
|
|
|
|
+struct prepare_args_d_data {
|
|
+ gib_var_t *var;
|
|
+ unsigned i, ind, argc;
|
|
+ hashtab_t **zero;
|
|
+ dstring_t **args;
|
|
+ cbuf_t *cbuf;
|
|
+};
|
|
+
|
|
+static qboolean
|
|
+iterate (void *data_, void *arg_, llist_node_t *node)
|
|
+{
|
|
+ char *arg = arg_;
|
|
+ struct prepare_args_d_data *data = data_;
|
|
+ data->var = GIB_Var_Get_Complex (&GIB_DATA(data->cbuf)->locals, data->zero,
|
|
+ arg, &data->ind, true);
|
|
+ if (!data->var->array[0].value)
|
|
+ data->var->array[0].value = dstring_newstr ();
|
|
+ dstring_copystr (data->var->array[0].value, data->args[data->i]->str);
|
|
+ data->i++;
|
|
+ return data->i < data->argc;
|
|
+}
|
|
+
|
|
static void
|
|
GIB_Function_Prepare_Args_D (cbuf_t * cbuf, dstring_t **args, unsigned int
|
|
argc, llist_t *arglist)
|
|
{
|
|
+ struct prepare_args_d_data data;
|
|
static hashtab_t *zero = 0;
|
|
- unsigned int i, ind;
|
|
- gib_var_t *var;
|
|
static char argss[] = "args";
|
|
|
|
- static qboolean
|
|
- iterate (char *arg, llist_node_t *node)
|
|
- {
|
|
- var = GIB_Var_Get_Complex (&GIB_DATA(cbuf)->locals, &zero,
|
|
- arg, &ind, true);
|
|
- if (!var->array[0].value)
|
|
- var->array[0].value = dstring_newstr ();
|
|
- dstring_copystr (var->array[0].value, args[i]->str);
|
|
- i++;
|
|
- return i < argc;
|
|
- }
|
|
-
|
|
- i = 1; llist_iterate (arglist, LLIST_ICAST (iterate));
|
|
-
|
|
- var =
|
|
+ data.cbuf = cbuf;
|
|
+ data.argc = argc;
|
|
+ data.args = args;
|
|
+ data.zero = &zero;
|
|
+ data.i = 1;
|
|
+ llist_iterate (arglist, iterate, &data);
|
|
+
|
|
+ data.var =
|
|
GIB_Var_Get_Complex (&GIB_DATA (cbuf)->locals, &zero, argss,
|
|
- &ind, true);
|
|
- var->array = realloc (var->array, sizeof (struct gib_varray_s) * argc);
|
|
- memset (var->array + 1, 0, (argc - 1) * sizeof (struct gib_varray_s));
|
|
- var->size = argc;
|
|
- for (i = 0; i < argc; i++) {
|
|
- if (var->array[i].value)
|
|
- dstring_clearstr (var->array[i].value);
|
|
+ &data.ind, true);
|
|
+ data.var->array = realloc (data.var->array, sizeof (struct gib_varray_s) * argc);
|
|
+ memset (data.var->array + 1, 0, (argc - 1) * sizeof (struct gib_varray_s));
|
|
+ data.var->size = argc;
|
|
+ for (data.i = 0; data.i < argc; data.i++) {
|
|
+ if (data.var->array[data.i].value)
|
|
+ dstring_clearstr (data.var->array[data.i].value);
|
|
else
|
|
- var->array[i].value = dstring_newstr ();
|
|
- dstring_appendstr (var->array[i].value, args[i]->str);
|
|
+ data.var->array[data.i].value = dstring_newstr ();
|
|
+ dstring_appendstr (data.var->array[data.i].value, args[data.i]->str);
|
|
}
|
|
}
|
|
|