common.c: Implemented `ntohll' and `htonll'.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 13 Jan 2007 11:21:16 +0000 (12:21 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 13 Jan 2007 11:21:16 +0000 (12:21 +0100)
src/common.c
src/common.h

index 6da5e33..cf2a639 100644 (file)
 #  include <math.h>
 #endif
 
+/* for ntohl and htonl */
+#if HAVE_ARPA_INET_H
+# include <arpa/inet.h>
+#endif
+
 extern int operating_mode;
 
 #ifdef HAVE_LIBKSTAT
@@ -601,3 +606,21 @@ long long get_kstat_value (kstat_t *ksp, char *name)
        return (retval);
 }
 #endif /* HAVE_LIBKSTAT */
+
+unsigned long long ntohll (unsigned long long n)
+{
+#if __BYTE_ORDER == __BIG_ENDIAN
+       return (n);
+#else
+       return (((unsigned long long) ntohl (n)) << 32) + ntohl (n >> 32);
+#endif
+}
+
+unsigned long long htonll (unsigned long long n)
+{
+#if __BYTE_ORDER == __BIG_ENDIAN
+       return (n);
+#else
+       return (((unsigned long long) htonl (n)) << 32) + htonl (n >> 32);
+#endif
+}
index 8f32b22..6cf8667 100644 (file)
@@ -152,4 +152,7 @@ int get_kstat (kstat_t **ksp_ptr, char *module, int instance, char *name);
 long long get_kstat_value (kstat_t *ksp, char *name);
 #endif
 
+unsigned long long ntohll (unsigned long long n);
+unsigned long long htonll (unsigned long long n);
+
 #endif /* COMMON_H */