issue start up errors and warning on both stderr and error_log
This commit is contained in:
parent
d4dc08bc11
commit
ddba51983f
11 changed files with 116 additions and 65 deletions
4
auto/configure
vendored
4
auto/configure
vendored
|
@ -71,9 +71,7 @@ have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define
|
||||||
have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
|
have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
|
||||||
have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
|
have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
|
||||||
have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define
|
have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define
|
||||||
if test -n "$NGX_ERROR_LOG_PATH"; then
|
have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define
|
||||||
have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define
|
|
||||||
fi
|
|
||||||
|
|
||||||
have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define
|
have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define
|
||||||
have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
|
have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
|
||||||
|
|
|
@ -207,10 +207,10 @@ main(int argc, char *const *argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_show_version) {
|
if (ngx_show_version) {
|
||||||
ngx_log_stderr("nginx version: " NGINX_VER);
|
ngx_log_stderr(0, "nginx version: " NGINX_VER);
|
||||||
|
|
||||||
if (ngx_show_help) {
|
if (ngx_show_help) {
|
||||||
ngx_log_stderr(
|
ngx_log_stderr(0,
|
||||||
"Usage: nginx [-?hvVt] [-s signal] [-c filename] "
|
"Usage: nginx [-?hvVt] [-s signal] [-c filename] "
|
||||||
"[-g directives]" CRLF CRLF
|
"[-g directives]" CRLF CRLF
|
||||||
"Options:" CRLF
|
"Options:" CRLF
|
||||||
|
@ -230,9 +230,9 @@ main(int argc, char *const *argv)
|
||||||
|
|
||||||
if (ngx_show_configure) {
|
if (ngx_show_configure) {
|
||||||
#ifdef NGX_COMPILER
|
#ifdef NGX_COMPILER
|
||||||
ngx_log_stderr("built by " NGX_COMPILER);
|
ngx_log_stderr(0, "built by " NGX_COMPILER);
|
||||||
#endif
|
#endif
|
||||||
ngx_log_stderr("configure arguments: " NGX_CONFIGURE);
|
ngx_log_stderr(0, "configure arguments: " NGX_CONFIGURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ngx_test_config) {
|
if (!ngx_test_config) {
|
||||||
|
@ -308,7 +308,7 @@ main(int argc, char *const *argv)
|
||||||
cycle = ngx_init_cycle(&init_cycle);
|
cycle = ngx_init_cycle(&init_cycle);
|
||||||
if (cycle == NULL) {
|
if (cycle == NULL) {
|
||||||
if (ngx_test_config) {
|
if (ngx_test_config) {
|
||||||
ngx_log_stderr("the configuration file %s test failed",
|
ngx_log_stderr(0, "configuration file %s test failed",
|
||||||
init_cycle.conf_file.data);
|
init_cycle.conf_file.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ main(int argc, char *const *argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_test_config) {
|
if (ngx_test_config) {
|
||||||
ngx_log_stderr("the configuration file %s was tested successfully",
|
ngx_log_stderr(0, "configuration file %s test is successful",
|
||||||
cycle->conf_file.data);
|
cycle->conf_file.data);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -355,6 +355,17 @@ main(int argc, char *const *argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cycle->log->file->fd != ngx_stderr) {
|
||||||
|
|
||||||
|
if (ngx_set_stderr(cycle->log->file->fd) == NGX_FILE_ERROR) {
|
||||||
|
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
||||||
|
ngx_set_stderr_n " failed");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_use_stderr = 0;
|
||||||
|
|
||||||
if (ngx_process == NGX_PROCESS_SINGLE) {
|
if (ngx_process == NGX_PROCESS_SINGLE) {
|
||||||
ngx_single_process_cycle(cycle);
|
ngx_single_process_cycle(cycle);
|
||||||
|
|
||||||
|
@ -622,7 +633,7 @@ ngx_get_options(int argc, char *const *argv)
|
||||||
p = (u_char *) argv[i];
|
p = (u_char *) argv[i];
|
||||||
|
|
||||||
if (*p++ != '-') {
|
if (*p++ != '-') {
|
||||||
ngx_log_stderr("invalid option: \"%s\"", argv[i]);
|
ngx_log_stderr(0, "invalid option: \"%s\"", argv[i]);
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -660,7 +671,7 @@ ngx_get_options(int argc, char *const *argv)
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_log_stderr("the option \"-c\" requires file name");
|
ngx_log_stderr(0, "option \"-c\" requires file name");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
|
||||||
case 'g':
|
case 'g':
|
||||||
|
@ -674,7 +685,7 @@ ngx_get_options(int argc, char *const *argv)
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_log_stderr("the option \"-g\" requires parameter");
|
ngx_log_stderr(0, "option \"-g\" requires parameter");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
|
@ -685,7 +696,7 @@ ngx_get_options(int argc, char *const *argv)
|
||||||
ngx_signal = argv[i];
|
ngx_signal = argv[i];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ngx_log_stderr("the option \"-s\" requires parameter");
|
ngx_log_stderr(0, "option \"-s\" requires parameter");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -698,11 +709,11 @@ ngx_get_options(int argc, char *const *argv)
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_log_stderr("invalid option: \"-s %s\"", ngx_signal);
|
ngx_log_stderr(0, "invalid option: \"-s %s\"", ngx_signal);
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ngx_log_stderr("invalid option: \"%c\"", *(p - 1));
|
ngx_log_stderr(0, "invalid option: \"%c\"", *(p - 1));
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -892,7 +892,7 @@ ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
|
||||||
file->name = full;
|
file->name = full;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
file->fd = ngx_stderr_fileno;
|
file->fd = ngx_stderr;
|
||||||
file->name.len = 0;
|
file->name.len = 0;
|
||||||
file->name.data = NULL;
|
file->name.data = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,7 +270,7 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_test_config) {
|
if (ngx_test_config) {
|
||||||
ngx_log_stderr("the configuration file %s syntax is ok",
|
ngx_log_stderr(0, "the configuration file %s syntax is ok",
|
||||||
cycle->conf_file.data);
|
cycle->conf_file.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,25 +582,14 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
|
||||||
|
|
||||||
/* commit the new cycle configuration */
|
/* commit the new cycle configuration */
|
||||||
|
|
||||||
#if !(NGX_WIN32)
|
if (!ngx_use_stderr && cycle->log->file->fd != ngx_stderr) {
|
||||||
|
|
||||||
if (!ngx_test_config && cycle->log->file->fd != STDERR_FILENO) {
|
if (ngx_set_stderr(cycle->log->file->fd) == NGX_FILE_ERROR) {
|
||||||
|
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
|
||||||
ngx_log_debug3(NGX_LOG_DEBUG_CORE, log, 0,
|
ngx_set_stderr_n " failed");
|
||||||
"dup2: %p %d \"%s\"",
|
|
||||||
cycle->log->file,
|
|
||||||
cycle->log->file->fd, cycle->log->file->name.data);
|
|
||||||
|
|
||||||
if (dup2(cycle->log->file->fd, STDERR_FILENO) == -1) {
|
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
|
|
||||||
"dup2(STDERR) failed");
|
|
||||||
/* fatal */
|
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pool->log = cycle->log;
|
pool->log = cycle->log;
|
||||||
|
|
||||||
for (i = 0; ngx_modules[i]; i++) {
|
for (i = 0; ngx_modules[i]; i++) {
|
||||||
|
@ -697,7 +686,7 @@ old_shm_zone_done:
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr_fileno) {
|
if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -797,7 +786,7 @@ failed:
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr_fileno) {
|
if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,8 @@ ngx_module_t ngx_errlog_module = {
|
||||||
|
|
||||||
|
|
||||||
static ngx_log_t ngx_log;
|
static ngx_log_t ngx_log;
|
||||||
static ngx_open_file_t ngx_stderr;
|
static ngx_open_file_t ngx_log_file;
|
||||||
|
ngx_uint_t ngx_use_stderr = 1;
|
||||||
|
|
||||||
|
|
||||||
static ngx_str_t err_levels[] = {
|
static ngx_str_t err_levels[] = {
|
||||||
|
@ -86,7 +87,8 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||||
#if (NGX_HAVE_VARIADIC_MACROS)
|
#if (NGX_HAVE_VARIADIC_MACROS)
|
||||||
va_list args;
|
va_list args;
|
||||||
#endif
|
#endif
|
||||||
u_char errstr[NGX_MAX_ERROR_STR], *p, *last;
|
u_char *p, *last, *msg;
|
||||||
|
u_char errstr[NGX_MAX_ERROR_STR];
|
||||||
|
|
||||||
if (log->file->fd == NGX_INVALID_FILE) {
|
if (log->file->fd == NGX_INVALID_FILE) {
|
||||||
return;
|
return;
|
||||||
|
@ -109,6 +111,8 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||||
p = ngx_snprintf(p, last - p, "*%uA ", log->connection);
|
p = ngx_snprintf(p, last - p, "*%uA ", log->connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
msg = p;
|
||||||
|
|
||||||
#if (NGX_HAVE_VARIADIC_MACROS)
|
#if (NGX_HAVE_VARIADIC_MACROS)
|
||||||
|
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
|
@ -158,6 +162,19 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||||
ngx_linefeed(p);
|
ngx_linefeed(p);
|
||||||
|
|
||||||
(void) ngx_write_fd(log->file->fd, errstr, p - errstr);
|
(void) ngx_write_fd(log->file->fd, errstr, p - errstr);
|
||||||
|
|
||||||
|
if (!ngx_use_stderr
|
||||||
|
|| level > NGX_LOG_WARN
|
||||||
|
|| log->file->fd == ngx_stderr)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg -= (err_levels[level].len + 4);
|
||||||
|
|
||||||
|
(void) ngx_sprintf(msg, "[%V]: ", &err_levels[level]);
|
||||||
|
|
||||||
|
ngx_write_fd(ngx_stderr, msg, p - msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -198,9 +215,9 @@ ngx_log_abort(ngx_err_t err, const char *text, void *param)
|
||||||
|
|
||||||
|
|
||||||
void ngx_cdecl
|
void ngx_cdecl
|
||||||
ngx_log_stderr(const char *fmt, ...)
|
ngx_log_stderr(ngx_err_t err, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
u_char *p;
|
u_char *p, *last;
|
||||||
va_list args;
|
va_list args;
|
||||||
u_char errstr[NGX_MAX_ERROR_STR];
|
u_char errstr[NGX_MAX_ERROR_STR];
|
||||||
|
|
||||||
|
@ -212,46 +229,75 @@ ngx_log_stderr(const char *fmt, ...)
|
||||||
p = errstr + NGX_MAX_ERROR_STR - NGX_LINEFEED_SIZE;
|
p = errstr + NGX_MAX_ERROR_STR - NGX_LINEFEED_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_linefeed(p);
|
if (err) {
|
||||||
|
|
||||||
|
last = errstr + NGX_MAX_ERROR_STR;
|
||||||
|
|
||||||
|
if (p > last - 50) {
|
||||||
|
|
||||||
|
/* leave a space for an error code */
|
||||||
|
|
||||||
|
p = last - 50;
|
||||||
|
*p++ = '.';
|
||||||
|
*p++ = '.';
|
||||||
|
*p++ = '.';
|
||||||
|
}
|
||||||
|
|
||||||
#if (NGX_WIN32)
|
#if (NGX_WIN32)
|
||||||
|
p = ngx_snprintf(p, last - p, ((unsigned) err < 0x80000000)
|
||||||
if (ngx_stderr_fileno == NULL) {
|
? " (%d: " : " (%Xd: ", err);
|
||||||
ngx_stderr_fileno = GetStdHandle(STD_ERROR_HANDLE);
|
#else
|
||||||
}
|
p = ngx_snprintf(p, last - p, " (%d: ", err);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
(void) ngx_write_fd(ngx_stderr_fileno, errstr, p - errstr);
|
p = ngx_strerror_r(err, p, last - p);
|
||||||
|
|
||||||
|
if (p < last) {
|
||||||
|
*p++ = ')';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_linefeed(p);
|
||||||
|
|
||||||
|
ngx_write_fd(ngx_stderr, errstr, p - errstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ngx_log_t *
|
ngx_log_t *
|
||||||
ngx_log_init(void)
|
ngx_log_init(void)
|
||||||
{
|
{
|
||||||
ngx_log.file = &ngx_stderr;
|
ngx_log.file = &ngx_log_file;
|
||||||
ngx_log.log_level = NGX_LOG_NOTICE;
|
ngx_log.log_level = NGX_LOG_NOTICE;
|
||||||
|
|
||||||
#if (NGX_WIN32)
|
/*
|
||||||
|
* we use ngx_strlen() here since BCC warns about
|
||||||
|
* condition is always false and unreachable code
|
||||||
|
*/
|
||||||
|
|
||||||
ngx_stderr.fd = ngx_open_file((u_char *) NGX_ERROR_LOG_PATH,
|
if (ngx_strlen(NGX_ERROR_LOG_PATH) == 0) {
|
||||||
NGX_FILE_APPEND,
|
ngx_log_file.fd = ngx_stderr;
|
||||||
NGX_FILE_CREATE_OR_OPEN,
|
return &ngx_log;
|
||||||
NGX_FILE_DEFAULT_ACCESS);
|
|
||||||
|
|
||||||
if (ngx_stderr.fd == NGX_INVALID_FILE) {
|
|
||||||
ngx_event_log(ngx_errno,
|
|
||||||
"Could not open error log file: "
|
|
||||||
ngx_open_file_n " \"" NGX_ERROR_LOG_PATH "\" failed");
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
ngx_log_file.fd = ngx_open_file((u_char *) NGX_ERROR_LOG_PATH,
|
||||||
|
NGX_FILE_APPEND,
|
||||||
|
NGX_FILE_CREATE_OR_OPEN,
|
||||||
|
NGX_FILE_DEFAULT_ACCESS);
|
||||||
|
|
||||||
ngx_stderr.fd = STDERR_FILENO;
|
if (ngx_log_file.fd == NGX_INVALID_FILE) {
|
||||||
|
ngx_log_stderr(ngx_errno,
|
||||||
|
"[emerg]: could not open error log file: "
|
||||||
|
ngx_open_file_n " \"" NGX_ERROR_LOG_PATH "\" failed");
|
||||||
|
|
||||||
|
#if (NGX_WIN32)
|
||||||
|
ngx_event_log(ngx_errno,
|
||||||
|
"could not open error log file: "
|
||||||
|
ngx_open_file_n " \"" NGX_ERROR_LOG_PATH "\" failed");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return &ngx_log;
|
return &ngx_log;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,7 +395,7 @@ ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||||
value = cf->args->elts;
|
value = cf->args->elts;
|
||||||
|
|
||||||
if (value[1].len == 6 && ngx_strcmp(value[1].data, "stderr") == 0) {
|
if (value[1].len == 6 && ngx_strcmp(value[1].data, "stderr") == 0) {
|
||||||
cf->cycle->new_log->file->fd = ngx_stderr.fd;
|
cf->cycle->new_log->file->fd = ngx_stderr;
|
||||||
cf->cycle->new_log->file->name.len = 0;
|
cf->cycle->new_log->file->name.len = 0;
|
||||||
cf->cycle->new_log->file->name.data = NULL;
|
cf->cycle->new_log->file->name.data = NULL;
|
||||||
|
|
||||||
|
|
|
@ -199,10 +199,11 @@ ngx_log_t *ngx_log_init(void);
|
||||||
ngx_log_t *ngx_log_create_errlog(ngx_cycle_t *cycle, ngx_array_t *args);
|
ngx_log_t *ngx_log_create_errlog(ngx_cycle_t *cycle, ngx_array_t *args);
|
||||||
char *ngx_set_error_log_levels(ngx_conf_t *cf, ngx_log_t *log);
|
char *ngx_set_error_log_levels(ngx_conf_t *cf, ngx_log_t *log);
|
||||||
void ngx_log_abort(ngx_err_t err, const char *text, void *param);
|
void ngx_log_abort(ngx_err_t err, const char *text, void *param);
|
||||||
void ngx_cdecl ngx_log_stderr(const char *fmt, ...);
|
void ngx_cdecl ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
|
||||||
|
|
||||||
|
|
||||||
extern ngx_module_t ngx_errlog_module;
|
extern ngx_module_t ngx_errlog_module;
|
||||||
|
extern ngx_uint_t ngx_use_stderr;
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_LOG_H_INCLUDED_ */
|
#endif /* _NGX_LOG_H_INCLUDED_ */
|
||||||
|
|
|
@ -273,8 +273,12 @@ ngx_int_t ngx_directio_off(ngx_fd_t fd);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
size_t ngx_fs_bsize(u_char *name);
|
size_t ngx_fs_bsize(u_char *name);
|
||||||
|
|
||||||
|
|
||||||
|
#define ngx_stderr STDERR_FILENO
|
||||||
|
#define ngx_set_stderr(fd) dup2(fd, STDERR_FILENO)
|
||||||
|
#define ngx_set_stderr_n "dup2(STDERR_FILENO)"
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_FILES_H_INCLUDED_ */
|
#endif /* _NGX_FILES_H_INCLUDED_ */
|
||||||
|
|
|
@ -54,7 +54,6 @@ extern ngx_int_t ngx_max_sockets;
|
||||||
extern ngx_uint_t ngx_inherited_nonblocking;
|
extern ngx_uint_t ngx_inherited_nonblocking;
|
||||||
extern ngx_uint_t ngx_tcp_nodelay_and_tcp_nopush;
|
extern ngx_uint_t ngx_tcp_nodelay_and_tcp_nopush;
|
||||||
|
|
||||||
#define ngx_stderr_fileno STDERR_FILENO
|
|
||||||
|
|
||||||
#if (NGX_FREEBSD)
|
#if (NGX_FREEBSD)
|
||||||
#include <ngx_freebsd.h>
|
#include <ngx_freebsd.h>
|
||||||
|
|
|
@ -237,4 +237,9 @@ ngx_int_t ngx_directio_off(ngx_fd_t fd);
|
||||||
size_t ngx_fs_bsize(u_char *name);
|
size_t ngx_fs_bsize(u_char *name);
|
||||||
|
|
||||||
|
|
||||||
|
#define ngx_stderr GetStdHandle(STD_ERROR_HANDLE)
|
||||||
|
#define ngx_set_stderr(fd) SetStdHandle(STD_ERROR_HANDLE, fd)
|
||||||
|
#define ngx_set_stderr_n "SetStdHandle(STD_ERROR_HANDLE)"
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_FILES_H_INCLUDED_ */
|
#endif /* _NGX_FILES_H_INCLUDED_ */
|
||||||
|
|
|
@ -58,7 +58,6 @@ extern ngx_int_t ngx_max_sockets;
|
||||||
extern ngx_uint_t ngx_inherited_nonblocking;
|
extern ngx_uint_t ngx_inherited_nonblocking;
|
||||||
extern ngx_uint_t ngx_tcp_nodelay_and_tcp_nopush;
|
extern ngx_uint_t ngx_tcp_nodelay_and_tcp_nopush;
|
||||||
extern ngx_uint_t ngx_win32_version;
|
extern ngx_uint_t ngx_win32_version;
|
||||||
extern ngx_fd_t ngx_stderr_fileno;
|
|
||||||
extern char ngx_unique[];
|
extern char ngx_unique[];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ ngx_int_t ngx_max_sockets;
|
||||||
ngx_uint_t ngx_inherited_nonblocking = 1;
|
ngx_uint_t ngx_inherited_nonblocking = 1;
|
||||||
ngx_uint_t ngx_tcp_nodelay_and_tcp_nopush;
|
ngx_uint_t ngx_tcp_nodelay_and_tcp_nopush;
|
||||||
|
|
||||||
ngx_fd_t ngx_stderr_fileno;
|
|
||||||
char ngx_unique[NGX_INT32_LEN + 1];
|
char ngx_unique[NGX_INT32_LEN + 1];
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue