#ifndef UTIL_H #define UTIL_H #define CTRL_KEY(key) ((key) & 0x1f) #define MAX(a,b) (((a)>(b))?(a):(b)) #define MIN(a,b) (((a)<(b))?(a):(b)) #define _STRINGIZE(x) #x #define STRINGIZE(x) _STRINGIZE(x) typedef int ERRCODE; #define RETURN(code) do {errcode = code; goto END;} while(0) void die(const char *context); /*****************************************************************************/ struct append_buf { char *chars; int n_chars; }; struct append_buf *ab_create(void); void ab_append(struct append_buf *ab, const char *chars, int n_chars); void ab_free(struct append_buf *ab); #endif // APPEND_BUF_H