#ifndef _BYTEORDER_H
#define _BYTEORDER_H
+#include <netatalk/endian.h>
/*
This file implements macros for machine independent short and
#if CAREFUL_ALIGNMENT
+#if BYTE_ORDER==BIG_ENDIAN
+
+#define SVAL(buf,pos) (PVAL(buf,(pos)+1)|PVAL(buf,pos)<<8)
+#define IVAL(buf,pos) (SVAL(buf,pos)|SVAL(buf,(pos)+2)<<16)
+#define SSVALX(buf,pos,val) (CVAL_NC(buf,pos+1)=(unsigned char)((val)&0xFF),CVAL_NC(buf,pos)=(unsigned char)((val)>>8))
+#define SIVALX(buf,pos,val) (SSVALX(buf,pos,val&0xFFFF),SSVALX(buf,pos+2,val>>16))
+#define SVALS(buf,pos) ((int16)SVAL(buf,pos))
+#define IVALS(buf,pos) ((int32_t)IVAL(buf,pos))
+#define SSVAL(buf,pos,val) SSVALX((buf),(pos),((u_int16_t)(val)))
+#define SIVAL(buf,pos,val) SIVALX((buf),(pos),((u_int32_t)(val)))
+#define SSVALS(buf,pos,val) SSVALX((buf),(pos),((int16)(val)))
+#define SIVALS(buf,pos,val) SIVALX((buf),(pos),((int32_t)(val)))
+
+#else
+
#define SVAL(buf,pos) (PVAL(buf,pos)|PVAL(buf,(pos)+1)<<8)
#define IVAL(buf,pos) (SVAL(buf,pos)|SVAL(buf,(pos)+2)<<16)
#define SSVALX(buf,pos,val) (CVAL_NC(buf,pos)=(unsigned char)((val)&0xFF),CVAL_NC(buf,pos+1)=(unsigned char)((val)>>8))
#define SSVALS(buf,pos,val) SSVALX((buf),(pos),((int16)(val)))
#define SIVALS(buf,pos,val) SIVALX((buf),(pos),((int32_t)(val)))
+#endif
+
#else /* CAREFUL_ALIGNMENT */
/* this handles things for architectures like the 386 that can handle
ret = ln;
}
#else /* system doesn't have LOCALE support */
-ret = NULL;
+if (ch == CH_UNIX) ret = NULL;
#endif
if (!ret || !*ret) ret = "ASCII";
/* Terminate the string */
if (to == CH_UCS2 && destlen-o_len >= 2) {
- *(++outbuf) = 0;
- *outbuf = 0;
+ ob[destlen] = 0;
+ ob[destlen+1] = 0;
*dest = (char *)realloc(ob,destlen+2);
}
else if ( destlen-o_len > 0) {
- *(++outbuf) = 0;
+ ob[destlen] = 0;
*dest = (char *)realloc(ob,destlen+1);
}