strtol() doesn't return error indicator for overflow, it just sets errno. So add estrtol() (which clears errno first), and xstrtol() (which error_exit()s on overflow).
diff --git a/lib/lib.h b/lib/lib.h
index 00c7a05..34c1a19 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -148,6 +148,8 @@
 int64_t peek(void *ptr, unsigned size);
 void poke(void *ptr, uint64_t val, int size);
 struct string_list *find_in_path(char *path, char *filename);
+long estrtol(char *str, char **end, int base);
+long xstrtol(char *str, char **end, int base);
 long atolx(char *c);
 long atolx_range(char *numstr, long low, long high);
 int numlen(long l);