summaryrefslogtreecommitdiff
path: root/contrib/dbase/endian.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/dbase/endian.c')
-rw-r--r--contrib/dbase/endian.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/contrib/dbase/endian.c b/contrib/dbase/endian.c
new file mode 100644
index 00000000000..55c53d89800
--- /dev/null
+++ b/contrib/dbase/endian.c
@@ -0,0 +1,45 @@
+/* Maarten Boekhold ([email protected]) oktober 1995 */
+
+#include <sys/types.h>
+#include "dbf.h"
+/*
+ * routine to change little endian long to host long
+ */
+long get_long(u_char *cp)
+{
+ long ret;
+
+ ret = *cp++;
+ ret += ((*cp++)<<8);
+ ret += ((*cp++)<<16);
+ ret += ((*cp++)<<24);
+
+ return ret;
+}
+
+void put_long(u_char *cp, long lval)
+{
+ cp[0] = lval & 0xff;
+ cp[1] = (lval >> 8) & 0xff;
+ cp[2] = (lval >> 16) & 0xff;
+ cp[3] = (lval >> 24) & 0xff;
+}
+
+/*
+ * routine to change little endian short to host short
+ */
+short get_short(u_char *cp)
+{
+ short ret;
+
+ ret = *cp++;
+ ret += ((*cp++)<<8);
+
+ return ret;
+}
+
+void put_short(u_char *cp, short sval)
+{
+ cp[0] = sval & 0xff;
+ cp[1] = (sval >> 8) & 0xff;
+}