Enlightenment CVS committal

Author  : englebass
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_dbus


Modified Files:
        ecore_dbus.c ecore_dbus_message.c ecore_dbus_private.h 
        ecore_dbus_utils.c 


Log Message:
Make dbus endian aware.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- ecore_dbus.c        5 Nov 2006 17:45:03 -0000       1.28
+++ ecore_dbus.c        7 Feb 2007 00:23:54 -0000       1.29
@@ -13,6 +13,7 @@
 
/********************************************************************************/
 /* Author: Jorge Luis Zapata                                                   
*/
 /* Author: Brian Mattern (rephorm)                                             
*/
+/* Author: Sebastian Dransfeld                                                 
*/
 /* Version: 0.3.0                                                              
*/
 
/********************************************************************************/
 /* Todo                                                                        
        */
@@ -83,6 +84,8 @@
 static Ecore_List2         *servers = NULL;
 static Ecore_Event_Handler *handler[3];
 
+int words_bigendian = -1;
+
 /* public functions */
 EAPI int
 ecore_dbus_init(void)
@@ -90,6 +93,15 @@
    int i = 0;
 
    if (++init_count != 1) return init_count;
+
+   if (words_bigendian == -1)
+     {
+       unsigned long int v;
+
+       v = htonl(0x12345678);
+       if (v == 0x12345678) words_bigendian = 1;
+       else words_bigendian = 0;
+     }
 
    ecore_con_init();
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_message.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- ecore_dbus_message.c        5 Nov 2006 17:45:03 -0000       1.13
+++ ecore_dbus_message.c        7 Feb 2007 00:23:54 -0000       1.14
@@ -462,8 +462,10 @@
    if (!msg) return;
 
    /* endianness (1) */
-   /* XXX we need to detect for endianess and send 'B' for Bigendian machines 
*/
-   msg->buffer[0] = msg->byte_order = 'l';
+   if (words_bigendian)
+     msg->buffer[0] = msg->byte_order = 'B';
+   else
+     msg->buffer[0] = msg->byte_order = 'l';
    /* type (1) */
    msg->buffer[1] = msg->type = (char)type;
    /* flags (1) 0x1 = no reply expected, 0x2 auto activation */
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_private.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ecore_dbus_private.h        5 Nov 2006 17:45:03 -0000       1.17
+++ ecore_dbus_private.h        7 Feb 2007 00:23:54 -0000       1.18
@@ -7,6 +7,30 @@
 #include "Ecore_Con.h"
 #include "Ecore_Data.h"
 
+extern int words_bigendian;
+
+#define SWAP64(x) (x) = \
+   ((((unsigned long long)(x) & 0x00000000000000ffULL ) << 56) |\
+       (((unsigned long long)(x) & 0x000000000000ff00ULL ) << 40) |\
+       (((unsigned long long)(x) & 0x0000000000ff0000ULL ) << 24) |\
+       (((unsigned long long)(x) & 0x00000000ff000000ULL ) << 8) |\
+       (((unsigned long long)(x) & 0x000000ff00000000ULL ) >> 8) |\
+       (((unsigned long long)(x) & 0x0000ff0000000000ULL ) >> 24) |\
+       (((unsigned long long)(x) & 0x00ff000000000000ULL ) >> 40) |\
+       (((unsigned long long)(x) & 0xff00000000000000ULL ) >> 56))
+#define SWAP32(x) (x) = \
+   ((((unsigned int)(x) & 0x000000ff ) << 24) |\
+       (((unsigned int)(x) & 0x0000ff00 ) << 8) |\
+       (((unsigned int)(x) & 0x00ff0000 ) >> 8) |\
+       (((unsigned int)(x) & 0xff000000 ) >> 24))
+#define SWAP16(x) (x) = \
+   ((((unsigned short)(x) & 0x00ff ) << 8) |\
+       (((unsigned short)(x) & 0xff00 ) >> 8))
+
+#define CONV16(order, x) { if (words_bigendian && (order) != 'B') SWAP16(x); }
+#define CONV32(order, x) { if (words_bigendian && (order) != 'B') SWAP32(x); }
+#define CONV64(order, x) { if (words_bigendian && (order) != 'B') SWAP64(x); }
+
 typedef unsigned char *(*Ecore_DBus_Auth_Transaction)(void *);
 
 typedef struct _Ecore_DBus_Auth                      Ecore_DBus_Auth;
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_utils.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ecore_dbus_utils.c  29 Sep 2006 03:05:21 -0000      1.7
+++ ecore_dbus_utils.c  7 Feb 2007 00:23:54 -0000       1.8
@@ -83,6 +83,7 @@
 {
    unsigned char      *c;
 
+   CONV32(msg->byte_order, i)
    c = (unsigned char *)&i;
    _ecore_dbus_message_length_append(msg, 4);
    msg->buffer[msg->length++] = c[0];
@@ -109,6 +110,7 @@
 
    _ecore_dbus_message_length_append(msg, 4);
    i = *(unsigned int *)(msg->buffer + msg->length);
+   CONV32(msg->byte_order, i)
    msg->length += 4;
    return i;
 }



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to