/* ### cmd.c ### */
E char NDECL(randomkey);
+E void FDECL(random_response, (char * buf, int size));
E int NDECL(doconduct);
E int NDECL(domonability);
E char FDECL(cmd_from_func, (int NDECL((*))));
return c;
}
+void random_response(char * buf, int size)
+{
+ int count = 0;
+ while (1) {
+ char c = randomkey();
+
+ if (c == '\n')
+ break;
+
+ if (c == '\033') {
+ count = 0;
+ break;
+ }
+
+ if (count < size)
+ buf[count++] = c;
+ }
+
+ buf[count] = '\0';
+}
+
int
ch2spkeys(c, start, end)
char c;
if (discover)
You("are in non-scoring discovery mode.");
}
- moveloop(resuming);
+
+ // iflags.debug_fuzzer = TRUE;
+
+ moveloop(resuming);
nethack_exit(EXIT_SUCCESS);
/*NOTREACHED*/
return 0;
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;
child = GetNHApp()->windowlist[msg_param->wid].win;
} break;
+
+ case MSNH_MSG_RANDOM_INPUT:
+ nhassert(0); // unexpected
+ break;
+
}
}
}
} break;
- } /* end switch(wParam) */
+ case MSNH_MSG_RANDOM_INPUT:
+ nhassert(0); // unexpected
+ break;
+
+ } /* end switch(wParam) */
}
/* on WM_CREATE */
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;
+
}
}
/*-----------------------------------------------------------------------------*/
#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;
}
} break;
+ case MSNH_MSG_RANDOM_INPUT:
+ nhassert(0); // unexpected
+ break;
+
} /* switch( wParam ) */
}
data->window_text = NULL;
break;
}
+
+ case MSNH_MSG_RANDOM_INPUT:
+ nhassert(0); // unexpected
+ break;
+
}
}
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;
_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;
+
}
}
{
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 */
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