/* * 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