Cygwin: pty: Treat both CR and NL as line feed in transfer_inpup().
- To make read() work properly in canonical mode, writing to the pty pipe should be done line by line. However, only CR was treated as line separator previously in transfer_input(). This patch fixes the issue.
This commit is contained in:
		
							parent
							
								
									845515267b
								
							
						
					
					
						commit
						a263b94b5e
					
				|  | @ -3942,9 +3942,11 @@ fhandler_pty_slave::transfer_input (tty::xfer_dir dir, HANDLE from, tty *ttyp, | ||||||
| 	    } | 	    } | ||||||
| 	  /* Call WriteFile() line by line */ | 	  /* Call WriteFile() line by line */ | ||||||
| 	  char *p0 = ptr; | 	  char *p0 = ptr; | ||||||
| 	  char *p1 = ptr; | 	  char *p_cr, *p_nl; | ||||||
| 	  while ((p1 = (char *) memchr (p0, '\r', len - (p0 - ptr)))) | 	  while ((p_cr = (char *) memchr (p0, '\r', len - (p0 - ptr))) | ||||||
|  | 		 || (p_nl = (char *) memchr (p0, '\n', len - (p0 - ptr)))) | ||||||
| 	    { | 	    { | ||||||
|  | 	      char *p1 = p_cr ? (p_nl ? min (p_cr, p_nl) : p_cr) : p_nl; | ||||||
| 	      *p1 = '\n'; | 	      *p1 = '\n'; | ||||||
| 	      n = p1 - p0 + 1; | 	      n = p1 - p0 + 1; | ||||||
| 	      if (n && WriteFile (to, p0, n, &n, NULL) && n) | 	      if (n && WriteFile (to, p0, n, &n, NULL) && n) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue