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