summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2017-01-07 20:31:02 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2017-01-07 20:31:02 +0000
commit6a9ca73e10c3c4e8a95101313e9c5d46cf018f86 (patch)
tree41ae80cb08fa1e280012b799ad0d1e63090b19bc /src
parent6245dcef12eed3b12b129519eeaf11f7e221d278 (diff)
downloadexecline-6a9ca73e10c3c4e8a95101313e9c5d46cf018f86.tar.gz
execline-6a9ca73e10c3c4e8a95101313e9c5d46cf018f86.tar.xz
execline-6a9ca73e10c3c4e8a95101313e9c5d46cf018f86.zip
Types fix: first pass
 This pass makes variable size_t-ready, so everything works when
the prototypes are fixed in skalibs.
 Some code uses "unsigned int *" where it should be "size_t *";
it cannot be changed now, but it's been marked with XXX. It must
change at the same time as the skalibs API.
Diffstat (limited to 'src')
-rw-r--r--src/execline/background.c2
-rw-r--r--src/execline/backtick.c4
-rw-r--r--src/execline/dollarat.c3
-rw-r--r--src/execline/elgetopt.c6
-rw-r--r--src/execline/emptyenv.c3
-rw-r--r--src/execline/exec.c3
-rw-r--r--src/execline/execlineb.c3
-rw-r--r--src/execline/export.c5
-rw-r--r--src/execline/forbacktickx.c4
-rw-r--r--src/execline/forstdin.c14
-rw-r--r--src/execline/forx.c10
-rw-r--r--src/execline/getpid.c5
-rw-r--r--src/execline/heredoc.c3
-rw-r--r--src/execline/loopwhilex.c2
-rw-r--r--src/execline/pipeline.c2
-rw-r--r--src/execline/runblock.c3
-rw-r--r--src/execline/trap.c12
-rw-r--r--src/execline/tryexec.c3
-rw-r--r--src/execline/unexport.c3
-rw-r--r--src/execline/withstdinas.c4
-rw-r--r--src/include-local/exlsn.h2
-rw-r--r--src/include/execline/execline.h14
-rw-r--r--src/libexecline/el_execsequence.c2
-rw-r--r--src/libexecline/el_parse.c11
-rw-r--r--src/libexecline/el_parse_from_buffer.c3
-rw-r--r--src/libexecline/el_popenv.c11
-rw-r--r--src/libexecline/el_pushenv.c13
-rw-r--r--src/libexecline/el_spawn1.c3
-rw-r--r--src/libexecline/el_substandrun.c3
-rw-r--r--src/libexecline/el_substandrun_str.c3
-rw-r--r--src/libexecline/el_substitute.c50
-rw-r--r--src/libexecline/el_transform.c21
-rw-r--r--src/libexecline/el_vardupl.c5
-rw-r--r--src/libexecline/exlp.c16
-rw-r--r--src/libexecline/exlsn_multidefine.c7
35 files changed, 144 insertions, 114 deletions
diff --git a/src/execline/background.c b/src/execline/background.c
index d3e96ff..79771af 100644
--- a/src/execline/background.c
+++ b/src/execline/background.c
@@ -64,7 +64,7 @@ int main (int argc, char const **argv, char const *const *envp)
 #else
     char fmt[UINT64_FMT + 2] = "!=" ;
 #endif
-    register unsigned int i = 2 ;
+    register size_t i = 2 ;
     i += uint64_fmt(fmt+i, (uint64)pid) ; fmt[i++] = 0 ;
 #ifdef EXECLINE_OLD_VARNAMES
     byte_copy(fmt+i, 8, "LASTPID=") ; i += 8 ;
diff --git a/src/execline/backtick.c b/src/execline/backtick.c
index 38ab0af..5ab4dfa 100644
--- a/src/execline/backtick.c
+++ b/src/execline/backtick.c
@@ -19,7 +19,7 @@ int main (int argc, char const **argv, char const *const *envp)
   pid_t pid ;
   int argc1, fdwstat ;
   stralloc modif = STRALLOC_ZERO ;
-  unsigned int modifstart ;
+  size_t modifstart ;
   int insist = 0, chomp = 0 ;
   char const *def = 0 ;
   PROG = "backtick" ;
@@ -74,7 +74,7 @@ int main (int argc, char const **argv, char const *const *envp)
   if (argc1 == argc - 1) return 0 ;
   if (!stralloc_0(&modif)) strerr_diefu1sys(111, "stralloc_catb") ;
   {
-    unsigned int reallen = str_len(modif.s) ;
+    size_t reallen = str_len(modif.s) ;
     if (reallen < modif.len - 1)
     {
       if (insist >= 2)
diff --git a/src/execline/dollarat.c b/src/execline/dollarat.c
index 66b5c61..136968b 100644
--- a/src/execline/dollarat.c
+++ b/src/execline/dollarat.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/buffer.h>
@@ -52,7 +53,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
     }
     else
     {
-      unsigned int written = 0 ;
+      size_t written = 0 ;
       if (!netstring_put(buffer_1, x, str_len(x), &written))
         strerr_diefu1sys(111, "write a netstring to stdout") ;
     }
diff --git a/src/execline/elgetopt.c b/src/execline/elgetopt.c
index 4dfd4d8..a48968f 100644
--- a/src/execline/elgetopt.c
+++ b/src/execline/elgetopt.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/env.h>
@@ -13,10 +14,11 @@
 
 int main (int argc, char const *const *argv, char const *const *envp)
 {
-  unsigned int n, nbak ;
-  unsigned int envlen = env_len(envp) ;
+  size_t envlen = env_len(envp) ;
   stralloc modif = STRALLOC_ZERO ;
   char const *x = env_get2(envp, "#") ;
+  unsigned int n, nbak ;
+
   PROG = "elgetopt" ;
   if (argc < 3) strerr_dieusage(100, USAGE) ;
   if (!x) strerr_dienotset(100, "#") ;
diff --git a/src/execline/emptyenv.c b/src/execline/emptyenv.c
index cae8869..90d72d1 100644
--- a/src/execline/emptyenv.c
+++ b/src/execline/emptyenv.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/strerr2.h>
@@ -77,7 +78,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
   {
     static char const *const list[12] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "#", "ELGETOPT_" } ;
     stralloc sa = STRALLOC_ZERO ;
-    unsigned int envlen = env_len(envp) ;
+    size_t envlen = env_len(envp) ;
     int n = el_popenv(&sa, envp, envlen, flagpos ? list : list + 11, 11 * flagpos + flagopt) ;
     if (n < 0) strerr_diefu1sys(111, "pop current execline environment") ;
     {
diff --git a/src/execline/exec.c b/src/execline/exec.c
index 2213ba4..9b923ab 100644
--- a/src/execline/exec.c
+++ b/src/execline/exec.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/djbunix.h>
 #include <skalibs/sgetopt.h>
@@ -36,7 +37,7 @@ int main (int argc, char const **argv, char const *const *envp)
   if (argv0) argv[0] = argv0 ;
   if (dash)
   {
-    register unsigned int n = str_len(argv[0]) ;
+    register size_t n = str_len(argv[0]) ;
     char dashed[n+2] ;
     dashed[0] = '-' ;
     byte_copy(dashed+1, n+1, argv[0]) ;
diff --git a/src/execline/execlineb.c b/src/execline/execlineb.c
index fbbaeee..3b14fe5 100644
--- a/src/execline/execlineb.c
+++ b/src/execline/execlineb.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <errno.h>
 #include <skalibs/uint.h>
 #include <skalibs/allreadwrite.h>
@@ -175,7 +176,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
     if (flagpushenv > 1)
     {
       static char const *const list[11] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "#" } ;
-      unsigned int envlen = env_len(envp) ;
+      size_t envlen = env_len(envp) ;
       char const *w[envlen] ;
       if (el_pushenv(&satmp, envp, envlen, list, 11) < 0) goto errenv ;
       if (!env_make(w, envlen, satmp.s, satmp.len)) goto errenv ;
diff --git a/src/execline/export.c b/src/execline/export.c
index e7a7bbe..b189268 100644
--- a/src/execline/export.c
+++ b/src/execline/export.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/strerr2.h>
 #include <skalibs/env.h>
@@ -9,14 +10,14 @@
 
 int main (int argc, char const *const *argv, char const *const *envp)
 {
-  unsigned int len1 ;
+  size_t len1 ;
   PROG = "export" ;
   if (argc < 4) strerr_dieusage(100, USAGE) ;
   len1 = str_len(argv[1]) ;
   if (byte_chr(argv[1], len1, '=') < len1)
     strerr_dief2x(100, "invalid variable name: ", argv[1]) ;
   {
-    unsigned int len2 = str_len(argv[2]) ;
+    size_t len2 = str_len(argv[2]) ;
     char fmt[len1 + len2 + 2] ;
     byte_copy(fmt, len1, argv[1]) ;
     fmt[len1] = '=' ;
diff --git a/src/execline/forbacktickx.c b/src/execline/forbacktickx.c
index c0c617a..9833174 100644
--- a/src/execline/forbacktickx.c
+++ b/src/execline/forbacktickx.c
@@ -40,7 +40,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
         case 'o' :
         {
           unsigned short okcodes[256] ;
-          unsigned int nbc ;
+          unsigned int nbc ; /* XXX */
           if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ;
           codes = l.arg ;
           not = 0 ;
@@ -49,7 +49,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
         case 'x' :
         {
           unsigned short okcodes[256] ;
-          unsigned int nbc ;
+          unsigned int nbc ; /* XXX */
           if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ;
           codes = l.arg ;
           not = 1 ;
diff --git a/src/execline/forstdin.c b/src/execline/forstdin.c
index 3b52fab..96b6e8b 100644
--- a/src/execline/forstdin.c
+++ b/src/execline/forstdin.c
@@ -33,11 +33,11 @@ static int isok (unsigned short *tab, unsigned int n, int code)
 static void parallel_sigchld_handler (int sig)
 {
   pid_t *tab = genalloc_s(pid_t, &pids) ;
-  unsigned int len = genalloc_len(pid_t, &pids) ;
+  size_t len = genalloc_len(pid_t, &pids) ;
   int wstat ;
   for (;;)
   {
-    register int r = wait_pids_nohang(tab, len, &wstat) ;
+    register ssize_t r = wait_pids_nohang(tab, len, &wstat) ;
     if (r <= 0) break ;
     tab[r-1] = tab[--len] ;
   }
@@ -74,11 +74,11 @@ int main (int argc, char const **argv, char const *const *envp)
         case 'd' : delim = l.arg ; delimlen = str_len(delim) ; break ;
         case 'o' :
           not = 0 ;
-          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ;
+          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ; /* XXX */
           break ;
         case 'x' :
           not = 1 ;
-          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ;
+          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ; /* XXX */
           break ;
         default : dieusage() ;
       }
@@ -88,8 +88,8 @@ int main (int argc, char const **argv, char const *const *envp)
   if (argc < 2) dieusage() ;
   {
     stralloc modif = STRALLOC_ZERO ;
-    unsigned int envlen = env_len(envp) ;
-    unsigned int modifstart = str_len(argv[0])+1 ;
+    size_t envlen = env_len(envp) ;
+    size_t modifstart = str_len(argv[0])+1 ;
     char const *newenv[envlen + 2] ;
     if (!stralloc_ready(&modif, modifstart+1))
       strerr_diefu1sys(111, "stralloc_ready") ;
@@ -118,7 +118,7 @@ int main (int argc, char const **argv, char const *const *envp)
       }
       else
       {
-        unsigned int unread = 0 ;
+        unsigned int unread = 0 ; /* XXX: change to size_t when the skalibs API changes */
         if (netstring_get(buffer_0, &modif, &unread) <= 0)
         {
           if (netstring_okeof(buffer_0, unread)) break ;
diff --git a/src/execline/forx.c b/src/execline/forx.c
index bae2f4b..327f168 100644
--- a/src/execline/forx.c
+++ b/src/execline/forx.c
@@ -60,11 +60,11 @@ int main (int argc, char const **argv, char const *const *envp)
         case 'p' : flagpar = 1 ; break ;
         case 'o' :
           not = 0 ;
-          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ;
+          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ; /* XXX */
           break ;
         case 'x' :
           not = 1 ;
-          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ;
+          if (!ushort_scanlist(okcodes, 256, l.arg, &nbc)) dieusage() ; /* XXX */
           break ;
         default : dieusage() ;
       }
@@ -81,8 +81,8 @@ int main (int argc, char const **argv, char const *const *envp)
   if (argc1 >= argc) strerr_dief1x(100, "unterminated block") ;
   if (!argc1 || (argc1 + 1 == argc)) return 0 ;
   {
-    unsigned int envlen = env_len(envp) ;
-    unsigned int varlen = str_len(x) ;
+    size_t envlen = env_len(envp) ;
+    size_t varlen = str_len(x) ;
     unsigned int i = 0 ;
     pid_t pids[flagpar ? argc1 : 1] ;
     char const *newenv[envlen + 2] ;
@@ -90,7 +90,7 @@ int main (int argc, char const **argv, char const *const *envp)
     for (; i < (unsigned int)argc1 ; i++)
     {
       pid_t pid ;
-      unsigned int vallen = str_len(argv[i]) ;
+      size_t vallen = str_len(argv[i]) ;
       char modif[varlen + vallen + 2] ;
       byte_copy(modif, varlen, x) ;
       modif[varlen] = '=' ;
diff --git a/src/execline/getpid.c b/src/execline/getpid.c
index 03a517c..0ade4d3 100644
--- a/src/execline/getpid.c
+++ b/src/execline/getpid.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <unistd.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/uint.h>
@@ -11,15 +12,15 @@
 
 int main (int argc, char const *const *argv, char const *const *envp)
 {
-  unsigned int len ;
+  size_t len ;
   PROG = "getpid" ;
   if (argc < 3) strerr_dieusage(100, USAGE) ;
   len = str_len(argv[1]) ;
   if (byte_chr(argv[1], len, '=') < len)
     strerr_dief2x(100, "invalid variable name: ", argv[1]) ;
   {
+    size_t i = len+1 ;
     char fmt[UINT_FMT + len + 2] ;
-    unsigned int i = len+1 ;
     byte_copy(fmt, len, argv[1]) ;
     fmt[len] = '=' ;
     i += uint_fmt(fmt+i, getpid()) ; fmt[i++] = 0 ;
diff --git a/src/execline/heredoc.c b/src/execline/heredoc.c
index 899c2d8..c3dd691 100644
--- a/src/execline/heredoc.c
+++ b/src/execline/heredoc.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <unistd.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/bytestr.h>
@@ -42,7 +43,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
       case -1: strerr_diefu2sys(111, df ? "double" : "", "fork") ;
       case 0:
       {
-        unsigned int len = str_len(argv[1]) ;
+        size_t len = str_len(argv[1]) ;
         PROG = "heredoc (child)" ;
         fd_close(fd[0]) ;
         if (allwrite(fd[1], argv[1], len) < len)
diff --git a/src/execline/loopwhilex.c b/src/execline/loopwhilex.c
index d2955ad..0f1f5e4 100644
--- a/src/execline/loopwhilex.c
+++ b/src/execline/loopwhilex.c
@@ -23,7 +23,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
   int wstat ;
   int not = 0, cont = 1, rev = 0 ;
   unsigned short okcodes[256] ;
-  unsigned int nbc = 0 ;
+  unsigned int nbc = 0 ; /* XXX */
   PROG = "loopwhilex" ;
   {
     subgetopt_t l = SUBGETOPT_ZERO ;
diff --git a/src/execline/pipeline.c b/src/execline/pipeline.c
index ca5ef0f..fea0b87 100644
--- a/src/execline/pipeline.c
+++ b/src/execline/pipeline.c
@@ -73,7 +73,7 @@ int main (int argc, char const **argv, char const *const *envp)
 #else
       char fmt[UINT64_FMT + 2] = "!=" ;
 #endif
-      register unsigned int i = 2 ;
+      register size_t i = 2 ;
       i += uint64_fmt(fmt+i, (uint64)pid) ; fmt[i++] = 0 ;
 #ifdef EXECLINE_OLD_VARNAMES
       byte_copy(fmt+i, 8, "LASTPID=") ; i += 8 ;
diff --git a/src/execline/runblock.c b/src/execline/runblock.c
index 4e3808d..c36675f 100644
--- a/src/execline/runblock.c
+++ b/src/execline/runblock.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/uint.h>
 #include <skalibs/strerr2.h>
@@ -132,7 +133,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
   else  /* popenv, then exec */
   {
     char const *list[11] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "#" } ;
-    unsigned int envlen = env_len(envp) ;
+    size_t envlen = env_len(envp) ;
     register int popped = el_popenv(&satmp, envp, envlen, list, 11) ;
     if (popped < 0) strerr_diefu1sys(111, "pop environment") ;
     else
diff --git a/src/execline/trap.c b/src/execline/trap.c
index bfb5733..9a21e49 100644
--- a/src/execline/trap.c
+++ b/src/execline/trap.c
@@ -114,12 +114,12 @@ int main (int argc, char const **argv, char const *const *envp)
 
   {
     iopause_fd x = { .fd = spfd, .events = IOPAUSE_READ } ;
+    size_t envlen = env_len(envp) ;
     char modif[2 + UINT64_FMT] = "!=" ;
-    unsigned int envlen = env_len(envp) ;
+    size_t l = 2 + uint64_fmt(modif + 2, pids[NSIG+1]) ;
     char const *newenvp[envlen + 2] ;
-    i = 2 + uint64_fmt(modif + 2, pids[NSIG+1]) ;
-    modif[i++] = 0 ;
-    if (!env_merge(newenvp, envlen + 2, envp, envlen, modif, i))
+    modif[l++] = 0 ;
+    if (!env_merge(newenvp, envlen + 2, envp, envlen, modif, l))
       strerr_diefu1sys(111, "adjust environment") ;
     for (;;)
     {
@@ -142,8 +142,8 @@ int main (int argc, char const **argv, char const *const *envp)
             case SIGCHLD :
               for (;;)
               {
-                int id, wstat ;
-                id = wait_pids_nohang(pids, NSIG + 2, &wstat) ;
+                int wstat ;
+                ssize_t id = wait_pids_nohang(pids, NSIG + 2, &wstat) ;
                 if (id < 0 && errno != ECHILD)
                   strerr_diefu1sys(111, "wait") ;
                 if (id <= 0) break ;
diff --git a/src/execline/tryexec.c b/src/execline/tryexec.c
index 0612210..9026603 100644
--- a/src/execline/tryexec.c
+++ b/src/execline/tryexec.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/strerr2.h>
@@ -49,7 +50,7 @@ int main (int argc, char const **argv, char const *const *envp)
   if (argv0) dom[0] = argv0 ;
   if (dash)
   {
-    register unsigned int n = str_len(dom[0]) ;
+    register size_t n = str_len(dom[0]) ;
     char dashed[n+2] ;
     dashed[0] = '-' ;
     byte_copy(dashed+1, n+1, dom[0]) ;
diff --git a/src/execline/unexport.c b/src/execline/unexport.c
index 189249c..c7ffc77 100644
--- a/src/execline/unexport.c
+++ b/src/execline/unexport.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/strerr2.h>
 #include <skalibs/env.h>
@@ -9,7 +10,7 @@
 
 int main (int argc, char const *const *argv, char const *const *envp)
 {
-  unsigned int len ;
+  size_t len ;
   PROG = "unexport" ;
   if (argc < 3) strerr_dieusage(100, USAGE) ;
   len = str_len(argv[1]) ;
diff --git a/src/execline/withstdinas.c b/src/execline/withstdinas.c
index af7140f..7729024 100644
--- a/src/execline/withstdinas.c
+++ b/src/execline/withstdinas.c
@@ -17,7 +17,7 @@ int main (int argc, char const **argv, char const *const *envp)
 {
   subgetopt_t localopt = SUBGETOPT_ZERO ;
   stralloc modif = STRALLOC_ZERO ;
-  unsigned int modifstart ;
+  size_t modifstart ;
   int insist = 0, chomp = 0 ;
   char const *def = 0 ;
   PROG = "withstdinas" ;
@@ -44,7 +44,7 @@ int main (int argc, char const **argv, char const *const *envp)
   if (!slurp(&modif, 0)) strerr_diefu1sys(111, "slurp") ;
   if (!stralloc_0(&modif)) strerr_diefu1sys(111, "stralloc_catb") ;
   {
-    unsigned int reallen = str_len(modif.s) ;
+    size_t reallen = str_len(modif.s) ;
     if (reallen < modif.len - 1)
     {
       if (insist >= 2)
diff --git a/src/include-local/exlsn.h b/src/include-local/exlsn.h
index 2bdcf58..238bd6b 100644
--- a/src/include-local/exlsn.h
+++ b/src/include-local/exlsn.h
@@ -32,7 +32,7 @@ extern exlsnfunc_t exlsn_multidefine ;
 
 extern int exlp (unsigned int, char const *const *, exlsn_t *) ;
 extern void el_substandrun (int, char const *const *, char const *const *, exlsn_t const *) gccattr_noreturn ;
-extern void el_substandrun_str (stralloc *, unsigned int, char const *const *, exlsn_t const *) gccattr_noreturn ;
+extern void el_substandrun_str (stralloc *, size_t, char const *const *, exlsn_t const *) gccattr_noreturn ;
 extern void exlsn_main (int, char const **, char const *const *, exlsnfunc_t *, char const *) gccattr_noreturn ;
 
 #endif
diff --git a/src/include/execline/execline.h b/src/include/execline/execline.h
index 45ee1e5..bbe4db9 100644
--- a/src/include/execline/execline.h
+++ b/src/include/execline/execline.h
@@ -26,14 +26,14 @@ extern int el_parse_from_buffer (stralloc *, buffer *) ;
 
 /* Basics */
 
-extern int el_vardupl (char const *, char const *, unsigned int) gccattr_pure ;
+extern int el_vardupl (char const *, char const *, size_t) gccattr_pure ;
 extern unsigned int el_getstrict (void) gccattr_const ;
 
 
 /* Environment shifting */
 
-extern int el_pushenv (stralloc *, char const *const *, unsigned int, char const *const *, unsigned int) ;
-extern int el_popenv  (stralloc *, char const *const *, unsigned int, char const *const *, unsigned int) ;
+extern int el_pushenv (stralloc *, char const *const *, size_t, char const *const *, size_t) ;
+extern int el_popenv  (stralloc *, char const *const *, size_t, char const *const *, size_t) ;
 
 
 /* Sequence */
@@ -61,7 +61,7 @@ struct eltransforminfo_s
 
 #define ELTRANSFORMINFO_ZERO { .delim = " \n\r\t", .crunch = 0, .chomp = 0, .split = 0 }
 
-extern int el_transform (stralloc *, unsigned int, eltransforminfo_t const *) ;
+extern int el_transform (stralloc *, size_t, eltransforminfo_t const *) ;
 
 
 /* Substitution */
@@ -69,11 +69,11 @@ extern int el_transform (stralloc *, unsigned int, eltransforminfo_t const *) ;
 typedef struct elsubst_s elsubst_t, *elsubst_t_ref ;
 struct elsubst_s
 {
-  unsigned int var ;
-  unsigned int value ;
+  size_t var ;
+  size_t value ;
   unsigned int n ;
 } ;
 
-extern int el_substitute (stralloc *, char const *, unsigned int, char const *, char const *, elsubst_t const *, unsigned int) ;
+extern int el_substitute (stralloc *, char const *, size_t, char const *, char const *, elsubst_t const *, unsigned int) ;
 
 #endif
diff --git a/src/libexecline/el_execsequence.c b/src/libexecline/el_execsequence.c
index 6b825af..d697f2e 100644
--- a/src/libexecline/el_execsequence.c
+++ b/src/libexecline/el_execsequence.c
@@ -19,8 +19,8 @@ void el_execsequence (char const *const *argv1, char const *const *argv2, char c
   }
   else
   {
+    size_t j = 2 ;
     int wstat ;
-    unsigned int j = 2 ;
 #ifdef EXECLINE_OLD_VARNAMES
     char fmt[UINT_FMT * 2 + 15] = "?=" ;
 #else
diff --git a/src/libexecline/el_parse.c b/src/libexecline/el_parse.c
index 1544f51..acff34a 100644
--- a/src/libexecline/el_parse.c
+++ b/src/libexecline/el_parse.c
@@ -1,6 +1,7 @@
 /* ISC license. */
 
-#include <skalibs/uint16.h>
+#include <sys/types.h>
+#include <stdint.h>
 #include <skalibs/uint.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/stralloc.h>
@@ -10,7 +11,7 @@
 int el_parse (stralloc *sa, el_chargen_func_t_ref next, void *source)
 {
   static unsigned char const class[256] = "`aaaaaaaaadaaaaaaaaaaaaaaaaaaaaaafcbffffffffffffjhhhhhhhiifffffffmmmmmmfffffffffffffffffffffeffffggmmmgfffffffkfffkfkfkflffnfoffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ;
-  static uint16 const table[16][16] =
+  static uint16_t const table[16][16] =
   {
     { 0x0011, 0x4011, 0x0010, 0x0010, 0x0010, 0x0011, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x4091 },
     { 0x0000, 0x4000, 0x8001, 0x8003, 0x8003, 0x0005, 0x0010, 0x8403, 0x8403, 0x8403, 0x8403, 0x0010, 0x8403, 0x8403, 0x0100, 0x4080 },
@@ -30,14 +31,14 @@ int el_parse (stralloc *sa, el_chargen_func_t_ref next, void *source)
     { 0x820f, 0x8001, 0x8001, 0x8003, 0x8003, 0x0005, 0x0010, 0x8403, 0x8403, 0x8403, 0x8403, 0x0010, 0x8403, 0x8403, 0x8001, 0x8001 }
   } ;
 
-  unsigned int mark = 0 ;
-  unsigned int n = 0 ;
+  size_t mark = 0 ;
+  int n = 0 ;
   unsigned int blevel = 0 ;
   unsigned char state = 0, base = 10 ;
 
   while (state < 0x10)
   {
-    uint16 c ;
+    uint16_t c ;
     unsigned char cur ;
     if (!(*next)(&cur, source)) return -1 ;
     c = table[class[cur]-'`'][state] ;
diff --git a/src/libexecline/el_parse_from_buffer.c b/src/libexecline/el_parse_from_buffer.c
index 802fe40..83862f3 100644
--- a/src/libexecline/el_parse_from_buffer.c
+++ b/src/libexecline/el_parse_from_buffer.c
@@ -1,12 +1,13 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/buffer.h>
 #include <skalibs/stralloc.h>
 #include <execline/execline.h>
 
 static int next (unsigned char *c, void *p)
 {
-  register int r = buffer_get((buffer *)p, (char *)c, 1) ;
+  register ssize_t r = buffer_get((buffer *)p, (char *)c, 1) ;
   if (r < 0) return 0 ;
   if (!r) *c = 0 ;
   return 1 ;
diff --git a/src/libexecline/el_popenv.c b/src/libexecline/el_popenv.c
index 3726506..c0089d0 100644
--- a/src/libexecline/el_popenv.c
+++ b/src/libexecline/el_popenv.c
@@ -1,18 +1,19 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <errno.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/uint.h>
 #include <execline/execline.h>
 
-int el_popenv (stralloc *sa, char const *const *envp, unsigned int envlen, char const *const *list, unsigned int listlen)
+int el_popenv (stralloc *sa, char const *const *envp, size_t envlen, char const *const *list, size_t listlen)
 {
-  unsigned int i = 0, salen = sa->len, count = 0 ;
+  size_t i = 0, salen = sa->len ;
+  int count = 0 ;
   for (; i < envlen ; i++)
   {
-    unsigned int equal, colon, n ;
-    unsigned int j = 0 ;
+    size_t equal, colon, n, j = 0 ;
     for (; j < listlen ; j++) if (str_start(envp[i], list[j])) break ;
     if (j == listlen) goto copyit ;
     j = str_len(list[j]) ;
@@ -34,7 +35,7 @@ int el_popenv (stralloc *sa, char const *const *envp, unsigned int envlen, char
 copyit:
     if (!stralloc_catb(sa, envp[i], str_len(envp[i]) + 1)) goto err ;
   }
-  return (int)count ;
+  return count ;
 
 badenv :
   errno = EINVAL ;
diff --git a/src/libexecline/el_pushenv.c b/src/libexecline/el_pushenv.c
index 9b9608d..4ec43bb 100644
--- a/src/libexecline/el_pushenv.c
+++ b/src/libexecline/el_pushenv.c
@@ -1,18 +1,19 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <errno.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/uint.h>
 #include <execline/execline.h>
 
-int el_pushenv (stralloc *sa, char const *const *envp, unsigned int envlen, char const *const *list, unsigned int listlen)
+int el_pushenv (stralloc *sa, char const *const *envp, size_t envlen, char const *const *list, size_t listlen)
 {
-  unsigned int i = 0, salen = sa->len, count = 0 ;
+  size_t i = 0, salen = sa->len ;
+  int count = 0 ;
   for (; i < envlen ; i++)
   {
-    unsigned int equal, colon ;
-    unsigned int j = 0 ;
+    size_t equal, colon, j = 0 ;
     for (; j < listlen ; j++) if (str_start(envp[i], list[j])) break ;
     if (j == listlen) goto copyit ;
     count++ ;
@@ -27,8 +28,8 @@ int el_pushenv (stralloc *sa, char const *const *envp, unsigned int envlen, char
     }
     else
     {
+      size_t n ;
       char fmt[UINT_FMT+1] = ":" ;
-      unsigned int n ;
       if (colon + 1 + uint_scan(envp[i] + colon + 1, &n) != equal) goto copyit ;
       n = 1 + uint_fmt(fmt+1, n+1) ;
       if (!stralloc_catb(sa, envp[i], colon)) goto err ;
@@ -39,7 +40,7 @@ int el_pushenv (stralloc *sa, char const *const *envp, unsigned int envlen, char
 copyit:
     if (!stralloc_catb(sa, envp[i], str_len(envp[i]) + 1)) goto err ;
   }
-  return (int)count ;
+  return count ;
 
 badenv :
   errno = EINVAL ;
diff --git a/src/libexecline/el_spawn1.c b/src/libexecline/el_spawn1.c
index f84b10a..f434d70 100644
--- a/src/libexecline/el_spawn1.c
+++ b/src/libexecline/el_spawn1.c
@@ -2,13 +2,14 @@
 
 #include <sys/types.h>
 #include <skalibs/djbunix.h>
+#include <execline/config.h>
 #include <execline/execline.h>
 
 pid_t el_spawn1 (char const *prog, char const *const *argv, char const *const *envp, int *fd, int w)
 {
   if (!argv[0])
   {
-    static char const *const newargv[2] = { "/bin/true", 0 } ;
+    static char const *const newargv[3] = { EXECLINE_BINPREFIX "exit", "0", 0 } ;
     return child_spawn1_pipe(newargv[0], newargv, 0, fd, w) ;
   }
   else return child_spawn1_pipe(prog, argv, envp, fd, w) ;
diff --git a/src/libexecline/el_substandrun.c b/src/libexecline/el_substandrun.c
index 11502ea..8b8084a 100644
--- a/src/libexecline/el_substandrun.c
+++ b/src/libexecline/el_substandrun.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/env.h>
 #include <skalibs/strerr2.h>
 #include <skalibs/skamisc.h>
@@ -8,6 +9,6 @@
 void el_substandrun (int argc, char const *const *argv, char const *const *envp, exlsn_t const *info)
 {
   satmp.len = 0 ;
-  if (!env_string(&satmp, argv, (unsigned int)argc)) strerr_diefu1sys(111, "env_string") ;
+  if (!env_string(&satmp, argv, (size_t)argc)) strerr_diefu1sys(111, "env_string") ;
   el_substandrun_str(&satmp, 0, envp, info) ;
 }
diff --git a/src/libexecline/el_substandrun_str.c b/src/libexecline/el_substandrun_str.c
index 8168287..a935b82 100644
--- a/src/libexecline/el_substandrun_str.c
+++ b/src/libexecline/el_substandrun_str.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <unistd.h>
 #include <skalibs/djbunix.h>
 #include <skalibs/env.h>
@@ -9,7 +10,7 @@
 #include <execline/execline.h>
 #include "exlsn.h"
 
-void el_substandrun_str (stralloc *src, unsigned int srcbase, char const *const *envp, exlsn_t const *info)
+void el_substandrun_str (stralloc *src, size_t srcbase, char const *const *envp, exlsn_t const *info)
 {
   stralloc dst = STRALLOC_ZERO ;
   register int r = el_substitute(&dst, src->s + srcbase, src->len, info->vars.s, info->values.s, genalloc_s(elsubst_t const, &info->data), genalloc_len(elsubst_t const, &info->data)) ;
diff --git a/src/libexecline/el_substitute.c b/src/libexecline/el_substitute.c
index a94c16d..9fa2f70 100644
--- a/src/libexecline/el_substitute.c
+++ b/src/libexecline/el_substitute.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/stralloc.h>
 #include <skalibs/genalloc.h>
@@ -9,7 +10,7 @@ typedef struct elsubsu_s elsubsu_t, *elsubsu_t_ref ;
 struct elsubsu_s
 {
   elsubst_t const *subst ;
-  unsigned int pos ;
+  size_t pos ;
 } ;
 
 typedef struct subsuinfo_s subsuinfo_t, *subsuinfo_t_ref ;
@@ -36,7 +37,7 @@ struct subsuinfo_s
 #define INVARBR 0x04
 #define ACCEPT 0x05
 
-static int parseword (stralloc *sa, genalloc *list, char const *s, char const *vars, elsubst_t const *substs, unsigned int nsubst)
+static ssize_t parseword (stralloc *sa, genalloc *list, char const *s, char const *vars, elsubst_t const *substs, unsigned int nsubst)
 {
   static char const class[5] = "\0\\${}" ;
   static unsigned char const table[6][5] =
@@ -49,7 +50,8 @@ static int parseword (stralloc *sa, genalloc *list, char const *s, char const *v
     { INWORD, INVAR | MARK | KEEPESC, INVARBR | MARK | KEEPESC, INVAR | KEEPESC, INVARBR | KEEPESC }
   } ;
 
-  unsigned int mark = 0, pos = 0, offset = 0, esc = 0, salen = sa->len, listlen = genalloc_len(elsubsu_t, list) ;
+  size_t mark = 0, offset = 0, esc = 0, salen = sa->len, listlen = genalloc_len(elsubsu_t, list) ;
+  ssize_t pos = 0 ;
   unsigned char state = INWORD ;
 
   while (state != ACCEPT)
@@ -93,7 +95,7 @@ static int parseword (stralloc *sa, genalloc *list, char const *s, char const *v
     state = c & STATE ; pos++ ;
   }
   sa->len-- ;
-  return (int)pos ;
+  return pos ;
 
 err:
   sa->len = salen ;
@@ -101,23 +103,23 @@ err:
   return -1 ;
 }
 
-static int substword (subsuinfo_t *info, unsigned int wordstart, unsigned int wordlen, unsigned int n, unsigned int offset)
+static int substword (subsuinfo_t *info, size_t wordstart, size_t wordlen, unsigned int n, size_t offset)
 {
   if (n < genalloc_len(elsubsu_t, &info->list))
   {
     elsubsu_t *list = genalloc_s(elsubsu_t, &info->list) ;
     char const *p = info->values + list[n].subst->value ;
-    unsigned int l = list[n].pos + offset ;
-    unsigned int dstbase = info->dst.len ;
-    unsigned int sabase = info->sa.len ;
+    size_t l = list[n].pos + offset ;
+    size_t dstbase = info->dst.len ;
+    size_t sabase = info->sa.len ;
     unsigned int i = 0 ;
     int nc = 0 ;
     if (!stralloc_readyplus(&info->sa, l)) return -1 ;
     stralloc_catb(&info->sa, info->sa.s + wordstart, l) ;
-    for ( ; i < list[n].subst->n ; i++)
+    for (; i < list[n].subst->n ; i++)
     {
+      size_t plen = str_len(p) ;
       int r ;
-      unsigned int plen = str_len(p) ;
       info->sa.len = sabase + l ;
       if (!stralloc_readyplus(&info->sa, plen + wordlen - l)) goto err ;
       stralloc_catb(&info->sa, p, plen) ;
@@ -142,33 +144,37 @@ static int substword (subsuinfo_t *info, unsigned int wordstart, unsigned int wo
   }
 }
 
-int el_substitute (stralloc *dst, char const *src, unsigned int len, char const *vars, char const *values, elsubst_t const *substs, unsigned int nsubst)
+int el_substitute (stralloc *dst, char const *src, size_t len, char const *vars, char const *values, elsubst_t const *substs, unsigned int nsubst)
 {
   subsuinfo_t info = SUBSUINFO_ZERO ;
-  unsigned int nc = 0 ;
-  unsigned int i = 0 ;
-  unsigned int dstbase = dst->len ;
+  size_t i = 0 ;
+  size_t dstbase = dst->len ;
+  int nc = 0 ;
   int wasnull = !dst->s ;
+
   info.dst = *dst ;
   info.values = values ;
 
   while (i < len)
   {
-    int r ;
     genalloc_setlen(elsubsu_t, &info.list, 0) ;
     info.sa.len = 0 ;
-    r = parseword(&info.sa, &info.list, src + i, vars, substs, nsubst) ;
-    if (r < 0) goto err ;
-    i += r ;
-    r = substword(&info, 0, info.sa.len, 0, 0) ;
-    if (r < 0) goto err ;
-    nc += r ;
+    {
+      ssize_t r = parseword(&info.sa, &info.list, src + i, vars, substs, nsubst) ;
+      if (r < 0) goto err ;
+      i += r ;
+    }
+    {
+      int r = substword(&info, 0, info.sa.len, 0, 0) ;
+      if (r < 0) goto err ;
+      nc += r ;
+    }
   }
   genalloc_free(elsubsu_t, &info.list) ;
   stralloc_free(&info.sa) ;
   if (!wasnull) stralloc_free(dst) ;
   *dst = info.dst ;
-  return (int)nc ;
+  return nc ;
 
 err :
   genalloc_free(elsubsu_t, &info.list) ;
diff --git a/src/libexecline/el_transform.c b/src/libexecline/el_transform.c
index ac84d1d..210cbdf 100644
--- a/src/libexecline/el_transform.c
+++ b/src/libexecline/el_transform.c
@@ -1,14 +1,15 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/netstring.h>
 #include <skalibs/skamisc.h>
 #include <skalibs/stralloc.h>
 #include <execline/execline.h>
 
-static void el_crunch (stralloc *sa, unsigned int base, char const *delim)
+static void el_crunch (stralloc *sa, size_t base, char const *delim)
 {
-  register unsigned int i = base, j = base ;
+  register size_t i = base, j = base ;
   register int crunching = 0 ;
   for (; i < sa->len ; i++)
   {
@@ -23,10 +24,10 @@ static void el_crunch (stralloc *sa, unsigned int base, char const *delim)
   sa->len = j ;
 }
 
-static int el_split (stralloc *sa, unsigned int base, eltransforminfo_t const *si, int chomped)
+static int el_split (stralloc *sa, size_t base, eltransforminfo_t const *si, int chomped)
 {
-  unsigned int n = 0 ;
-  register unsigned int i = base ;
+  int n = 0 ;
+  register size_t i = base ;
   for (; i < sa->len ; i++)
     if (si->delim[str_chr(si->delim, sa->s[i])])
     {
@@ -44,13 +45,13 @@ static int el_split (stralloc *sa, unsigned int base, eltransforminfo_t const *s
   return n ;
 }
 
-static int el_splitnetstring (stralloc *sa, unsigned int base)
+static int el_splitnetstring (stralloc *sa, size_t base)
 {
-  unsigned int tmpbase = satmp.len ;
-  unsigned int n = 0, i = base ;
+  size_t tmpbase = satmp.len, i = base ;
+  int n = 0 ;
   while (i < sa->len)
   {
-    register int r = netstring_decode(&satmp, sa->s + i, sa->len - i) ;
+    register ssize_t r = netstring_decode(&satmp, sa->s + i, sa->len - i) ;
     if (r < 0) goto err ;
     if (!stralloc_0(&satmp)) goto err ;
     i += r ; n++ ;
@@ -69,7 +70,7 @@ err:
   return -1 ;
 }
 
-int el_transform (stralloc *sa, unsigned int i, eltransforminfo_t const *si)
+int el_transform (stralloc *sa, size_t i, eltransforminfo_t const *si)
 {
   int chomped = 0 ;
   if (si->crunch && *si->delim) el_crunch(sa, i, si->delim) ;
diff --git a/src/libexecline/el_vardupl.c b/src/libexecline/el_vardupl.c
index 7583669..279e79d 100644
--- a/src/libexecline/el_vardupl.c
+++ b/src/libexecline/el_vardupl.c
@@ -1,11 +1,12 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <execline/execline.h>
 
-int el_vardupl (char const *key, char const *s, unsigned int len)
+int el_vardupl (char const *key, char const *s, size_t len)
 {
-  register unsigned int i = 0 ;
+  register size_t i = 0 ;
   for (; i < len ; i += str_len(s + i) + 1)
     if (!str_diff(key, s + i)) return 1 ;
   return 0 ;
diff --git a/src/libexecline/exlp.c b/src/libexecline/exlp.c
index 060eb68..1ba37c0 100644
--- a/src/libexecline/exlp.c
+++ b/src/libexecline/exlp.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/env.h>
 #include <skalibs/strerr2.h>
@@ -11,13 +12,14 @@
 	
 int exlp (unsigned int nmin, char const *const *envp, exlsn_t *info)
 {
-  unsigned int varbase = info->vars.len ;
-  unsigned int valbase = info->values.len ;
-  unsigned int datbase = genalloc_len(elsubst_t, &info->data) ;
-  unsigned int i = 0 ;
-  char const *x = env_get2(envp, "#") ;
+  size_t varbase = info->vars.len ;
+  size_t valbase = info->values.len ;
+  size_t datbase = genalloc_len(elsubst_t, &info->data) ;
+  size_t poszero ;
   elsubst_t blah ;
-  unsigned int n, ntot, poszero ;
+  char const *x = env_get2(envp, "#") ;
+  unsigned int n, ntot, i = 0 ;
+
   if (!x) return -2 ;
   if (!uint0_scan(x, &n)) return -2 ;
   if (el_vardupl("#", info->vars.s, info->vars.len)) return -2 ;
@@ -47,7 +49,7 @@ int exlp (unsigned int nmin, char const *const *envp, exlsn_t *info)
   for (; i <= ntot ; i++)
   {
     char fmt[UINT_FMT] ;
-    unsigned int l = uint_fmt(fmt, i) ;
+    size_t l = uint_fmt(fmt, i) ;
     fmt[l] = 0 ;
     if (el_vardupl(fmt, info->vars.s, info->vars.len)) goto err2 ;
     x = (i <= n) ? env_get2(envp, fmt) : "" ;
diff --git a/src/libexecline/exlsn_multidefine.c b/src/libexecline/exlsn_multidefine.c
index e64cbfd..9c5e248 100644
--- a/src/libexecline/exlsn_multidefine.c
+++ b/src/libexecline/exlsn_multidefine.c
@@ -1,5 +1,6 @@
 /* ISC license. */
 
+#include <sys/types.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/bytestr.h>
 #include <skalibs/stralloc.h>
@@ -11,9 +12,9 @@ int exlsn_multidefine (int argc, char const **argv, char const *const *envp, exl
 {
   eltransforminfo_t si = ELTRANSFORMINFO_ZERO ;
   subgetopt_t localopt = SUBGETOPT_ZERO ;
-  unsigned int varbase = info->vars.len ;
-  unsigned int valbase = info->values.len ;
-  unsigned int pos = valbase ;
+  size_t varbase = info->vars.len ;
+  size_t valbase = info->values.len ;
+  size_t pos = valbase ;
   unsigned int i = 0 ;
   unsigned int max ;
   char const *x ;