Move terminal echo logic into st.c
The only thing differentiating ttywrite and ttysend was the potential for echo; make this a parameter and remove ttysend. Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
This commit is contained in:
		
							parent
							
								
									cfc7acdfd9
								
							
						
					
					
						commit
						52d6fb1ab1
					
				
							
								
								
									
										23
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								st.c
									
									
									
									
									
								
							| @ -784,12 +784,15 @@ ttyread(void) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| ttywrite(const char *s, size_t n) | ttywrite(const char *s, size_t n, int may_echo) | ||||||
| { | { | ||||||
| 	fd_set wfd, rfd; | 	fd_set wfd, rfd; | ||||||
| 	ssize_t r; | 	ssize_t r; | ||||||
| 	size_t lim = 256; | 	size_t lim = 256; | ||||||
| 
 | 
 | ||||||
|  | 	if (may_echo && IS_SET(MODE_ECHO)) | ||||||
|  | 		twrite(s, n, 1); | ||||||
|  | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * Remember that we are using a pty, which might be a modem line. | 	 * Remember that we are using a pty, which might be a modem line. | ||||||
| 	 * Writing too much will clog the line. That's why we are doing this | 	 * Writing too much will clog the line. That's why we are doing this | ||||||
| @ -840,14 +843,6 @@ write_error: | |||||||
| 	die("write error on tty: %s\n", strerror(errno)); | 	die("write error on tty: %s\n", strerror(errno)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void |  | ||||||
| ttysend(char *s, size_t n) |  | ||||||
| { |  | ||||||
| 	ttywrite(s, n); |  | ||||||
| 	if (IS_SET(MODE_ECHO)) |  | ||||||
| 		twrite(s, n, 1); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| ttyresize(int tw, int th) | ttyresize(int tw, int th) | ||||||
| { | { | ||||||
| @ -1570,7 +1565,7 @@ csihandle(void) | |||||||
| 		break; | 		break; | ||||||
| 	case 'c': /* DA -- Device Attributes */ | 	case 'c': /* DA -- Device Attributes */ | ||||||
| 		if (csiescseq.arg[0] == 0) | 		if (csiescseq.arg[0] == 0) | ||||||
| 			ttywrite(vtiden, strlen(vtiden)); | 			ttywrite(vtiden, strlen(vtiden), 0); | ||||||
| 		break; | 		break; | ||||||
| 	case 'C': /* CUF -- Cursor <n> Forward */ | 	case 'C': /* CUF -- Cursor <n> Forward */ | ||||||
| 	case 'a': /* HPR -- Cursor <n> Forward */ | 	case 'a': /* HPR -- Cursor <n> Forward */ | ||||||
| @ -1698,7 +1693,7 @@ csihandle(void) | |||||||
| 		if (csiescseq.arg[0] == 6) { | 		if (csiescseq.arg[0] == 6) { | ||||||
| 			len = snprintf(buf, sizeof(buf),"\033[%i;%iR", | 			len = snprintf(buf, sizeof(buf),"\033[%i;%iR", | ||||||
| 					term.c.y+1, term.c.x+1); | 					term.c.y+1, term.c.x+1); | ||||||
| 			ttywrite(buf, len); | 			ttywrite(buf, len, 0); | ||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case 'r': /* DECSTBM -- Set Scrolling Region */ | 	case 'r': /* DECSTBM -- Set Scrolling Region */ | ||||||
| @ -1916,7 +1911,7 @@ iso14755(const Arg *arg) | |||||||
| 	    (*e != '\n' && *e != '\0')) | 	    (*e != '\n' && *e != '\0')) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	ttysend(uc, utf8encode(utf32, uc)); | 	ttywrite(uc, utf8encode(utf32, uc), 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -2129,7 +2124,7 @@ tcontrolcode(uchar ascii) | |||||||
| 	case 0x99:   /* TODO: SGCI */ | 	case 0x99:   /* TODO: SGCI */ | ||||||
| 		break; | 		break; | ||||||
| 	case 0x9a:   /* DECID -- Identify Terminal */ | 	case 0x9a:   /* DECID -- Identify Terminal */ | ||||||
| 		ttywrite(vtiden, strlen(vtiden)); | 		ttywrite(vtiden, strlen(vtiden), 0); | ||||||
| 		break; | 		break; | ||||||
| 	case 0x9b:   /* TODO: CSI */ | 	case 0x9b:   /* TODO: CSI */ | ||||||
| 	case 0x9c:   /* TODO: ST */ | 	case 0x9c:   /* TODO: ST */ | ||||||
| @ -2201,7 +2196,7 @@ eschandle(uchar ascii) | |||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case 'Z': /* DECID -- Identify Terminal */ | 	case 'Z': /* DECID -- Identify Terminal */ | ||||||
| 		ttywrite(vtiden, strlen(vtiden)); | 		ttywrite(vtiden, strlen(vtiden), 0); | ||||||
| 		break; | 		break; | ||||||
| 	case 'c': /* RIS -- Reset to inital state */ | 	case 'c': /* RIS -- Reset to inital state */ | ||||||
| 		treset(); | 		treset(); | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								st.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								st.h
									
									
									
									
									
								
							| @ -176,8 +176,7 @@ void tsetdirtattr(int); | |||||||
| void ttynew(char *, char *, char **); | void ttynew(char *, char *, char **); | ||||||
| size_t ttyread(void); | size_t ttyread(void); | ||||||
| void ttyresize(int, int); | void ttyresize(int, int); | ||||||
| void ttysend(char *, size_t); | void ttywrite(const char *, size_t, int); | ||||||
| void ttywrite(const char *, size_t); |  | ||||||
| 
 | 
 | ||||||
| void resettitle(void); | void resettitle(void); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								x.c
									
									
									
									
									
								
							| @ -390,7 +390,7 @@ mousereport(XEvent *e) | |||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ttywrite(buf, len); | 	ttywrite(buf, len, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -408,7 +408,7 @@ bpress(XEvent *e) | |||||||
| 	for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { | 	for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { | ||||||
| 		if (e->xbutton.button == ms->b | 		if (e->xbutton.button == ms->b | ||||||
| 				&& match(ms->mask, e->xbutton.state)) { | 				&& match(ms->mask, e->xbutton.state)) { | ||||||
| 			ttysend(ms->s, strlen(ms->s)); | 			ttywrite(ms->s, strlen(ms->s), 1); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @ -520,10 +520,10 @@ selnotify(XEvent *e) | |||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) | 		if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) | ||||||
| 			ttywrite("\033[200~", 6); | 			ttywrite("\033[200~", 6, 0); | ||||||
| 		ttysend((char *)data, nitems * format / 8); | 		ttywrite((char *)data, nitems * format / 8, 1); | ||||||
| 		if (IS_SET(MODE_BRCKTPASTE) && rem == 0) | 		if (IS_SET(MODE_BRCKTPASTE) && rem == 0) | ||||||
| 			ttywrite("\033[201~", 6); | 			ttywrite("\033[201~", 6, 0); | ||||||
| 		XFree(data); | 		XFree(data); | ||||||
| 		/* number of 32-bit chunks returned */ | 		/* number of 32-bit chunks returned */ | ||||||
| 		ofs += nitems * format / 32; | 		ofs += nitems * format / 32; | ||||||
| @ -1634,12 +1634,12 @@ focus(XEvent *ev) | |||||||
| 		win.state |= WIN_FOCUSED; | 		win.state |= WIN_FOCUSED; | ||||||
| 		xseturgency(0); | 		xseturgency(0); | ||||||
| 		if (IS_SET(MODE_FOCUS)) | 		if (IS_SET(MODE_FOCUS)) | ||||||
| 			ttywrite("\033[I", 3); | 			ttywrite("\033[I", 3, 0); | ||||||
| 	} else { | 	} else { | ||||||
| 		XUnsetICFocus(xw.xic); | 		XUnsetICFocus(xw.xic); | ||||||
| 		win.state &= ~WIN_FOCUSED; | 		win.state &= ~WIN_FOCUSED; | ||||||
| 		if (IS_SET(MODE_FOCUS)) | 		if (IS_SET(MODE_FOCUS)) | ||||||
| 			ttywrite("\033[O", 3); | 			ttywrite("\033[O", 3, 0); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -1714,7 +1714,7 @@ kpress(XEvent *ev) | |||||||
| 
 | 
 | ||||||
| 	/* 2. custom keys from config.h */ | 	/* 2. custom keys from config.h */ | ||||||
| 	if ((customkey = kmap(ksym, e->state))) { | 	if ((customkey = kmap(ksym, e->state))) { | ||||||
| 		ttysend(customkey, strlen(customkey)); | 		ttywrite(customkey, strlen(customkey), 1); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -1733,7 +1733,7 @@ kpress(XEvent *ev) | |||||||
| 			len = 2; | 			len = 2; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	ttysend(buf, len); | 	ttywrite(buf, len, 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Devin J. Pohly
						Devin J. Pohly