From 1b73583ba2c0e4b72d951218827e0c621427d389 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 11 Nov 2004 14:07:14 +0000 Subject: nginx-0.1.5-RELEASE import *) Bugfix: on Solaris and Linux there may be too many "recvmsg() returned not enough data" alerts. *) Bugfix: there were the "writev() failed (22: Invalid argument)" errors on Solaris in proxy mode without sendfile. On other platforms that do not support sendfile at all the process got caught in an endless loop. *) Bugfix: segmentation fault on Solaris in proxy mode and using sendfile. *) Bugfix: segmentation fault on Solaris. *) Bugfix: on-line upgrade did not work on Linux. *) Bugfix: the ngx_http_autoindex_module module did not escape the spaces, the quotes, and the percent signs in the directory listing. *) Change: the decrease of the copy operations. *) Feature: the userid_p3p directive. --- src/os/win32/ngx_gui.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/os/win32/ngx_gui.c (limited to 'src/os/win32/ngx_gui.c') diff --git a/src/os/win32/ngx_gui.c b/src/os/win32/ngx_gui.c new file mode 100644 index 000000000..5673820d2 --- /dev/null +++ b/src/os/win32/ngx_gui.c @@ -0,0 +1,85 @@ + +/* + * Copyright (C) Igor Sysoev + */ + + +#include +#include + + +#define NGX_MAX_TEXT 2048 + + +void ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err, + const char *fmt, ...) +{ + va_list args; + u_char text[NGX_MAX_TEXT], *p, *last; + + last = text + NGX_MAX_TEXT; + + va_start(args, fmt); + p = ngx_vsnprintf(text, NGX_MAX_TEXT, fmt, args); + va_end(args); + + if (err) { + + if (p > last - 50) { + + /* leave a space for an error code */ + + p = last - 50; + *p++ = '.'; + *p++ = '.'; + *p++ = '.'; + } + + if ((unsigned) err >= 0x80000000) { + p = ngx_snprintf(p, last - p, " (%Xd: ", err); + + } else { + p = ngx_snprintf(p, last - p, " (%d: ", err); + } + + p = ngx_strerror_r(err, p, last - p); + + if (p < last) { + *p++ = ')'; + } + } + + if (p == last) { + p--; + } + + *p = '\0'; + + MessageBox(NULL, (char *) text, title, type); +} + + +ngx_int_t ngx_system_tray_icon(HWND window, u_long action, + HICON icon, u_char *tip) +{ + NOTIFYICONDATA ni; + + ni.cbSize = sizeof(NOTIFYICONDATA); + ni.hWnd = window; + ni.uID = 0; + ni.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; + ni.uCallbackMessage = NGX_WM_TRAY; + ni.hIcon = icon; + + if (tip) { + ngx_cpystrn((u_char *) ni.szTip, tip, 64); + } else { + ni.szTip[0] = '\0'; + } + + if (Shell_NotifyIcon(action, &ni) == 0) { + return NGX_ERROR; + } + + return NGX_OK; +} -- cgit