Provide default pagers
Borrowed from systemd.
This commit is contained in:
		
							parent
							
								
									851b47bd7d
								
							
						
					
					
						commit
						c56bfbe863
					
				
					 1 changed files with 8 additions and 3 deletions
				
			
		|  | @ -291,8 +291,9 @@ int handleExceptions(const string & programName, std::function<void()> fun) | |||
| 
 | ||||
| RunPager::RunPager() | ||||
| { | ||||
|     string pager = getEnv("PAGER"); | ||||
|     if (!isatty(STDOUT_FILENO) || pager.empty()) return; | ||||
|     if (!isatty(STDOUT_FILENO)) return; | ||||
|     string pager = getEnv("PAGER", "default"); | ||||
|     if (pager == "" || pager == "cat") return; | ||||
| 
 | ||||
|     /* Ignore SIGINT. The pager will handle it (and we'll get
 | ||||
|        SIGPIPE). */ | ||||
|  | @ -312,7 +313,11 @@ RunPager::RunPager() | |||
|             throw SysError("dupping stdin"); | ||||
|         if (!getenv("LESS")) | ||||
|             setenv("LESS", "FRSXMK", 1); | ||||
|         if (pager != "default") | ||||
|             execl("/bin/sh", "sh", "-c", pager.c_str(), NULL); | ||||
|         execlp("pager", "pager", NULL); | ||||
|         execlp("less", "less", NULL); | ||||
|         execlp("more", "more", NULL); | ||||
|         throw SysError(format("executing ‘%1%’") % pager); | ||||
|     }); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue