summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorgrr <grr@cvs.openbsd.org>1997-06-25 12:41:44 +0000
committergrr <grr@cvs.openbsd.org>1997-06-25 12:41:44 +0000
commit9f5b8216c2af91286d9d2beb109f93ce776885ca (patch)
tree2087060e25e41ca681c1d46bbda6f343b05d4715 /sys
parentc572c52a5526fc9e50a8fec655bd2d43eb2b7aa9 (diff)
Sigh, Revert changes to endian.h - it was all confusion due to incorrect
usage in new ip_* code, since fixed. Added usage notes to prevent future confusion in this regard.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/powerpc/include/endian.h17
-rw-r--r--sys/arch/sparc/include/endian.h17
2 files changed, 24 insertions, 10 deletions
diff --git a/sys/arch/powerpc/include/endian.h b/sys/arch/powerpc/include/endian.h
index ba0604ae164..b8e1eaaacc7 100644
--- a/sys/arch/powerpc/include/endian.h
+++ b/sys/arch/powerpc/include/endian.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: endian.h,v 1.6 1997/06/25 12:32:53 downsj Exp $ */
+/* $OpenBSD: endian.h,v 1.7 1997/06/25 12:41:43 grr Exp $ */
/* $NetBSD: endian.h,v 1.2 1996/10/13 03:16:41 christos Exp $ */
/*-
@@ -64,6 +64,13 @@ __END_DECLS
/*
* Macros for network/external number representation conversion.
+ *
+ * The way this works is that HTONS(x) modifies x and *can't* be used as
+ * and rvalue i.e. foo=HTONS(bar) is wrong. Likewise x=htons(x) should
+ * never be used where HTONS(x) will serve i.e. foo=htons(foo) is wrong.
+ * Failing to observe these rule will result in code that appears to work
+ * and probably does work, but generates gcc warnings on architectures
+ * where the macros are used to optimize away an unneeded conversion.
*/
#if BYTE_ORDER == BIG_ENDIAN && !defined(lint)
#define ntohl(x) (x)
@@ -71,10 +78,10 @@ __END_DECLS
#define htonl(x) (x)
#define htons(x) (x)
-#define NTOHL(x) (void)(x)
-#define NTOHS(x) (void)(x)
-#define HTONL(x) (void)(x)
-#define HTONS(x) (void)(x)
+#define NTOHL(x) (void) (x)
+#define NTOHS(x) (void) (x)
+#define HTONL(x) (void) (x)
+#define HTONS(x) (void) (x)
#else
diff --git a/sys/arch/sparc/include/endian.h b/sys/arch/sparc/include/endian.h
index a899e0cea2f..c536790f9ef 100644
--- a/sys/arch/sparc/include/endian.h
+++ b/sys/arch/sparc/include/endian.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: endian.h,v 1.5 1997/06/24 18:15:02 grr Exp $ */
+/* $OpenBSD: endian.h,v 1.6 1997/06/25 12:41:42 grr Exp $ */
/* $NetBSD: endian.h,v 1.3 1996/02/13 17:04:58 christos Exp $ */
/*
@@ -66,6 +66,13 @@ __END_DECLS
/*
* Macros for network/external number representation conversion.
+ *
+ * The way this works is that HTONS(x) modifies x and *can't* be used as
+ * and rvalue i.e. foo=HTONS(bar) is wrong. Likewise x=htons(x) should
+ * never be used where HTONS(x) will serve i.e. foo=htons(foo) is wrong.
+ * Failing to observe these rule will result in code that appears to work
+ * and probably does work, but generates gcc warnings on architectures
+ * where the macros are used to optimize away an unneeded conversion.
*/
#if BYTE_ORDER == BIG_ENDIAN && !defined(lint)
#define ntohl(x) (x)
@@ -73,10 +80,10 @@ __END_DECLS
#define htonl(x) (x)
#define htons(x) (x)
-#define NTOHL(x) (x)
-#define NTOHS(x) (x)
-#define HTONL(x) (x)
-#define HTONS(x) (x)
+#define NTOHL(x) (void) (x)
+#define NTOHS(x) (void) (x)
+#define HTONL(x) (void) (x)
+#define HTONS(x) (void) (x)
#else