diff -r c7b4237fff50 -r 03a67e41afbc tools/installer/InstallerUtil.cpp --- a/tools/installer/InstallerUtil.cpp Fri Mar 28 06:21:34 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -#include "InstallerUtil.h" -#include "InstallerMain.h" -#include -#include - -int tstrcasecmp(const TCHAR *str1, const TCHAR *str2) -{ -#if defined _UNICODE - return _wcsicmp(str1, str2); -#else - return _stricmp(str1, str2); -#endif -} - -size_t AnsiToUnicode(const char *str, wchar_t *buffer, size_t maxchars) -{ - if (maxchars < 1) - { - return 0; - } - - size_t total = - (size_t)MultiByteToWideChar(CP_UTF8, - 0, - str, - -1, - buffer, - (int)maxchars); - - return total; -} - -bool IsWhiteSpaceA(const char *stream) -{ - char c = *stream; - if (c & (1<<7)) - { - return false; - } - else - { - return isspace(c) != 0; - } -} - -int BreakStringA(const char *str, char *out, size_t maxchars) -{ - const char *inptr = str; - while (*inptr != '\0' && IsWhiteSpaceA(inptr)) - { - inptr++; - } - - if (*inptr == '\0') - { - if (maxchars) - { - *out = '\0'; - } - return -1; - } - - const char *start, *end = NULL; - - bool quoted = (*inptr == '"'); - if (quoted) - { - inptr++; - start = inptr; - /* Read input until we reach a quote. */ - while (*inptr != '\0' && *inptr != '"') - { - /* Update the end point, increment the stream. */ - end = inptr++; - } - /* Read one more token if we reached an end quote */ - if (*inptr == '"') - { - inptr++; - } - } - else - { - start = inptr; - /* Read input until we reach a space */ - while (*inptr != '\0' && !IsWhiteSpaceA(inptr)) - { - /* Update the end point, increment the stream. */ - end = inptr++; - } - } - - /* Copy the string we found, if necessary */ - if (end == NULL) - { - if (maxchars) - { - *out = '\0'; - } - } - else if (maxchars) - { - char *outptr = out; - maxchars--; - for (const char *ptr=start; - (ptr <= end) && ((unsigned)(outptr - out) < (maxchars)); - ptr++, outptr++) - { - *outptr = *ptr; - } - *outptr = '\0'; - } - - /* Consume more of the string until we reach non-whitespace */ - while (*inptr != '\0' && IsWhiteSpaceA(inptr)) - { - inptr++; - } - - return (int)(inptr - str); -} - -size_t UTIL_Format(TCHAR *buffer, size_t count, const TCHAR *fmt, ...) -{ - va_list ap; - size_t len; - - va_start(ap, fmt); - len = UTIL_FormatArgs(buffer, count, fmt, ap); - va_end(ap); - - if (len >= count) - { - len = count - 1; - buffer[len] = '\0'; - } - - return len; -} - -size_t UTIL_FormatArgs(TCHAR *buffer, size_t count, const TCHAR *fmt, va_list ap) -{ - size_t len = _vsntprintf(buffer, count, fmt, ap); - - if (len >= count) - { - len = count - 1; - buffer[len] = '\0'; - } - - return len; -} - -size_t UTIL_PathFormat(TCHAR *buffer, size_t count, const TCHAR *fmt, ...) -{ - va_list ap; - size_t len; - - va_start(ap, fmt); - len = UTIL_FormatArgs(buffer, count, fmt, ap); - va_end(ap); - - for (size_t i = 0; i < len; i++) - { - if (buffer[i] == '/') - { - buffer[i] = '\\'; - } - } - - return len; -} - -const TCHAR *GetFileFromPath(const TCHAR *path) -{ - size_t len = _tcslen(path); - - for (size_t i = 0; - i >= 0 && i < len - 1; - i--) - { - if (path[i] == '\\' || path[i] == '/') - { - return &path[i]; - } - } - - return NULL; -} - -void GenerateErrorMessage(DWORD err, TCHAR *buffer, size_t maxchars) -{ - if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - buffer, - (DWORD)maxchars, - NULL) == 0) - { - UTIL_Format(buffer, maxchars, _T("Unknown error")); - } -} - -INT_PTR AskToExit(HWND hWnd) -{ - TCHAR verify_exit[100]; - - if (LoadString(g_hInstance, - IDS_VERIFY_EXIT, - verify_exit, - sizeof(verify_exit) / sizeof(TCHAR) - ) == 0) - { - return (INT_PTR)FALSE; - } - - int val = MessageBox( - hWnd, - _T("Are you sure you want to exit?"), - _T("SourceMod Installer"), - MB_YESNO|MB_ICONQUESTION); - - if (val == 0 || val == IDYES) - { - EndDialog(hWnd, NULL); - return (INT_PTR)TRUE; - } - - return (INT_PTR)FALSE; -}