| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -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]; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |