summaryrefslogtreecommitdiff
path: root/lib/libradsec.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libradsec.h')
-rw-r--r--lib/libradsec.h31
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/libradsec.h b/lib/libradsec.h
index fd69c58..b4543f8 100644
--- a/lib/libradsec.h
+++ b/lib/libradsec.h
@@ -3,7 +3,7 @@
/* FIXME: License blurb goes here. */
-#include <stdint.h>
+#include <unistd.h>
#include "../list.h" /* FIXME: ../ is not very nice */
#define RS_HEADER_LEN 4
@@ -30,15 +30,15 @@ struct rs_credentials {
char *secret;
};
-typedef void * (*rs_calloc)(size_t nmemb, size_t size);
-typedef void * (*rs_malloc)(size_t size);
-typedef void (*rs_free)(void *ptr);
-typedef void * (*rs_realloc)(void *ptr, size_t size);
+typedef void * (*rs_calloc_fp)(size_t nmemb, size_t size);
+typedef void * (*rs_malloc_fp)(size_t size);
+typedef void (*rs_free_fp)(void *ptr);
+typedef void * (*rs_realloc_fp)(void *ptr, size_t size);
struct rs_alloc_scheme {
- rs_calloc calloc;
- rs_malloc malloc;
- rs_free free;
- rs_realloc realloc;
+ rs_calloc_fp calloc;
+ rs_malloc_fp malloc;
+ rs_free_fp free;
+ rs_realloc_fp realloc;
};
struct rs_config {
@@ -49,7 +49,7 @@ struct rs_config {
struct rs_attribute {
uint8_t type;
- uint8_t lenght;
+ uint8_t length;
uint8_t *value;
};
@@ -60,6 +60,17 @@ struct rs_packet {
struct list *attrs;
};
+
+/* Convenience macros. */
+#define rs_calloc(ctx, nmemb, size) \
+ (ctx->alloc_scheme.calloc ? ctx->alloc_scheme.calloc : calloc)(nmemb, size)
+#define rs_malloc(ctx, size) \
+ (ctx->alloc_scheme.malloc ? ctx->alloc_scheme.malloc : malloc)(size)
+#define rs_free(ctx, ptr) \
+ (ctx->alloc_scheme.free ? ctx->alloc_scheme.free : free)(ptr)
+#define rs_(ctx, realloc, ptr, size) \
+ (ctx->alloc_scheme.realloc ? ctx->alloc_scheme.realloc : realloc)(ptr, size)
+
/* Local Variables: */
/* c-file-style: "stroustrup" */
/* End: */