diff options
| author | Franklin Wei <git@fwei.tk> | 2015-05-23 12:10:05 -0400 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-05-23 12:10:05 -0400 |
| commit | 437c81289e70e16b5058b085c8050cf855f8698e (patch) | |
| tree | 19a117dcdd44f46beea3bf47775db03d9be6c8ed /src/util.c | |
| parent | 4c7dd079360cebc8cf483907fb5e7175833109a8 (diff) | |
| download | market-sim-437c81289e70e16b5058b085c8050cf855f8698e.zip market-sim-437c81289e70e16b5058b085c8050cf855f8698e.tar.gz market-sim-437c81289e70e16b5058b085c8050cf855f8698e.tar.bz2 market-sim-437c81289e70e16b5058b085c8050cf855f8698e.tar.xz | |
ncurses stuff
Diffstat (limited to 'src/util.c')
| -rw-r--r-- | src/util.c | 59 |
1 files changed, 51 insertions, 8 deletions
@@ -279,10 +279,9 @@ void update_handler(struct player_t *player) } } -uint parse_args(struct player_t *player, int argc, char *argv[]) +uint parse_args(struct player_t *player, int argc, char *argv[], char **port_file) { uint ret = 0; - char *port_file = NULL; for(int i = 1; i < argc; ++i) { @@ -318,7 +317,7 @@ uint parse_args(struct player_t *player, int argc, char *argv[]) { if(!(ret & ARG_LOADED)) { - port_file = arg; + *port_file = arg; ret |= ARG_LOADED; } else @@ -335,9 +334,6 @@ uint parse_args(struct player_t *player, int argc, char *argv[]) if(ret & ARG_FAILURE) return ret; - if(port_file) - load_portfolio(player, port_file); - return ret; } @@ -348,13 +344,14 @@ void fail(const char *fmt, ...) char buf[256]; vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); + cleanup(); - output("FATAL: %s\n", buf); + fprintf(stdout, "FATAL: %s\n", buf); exit(EXIT_FAILURE); } -int output(const char *fmt, ...) +int curses_printf(const char *fmt, ...) { va_list ap; va_start(ap, fmt); @@ -368,6 +365,34 @@ int output(const char *fmt, ...) return ret; } +int (*output)(const char*, ...) = printf; + +void curses_init(void) +{ + initscr(); + echo(); + nocbreak(); + nl(); + scrollok(stdscr, true); + output = curses_printf; + + if(has_colors()) + { + have_color = true; + start_color(); + attron(A_BOLD); + init_color(COLOR_WHITE, 1000, 1000, 1000); + init_pair(0, COLOR_WHITE, COLOR_BLACK); + init_pair(1, COLOR_RED, COLOR_BLACK); + init_pair(2, COLOR_GREEN, COLOR_BLACK); + use_color(COL_NORM); + } + else + { + have_color = false; + } +} + void horiz_line(void) { for(int i = 0; i < getmaxx(stdscr); ++i) @@ -398,3 +423,21 @@ void heading(const char *fmt, ...) for(int i = 0; i < getmaxx(stdscr) - getmaxx(stdscr) / 2 - len - 1 - d; ++i) output("="); } + +bool have_color = false; + +void use_color(int col) +{ + if(have_color) + { + attron(COLOR_PAIR(col)); + } +} + +void stop_color(int col) +{ + if(have_color) + { + attroff(COLOR_PAIR(col)); + } +} |