mirror of
https://github.com/nginx/nginx.git
synced 2024-12-22 15:13:28 -06:00
use uname(2) instead of /proc/, this allows to run nginx in chroot
This commit is contained in:
parent
e430ab4d55
commit
4724f2b17c
@ -50,6 +50,7 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#include <crypt.h>
|
#include <crypt.h>
|
||||||
|
#include <sys/utsname.h> /* uname() */
|
||||||
|
|
||||||
|
|
||||||
#include <ngx_auto_config.h>
|
#include <ngx_auto_config.h>
|
||||||
|
@ -8,12 +8,8 @@
|
|||||||
#include <ngx_core.h>
|
#include <ngx_core.h>
|
||||||
|
|
||||||
|
|
||||||
static ngx_int_t ngx_linux_procfs(char *name, char *buf, size_t len,
|
u_char ngx_linux_kern_ostype[50];
|
||||||
ngx_log_t *log);
|
u_char ngx_linux_kern_osrelease[50];
|
||||||
|
|
||||||
|
|
||||||
char ngx_linux_kern_ostype[50];
|
|
||||||
char ngx_linux_kern_osrelease[50];
|
|
||||||
|
|
||||||
int ngx_linux_rtsig_max;
|
int ngx_linux_rtsig_max;
|
||||||
|
|
||||||
@ -38,23 +34,18 @@ ngx_os_specific_init(ngx_log_t *log)
|
|||||||
int name[2];
|
int name[2];
|
||||||
size_t len;
|
size_t len;
|
||||||
ngx_err_t err;
|
ngx_err_t err;
|
||||||
|
struct utsname u;
|
||||||
|
|
||||||
if (ngx_linux_procfs("/proc/sys/kernel/ostype",
|
if (uname(&u) == -1) {
|
||||||
ngx_linux_kern_ostype,
|
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "uname() failed");
|
||||||
sizeof(ngx_linux_kern_ostype), log)
|
|
||||||
== -1)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_linux_procfs("/proc/sys/kernel/osrelease",
|
(void) ngx_cpystrn(ngx_linux_kern_ostype, (u_char *) u.sysname,
|
||||||
ngx_linux_kern_osrelease,
|
sizeof(ngx_linux_kern_ostype));
|
||||||
sizeof(ngx_linux_kern_osrelease), log)
|
|
||||||
== -1)
|
|
||||||
{
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
(void) ngx_cpystrn(ngx_linux_kern_osrelease, (u_char *) u.release,
|
||||||
|
sizeof(ngx_linux_kern_osrelease));
|
||||||
|
|
||||||
name[0] = CTL_KERN;
|
name[0] = CTL_KERN;
|
||||||
name[1] = KERN_RTSIGMAX;
|
name[1] = KERN_RTSIGMAX;
|
||||||
@ -89,36 +80,3 @@ ngx_os_specific_status(ngx_log_t *log)
|
|||||||
ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d",
|
ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d",
|
||||||
ngx_linux_rtsig_max);
|
ngx_linux_rtsig_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static ngx_int_t
|
|
||||||
ngx_linux_procfs(char *name, char *buf, size_t len, ngx_log_t *log)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
ngx_fd_t fd;
|
|
||||||
|
|
||||||
fd = open(name, O_RDONLY);
|
|
||||||
|
|
||||||
if (fd == NGX_INVALID_FILE) {
|
|
||||||
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
|
|
||||||
"open(\"%s\") failed", name);
|
|
||||||
|
|
||||||
return NGX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
n = read(fd, buf, len);
|
|
||||||
|
|
||||||
if (n == -1) {
|
|
||||||
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
|
|
||||||
"read(\"%s\") failed", name);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (buf[n - 1] == '\n') {
|
|
||||||
buf[--n] = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ngx_close_file(fd);
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user