Changeset 4073:2e8648011772 in roaraudio


Ignore:
Timestamp:
07/20/10 22:39:39 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

fixed byte order probelms on some BE platforms with libdnet

Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • include/roaraudio.h

    r4057 r4073  
    144144#include <roaraudio/acl.h> 
    145145#include <roaraudio/misc.h> 
     146#include <roaraudio/byteorder.h> 
    146147 
    147148#include <libroar/libroar.h> 
     
    304305#endif 
    305306 
    306 #if BYTE_ORDER == BIG_ENDIAN && !defined(ROAR_TARGET_WIN32) 
    307  
    308 #ifdef ROAR_TARGET_WIN32 
    309 #error This is nonsens. No win32 runs on a BE machine 
    310 #endif 
    311  
    312 #define ROAR_NET2HOST64(x) (x) 
    313 #define ROAR_HOST2NET64(x) (x) 
    314 #define ROAR_NET2HOST32(x) (x) 
    315 #define ROAR_HOST2NET32(x) (x) 
    316 #define ROAR_NET2HOST16(x) (x) 
    317 #define ROAR_HOST2NET16(x) (x) 
    318  
    319 #define ROAR_BE2HOST64(x) (x) 
    320 #define ROAR_HOST2BE64(x) (x) 
    321 #define ROAR_BE2HOST32(x) (x) 
    322 #define ROAR_HOST2BE32(x) (x) 
    323 #define ROAR_BE2HOST16(x) (x) 
    324 #define ROAR_HOST2BE16(x) (x) 
    325  
    326 #define ROAR_LE2HOST32(x) ROAR_dn_ntohl(x) 
    327 #define ROAR_HOST2LE32(x) ROAR_dn_htonl(x) 
    328 #define ROAR_LE2HOST16(x) ROAR_dn_ntohs(x) 
    329 #define ROAR_HOST2LE16(x) ROAR_dn_htons(x) 
    330  
    331 #ifdef ROAR_HAVE_LIBDNET 
    332 #define ROAR_dn_ntohs(x) ((((x)&0x0ff)<<8) | (((x)&0xff00)>>8)) 
    333 #define ROAR_dn_ntohl(x) ( ((dn_ntohs((x)&0xffff))<<16) |\ 
    334                            ((dn_ntohs(((x)>>16)))) ) 
    335 #define ROAR_dn_htonl(x) ROAR_dn_ntohl(x) 
    336 #define ROAR_dn_htons(x) ROAR_dn_ntohs(x) 
    337 #endif 
    338  
    339 //#elif BYTE_ORDER == LITTLE_ENDIAN 
    340 #else 
    341  
    342 #if BYTE_ORDER == LITTLE_ENDIAN 
    343 #define _ROAR_MOVE_BYTE(x,p) (((x) & (0xFFUL << (8*(p)))) >> (8*(p)) << (64-8*((p)+1))) 
    344 #define ROAR_NET2HOST64(x) ROAR_HOST2NET64(x) 
    345 #define ROAR_HOST2NET64(x) (_ROAR_MOVE_BYTE((x), 0) | _ROAR_MOVE_BYTE((x), 1) | \ 
    346                             _ROAR_MOVE_BYTE((x), 2) | _ROAR_MOVE_BYTE((x), 3) | \ 
    347                             _ROAR_MOVE_BYTE((x), 4) | _ROAR_MOVE_BYTE((x), 5) | \ 
    348                             _ROAR_MOVE_BYTE((x), 6) | _ROAR_MOVE_BYTE((x), 7) | ) 
    349 #else 
    350 /* PDP byte order */ 
    351 #endif 
    352  
    353 #define ROAR_NET2HOST32(x) ntohl((x)) 
    354 #define ROAR_HOST2NET32(x) htonl((x)) 
    355 #define ROAR_NET2HOST16(x) ntohs((x)) 
    356 #define ROAR_HOST2NET16(x) htons((x)) 
    357  
    358 #define ROAR_BE2HOST32(x) ntohl(x) 
    359 #define ROAR_HOST2BE32(x) htonl(x) 
    360 #define ROAR_BE2HOST16(x) ntohs(x) 
    361 #define ROAR_HOST2BE16(x) htons(x) 
    362  
    363 #define ROAR_LE2HOST64(x) (x) 
    364 #define ROAR_HOST2LE64(x) (x) 
    365 #define ROAR_LE2HOST32(x) (x) 
    366 #define ROAR_HOST2LE32(x) (x) 
    367 #define ROAR_LE2HOST16(x) (x) 
    368 #define ROAR_HOST2LE16(x) (x) 
    369  
    370 #ifdef ROAR_HAVE_LIBDNET 
    371 #if BYTE_ORDER == LITTLE_ENDIAN 
    372 #define ROAR_dn_ntohs(x) (x) 
    373 #define ROAR_dn_htons(x) (x) 
    374  
    375 #define ROAR_dn_ntohl(x) (x) 
    376 #define ROAR_dn_htonl(x) (x) 
    377 #else 
    378 #error can not build on this architecture with DECnet support enabled 
    379 #endif 
    380 #endif 
    381  
    382 #endif 
    383  
    384307__END_DECLS 
    385308 
  • libroar/socket.c

    r4028 r4073  
    426426  bind_sockaddr.sdn_objnamel = 0; 
    427427 } else { 
    428   bind_sockaddr.sdn_objnamel  = ROAR_dn_htons(strlen(object)); 
     428  bind_sockaddr.sdn_objnamel  = ROAR_HOST2LE16(strlen(object)); 
    429429  if ( bind_sockaddr.sdn_objnamel > DN_MAXOBJL ) 
    430430   bind_sockaddr.sdn_objnamel = DN_MAXOBJL; 
Note: See TracChangeset for help on using the changeset viewer.