winetest: Require an email address to submit a report.
diff --git a/programs/winetest/gui.c b/programs/winetest/gui.c
index cb59ac2..7a7b1e0 100644
--- a/programs/winetest/gui.c
+++ b/programs/winetest/gui.c
@@ -361,6 +361,39 @@
dialog, AskTagProc);
}
+static INT_PTR CALLBACK
+AskEmailProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ int len;
+
+ switch (msg)
+ {
+ case WM_COMMAND:
+ switch (LOWORD (wParam)) {
+ case IDOK:
+ len = GetWindowTextLengthA (GetDlgItem (hwnd, IDC_EMAIL));
+ if(!len) {
+ report (R_WARNING, "You must enter an email address to continue");
+ return FALSE;
+ }
+ email = heap_alloc (len+1);
+ GetDlgItemTextA (hwnd, IDC_EMAIL, email, len+1);
+ EndDialog (hwnd, IDOK);
+ return TRUE;
+ case IDABORT:
+ EndDialog (hwnd, IDABORT);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+int
+guiAskEmail (void)
+{
+ return DialogBox (GetModuleHandle (NULL), MAKEINTRESOURCE (IDD_EMAIL), dialog, AskEmailProc);
+}
+
/* Quiet functions */
static int
qNoOp (va_list ap)
diff --git a/programs/winetest/main.c b/programs/winetest/main.c
index 69b7da6..a20fa06 100644
--- a/programs/winetest/main.c
+++ b/programs/winetest/main.c
@@ -48,6 +48,7 @@
};
char *tag = NULL;
+char *email = NULL;
static struct wine_test *wine_tests;
static int nr_of_files, nr_of_tests;
static int nr_native_dlls;
@@ -221,6 +222,7 @@
xprintf (" Platform=%s%s\n", platform, wow64 ? " (WOW64)" : "");
xprintf (" bRunningUnderWine=%d\n", running_under_wine ());
xprintf (" bRunningOnVisibleDesktop=%d\n", running_on_visible_desktop ());
+ xprintf (" Submitter=%s\n", email );
xprintf (" dwMajorVersion=%u\n dwMinorVersion=%u\n"
" dwBuildNumber=%u\n PlatformId=%u\n szCSDVersion=%s\n",
ver.dwMajorVersion, ver.dwMinorVersion, ver.dwBuildNumber,
@@ -921,6 +923,7 @@
" -d DIR Use DIR as temp directory (default: %%TEMP%%\\wct)\n"
" -e preserve the environment\n"
" -h print this message and exit\n"
+" -m MAIL an email address to enable developers to contact you\n"
" -p shutdown when the tests are done\n"
" -q quiet mode, no output at all\n"
" -o FILE put report into FILE, do not submit\n"
@@ -971,6 +974,13 @@
case '?':
usage ();
exit (0);
+ case 'm':
+ if (!(email = argv[++i]))
+ {
+ usage();
+ exit( 2 );
+ }
+ break;
case 'p':
poweroff = 1;
break;
@@ -1056,6 +1066,13 @@
}
report (R_TAG);
+ while (!email) {
+ if (!interactive)
+ report (R_FATAL, "Please specify an email address (-m option) to enable developers\n"
+ " to contact you about your report if necessary.");
+ if (guiAskEmail () == IDABORT) exit (1);
+ }
+
if (!build_id[0])
report( R_WARNING, "You won't be able to submit results without a valid build id.\n"
"To submit results, winetest needs to be built from a git checkout." );
diff --git a/programs/winetest/resource.h b/programs/winetest/resource.h
index b0f1646..be71274 100644
--- a/programs/winetest/resource.h
+++ b/programs/winetest/resource.h
@@ -23,6 +23,7 @@
#define IDD_STATUS 100
#define IDD_ABOUT 101
#define IDD_TAG 102
+#define IDD_EMAIL 103
#define IDC_STATIC -1
@@ -36,6 +37,7 @@
#define IDC_DIR 2000
#define IDC_OUT 2001
#define IDC_TAG 2002
+#define IDC_EMAIL 2002
#define IDC_SB 3000
diff --git a/programs/winetest/winetest.h b/programs/winetest/winetest.h
index 945586c..a0d2fbd 100644
--- a/programs/winetest/winetest.h
+++ b/programs/winetest/winetest.h
@@ -68,7 +68,9 @@
#define MAXTAGLEN 20
extern char *tag;
+extern char *email;
int guiAskTag (void);
+int guiAskEmail (void);
int report (enum report_type t, ...);
#endif /* __WINETESTS_H */
diff --git a/programs/winetest/winetest.rc b/programs/winetest/winetest.rc
index 52c3430..5b5d6e0 100644
--- a/programs/winetest/winetest.rc
+++ b/programs/winetest/winetest.rc
@@ -35,6 +35,17 @@
PUSHBUTTON "Abort", IDABORT, 85, 45, 40, 14
END
+IDD_EMAIL DIALOG 0, 0, 150, 65
+STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "No email supplied"
+BEGIN
+ CTEXT "Please supply an email address to enable developers to contact you about your report."
+ IDC_STATIC, 10, 5, 130, 30
+ EDITTEXT IDC_EMAIL, 10, 30, 130, 10, ES_AUTOHSCROLL
+ DEFPUSHBUTTON "Start", IDOK, 25, 45, 40, 14
+ PUSHBUTTON "Abort", IDABORT, 85, 45, 40, 14
+END
+
IDD_STATUS DIALOG 0, 0, 160, 150
STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION "Wine Test Shell"