tail compat: fix header printing for tail -f
Makes tail -f for multiple files display the header only if another (ie. not currently displayed) file changed. Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		
				
					committed by
					
						 Denys Vlasenko
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							840ef17f63
						
					
				
				
					commit
					64938011f3
				
			
							
								
								
									
										5
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								TODO
									
									
									
									
									
								
							| @@ -127,11 +127,6 @@ patch | ||||
|  | ||||
|   And while we're at it, a new patch filename quoting format is apparently | ||||
|   coming soon:  http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 | ||||
| --- | ||||
| tail | ||||
|   ./busybox tail -f foo.c~ TODO | ||||
|   should not print fmt=header_fmt for subsequent date >> TODO; i.e. only | ||||
|   fmt+ if another (not the current) file did change | ||||
|  | ||||
| Architectural issues: | ||||
|  | ||||
|   | ||||
| @@ -105,6 +105,7 @@ int tail_main(int argc, char **argv) | ||||
|  | ||||
| 	int *fds; | ||||
| 	const char *fmt; | ||||
| 	int prev_fd; | ||||
|  | ||||
| 	INIT_G(); | ||||
|  | ||||
| @@ -309,6 +310,7 @@ int tail_main(int argc, char **argv) | ||||
| 			xwrite(STDOUT_FILENO, tailbuf, taillen); | ||||
| 		} | ||||
| 	} while (++i < nfiles); | ||||
| 	prev_fd = fds[i-1]; | ||||
|  | ||||
| 	tailbuf = xrealloc(tailbuf, BUFSIZ); | ||||
|  | ||||
| @@ -365,9 +367,10 @@ int tail_main(int argc, char **argv) | ||||
| 				nread = tail_read(fd, tailbuf, BUFSIZ); | ||||
| 				if (nread <= 0) | ||||
| 					break; | ||||
| 				if (fmt) { | ||||
| 				if (fmt && (fd != prev_fd)) { | ||||
| 					tail_xprint_header(fmt, filename); | ||||
| 					fmt = NULL; | ||||
| 					prev_fd = fd; | ||||
| 				} | ||||
| 				xwrite(STDOUT_FILENO, tailbuf, nread); | ||||
| 			} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user