lsx: return failure on error
This commit is contained in:
		
							
								
								
									
										7
									
								
								lsx.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								lsx.c
									
									
									
									
									
								
							@@ -8,6 +8,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void lsx(const char *dir);
 | 
					static void lsx(const char *dir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int status = EXIT_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
main(int argc, char *argv[]) {
 | 
					main(int argc, char *argv[]) {
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
@@ -16,7 +18,7 @@ main(int argc, char *argv[]) {
 | 
				
			|||||||
		lsx(".");
 | 
							lsx(".");
 | 
				
			||||||
	else for(i = 1; i < argc; i++)
 | 
						else for(i = 1; i < argc; i++)
 | 
				
			||||||
		lsx(argv[i]);
 | 
							lsx(argv[i]);
 | 
				
			||||||
	return EXIT_SUCCESS;
 | 
						return status;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
@@ -27,12 +29,13 @@ lsx(const char *dir) {
 | 
				
			|||||||
	DIR *dp;
 | 
						DIR *dp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!(dp = opendir(dir))) {
 | 
						if(!(dp = opendir(dir))) {
 | 
				
			||||||
 | 
							status = EXIT_FAILURE;
 | 
				
			||||||
		perror(dir);
 | 
							perror(dir);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	while((d = readdir(dp)))
 | 
						while((d = readdir(dp)))
 | 
				
			||||||
		if(snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name) < (int)sizeof buf
 | 
							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);
 | 
								puts(d->d_name);
 | 
				
			||||||
	closedir(dp);
 | 
						closedir(dp);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user