
This is pretty ugly code, but it works well enough to deliver the right versions for the files in my test MSI. I can polish it later.
13 lines
582 B
C
13 lines
582 B
C
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);
|
|
|
|
#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)
|