diff options
Diffstat (limited to 'lsx.c')
| -rw-r--r-- | lsx.c | 7 | 
1 files changed, 5 insertions, 2 deletions
@@ -8,6 +8,8 @@  static void lsx(const char *dir); +static int status = EXIT_SUCCESS; +  int  main(int argc, char *argv[]) {  	int i; @@ -16,7 +18,7 @@ main(int argc, char *argv[]) {  		lsx(".");  	else for(i = 1; i < argc; i++)  		lsx(argv[i]); -	return EXIT_SUCCESS; +	return status;  }  void @@ -27,12 +29,13 @@ lsx(const char *dir) {  	DIR *dp;  	if(!(dp = opendir(dir))) { +		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) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) +		&& stat(buf, &st) == 0 && S_ISREG(st.st_mode) && access(buf, X_OK) == 0)  			puts(d->d_name);  	closedir(dp);  }  | 
