Index | Thread | Search

From:
Eric <eobsdbox@gmail.com>
Subject:
PATCH: use sysconf(_SC_PAGESIZE) in bin/ps
To:
tech@openbsd.org
Date:
Tue, 3 Feb 2026 22:11:12 -0500

Download raw body.

Thread
Hello,

The current version of ps(1) still uses the obsolete getpagesize()
function. Following the recommendation in getpagesize(3), this patch
migrates the code to sysconf(_SC_PAGESIZE).

I have updated the 'pagesize' variable to a 'long' to match the
return type of sysconf() and ensure consistency in memory
calculations within the pgtok() macro.

Tested on OpenBSD 7.8 x86_64.

Index: bin/ps/extern.h
--- bin/ps/extern.h
+++ bin/ps/extern.h
@@ -38,7 +38,7 @@

 extern struct varent var[];
 extern int eval;
-extern int pagesize;
+extern long pagesize;
 extern int termwidth;
 extern int totwidth;

Index: bin/ps/ps.c
--- bin/ps/ps.c
+++ bin/ps/ps.c
@@ -58,7 +58,7 @@

 struct varent var[];
 int    eval;
-int    pagesize;
+long    pagesize;
 int    termwidth;
 int    totwidth;
 int    needenv, needuser, oneline;
@@ -204,7 +204,9 @@
     if (setlocale(LC_CTYPE, "") == NULL)
         warnx("invalid locale");

-    pagesize = getpagesize();
+    pagesize = sysconf(_SC_PAGESIZE);
+    if (pagesize == -1)
+        err(1, "sysconf _SC_PAGESIZE");

     while ((ch = getopt(argc, argv, getoptstr)) != -1) {
         switch (ch) {