diff options
Diffstat (limited to 'src/util.h')
| -rw-r--r-- | src/util.h | 27 |
1 files changed, 27 insertions, 0 deletions
| @@ -293,6 +293,33 @@ void PrintHex(const T pbegin, const T pend, const char* pszFormat="%s", bool fSp | |||
| 293 | // Forward declaration -- defined in main.cpp | 293 | // Forward declaration -- defined in main.cpp |
| 294 | string GetAppDir(); | 294 | string GetAppDir(); |
| 295 | 295 | ||
| 296 | // Give a command-line operation somewhere to print. | ||
| 297 | // | ||
| 298 | // The Windows binary is linked -mwindows and starts with no console, so stdout | ||
| 299 | // goes nowhere even when it was launched from a terminal. Commands that report | ||
| 300 | // to the person who typed them -- the self-tests, the wallet phrase commands -- | ||
| 301 | // call this first. | ||
| 302 | // | ||
| 303 | // Only when there is nowhere for stdout to go already: if the caller redirected | ||
| 304 | // it to a file or a pipe, that handle is inherited and works, and reopening it | ||
| 305 | // on CONOUT$ would take the output away from the file and put it on the screen. | ||
| 306 | inline void AttachTerminal() | ||
| 307 | { | ||
| 308 | #ifdef _WIN32 | ||
| 309 | HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); | ||
| 310 | if (hOut != NULL && hOut != INVALID_HANDLE_VALUE) | ||
| 311 | return; | ||
| 312 | if (AttachConsole(ATTACH_PARENT_PROCESS)) | ||
| 313 | { | ||
| 314 | // Return values ignored on purpose: if the reopen fails there is | ||
| 315 | // nowhere left to report it, and the exit status still carries the | ||
| 316 | // result. | ||
| 317 | freopen("CONOUT$", "w", stdout); | ||
| 318 | freopen("CONOUT$", "w", stderr); | ||
| 319 | } | ||
| 320 | #endif | ||
| 321 | } | ||
| 322 | |||
| 296 | inline int OutputDebugStringF(const char* pszFormat, ...) BF_FORMAT(1, 2); | 323 | inline int OutputDebugStringF(const char* pszFormat, ...) BF_FORMAT(1, 2); |
| 297 | 324 | ||
| 298 | inline int OutputDebugStringF(const char* pszFormat, ...) | 325 | inline int OutputDebugStringF(const char* pszFormat, ...) |