]> git.lizzy.rs Git - dragonnet.git/blobdiff - recv.c
Use inline functions
[dragonnet.git] / recv.c
diff --git a/recv.c b/recv.c
index e4ed1dfcf4980567775510835a2356ee7ebd9fb6..cdecbd593efaab28ad7e0b72451a22da8144dee7 100644 (file)
--- a/recv.c
+++ b/recv.c
@@ -1,6 +1,10 @@
 #include <dragonnet/recv.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
 
-void recv_raw(DragonnetPeer *p, const void *buf, size_t n)
+void dragonnet_recv_raw(DragonnetPeer *p, void *buf, size_t n)
 {
        pthread_rwlock_rdlock(&p->mu);
        int sock = p->sock;
@@ -24,3 +28,12 @@ void recv_raw(DragonnetPeer *p, const void *buf, size_t n)
                pthread_rwlock_unlock(&p->mu);
        }
 }
+
+void dragonnet_read_raw(u8 **buf, size_t *n, void *data, size_t len)
+{
+       memcpy(data, *buf, len);
+       memcpy(*buf, &((*buf)[len]), -len + *n);
+
+       *buf = realloc(*buf, -len + *n);
+       *n -= len;
+}