From 57e8b1c4e50505c65e5697d3b93b52cba223862e Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Fri, 4 Jul 2008 08:24:37 +0000 Subject: [PATCH] Remove the strsafe library, it was imported from a dubious source, which is incompatible with the LGPL svn path=/trunk/; revision=34290 --- reactos/include/psdk/strsafe.h | 454 ---- reactos/lib/sdk/sdk.rbuild | 3 - reactos/lib/sdk/strsafe/strsafe.c | 2834 ------------------------ reactos/lib/sdk/strsafe/strsafe.rbuild | 6 - 4 files changed, 3297 deletions(-) delete mode 100644 reactos/include/psdk/strsafe.h delete mode 100644 reactos/lib/sdk/strsafe/strsafe.c delete mode 100644 reactos/lib/sdk/strsafe/strsafe.rbuild diff --git a/reactos/include/psdk/strsafe.h b/reactos/include/psdk/strsafe.h deleted file mode 100644 index 4011f06c751..00000000000 --- a/reactos/include/psdk/strsafe.h +++ /dev/null @@ -1,454 +0,0 @@ -/* - * STRSAFE - * - * Copyright 2007 Dmitry Chapyshev - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef _STRSAFE_H_INCLUDED_ -#define _STRSAFE_H_INCLUDED_ - -#ifdef __cplusplus -#define _STRSAFE_EXTERN_C extern "C" -extern "C" { -#else -#define _STRSAFE_EXTERN_C extern -#endif - -#include -#include -#include -#include - -#define STRSAFE_INLINE_API __inline HRESULT __stdcall -#define STRSAFEAPI _STRSAFE_EXTERN_C HRESULT __stdcall - -#ifndef _NTSTRSAFE_H_INCLUDED_ - -#define STRSAFE_MAX_CCH 2147483647 - -#define STRSAFE_FILL_BEHIND_NULL 0x00000200 -#define STRSAFE_IGNORE_NULLS 0x00000100 -#define STRSAFE_FILL_ON_FAILURE 0x00000400 -#define STRSAFE_NULL_ON_FAILURE 0x00000800 -#define STRSAFE_NO_TRUNCATION 0x00001000 -#define STRSAFE_IGNORE_NULL_UNICODE_STRINGS 0x00010000 -#define STRSAFE_UNICODE_STRING_DEST_NULL_TERMINATED 0x00020000 - -#define STRSAFE_VALID_FLAGS (0x000000FF | STRSAFE_IGNORE_NULLS | STRSAFE_FILL_BEHIND_NULL | STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION) -#define STRSAFE_UNICODE_STRING_VALID_FLAGS (STRSAFE_VALID_FLAGS | STRSAFE_IGNORE_NULL_UNICODE_STRINGS | STRSAFE_UNICODE_STRING_DEST_NULL_TERMINATED) -#define STRSAFE_FILL_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_BEHIND_NULL)) -#define STRSAFE_FAILURE_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_ON_FAILURE)) -#define STRSAFE_GET_FILL_PATTERN(dwFlags) ((int)(dwFlags & 0x000000FF)) - -#endif /* _NTSTRSAFE_H_INCLUDED_ */ - -#define STRSAFE_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL) -#define STRSAFE_E_INVALID_PARAMETER ((HRESULT)0x80070057L) -#define STRSAFE_E_END_OF_FILE ((HRESULT)0x80070026L) - -#ifndef STRSAFE_NO_CCH_FUNCTIONS -STRSAFEAPI -StringCchCatA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc); - -STRSAFEAPI -StringCchCatW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc); - -STRSAFEAPI -StringCchCatExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCatExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCatNA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchMaxAppend); - -STRSAFEAPI -StringCchCatNW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchMaxAppend); - -STRSAFEAPI -StringCchCatNExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchMaxAppend, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCatNExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchMaxAppend, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCopyA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc); - -STRSAFEAPI -StringCchCopyW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc); - -STRSAFEAPI -StringCchCopyExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCopyExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCopyNA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchSrc); - -STRSAFEAPI -StringCchCopyNW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchSrc); - -STRSAFEAPI -StringCchCopyNExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchSrc, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchCopyNExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchSrc, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFE_INLINE_API -StringCchGetsA(LPTSTR pszDest, - size_t cchDest); - -STRSAFE_INLINE_API -StringCchGetsW(LPWSTR pszDest, - size_t cchDest); - -STRSAFE_INLINE_API -StringCchGetsExA(LPTSTR pszDest, - size_t cchDest, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFE_INLINE_API -StringCchGetsExW(LPWSTR pszDest, - size_t cchDest, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCchVPrintfA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszFormat, - va_list argList); - -STRSAFEAPI -StringCchVPrintfW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszFormat, - va_list argList); - -STRSAFEAPI -StringCchVPrintfExA(LPTSTR pszDest, - size_t cchDest, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags, - LPCTSTR pszFormat, - va_list argList); - -STRSAFEAPI -StringCchVPrintfExW(LPWSTR pszDest, - size_t cchDest, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags, - LPCWSTR pszFormat, - va_list argList); - -STRSAFEAPI -StringCchLengthA(LPCTSTR psz, - size_t cchMax, - size_t* pcch); - -STRSAFEAPI -StringCchLengthW(LPCWSTR psz, - size_t cchMax, - size_t* pcch); -#endif /* STRSAFE_NO_CCH_FUNCTIONS */ - -/* CB */ -#ifndef STRSAFE_NO_CB_FUNCTIONS -STRSAFEAPI -StringCbCatA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc); - -STRSAFEAPI -StringCbCatW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc); - -STRSAFEAPI -StringCbCatExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCbCatExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCbCopyA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc); - -STRSAFEAPI -StringCbCopyW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc); - -STRSAFEAPI -StringCbCopyExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCbCopyExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCbCopyNA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cbSrc); - -STRSAFEAPI -StringCbCopyNW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cbSrc); - -STRSAFEAPI -StringCbCopyNExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cbSrc, - LPTSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCbCopyNExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cbSrc, - LPWSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFE_INLINE_API -StringCbGetsA(LPTSTR pszDest, - size_t cbDest); - -STRSAFE_INLINE_API -StringCbGetsW(LPWSTR pszDest, - size_t cbDest); - -STRSAFE_INLINE_API -StringCbGetsExA(LPTSTR pszDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t* pbRemaining, - unsigned long dwFlags); - -STRSAFE_INLINE_API -StringCbGetsExW(LPWSTR pszDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags); - -STRSAFEAPI -StringCbPrintfA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszFormat, - ...); - -STRSAFEAPI -StringCbPrintfW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszFormat, - ...); - -STRSAFEAPI -StringCbPrintfExA(LPTSTR pszDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags, - LPCTSTR pszFormat, - ...); - -STRSAFEAPI -StringCbPrintfExW(LPWSTR pszDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t* pcbRemaining, - unsigned long dwFlags, - LPCWSTR pszFormat, - ...); -#endif /* STRSAFE_NO_CB_FUNCTIONS */ - -#ifdef UNICODE -#ifndef STRSAFE_NO_CCH_FUNCTIONS -#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 StringCchPrintf StringCchPrintfW -#define StringCchPrintfEx StringCchPrintfExW -#define StringCchVPrintf StringCchVPrintfW -#define StringCchVPrintfEx StringCchVPrintfExW -#define StringCchLength StringCchLengthW -#endif /* STRSAFE_NO_CCH_FUNCTIONS */ - -#ifndef STRSAFE_NO_CB_FUNCTIONS -#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 StringCbPrintf StringCbPrintfW -#define StringCbPrintfEx StringCbPrintfExW -#define StringCbVPrintf StringCbVPrintfW -#define StringCbVPrintfEx StringCbVPrintfExW -#define StringCbLenght StringCbLenghtW -#endif /* STRSAFE_NO_CB_FUNCTIONS */ - -#else -#ifndef STRSAFE_NO_CCH_FUNCTIONS -#define StringCchCat StringCchCatA -#define StringCchCatEx StringCchCatExA -#define StringCchCatN StringCchCatNA -#define StringCchCatNEx StringCchCatNExA -#define StringCchCopy StringCchCopyA -#define StringCchCopyEx StringCchCopyExA -#define StringCchCopyN StringCchCopyNA -#define StringCchCopyNEx StringCchCopyNExA -#define StringCchGets StringCchGetsA -#define StringCchGetsEx StringCchGetsExA -#define StringCchPrintf StringCchPrintfA -#define StringCchPrintfEx StringCchPrintfExA -#define StringCchVPrintf StringCchVPrintfA -#define StringCchVPrintfEx StringCchVPrintfExA -#define StringCchLength StringCchLengthA -#endif /* STRSAFE_NO_CCH_FUNCTIONS */ - -#ifndef STRSAFE_NO_CB_FUNCTIONS -#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 StringCbPrintf StringCbPrintfA -#define StringCbPrintfEx StringCbPrintfExA -#define StringCbVPrintf StringCbVPrintfA -#define StringCbVPrintfEx StringCbVPrintfExA -#define StringCbLenght StringCbLenghtA -#endif /* STRSAFE_NO_CB_FUNCTIONS */ -#endif /* UNICODE */ - -#ifdef __cplusplus -} -#endif /* cplusplus */ - -#endif /* _STRSAFE_H_INCLUDED_ */ diff --git a/reactos/lib/sdk/sdk.rbuild b/reactos/lib/sdk/sdk.rbuild index 7597d0805f1..671e0090dc3 100644 --- a/reactos/lib/sdk/sdk.rbuild +++ b/reactos/lib/sdk/sdk.rbuild @@ -23,7 +23,4 @@ - - - diff --git a/reactos/lib/sdk/strsafe/strsafe.c b/reactos/lib/sdk/strsafe/strsafe.c deleted file mode 100644 index 4b0d9615199..00000000000 --- a/reactos/lib/sdk/strsafe/strsafe.c +++ /dev/null @@ -1,2834 +0,0 @@ -/* - * STRSAFE.LIB - * - * Copyright 2007 Dmitry Chapyshev - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include -#include -#include - -HRESULT -StringCopyWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc); -HRESULT -StringCopyWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc); -HRESULT -StringCopyExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCopyExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCopyNWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchSrc); -HRESULT -StringCopyNWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchSrc); -HRESULT -StringCopyNExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cchSrc, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCopyNExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cchSrc, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCatWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc); -HRESULT -StringCatWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc); -HRESULT -StringCatExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCatExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCatNWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchMaxAppend); -HRESULT -StringCatNWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchMaxAppend); -HRESULT -StringCatNExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cchMaxAppend, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringCatNExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cchMaxAppend, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags); -HRESULT -StringVPrintfWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszFormat, - va_list argList); -HRESULT -StringVPrintfWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszFormat, - va_list argList); -HRESULT -StringVPrintfExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags, - LPCTSTR pszFormat, - va_list argList); -HRESULT -StringVPrintfExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - unsigned long dwFlags, - LPCWSTR pszFormat, - va_list argList); -HRESULT -StringLengthWorkerA(LPCTSTR psz, - size_t cchMax, - size_t *pcch); -HRESULT -StringLengthWorkerW(LPCWSTR psz, - size_t cchMax, - size_t *pcch); - -/**************************************************************************/ -// Worker's functions -/**************************************************************************/ -HRESULT -StringCopyWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - while (cchDest && (*pszSrc != '\0')) - { - *pszDest++ = *pszSrc++; - cchDest--; - } - if (cchDest == 0) - { - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDest= '\0'; - } - return hr; -} - -HRESULT -StringCopyWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - while (cchDest && (*pszSrc != L'\0')) - { - *pszDest++ = *pszSrc++; - cchDest--; - } - if (cchDest == 0) - { - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDest= L'\0'; - } - return hr; -} - -HRESULT -StringCopyExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPTSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - hr = STRSAFE_E_INVALID_PARAMETER; - } - if (pszSrc == NULL) pszSrc = ""; - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - if (*pszSrc != '\0') - { - if (pszDest == NULL) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - - while (cchRemaining && (*pszSrc != '\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - } - - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - else - { - pszDestEnd--; - cchRemaining++; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDestEnd = '\0'; - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = '\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCopyExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPWSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - hr = STRSAFE_E_INVALID_PARAMETER; - } - - if (pszSrc == NULL) pszSrc = L""; - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - if (*pszSrc != L'\0') - { - if (pszDest == NULL) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - while (cchRemaining && (*pszSrc != L'\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - } - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - else - { - pszDestEnd--; - cchRemaining++; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDestEnd = L'\0'; - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = L'\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCopyNWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - while (cchDest && cchSrc && (*pszSrc != '\0')) - { - *pszDest++= *pszSrc++; - cchDest--; - cchSrc--; - } - if (cchDest == 0) - { - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDest= '\0'; - } - return hr; -} - -HRESULT -StringCopyNWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchSrc) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - while (cchDest && cchSrc && (*pszSrc != L'\0')) - { - *pszDest++= *pszSrc++; - cchDest--; - cchSrc--; - } - if (cchDest == 0) - { - pszDest--; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDest= L'\0'; - } - return hr; -} - -HRESULT -StringCopyNExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cchSrc, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPTSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) hr = STRSAFE_E_INVALID_PARAMETER; - } - - if (pszSrc == NULL) pszSrc = ""; - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - if (*pszSrc != '\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - while (cchRemaining && cchSrc && (*pszSrc != '\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - cchSrc--; - } - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - else - { - pszDestEnd--; - cchRemaining++; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDestEnd = '\0'; - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = '\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCopyNExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cchSrc, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPWSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) hr = STRSAFE_E_INVALID_PARAMETER; - } - if (pszSrc == NULL) pszSrc = L""; - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - if (*pszSrc != L'\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - while (cchRemaining && cchSrc && (*pszSrc != L'\0')) - { - *pszDestEnd++= *pszSrc++; - cchRemaining--; - cchSrc--; - } - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - else - { - pszDestEnd--; - cchRemaining++; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - *pszDestEnd = L'\0'; - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = L'\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCatWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - hr = StringCopyWorkerA(pszDest + cchDestCurrent, cchDest - cchDestCurrent, pszSrc); - return hr; -} - -HRESULT -StringCatWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - hr = StringCopyWorkerW(pszDest + cchDestCurrent, cchDest - cchDestCurrent, pszSrc); - return hr; -} - -HRESULT -StringCatExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPTSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cchDestCurrent; - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) - cchDestCurrent = 0; - else - hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (pszSrc == NULL) pszSrc = ""; - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - if (*pszSrc != '\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - hr = StringCopyExWorkerA(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)), - pszSrc, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else - if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - } - if (dwFlags & STRSAFE_NULL_ON_FAILURE) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = '\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCatExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPWSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cchDestCurrent; - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) cchDestCurrent = 0; - else hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (pszSrc == NULL) pszSrc = L""; - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - if (*pszSrc != L'\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - hr = StringCopyExWorkerW(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)), - pszSrc, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - } - if (dwFlags & STRSAFE_NULL_ON_FAILURE) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = L'\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCatNWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchMaxAppend) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - hr = StringCopyNWorkerA(pszDest + cchDestCurrent, cchDest - cchDestCurrent, pszSrc, cchMaxAppend); - return hr; -} - -HRESULT -StringCatNWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchMaxAppend) -{ - HRESULT hr; - size_t cchDestCurrent; - - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - hr = StringCopyNWorkerW(pszDest + cchDestCurrent, cchDest - cchDestCurrent, pszSrc, cchMaxAppend); - return hr; -} - -HRESULT -StringCatNExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cchMaxAppend, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPTSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - size_t cchDestCurrent = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) cchDestCurrent = 0; - else hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (pszSrc == NULL) pszSrc = ""; - } - else - { - hr = StringLengthWorkerA(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - if (*pszSrc != '\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - hr = StringCopyNExWorkerA(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)), - pszSrc, - cchMaxAppend, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = '\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringCatNExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cchMaxAppend, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPWSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - size_t cchDestCurrent = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest == 0) && (cbDest == 0)) cchDestCurrent = 0; - else hr = STRSAFE_E_INVALID_PARAMETER; - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (pszSrc == NULL) pszSrc = L""; - } - else - { - hr = StringLengthWorkerW(pszDest, cchDest, &cchDestCurrent); - if (SUCCEEDED(hr)) - { - pszDestEnd = pszDest + cchDestCurrent; - cchRemaining = cchDest - cchDestCurrent; - } - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - if (*pszSrc != L'\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - hr = StringCopyNExWorkerW(pszDestEnd, - cchRemaining, - (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)), - pszSrc, - cchMaxAppend, - &pszDestEnd, - &cchRemaining, - dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = L'\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringVPrintfWorkerA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszFormat, - va_list argList) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - int iRet; - size_t cchMax; - cchMax = cchDest - 1; - iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList); - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - pszDest += cchMax; - *pszDest = '\0'; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - pszDest += cchMax; - *pszDest = '\0'; - } - } - return hr; -} - -HRESULT -StringVPrintfWorkerW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszFormat, - va_list argList) -{ - HRESULT hr = S_OK; - - if (cchDest == 0) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - int iRet; - size_t cchMax; - cchMax = cchDest - 1; - iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList); - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - pszDest += cchMax; - *pszDest = L'\0'; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - pszDest += cchMax; - *pszDest = L'\0'; - } - } - return hr; -} - -HRESULT -StringVPrintfExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags, - LPCTSTR pszFormat, - va_list argList) -{ - HRESULT hr = S_OK; - LPTSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - hr = STRSAFE_E_INVALID_PARAMETER; - } - if (pszFormat == NULL) pszFormat = ""; - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - if (*pszFormat != '\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - int iRet; - size_t cchMax; - cchMax = cchDest - 1; - iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList); - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - *pszDestEnd = '\0'; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - else if (((size_t)iRet) < cchMax) - { - pszDestEnd = pszDest + iRet; - cchRemaining = cchDest - iRet; - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = '\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringVPrintfExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags, - LPCWSTR pszFormat, - va_list argList) -{ - HRESULT hr = S_OK; - LPWSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - hr = STRSAFE_E_INVALID_PARAMETER; - } - - if (pszFormat == NULL) pszFormat = L""; - } - if (SUCCEEDED(hr)) - { - if (cchDest == 0) - { - pszDestEnd = pszDest; - cchRemaining = 0; - if (*pszFormat != L'\0') - { - if (pszDest == NULL) hr = STRSAFE_E_INVALID_PARAMETER; - else hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - } - else - { - int iRet; - size_t cchMax; - cchMax = cchDest - 1; - iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList); - if ((iRet < 0) || (((size_t)iRet) > cchMax)) - { - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - *pszDestEnd = L'\0'; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else if (((size_t)iRet) == cchMax) - { - pszDestEnd = pszDest + cchMax; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - else if (((size_t)iRet) < cchMax) - { - pszDestEnd = pszDest + iRet; - cchRemaining = cchDest - iRet; - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = L'\0'; - } - } - } - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -HRESULT -StringLengthWorkerA(LPCTSTR psz, - size_t cchMax, - size_t* pcch) -{ - HRESULT hr = S_OK; - size_t cchMaxPrev = cchMax; - - while (cchMax && (*psz != '\0')) psz++, cchMax--; - if (cchMax == 0) hr = STRSAFE_E_INVALID_PARAMETER; - if (SUCCEEDED(hr) && pcch) *pcch = cchMaxPrev - cchMax; - return hr; -} - -HRESULT -StringLengthWorkerW(LPCWSTR psz, - size_t cchMax, - size_t* pcch) -{ - HRESULT hr = S_OK; - size_t cchMaxPrev = cchMax; - - while (cchMax && (*psz != L'\0')) psz++, cchMax--; - if (cchMax == 0) hr = STRSAFE_E_INVALID_PARAMETER; - if (SUCCEEDED(hr) && pcch) *pcch = cchMaxPrev - cchMax; - return hr; -} - -STRSAFE_INLINE_API -StringGetsExWorkerA(LPTSTR pszDest, - size_t cchDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPTSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - if (SUCCEEDED(hr)) - { - if (cchDest <= 1) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - if (cchDest == 1) *pszDestEnd = '\0'; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else - { - char ch; - pszDestEnd = pszDest; - cchRemaining = cchDest; - while ((cchRemaining > 1) && (ch = (char)getc(stdin)) != '\n') - { - if (ch == EOF) - { - if (pszDestEnd == pszDest) - hr = STRSAFE_E_END_OF_FILE; - break; - } - *pszDestEnd = ch; - pszDestEnd++; - cchRemaining--; - } - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(char)) + (cbDest % sizeof(char))); - } - *pszDestEnd = '\0'; - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = '\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = '\0'; - } - } - } - } - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -STRSAFE_INLINE_API -StringGetsExWorkerW(LPWSTR pszDest, - size_t cchDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t* pcchRemaining, - unsigned long dwFlags) -{ - HRESULT hr = S_OK; - LPWSTR pszDestEnd = pszDest; - size_t cchRemaining = 0; - - if (dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; - else - { - if (dwFlags & STRSAFE_IGNORE_NULLS) - { - if (pszDest == NULL) - { - if ((cchDest != 0) || (cbDest != 0)) - hr = STRSAFE_E_INVALID_PARAMETER; - } - } - - if (SUCCEEDED(hr)) - { - if (cchDest <= 1) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - if (cchDest == 1) *pszDestEnd = L'\0'; - hr = STRSAFE_E_INSUFFICIENT_BUFFER; - } - else - { - wchar_t ch; - pszDestEnd = pszDest; - cchRemaining = cchDest; - while ((cchRemaining > 1) && (ch = (wchar_t)getwc(stdin)) != L'\n') - { - if (ch == (wchar_t)EOF) - { - if (pszDestEnd == pszDest) - hr = STRSAFE_E_END_OF_FILE; - break; - } - *pszDestEnd = ch; - pszDestEnd++; - cchRemaining--; - } - if (cchRemaining > 0) - { - if (dwFlags & STRSAFE_FILL_BEHIND_NULL) - memset(pszDestEnd + 1, STRSAFE_GET_FILL_PATTERN(dwFlags), ((cchRemaining - 1) * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); - } - *pszDestEnd = L'\0'; - } - } - } - if (FAILED(hr)) - { - if (pszDest) - { - if (dwFlags & STRSAFE_FILL_ON_FAILURE) - { - memset(pszDest, STRSAFE_GET_FILL_PATTERN(dwFlags), cbDest); - if (STRSAFE_GET_FILL_PATTERN(dwFlags) == 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - } - else if (cchDest > 0) - { - pszDestEnd = pszDest + cchDest - 1; - cchRemaining = 1; - *pszDestEnd = L'\0'; - } - } - if (dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) - { - if (cchDest > 0) - { - pszDestEnd = pszDest; - cchRemaining = cchDest; - *pszDestEnd = L'\0'; - } - } - } - } - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (ppszDestEnd) *ppszDestEnd = pszDestEnd; - if (pcchRemaining) *pcchRemaining = cchRemaining; - } - return hr; -} - -STRSAFEAPI -StringCchCatA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCatWorkerA(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCchCatW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCatWorkerW(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCchCatExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringCatExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFEAPI -StringCchCatExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringCatExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFEAPI -StringCchCatNA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchMaxAppend) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCatNWorkerA(pszDest, cchDest, pszSrc, cchMaxAppend); -} - -STRSAFEAPI -StringCchCatNW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchMaxAppend) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCatNWorkerW(pszDest, cchDest, pszSrc, cchMaxAppend); -} - -STRSAFEAPI -StringCchCatNExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchMaxAppend, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringCatNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFEAPI -StringCchCatNExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchMaxAppend, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringCatNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, pcchRemaining, dwFlags); - } - - return hr; -} - -STRSAFEAPI -StringCchCopyA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyWorkerA(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCchCopyW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyWorkerW(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCchCopyExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringCopyExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFEAPI -StringCchCopyExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringCopyExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFEAPI -StringCchCopyNA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchSrc) -{ - if ((cchDest > STRSAFE_MAX_CCH) || (cchSrc > STRSAFE_MAX_CCH)) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyNWorkerA(pszDest, cchDest, pszSrc, cchSrc); -} - -STRSAFEAPI -StringCchCopyNW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchSrc) -{ - if ((cchDest > STRSAFE_MAX_CCH) || (cchSrc > STRSAFE_MAX_CCH)) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyNWorkerW(pszDest, cchDest, pszSrc, cchSrc); -} - -STRSAFEAPI -StringCchCopyNExA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszSrc, - size_t cchSrc, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringCopyNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFEAPI -StringCchCopyNExW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszSrc, - size_t cchSrc, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringCopyNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFE_INLINE_API -StringCchGetsA(LPTSTR pszDest, - size_t cchDest) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0); - } - return hr; -} - -STRSAFE_INLINE_API -StringCchGetsW(LPWSTR pszDest, - size_t cchDest) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, NULL, NULL, 0); - } - return hr; -} - -STRSAFE_INLINE_API -StringCchGetsExA(LPTSTR pszDest, - size_t cchDest, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFE_INLINE_API -StringCchGetsExW(LPWSTR pszDest, - size_t cchDest, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags); - } - return hr; -} - -STRSAFEAPI -StringCchPrintfA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszFormat, - ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - va_list argList; - va_start(argList, pszFormat); - hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); - va_end(argList); - } - return hr; -} - -STRSAFEAPI -StringCchPrintfW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszFormat, - ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - va_list argList; - va_start(argList, pszFormat); - hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); - va_end(argList); - } - return hr; -} - -STRSAFEAPI -StringCchPrintfExA(LPTSTR pszDest, - size_t cchDest, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags, - LPCTSTR pszFormat, - ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - va_list argList; - cbDest = cchDest * sizeof(char); - va_start(argList, pszFormat); - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - va_end(argList); - } - return hr; -} - -STRSAFEAPI -StringCchPrintfExW(LPWSTR pszDest, - size_t cchDest, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags, - LPCWSTR pszFormat, - ...) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - va_list argList; - cbDest = cchDest * sizeof(wchar_t); - va_start(argList, pszFormat); - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - va_end(argList); - } - return hr; -} - -STRSAFEAPI -StringCchVPrintfA(LPTSTR pszDest, - size_t cchDest, - LPCTSTR pszFormat, - va_list argList) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); -} - -STRSAFEAPI -StringCchVPrintfW(LPWSTR pszDest, - size_t cchDest, - LPCWSTR pszFormat, - va_list argList) -{ - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); -} - -STRSAFEAPI -StringCchVPrintfExA(LPTSTR pszDest, - size_t cchDest, - LPTSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags, - LPCTSTR pszFormat, - va_list argList) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(char); - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - } - return hr; -} - -STRSAFEAPI -StringCchVPrintfExW(LPWSTR pszDest, - size_t cchDest, - LPWSTR *ppszDestEnd, - size_t *pcchRemaining, - DWORD dwFlags, - LPCWSTR pszFormat, - va_list argList) -{ - HRESULT hr; - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cbDest; - cbDest = cchDest * sizeof(wchar_t); - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList); - } - return hr; -} - -STRSAFEAPI -StringCchLengthA(LPCTSTR psz, - size_t cchMax, - size_t *pcch) -{ - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringLengthWorkerA(psz, cchMax, pcch); -} - -STRSAFEAPI -StringCchLengthW(LPCWSTR psz, - size_t cchMax, - size_t *pcch) -{ - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringLengthWorkerW(psz, cchMax, pcch); -} - -STRSAFEAPI -StringCbCatA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCatWorkerA(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCbCatW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCatWorkerW(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCbCatExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringCatExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - return hr; -} - -STRSAFEAPI -StringCbCatExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringCatExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - return hr; -} - -STRSAFEAPI -StringCbCatNA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cbMaxAppend) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cchMaxAppend; - cchMaxAppend = cbMaxAppend / sizeof(char); - hr = StringCatNWorkerA(pszDest, cchDest, pszSrc, cchMaxAppend); - } - return hr; -} - -STRSAFEAPI -StringCbCatNW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cbMaxAppend) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cchMaxAppend; - cchMaxAppend = cbMaxAppend / sizeof(wchar_t); - hr = StringCatNWorkerW(pszDest, cchDest, pszSrc, cchMaxAppend); - } - return hr; -} - -STRSAFEAPI -StringCbCatNExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cbMaxAppend, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cchMaxAppend; - cchMaxAppend = cbMaxAppend / sizeof(char); - hr = StringCatNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, &cchRemaining, dwFlags); - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - - return hr; -} - -STRSAFEAPI -StringCbCatNExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cbMaxAppend, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - size_t cchMaxAppend; - cchMaxAppend = cbMaxAppend / sizeof(wchar_t); - hr = StringCatNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchMaxAppend, ppszDestEnd, &cchRemaining, dwFlags); - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - return hr; -} - -STRSAFEAPI -StringCbCopyA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyWorkerA(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCbCopyW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyWorkerW(pszDest, cchDest, pszSrc); -} - -STRSAFEAPI -StringCbCopyExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringCopyExWorkerA(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - - return hr; -} - -STRSAFEAPI -StringCbCopyExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringCopyExWorkerW(pszDest, cchDest, cbDest, pszSrc, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - - return hr; -} - -STRSAFEAPI -StringCbCopyNA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cbSrc) -{ - size_t cchDest; - size_t cchSrc; - - cchDest = cbDest / sizeof(char); - cchSrc = cbSrc / sizeof(char); - if ((cchDest > STRSAFE_MAX_CCH) || (cchSrc > STRSAFE_MAX_CCH)) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyNWorkerA(pszDest, cchDest, pszSrc, cchSrc); -} - -STRSAFEAPI -StringCbCopyNW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cbSrc) -{ - size_t cchDest; - size_t cchSrc; - - cchDest = cbDest / sizeof(wchar_t); - cchSrc = cbSrc / sizeof(wchar_t); - if ((cchDest > STRSAFE_MAX_CCH) || (cchSrc > STRSAFE_MAX_CCH)) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringCopyNWorkerW(pszDest, cchDest, pszSrc, cchSrc); -} - -STRSAFEAPI -StringCbCopyNExA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszSrc, - size_t cbSrc, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchSrc; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - cchSrc = cbSrc / sizeof(char); - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringCopyNExWorkerA(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - return hr; -} - -STRSAFEAPI -StringCbCopyNExW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszSrc, - size_t cbSrc, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchSrc; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - cchSrc = cbSrc / sizeof(wchar_t); - if ((cchDest > STRSAFE_MAX_CCH) || - (cchSrc > STRSAFE_MAX_CCH)) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringCopyNExWorkerW(pszDest, cchDest, cbDest, pszSrc, cchSrc, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - return hr; -} - -STRSAFE_INLINE_API -StringCbGetsA(LPTSTR pszDest, - size_t cbDest) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0); -} - -STRSAFE_INLINE_API -StringCbGetsW(LPWSTR pszDest, - size_t cbDest) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringGetsExWorkerW(pszDest, cchDest, cbDest, NULL, NULL, 0); -} - -STRSAFE_INLINE_API -StringCbGetsExA(LPTSTR pszDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - return hr; -} - -STRSAFE_INLINE_API -StringCbGetsExW(LPWSTR pszDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringGetsExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags); - if (SUCCEEDED(hr) || - (hr == STRSAFE_E_INSUFFICIENT_BUFFER) || - (hr == STRSAFE_E_END_OF_FILE)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - return hr; -} - -STRSAFEAPI -StringCbPrintfA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszFormat, - ...) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - va_list argList; - va_start(argList, pszFormat); - hr = StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); - va_end(argList); - } - return hr; -} - -STRSAFEAPI -StringCbPrintfW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszFormat, - ...) -{ - HRESULT hr; - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - va_list argList; - va_start(argList, pszFormat); - hr = StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); - va_end(argList); - } - return hr; -} - -STRSAFEAPI -StringCbPrintfExA(LPTSTR pszDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags, - LPCTSTR pszFormat, - ...) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - va_list argList; - va_start(argList, pszFormat); - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - va_end(argList); - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - return hr; -} - -STRSAFEAPI -StringCbPrintfExW(LPWSTR pszDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags, - LPCWSTR pszFormat, - ...) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - { - va_list argList; - va_start(argList, pszFormat); - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - va_end(argList); - } - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - return hr; -} - -STRSAFEAPI -StringCbVPrintfA(LPTSTR pszDest, - size_t cbDest, - LPCTSTR pszFormat, - va_list argList) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringVPrintfWorkerA(pszDest, cchDest, pszFormat, argList); -} - -STRSAFEAPI -StringCbVPrintfW(LPWSTR pszDest, - size_t cbDest, - LPCWSTR pszFormat, - va_list argList) -{ - size_t cchDest; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - return STRSAFE_E_INVALID_PARAMETER; - else - return StringVPrintfWorkerW(pszDest, cchDest, pszFormat, argList); -} - -STRSAFEAPI -StringCbVPrintfExA(LPTSTR pszDest, - size_t cbDest, - LPTSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags, - LPCTSTR pszFormat, - va_list argList) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(char); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringVPrintfExWorkerA(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char)); - } - return hr; -} - -STRSAFEAPI -StringCbVPrintfExW(LPWSTR pszDest, - size_t cbDest, - LPWSTR *ppszDestEnd, - size_t *pcbRemaining, - DWORD dwFlags, - LPCWSTR pszFormat, - va_list argList) -{ - HRESULT hr; - size_t cchDest; - size_t cchRemaining = 0; - - cchDest = cbDest / sizeof(wchar_t); - if (cchDest > STRSAFE_MAX_CCH) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringVPrintfExWorkerW(pszDest, cchDest, cbDest, ppszDestEnd, &cchRemaining, dwFlags, pszFormat, argList); - if (SUCCEEDED(hr) || (hr == STRSAFE_E_INSUFFICIENT_BUFFER)) - { - if (pcbRemaining) - *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); - } - return hr; -} - -STRSAFEAPI -StringCbLengthA(LPCTSTR psz, - size_t cbMax, - size_t *pcb) -{ - HRESULT hr; - size_t cchMax; - size_t cch = 0; - - cchMax = cbMax / sizeof(char); - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringLengthWorkerA(psz, cchMax, &cch); - if (SUCCEEDED(hr) && pcb) *pcb = cch * sizeof(char); - return hr; -} - -STRSAFEAPI -StringCbLengthW(LPCWSTR psz, - size_t cbMax, - size_t *pcb) -{ - HRESULT hr; - size_t cchMax; - size_t cch = 0; - - cchMax = cbMax / sizeof(wchar_t); - if ((psz == NULL) || (cchMax > STRSAFE_MAX_CCH)) - hr = STRSAFE_E_INVALID_PARAMETER; - else - hr = StringLengthWorkerW(psz, cchMax, &cch); - if (SUCCEEDED(hr) && pcb) *pcb = cch * sizeof(wchar_t); - return hr; -} diff --git a/reactos/lib/sdk/strsafe/strsafe.rbuild b/reactos/lib/sdk/strsafe/strsafe.rbuild deleted file mode 100644 index eeec1821b61..00000000000 --- a/reactos/lib/sdk/strsafe/strsafe.rbuild +++ /dev/null @@ -1,6 +0,0 @@ - - - - - strsafe.c - -- 2.17.1