mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
100 lines
1.9 KiB
C
100 lines
1.9 KiB
C
|
/*
|
||
|
* VOL.C - vol internal command.
|
||
|
*
|
||
|
*
|
||
|
* History:
|
||
|
*
|
||
|
* 03-Dec-1998 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
|
||
|
* Replaced DOS calls by Win32 calls.
|
||
|
*
|
||
|
* 08-Dec-1998 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
|
||
|
* Added help text ("/?").
|
||
|
*
|
||
|
* 07-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
|
||
|
* Cleanup.
|
||
|
*
|
||
|
* 18-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
|
||
|
* Unicode ready!
|
||
|
*
|
||
|
* 20-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
|
||
|
* Redirection ready!
|
||
|
*/
|
||
|
|
||
|
#include "config.h"
|
||
|
|
||
|
#ifdef INCLUDE_CMD_VOL
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <tchar.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
#include "cmd.h"
|
||
|
|
||
|
|
||
|
static VOID
|
||
|
PrintVolumeHeader (LPTSTR pszRootPath)
|
||
|
{
|
||
|
TCHAR szVolName[80];
|
||
|
DWORD dwSerialNr;
|
||
|
|
||
|
/* get the volume information of the drive */
|
||
|
GetVolumeInformation (pszRootPath, szVolName, 80, &dwSerialNr,
|
||
|
NULL, NULL, NULL, 0);
|
||
|
|
||
|
/* print drive info */
|
||
|
ConOutPrintf (_T(" Volume in drive %c:"), pszRootPath[0]);
|
||
|
|
||
|
if (szVolName[0] != '\0')
|
||
|
ConOutPrintf (_T(" is %s\n"), szVolName);
|
||
|
else
|
||
|
ConOutPrintf (_T(" has no label\n"));
|
||
|
|
||
|
/* print the volume serial number */
|
||
|
ConOutPrintf (_T(" Volume Serial Number is %04X-%04X\n"),
|
||
|
HIWORD(dwSerialNr), LOWORD(dwSerialNr));
|
||
|
}
|
||
|
|
||
|
|
||
|
INT cmd_vol (LPTSTR cmd, LPTSTR param)
|
||
|
{
|
||
|
TCHAR szRootPath[] = _T("A:\\");
|
||
|
TCHAR szPath[MAX_PATH];
|
||
|
|
||
|
if (!_tcsncmp (param, _T("/?"), 2))
|
||
|
{
|
||
|
ConOutPuts (_T("Displays the disk volume label and serial number, if they exist.\n\n"
|
||
|
"VOL [drive:]"));
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
if (param[0] == _T('\0'))
|
||
|
{
|
||
|
GetCurrentDirectory (MAX_PATH, szPath);
|
||
|
szRootPath[0] = szPath[0];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_tcsupr (param);
|
||
|
if (param[1] == _T(':'))
|
||
|
szRootPath[0] = param[0];
|
||
|
else
|
||
|
{
|
||
|
error_invalid_drive ();
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!IsValidPathName (szRootPath))
|
||
|
{
|
||
|
error_invalid_drive ();
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
/* print the header */
|
||
|
PrintVolumeHeader (szRootPath);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
#endif
|