summaryrefslogtreecommitdiff
path: root/bits.h
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-07-20 13:38:08 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-07-20 13:38:08 +0000
commit9b9858865996b3c98d44d6179abfcad87465e2de (patch)
treed6b174dd38b6232ba642fbc85fdb351e5b2507ae /bits.h
parentc665febb750bd0064e4596ade24af984f48377f6 (diff)
downloadgpsd-9b9858865996b3c98d44d6179abfcad87465e2de.tar.gz
More EverMore fixes from Petr Slansky.
Diffstat (limited to 'bits.h')
-rw-r--r--bits.h35
1 files changed, 18 insertions, 17 deletions
diff --git a/bits.h b/bits.h
index 7e192db4..181c0d57 100644
--- a/bits.h
+++ b/bits.h
@@ -37,32 +37,32 @@ union long_double {
/* these are independent of byte order */
#define getsb(buf, off) ((int8_t)buf[(off)-(GET_ORIGIN)])
#define getub(buf, off) ((u_int8_t)buf[(off)-(GET_ORIGIN)])
-#define putbyte(buf,off,b) {buf[(off)-(PUT_ORIGIN)] = (unsigned char)(b);}
+#define putbyte(buf,off,b) do {buf[(off)-(PUT_ORIGIN)] = (unsigned char)(b);} while (0)
#ifdef LITTLE_ENDIAN_PROTOCOL
-#define getsw(buf, off) ((int16_t)(((u_int16_t)getub(buf, off+1) << 8) | (u_int16_t)getub(buf, off)))
-#define getuw(buf, off) ((u_int16_t)(((u_int16_t)getub(buf, off+1) << 8) | (u_int16_t)getub(buf, off)))
-#define getsl(buf, off) ((int32_t)(((u_int16_t)getuw(buf, off+2) << 16) | getuw(buf, off)))
-#define getul(buf, off) ((u_int32_t)(((u_int16_t)getuw(buf, off+2) << 16) | getuw(buf, off)))
+#define getsw(buf, off) ((int16_t)(((u_int16_t)getub((buf), (off)+1) << 8) | (u_int16_t)getub((buf), (off))))
+#define getuw(buf, off) ((u_int16_t)(((u_int16_t)getub((buf), (off)+1) << 8) | (u_int16_t)getub((buf), (off))))
+#define getsl(buf, off) ((int32_t)(((u_int16_t)getuw((buf), (off)+2) << 16) | (u_int16_t)getuw((buf), (off))))
+#define getul(buf, off) ((u_int32_t)(((u_int16_t)getuw((buf),(off)+2) << 16) | (u_int16_t)getuw((buf), (off))))
-#define putword(buf,off,w) {putbyte(buf,off+1,(w) >> 8); putbyte(buf,off,w);}
-#define putlong(buf,off,l) {putword(buf,off+2,(l) >> 16); putword(buf,off,l);}
-#define getsL(buf, off) ((int64_t)(((u_int64_t)getul(buf, off+4) << 32) | getul(buf, off)))
-#define getuL(buf, off) ((u_int64_t)(((u_int64_t)getul(buf, off+4) << 32) | getul(buf, off)))
+#define putword(buf, off, w) do {putbyte(buf, (off)+1, (w) >> 8); putbyte(buf, (off), (w));} while (0)
+#define putlong(buf, off, l) do {putword(buf, (off)+2, (l) >> 16); putword(buf, (off), (l));} while (0)
+#define getsL(buf, off) ((int64_t)(((u_int64_t)getul(buf, (off)+4) << 32) | getul(buf, (off))))
+#define getuL(buf, off) ((u_int64_t)(((u_int64_t)getul(buf, (off)+4) << 32) | getul(buf, (off))))
#else
/* SiRF and most other GPS protocols use big-endian (network byte order) */
-#define getsw(buf, off) ((int16_t)(((u_int16_t)getub(buf, off) << 8) | (u_int16_t)getub(buf, off+1)))
-#define getuw(buf, off) ((u_int16_t)(((u_int16_t)getub(buf, off) << 8) | (u_int16_t)getub(buf, off+1)))
-#define getsl(buf, off) ((int32_t)(((u_int16_t)getuw(buf, off) << 16) | getuw(buf, off+2)))
-#define getul(buf, off) ((u_int32_t)(((u_int16_t)getuw(buf, off) << 16) | getuw(buf, off+2)))
-#define getsL(buf, off) ((int64_t)(((u_int64_t)getul(buf, off) << 32) | getul(buf, off+4)))
-#define getuL(buf, off) ((u_int64_t)(((u_int64_t)getul(buf, off) << 32) | getul(buf, off+4)))
+#define getsw(buf, off) ((int16_t)(((u_int16_t)getub(buf, (off)) << 8) | (u_int16_t)getub(buf, (off)+1)))
+#define getuw(buf, off) ((u_int16_t)(((u_int16_t)getub(buf, (off)) << 8) | (u_int16_t)getub(buf, (off)+1)))
+#define getsl(buf, off) ((int32_t)(((u_int16_t)getuw(buf, (off)) << 16) | getuw(buf, (off)+2)))
+#define getul(buf, off) ((u_int32_t)(((u_int16_t)getuw(buf, (off)) << 16) | getuw(buf, (off)+2)))
+#define getsL(buf, off) ((int64_t)(((u_int64_t)getul(buf, (off)) << 32) | getul(buf, (off)+4)))
+#define getuL(buf, off) ((u_int64_t)(((u_int64_t)getul(buf, (off)) << 32) | getul(buf, (off)+4)))
-#define putword(buf,off,w) {putbyte(buf,off,(w) >> 8); putbyte(buf,off+1,w);}
-#define putlong(buf,off,l) {putword(buf,off,(l) >> 16); putword(buf,off+2,l);}
+#define putword(buf,off,w) do {putbyte(buf, (off) ,(w) >> 8); putbyte(buf, (off)+1, (w));} while (0)
+#define putlong(buf,off,l) do {putword(buf, (off) ,(l) >> 16); putword(buf, (off)+2, (l));} while (0)
#endif
@@ -77,3 +77,4 @@ union long_double {
| (session->outbuffer[2*(n)-1] << 8) \
| (session->outbuffer[2*(n)+0] << 16) \
| (session->outbuffer[2*(n)+1] << 24))
+