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:
+15
-6
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user