@@ -40,14 +40,12 @@ typedef struct _FILE_STANDARD_INFORMATION
40
40
#endif /* !defined(__MINGW32__) &&
41
41
* !defined(__MINGW64__) */
42
42
43
- typedef NTSTATUS (NTAPI * PFN_NTQUERYINFORMATIONFILE )
44
- (
45
- IN HANDLE FileHandle ,
46
- OUT PIO_STATUS_BLOCK IoStatusBlock ,
47
- OUT PVOID FileInformation ,
48
- IN ULONG Length ,
49
- IN FILE_INFORMATION_CLASS FileInformationClass
50
- );
43
+ typedef NTSTATUS (NTAPI * PFN_NTQUERYINFORMATIONFILE )
44
+ (IN HANDLE FileHandle ,
45
+ OUT PIO_STATUS_BLOCK IoStatusBlock ,
46
+ OUT PVOID FileInformation ,
47
+ IN ULONG Length ,
48
+ IN FILE_INFORMATION_CLASS FileInformationClass );
51
49
52
50
static PFN_NTQUERYINFORMATIONFILE _NtQueryInformationFile = NULL ;
53
51
@@ -101,8 +99,8 @@ fileattr_to_unixmode(int attr)
101
99
uxmode |= (unsigned short ) ((attr & FILE_ATTRIBUTE_DIRECTORY ) ?
102
100
(_S_IFDIR ) : (_S_IFREG ));
103
101
104
- uxmode |= (unsigned short ) (attr & FILE_ATTRIBUTE_READONLY ) ?
105
- (_S_IREAD ) : (_S_IREAD | _S_IWRITE );
102
+ uxmode |= (unsigned short ) (( attr & FILE_ATTRIBUTE_READONLY ) ?
103
+ (_S_IREAD ) : (_S_IREAD | _S_IWRITE ) );
106
104
107
105
/* there is no need to simulate _S_IEXEC using CMD's PATHEXT extensions */
108
106
uxmode |= _S_IEXEC ;
@@ -149,8 +147,8 @@ fileinfo_to_stat(HANDLE hFile, struct stat *buf)
149
147
buf -> st_mode = fileattr_to_unixmode (fiData .dwFileAttributes );
150
148
buf -> st_nlink = fiData .nNumberOfLinks ;
151
149
152
- buf -> st_size = (((uint64 ) fiData .nFileSizeHigh ) << 32 ) |
153
- ( uint64 ) fiData .nFileSizeLow ;
150
+ buf -> st_size = (((( uint64 ) fiData .nFileSizeHigh ) << 32 ) |
151
+ fiData .nFileSizeLowi ) ;
154
152
155
153
return 0 ;
156
154
}
@@ -220,17 +218,21 @@ _pgstat64(const char *name, struct stat *buf)
220
218
LoadNtdll ();
221
219
if (ntdll == NULL )
222
220
{
223
- _dosmaperr (GetLastError ());
221
+ DWORD err = GetLastError ();
222
+
224
223
CloseHandle (hFile );
224
+ _dosmaperr (err );
225
225
return -1 ;
226
226
}
227
227
228
228
_NtQueryInformationFile = (PFN_NTQUERYINFORMATIONFILE )
229
229
GetProcAddress (ntdll , "NtQueryInformationFile" );
230
230
if (_NtQueryInformationFile == NULL )
231
231
{
232
- _dosmaperr (GetLastError ());
232
+ DWORD err = GetLastError ();
233
+
233
234
CloseHandle (hFile );
235
+ _dosmaperr (err );
234
236
return -1 ;
235
237
}
236
238
}
@@ -239,16 +241,20 @@ _pgstat64(const char *name, struct stat *buf)
239
241
sizeof (standardInfo ),
240
242
FileStandardInformation )))
241
243
{
242
- _dosmaperr (GetLastError ());
244
+ DWORD err = GetLastError ();
245
+
243
246
CloseHandle (hFile );
247
+ _dosmaperr (err );
244
248
return -1 ;
245
249
}
246
250
#else
247
251
if (!GetFileInformationByHandleEx (hFile , FileStandardInfo , & standardInfo ,
248
252
sizeof (standardInfo )))
249
253
{
250
- _dosmaperr (GetLastError ());
254
+ DWORD err = GetLastError ();
255
+
251
256
CloseHandle (hFile );
257
+ _dosmaperr (err );
252
258
return -1 ;
253
259
}
254
260
#endif /* _WIN32_WINNT < 0x0600 */
0 commit comments