95 lines
1.7 KiB
C++
95 lines
1.7 KiB
C++
#include "pch.h"
|
|
#include "gitver.h"
|
|
#include "gitver_common.h"
|
|
|
|
CString BuildArgsForLog(int argc, TCHAR* argv[])
|
|
{
|
|
CString strArgs;
|
|
for (int i = 0; i < argc; ++i)
|
|
{
|
|
if (i > 0)
|
|
{
|
|
strArgs += _T(" ");
|
|
}
|
|
strArgs += QuoteCmdArg(argv[i]);
|
|
}
|
|
return strArgs;
|
|
}
|
|
|
|
DWORD LogCommandStart(LPCTSTR lpCommandName)
|
|
{
|
|
DWORD dwStartTick = GetTickCount();
|
|
_tprintf(_T("Command start: %s\n"), lpCommandName);
|
|
return dwStartTick;
|
|
}
|
|
|
|
CString QuoteCmdArg(const CString& strArg)
|
|
{
|
|
if (strArg.Find(_T(' ')) == -1 && strArg.Find(_T('\t')) == -1 && strArg.Find(_T('"')) == -1)
|
|
{
|
|
return strArg;
|
|
}
|
|
|
|
CString strEscaped = strArg;
|
|
strEscaped.Replace(_T("\""), _T("\\\""));
|
|
CString strQuoted;
|
|
strQuoted.Format(_T("\"%s\""), strEscaped.GetString());
|
|
return strQuoted;
|
|
}
|
|
|
|
BOOL TryParseUInt16(const CString& strValue, UINT& nValue)
|
|
{
|
|
CString strTrimmed = strValue;
|
|
strTrimmed.Trim();
|
|
if (strTrimmed.IsEmpty())
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
for (int i = 0; i < strTrimmed.GetLength(); ++i)
|
|
{
|
|
if (!_istdigit(strTrimmed[i]))
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
ULONGLONG ullValue = _tcstoui64(strTrimmed, NULL, 10);
|
|
if (ullValue > 65535)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
nValue = (UINT)ullValue;
|
|
return TRUE;
|
|
}
|
|
|
|
int ParseUInt16ArgOrError(TCHAR* argv[], int nIndex, LPCTSTR lpArgName, UINT& nValue, int nErrorCode)
|
|
{
|
|
if (!TryParseUInt16(argv[nIndex], nValue))
|
|
{
|
|
_tprintf(_T("Error: invalid %s %s\n"), lpArgName, argv[nIndex]);
|
|
return nErrorCode;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
BOOL IsLikelyPathArg(LPCTSTR lpArg)
|
|
{
|
|
if (lpArg == NULL)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
CString strArg = lpArg;
|
|
if (strArg.IsEmpty())
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
return strArg.Find(_T('\\')) >= 0
|
|
|| strArg.Find(_T('/')) >= 0
|
|
|| strArg.Find(_T(':')) >= 0
|
|
|| strArg.Left(1) == _T(".");
|
|
} |