| 
						
						
						
					 | 
				
				 | 
				
					@ -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> | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -28,14 +29,15 @@ lsx(const char *dir) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						struct stat st; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						DIR *dp; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!(dp = opendir(dir))) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(dp = opendir(dir); dp && (d = readdir(dp)); errno = 0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name) < (int)sizeof buf | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							&& access(buf, X_OK) == 0 && stat(buf, &st) == 0 && S_ISREG(st.st_mode)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								puts(d->d_name); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(errno != 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							status = EXIT_FAILURE; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							perror(dir); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						while((d = readdir(dp))) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name) < (int)sizeof buf | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							&& stat(buf, &st) == 0 && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								puts(d->d_name); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						closedir(dp); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(dp) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							closedir(dp); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} |