+
+/*
+ * Routines to insert/extract short/long's. Must account for byte
+ * order and non-alignment problems. This code at least has the
+ * advantage of being portable.
+ *
+ * used by sendmail.
+ */
+
+u_short
+_getshort(msgp)
+ u_char *msgp;
+{
+ register u_char *p = (u_char *) msgp;
+#ifdef vax
+ /*
+ * vax compiler doesn't put shorts in registers
+ */
+ register u_long u;
+#else
+ register u_short u;
+#endif
+
+ u = *p++ << 8;
+ return ((u_short)(u | *p));
+}
+
+u_long
+_getlong(msgp)
+ u_char *msgp;
+{
+ register u_char *p = (u_char *) msgp;
+ register u_long u;
+
+ u = *p++; u <<= 8;
+ u |= *p++; u <<= 8;
+ u |= *p++; u <<= 8;
+ return (u | *p);
+}
+
+void
+#ifdef __STDC__
+__putshort(register u_short s, register u_char *msgp)
+#else
+__putshort(s, msgp)
+ register u_short s;
+ register u_char *msgp;
+#endif
+{
+ msgp[1] = s;
+ msgp[0] = s >> 8;
+}
+
+void
+__putlong(l, msgp)
+ register u_long l;
+ register u_char *msgp;
+{
+ msgp[3] = l;
+ msgp[2] = (l >>= 8);
+ msgp[1] = (l >>= 8);
+ msgp[0] = l >> 8;
+}