Add IXDR INT32 functions.
authordrepper <drepper>
Tue, 1 Dec 1998 11:24:44 +0000 (11:24 +0000)
committerdrepper <drepper>
Tue, 1 Dec 1998 11:24:44 +0000 (11:24 +0000)
sunrpc/rpc/xdr.h

index dd9959a..cd28717 100644 (file)
@@ -154,6 +154,7 @@ struct XDR
  */
 typedef bool_t (*xdrproc_t) __PMT ((XDR *, void *,...));
 
+
 /*
  * Operations defined on a XDR handle
  *
@@ -247,20 +248,28 @@ struct xdr_discrim
  * N.B. and frozen for all time: each data type here uses 4 bytes
  * of external representation.
  */
-#define IXDR_GET_LONG(buf)             ((long)ntohl((u_long)*((u_int32_t*)buf)++))
-#define IXDR_PUT_LONG(buf, v)          (*((u_int32_t*)(buf))++ = (long)htonl((u_long)v))
-
-#define IXDR_GET_BOOL(buf)             ((bool_t)IXDR_GET_LONG(buf))
-#define IXDR_GET_ENUM(buf, t)          ((t)IXDR_GET_LONG(buf))
-#define IXDR_GET_U_LONG(buf)           ((u_long)IXDR_GET_LONG(buf))
-#define IXDR_GET_SHORT(buf)            ((short)IXDR_GET_LONG(buf))
-#define IXDR_GET_U_SHORT(buf)          ((u_short)IXDR_GET_LONG(buf))
-
-#define IXDR_PUT_BOOL(buf, v)          IXDR_PUT_LONG((buf), ((long)(v)))
-#define IXDR_PUT_ENUM(buf, v)          IXDR_PUT_LONG((buf), ((long)(v)))
-#define IXDR_PUT_U_LONG(buf, v)                IXDR_PUT_LONG((buf), ((long)(v)))
-#define IXDR_PUT_SHORT(buf, v)         IXDR_PUT_LONG((buf), ((long)(v)))
-#define IXDR_PUT_U_SHORT(buf, v)       IXDR_PUT_LONG((buf), ((long)(v)))
+
+#define IXDR_GET_INT32(buf)           ((int32_t)ntohl((uint32_t)*(buf)++))
+#define IXDR_PUT_INT32(buf, v)        (*(buf)++ = (int32_t)htonl((uint32_t)v))
+#define IXDR_GET_U_INT32(buf)         ((uint32_t)IXDR_GET_INT32(buf))
+#define IXDR_PUT_U_INT32(buf, v)      IXDR_PUT_INT32((buf), ((int32_t)(v)))
+
+#define IXDR_GET_BOOL(buf)            ((bool_t)IXDR_GET_INT32(buf))
+#define IXDR_GET_ENUM(buf, t)         ((t)IXDR_GET_INT32(buf))
+#define IXDR_GET_SHORT(buf)           ((short)IXDR_GET_INT32(buf))
+#define IXDR_GET_U_SHORT(buf)         ((u_short)IXDR_GET_INT32(buf))
+
+#define IXDR_PUT_BOOL(buf, v)         IXDR_PUT_INT32((buf), ((int)(v)))
+#define IXDR_PUT_ENUM(buf, v)         IXDR_PUT_INT32((buf), ((int)(v)))
+#define IXDR_PUT_SHORT(buf, v)        IXDR_PUT_INT32((buf), ((int)(v)))
+#define IXDR_PUT_U_SHORT(buf, v)      IXDR_PUT_INT32((buf), ((int)(v)))
+
+/* This defines are removed from Sun for new platforms and shouldn't
+   be used any longer. */
+#define IXDR_GET_LONG(buf)           ((long)ntohl((u_long)*((u_int32_t*)buf)++))
+#define IXDR_PUT_LONG(buf, v)         (*((u_int32_t*)(buf))++ = (long)htonl((u_long)v))
+#define IXDR_GET_U_LONG(buf)         ((u_long)IXDR_GET_LONG(buf))
+#define IXDR_PUT_U_LONG(buf, v)              IXDR_PUT_LONG((buf), ((long)(v)))
 
 /*
  * These are the "generic" xdr routines.