 0217569bb2
			
		
	
	0217569bb2
	
	
	
		
			
			Changes opendir/readdir to use Windows Unicode APIs and convert between UTF-8/UTF-16. Removes parameter checks that are already covered by xutftowcs_path. This changes detection of ENAMETOOLONG from MAX_PATH - 2 to MAX_PATH (matching is_dir_empty in mingw.c). If name + "/*" or the resulting absolute path is too long, FindFirstFile fails and errno is set through err_win_to_posix. Increases the size of dirent.d_name to accommodate the full WIN32_FIND_DATA.cFileName converted to UTF-8 (UTF-16 to UTF-8 conversion may grow by factor three in the worst case). Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Stepan Kasal <kasal@ucw.cz> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			21 lines
		
	
	
		
			427 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			427 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef DIRENT_H
 | |
| #define DIRENT_H
 | |
| 
 | |
| typedef struct DIR DIR;
 | |
| 
 | |
| #define DT_UNKNOWN 0
 | |
| #define DT_DIR     1
 | |
| #define DT_REG     2
 | |
| #define DT_LNK     3
 | |
| 
 | |
| struct dirent {
 | |
| 	unsigned char d_type;      /* file type to prevent lstat after readdir */
 | |
| 	char d_name[MAX_PATH * 3]; /* file name (* 3 for UTF-8 conversion) */
 | |
| };
 | |
| 
 | |
| DIR *opendir(const char *dirname);
 | |
| struct dirent *readdir(DIR *dir);
 | |
| int closedir(DIR *dir);
 | |
| 
 | |
| #endif /* DIRENT_H */
 |