diff options
Diffstat (limited to 'src/libexecline/exlp.c')
-rw-r--r-- | src/libexecline/exlp.c | 16 |
1 files changed, 9 insertions, 7 deletions
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) : "" ; |