Sort directory entries when using -r
This commit is contained in:
		
							parent
							
								
									5a35484e71
								
							
						
					
					
						commit
						c5f6b2c0d5
					
				
							
								
								
									
										15
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								main.c
									
									
									
									
									
								
							| @ -199,10 +199,15 @@ int check_append(const char *filename) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| int fncmp(const void *a, const void *b) { | ||||
| 	return strcoll(*((char* const*) a), *((char* const*) b)); | ||||
| } | ||||
| 
 | ||||
| void read_dir_rec(const char *dirname) { | ||||
| 	char *filename; | ||||
| 	const char **dirnames; | ||||
| 	int dircnt, diridx; | ||||
| 	int fcnt, fstart; | ||||
| 	unsigned char first; | ||||
| 	size_t len; | ||||
| 	DIR *dir; | ||||
| @ -217,6 +222,9 @@ void read_dir_rec(const char *dirname) { | ||||
| 	dirnames = (const char**) s_malloc(dircnt * sizeof(const char*)); | ||||
| 	dirnames[0] = dirname; | ||||
| 
 | ||||
| 	fcnt = 0; | ||||
| 	fstart = fileidx; | ||||
| 
 | ||||
| 	while (diridx > 0) { | ||||
| 		dirname = dirnames[--diridx]; | ||||
| 		if (!(dir = opendir(dirname))) { | ||||
| @ -238,7 +246,9 @@ void read_dir_rec(const char *dirname) { | ||||
| 					} | ||||
| 					dirnames[diridx++] = filename; | ||||
| 				} else { | ||||
| 					if (!check_append(filename)) | ||||
| 					if (check_append(filename)) | ||||
| 						++fcnt; | ||||
| 					else | ||||
| 						free(filename); | ||||
| 				} | ||||
| 			} | ||||
| @ -251,6 +261,9 @@ void read_dir_rec(const char *dirname) { | ||||
| 			first = 0; | ||||
| 	} | ||||
| 
 | ||||
| 	if (fcnt > 1) | ||||
| 		qsort(filenames + fstart, fcnt, sizeof(char*), fncmp); | ||||
| 
 | ||||
| 	free(dirnames); | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert