mirror of
https://github.com/git-for-windows/git.git
synced 2026-04-27 18:11:59 -05:00
Win32: dirent.c: Move opendir down
Move opendir down in preparation for the next patch. Signed-off-by: Karsten Blees <blees@dcon.de>
This commit is contained in:
committed by
Johannes Schindelin
parent
4619239ea1
commit
b8f812cef6
@@ -18,40 +18,6 @@ static inline void finddata2dirent(struct dirent *ent, WIN32_FIND_DATAW *fdata)
|
|||||||
ent->d_type = DT_REG;
|
ent->d_type = DT_REG;
|
||||||
}
|
}
|
||||||
|
|
||||||
DIR *opendir(const char *name)
|
|
||||||
{
|
|
||||||
wchar_t pattern[MAX_PATH + 2]; /* + 2 for '/' '*' */
|
|
||||||
WIN32_FIND_DATAW fdata;
|
|
||||||
HANDLE h;
|
|
||||||
int len;
|
|
||||||
DIR *dir;
|
|
||||||
|
|
||||||
/* convert name to UTF-16 and check length < MAX_PATH */
|
|
||||||
if ((len = xutftowcs_path(pattern, name)) < 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* append optional '/' and wildcard '*' */
|
|
||||||
if (len && !is_dir_sep(pattern[len - 1]))
|
|
||||||
pattern[len++] = '/';
|
|
||||||
pattern[len++] = '*';
|
|
||||||
pattern[len] = 0;
|
|
||||||
|
|
||||||
/* open find handle */
|
|
||||||
h = FindFirstFileW(pattern, &fdata);
|
|
||||||
if (h == INVALID_HANDLE_VALUE) {
|
|
||||||
DWORD err = GetLastError();
|
|
||||||
errno = (err == ERROR_DIRECTORY) ? ENOTDIR : err_win_to_posix(err);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* initialize DIR structure and copy first dir entry */
|
|
||||||
dir = xmalloc(sizeof(DIR));
|
|
||||||
dir->dd_handle = h;
|
|
||||||
dir->dd_stat = 0;
|
|
||||||
finddata2dirent(&dir->dd_dir, &fdata);
|
|
||||||
return dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct dirent *readdir(DIR *dir)
|
struct dirent *readdir(DIR *dir)
|
||||||
{
|
{
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
@@ -90,3 +56,37 @@ int closedir(DIR *dir)
|
|||||||
free(dir);
|
free(dir);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DIR *opendir(const char *name)
|
||||||
|
{
|
||||||
|
wchar_t pattern[MAX_PATH + 2]; /* + 2 for '/' '*' */
|
||||||
|
WIN32_FIND_DATAW fdata;
|
||||||
|
HANDLE h;
|
||||||
|
int len;
|
||||||
|
DIR *dir;
|
||||||
|
|
||||||
|
/* convert name to UTF-16 and check length < MAX_PATH */
|
||||||
|
if ((len = xutftowcs_path(pattern, name)) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* append optional '/' and wildcard '*' */
|
||||||
|
if (len && !is_dir_sep(pattern[len - 1]))
|
||||||
|
pattern[len++] = '/';
|
||||||
|
pattern[len++] = '*';
|
||||||
|
pattern[len] = 0;
|
||||||
|
|
||||||
|
/* open find handle */
|
||||||
|
h = FindFirstFileW(pattern, &fdata);
|
||||||
|
if (h == INVALID_HANDLE_VALUE) {
|
||||||
|
DWORD err = GetLastError();
|
||||||
|
errno = (err == ERROR_DIRECTORY) ? ENOTDIR : err_win_to_posix(err);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* initialize DIR structure and copy first dir entry */
|
||||||
|
dir = xmalloc(sizeof(DIR));
|
||||||
|
dir->dd_handle = h;
|
||||||
|
dir->dd_stat = 0;
|
||||||
|
finddata2dirent(&dir->dd_dir, &fdata);
|
||||||
|
return dir;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user