int saved_argc = 0;
char **saved_argv = NULL;
+static int parsed_columns = 0;
+
size_t page_size(void) {
static __thread size_t pgsz = 0;
long r;
* chars, in \xFF style escaping. May be reversed with
* cunescape. */
- if (!(r = new(char, strlen(s)*4+1)))
+ r = new(char, strlen(s) * 4 + 1);
+ if (!r)
return NULL;
for (f = s, t = r; *f; f++) {
}
static unsigned columns_cached(bool cached) {
- static __thread int parsed_columns = 0, env_columns = -1;
+ static __thread int env_columns = -1;
const char *e;
if (_likely_(parsed_columns > 0 && cached))
return columns_cached(false);
}
+/* intended to be used as a SIGWINCH sighandler */
+void columns_cache_reset(int signum) {
+ parsed_columns = 0;
+}
+
int fd_lines(int fd) {
struct winsize ws;
zero(ws);
break;
n = strlen(t);
- if (n > ((size_t) -1) - l)
+ if (n > ((size_t) -1) - l) {
+ va_end(ap);
return NULL;
+ }
l += n;
}