PostgreSQL Source Code: src/port/dirent.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#ifndef FRONTEND
18#else
20#endif
21
23
24
26{
30};
31
34{
35 DWORD attr;
37
38
39 attr = GetFileAttributes(dirname);
40 if (attr == INVALID_FILE_ATTRIBUTES)
41 {
42 errno = ENOENT;
43 return NULL;
44 }
45 if ((attr & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
46 {
47 errno = ENOTDIR;
48 return NULL;
49 }
50
52 if (!d)
53 {
54 errno = ENOMEM;
55 return NULL;
56 }
59 {
60 errno = ENOMEM;
62 return NULL;
63 }
64 strcpy(d->dirname, dirname);
67 strcat(d->dirname, "\\");
68 strcat(d->dirname, "*");
69 d->handle = INVALID_HANDLE_VALUE;
73
74 return d;
75}
76
79{
80 WIN32_FIND_DATA fd;
81
82 if (d->handle == INVALID_HANDLE_VALUE)
83 {
85 if (d->handle == INVALID_HANDLE_VALUE)
86 {
87
88 if (GetLastError() == ERROR_FILE_NOT_FOUND)
89 errno = 0;
90 else
92 return NULL;
93 }
94 }
95 else
96 {
97 if (!FindNextFile(d->handle, &fd))
98 {
99
100 if (GetLastError() == ERROR_NO_MORE_FILES)
101 errno = 0;
102 else
104 return NULL;
105 }
106 }
107 strcpy(d->ret.d_name, fd.cFileName);
109
110
111
112
113
114
115 if ((fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0 &&
116 (fd.dwReserved0 == IO_REPARSE_TAG_MOUNT_POINT))
118 else if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
120 else
122
123 return &d->ret;
124}
125
126int
128{
129 int ret = 0;
130
131 if (d->handle != INVALID_HANDLE_VALUE)
132 ret = !FindClose(d->handle);
135
136 return ret;
137}
struct dirent * readdir(DIR *d)
DIR * opendir(const char *dirname)
static int fd(const char *x, int i)
void _dosmaperr(unsigned long)