Enlightenment CVS committal Author : sebastid Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_dbus Modified Files: Ecore_DBus.h ecore_dbus.c ecore_dbus_message.c ecore_dbus_methods.c ecore_dbus_private.h ecore_dbus_unmarshal.c ecore_dbus_utils.c Log Message: Fix Fix =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/Ecore_DBus.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- Ecore_DBus.h 25 Jul 2006 14:12:21 -0000 1.10 +++ Ecore_DBus.h 25 Jul 2006 16:03:05 -0000 1.11 @@ -84,6 +84,7 @@ struct _Ecore_DBus_Event_Server_Data { Ecore_DBus_Server *server; + char *method; Ecore_DBus_Message *message; }; @@ -120,6 +121,16 @@ EAPI void ecore_dbus_message_print(Ecore_DBus_Message *msg); EAPI void *ecore_dbus_message_header_field_get(Ecore_DBus_Message *msg, Ecore_DBus_Message_Header_Field field); EAPI void *ecore_dbus_message_body_field_get(Ecore_DBus_Message *msg, unsigned int pos); + + /* methods */ + EAPI int ecore_dbus_method_hello(Ecore_DBus_Server *svr); + EAPI int ecore_dbus_method_list_names(Ecore_DBus_Server *svr); + EAPI int ecore_dbus_method_name_has_owner(Ecore_DBus_Server *svr, char *name); + EAPI int ecore_dbus_method_start_service_by_name(Ecore_DBus_Server *svr, char *name, unsigned int flags); + EAPI int ecore_dbus_method_get_name_owner(Ecore_DBus_Server *svr, char *name); + EAPI int ecore_dbus_method_get_connection_unix_user(Ecore_DBus_Server *svr, char *connection); + EAPI int ecore_dbus_method_add_match(Ecore_DBus_Server *svr, char *match); + EAPI int ecore_dbus_method_remove_match(Ecore_DBus_Server *svr, char *match); #ifdef __cplusplus } =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ecore_dbus.c 25 Jul 2006 14:34:47 -0000 1.14 +++ ecore_dbus.c 25 Jul 2006 16:03:05 -0000 1.15 @@ -342,8 +342,9 @@ printf("[ecore_dbus] received server data, %d bytes\n", e->size); while (e->size) { - Ecore_DBus_Event_Server_Data *ev; + Ecore_DBus_Event_Server_Data *ev; Ecore_DBus_Message_Field_UInt32 *serial; + char *method; msg = _ecore_dbus_message_unmarshal(svr, (unsigned char *)(e->data) + offset, e->size); if (msg == NULL) break; @@ -351,12 +352,11 @@ e->size -= msg->length; printf("[ecore_dbus] dbus message length %u bytes, still %d\n", msg->length, e->size); - //ecore_dbus_message_print(msg); + ecore_dbus_message_print(msg); /* Trap known messages */ serial = ecore_dbus_message_header_field_get(msg, ECORE_DBUS_HEADER_FIELD_REPLY_SERIAL); if (msg->type == ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN) { - char *method; method = ecore_hash_remove(svr->methods, (void *)serial->value); if (method) @@ -369,35 +369,19 @@ name = ecore_dbus_message_body_field_get(msg, 0); printf("Got unique name: %s\n", name); svr->unique_name = strdup(name); - _ecore_dbus_message_free(msg); } - else - { - ev = malloc(sizeof(Ecore_DBus_Event_Server_Data)); - ev->server = svr; - ev->message = msg; - ecore_event_add(ECORE_DBUS_EVENT_SERVER_DATA, ev, - _ecore_dbus_event_server_data_free, NULL); - } - free(method); - } - else - { - ev = malloc(sizeof(Ecore_DBus_Event_Server_Data)); - ev->server = svr; - ev->message = msg; - ecore_event_add(ECORE_DBUS_EVENT_SERVER_DATA, ev, - _ecore_dbus_event_server_data_free, NULL); } } else { - ev = malloc(sizeof(Ecore_DBus_Event_Server_Data)); - ev->server = svr; - ev->message = msg; - ecore_event_add(ECORE_DBUS_EVENT_SERVER_DATA, ev, - _ecore_dbus_event_server_data_free, NULL); + method = NULL; } + ev = malloc(sizeof(Ecore_DBus_Event_Server_Data)); + ev->server = svr; + ev->message = msg; + ev->method = method; + ecore_event_add(ECORE_DBUS_EVENT_SERVER_DATA, ev, + _ecore_dbus_event_server_data_free, NULL); } } return 0; @@ -410,5 +394,6 @@ event = ev; _ecore_dbus_message_free(event->message); + if (event->method) free(event->method); free(ev); } =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_message.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ecore_dbus_message.c 25 Jul 2006 14:12:21 -0000 1.2 +++ ecore_dbus_message.c 25 Jul 2006 16:03:05 -0000 1.3 @@ -77,7 +77,7 @@ s = _ecore_dbus_message_marshal_struct_begin(msg); _ecore_dbus_message_marshal_byte(msg, ECORE_DBUS_HEADER_FIELD_SIGNATURE); - _ecore_dbus_message_marshal_variant(msg, ECORE_DBUS_DATA_TYPE_SIGNATURE, method); + _ecore_dbus_message_marshal_variant(msg, ECORE_DBUS_DATA_TYPE_SIGNATURE, fmt); _ecore_dbus_message_marshal_struct_end(msg, s); } _ecore_dbus_message_marshal_array_end(msg, arr); @@ -243,8 +243,79 @@ return ECORE_DBUS_MESSAGE_FIELD_OBJECT_PATH(f)->value; case ECORE_DBUS_DATA_TYPE_SIGNATURE: return ECORE_DBUS_MESSAGE_FIELD_SIGNATURE(f)->value; - case ECORE_DBUS_DATA_TYPE_INVALID: case ECORE_DBUS_DATA_TYPE_ARRAY: + { + Ecore_DBus_Message_Field_Container *c; + Ecore_List *list; + void *value; + + list = ecore_list_new(); + c = ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f); + ecore_list_goto_first(c->values); + switch (ECORE_DBUS_MESSAGE_FIELD_ARRAY(f)->contained_type) + { + case ECORE_DBUS_DATA_TYPE_BYTE: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_BYTE(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_BOOLEAN: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_BOOLEAN(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_INT16: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_INT16(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_UINT16: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_UINT16(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_INT32: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_INT32(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_UINT32: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_UINT32(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_INT64: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_INT64(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_UINT64: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_UINT64(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_DOUBLE: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, &ECORE_DBUS_MESSAGE_FIELD_DOUBLE(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_STRING: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, ECORE_DBUS_MESSAGE_FIELD_STRING(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_OBJECT_PATH: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, ECORE_DBUS_MESSAGE_FIELD_OBJECT_PATH(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_SIGNATURE: + while ((value = ecore_list_next(c->values))) + ecore_list_append(list, ECORE_DBUS_MESSAGE_FIELD_SIGNATURE(value)->value); + break; + case ECORE_DBUS_DATA_TYPE_INVALID: + case ECORE_DBUS_DATA_TYPE_ARRAY: + case ECORE_DBUS_DATA_TYPE_VARIANT: + case ECORE_DBUS_DATA_TYPE_STRUCT: + case ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN: + case ECORE_DBUS_DATA_TYPE_STRUCT_END: + case ECORE_DBUS_DATA_TYPE_DICT_ENTRY: + case ECORE_DBUS_DATA_TYPE_DICT_ENTRY_BEGIN: + case ECORE_DBUS_DATA_TYPE_DICT_ENTRY_END: + return NULL; + } + return list; + } + case ECORE_DBUS_DATA_TYPE_INVALID: case ECORE_DBUS_DATA_TYPE_VARIANT: case ECORE_DBUS_DATA_TYPE_STRUCT: case ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN: @@ -279,8 +350,9 @@ msg->size = 128; msg->buffer = calloc(msg->size, sizeof(unsigned char)); + msg->all = ecore_list_new(); + ecore_list_set_free_cb(msg->all, _ecore_dbus_message_field_free); msg->fields = ecore_list_new(); - ecore_list_set_free_cb(msg->fields, _ecore_dbus_message_field_free); msg->recurse = ecore_list_new(); return msg; @@ -335,20 +407,14 @@ case ECORE_DBUS_DATA_TYPE_ARRAY: f = calloc(1, sizeof(Ecore_DBus_Message_Field_Array)); ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f)->values = ecore_list_new(); - ecore_list_set_free_cb(ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f)->values, - _ecore_dbus_message_field_free); break; case ECORE_DBUS_DATA_TYPE_VARIANT: f = calloc(1, sizeof(Ecore_DBus_Message_Field_Variant)); ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f)->values = ecore_list_new(); - ecore_list_set_free_cb(ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f)->values, - _ecore_dbus_message_field_free); break; case ECORE_DBUS_DATA_TYPE_STRUCT: f = calloc(1, sizeof(Ecore_DBus_Message_Field_Struct)); ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f)->values = ecore_list_new(); - ecore_list_set_free_cb(ECORE_DBUS_MESSAGE_FIELD_CONTAINER(f)->values, - _ecore_dbus_message_field_free); break; case ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN: f = NULL; @@ -380,6 +446,7 @@ { ecore_list_append(msg->fields, f); } + ecore_list_append(msg->all, f); f->offset = msg->length; f->buffer = msg->buffer + f->offset; @@ -389,9 +456,9 @@ void _ecore_dbus_message_free(Ecore_DBus_Message *msg) { - _ecore_dbus_message_field_free(msg->header); ecore_list_destroy(msg->fields); ecore_list_destroy(msg->recurse); + ecore_list_destroy(msg->all); free(msg->buffer); free(msg); } @@ -593,12 +660,12 @@ printf("[ecore_dbus] raw message:\n"); for (i = 0; i < msg->length; i++) { - if ((i % 16) == 0) + if ((i % 8) == 0) printf("\n"); if ((msg->buffer[i] > 31) && (msg->buffer[i] < 128)) - printf("%c", msg->buffer[i]); + printf(" '%c' ", msg->buffer[i]); else - printf("*");//, msg->buffer[i]); + printf("0x%02x ", msg->buffer[i]); } printf("\n"); printf("[ecore_dbus] end raw message\n"); =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_methods.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ecore_dbus_methods.c 25 Jul 2006 14:34:47 -0000 1.1 +++ ecore_dbus_methods.c 25 Jul 2006 16:03:05 -0000 1.2 @@ -8,7 +8,7 @@ #include "Ecore_DBus.h" #include "ecore_dbus_private.h" -int +EAPI int ecore_dbus_method_hello(Ecore_DBus_Server *svr) { return ecore_dbus_message_new_method_call(svr, @@ -18,7 +18,7 @@ "Hello" /*method*/, NULL /*fmt*/); } -int +EAPI int ecore_dbus_method_list_names(Ecore_DBus_Server *svr) { return ecore_dbus_message_new_method_call(svr, @@ -28,7 +28,7 @@ "ListNames" /*method*/, NULL /*fmt*/); } -int +EAPI int ecore_dbus_method_name_has_owner(Ecore_DBus_Server *svr, char *name) { return ecore_dbus_message_new_method_call(svr, @@ -39,7 +39,7 @@ "s" /*fmt*/, name); } -int +EAPI int ecore_dbus_method_start_service_by_name(Ecore_DBus_Server *svr, char *name, unsigned int flags) { return ecore_dbus_message_new_method_call(svr, @@ -50,7 +50,7 @@ "su" /*fmt*/, name, flags); } -int +EAPI int ecore_dbus_method_get_name_owner(Ecore_DBus_Server *svr, char *name) { return ecore_dbus_message_new_method_call(svr, @@ -61,7 +61,7 @@ "s" /*fmt*/, name); } -int +EAPI int ecore_dbus_method_get_connection_unix_user(Ecore_DBus_Server *svr, char *connection) { return ecore_dbus_message_new_method_call(svr, @@ -72,7 +72,7 @@ "s" /*fmt*/, connection); } -int +EAPI int ecore_dbus_method_add_match(Ecore_DBus_Server *svr, char *match) { return ecore_dbus_message_new_method_call(svr, @@ -83,7 +83,7 @@ "s" /*fmt*/, match); } -int +EAPI int ecore_dbus_method_remove_match(Ecore_DBus_Server *svr, char *match) { return ecore_dbus_message_new_method_call(svr, =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_private.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_dbus_private.h 25 Jul 2006 14:12:21 -0000 1.6 +++ ecore_dbus_private.h 25 Jul 2006 16:03:05 -0000 1.7 @@ -8,9 +8,9 @@ typedef struct _Ecore_DBus_Auth Ecore_DBus_Auth; -#define ECORE_DBUS_MESSAGE_FIELD(x) ((Ecore_DBus_Message_Field *)(x)) -#define ECORE_DBUS_MESSAGE_FIELD_CONTAINER(x) ((Ecore_DBus_Message_Field_Container *)(x)) +#define ECORE_DBUS_MESSAGE_FIELD(x) ((Ecore_DBus_Message_Field *)(x)) typedef struct _Ecore_DBus_Message_Field_Container Ecore_DBus_Message_Field_Container; +#define ECORE_DBUS_MESSAGE_FIELD_CONTAINER(x) ((Ecore_DBus_Message_Field_Container *)(x)) typedef struct _Ecore_DBus_Message_Field_Byte Ecore_DBus_Message_Field_Byte; #define ECORE_DBUS_MESSAGE_FIELD_BYTE(x) ((Ecore_DBus_Message_Field_Byte *)(x)) @@ -96,6 +96,7 @@ unsigned char *buffer; void *header; + Ecore_List *all; Ecore_List *fields; Ecore_List *recurse; }; =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_unmarshal.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_dbus_unmarshal.c 25 Jul 2006 14:12:21 -0000 1.3 +++ ecore_dbus_unmarshal.c 25 Jul 2006 16:03:05 -0000 1.4 @@ -7,7 +7,9 @@ #include "Ecore_DBus.h" #include "ecore_dbus_private.h" -static Ecore_DBus_Message_Field_Byte * +typedef void *(*Ecore_DBus_Unmarshal_Func)(Ecore_DBus_Message *msg, int *size); + +static void * _ecore_dbus_message_unmarshal_byte(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_Byte *f; @@ -27,7 +29,7 @@ return f; } -static Ecore_DBus_Message_Field_Int32 * +static void * _ecore_dbus_message_unmarshal_int32(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_Int32 *f; @@ -48,7 +50,7 @@ return f; } -static Ecore_DBus_Message_Field_UInt32 * +static void * _ecore_dbus_message_unmarshal_uint32(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_UInt32 *f; @@ -69,7 +71,7 @@ return f; } -static Ecore_DBus_Message_Field_String * +static void * _ecore_dbus_message_unmarshal_string(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_String *f; @@ -92,7 +94,7 @@ return f; } -static Ecore_DBus_Message_Field_Object_Path * +static void * _ecore_dbus_message_unmarshal_object_path(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_Object_Path *f; @@ -115,7 +117,7 @@ return f; } -static Ecore_DBus_Message_Field_Signature * +static void * _ecore_dbus_message_unmarshal_signature(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_Signature *f; @@ -137,7 +139,7 @@ return f; } -static Ecore_DBus_Message_Field_Array * +static void * _ecore_dbus_message_unmarshal_array_begin(Ecore_DBus_Message *msg, Ecore_DBus_Data_Type contained_type, int *size) { @@ -148,6 +150,7 @@ _ecore_dbus_message_padding_skip(msg, 4); arr = _ecore_dbus_message_field_new(msg, ECORE_DBUS_DATA_TYPE_ARRAY); + arr->contained_type = contained_type; arr->start = 0; arr->end = _ecore_dbus_message_read_uint32(msg); @@ -175,7 +178,7 @@ ecore_list_remove_first(msg->recurse); } -static Ecore_DBus_Message_Field_Struct * +static void * _ecore_dbus_message_unmarshal_struct_begin(Ecore_DBus_Message *msg, int *size) { @@ -206,7 +209,7 @@ ecore_list_remove_first(msg->recurse); } -static Ecore_DBus_Message_Field_Variant * +static void * _ecore_dbus_message_unmarshal_variant(Ecore_DBus_Message *msg, int *size) { Ecore_DBus_Message_Field_Variant *f = NULL; @@ -279,6 +282,47 @@ return f; } +static Ecore_DBus_Unmarshal_Func +_ecore_dbus_message_unmarshal_func(Ecore_DBus_Data_Type type) +{ + switch (type) + { + case ECORE_DBUS_DATA_TYPE_BYTE: + return _ecore_dbus_message_unmarshal_byte; + case ECORE_DBUS_DATA_TYPE_INT32: + return _ecore_dbus_message_unmarshal_int32; + case ECORE_DBUS_DATA_TYPE_UINT32: + return _ecore_dbus_message_unmarshal_uint32; + case ECORE_DBUS_DATA_TYPE_STRING: + return _ecore_dbus_message_unmarshal_string; + case ECORE_DBUS_DATA_TYPE_OBJECT_PATH: + return _ecore_dbus_message_unmarshal_object_path; + case ECORE_DBUS_DATA_TYPE_SIGNATURE: + return _ecore_dbus_message_unmarshal_signature; + case ECORE_DBUS_DATA_TYPE_INVALID: + case ECORE_DBUS_DATA_TYPE_BOOLEAN: + case ECORE_DBUS_DATA_TYPE_INT16: + case ECORE_DBUS_DATA_TYPE_UINT16: + case ECORE_DBUS_DATA_TYPE_INT64: + case ECORE_DBUS_DATA_TYPE_UINT64: + case ECORE_DBUS_DATA_TYPE_DOUBLE: + case ECORE_DBUS_DATA_TYPE_ARRAY: + case ECORE_DBUS_DATA_TYPE_VARIANT: + case ECORE_DBUS_DATA_TYPE_STRUCT: + case ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN: + case ECORE_DBUS_DATA_TYPE_STRUCT_END: + case ECORE_DBUS_DATA_TYPE_DICT_ENTRY: + case ECORE_DBUS_DATA_TYPE_DICT_ENTRY_BEGIN: + case ECORE_DBUS_DATA_TYPE_DICT_ENTRY_END: +#if 0 + default: +#endif + printf("[ecore_dbus] unknown/unhandled data type %c\n", type); + break; + } + return NULL; +} + Ecore_DBus_Message * _ecore_dbus_message_unmarshal(Ecore_DBus_Server *svr, unsigned char *message, int size) { @@ -362,6 +406,20 @@ case ECORE_DBUS_DATA_TYPE_SIGNATURE: _ecore_dbus_message_unmarshal_signature(msg, &size); break; + case ECORE_DBUS_DATA_TYPE_ARRAY: + { + Ecore_DBus_Message_Field_Array *arr; + Ecore_DBus_Unmarshal_Func func; + s++; + type = *s; + arr = _ecore_dbus_message_unmarshal_array_begin(msg, type, &size); + func = _ecore_dbus_message_unmarshal_func(type); + printf("Arr: %d %d %d %c %p\n", msg->length, arr->start, arr->end, type, func); + while (msg->length < arr->end) + (*func)(msg, &size); + _ecore_dbus_message_unmarshal_array_end(msg, arr); + } + break; case ECORE_DBUS_DATA_TYPE_INVALID: case ECORE_DBUS_DATA_TYPE_BYTE: case ECORE_DBUS_DATA_TYPE_BOOLEAN: @@ -370,7 +428,6 @@ case ECORE_DBUS_DATA_TYPE_INT64: case ECORE_DBUS_DATA_TYPE_UINT64: case ECORE_DBUS_DATA_TYPE_DOUBLE: - case ECORE_DBUS_DATA_TYPE_ARRAY: case ECORE_DBUS_DATA_TYPE_VARIANT: case ECORE_DBUS_DATA_TYPE_STRUCT: case ECORE_DBUS_DATA_TYPE_STRUCT_BEGIN: =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_utils.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ecore_dbus_utils.c 25 Jul 2006 12:44:19 -0000 1.2 +++ ecore_dbus_utils.c 25 Jul 2006 16:03:05 -0000 1.3 @@ -16,11 +16,19 @@ { if (msg->length + size >= msg->size) { + Ecore_DBus_Message_Field *f; + size = (((msg->size + size) / 128) + 1) * 128; msg->buffer = realloc(msg->buffer, size); + memset(msg->buffer + msg->size, 0, size - msg->size); msg->size = size; + + /* Update buffer references */ + ecore_list_goto_first(msg->all); + while ((f = ecore_list_next(msg->all))) + f->buffer = msg->buffer + f->offset; } } ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs