libifupdown: add utility function to determine if a path is executable
This commit is contained in:
		
							parent
							
								
									b35d985ea4
								
							
						
					
					
						commit
						eb8f1938dc
					
				
					 2 changed files with 16 additions and 0 deletions
				
			
		|  | @ -20,6 +20,7 @@ | |||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <spawn.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/wait.h> | ||||
| #include <unistd.h> | ||||
|  | @ -58,3 +59,17 @@ lif_execute_fmt(const struct lif_execute_opts *opts, char *const envp[], const c | |||
| 
 | ||||
| 	return WIFEXITED(status) && WEXITSTATUS(status) == 0; | ||||
| } | ||||
| 
 | ||||
| bool | ||||
| lif_file_is_executable(const char *path) | ||||
| { | ||||
| 	struct stat st; | ||||
| 
 | ||||
| 	if (stat(path, &st)) | ||||
| 		return false; | ||||
| 
 | ||||
| 	if (!S_ISREG(st.st_mode)) | ||||
| 		return false; | ||||
| 
 | ||||
| 	return access(path, X_OK); | ||||
| } | ||||
|  |  | |||
|  | @ -25,5 +25,6 @@ struct lif_execute_opts { | |||
| }; | ||||
| 
 | ||||
| extern bool lif_execute_fmt(const struct lif_execute_opts *opts, char *const envp[], const char *fmt, ...); | ||||
| extern bool lif_file_is_executable(const char *path); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue