Changes to get fuzzer working in NetHackW.
This commit is contained in:
@@ -25,6 +25,14 @@ INT_PTR CALLBACK GetlinDlgProc(HWND, UINT, WPARAM, LPARAM);
|
||||
int
|
||||
mswin_getlin_window(const char *question, char *result, size_t result_size)
|
||||
{
|
||||
if (iflags.debug_fuzzer) {
|
||||
random_response(result, result_size);
|
||||
if (result[0] != '\0')
|
||||
return IDOK;
|
||||
else
|
||||
return IDCANCEL;
|
||||
}
|
||||
|
||||
INT_PTR ret;
|
||||
struct getlin_data data;
|
||||
|
||||
|
||||
@@ -529,6 +529,11 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
child = GetNHApp()->windowlist[msg_param->wid].win;
|
||||
} break;
|
||||
|
||||
case MSNH_MSG_RANDOM_INPUT:
|
||||
nhassert(0); // unexpected
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -722,7 +722,11 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
} break;
|
||||
|
||||
} /* end switch(wParam) */
|
||||
case MSNH_MSG_RANDOM_INPUT:
|
||||
nhassert(0); // unexpected
|
||||
break;
|
||||
|
||||
} /* end switch(wParam) */
|
||||
}
|
||||
|
||||
/* on WM_CREATE */
|
||||
|
||||
@@ -687,6 +687,18 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
ZeroMemory(data->menu.prompt, sizeof(data->menu.prompt));
|
||||
}
|
||||
} break;
|
||||
|
||||
case MSNH_MSG_RANDOM_INPUT: {
|
||||
char c = randomkey();
|
||||
if (c == '\n')
|
||||
PostMessage(hWnd, WM_COMMAND, MAKELONG(IDOK, 0), 0);
|
||||
else if (c == '\033')
|
||||
PostMessage(hWnd, WM_COMMAND, MAKELONG(IDCANCEL, 0), 0);
|
||||
else
|
||||
PostMessage(GetDlgItem(hWnd, IDC_TEXT_CONTROL), WM_CHAR, c, 0);
|
||||
|
||||
} break;
|
||||
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#define MSNH_MSG_CARET 110
|
||||
#define MSNH_MSG_GETTEXT 111
|
||||
#define MSNH_MSG_UPDATE_STATUS 112
|
||||
#define MSNH_MSG_RANDOM_INPUT 113
|
||||
|
||||
typedef struct mswin_nhmsg_add_wnd {
|
||||
winid wid;
|
||||
|
||||
@@ -416,6 +416,10 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
} break;
|
||||
|
||||
case MSNH_MSG_RANDOM_INPUT:
|
||||
nhassert(0); // unexpected
|
||||
break;
|
||||
|
||||
} /* switch( wParam ) */
|
||||
}
|
||||
|
||||
|
||||
@@ -282,6 +282,11 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
data->window_text = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
case MSNH_MSG_RANDOM_INPUT:
|
||||
nhassert(0); // unexpected
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -219,6 +219,11 @@ StatusWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
data->status_lines = msg_data->status_lines;
|
||||
InvalidateRect(hWnd, NULL, TRUE);
|
||||
} break;
|
||||
|
||||
case MSNH_MSG_RANDOM_INPUT:
|
||||
nhassert(0); // unexpected
|
||||
break;
|
||||
|
||||
} /* end switch( wParam ) { */
|
||||
} break;
|
||||
|
||||
|
||||
@@ -212,6 +212,19 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
||||
_tcscat(data->window_text, TEXT("\r\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
case MSNH_MSG_RANDOM_INPUT: {
|
||||
char c = randomkey();
|
||||
if (c == '\n')
|
||||
PostMessage(hWnd, WM_COMMAND, MAKELONG(IDOK, 0), 0);
|
||||
else if (c == '\033')
|
||||
PostMessage(hWnd, WM_COMMAND, MAKELONG(IDCANCEL, 0), 0);
|
||||
else
|
||||
PostMessage(GetDlgItem(hWnd, IDC_TEXT_CONTROL), WM_CHAR, c, 0);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2102,14 +2102,24 @@ mswin_main_loop()
|
||||
{
|
||||
MSG msg;
|
||||
|
||||
while (!mswin_have_input() && GetMessage(&msg, NULL, 0, 0) != 0) {
|
||||
if (GetNHApp()->regNetHackMode
|
||||
|| !TranslateAccelerator(msg.hwnd, GetNHApp()->hAccelTable,
|
||||
&msg)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
while (!mswin_have_input()) {
|
||||
if (!iflags.debug_fuzzer || PeekMessage(&msg, NULL, 0, 0, FALSE)) {
|
||||
if(GetMessage(&msg, NULL, 0, 0) != 0) {
|
||||
if (GetNHApp()->regNetHackMode
|
||||
|| !TranslateAccelerator(msg.hwnd, GetNHApp()->hAccelTable,
|
||||
&msg)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
} else {
|
||||
/* WM_QUIT */
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
nhassert(iflags.debug_fuzzer);
|
||||
NHEVENT_KBD(randomkey());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* clean up and quit */
|
||||
@@ -2222,16 +2232,25 @@ mswin_popup_display(HWND hWnd, int *done_indicator)
|
||||
SetFocus(hWnd);
|
||||
|
||||
/* go into message loop */
|
||||
while (IsWindow(hWnd) && (done_indicator == NULL || !*done_indicator)
|
||||
&& GetMessage(&msg, NULL, 0, 0) != 0) {
|
||||
if (!IsDialogMessage(hWnd, &msg)) {
|
||||
if (!TranslateAccelerator(msg.hwnd, GetNHApp()->hAccelTable,
|
||||
&msg)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
while (IsWindow(hWnd) && (done_indicator == NULL || !*done_indicator)) {
|
||||
if (!iflags.debug_fuzzer || PeekMessage(&msg, NULL, 0, 0, FALSE)) {
|
||||
if(GetMessage(&msg, NULL, 0, 0) != 0) {
|
||||
if (!IsDialogMessage(hWnd, &msg)) {
|
||||
if (!TranslateAccelerator(msg.hwnd, GetNHApp()->hAccelTable,
|
||||
&msg)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* WM_QUIT */
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
nhassert(iflags.debug_fuzzer);
|
||||
PostMessage(hWnd, WM_MSNH_COMMAND, MSNH_MSG_RANDOM_INPUT, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user