|  |  | @ -186,18 +186,18 @@ static void tputc(Rune); | 
			
		
	
		
			
				
					|  |  |  | static void treset(void); | 
			
		
	
		
			
				
					|  |  |  | static void tscrollup(int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tscrolldown(int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetattr(int *, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetchar(Rune, Glyph *, int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetattr(const int *, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetchar(Rune, const Glyph *, int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetdirt(int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetscroll(int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tswapscreen(void); | 
			
		
	
		
			
				
					|  |  |  | static void tsetmode(int, int, int *, int); | 
			
		
	
		
			
				
					|  |  |  | static void tsetmode(int, int, const int *, int); | 
			
		
	
		
			
				
					|  |  |  | static int twrite(const char *, int, int); | 
			
		
	
		
			
				
					|  |  |  | static void tfulldirt(void); | 
			
		
	
		
			
				
					|  |  |  | static void tcontrolcode(uchar ); | 
			
		
	
		
			
				
					|  |  |  | static void tdectest(char ); | 
			
		
	
		
			
				
					|  |  |  | static void tdefutf8(char); | 
			
		
	
		
			
				
					|  |  |  | static int32_t tdefcolor(int *, int *, int); | 
			
		
	
		
			
				
					|  |  |  | static int32_t tdefcolor(const int *, int *, int); | 
			
		
	
		
			
				
					|  |  |  | static void tdeftran(char); | 
			
		
	
		
			
				
					|  |  |  | static void tstrsequence(uchar); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
	
		
			
				
					|  |  | @ -226,10 +226,10 @@ static int iofd = 1; | 
			
		
	
		
			
				
					|  |  |  | static int cmdfd; | 
			
		
	
		
			
				
					|  |  |  | static pid_t pid; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | static uchar utfbyte[UTF_SIZ + 1] = {0x80,    0, 0xC0, 0xE0, 0xF0}; | 
			
		
	
		
			
				
					|  |  |  | static uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8}; | 
			
		
	
		
			
				
					|  |  |  | static Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000}; | 
			
		
	
		
			
				
					|  |  |  | static Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF}; | 
			
		
	
		
			
				
					|  |  |  | static const uchar utfbyte[UTF_SIZ + 1] = {0x80,    0, 0xC0, 0xE0, 0xF0}; | 
			
		
	
		
			
				
					|  |  |  | static const uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8}; | 
			
		
	
		
			
				
					|  |  |  | static const Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000}; | 
			
		
	
		
			
				
					|  |  |  | static const Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF}; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | ssize_t | 
			
		
	
		
			
				
					|  |  |  | xwrite(int fd, const char *s, size_t len) | 
			
		
	
	
		
			
				
					|  |  | @ -269,12 +269,14 @@ xrealloc(void *p, size_t len) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | char * | 
			
		
	
		
			
				
					|  |  |  | xstrdup(char *s) | 
			
		
	
		
			
				
					|  |  |  | xstrdup(const char *s) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | if ((s = strdup(s)) == NULL) | 
			
		
	
		
			
				
					|  |  |  | char *p; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if ((p = strdup(s)) == NULL) | 
			
		
	
		
			
				
					|  |  |  | die("strdup: %s\n", strerror(errno)); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | return s; | 
			
		
	
		
			
				
					|  |  |  | return p; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | size_t | 
			
		
	
	
		
			
				
					|  |  | @ -518,7 +520,7 @@ selsnap(int *x, int *y, int direction) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | int newx, newy, xt, yt; | 
			
		
	
		
			
				
					|  |  |  | int delim, prevdelim; | 
			
		
	
		
			
				
					|  |  |  | Glyph *gp, *prevgp; | 
			
		
	
		
			
				
					|  |  |  | const Glyph *gp, *prevgp; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | switch (sel.snap) { | 
			
		
	
		
			
				
					|  |  |  | case SNAP_WORD: | 
			
		
	
	
		
			
				
					|  |  | @ -591,7 +593,7 @@ getsel(void) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | char *str, *ptr; | 
			
		
	
		
			
				
					|  |  |  | int y, bufsize, lastx, linelen; | 
			
		
	
		
			
				
					|  |  |  | Glyph *gp, *last; | 
			
		
	
		
			
				
					|  |  |  | const Glyph *gp, *last; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if (sel.ob.x == -1) | 
			
		
	
		
			
				
					|  |  |  | return NULL; | 
			
		
	
	
		
			
				
					|  |  | @ -758,7 +760,7 @@ stty(char **args) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | int | 
			
		
	
		
			
				
					|  |  |  | ttynew(char *line, char *cmd, char *out, char **args) | 
			
		
	
		
			
				
					|  |  |  | ttynew(const char *line, char *cmd, const char *out, char **args) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | int m, s; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
	
		
			
				
					|  |  | @ -1186,9 +1188,9 @@ tmoveto(int x, int y) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | tsetchar(Rune u, Glyph *attr, int x, int y) | 
			
		
	
		
			
				
					|  |  |  | tsetchar(Rune u, const Glyph *attr, int x, int y) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | static char *vt100_0[62] = { /* 0x41 - 0x7e */ | 
			
		
	
		
			
				
					|  |  |  | static const char *vt100_0[62] = { /* 0x41 - 0x7e */ | 
			
		
	
		
			
				
					|  |  |  | "↑", "↓", "→", "←", "█", "▚", "☃", /* A - G */ | 
			
		
	
		
			
				
					|  |  |  | 0, 0, 0, 0, 0, 0, 0, 0, /* H - O */ | 
			
		
	
		
			
				
					|  |  |  | 0, 0, 0, 0, 0, 0, 0, 0, /* P - W */ | 
			
		
	
	
		
			
				
					|  |  | @ -1300,7 +1302,7 @@ tdeleteline(int n) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | int32_t | 
			
		
	
		
			
				
					|  |  |  | tdefcolor(int *attr, int *npar, int l) | 
			
		
	
		
			
				
					|  |  |  | tdefcolor(const int *attr, int *npar, int l) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | int32_t idx = -1; | 
			
		
	
		
			
				
					|  |  |  | uint r, g, b; | 
			
		
	
	
		
			
				
					|  |  | @ -1350,7 +1352,7 @@ tdefcolor(int *attr, int *npar, int l) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | tsetattr(int *attr, int l) | 
			
		
	
		
			
				
					|  |  |  | tsetattr(const int *attr, int l) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | int i; | 
			
		
	
		
			
				
					|  |  |  | int32_t idx; | 
			
		
	
	
		
			
				
					|  |  | @ -1468,9 +1470,9 @@ tsetscroll(int t, int b) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | void | 
			
		
	
		
			
				
					|  |  |  | tsetmode(int priv, int set, int *args, int narg) | 
			
		
	
		
			
				
					|  |  |  | tsetmode(int priv, int set, const int *args, int narg) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | int alt, *lim; | 
			
		
	
		
			
				
					|  |  |  | int alt; const int *lim; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | for (lim = args + narg; args < lim; ++args) { | 
			
		
	
		
			
				
					|  |  |  | if (priv) { | 
			
		
	
	
		
			
				
					|  |  | @ -2020,7 +2022,7 @@ void | 
			
		
	
		
			
				
					|  |  |  | tdumpline(int n) | 
			
		
	
		
			
				
					|  |  |  | { | 
			
		
	
		
			
				
					|  |  |  | char buf[UTF_SIZ]; | 
			
		
	
		
			
				
					|  |  |  | Glyph *bp, *end; | 
			
		
	
		
			
				
					|  |  |  | const Glyph *bp, *end; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | bp = &term.line[n][0]; | 
			
		
	
		
			
				
					|  |  |  | end = &bp[MIN(tlinelen(n), term.col) - 1]; | 
			
		
	
	
		
			
				
					|  |  | 
 |