| 
						
						
						
					 | 
				
				 | 
				
					@ -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); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} |