#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
-#include <pty.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <termios.h>
#include <wchar.h>
-
+#ifdef __linux__
+# include <pty.h>
+#elif defined(__FreeBSD__)
+# include <libutil.h>
+#elif defined(__OpenBSD__)
+# include <util.h>
+#endif
#include "madtty.h"
+#ifndef NCURSES_ATTR_SHIFT
+# define NCURSES_ATTR_SHIFT 8
+#endif
+
#define IS_CONTROL(ch) !((ch) & 0xffffff60UL)
static int has_default = 0;
lines[row].attr = realloc(lines[row].attr, sizeof(uint16_t) * cols);
if (t->cols < cols)
t_row_set(lines + row, t->cols, cols - t->cols, 0);
+ else
+ lines[row].dirty = true;
}
t->cols = cols;
}
while (t->rows < rows) {
lines[t->rows].text = (wchar_t *)calloc(sizeof(wchar_t), cols);
lines[t->rows].attr = (uint16_t *)calloc(sizeof(uint16_t), cols);
+ t_row_set(lines + t->rows, 0, t->cols, 0);
t->rows++;
}
t->curs_row += lines - t->lines;
- t->scroll_top += lines - t->lines;
- t->scroll_bot += lines - t->lines;
- if (t->scroll_bot > lines + t->rows)
- t->scroll_bot = lines + t->rows;
+ t->scroll_top = lines;
+ t->scroll_bot = lines + rows;
t->lines = lines;
clamp_cursor_to_bounds(t);
ioctl(t->pty, TIOCSWINSZ, &ws);