char *ascii(const char16_t *wstr, bool translate_slashes); void system_argv(const char *cmd, ...); void system_argv_array(char **args); void c16cpy(char16_t *out, uint32_t *outsize, char *s); void *smalloc(size_t size); void *srealloc(void *ptr, size_t size); char *dupcat(const char *str, ...); unsigned le(const unsigned char *buf, size_t len, size_t off, size_t nbytes); void MD5Simple(void const *p, unsigned len, uint32_t output[4]); #define snew(type) ((type *)smalloc(sizeof(type))) #define snewn(n,type) ((type *)smalloc((n)*sizeof(type))) #define sresize(ptr,n,type) ((type *)srealloc(ptr,(n)*sizeof(type))) #define sfree(ptr) free(ptr)