30 lines
		
	
	
		
			660 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			660 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Conditionally execute a command based if the file argv[1] doesn't exist */
 | |
| /* Except for execvp, we stick to ANSI C.				   */
 | |
| # include "private/gcconfig.h"
 | |
| # include <stdio.h>
 | |
| # include <stdlib.h>
 | |
| # include <unistd.h>
 | |
| 
 | |
| int main(argc, argv, envp)
 | |
| int argc;
 | |
| char ** argv;
 | |
| char ** envp;
 | |
| {
 | |
|     FILE * f;
 | |
|     if (argc < 3) goto Usage;
 | |
|     if ((f = fopen(argv[1], "rb")) != 0
 | |
|         || (f = fopen(argv[1], "r")) != 0) {
 | |
|         fclose(f);
 | |
|         return(0);
 | |
|     }
 | |
|     printf("^^^^Starting command^^^^\n");
 | |
|     fflush(stdout);
 | |
|     execvp(argv[2], argv+2);
 | |
|     exit(1);
 | |
|     
 | |
| Usage:
 | |
|     fprintf(stderr, "Usage: %s file_name command\n", argv[0]);
 | |
|     return(1);
 | |
| }
 | |
| 
 |