mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 17:59:07 -04:00
110 lines
2.7 KiB
Plaintext
110 lines
2.7 KiB
Plaintext
$NetBSD: patch-al,v 1.2 2013/03/28 21:25:52 joerg Exp $
|
|
|
|
--- libs/gib/gib_classes.c.orig 2003-11-29 02:01:31.000000000 +0000
|
|
+++ libs/gib/gib_classes.c
|
|
@@ -184,26 +184,32 @@ Object_Class_New_f (gib_object_t *obj, g
|
|
return 0;
|
|
}
|
|
|
|
+struct child_data {
|
|
+ const char **reply;
|
|
+ unsigned i;
|
|
+};
|
|
+
|
|
+static qboolean
|
|
+iterator (void *data_, gib_class_t *class, void *unused)
|
|
+{
|
|
+ struct child_data *data = data_;
|
|
+ data->reply[data->i++] = class->name;
|
|
+ return false;
|
|
+}
|
|
+
|
|
static int
|
|
Object_Class_Children_f (gib_object_t *obj, gib_method_t *method, void *data,
|
|
gib_object_t *sender, gib_message_t mesg)
|
|
{
|
|
- const char **reply;
|
|
+ struct child_data cb_data;
|
|
unsigned int size;
|
|
- unsigned int i = 0;
|
|
-
|
|
- static qboolean
|
|
- iterator (gib_class_t *class, void *unused)
|
|
- {
|
|
- reply[i++] = class->name;
|
|
- return false;
|
|
- }
|
|
-
|
|
+
|
|
size = llist_size (obj->class->children);
|
|
if (size) {
|
|
- reply = malloc (sizeof (char *) * size);
|
|
- llist_iterate (obj->class->children, LLIST_ICAST (iterator));
|
|
- GIB_Reply (obj, mesg, size, reply);
|
|
+ cb_data.reply = malloc (sizeof (char *) * size);
|
|
+ cb_data.i = 0;
|
|
+ llist_iterate (obj->class->children, iterator, &cb_data);
|
|
+ GIB_Reply (obj, mesg, size, cb_data.reply);
|
|
} else
|
|
GIB_Reply (obj, mesg, 0, NULL);
|
|
return 0;
|
|
@@ -600,6 +606,12 @@ Scrobj_Method_f (gib_object_t *obj, gib_
|
|
return 0;
|
|
}
|
|
|
|
+static void
|
|
+mtabfree (void *mtab, void *unused)
|
|
+{
|
|
+ free (mtab);
|
|
+}
|
|
+
|
|
void
|
|
GIB_Classes_Build_Scripted (const char *name, const char *parentname,
|
|
gib_tree_t *tree, gib_script_t *script)
|
|
@@ -610,21 +622,6 @@ GIB_Classes_Build_Scripted (const char *
|
|
gib_classdesc_t desc;
|
|
enum {CLASS, INSTANCE} mode = INSTANCE;
|
|
|
|
- static void
|
|
- mtabfree (void *mtab, void *unused)
|
|
- {
|
|
- free (mtab);
|
|
- }
|
|
-
|
|
- static const char *
|
|
- fname (const char *str)
|
|
- {
|
|
- if (mode == INSTANCE)
|
|
- return va ("__%s_%s__", name, str);
|
|
- else
|
|
- return va ("%s::%s", name, str);
|
|
- }
|
|
-
|
|
methods = llist_new (mtabfree, NULL, NULL);
|
|
cmethods = llist_new (mtabfree, NULL, NULL);
|
|
|
|
@@ -640,6 +637,7 @@ GIB_Classes_Build_Scripted (const char *
|
|
if (!strcmp (line->children->str,
|
|
"function")) {
|
|
gib_tree_t *cur, *last;
|
|
+ char *fname;
|
|
gib_methodtab_t *new = malloc (sizeof
|
|
(gib_methodtab_t));
|
|
Scrobj_method_t *data = malloc (sizeof
|
|
@@ -648,9 +646,13 @@ GIB_Classes_Build_Scripted (const char *
|
|
line->children->next->next;
|
|
last->next; last =
|
|
last->next);
|
|
+
|
|
+ if (mode == INSTANCE)
|
|
+ fname = va("__%s_%s__", name, line->children->next->str);
|
|
+ else
|
|
+ fname = va("%s::%s", name, line->children->next->str);
|
|
data->func = GIB_Function_Define
|
|
- (fname
|
|
- (line->children->next->str),
|
|
+ (fname,
|
|
last->str,
|
|
last->children,
|
|
script, NULL);
|