reactos/base/system/diskpart/misc.c

104 lines
2 KiB
C

/*
* PROJECT: ReactOS DiskPart
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/system/diskpart/misc.c
* PURPOSE: Manages all the partitions of the OS in an interactive way.
* PROGRAMMERS: Eric Kohl
*/
#include "diskpart.h"
/* FUNCTIONS ******************************************************************/
BOOL
IsDecString(
_In_ PWSTR pszDecString)
{
PWSTR ptr;
if ((pszDecString == NULL) || (*pszDecString == UNICODE_NULL))
return FALSE;
ptr = pszDecString;
while (*ptr != UNICODE_NULL)
{
if (!iswdigit(*ptr))
return FALSE;
ptr++;
}
return TRUE;
}
BOOL
IsHexString(
_In_ PWSTR pszHexString)
{
PWSTR ptr;
if ((pszHexString == NULL) || (*pszHexString == UNICODE_NULL))
return FALSE;
ptr = pszHexString;
while (*ptr != UNICODE_NULL)
{
if (!iswxdigit(*ptr))
return FALSE;
ptr++;
}
return TRUE;
}
BOOL
HasPrefix(
_In_ PWSTR pszString,
_In_ PWSTR pszPrefix,
_Out_opt_ PWSTR *ppszSuffix)
{
INT nPrefixLength, ret;
nPrefixLength = wcslen(pszPrefix);
ret = _wcsnicmp(pszString, pszPrefix, nPrefixLength);
if ((ret == 0) && (ppszSuffix != NULL))
*ppszSuffix = &pszString[nPrefixLength];
return (ret == 0);
}
ULONGLONG
RoundingDivide(
_In_ ULONGLONG Dividend,
_In_ ULONGLONG Divisor)
{
return (Dividend + Divisor / 2) / Divisor;
}
VOID
PrintMessageString(
_In_ DWORD dwMessage)
{
PWSTR pBuffer;
FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, //hModuleNetMsg,
dwMessage,
LANG_USER_DEFAULT,
(LPWSTR)&pBuffer,
0,
NULL);
if (pBuffer)
{
ConPuts(StdOut, pBuffer);
LocalFree(pBuffer);
pBuffer = NULL;
}
}