fix W343-1 open win32 bug from known bugs page

W343-1 Redirecting score output through a pipe doesn't work.
This commit is contained in:
nethack.allison
2006-04-25 01:16:54 +00:00
parent f0963e3fb6
commit 3e2f7f946d
4 changed files with 29 additions and 9 deletions
+15 -6
View File
@@ -54,6 +54,7 @@ extern void FDECL(nethack_exit,(int));
#ifdef WIN32 #ifdef WIN32
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */ extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
extern int redirect_stdout; /* from sys/share/pcsys.c */
#endif #endif
#if defined(MSWIN_GRAPHICS) #if defined(MSWIN_GRAPHICS)
@@ -227,14 +228,22 @@ char *argv[];
* may do a prscore(). * may do a prscore().
*/ */
if (!strncmp(argv[1], "-s", 2)) { if (!strncmp(argv[1], "-s", 2)) {
#if !defined(MSWIN_GRAPHICS) #if defined(MSWIN_GRAPHICS) || defined(WIN32CON)
# if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS) int sfd = _fileno(stdout);
chdirx(hackdir,0); 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
#endif
#if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS)
chdirx(hackdir,0);
#endif
prscore(argc, argv); prscore(argc, argv);
#else
raw_printf("-s is not supported for the Graphical Interface\n");
#endif /*MSWIN_GRAPHICS*/
nethack_exit(EXIT_SUCCESS); nethack_exit(EXIT_SUCCESS);
} }
+1
View File
@@ -390,6 +390,7 @@ char *name;
#ifdef WIN32 #ifdef WIN32
boolean getreturn_enabled; boolean getreturn_enabled;
int redirect_stdout;
#endif #endif
void void
+7 -2
View File
@@ -56,6 +56,7 @@ INPUT_RECORD ir;
* from the command line. * from the command line.
*/ */
int GUILaunched; int GUILaunched;
extern int redirect_stdout;
static BOOL FDECL(CtrlHandler, (DWORD)); static BOOL FDECL(CtrlHandler, (DWORD));
#ifdef PORT_DEBUG #ifdef PORT_DEBUG
@@ -941,8 +942,12 @@ msmsg VA_DECL(const char *, fmt)
VA_INIT(fmt, const char *); VA_INIT(fmt, const char *);
Vsprintf(buf, fmt, VA_ARGS); Vsprintf(buf, fmt, VA_ARGS);
VA_END(); VA_END();
xputs(buf); if (redirect_stdout)
if (ttyDisplay) curs(BASE_WINDOW, cursor.X+1, cursor.Y); fprintf(stdout,"%s",buf);
else {
xputs(buf);
if (ttyDisplay) curs(BASE_WINDOW, cursor.X+1, cursor.Y);
}
return; return;
} }
+6 -1
View File
@@ -1290,8 +1290,13 @@ void mswin_raw_print(const char *str)
{ {
TCHAR wbuf[255]; TCHAR wbuf[255];
logDebug("mswin_raw_print(%s)\n", str); 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 ); NHMessageBox(GetNHApp()->hMainWnd, NH_A2W(str, wbuf, sizeof(wbuf)), MB_ICONINFORMATION | MB_OK );
else
fprintf(stdout,"%s",str);
}
} }
/* /*