#ifndef KK_SHARED_H_ #define KK_SHARED_H_ #include #include #define FATAL(...) do { fprintf(stderr, "[at %s:%d @ %s] fatal: ", __FILE__, __LINE__, __func__); fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); exit(1); } while(0); #define UNREACHABLE(...) do { fprintf(stderr, "[at %s:%d @ %s] unreachable: ", __FILE__, __LINE__, __func__); fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); exit(1); } while(0); #define ENV_OPTS "KKOPTS" #define ENV_SHELL_LINES "KK_SHELL_LINES" #define ENV_COLUMNS "COLUMNS" #define ENV_LINES "LINES" #define ENV_KK_COLUMNS "KK_COLUMNS" #define ENV_KK_LINES "KK_LINES" #define ENV_TMP_DIR "KK_TMP_DIR" #define ENV_HELP_FILE "KK_HELP_FILE" typedef struct { char *file; // filename bool parse_ansi; // bool line_numbers; // display line numbers bool small_paging; // bool git_mode; // bool force; // read block devices etc enum relpos { // ... BEFORE, // ... AFTER // ... } line_padding; // which way to pad the line numbers char sep; // line seperator int tabsize; // } flags; #define DEFAULTS(FLAG) do { \ FLAG->parse_ansi = false; \ FLAG->line_numbers = false; \ FLAG->small_paging = false; \ FLAG->git_mode = false; \ FLAG->force = false; \ FLAG->line_padding = 0; \ FLAG->sep = '\n'; \ FLAG->tabsize = 8; \ } while(0); #endif