diff options
Diffstat (limited to 'crawl-ref/source/stuff.cc')
-rw-r--r-- | crawl-ref/source/stuff.cc | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/crawl-ref/source/stuff.cc b/crawl-ref/source/stuff.cc index 9ac888df8b..e4c6c64d43 100644 --- a/crawl-ref/source/stuff.cc +++ b/crawl-ref/source/stuff.cc @@ -463,28 +463,51 @@ bool see_grid(unsigned char grx, unsigned char gry) return false; } // end see_grid() -void io_cleanup() +static bool io_inited = false; +void cio_init() { #ifdef UNIX + unixcurses_startup(); +#endif + +#ifdef WIN32CONSOLE + init_libw32c(); +#endif + +#ifdef DOS + init_libdos(); +#endif + + io_inited = true; +} + +void cio_cleanup() +{ + if (!io_inited) + return; + +#ifdef UNIX unixcurses_shutdown(); #endif #ifdef WIN32CONSOLE deinit_libw32c(); #endif + + io_inited = false; } void end(int exit_code, bool print_error, const char *format, ...) { std::string error = print_error? strerror(errno) : ""; - io_cleanup(); + cio_cleanup(); if (format) { va_list arg; va_start(arg, format); - char buffer[500]; + char buffer[100]; vsnprintf(buffer, sizeof buffer, format, arg); va_end(arg); |