procps/procps-3.2.8-read-sysctls-also-from-boot-sysctl.conf-kernelversion.diff

49 lines
1.3 KiB
Diff
Raw Normal View History

From 0925e01c49599c541ea3d40a7e30a313bb77efce Mon Sep 17 00:00:00 2001
From: Ludwig Nussel <ludwig.nussel@suse.de>
Date: Tue, 17 May 2011 16:35:18 +0200
Subject: [PATCH 3/3] read sysctls also from /boot/sysctl.conf-$kernelversion
---
sysctl.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/sysctl.c b/sysctl.c
index 1867777..a41539b 100644
--- a/sysctl.c
+++ b/sysctl.c
@@ -27,6 +27,7 @@
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
+#include <sys/utsname.h>
#include <dirent.h>
#include <string.h>
#include <errno.h>
@@ -510,6 +511,7 @@ static int sortpairs(const void* A, const void* B)
static int PreloadSystem(void) {
unsigned di, i;
+ struct utsname uts;
const char* dirs[] = {
"/run/sysctl.d",
"/etc/sysctl.d",
@@ -556,6 +558,15 @@ static int PreloadSystem(void) {
qsort(cfgs, ncfgs, sizeof(struct cfg*), sortpairs);
+ if (uname(&uts) == 0) {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "/boot/sysctl.conf-%s", uts.release);
+ if (access(buf, R_OK) == 0) {
+ printf("* Applying %s ...\n", buf);
+ Preload(buf);
+ }
+ }
+
for (i = 0; i < ncfgs; ++i) {
if (!Quiet)
printf("* Applying %s ...\n", cfgs[i]->value);
--
1.7.3.4