merge lsx -> default
						commit
						5e0156c072
					
				
							
								
								
									
										21
									
								
								lsx.c
								
								
								
								
							
							
						
						
									
										21
									
								
								lsx.c
								
								
								
								
							|  | @ -1,5 +1,6 @@ | |||
| /* See LICENSE file for copyright and license details. */ | ||||
| #include <dirent.h> | ||||
| #include <errno.h> | ||||
| #include <limits.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | @ -8,6 +9,8 @@ | |||
| 
 | ||||
| static void lsx(const char *dir); | ||||
| 
 | ||||
| static int status = EXIT_SUCCESS; | ||||
| 
 | ||||
| int | ||||
| main(int argc, char *argv[]) { | ||||
| 	int i; | ||||
|  | @ -16,7 +19,7 @@ main(int argc, char *argv[]) { | |||
| 		lsx("."); | ||||
| 	else for(i = 1; i < argc; i++) | ||||
| 		lsx(argv[i]); | ||||
| 	return EXIT_SUCCESS; | ||||
| 	return status; | ||||
| } | ||||
| 
 | ||||
| void | ||||
|  | @ -26,13 +29,15 @@ lsx(const char *dir) { | |||
| 	struct stat st; | ||||
| 	DIR *dp; | ||||
| 
 | ||||
| 	if(!(dp = opendir(dir))) { | ||||
| 		perror(dir); | ||||
| 		return; | ||||
| 	} | ||||
| 	while((d = readdir(dp))) | ||||
| 	for(dp = opendir(dir); dp && (d = readdir(dp)); errno = 0) | ||||
| 		if(snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name) < (int)sizeof buf | ||||
| 		&& !stat(buf, &st) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | ||||
| 		&& access(buf, X_OK) == 0 && stat(buf, &st) == 0 && S_ISREG(st.st_mode)) | ||||
| 			puts(d->d_name); | ||||
| 	closedir(dp); | ||||
| 
 | ||||
| 	if(errno != 0) { | ||||
| 		status = EXIT_FAILURE; | ||||
| 		perror(dir); | ||||
| 	} | ||||
| 	if(dp) | ||||
| 		closedir(dp); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue