/* * Implementation of dputs() for Windows. * * The debug messages are written to STD_OUTPUT_HANDLE, except that * first it has to make sure that handle _exists_, by calling * AllocConsole first if necessary. * * They also go into a file called debug.log. */ #include "putty.h" #include "utils/utils.h" static HANDLE debug_fp = INVALID_HANDLE_VALUE; static HANDLE debug_hdl = INVALID_HANDLE_VALUE; static int debug_got_console = 0; void dputs(const char *buf) { DWORD dw; if (!debug_got_console) { if (AllocConsole()) { debug_got_console = 1; debug_hdl = GetStdHandle(STD_OUTPUT_HANDLE); } } if (debug_fp == INVALID_HANDLE_VALUE) { debug_fp = CreateFile("debug.log", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); } if (debug_fp != INVALID_HANDLE_VALUE) { WriteFile(debug_fp, buf, strlen(buf), &dw, NULL); } if (debug_hdl != INVALID_HANDLE_VALUE) { WriteFile(debug_hdl, buf, strlen(buf), &dw, NULL); } }