diff --git a/reactos/include/psdk/strsafe.h b/reactos/include/psdk/strsafe.h index e8cf6008199..643388baa0b 100644 --- a/reactos/include/psdk/strsafe.h +++ b/reactos/include/psdk/strsafe.h @@ -20,24 +20,90 @@ typedef wchar_t * STRSAFE_LPWSTR; typedef const wchar_t * STRSAFE_LPCWSTR; typedef unsigned long STRSAFE_DWORD; -/* Implement for ansi and unicode */ #define STRSAFE_PASS2 + +/* Implement Cb functions for ansi and unicode */ +#define STRSAFE_CB +#define STRSAFE_CXX_CB(x) +#define STRSAFE_CXX_CCH(x) x *= sizeof(STRSAFE_TCHAR) #define STRSAFE_UNICODE 0 # include #undef STRSAFE_UNICODE #define STRSAFE_UNICODE 1 # include #undef STRSAFE_UNICODE +#undef STRSAFE_CXX +#undef STRSAFE_CB +#undef STRSAFE_CXX_CB +#undef STRSAFE_CXX_CCH + +/* Implement Cch functions for ansi and unicode */ +#define STRSAFE_CXX_CB(x) x /= sizeof(STRSAFE_TCHAR) +#define STRSAFE_CXX_CCH(x) +#define STRSAFE_UNICODE 0 +# include +#undef STRSAFE_UNICODE +#define STRSAFE_UNICODE 1 +# include +#undef STRSAFE_UNICODE +#undef STRSAFE_CXX_CB +#undef STRSAFE_CXX_CCH + #undef STRSAFE_PASS2 /* Now define the functions depending on UNICODE */ -#ifdef UNICODE -# define STRSAFE_UNICODE 1 -#else -# define STRSAFE_UNICODE 0 -#endif -#include -#undef STRSAFE_UNICODE +#if defined(UNICODE) + +#define StringCbCat StringCbCatW +#define StringCbCatEx StringCbCatExW +#define StringCbCatN StringCbCatNW +#define StringCbCatNEx StringCbCatNExW +#define StringCbCopy StringCbCopyW +#define StringCbCopyEx StringCbCopyExW +#define StringCbCopyN StringCbCopyNW +#define StringCbCopyNEx StringCbCopyNExW +#define StringCbGets StringCbGetsW +#define StringCbGetsEx StringCbGetsExW +#define StringCbLength StringCbLengthW +#define StringCbPrintf StringCbPrintfW +#define StringCbPrintfEx StringCbPrintfExW +#define StringCbVPrintf StringCbVPrintfW +#define StringCbVPrintfEx StringCbVPrintfExW +#define StringCchCat StringCchCatW +#define StringCchCatEx StringCchCatExW +#define StringCchCatN StringCchCatNW +#define StringCchCatNEx StringCchCatNExW +#define StringCchCopy StringCchCopyW +#define StringCchCopyEx StringCchCopyExW +#define StringCchCopyN StringCchCopyNW +#define StringCchCopyNEx StringCchCopyNExW +#define StringCchGets StringCchGetsW +#define StringCchGetsEx StringCchGetsExW +#define StringCchLength StringCchLengthW +#define StringCchPrintf StringCchPrintfW +#define StringCchPrintfEx StringCchPrintfExW +#define StringCchVPrintf StringCchVPrintfW +#define StringCchVPrintfEx StringCchVPrintfExW + +#else // !UNICODE + +#define StringCbCat StringCbCatA +#define StringCbCatEx StringCbCatExA +#define StringCbCatN StringCbCatNA +#define StringCbCatNEx StringCbCatNExA +#define StringCbCopy StringCbCopyA +#define StringCbCopyEx StringCbCopyExA +#define StringCbCopyN StringCbCopyNA +#define StringCbCopyNEx StringCbCopyNExA +#define StringCbGets StringCbGetsA +#define StringCbGetsEx StringCbGetsExA +#define StringCbLength StringCbLengthA +#define StringCbPrintf StringCbPrintfA +#define StringCbPrintfEx StringCbPrintfExA +#define StringCbVPrintf StringCbVPrintfA +#define StringCbVPrintfEx StringCbVPrintfExA + +#endif // !UNICODE #endif // !__STRSAFE_H_ @@ -48,21 +114,81 @@ typedef unsigned long STRSAFE_DWORD; #define STRSAFE_LPTSTR STRSAFE_LPWSTR #define STRSAFE_LPCTSTR STRSAFE_LPCWSTR +#define STRSAFE_TCHAR wchar_t -#define StringCbCat StringCbCatW -#define StringCbCopy StringCbCopyW -#define StringCbVPrintf StringCbVPrintfW -#define StringCbPrintf StringCbPrintfW +#if defined(STRSAFE_CB) +#define StringCxxCat StringCbCatW +#define StringCxxCatEx StringCbCatExW +#define StringCxxCatN StringCbCatNW +#define StringCxxCatNEx StringCbCatNExW +#define StringCxxCopy StringCbCopyW +#define StringCxxCopyEx StringCbCopyExW +#define StringCxxCopyN StringCbCopyNW +#define StringCxxCopyNEx StringCbCopyNExW +#define StringCxxGets StringCbGetsW +#define StringCxxGetsEx StringCbGetsExW +#define StringCxxLength StringCbLengthW +#define StringCxxPrintf StringCbPrintfW +#define StringCxxPrintfEx StringCbPrintfExW +#define StringCxxVPrintf StringCbVPrintfW +#define StringCxxVPrintfEx StringCbVPrintfExW +#else // !STRSAFE_CB +#define StringCxxCat StringCchCatW +#define StringCxxCatEx StringCchCatExW +#define StringCxxCatN StringCchCatNW +#define StringCxxCatNEx StringCchCatNExW +#define StringCxxCopy StringCchCopyW +#define StringCxxCopyEx StringCchCopyExW +#define StringCxxCopyN StringCchCopyNW +#define StringCxxCopyNEx StringCchCopyNExW +#define StringCxxGets StringCchGetsW +#define StringCxxGetsEx StringCchGetsExW +#define StringCxxLength StringCchLengthW +#define StringCxxPrintf StringCchPrintfW +#define StringCxxPrintfEx StringCchPrintfExW +#define StringCxxVPrintf StringCchVPrintfW +#define StringCxxVPrintfEx StringCchVPrintfExW +#endif // !STRSAFE_CB #else // (STRSAFE_UNICODE != 1) #define STRSAFE_LPTSTR STRSAFE_LPSTR #define STRSAFE_LPCTSTR STRSAFE_LPCSTR +#define STRSAFE_TCHAR char -#define StringCbCat StringCbCatA -#define StringCbCopy StringCbCopyA -#define StringCbVPrintf StringCbVPrintfA -#define StringCbPrintf StringCbPrintfA +#if defined(STRSAFE_CB) +#define StringCxxCat StringCbCatA +#define StringCxxCatEx StringCbCatExA +#define StringCxxCatN StringCbCatNA +#define StringCxxCatNEx StringCbCatNExA +#define StringCxxCopy StringCbCopyA +#define StringCxxCopyEx StringCbCopyExA +#define StringCxxCopyN StringCbCopyNA +#define StringCxxCopyNEx StringCbCopyNExA +#define StringCxxGets StringCbGetsA +#define StringCxxGetsEx StringCbGetsExA +#define StringCxxLength StringCbLengthA +#define StringCxxPrintf StringCbPrintfA +#define StringCxxPrintfEx StringCbPrintfExA +#define StringCxxVPrintf StringCbVPrintfA +#define StringCxxVPrintfEx StringCbVPrintfExA +#else // !STRSAFE_CB +#define StringCxxCat StringCchCatA +#define StringCxxCatEx StringCchCatExA +#define StringCxxCatN StringCchCatNA +#define StringCxxCatNEx StringCchCatNExA +#define StringCxxCopy StringCchCopyA +#define StringCxxCopyEx StringCchCopyExA +#define StringCxxCopyN StringCchCopyNA +#define StringCopyNEx StringCchCopyNExA +#define StringCxxGets StringCchGetsA +#define StringCxxGetsEx StringCchGetsExA +#define StringCxxLength StringCchLengthA +#define StringCxxPrintf StringCchPrintfA +#define StringCxxPrintfEx StringCchPrintfExA +#define StringCxxVPrintf StringCchVPrintfA +#define StringCxxVPrintfEx StringCchVPrintfExA +#endif // !STRSAFE_CB #endif // (STRSAFE_UNICODE != 1) #endif // defined(STRSAFE_UNICODE) @@ -77,10 +203,21 @@ typedef unsigned long STRSAFE_DWORD; #define STRSAFEAPI HRESULT __stdcall #ifndef STRSAFE_NO_CB_FUNCTIONS -STRSAFEAPI StringCbCat(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc); -STRSAFEAPI StringCbCopy(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc); -STRSAFEAPI StringCbVPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, va_list args); -STRSAFEAPI StringCbPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, ...); +STRSAFEAPI StringCat(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc); +STRSAFEAPI StringCatEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags); +STRSAFEAPI StringCatN(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc, size_t cbMaxAppend); +STRSAFEAPI StringCatNEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc, size_t cbMaxAppend, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags); +STRSAFEAPI StringCopy(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc); +STRSAFEAPI StringCopyEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags); +STRSAFEAPI StringCopyN(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc, size_t cbSrc); +STRSAFEAPI StringCopyNEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc, size_t cbSrc, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags); +STRSAFEAPI StringGets(STRSAFE_LPTSTR pszDest, size_t cxDest); +STRSAFEAPI StringGetsEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags); +STRSAFEAPI StringLength(STRSAFE_LPCTSTR psz, size_t cxMax, size_t *pcb); +STRSAFEAPI StringPrintf(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszFormat, ...); +STRSAFEAPI StringPrintfEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCTSTR pszFormat, ...); +STRSAFEAPI StringVPrintf(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszFormat, va_list args); +STRSAFEAPI StringVPrintfEx(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, LPCTSTR pszFormat, va_list args); #endif // !STRSAFE_NO_CB_FUNCTIONS #ifndef STRSAFE_NO_CCH_FUNCTIONS @@ -95,30 +232,88 @@ STRSAFEAPI StringCbPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR #ifndef STRSAFE_NO_CB_FUNCTIONS -STRSAFEAPI StringCbCat(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc) +STRSAFEAPI StringCxxCat(STRSAFE_LPTSTR pszDest, size_t cxDest, STRSAFE_LPCTSTR pszSrc) +{ + STRSAFE_CXX_CB(cxDest); + return 0; // FIXME +} + +STRSAFEAPI StringCxxCatEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags) { return 0; // FIXME } -STRSAFEAPI -StringCbCopy(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc) +STRSAFEAPI StringCxxCatN(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc, size_t cbMaxAppend) { return 0; // FIXME } -STRSAFEAPI -StringCbVPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, va_list args) +STRSAFEAPI StringCxxCatNEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc, size_t cbMaxAppend, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags) { return 0; // FIXME } -STRSAFEAPI -StringCbPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, ...) +STRSAFEAPI StringCxxCopy(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxCopyEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxCopyN(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc, size_t cbSrc) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxCopyNEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszSrc, size_t cbSrc, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxGets(STRSAFE_LPTSTR pszDest, size_t cbDest) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxGetsEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxLength(STRSAFE_LPCTSTR psz, size_t cbMax, size_t *pcb) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxVPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, va_list args) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxVPrintfEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCTSTR pszFormat, va_list args) +{ + return 0; // FIXME +} + +STRSAFEAPI StringCxxPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, ...) { HRESULT result; va_list args; va_start(args, pszFormat); - result = StringCbVPrintf(pszDest, cbDest, pszFormat, args); + result = StringCxxVPrintf(pszDest, cbDest, pszFormat, args); + va_end(args); + return result; +} + +STRSAFEAPI StringCxxPrintfEx(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPTSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCTSTR pszFormat, ...) +{ + HRESULT result; + va_list args; + va_start(args, pszFormat); + result = StringCxxVPrintfEx(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, args); va_end(args); return result; } @@ -132,13 +327,25 @@ StringCbPrintf(STRSAFE_LPTSTR pszDest, size_t cbDest, STRSAFE_LPCTSTR pszFormat, #endif // !STRSAFE_LIB /* Functions are implemented or defined, clear #defines for next pass */ -#undef StringCbCat -#undef StringCbCopy -#undef StringCbVPrintf -#undef StringCbPrintf +#undef StringCxxCat +#undef StringCxxCatEx +#undef StringCxxCatN +#undef StringCxxCatNEx +#undef StringCxxCopy +#undef StringCxxCopyEx +#undef StringCxxCopyN +#undef StringCxxCopyNEx +#undef StringCxxGets +#undef StringCxxGetsEx +#undef StringCxxLength +#undef StringCxxPrintf +#undef StringCxxPrintfEx +#undef StringCxxVPrintf +#undef StringCxxVPrintfEx #undef STRSAFE_LPTSTR #undef STRSAFE_LPCTSTR +#undef STRSAFE_TCHAR #endif // defined (STRSAFE_PASS2) diff --git a/reactos/lib/sdk/strsafe/StringCbCatExA.c b/reactos/lib/sdk/strsafe/StringCbCatExA.c new file mode 100644 index 00000000000..4869911d6a2 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatExA.c @@ -0,0 +1,18 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatExA _StringCbCatExA +#include + +#undef StringCbCatExA +HRESULT __stdcall +StringCbCatExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszSrc, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCatExA(pszDest, cbDest, pszSrc, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCatExW.c b/reactos/lib/sdk/strsafe/StringCbCatExW.c new file mode 100644 index 00000000000..4ab703a3d6b --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatExW.c @@ -0,0 +1,18 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatExW _StringCbCatExW +#include + +#undef StringCbCatExW +HRESULT __stdcall +StringCbCatExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCatExW(pszDest, cbDest, pszSrc, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCatNA.c b/reactos/lib/sdk/strsafe/StringCbCatNA.c new file mode 100644 index 00000000000..5d85ef48b9f --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatNA.c @@ -0,0 +1,15 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatNA _StringCbCatNA +#include + +#undef StringCbCatNA +HRESULT __stdcall +StringCbCatNA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszSrc, + size_t cbMaxAppend) +{ + /* Use the inlined version */ + return _StringCbCatNA(pszDest, cbDest, pszSrc, cbMaxAppend); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCatNExA.c b/reactos/lib/sdk/strsafe/StringCbCatNExA.c new file mode 100644 index 00000000000..06b2e9e30db --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatNExA.c @@ -0,0 +1,19 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatNExA _StringCbCatNExA +#include + +#undef StringCbCatNExA +HRESULT __stdcall +StringCbCatNExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszSrc, + size_t cbMaxAppend, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCatNExA(pszDest, cbDest, pszSrc, cbMaxAppend, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCatNExW.c b/reactos/lib/sdk/strsafe/StringCbCatNExW.c new file mode 100644 index 00000000000..295b9398602 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatNExW.c @@ -0,0 +1,19 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatNExW _StringCbCatNExW +#include + +#undef StringCbCatNExW +HRESULT __stdcall +StringCbCatNExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc, + size_t cbMaxAppend, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCatNExW(pszDest, cbDest, pszSrc, cbMaxAppend, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCatNW.c b/reactos/lib/sdk/strsafe/StringCbCatNW.c new file mode 100644 index 00000000000..c65417f488b --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatNW.c @@ -0,0 +1,15 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatNW _StringCbCatNW +#include + +#undef StringCbCatNW +HRESULT __stdcall +StringCbCatNW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc, + size_t cbMaxAppend) +{ + /* Use the inlined version */ + return _StringCbCatNW(pszDest, cbDest, pszSrc, cbMaxAppend); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCatW.c b/reactos/lib/sdk/strsafe/StringCbCatW.c new file mode 100644 index 00000000000..15964ab182d --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCatW.c @@ -0,0 +1,14 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCatW _StringCbCatW +#include + +#undef StringCbCatW +HRESULT __stdcall +StringCbCatW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc) +{ + /* Use the inlined version */ + return _StringCbCatW(pszDest, cbDest, pszSrc); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyExA.c b/reactos/lib/sdk/strsafe/StringCbCopyExA.c new file mode 100644 index 00000000000..abaf57779d6 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyExA.c @@ -0,0 +1,17 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyExA _StringCbCopyExA +#include + +#undef StringCbCopyExA +HRESULT __stdcall +StringCbCopyExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszSrc, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) +{ + /* Use the inlined version */ + return _StringCbCopyExA(pszDest, cbDest, pszSrc, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyExW.c b/reactos/lib/sdk/strsafe/StringCbCopyExW.c new file mode 100644 index 00000000000..a1af1fb2e7d --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyExW.c @@ -0,0 +1,18 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyExW _StringCbCopyExW +#include + +#undef StringCbCopyExW +HRESULT __stdcall +StringCbCopyExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCopyExW(pszDest, cbDest, pszSrc, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyNA.c b/reactos/lib/sdk/strsafe/StringCbCopyNA.c new file mode 100644 index 00000000000..2a9da912fd4 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyNA.c @@ -0,0 +1,15 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyNA _StringCbCopyNA +#include + +#undef StringCbCopyNA +HRESULT __stdcall +StringCbCopyNA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszSrc, + size_t cbSrc) +{ + /* Use the inlined version */ + return _StringCbCopyNA(pszDest, cbDest, pszSrc, cbSrc); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyNExA.c b/reactos/lib/sdk/strsafe/StringCbCopyNExA.c new file mode 100644 index 00000000000..b82bfed1ac1 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyNExA.c @@ -0,0 +1,19 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyNExA _StringCbCopyNExA +#include + +#undef StringCbCopyNExA +HRESULT __stdcall +StringCbCopyNExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszSrc, + size_t cbMaxAppend, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCopyNExA(pszDest, cbDest, pszSrc, cbMaxAppend, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyNExW.c b/reactos/lib/sdk/strsafe/StringCbCopyNExW.c new file mode 100644 index 00000000000..00340d6c336 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyNExW.c @@ -0,0 +1,19 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyNExW _StringCbCopyNExW +#include + +#undef StringCbCopyNExW +HRESULT __stdcall +StringCbCopyNExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc, + size_t cbMaxAppend, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) + +{ + /* Use the inlined version */ + return _StringCbCopyNExW(pszDest, cbDest, pszSrc, cbMaxAppend, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyNW.c b/reactos/lib/sdk/strsafe/StringCbCopyNW.c new file mode 100644 index 00000000000..788410b0537 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyNW.c @@ -0,0 +1,15 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyNW _StringCbCopyNW +#include + +#undef StringCbCopyNW +HRESULT __stdcall +StringCbCopyNW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc, + size_t cbSrc) +{ + /* Use the inlined version */ + return _StringCbCopyNW(pszDest, cbDest, pszSrc, cbSrc); +} diff --git a/reactos/lib/sdk/strsafe/StringCbCopyW.c b/reactos/lib/sdk/strsafe/StringCbCopyW.c new file mode 100644 index 00000000000..14f812f8e53 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbCopyW.c @@ -0,0 +1,14 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbCopyW _StringCbCopyW +#include + +#undef StringCbCopyW +HRESULT __stdcall +StringCbCopyW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszSrc) +{ + /* Use the inlined version */ + return _StringCbCopyW(pszDest, cbDest, pszSrc); +} diff --git a/reactos/lib/sdk/strsafe/StringCbGetsA.c b/reactos/lib/sdk/strsafe/StringCbGetsA.c new file mode 100644 index 00000000000..2594563f804 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbGetsA.c @@ -0,0 +1,13 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbGetsA _StringCbGetsA +#include + +#undef StringCbGetsA +HRESULT __stdcall +StringCbGetsA( + STRSAFE_LPSTR pszDest, + size_t cbDest) +{ + /* Use the inlined version */ + return _StringCbGetsA(pszDest, cbDest); +} diff --git a/reactos/lib/sdk/strsafe/StringCbGetsExA.c b/reactos/lib/sdk/strsafe/StringCbGetsExA.c new file mode 100644 index 00000000000..54b77cc394b --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbGetsExA.c @@ -0,0 +1,16 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbGetsExA _StringCbGetsExA +#include + +#undef StringCbGetsExA +HRESULT __stdcall +StringCbGetsExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) +{ + /* Use the inlined version */ + return _StringCbGetsExA(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbGetsExW.c b/reactos/lib/sdk/strsafe/StringCbGetsExW.c new file mode 100644 index 00000000000..dc948f9a7f3 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbGetsExW.c @@ -0,0 +1,16 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbGetsExW _StringCbGetsExW +#include + +#undef StringCbGetsExW +HRESULT __stdcall +StringCbGetsExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags) +{ + /* Use the inlined version */ + return _StringCbGetsExW(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags); +} diff --git a/reactos/lib/sdk/strsafe/StringCbGetsW.c b/reactos/lib/sdk/strsafe/StringCbGetsW.c new file mode 100644 index 00000000000..d948d255a58 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbGetsW.c @@ -0,0 +1,13 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbGetsW _StringCbGetsW +#include + +#undef StringCbGetsW +HRESULT __stdcall +StringCbGetsW( + STRSAFE_LPWSTR pszDest, + size_t cbDest) +{ + /* Use the inlined version */ + return _StringCbGetsW(pszDest, cbDest); +} diff --git a/reactos/lib/sdk/strsafe/StringCbLengthA.c b/reactos/lib/sdk/strsafe/StringCbLengthA.c new file mode 100644 index 00000000000..91d9b582f1e --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbLengthA.c @@ -0,0 +1,14 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbLengthA _StringCbLengthA +#include + +#undef StringCbLengthA +HRESULT __stdcall +StringCbLengthA( + STRSAFE_LPCSTR psz, + size_t cbMax, + size_t *pcb) +{ + /* Use the inlined version */ + return _StringCbLengthA(psz, cbMax, pcb); +} diff --git a/reactos/lib/sdk/strsafe/StringCbLengthW.c b/reactos/lib/sdk/strsafe/StringCbLengthW.c new file mode 100644 index 00000000000..0a29c27e002 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbLengthW.c @@ -0,0 +1,14 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbLengthW _StringCbLengthW +#include + +#undef StringCbLengthW +HRESULT __stdcall +StringCbLengthW( + STRSAFE_LPCWSTR psz, + size_t cbMax, + size_t *pcb) +{ + /* Use the inlined version */ + return _StringCbLengthW(psz, cbMax, pcb); +} diff --git a/reactos/lib/sdk/strsafe/StringCbPrintfExA.c b/reactos/lib/sdk/strsafe/StringCbPrintfExA.c new file mode 100644 index 00000000000..5fa7d836f49 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbPrintfExA.c @@ -0,0 +1,22 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbPrintfExA _StringCbPrintfExA +#include + +#undef StringCbPrintfExA +HRESULT __stdcall +StringCbPrintfExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags, + STRSAFE_LPCSTR pszFormat, + ...) +{ + HRESULT result; + va_list args; + va_start(args, pszFormat); + result = StringCbVPrintfExA(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, args); + va_end(args); + return result; +} diff --git a/reactos/lib/sdk/strsafe/StringCbPrintfExW.c b/reactos/lib/sdk/strsafe/StringCbPrintfExW.c new file mode 100644 index 00000000000..2a7aeb1c7b0 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbPrintfExW.c @@ -0,0 +1,22 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbPrintfExW _StringCbPrintfExW +#include + +#undef StringCbPrintfExW +HRESULT __stdcall +StringCbPrintfExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags, + STRSAFE_LPCWSTR pszFormat, + ...) +{ + HRESULT result; + va_list args; + va_start(args, pszFormat); + result = StringCbVPrintfExW(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, args); + va_end(args); + return result; +} diff --git a/reactos/lib/sdk/strsafe/StringCbPrintfW.c b/reactos/lib/sdk/strsafe/StringCbPrintfW.c new file mode 100644 index 00000000000..c89461152a9 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbPrintfW.c @@ -0,0 +1,19 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbPrintfW _StringCbPrintfW +#include + +#undef StringCbPrintfW +HRESULT __stdcall +StringCbPrintfW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszFormat, + ...) +{ + HRESULT result; + va_list args; + va_start(args, pszFormat); + result = StringCbVPrintfW(pszDest, cbDest, pszFormat, args); + va_end(args); + return result; +} diff --git a/reactos/lib/sdk/strsafe/StringCbVPrintfA.c b/reactos/lib/sdk/strsafe/StringCbVPrintfA.c new file mode 100644 index 00000000000..b5ff9464639 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbVPrintfA.c @@ -0,0 +1,15 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbVPrintfA _StringCbVPrintfA +#include + +#undef StringCbVPrintfA +HRESULT __stdcall +StringCbVPrintfA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPCSTR pszFormat, + va_list args) +{ + /* Use the inlined version */ + return _StringCbVPrintfA(pszDest, cbDest, pszFormat, args); +} diff --git a/reactos/lib/sdk/strsafe/StringCbVPrintfExA.c b/reactos/lib/sdk/strsafe/StringCbVPrintfExA.c new file mode 100644 index 00000000000..bd0e17dbca7 --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbVPrintfExA.c @@ -0,0 +1,18 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbVPrintfExA _StringCbVPrintfExA +#include + +#undef StringCbVPrintfExA +HRESULT __stdcall +StringCbVPrintfExA( + STRSAFE_LPSTR pszDest, + size_t cbDest, + STRSAFE_LPSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags, + STRSAFE_LPCSTR pszFormat, + va_list args) +{ + /* Use the inlined version */ + return _StringCbVPrintfExA(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, args); +} diff --git a/reactos/lib/sdk/strsafe/StringCbVPrintfExW.c b/reactos/lib/sdk/strsafe/StringCbVPrintfExW.c new file mode 100644 index 00000000000..d545d0fc57c --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbVPrintfExW.c @@ -0,0 +1,18 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbVPrintfExW _StringCbVPrintfExW +#include + +#undef StringCbVPrintfExW +HRESULT __stdcall +StringCbVPrintfExW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPWSTR *ppszDestEnd, + size_t *pcbRemaining, + STRSAFE_DWORD dwFlags, + STRSAFE_LPCWSTR pszFormat, + va_list args) +{ + /* Use the inlined version */ + return _StringCbVPrintfExW(pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, args); +} diff --git a/reactos/lib/sdk/strsafe/StringCbVPrintfW.c b/reactos/lib/sdk/strsafe/StringCbVPrintfW.c new file mode 100644 index 00000000000..2b20c3ac24a --- /dev/null +++ b/reactos/lib/sdk/strsafe/StringCbVPrintfW.c @@ -0,0 +1,15 @@ +#define STRSAFE_NO_CCH_FUNCTIONS +#define StringCbVPrintfW _StringCbVPrintfW +#include + +#undef StringCbVPrintfW +HRESULT __stdcall +StringCbVPrintfW( + STRSAFE_LPWSTR pszDest, + size_t cbDest, + STRSAFE_LPCWSTR pszFormat, + va_list args) +{ + /* Use the inlined version */ + return _StringCbVPrintfW(pszDest, cbDest, pszFormat, args); +} diff --git a/reactos/lib/sdk/strsafe/strsafe.rbuild b/reactos/lib/sdk/strsafe/strsafe.rbuild index bf744edafb3..5ab609b5859 100644 --- a/reactos/lib/sdk/strsafe/strsafe.rbuild +++ b/reactos/lib/sdk/strsafe/strsafe.rbuild @@ -3,6 +3,33 @@ StringCbCatA.c + StringCbCatW.c + StringCbCatExA.c + StringCbCatExW.c + StringCbCatNA.c + StringCbCatNW.c + StringCbCatNExA.c + StringCbCatNExW.c StringCbCopyA.c + StringCbCopyW.c + StringCbCopyExA.c + StringCbCopyExW.c + StringCbCopyNA.c + StringCbCopyNW.c + StringCbCopyNExA.c + StringCbCopyNExW.c + StringCbGetsA.c + StringCbGetsW.c + StringCbGetsExA.c + StringCbGetsExW.c + StringCbLengthA.c + StringCbLengthW.c StringCbPrintfA.c + StringCbPrintfW.c + StringCbPrintfExA.c + StringCbPrintfExW.c + StringCbVPrintfA.c + StringCbVPrintfW.c + StringCbVPrintfExA.c + StringCbVPrintfExW.c