summaryrefslogtreecommitdiff
path: root/userland/libc/arpa
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-10-22 19:50:38 +0200
committerAnton Kling <anton@kling.gg>2023-10-22 19:50:38 +0200
commit4e09bca9e34c226b6d7e34b4fa11248405fd988e (patch)
tree80f156b7940d9d19971395f335530170c69516c7 /userland/libc/arpa
Move everything into a new repo.
Diffstat (limited to 'userland/libc/arpa')
-rw-r--r--userland/libc/arpa/inet.h4
-rw-r--r--userland/libc/arpa/inet/htonl.c11
-rw-r--r--userland/libc/arpa/inet/htons.c10
3 files changed, 25 insertions, 0 deletions
diff --git a/userland/libc/arpa/inet.h b/userland/libc/arpa/inet.h
new file mode 100644
index 0000000..7a033f2
--- /dev/null
+++ b/userland/libc/arpa/inet.h
@@ -0,0 +1,4 @@
+#include <stdint.h>
+
+uint32_t htonl(uint32_t hostlong);
+uint16_t htons(uint16_t hostlong);
diff --git a/userland/libc/arpa/inet/htonl.c b/userland/libc/arpa/inet/htonl.c
new file mode 100644
index 0000000..4b66747
--- /dev/null
+++ b/userland/libc/arpa/inet/htonl.c
@@ -0,0 +1,11 @@
+#include <arpa/inet.h>
+#include <endian.h>
+#include <stdint.h>
+
+uint32_t htonl(uint32_t hostlong) {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ hostlong = (uint32_t)(htons(hostlong >> 16)) |
+ (uint32_t)(htons(hostlong & 0xFFFF) << 16);
+#endif
+ return hostlong;
+}
diff --git a/userland/libc/arpa/inet/htons.c b/userland/libc/arpa/inet/htons.c
new file mode 100644
index 0000000..798a64a
--- /dev/null
+++ b/userland/libc/arpa/inet/htons.c
@@ -0,0 +1,10 @@
+#include <arpa/inet.h>
+#include <endian.h>
+#include <stdint.h>
+
+uint16_t htons(uint16_t hostlong) {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ hostlong = ((hostlong & 0xFF00) >> 8) | ((hostlong & 0x00FF) << 8);
+#endif
+ return hostlong;
+}