1 /* 2 * VOL.C - vol internal command. 3 * 4 * 5 * History: 6 * 7 * 03-Dec-1998 (Eric Kohl) 8 * Replaced DOS calls by Win32 calls. 9 * 10 * 08-Dec-1998 (Eric Kohl) 11 * Added help text ("/?"). 12 * 13 * 07-Jan-1999 (Eric Kohl) 14 * Cleanup. 15 * 16 * 18-Jan-1999 (Eric Kohl) 17 * Unicode ready! 18 * 19 * 20-Jan-1999 (Eric Kohl) 20 * Redirection ready! 21 */ 22 23 #include "precomp.h" 24 25 #ifdef INCLUDE_CMD_VOL 26 27 28 static INT 29 PrintVolumeHeader (LPTSTR pszRootPath) 30 { 31 TCHAR szVolName[80]; 32 DWORD dwSerialNr; 33 34 /* get the volume information of the drive */ 35 if (!GetVolumeInformation(pszRootPath, 36 szVolName, 37 80, 38 &dwSerialNr, 39 NULL, 40 NULL, 41 NULL, 42 0)) 43 { 44 ErrorMessage(GetLastError (), _T("")); 45 return 1; 46 } 47 48 /* print drive info */ 49 if (szVolName[0] != '\0') 50 { 51 ConOutResPrintf(STRING_VOL_HELP1, pszRootPath[0],szVolName); 52 } 53 else 54 { 55 ConOutResPrintf(STRING_VOL_HELP2, pszRootPath[0]); 56 } 57 58 /* print the volume serial number */ 59 ConOutResPrintf(STRING_VOL_HELP3, HIWORD(dwSerialNr), LOWORD(dwSerialNr)); 60 return 0; 61 } 62 63 64 INT cmd_vol (LPTSTR param) 65 { 66 TCHAR szRootPath[] = _T("A:\\"); 67 TCHAR szPath[MAX_PATH]; 68 69 if (!_tcsncmp(param, _T("/?"), 2)) 70 { 71 ConOutResPaging(TRUE,STRING_VOL_HELP4); 72 return 0; 73 } 74 75 nErrorLevel = 0; 76 77 if (param[0] == _T('\0')) 78 { 79 GetCurrentDirectory(MAX_PATH, szPath); 80 szRootPath[0] = szPath[0]; 81 } 82 else 83 { 84 _tcsupr (param); 85 if (param[1] == _T(':')) 86 { 87 szRootPath[0] = param[0]; 88 } 89 else 90 { 91 error_invalid_drive (); 92 nErrorLevel = 1; 93 return 1; 94 } 95 } 96 97 if (!IsValidPathName (szRootPath)) 98 { 99 error_invalid_drive (); 100 nErrorLevel = 1; 101 return 1; 102 } 103 104 /* print the header */ 105 if (!PrintVolumeHeader (szRootPath)) 106 { 107 nErrorLevel = 1; 108 return 1; 109 } 110 111 return 0; 112 } 113 114 #endif 115