diff options
Diffstat (limited to 'c_src/pstring.h')
-rw-r--r-- | c_src/pstring.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/c_src/pstring.h b/c_src/pstring.h new file mode 100644 index 0000000..3a8b602 --- /dev/null +++ b/c_src/pstring.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2015, NORDUnet A/S. + * See LICENSE for licensing information. + */ + +#ifndef PSTRING_H +#define PSTRING_H + +typedef struct ps_string { + unsigned char length; + char value[255]; +} ps_string; + +#define PS_STRING(s) (&(ps_string){strlen(s), s}) +#define PS_PRINTF(s) s->length, s->value + +static inline ps_string * +ps_strdup(const ps_string *s) +{ + size_t size = s->length + 1; + ps_string *copy = malloc(size); + memcpy(copy, s, size); + return copy; +} + +static inline ps_string * +ps_resize(const ps_string *s, size_t length) +{ + assert(length <= s->length); + size_t newsize = length + 1; + ps_string *copy = malloc(newsize); + memcpy(copy->value, s->value, length); + copy->length = length; + return copy; +} + +#endif |