diff options
Diffstat (limited to 'windows/main.c')
-rw-r--r-- | windows/main.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/windows/main.c b/windows/main.c index d2d054414..869907d11 100644 --- a/windows/main.c +++ b/windows/main.c @@ -64,6 +64,26 @@ static void die(const char *error) exit(1); } + +/** + * Warn the user of an event. + * + * \param[in] message A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ +static nserror win32_warn_user(const char *warning, const char *detail) +{ + size_t len = 1 + ((warning != NULL) ? strlen(messages_get(warning)) : + 0) + ((detail != 0) ? strlen(detail) : 0); + char message[len]; + snprintf(message, len, messages_get(warning), detail); + MessageBox(NULL, message, "Warning", MB_ICONWARNING); + + return NSERROR_OK; +} + static nsurl *gui_get_resource_url(const char *path) { char buf[PATH_MAX]; @@ -135,6 +155,7 @@ static nserror set_defaults(struct nsoption_s *defaults) static struct gui_misc_table win32_misc_table = { .schedule = win32_schedule, + .warning = win32_warn_user, }; @@ -256,7 +277,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd) } if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + win32_warn_user(messages_get_errorcode(ret), 0); } else { win32_run(); } |