154 lines
5.4 KiB
Diff
154 lines
5.4 KiB
Diff
diff -up ./NEWS.ori ./NEWS
|
|
--- ./NEWS.ori 2022-08-15 11:59:35.929714848 +0200
|
|
+++ ./NEWS 2022-08-15 12:00:12.892937479 +0200
|
|
@@ -1,4 +1,14 @@
|
|
procps-ng-NEXT
|
|
+<<<<<<< HEAD
|
|
+=======
|
|
+ * library
|
|
+ Re-add elogind support merge #151
|
|
+ * ps: threads again display when -L is used with -q issue #234
|
|
+ * ps: proper aix format string behavior was restored
|
|
+ * sysctl: print dotted keys again
|
|
+
|
|
+procps-ng-4.0.0
|
|
+>>>>>>> b159c198 (sysctl: print dotted keys again)
|
|
---------------
|
|
* Rename pwait to pidwait
|
|
|
|
diff -up ./sysctl.c.ori ./sysctl.c
|
|
--- ./sysctl.c.ori 2022-08-15 11:59:35.934714878 +0200
|
|
+++ ./sysctl.c 2022-08-15 12:00:12.893937485 +0200
|
|
@@ -152,7 +152,7 @@ static SysctlSetting *setting_new(
|
|
strcat(path + proc_len, key+1);
|
|
else
|
|
strcat(path + proc_len, key);
|
|
- /* change . to / */
|
|
+ /* change . to / for path */
|
|
slashdot(path + proc_len, '.', '/');
|
|
|
|
s = xmalloc(sizeof(SysctlSetting));
|
|
@@ -510,7 +510,8 @@ static int WriteSetting(
|
|
|
|
int rc = EXIT_SUCCESS;
|
|
FILE *fp;
|
|
- struct stat ts;
|
|
+ struct stat ts;
|
|
+ char *dotted_key;
|
|
|
|
if (!key || !path)
|
|
return rc;
|
|
@@ -523,13 +524,22 @@ static int WriteSetting(
|
|
return rc;
|
|
}
|
|
|
|
- if ((ts.st_mode & S_IWUSR) == 0) {
|
|
- xwarn(_("setting key \"%s\""), key);
|
|
+ /* Convert the globbed path into a dotted key */
|
|
+ if ( (dotted_key = strdup(path + strlen(PROC_PATH))) == NULL) {
|
|
+ xerrx(EXIT_FAILURE, _("strdup key"));
|
|
+ return EXIT_FAILURE;
|
|
+ }
|
|
+ slashdot(dotted_key, '/', '.');
|
|
+
|
|
+ if ((ts.st_mode & S_IWUSR) == 0) {
|
|
+ xwarn(_("setting key \"%s\""), dotted_key);
|
|
+ free(dotted_key);
|
|
return rc;
|
|
}
|
|
|
|
- if (S_ISDIR(ts.st_mode)) {
|
|
- xwarn(_("setting key \"%s\""), key);
|
|
+ if (S_ISDIR(ts.st_mode)) {
|
|
+ xwarn(_("setting key \"%s\""), dotted_key);
|
|
+ free(dotted_key);
|
|
return rc;
|
|
}
|
|
|
|
@@ -539,7 +549,7 @@ static int WriteSetting(
|
|
case ENOENT:
|
|
if (!IgnoreError) {
|
|
xwarnx(_("\"%s\" is an unknown key%s"),
|
|
- key, (ignore_failure?_(", ignoring"):""));
|
|
+ dotted_key, (ignore_failure?_(", ignoring"):""));
|
|
if (!ignore_failure)
|
|
rc = EXIT_FAILURE;
|
|
}
|
|
@@ -548,11 +558,11 @@ static int WriteSetting(
|
|
case EROFS:
|
|
case EACCES:
|
|
xwarnx(_("permission denied on key \"%s\"%s"),
|
|
- key, (ignore_failure?_(", ignoring"):""));
|
|
+ dotted_key, (ignore_failure?_(", ignoring"):""));
|
|
break;
|
|
default:
|
|
xwarn(_("setting key \"%s\"%s"),
|
|
- key, (ignore_failure?_(", ignoring"):""));
|
|
+ dotted_key, (ignore_failure?_(", ignoring"):""));
|
|
break;
|
|
}
|
|
if (!ignore_failure && errno != ENOENT)
|
|
@@ -561,7 +571,7 @@ static int WriteSetting(
|
|
if (0 < fprintf(fp, "%s\n", value))
|
|
rc = EXIT_SUCCESS;
|
|
if (close_stream(fp) != 0) {
|
|
- xwarn(_("setting key \"%s\""), path);
|
|
+ xwarn(_("setting key \"%s\""), dotted_key);
|
|
return rc;
|
|
}
|
|
}
|
|
@@ -571,7 +581,7 @@ static int WriteSetting(
|
|
printf("%s\n", value);
|
|
} else {
|
|
if (PrintName) {
|
|
- printf("%s = %s\n", path, value);
|
|
+ printf("%s = %s\n", dotted_key, value);
|
|
} else {
|
|
if (PrintNewline)
|
|
printf("%s\n", value);
|
|
@@ -580,6 +590,7 @@ static int WriteSetting(
|
|
}
|
|
}
|
|
}
|
|
+ free(dotted_key);
|
|
return rc;
|
|
}
|
|
|
|
diff -up ./testsuite/sysctl_slash_test.conf.ori ./testsuite/sysctl_slash_test.conf
|
|
--- ./testsuite/sysctl_slash_test.conf.ori 2022-08-15 12:00:12.894937491 +0200
|
|
+++ ./testsuite/sysctl_slash_test.conf 2022-08-15 12:00:12.893937485 +0200
|
|
@@ -0,0 +1 @@
|
|
+kernel/hostname = procps-test
|
|
diff -up ./testsuite/sysctl.test/sysctl_write.exp.ori ./testsuite/sysctl.test/sysctl_write.exp
|
|
--- ./testsuite/sysctl.test/sysctl_write.exp.ori 2022-08-15 11:59:35.934714878 +0200
|
|
+++ ./testsuite/sysctl.test/sysctl_write.exp 2022-08-15 12:00:12.893937485 +0200
|
|
@@ -3,11 +3,19 @@ set sysctl ${topdir}sysctl
|
|
|
|
set test "sysctl write from command line"
|
|
spawn $sysctl --dry-run kernel.hostname=procps-test
|
|
-expect_pass "$test" "/proc/sys/kernel/hostname = procps-test"
|
|
+expect_pass "$test" "kernel.hostname = procps-test"
|
|
+
|
|
+set test "sysctl write from command line using slash"
|
|
+spawn $sysctl --dry-run kernel/hostname=procps-test
|
|
+expect_pass "$test" "kernel.hostname = procps-test"
|
|
|
|
set test "sysctl write from configuration file"
|
|
spawn $sysctl --dry-run -f ${topdir}testsuite/sysctl_glob_test.conf
|
|
-expect_pass "$test" "/proc/sys/fs/protected_fifos = 2\\s+/proc/sys/fs/protected_symlinks = 2\\s+/proc/sys/fs/protected_hardlinks = 1"
|
|
+expect_pass "$test" "fs.protected_fifos = 2\\s+fs.protected_symlinks = 2\\s+fs.protected_hardlinks = 1"
|
|
+
|
|
+set test "sysctl write from file with slashes"
|
|
+spawn $sysctl --dry-run -f ${topdir}testsuite/sysctl_slash_test.conf
|
|
+expect_pass "$test" "kernel.hostname = procps-test"
|
|
|
|
set hostname_file "/proc/sys/kernel/hostname"
|
|
if {[file exists ${hostname_file}]} {
|
|
@@ -25,5 +33,5 @@ if {[file exists ${hostname_file}]} {
|
|
expect_spawn_retval "$test" 0
|
|
}
|
|
} else {
|
|
- unsupported "sysctl write: hostname file doe not exist"
|
|
+ unsupported "sysctl write: hostname file does not exist"
|
|
}
|