about summary refs log tree commit diff
path: root/src/minutils
diff options
context:
space:
mode:
Diffstat (limited to 'src/minutils')
-rw-r--r--src/minutils/s6-devd.c7
-rw-r--r--src/minutils/s6-logwatch.c21
-rw-r--r--src/minutils/s6-ps.c26
-rw-r--r--src/minutils/s6-ps.h46
-rw-r--r--src/minutils/s6-swapoff.c5
-rw-r--r--src/minutils/s6-uevent-listener.c4
-rw-r--r--src/minutils/s6-uevent-spawner.c11
-rw-r--r--src/minutils/s6-umount.c3
-rw-r--r--src/minutils/s6ps_grcache.c15
-rw-r--r--src/minutils/s6ps_otree.c2
-rw-r--r--src/minutils/s6ps_pfield.c104
-rw-r--r--src/minutils/s6ps_pwcache.c11
-rw-r--r--src/minutils/s6ps_statparse.c39
-rw-r--r--src/minutils/s6ps_ttycache.c41
-rw-r--r--src/minutils/s6ps_wchan.c27
15 files changed, 192 insertions, 170 deletions
diff --git a/src/minutils/s6-devd.c b/src/minutils/s6-devd.c
index 74f2d41..58508a5 100644
--- a/src/minutils/s6-devd.c
+++ b/src/minutils/s6-devd.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/uint.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/strerr2.h>
@@ -11,7 +12,8 @@
 
 static inline int check_targ (char const *s)
 {
-  unsigned int t = 0, pos = 0 ;
+  size_t pos = 0 ;
+  unsigned int t = 0 ;
   pos += uint_scan(s + pos, &t) ;
   if (s[pos] && s[pos++] != ':') return 0 ;
   if (!t) return 1 ;
@@ -50,7 +52,8 @@ int main (int argc, char const *const *argv, char const *const *envp)
   if (!argc) strerr_dieusage(100, USAGE) ;
 
   {
-    unsigned int m = 0, pos = 0 ;
+    size_t pos = 0 ;
+    unsigned int m = 0 ;
     char fmt[UINT_FMT * 3] ;
     char const *newargv[argc + 15] ;
     newargv[m++] = S6_LINUX_UTILS_BINPREFIX "s6-uevent-listener" ;
diff --git a/src/minutils/s6-logwatch.c b/src/minutils/s6-logwatch.c
index a2c493d..66ff442 100644
--- a/src/minutils/s6-logwatch.c
+++ b/src/minutils/s6-logwatch.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <errno.h>
 #include <unistd.h>
 #include <signal.h>
@@ -36,15 +37,15 @@ static void X (void)
   strerr_diefu1x(101, "follow file state changes (race condition triggered). Sorry.") ;
 }
 
-static unsigned long nbcat (int fdcurrent)
+static size_t nbcat (int fdcurrent)
 {
   char buf[N+1] ;
   buffer b = BUFFER_INIT(&buffer_read, fdcurrent, buf, N+1) ;
   siovec_t v[2] ;
-  unsigned long bytes = 0 ;
+  size_t bytes = 0 ;
   for (;;)
   {
-    int r = sanitize_read(buffer_fill(&b)) ;
+    ssize_t r = sanitize_read(buffer_fill(&b)) ;
     if (!r) break ;
     if (r < 0)
     {
@@ -85,8 +86,8 @@ int main (int argc, char const *const *argv)
   if (chdir(dir) < 0) strerr_diefu2sys(111, "chdir to ", dir) ;
   {
     iopause_fd x[1] = { { -1, IOPAUSE_READ, 0 } } ;
+    size_t pos = 0 ;
     int fdcurrent = -1 ;
-    unsigned long pos = 0 ;
     int w ;
     bstate_t state = B_TAILING ;
     x[0].fd = inotify_init() ;
@@ -103,20 +104,20 @@ int main (int argc, char const *const *argv)
 
     for (;;)
     {
-      int r ;
+      int rr ;
       if (!bufalloc_flush(bufalloc_1)) strerr_diefu1sys(111, "write to stdout") ;
-      r = iopause(x, 1, 0, 0) ;
-      if (r < 0) strerr_diefu1sys(111, "iopause") ;
+      rr = iopause(x, 1, 0, 0) ;
+      if (rr < 0) strerr_diefu1sys(111, "iopause") ;
       if (x[0].revents & IOPAUSE_READ)
       {
         char iebuf[IESIZE] ;
         while (bufalloc_len(bufalloc_1) < maxlen)
         {
-          unsigned int i = 0 ;
-          r = sanitize_read(fd_read(x[0].fd, iebuf, IESIZE)) ;
+          size_t i = 0 ;
+          ssize_t r = sanitize_read(fd_read(x[0].fd, iebuf, IESIZE)) ;
           if (r < 0) strerr_diefu1sys(111, "read from inotify fd") ;
           if (!r) break ;
-          while (i < (unsigned int)r)
+          while (i < (size_t)r)
           {
             struct inotify_event *ie = (struct inotify_event *)(iebuf + i) ;
             if ((ie->wd != w) || !ie->len || str_diff(ie->name, "current")) goto cont ;
diff --git a/src/minutils/s6-ps.c b/src/minutils/s6-ps.c
index f4f06bd..2b435bc 100644
--- a/src/minutils/s6-ps.c
+++ b/src/minutils/s6-ps.c
@@ -49,7 +49,7 @@
 
 void *left_dtok (unsigned int d, void *x)
 {
-  return (void *)&genalloc_s(diuint, (genalloc *)x)[d].left ;
+  return (void *)&genalloc_s(dius_t, (genalloc *)x)[d].left ;
 }
 
 int uint_cmp (void const *a, void const *b, void *x)
@@ -81,7 +81,7 @@ static inline unsigned int fieldscan (char const *s, pfield_t *list, uint64 *fbf
   int cont = 1 ;
   for (; cont ; n++)
   {
-    unsigned int len = str_chr(s, ',') ;
+    size_t len = str_chr(s, ',') ;
     register pfield_t i = 0 ;
     if (!len) strerr_dief3x(100, "invalid", " (empty)", " field for -o option") ;
     if (!s[len]) cont = 0 ;
@@ -103,9 +103,9 @@ static inline unsigned int fieldscan (char const *s, pfield_t *list, uint64 *fbf
   return n ;
 }
 
-static int slurpit (unsigned int dirfd, stralloc *data, char const *buf, char const *what, unsigned int *len)
+static int slurpit (unsigned int dirfd, stralloc *data, char const *buf, char const *what, size_t *len)
 {
-  unsigned int start = data->len ;
+  size_t start = data->len ;
   int fd = open_readat(dirfd, what) ;
   if (fd < 0) return 0 ;
   if (!slurp(data, fd)) strerr_diefu4sys(111, "slurp ", buf, "/", what) ;
@@ -119,10 +119,10 @@ int main (int argc, char const *const *argv)
   genalloc pscans = GENALLOC_ZERO ; /* array of pscan_t */
   pfield_t fieldlist[PFIELD_PHAIL] = { PFIELD_USER, PFIELD_PID, PFIELD_TTY, PFIELD_STATE, PFIELD_START, PFIELD_ARGS } ;
   uint64 fbf = (1 << PFIELD_USER) | (1 << PFIELD_PID) | (1 << PFIELD_TTY) | (1 << PFIELD_STATE) | (1 << PFIELD_START) | (1 << PFIELD_ARGS) ;
-  unsigned int mypos = 0 ;
+  size_t mypos = 0 ;
   unsigned int nfields = 6 ;
   pscan_t *p ;
-  unsigned int n ;
+  size_t n ;
   unsigned int spacing = 2 ;
   int flagtree = 0 ;
   char const *wchanfile = 0 ;
@@ -211,7 +211,7 @@ int main (int argc, char const *const *argv)
 
   {
     int needstatdir = !!(fbf & ((1 << PFIELD_USER) | (1 << PFIELD_GROUP))) ;
-    unsigned int mypid = getpid() ;
+    pid_t mypid = getpid() ;
     DIR *dir = opendir("/proc") ;
     direntry *d ;
     char buf[25] = "/proc/" ;
@@ -220,11 +220,13 @@ int main (int argc, char const *const *argv)
     for (;;)
     {
       pscan_t pscan = PSCAN_ZERO ;
+      uint64 u ;
       int dirfd ;
       errno = 0 ;
       d = readdir(dir) ;
       if (!d) break ;
-      if (!uint0_scan(d->d_name, &pscan.pid)) continue ;
+      if (!uint640_scan(d->d_name, &u)) continue ;
+      pscan.pid = u ;
       strcpy(buf+6, d->d_name) ;
       dirfd = open_read(buf) ;
       if (dirfd < 0) continue ;
@@ -320,9 +322,9 @@ int main (int argc, char const *const *argv)
     }
 
     {
-      unsigned int fmtpos[n][nfields] ;
-      unsigned int fmtlen[n][nfields] ;
-      unsigned int maxlen[nfields] ;
+      size_t fmtpos[n][nfields] ;
+      size_t fmtlen[n][nfields] ;
+      size_t maxlen[nfields] ;
       unsigned int maxspaces = 0 ;
       for (i = 0 ; i < nfields ; i++) maxlen[i] = str_len(s6ps_fieldheaders[fieldlist[i]]) ;
       for (i = 0 ; i < n ; i++)
@@ -349,7 +351,7 @@ int main (int argc, char const *const *argv)
         for (i = 0 ; i < nfields ; i++)
         {
           register unsigned int rightformatted = !!(((uint64)1 << fieldlist[i]) & RIGHTFORMATTED) ;
-          register unsigned int len = str_len(s6ps_fieldheaders[fieldlist[i]]) ;
+          register size_t len = str_len(s6ps_fieldheaders[fieldlist[i]]) ;
           if (rightformatted && (buffer_put(buffer_1, spaces, maxlen[i] - len) < (int)(maxlen[i] - len)))
             goto nowrite ;
           if (buffer_put(buffer_1, s6ps_fieldheaders[fieldlist[i]], len) < (int)len)
diff --git a/src/minutils/s6-ps.h b/src/minutils/s6-ps.h
index 3e7d84a..3e5508c 100644
--- a/src/minutils/s6-ps.h
+++ b/src/minutils/s6-ps.h
@@ -4,12 +4,22 @@
 #define _S6PS_H_
 
 #include <sys/types.h>
-#include <skalibs/uint32.h>
+#include <stdint.h>
 #include <skalibs/uint64.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/tai.h>
 #include <skalibs/avltreen.h>
 
+
+typedef struct dius_s dius_t, *dius_t_ref ;
+struct dius_s
+{
+  unsigned int left ;
+  size_t right ;
+} ;
+#define DIUS_ZERO { .left = 0, .right = 0 }
+
+
  /* pfield: the output fields */
 
 typedef enum pfield_e pfield_t, *pfield_t_ref ;
@@ -60,20 +70,20 @@ typedef struct pscan_s pscan_t, *pscan_t_ref ;
 struct pscan_s
 {
   stralloc data ;
-  unsigned int pid ;
+  pid_t pid ;
   signed int height ;
-  unsigned int statlen ;
-  unsigned int commlen ;
-  unsigned int cmdlen ;
-  unsigned int envlen ;
+  size_t statlen ;
+  size_t commlen ;
+  size_t cmdlen ;
+  size_t envlen ;
   uid_t uid ;
   gid_t gid ;
-  uint32 ppid ;
+  pid_t ppid ;
   unsigned int state ;
-  uint32 pgrp ;
-  uint32 session ;
-  uint32 ttynr ;
-  int tpgid ;
+  pid_t pgrp ;
+  pid_t session ;
+  dev_t ttynr ;
+  pid_t tpgid ;
   uint64 utime ;
   uint64 stime ;
   uint64 cutime ;
@@ -86,9 +96,9 @@ struct pscan_s
   uint64 rss ;
   uint64 rsslim ;
   uint64 wchan ;
-  uint32 cpuno ;
-  uint32 rtprio ;
-  uint32 policy ;
+  uint32_t cpuno ;
+  uint32_t rtprio ;
+  uint32_t policy ;
 } ;
 
 #define PSCAN_ZERO \
@@ -130,7 +140,7 @@ extern void s6ps_otree (pscan_t *, unsigned int, avltreen *, unsigned int *) ;
 
 extern int s6ps_compute_boottime (pscan_t *, unsigned int) ;
 
-typedef int pfieldfmt_func_t (pscan_t *, unsigned int *, unsigned int *) ;
+typedef int pfieldfmt_func_t (pscan_t *, size_t *, size_t *) ;
 typedef pfieldfmt_func_t *pfieldfmt_func_t_ref ;
 
 extern pfieldfmt_func_t_ref *s6ps_pfield_fmt ;
@@ -139,13 +149,13 @@ extern void *left_dtok (unsigned int, void *) ;
 extern int uint_cmp (void const *, void const *, void *) ;
 extern int s6ps_pwcache_init (void) ;
 extern void s6ps_pwcache_finish (void) ;
-extern int s6ps_pwcache_lookup (stralloc *, unsigned int) ;
+extern int s6ps_pwcache_lookup (stralloc *, uid_t) ;
 extern int s6ps_grcache_init (void) ;
 extern void s6ps_grcache_finish (void) ;
-extern int s6ps_grcache_lookup (stralloc *, unsigned int) ;
+extern int s6ps_grcache_lookup (stralloc *, gid_t) ;
 extern int s6ps_ttycache_init (void) ;
 extern void s6ps_ttycache_finish (void) ;
-extern int s6ps_ttycache_lookup (stralloc *, uint32) ;
+extern int s6ps_ttycache_lookup (stralloc *, dev_t) ;
 extern int s6ps_wchan_init (char const *) ;
 extern void s6ps_wchan_finish (void) ;
 extern int s6ps_wchan_lookup (stralloc *, uint64) ;
diff --git a/src/minutils/s6-swapoff.c b/src/minutils/s6-swapoff.c
index 1067040..80df1ec 100644
--- a/src/minutils/s6-swapoff.c
+++ b/src/minutils/s6-swapoff.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <errno.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/buffer.h>
@@ -12,7 +13,7 @@ extern int swapoff (char const *) ;
 
 #define USAGE "s6-swapoff device <or> s6-swapoff -a"
 
-#define BUFSIZE 4096
+#define BUFSIZE 4095
 
 static int swapoffall ( )
 {
@@ -27,7 +28,7 @@ static int swapoffall ( )
   if (skagetln(&b, &sa, '\n') < 0) strerr_diefu1sys(111, "skagetln") ;
   for (;;)
   {
-    unsigned int n ;
+    size_t n ;
     sa.len = 0 ;
     r = skagetln(&b, &sa, '\n') ;
     if (r < 0) strerr_diefu1sys(111, "skagetln") ;
diff --git a/src/minutils/s6-uevent-listener.c b/src/minutils/s6-uevent-listener.c
index f6e9c4b..d620081 100644
--- a/src/minutils/s6-uevent-listener.c
+++ b/src/minutils/s6-uevent-listener.c
@@ -36,7 +36,7 @@ static pid_t pid ;
 
 static inline int fd_recvmsg (int fd, struct msghdr *hdr)
 {
-  int r ;
+  ssize_t r ;
   do r = recvmsg(fd, hdr, MSG_DONTWAIT) ;
   while ((r == -1) && (errno == EINTR)) ;
   return r ;
@@ -110,7 +110,7 @@ static inline void handle_netlink (void)
     .msg_flags = 0
   } ;
   siovec_t v[2] ;
-  register int r ;
+  register ssize_t r ;
   buffer_wpeek(&b1, v) ;
   siovec_trunc(v, 2, siovec_len(v, 2) - 1) ;
   iovec_from_siovec(iov, v, 2) ;
diff --git a/src/minutils/s6-uevent-spawner.c b/src/minutils/s6-uevent-spawner.c
index 6ccc4ce..e6c0927 100644
--- a/src/minutils/s6-uevent-spawner.c
+++ b/src/minutils/s6-uevent-spawner.c
@@ -46,8 +46,8 @@ static inline void on_event (char const *const *argv, char const *const *envp, c
 {
   posix_spawnattr_t attr ;
   posix_spawn_file_actions_t actions ;
-  unsigned int envlen = env_len(envp) ;
-  unsigned int n = envlen + 1 + byte_count(s, len, '\0') ;
+  size_t envlen = env_len(envp) ;
+  size_t n = envlen + 1 + byte_count(s, len, '\0') ;
   pid_t mypid ;
   int e ;
   char const *v[n] ;
@@ -134,8 +134,8 @@ static inline void handle_stdin (stralloc *sa, char const *linevar, char const *
 {
   while (!pid)
   {
-    unsigned int start ;
-    register int r ;
+    size_t start ;
+    register ssize_t r ;
     if (!sa->len && linevar)
       if (!stralloc_cats(sa, linevar) || !stralloc_catb(sa, "=", 1))
         dienomem() ;
@@ -162,7 +162,8 @@ static inline void handle_stdin (stralloc *sa, char const *linevar, char const *
 
 static inline int make_ttos (char const *s)
 {
-  unsigned int tlife = 0, tterm = 0, tkill = 0, pos = 0 ;
+  size_t pos = 0 ;
+  unsigned int tlife = 0, tterm = 0, tkill = 0 ;
   pos += uint_scan(s + pos, &tlife) ;
   if (s[pos] && s[pos++] != ':') return 0 ;
   if (!tlife) return 1 ;
diff --git a/src/minutils/s6-umount.c b/src/minutils/s6-umount.c
index 966b455..31773cb 100644
--- a/src/minutils/s6-umount.c
+++ b/src/minutils/s6-umount.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <sys/mount.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/buffer.h>
@@ -28,7 +29,7 @@ static int umountall ( )
   buffer_init(&b, &buffer_read, fd, buf, BUFSIZE+1) ;
   for (;;)
   {
-    unsigned int n, p ;
+    size_t n, p ;
     if (line >= MAXLINES) strerr_dief1x(111, "/proc/mounts too big") ;
     sa.len = 0 ;
     r = skagetln(&b, &sa, '\n') ;
diff --git a/src/minutils/s6ps_grcache.c b/src/minutils/s6ps_grcache.c
index 1fe9380..9a0d133 100644
--- a/src/minutils/s6ps_grcache.c
+++ b/src/minutils/s6ps_grcache.c
@@ -4,7 +4,6 @@
 #include <grp.h>
 #include <errno.h>
 #include <skalibs/uint.h>
-#include <skalibs/diuint.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/genalloc.h>
 #include <skalibs/skamisc.h>
@@ -23,18 +22,18 @@ int s6ps_grcache_init (void)
 void s6ps_grcache_finish (void)
 {
   avltree_free(&grcache_tree) ;
-  genalloc_free(diuint, &grcache_index) ;
+  genalloc_free(dius_t, &grcache_index) ;
 }
 
-int s6ps_grcache_lookup (stralloc *sa, unsigned int gid)
+int s6ps_grcache_lookup (stralloc *sa, gid_t gid)
 {
   int wasnull = !satmp.s ;
-  diuint d = { .left = gid, .right = satmp.len } ;
+  dius_t d = { .left = (unsigned int)gid, .right = satmp.len } ;
   unsigned int i ;
   if (!avltree_search(&grcache_tree, &d.left, &i))
   {
     struct group *gr ;
-    unsigned int n = genalloc_len(diuint, &grcache_index) ;
+    unsigned int n = genalloc_len(dius_t, &grcache_index) ;
     errno = 0 ;
     gr = getgrgid(gid) ;
     if (!gr)
@@ -46,15 +45,15 @@ int s6ps_grcache_lookup (stralloc *sa, unsigned int gid)
       stralloc_catb(&satmp, ")", 2) ;
     }
     else if (!stralloc_cats(&satmp, gr->gr_name) || !stralloc_0(&satmp)) return 0 ;
-    if (!genalloc_append(diuint, &grcache_index, &d)) goto err ;
+    if (!genalloc_append(dius_t, &grcache_index, &d)) goto err ;
     if (!avltree_insert(&grcache_tree, n))
     {
-      genalloc_setlen(diuint, &grcache_index, n) ;
+      genalloc_setlen(dius_t, &grcache_index, n) ;
       goto err ;
     }
     i = n ;
   }
-  return stralloc_cats(sa, satmp.s + genalloc_s(diuint, &grcache_index)[i].right) ;
+  return stralloc_cats(sa, satmp.s + genalloc_s(dius_t, &grcache_index)[i].right) ;
  err:
   {
     register int e = errno ;
diff --git a/src/minutils/s6ps_otree.c b/src/minutils/s6ps_otree.c
index b5f72b4..447906e 100644
--- a/src/minutils/s6ps_otree.c
+++ b/src/minutils/s6ps_otree.c
@@ -4,6 +4,8 @@
 #include <skalibs/avltreen.h>
 #include "s6-ps.h"
 
+/* XXX: need to change all the types if the libdatastruct API changes */
+
 typedef struct ptreeiter_s ptreeiter_t, *ptreeiter_t_ref ;
 struct ptreeiter_s
 {
diff --git a/src/minutils/s6ps_pfield.c b/src/minutils/s6ps_pfield.c
index 3a960a4..ded0b41 100644
--- a/src/minutils/s6ps_pfield.c
+++ b/src/minutils/s6ps_pfield.c
@@ -94,7 +94,7 @@ char const *const *s6ps_opttable = opttable ;
 
 static tain_t boottime = TAIN_EPOCH ;
 
-static int fmt_32 (pscan_t *p, unsigned int *pos, unsigned int *len, uint32 u)
+static int fmt_32 (pscan_t *p, size_t *pos, size_t *len, uint32 u)
 {
   if (!stralloc_readyplus(&p->data, UINT32_FMT)) return 0 ;
   *pos = p->data.len ;
@@ -103,7 +103,7 @@ static int fmt_32 (pscan_t *p, unsigned int *pos, unsigned int *len, uint32 u)
   return 1 ;
 }
 
-static int fmt_64 (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 u)
+static int fmt_64 (pscan_t *p, size_t *pos, size_t *len, uint64 u)
 {                                                          
   if (!stralloc_readyplus(&p->data, UINT64_FMT)) return 0 ;
   *pos = p->data.len ;
@@ -112,7 +112,7 @@ static int fmt_64 (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 u)
   return 1 ;
 }                                                          
 
-static int fmt_i (pscan_t *p, unsigned int *pos, unsigned int *len, int d)
+static int fmt_i (pscan_t *p, size_t *pos, size_t *len, int d)
 {
   if (!stralloc_readyplus(&p->data, UINT32_FMT+1)) return 0 ;
   *pos = p->data.len ;
@@ -121,19 +121,19 @@ static int fmt_i (pscan_t *p, unsigned int *pos, unsigned int *len, int d)
   return 1 ;
 }
 
-static int fmt_pid (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_pid (pscan_t *p, size_t *pos, size_t *len)
 {
-  return fmt_32(p, pos, len, p->pid) ;
+  return fmt_64(p, pos, len, p->pid) ;
 }
 
-static int fmt_comm (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_comm (pscan_t *p, size_t *pos, size_t *len)
 {
   *pos = p->statlen ;
   *len = p->commlen ;
   return 1 ;
 }
 
-static int fmt_s (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_s (pscan_t *p, size_t *pos, size_t *len)
 {
   if (!stralloc_readyplus(&p->data, 4)) return 0 ;
   *pos = p->data.len ;
@@ -148,26 +148,26 @@ static int fmt_s (pscan_t *p, unsigned int *pos, unsigned int *len)
   return 1 ;
 }
 
-static int fmt_ppid (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_ppid (pscan_t *p, size_t *pos, size_t *len)
 {
-  return fmt_32(p, pos, len, p->ppid) ;
+  return fmt_64(p, pos, len, p->ppid) ;
 }
 
-static int fmt_pgrp (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_pgrp (pscan_t *p, size_t *pos, size_t *len)
 {
-  return fmt_32(p, pos, len, p->pgrp) ;
+  return fmt_64(p, pos, len, p->pgrp) ;
 }
 
-static int fmt_session (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_session (pscan_t *p, size_t *pos, size_t *len)
 {
-  return fmt_32(p, pos, len, p->session) ;
+  return fmt_64(p, pos, len, p->session) ;
 }
 
-static int fmt_ttynr(pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_ttynr(pscan_t *p, size_t *pos, size_t *len)
 {
   if (p->ttynr)
   {
-    unsigned int tmppos = p->data.len ;
+    size_t tmppos = p->data.len ;
     if (!s6ps_ttycache_lookup(&p->data, p->ttynr)) return 0 ;
     *pos = tmppos ;
     *len = p->data.len - tmppos ;
@@ -181,9 +181,9 @@ static int fmt_ttynr(pscan_t *p, unsigned int *pos, unsigned int *len)
   return 1 ;
 }
 
-static int fmt_tpgid (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_tpgid (pscan_t *p, size_t *pos, size_t *len)
 {
-  return fmt_i(p, pos, len, p->tpgid) ;
+  return p->tpgid < 0 ? fmt_i(p, pos, len, -1) : fmt_64(p, pos, len, p->tpgid) ;
 }
 
 static unsigned int gethz (void)
@@ -220,7 +220,7 @@ int s6ps_compute_boottime (pscan_t *p, unsigned int mypos)
   }
 }
 
-static int fmt_jiffies (pscan_t *p, unsigned int *pos, unsigned int *len, uint64 j)
+static int fmt_jiffies (pscan_t *p, size_t *pos, size_t *len, uint64 j)
 {
   unsigned int hz = gethz() ;
   uint32 hrs, mins, secs, hfrac ;
@@ -261,45 +261,45 @@ static int fmt_jiffies (pscan_t *p, unsigned int *pos, unsigned int *len, uint64
   return 1 ;
 }
 
-static int fmt_utime (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_utime (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_jiffies(p, pos, len, p->utime) ;
 }
 
-static int fmt_stime (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_stime (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_jiffies(p, pos, len, p->stime) ;
 }
 
-static int fmt_cutime (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_cutime (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_jiffies(p, pos, len, p->utime + p->cutime) ;
 }
 
-static int fmt_cstime (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_cstime (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_jiffies(p, pos, len, p->stime + p->cstime) ;
 }
 
-static int fmt_prio (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_prio (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_i(p, pos, len, p->prio) ;
 }
 
-static int fmt_nice (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_nice (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_i(p, pos, len, p->nice) ;
 }
 
-static int fmt_threads (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_threads (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_32(p, pos, len, p->threads) ;
 }
 
-static int fmt_timedate (pscan_t *p, unsigned int *pos, unsigned int *len, struct tm const *tm)
+static int fmt_timedate (pscan_t *p, size_t *pos, size_t *len, struct tm const *tm)
 {
   static struct tm nowtm = { .tm_year = 0 } ;
-  unsigned int tmplen ;
+  size_t tmplen ;
   char *tmpstrf = "%F" ;
   if (!nowtm.tm_year && !localtm_from_tai(&nowtm, tain_secp(&STAMP), 1)) return 0 ;
   if (!stralloc_readyplus(&p->data, 20)) return 0 ;
@@ -315,7 +315,7 @@ static int fmt_timedate (pscan_t *p, unsigned int *pos, unsigned int *len, struc
   return 1 ;
 }
 
-static int fmt_start (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_start (pscan_t *p, size_t *pos, size_t *len)
 {
   struct tm starttm ;
   unsigned int hz = gethz() ;
@@ -343,53 +343,53 @@ static unsigned int getpgsz (void)
   return pgsz ;
 }
 
-static int fmt_vsize (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_vsize (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_64(p, pos, len, p->vsize / 1024) ;
 }
 
-static int fmt_rss (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_rss (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_64(p, pos, len, p->rss * (getpgsz() / 1024)) ;
 }
 
-static int fmt_rsslim (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_rsslim (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_64(p, pos, len, p->rsslim / 1024) ;
 }
 
-static int fmt_cpuno (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_cpuno (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_32(p, pos, len, p->cpuno) ;
 }
 
-static int fmt_rtprio (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_rtprio (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_32(p, pos, len, p->rtprio) ;
 }
 
-static int fmt_policy (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_policy (pscan_t *p, size_t *pos, size_t *len)
 {
   static char const *const policies[8] = { "NORMAL", "FIFO", "RR", "BATCH", "ISO", "IDLE", "UNKNOWN", "UNKNOWN" } ;
-  unsigned int tmppos = p->data.len ;
+  size_t tmppos = p->data.len ;
   if (!stralloc_cats(&p->data, policies[p->policy & 7])) return 0 ;
   *pos = tmppos ;
   *len = p->data.len - tmppos ;
   return 1 ;
 }
 
-static int fmt_user (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_user (pscan_t *p, size_t *pos, size_t *len)
 {
-  unsigned int tmppos = p->data.len ;
+  size_t tmppos = p->data.len ;
   if (!s6ps_pwcache_lookup(&p->data, p->uid)) return 0 ;
   *pos = tmppos ;
   *len = p->data.len - tmppos ;
   return 1 ;
 }
 
-static int fmt_group (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_group (pscan_t *p, size_t *pos, size_t *len)
 {
-  unsigned int tmppos = p->data.len ;
+  size_t tmppos = p->data.len ;
   if (!s6ps_grcache_lookup(&p->data, p->gid)) return 0 ;
   *pos = tmppos ;
   *len = p->data.len - tmppos ;
@@ -407,7 +407,7 @@ static uint64 gettotalmem (void)
   return totalmem ;
 }
 
-static int percent (stralloc *sa, unsigned int n, unsigned int *pos, unsigned int *len)
+static int percent (stralloc *sa, unsigned int n, size_t *pos, size_t *len)
 {
   if (!stralloc_readyplus(sa, UINT64_FMT+1)) return 0 ;
   *pos = sa->len ;
@@ -419,22 +419,22 @@ static int percent (stralloc *sa, unsigned int n, unsigned int *pos, unsigned in
   return 1 ;
 }
 
-static int fmt_pmem (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_pmem (pscan_t *p, size_t *pos, size_t *len)
 {
   uint64 l = gettotalmem() ;
   return l ? percent(&p->data, p->rss * getpgsz() * 10000 / l, pos, len) : 0 ;
 }
 
-static int fmt_wchan (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_wchan (pscan_t *p, size_t *pos, size_t *len)
 {
-  unsigned int tmppos = p->data.len ;
+  size_t tmppos = p->data.len ;
   if (!s6ps_wchan_lookup(&p->data, p->wchan)) return 0 ;
   *len = p->data.len - tmppos ;
   *pos = tmppos ;
   return 1 ;
 }
 
-static int fmt_args (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_args (pscan_t *p, size_t *pos, size_t *len)
 {
   if (!stralloc_readyplus(&p->data, (p->height << 2) + (p->cmdlen ? p->cmdlen : p->commlen + (p->data.s[p->state] == 'Z' ? 11 : 3))))
     return 0 ;
@@ -451,7 +451,7 @@ static int fmt_args (pscan_t *p, unsigned int *pos, unsigned int *len)
   {
     register char const *r = p->data.s + p->statlen + p->commlen ;
     register char *w = p->data.s + p->data.len ;
-    register unsigned int i = p->cmdlen ;
+    register size_t i = p->cmdlen ;
     while (i--)
     {
       register char c = *r++ ;
@@ -470,9 +470,9 @@ static int fmt_args (pscan_t *p, unsigned int *pos, unsigned int *len)
   return 1 ;
 }
 
-static int fmt_env (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_env (pscan_t *p, size_t *pos, size_t *len)
 {
-  register unsigned int i = 0 ;
+  register size_t i = 0 ;
   if (!p->envlen)
   {
     if (!stralloc_catb(&p->data, "*", 1)) return 0 ;
@@ -497,23 +497,23 @@ static uint64 gettotalj (uint64 j)
   return j ;
 }
 
-static int fmt_pcpu (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_pcpu (pscan_t *p, size_t *pos, size_t *len)
 {
   return percent(&p->data, 10000 * (p->utime + p->stime) / gettotalj(p->start), pos, len) ;
 }
 
 
-static int fmt_ttime (pscan_t *p, unsigned int *pos, unsigned int *len) 
+static int fmt_ttime (pscan_t *p, size_t *pos, size_t *len) 
 {
   return fmt_jiffies(p, pos, len, p->utime + p->stime) ;
 }
 
-static int fmt_cttime (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_cttime (pscan_t *p, size_t *pos, size_t *len)
 {
   return fmt_jiffies(p, pos, len, p->utime + p->stime + p->cutime + p->cstime) ;
 }
 
-static int fmt_tstart (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_tstart (pscan_t *p, size_t *pos, size_t *len)
 {
   unsigned int hz = gethz() ;
   tain_t blah = { .sec = { .x = p->start / hz }, .nano = (p->start % hz) * (1000000000 / hz) } ;
@@ -525,7 +525,7 @@ static int fmt_tstart (pscan_t *p, unsigned int *pos, unsigned int *len)
   return 1 ;
 }
 
-static int fmt_cpcpu (pscan_t *p, unsigned int *pos, unsigned int *len)
+static int fmt_cpcpu (pscan_t *p, size_t *pos, size_t *len)
 {
   return percent(&p->data, 10000 * (p->utime + p->stime + p->cutime + p->cstime) / gettotalj(p->start), pos, len) ;
 }
diff --git a/src/minutils/s6ps_pwcache.c b/src/minutils/s6ps_pwcache.c
index 4c78460..abee250 100644
--- a/src/minutils/s6ps_pwcache.c
+++ b/src/minutils/s6ps_pwcache.c
@@ -4,7 +4,6 @@
 #include <pwd.h>
 #include <errno.h>
 #include <skalibs/uint.h>
-#include <skalibs/diuint.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/genalloc.h>
 #include <skalibs/skamisc.h>
@@ -23,18 +22,18 @@ int s6ps_pwcache_init (void)
 void s6ps_pwcache_finish (void)
 {
   avltree_free(&pwcache_tree) ;
-  genalloc_free(diuint, &pwcache_index) ;
+  genalloc_free(dius_t, &pwcache_index) ;
 }
 
-int s6ps_pwcache_lookup (stralloc *sa, unsigned int uid)
+int s6ps_pwcache_lookup (stralloc *sa, uid_t uid)
 {
   int wasnull = !satmp.s ;
-  diuint d = { .left = uid, .right = satmp.len } ;
+  dius_t d = { .left = (unsigned int)uid, .right = satmp.len } ;
   unsigned int i ;
   if (!avltree_search(&pwcache_tree, &d.left, &i))
   {
     struct passwd *pw ;
-    unsigned int n = genalloc_len(diuint, &pwcache_index) ;
+    size_t n = genalloc_len(dius_t, &pwcache_index) ;
     errno = 0 ;
     pw = getpwuid(uid) ;
     if (!pw)
@@ -49,7 +48,7 @@ int s6ps_pwcache_lookup (stralloc *sa, unsigned int uid)
     if (!genalloc_append(diuint, &pwcache_index, &d)) goto err ;
     if (!avltree_insert(&pwcache_tree, n))
     {
-      genalloc_setlen(diuint, &pwcache_index, n) ;
+      genalloc_setlen(dius_t, &pwcache_index, n) ;
       goto err ;
     }
     i = n ;
diff --git a/src/minutils/s6ps_statparse.c b/src/minutils/s6ps_statparse.c
index d8bc39e..b49ee28 100644
--- a/src/minutils/s6ps_statparse.c
+++ b/src/minutils/s6ps_statparse.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <errno.h>
 #include <skalibs/uint32.h>
 #include <skalibs/uint64.h>
@@ -15,34 +16,50 @@
 
 #define STATVARS 41
 
-typedef unsigned int scanfunc_t (char const *, void *) ;
+typedef size_t scanfunc_t (char const *, void *) ;
 typedef scanfunc_t *scanfunc_t_ref ;
 
-static unsigned int f32 (char const *s, void *u32)
+static size_t f32 (char const *s, void *u32)
 {
   uint32 *u = u32 ;
   return uint32_scan(s, u) ;
 }
 
-static unsigned int f64 (char const *s, void *u64)
+static size_t f64 (char const *s, void *u64)
 {
   uint64 *u = u64 ;
   return uint64_scan(s, u) ;
 }
 
-static unsigned int fint (char const *s, void *i)
+static size_t fint (char const *s, void *i)
 {
   int *d = i ;
   return int_scan(s, d) ;
 }
 
+static size_t fpid (char const *s, void *p)
+{
+  uint64 u ;
+  register size_t l = uint64_scan(s, &u) ;
+  *(pid_t *)p = u ;
+  return l ;
+}
+
+static size_t fdev (char const *s, void *p)
+{
+  uint64 u ;
+  register size_t l = uint64_scan(s, &u) ;
+  *(dev_t *)p = u ;
+  return l ;
+}
+
 static scanfunc_t_ref scanfuncs[STATVARS] =
 {
-  &f32, /* ppid */
-  &f32, /* pgrp */
-  &f32, /* session */
-  &f32, /* tty_nr */
-  &fint, /* tpgid */
+  &fpid, /* ppid */
+  &fpid, /* pgrp */
+  &fpid, /* session */
+  &fdev, /* tty_nr */
+  &fpid, /* tpgid */
   &f32, /* flags */
   &f32, /* minflt */
   &f32, /* cminflt */
@@ -85,7 +102,7 @@ int s6ps_statparse (pscan_t *p)
 {
   uint64 dummy64 ;
   uint32 dummy32 ;
-  unsigned int pos = 0 ;
+  size_t pos = 0 ;
   void *scanresults[STATVARS] =
   {
     &p->ppid,
@@ -145,7 +162,7 @@ int s6ps_statparse (pscan_t *p)
   p->state = pos++ ;
   for (; i < STATVARS ; i++)
   {
-    unsigned int w ;
+    size_t w ;
     if (pos + 1 > p->statlen) return 0 ;
     if (p->data.s[pos++] != ' ') return 0 ;
     w = (*scanfuncs[i])(p->data.s + pos, scanresults[i]) ;
diff --git a/src/minutils/s6ps_ttycache.c b/src/minutils/s6ps_ttycache.c
index c50c3ea..dcbbc54 100644
--- a/src/minutils/s6ps_ttycache.c
+++ b/src/minutils/s6ps_ttycache.c
@@ -9,8 +9,6 @@
 #include <errno.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/uint.h>
-#include <skalibs/uint32.h>
-#include <skalibs/diuint32.h>
 #include <skalibs/buffer.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/genalloc.h>
@@ -22,32 +20,19 @@
 static avltree ttycache_tree = AVLTREE_ZERO ;
 static genalloc ttycache_index = GENALLOC_ZERO ;
 
-static void *left32_dtok (unsigned int d, void *x)
-{
-  return (void *)&genalloc_s(diuint32, (genalloc *)x)[d].left ;
-}
-
-static int uint32_cmp (void const *a, void const *b, void *x)
-{
-  register uint32 aa = *(uint32 *)a ;
-  register uint32 bb = *(uint32 *)b ;
-  (void)x ;
-  return (aa < bb) ? -1 : (aa > bb) ;
-}
-
 int s6ps_ttycache_init (void)
 {
-  avltree_init(&ttycache_tree, 5, 3, 8, &left32_dtok, &uint32_cmp, &ttycache_index) ;
+  avltree_init(&ttycache_tree, 5, 3, 8, &left_dtok, &uint_cmp, &ttycache_index) ;
   return 1 ;
 }
 
 void s6ps_ttycache_finish (void)
 {
   avltree_free(&ttycache_tree) ;
-  genalloc_free(diuint, &ttycache_index) ;
+  genalloc_free(dius_t, &ttycache_index) ;
 }
 
-static int check (char const *s, uint32 ttynr)
+static int check (char const *s, dev_t ttynr)
 {
   struct stat st ;
   if (stat(s, &st) < 0) return 0 ;
@@ -57,7 +42,7 @@ static int check (char const *s, uint32 ttynr)
 
  /* No blind scanning of all /dev or /sys/devices, kthx */
 
-static int ttyguess (stralloc *sa, uint32 ttynr)
+static int ttyguess (stralloc *sa, dev_t ttynr)
 {
   unsigned int maj = major(ttynr), min = minor(ttynr) ;
 
@@ -80,7 +65,7 @@ static int ttyguess (stralloc *sa, uint32 ttynr)
   {
     int fd ;
     char path[23 + 2 * UINT_FMT] = "/sys/dev/char/" ;
-    register unsigned int pos = 14 ;
+    register size_t pos = 14 ;
     pos += uint_fmt(path + pos, maj) ;
     path[pos++] = ':' ;
     pos += uint_fmt(path + pos, min) ;
@@ -90,7 +75,7 @@ static int ttyguess (stralloc *sa, uint32 ttynr)
     {
       char buf[4097] ;
       buffer b = BUFFER_INIT(&buffer_read, fd, buf, 4097) ;
-      unsigned int start = satmp.len ;
+      size_t start = satmp.len ;
       register int r ;
       for (;;)
       {
@@ -114,7 +99,7 @@ static int ttyguess (stralloc *sa, uint32 ttynr)
  /* Fallback: print explicit maj:min */
   {
     char tmp[3 + 2 * UINT_FMT] = "(" ;
-    register unsigned int pos = 1 ;
+    register size_t pos = 1 ;
     pos += uint_fmt(tmp + pos, maj) ;
     tmp[pos++] = ':' ;
     pos += uint_fmt(tmp + pos, min) ;
@@ -124,24 +109,24 @@ static int ttyguess (stralloc *sa, uint32 ttynr)
   }
 }
 
-int s6ps_ttycache_lookup (stralloc *sa, uint32 ttynr)
+int s6ps_ttycache_lookup (stralloc *sa, dev_t ttynr)
 {
   int wasnull = !satmp.s ;
-  diuint32 d = { .left = ttynr, .right = satmp.len } ;
+  dius_t d = { .left = (unsigned int)ttynr, .right = satmp.len } ;
   unsigned int i ;
   if (!avltree_search(&ttycache_tree, &d.left, &i))
   {
-    unsigned int n = genalloc_len(diuint32, &ttycache_index) ;
+    size_t n = genalloc_len(dius_t, &ttycache_index) ;
     if (!ttyguess(&satmp, ttynr)) return 0 ;
-    if (!genalloc_append(diuint32, &ttycache_index, &d)) goto err ;
+    if (!genalloc_append(dius_t, &ttycache_index, &d)) goto err ;
     if (!avltree_insert(&ttycache_tree, n))
     {
-      genalloc_setlen(diuint32, &ttycache_index, n) ;
+      genalloc_setlen(dius_t, &ttycache_index, n) ;
       goto err ;
     }
     i = n ;
   }
-  return stralloc_cats(sa, satmp.s + genalloc_s(diuint32, &ttycache_index)[i].right) ;
+  return stralloc_cats(sa, satmp.s + genalloc_s(dius_t, &ttycache_index)[i].right) ;
  err:
   {
     register int e = errno ;
diff --git a/src/minutils/s6ps_wchan.c b/src/minutils/s6ps_wchan.c
index e702ba9..77ac671 100644
--- a/src/minutils/s6ps_wchan.c
+++ b/src/minutils/s6ps_wchan.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <sys/utsname.h>
 #include <skalibs/uint64.h>
 #include <skalibs/bytestr.h>
@@ -21,7 +22,7 @@ int s6ps_wchan_init (char const *file)
   {
     char *files[3] = { "/proc/kallsyms", 0, "/boot/System.map" } ;
     struct utsname uts ;
-    unsigned int n ;
+    size_t n ;
     if (uname(&uts) < 0) return 0 ;
     n = str_len(uts.release) ;
     {
@@ -37,15 +38,15 @@ int s6ps_wchan_init (char const *file)
     }
   }
   {
-    unsigned int i = 0 ;
-    if (!genalloc_append(unsigned int, &ind, &i)) goto err2 ;
+    size_t i = 0 ;
+    if (!genalloc_append(size_t, &ind, &i)) goto err2 ;
     for (i = 1 ; i <= sysmap.len ; i++)
       if (sysmap.s[i-1] == '\n')
-        if (!genalloc_append(unsigned int, &ind, &i)) goto err ;
+        if (!genalloc_append(size_t, &ind, &i)) goto err ;
   }
   return 1 ;
  err:
-  genalloc_free(unsigned int, &ind) ;
+  genalloc_free(size_t, &ind) ;
  err2:
   stralloc_free(&sysmap) ;
   return 0 ;
@@ -53,13 +54,13 @@ int s6ps_wchan_init (char const *file)
 
 void s6ps_wchan_finish (void)
 {
-  genalloc_free(unsigned int, &ind) ;
+  genalloc_free(size_t, &ind) ;
   stralloc_free(&sysmap) ;
 }
 
-static inline unsigned int lookup (uint64 addr, unsigned int *i)
+static inline size_t lookup (uint64 addr, size_t *i)
 {
-  unsigned int low = 0, mid, high = genalloc_len(unsigned int, &ind), len ;
+  size_t low = 0, mid, high = genalloc_len(size_t, &ind), len ;
   for (;;)
   {
     uint64 cur ;
@@ -81,12 +82,12 @@ int s6ps_wchan_lookup (stralloc *sa, uint64 addr)
   if (!addr) return stralloc_catb(sa, "-", 1) ;
   if (sysmap.len)
   {
-    unsigned int i ;
-    unsigned int len = lookup(addr, &i) ;
-    register unsigned int pos ;
+    size_t i ;
+    size_t len = lookup(addr, &i) ;
+    register size_t pos ;
     if (!len) return stralloc_catb(sa, "?", 1) ;
-    pos = genalloc_s(unsigned int, &ind)[i] + len + 3 ;
-    return stralloc_catb(sa, sysmap.s + pos, genalloc_s(unsigned int, &ind)[i+1] - 1 - pos) ;
+    pos = genalloc_s(size_t, &ind)[i] + len + 3 ;
+    return stralloc_catb(sa, sysmap.s + pos, genalloc_s(size_t, &ind)[i+1] - 1 - pos) ;
   }
   if (!stralloc_readyplus(sa, UINT64_FMT + 3)) return 0 ;
   stralloc_catb(sa, "(0x", 3) ;