| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | /* See LICENSE file for copyright and license details. */ | 
					
						
							| 
									
										
										
										
											2015-02-14 21:02:41 +01:00
										 |  |  | #include <sys/resource.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-11 20:33:52 +02:00
										 |  |  | #include <errno.h>
 | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | #include <stdlib.h>
 | 
					
						
							| 
									
										
										
										
											2013-06-11 20:33:52 +02:00
										 |  |  | #include <unistd.h>
 | 
					
						
							| 
									
										
										
										
											2014-11-13 18:29:30 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | #include "util.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-22 15:13:51 +03:00
										 |  |  | static void | 
					
						
							|  |  |  | usage(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-01-30 16:52:44 +01:00
										 |  |  | 	eprintf("usage: %s [-n inc] cmd [arg ...]\n", argv0); | 
					
						
							| 
									
										
										
										
											2014-04-22 15:13:51 +03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							| 
									
										
										
										
											2014-04-18 11:51:18 +01:00
										 |  |  | main(int argc, char *argv[]) | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-03-02 16:53:13 +01:00
										 |  |  | 	int val = 10, r, savederrno; | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	ARGBEGIN { | 
					
						
							|  |  |  | 	case 'n': | 
					
						
							| 
									
										
										
										
											2015-01-30 16:52:44 +01:00
										 |  |  | 		val = estrtonum(EARGF(usage()), PRIO_MIN, PRIO_MAX); | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | 		break; | 
					
						
							|  |  |  | 	default: | 
					
						
							| 
									
										
										
										
											2013-10-07 17:13:01 +01:00
										 |  |  | 		usage(); | 
					
						
							| 
									
										
										
										
											2013-06-11 20:33:52 +02:00
										 |  |  | 		break; | 
					
						
							| 
									
										
										
										
											2015-11-01 10:16:49 +00:00
										 |  |  | 	} ARGEND | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-02 16:53:13 +01:00
										 |  |  | 	if (!argc) | 
					
						
							| 
									
										
										
										
											2013-10-07 17:13:01 +01:00
										 |  |  | 		usage(); | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-11 20:33:52 +02:00
										 |  |  | 	errno = 0; | 
					
						
							| 
									
										
										
										
											2015-03-02 16:53:13 +01:00
										 |  |  | 	r = getpriority(PRIO_PROCESS, 0); | 
					
						
							|  |  |  | 	if (errno) | 
					
						
							| 
									
										
										
										
											2014-01-28 17:10:09 +00:00
										 |  |  | 		weprintf("getpriority:"); | 
					
						
							| 
									
										
										
										
											2015-03-02 16:53:13 +01:00
										 |  |  | 	else | 
					
						
							|  |  |  | 		val += r; | 
					
						
							|  |  |  | 	LIMIT(val, PRIO_MIN, PRIO_MAX); | 
					
						
							|  |  |  | 	if (setpriority(PRIO_PROCESS, 0, val) < 0) | 
					
						
							| 
									
										
										
										
											2014-01-28 17:10:09 +00:00
										 |  |  | 		weprintf("setpriority:"); | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-11 20:33:52 +02:00
										 |  |  | 	execvp(argv[0], argv); | 
					
						
							| 
									
										
										
										
											2014-01-28 17:10:09 +00:00
										 |  |  | 	savederrno = errno; | 
					
						
							|  |  |  | 	weprintf("execvp %s:", argv[0]); | 
					
						
							| 
									
										
										
										
											2015-03-02 16:53:13 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-09 01:04:34 +01:00
										 |  |  | 	_exit(126 + (savederrno == ENOENT)); | 
					
						
							| 
									
										
										
										
											2013-06-09 15:20:55 +02:00
										 |  |  | } |