W343-1 Redirecting score output through a pipe doesn't work.
#ifdef WIN32
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
+extern int redirect_stdout; /* from sys/share/pcsys.c */
#endif
#if defined(MSWIN_GRAPHICS)
* may do a prscore().
*/
if (!strncmp(argv[1], "-s", 2)) {
-#if !defined(MSWIN_GRAPHICS)
-# if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS)
- chdirx(hackdir,0);
+#if defined(MSWIN_GRAPHICS) || defined(WIN32CON)
+ int sfd = _fileno(stdout);
+ redirect_stdout = (sfd >= 0) ? !isatty(sfd) : 0;
+
+# ifdef MSWIN_GRAPHICS
+ if (!redirect_stdout) {
+ raw_printf("-s is not supported for the Graphical Interface\n");
+ nethack_exit(EXIT_SUCCESS);
+ }
# endif
+#endif
+
+#if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS)
+ chdirx(hackdir,0);
+#endif
prscore(argc, argv);
-#else
- raw_printf("-s is not supported for the Graphical Interface\n");
-#endif /*MSWIN_GRAPHICS*/
nethack_exit(EXIT_SUCCESS);
}
#ifdef WIN32
boolean getreturn_enabled;
+int redirect_stdout;
#endif
void
* from the command line.
*/
int GUILaunched;
+extern int redirect_stdout;
static BOOL FDECL(CtrlHandler, (DWORD));
#ifdef PORT_DEBUG
VA_INIT(fmt, const char *);
Vsprintf(buf, fmt, VA_ARGS);
VA_END();
- xputs(buf);
- if (ttyDisplay) curs(BASE_WINDOW, cursor.X+1, cursor.Y);
+ if (redirect_stdout)
+ fprintf(stdout,"%s",buf);
+ else {
+ xputs(buf);
+ if (ttyDisplay) curs(BASE_WINDOW, cursor.X+1, cursor.Y);
+ }
return;
}
{
TCHAR wbuf[255];
logDebug("mswin_raw_print(%s)\n", str);
- if( str && *str )
+ if( str && *str ) {
+ extern int redirect_stdout;
+ if (!redirect_stdout)
NHMessageBox(GetNHApp()->hMainWnd, NH_A2W(str, wbuf, sizeof(wbuf)), MB_ICONINFORMATION | MB_OK );
+ else
+ fprintf(stdout,"%s",str);
+ }
}
/*