nginx-0.0.3-2004-05-19-00:28:54 import
diff --git a/auto/configure b/auto/configure
index 9429373..c10ee68 100755
--- a/auto/configure
+++ b/auto/configure
@@ -38,4 +38,11 @@
have=NGX_SMP . auto/have
+have=NGX_PREFIX value="\"$PREFIX/\"" . auto/define
+have=NGX_SBIN_PATH value="\"$SBIN_PATH\"" . auto/define
+have=NGX_CONF_PATH value="\"$CONF_PATH\"" . auto/define
+have=NGX_PID_PATH value="\"$PID_PATH\"" . auto/define
+have=NGX_ERROR_LOG_PATH value="\"$ERROR_LOG_PATH\"" . auto/define
+have=NGX_HTTP_LOG_PATH value="\"$HTTP_LOG_PATH\"" . auto/define
+
. auto/summary
diff --git a/auto/define b/auto/define
new file mode 100644
index 0000000..d872fc3
--- /dev/null
+++ b/auto/define
@@ -0,0 +1,8 @@
+
+cat << END >> $NGX_AUTO_CONFIG_H
+
+#ifndef $have
+#define $have $value
+#endif
+
+END
diff --git a/auto/options b/auto/options
index 178dfd2..8ef6ddd 100644
--- a/auto/options
+++ b/auto/options
@@ -1,6 +1,13 @@
help=no
+PREFIX=
+SBIN_PATH=
+CONF_PATH=
+HTTP_LOG_PATH=
+ERROR_LOG_PATH=
+PID_PATH=
+
CC=gcc
CPP=
OBJS=objs
@@ -52,6 +59,13 @@
case "$option" in
--help) help=yes ;;
+ --prefix=*) PREFIX="$value" ;;
+ --sbin-path=*) SBIN_PATH="$value" ;;
+ --conf-path=*) CONF_PATH="$value" ;;
+ --http-log-path=*) HTTP_LOG_PATH="$value" ;;
+ --error-log-path=*) ERROR_LOG_PATH="$value" ;;
+ --pid-path=*) PID_PATH="$value" ;;
+
--crossbuild=*) PLATFORM="$value" ;;
--builddir=*) OBJS="$value" ;;
@@ -129,3 +143,28 @@
EVENT_POLL=NO
echo "$0: warning: --with-poll_module option is ignored for win32"
fi
+
+
+if [ ".$PREFIX" = "." ]; then
+ PREFIX=/usr/local/nginx
+fi
+
+if [ ".$SBIN_PATH" = "." ]; then
+ SBIN_PATH=$PREFIX/sbin/nginx
+fi
+
+if [ ".$CONF_PATH" = "." ]; then
+ CONF_PATH=$PREFIX/conf/nginx.conf
+fi
+
+if [ ".$PID_PATH" = "." ]; then
+ PID_PATH=$PREFIX/logs/nginx.pid
+fi
+
+if [ ".$ERROR_LOG_PATH" = "." ]; then
+ ERROR_LOG_PATH=$PREFIX/logs/error.log
+fi
+
+if [ ".$HTTP_LOG_PATH" = "." ]; then
+ HTTP_LOG_PATH=$PREFIX/logs/access.log
+fi
diff --git a/auto/summary b/auto/summary
index 16e552d..9769180 100644
--- a/auto/summary
+++ b/auto/summary
@@ -2,6 +2,7 @@
echo
echo "Configuration summary"
+
if [ $USE_PCRE = DISABLED ]; then
echo " + PCRE library is disabled"
@@ -55,3 +56,12 @@
exit 1
fi
fi
+
+
+echo " nginx path prefix: $PREFIX"
+echo " nginx binary file: $SBIN_PATH"
+echo " nginx configuration file: $CONF_PATH"
+echo " nginx pid file: $PID_PATH"
+echo " nginx error log file: $ERROR_LOG_PATH"
+echo " nginx http access log file: $HTTP_LOG_PATH"
+echo
diff --git a/src/core/nginx.c b/src/core/nginx.c
index be95637..cef3434 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -315,8 +315,8 @@
}
if (cycle->conf_file.data == NULL) {
- cycle->conf_file.len = sizeof(NGINX_CONF) - 1;
- cycle->conf_file.data = NGINX_CONF;
+ cycle->conf_file.len = sizeof(NGX_CONF_PATH) - 1;
+ cycle->conf_file.data = (u_char *) NGX_CONF_PATH;
}
return NGX_OK;
@@ -358,20 +358,20 @@
/* TODO: default "nobody" user */
if (ccf->pid.len == 0) {
- ccf->pid.len = sizeof(NGINX_PID) - 1;
- ccf->pid.data = NGINX_PID;
- ccf->newpid.len = sizeof(NGINX_NEWPID) - 1;
- ccf->newpid.data = NGINX_NEWPID;
+ ccf->pid.len = sizeof(NGX_PID_PATH) - 1;
+ ccf->pid.data = NGX_PID_PATH;
+ ccf->newpid.len = sizeof(NGX_PID_PATH NGX_NEWPID_EXT) - 1;
+ ccf->newpid.data = NGX_PID_PATH NGX_NEWPID_EXT;
} else {
- ccf->newpid.len = ccf->pid.len + sizeof(NGINX_NEWPID_EXT);
+ ccf->newpid.len = ccf->pid.len + sizeof(NGX_NEWPID_EXT);
if (!(ccf->newpid.data = ngx_palloc(cycle->pool, ccf->newpid.len))) {
return NGX_CONF_ERROR;
}
ngx_memcpy(ngx_cpymem(ccf->newpid.data, ccf->pid.data, ccf->pid.len),
- NGINX_NEWPID_EXT, sizeof(NGINX_NEWPID_EXT));
+ NGX_NEWPID_EXT, sizeof(NGX_NEWPID_EXT));
}
#endif
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 7d75537..ba59c12 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -3,14 +3,9 @@
#define NGINX_VER "nginx/0.0.3"
-#define NGINX_CONF (u_char *) "nginx.conf"
-#define NGINX_PID "nginx.pid"
-#define NGINX_NEWPID_EXT ".newbin"
-#define NGINX_NEWPID NGINX_PID NGINX_NEWPID_EXT
#define NGINX_VAR "NGINX"
-
-extern ngx_module_t ngx_core_module;
+#define NGX_NEWPID_EXT ".newbin"
#endif /* _NGINX_H_INCLUDED_ */
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c
index bb05b72..1a29eb0 100644
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -546,6 +546,10 @@
value = cf->args->elts;
+ if (value[1].data[0] == '/') {
+ return ngx_conf_parse(cf, &value[1]);
+ }
+
file.len = cf->cycle->root.len + value[1].len;
if (!(file.data = ngx_palloc(cf->pool, file.len + 1))) {
return NGX_CONF_ERROR;
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 989973a..5a19f30 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -24,7 +24,6 @@
ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
{
void *rv;
- u_char *root;
ngx_uint_t i, n, failed;
ngx_log_t *log;
ngx_conf_t conf;
@@ -34,7 +33,6 @@
ngx_open_file_t *file;
ngx_listening_t *ls, *nls;
ngx_core_module_t *module;
- char cwd[NGX_MAX_PATH + 1];
log = old_cycle->log;
@@ -51,42 +49,8 @@
cycle->log = log;
cycle->old_cycle = old_cycle;
cycle->conf_file = old_cycle->conf_file;
-
-
- for (i = cycle->conf_file.len; i > 0; i--) {
- if (cycle->conf_file.data[i] == '/') {
- break;
- }
- }
-
- if (i == 0 && cycle->conf_file.data[i] != '/') {
- if (ngx_getcwd(cwd, NGX_MAX_PATH) == 0) {
- ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
- ngx_getcwd_n " failed");
- ngx_destroy_pool(pool);
- return NULL;
- }
-
- for ( /* void */; i < NGX_MAX_PATH && cwd[i]; i++) /* void */;
- cwd[i] = '/';
- cwd[i + 1] = '\0';
-
- root = (u_char *) cwd;
-
- } else {
- root = cycle->conf_file.data;
- }
-
- cycle->root.len = ++i;
- cycle->root.data = ngx_palloc(pool, ++i);
- if (cycle->root.data == NULL) {
- ngx_destroy_pool(pool);
- return NULL;
- }
-
- ngx_cpystrn(cycle->root.data, root, i);
-
- ngx_log_error(NGX_LOG_INFO, log, 0, "root: %s", cycle->root.data);
+ cycle->root.len = sizeof(NGX_PREFIX) - 1;
+ cycle->root.data = (u_char *) NGX_PREFIX;
n = old_cycle->pathes.nelts ? old_cycle->pathes.nelts : 10;
@@ -472,12 +436,13 @@
ngx_int_t ngx_create_pidfile(ngx_cycle_t *cycle, ngx_cycle_t *old_cycle)
{
+ ngx_uint_t trunc;
size_t len;
u_char *name, pid[NGX_INT64_LEN + 1];
ngx_file_t file;
ngx_core_conf_t *ccf, *old_ccf;
- if (old_cycle && old_cycle->conf_ctx == NULL) {
+ if (!ngx_test_config && old_cycle && old_cycle->conf_ctx == NULL) {
/*
* do not create the pid file in the first ngx_init_cycle() call
@@ -489,7 +454,7 @@
ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
- if (old_cycle) {
+ if (!ngx_test_config && old_cycle) {
old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
ngx_core_module);
@@ -506,8 +471,10 @@
file.name = (ngx_inherited && getppid() > 1) ? ccf->newpid : ccf->pid;
file.log = cycle->log;
+ trunc = ngx_test_config ? 0: NGX_FILE_TRUNCATE;
+
file.fd = ngx_open_file(file.name.data, NGX_FILE_RDWR,
- NGX_FILE_CREATE_OR_OPEN|NGX_FILE_TRUNCATE);
+ NGX_FILE_CREATE_OR_OPEN|trunc);
if (file.fd == NGX_INVALID_FILE) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
@@ -515,8 +482,10 @@
return NGX_ERROR;
}
- if (ngx_write_file(&file, pid, len, 0) == NGX_ERROR) {
- return NGX_ERROR;
+ if (!ngx_test_config) {
+ if (ngx_write_file(&file, pid, len, 0) == NGX_ERROR) {
+ return NGX_ERROR;
+ }
}
if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
diff --git a/src/http/modules/ngx_http_chunked_filter.c b/src/http/modules/ngx_http_chunked_filter.c
index 3cd6ddd..70e0fcd 100644
--- a/src/http/modules/ngx_http_chunked_filter.c
+++ b/src/http/modules/ngx_http_chunked_filter.c
@@ -59,15 +59,14 @@
u_char *chunk;
size_t size, len;
ngx_hunk_t *h;
- ngx_chain_t *out, *cl, *tl, **ll;
+ ngx_chain_t out, tail, *cl, *tl, **ll;
if (in == NULL || !r->chunked) {
return ngx_http_next_body_filter(r, in);
}
- ngx_test_null(out, ngx_alloc_chain_link(r->pool), NGX_ERROR);
- out->hunk = NULL;
- ll = &out->next;
+ out.hunk = NULL;
+ ll = &out.next;
size = 0;
cl = in;
@@ -99,11 +98,10 @@
h->pos = chunk;
h->last = chunk + len;
- out->hunk = h;
+ out.hunk = h;
}
if (cl->hunk->type & NGX_HUNK_LAST) {
-
ngx_test_null(h, ngx_calloc_hunk(r->pool), NGX_ERROR);
h->type = NGX_HUNK_IN_MEMORY|NGX_HUNK_MEMORY|NGX_HUNK_LAST;
h->pos = (u_char *) CRLF "0" CRLF CRLF;
@@ -112,16 +110,17 @@
cl->hunk->type &= ~NGX_HUNK_LAST;
if (size == 0) {
- out->hunk = h;
- out->next = NULL;
+ h->pos += 2;
+ out.hunk = h;
+ out.next = NULL;
- return ngx_http_next_body_filter(r, out);
+ return ngx_http_next_body_filter(r, &out);
}
} else {
if (size == 0) {
*ll = NULL;
- return ngx_http_next_body_filter(r, out->next);
+ return ngx_http_next_body_filter(r, out.next);
}
ngx_test_null(h, ngx_calloc_hunk(r->pool), NGX_ERROR);
@@ -130,10 +129,11 @@
h->last = h->pos + 2;
}
- ngx_alloc_link_and_set_hunk(tl, h, r->pool, NGX_ERROR);
- *ll = tl;
+ tail.hunk = h;
+ tail.next = NULL;
+ *ll = &tail;
- return ngx_http_next_body_filter(r, out);
+ return ngx_http_next_body_filter(r, &out);
}