@@ -369,6 +369,7 @@ int wmain(int argc, WCHAR *argv[])
369369 DWORD serialNumber ;
370370 ULARGE_INTEGER totalNumberOfBytes , totalNumberOfFreeBytes ;
371371 WCHAR szMsg [RC_STRING_MAX_SIZE ];
372+ DWORD dwError ;
372373
373374 /* Initialize the Console Standard Streams */
374375 ConInitStdStreams ();
@@ -423,21 +424,16 @@ int wmain(int argc, WCHAR *argv[])
423424 driveType = GetDriveTypeW (RootDirectory );
424425 switch (driveType )
425426 {
426- case DRIVE_UNKNOWN :
427- K32LoadStringW ( GetModuleHandle ( NULL ), STRING_ERROR_DRIVE_TYPE , szMsg , ARRAYSIZE ( szMsg ));
428- PrintWin32Error ( szMsg , GetLastError () );
427+ case DRIVE_UNKNOWN :
428+ case DRIVE_NO_ROOT_DIR : // This case used to report STRING_NO_VOLUME, which has no ".\n".
429+ ConResPuts ( StdErr , STRING_ERROR_DRIVE_TYPE );
429430 return -1 ;
430431
431432 case DRIVE_REMOTE :
432433 case DRIVE_CDROM :
433434 ConResPuts (StdOut , STRING_NO_SUPPORT );
434435 return -1 ;
435436
436- case DRIVE_NO_ROOT_DIR :
437- K32LoadStringW (GetModuleHandle (NULL ), STRING_NO_VOLUME , szMsg , ARRAYSIZE (szMsg ));
438- PrintWin32Error (szMsg , GetLastError ());
439- return -1 ;
440-
441437 case DRIVE_REMOVABLE :
442438 ConResPrintf (StdOut , STRING_INSERT_DISK , RootDirectory [0 ]);
443439 fgetws (input , ARRAYSIZE (input ), stdin );
@@ -474,14 +470,15 @@ int wmain(int argc, WCHAR *argv[])
474470 NULL , NULL , NULL ,
475471 fileSystem , ARRAYSIZE (fileSystem )))
476472 {
477- if (GetLastError () == ERROR_UNRECOGNIZED_VOLUME )
473+ dwError = GetLastError ();
474+ if (dwError == ERROR_UNRECOGNIZED_VOLUME )
478475 {
479476 wcscpy (fileSystem , L"RAW" );
480477 }
481478 else
482479 {
483480 K32LoadStringW (GetModuleHandle (NULL ), STRING_NO_VOLUME , szMsg , ARRAYSIZE (szMsg ));
484- PrintWin32Error (szMsg , GetLastError () );
481+ PrintWin32Error (szMsg , dwError );
485482 return -1 ;
486483 }
487484 }
@@ -505,8 +502,9 @@ int wmain(int argc, WCHAR *argv[])
505502 & totalNumberOfBytes ,
506503 NULL ))
507504 {
505+ dwError = GetLastError ();
508506 K32LoadStringW (GetModuleHandle (NULL ), STRING_NO_VOLUME_SIZE , szMsg , ARRAYSIZE (szMsg ));
509- PrintWin32Error (szMsg , GetLastError () );
507+ PrintWin32Error (szMsg , dwError );
510508 return -1 ;
511509 }
512510
@@ -605,8 +603,9 @@ int wmain(int argc, WCHAR *argv[])
605603 input [wcslen (input ) - 1 ] = 0 ;
606604 if (!SetVolumeLabelW (RootDirectory , input ))
607605 {
606+ dwError = GetLastError ();
608607 K32LoadStringW (GetModuleHandle (NULL ), STRING_NO_LABEL , szMsg , ARRAYSIZE (szMsg ));
609- PrintWin32Error (szMsg , GetLastError () );
608+ PrintWin32Error (szMsg , dwError );
610609 return -1 ;
611610 }
612611 }
@@ -619,8 +618,9 @@ int wmain(int argc, WCHAR *argv[])
619618 & totalNumberOfBytes ,
620619 & totalNumberOfFreeBytes ))
621620 {
621+ dwError = GetLastError ();
622622 K32LoadStringW (GetModuleHandle (NULL ), STRING_NO_VOLUME_SIZE , szMsg , ARRAYSIZE (szMsg ));
623- PrintWin32Error (szMsg , GetLastError () );
623+ PrintWin32Error (szMsg , dwError );
624624 return -1 ;
625625 }
626626
@@ -635,8 +635,9 @@ int wmain(int argc, WCHAR *argv[])
635635 & serialNumber , NULL , NULL ,
636636 NULL , 0 ))
637637 {
638+ dwError = GetLastError ();
638639 K32LoadStringW (GetModuleHandle (NULL ), STRING_NO_VOLUME , szMsg , ARRAYSIZE (szMsg ));
639- PrintWin32Error (szMsg , GetLastError () );
640+ PrintWin32Error (szMsg , dwError );
640641 return -1 ;
641642 }
642643
0 commit comments