You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							675 B
						
					
					
				
			
		
		
	
	
							40 lines
						
					
					
						
							675 B
						
					
					
				| emulate -L zsh | |
|  | |
| zmodload zsh/curses | |
|  | |
| test_fd0() { | |
|     true <&0 | |
| } | |
|  | |
| local restore=0 FD | |
|  | |
| # Reattach to terminal | |
| if [ ! -t 0 ]; then | |
|     # Check if can reattach to terminal in any way | |
|     if [[ ! -c /dev/tty && ! -t 2 ]]; then | |
|         echo "No terminal available (no /dev/tty and no terminal at stderr)" | |
|         return 1 | |
|     fi | |
|  | |
|     if test_fd0 2>/dev/null; then | |
|         exec {FD}<&0 | |
|         restore=2 | |
|     else | |
|         restore=1 | |
|     fi | |
|  | |
|     if [[ ! -c /dev/tty ]]; then | |
|         exec <&2 | |
|     else | |
|         exec </dev/tty | |
|     fi | |
| fi | |
|  | |
| # Run the command | |
| "$@" | |
|  | |
| # Restore FD state | |
| (( restore == 1 )) && exec <&- | |
| (( restore == 2 )) && exec <&$FD && exec {FD}<&- | |
|  | |
| # vim: set filetype=zsh:
 | |
| 
 |