Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/strsafe.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifndef _STRSAFE_H_INCLUDED_ | |
| 7 #define _STRSAFE_H_INCLUDED_ | |
| 8 | |
| 9 #include <stdio.h> | |
| 10 #include <string.h> | |
| 11 #include <stdarg.h> | |
| 12 #include <specstrings.h> | |
| 13 | |
| 14 #ifndef _SIZE_T_DEFINED | |
| 15 #define _SIZE_T_DEFINED | |
| 16 #undef size_t | |
| 17 #ifdef _WIN64 | |
| 18 __MINGW_EXTENSION typedef unsigned __int64 size_t; | |
| 19 #else | |
| 20 typedef unsigned int size_t; | |
| 21 #endif | |
| 22 #endif | |
| 23 | |
| 24 #ifndef _SSIZE_T_DEFINED | |
| 25 #define _SSIZE_T_DEFINED | |
| 26 #undef ssize_t | |
| 27 #ifdef _WIN64 | |
| 28 __MINGW_EXTENSION typedef __int64 ssize_t; | |
| 29 #else | |
| 30 typedef int ssize_t; | |
| 31 #endif | |
| 32 #endif | |
| 33 | |
| 34 #ifndef _WCHAR_T_DEFINED | |
| 35 #define _WCHAR_T_DEFINED | |
| 36 typedef unsigned short wchar_t; | |
| 37 #endif | |
| 38 | |
| 39 #ifndef _HRESULT_DEFINED | |
| 40 #define _HRESULT_DEFINED | |
| 41 typedef long HRESULT; | |
| 42 #endif | |
| 43 | |
| 44 #ifndef SUCCEEDED | |
| 45 #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) | |
| 46 #endif | |
| 47 | |
| 48 #ifndef FAILED | |
| 49 #define FAILED(hr) ((HRESULT)(hr) < 0) | |
| 50 #endif | |
| 51 | |
| 52 #ifndef S_OK | |
| 53 #define S_OK ((HRESULT)0x00000000L) | |
| 54 #endif | |
| 55 | |
| 56 #ifndef C_ASSERT | |
| 57 #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] | |
| 58 #endif | |
| 59 | |
| 60 #ifdef __cplusplus | |
| 61 #define _STRSAFE_EXTERN_C extern "C" | |
| 62 #else | |
| 63 #define _STRSAFE_EXTERN_C extern | |
| 64 #endif | |
| 65 | |
| 66 #ifndef WINAPI | |
| 67 #define WINAPI __stdcall | |
| 68 #endif | |
| 69 | |
| 70 #define STRSAFEAPI static __inline HRESULT WINAPI | |
| 71 #define STRSAFE_INLINE_API __CRT_INLINE HRESULT WINAPI | |
| 72 | |
| 73 #define STRSAFE_MAX_CCH 2147483647 | |
| 74 | |
| 75 #ifndef _NTSTRSAFE_H_INCLUDED_ | |
| 76 #define STRSAFE_IGNORE_NULLS 0x00000100 | |
| 77 #define STRSAFE_FILL_BEHIND_NULL 0x00000200 | |
| 78 #define STRSAFE_FILL_ON_FAILURE 0x00000400 | |
| 79 #define STRSAFE_NULL_ON_FAILURE 0x00000800 | |
| 80 #define STRSAFE_NO_TRUNCATION 0x00001000 | |
| 81 #define STRSAFE_IGNORE_NULL_UNICODE_STRINGS 0x00010000 | |
| 82 #define STRSAFE_UNICODE_STRING_DEST_NULL_TERMINATED 0x00020000 | |
| 83 | |
| 84 #define STRSAFE_VALID_FLAGS (0x000000FF | STRSAFE_IGNORE_NULLS | STRSAFE_FILL_BEHIND_NULL | STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION) | |
| 85 #define STRSAFE_UNICODE_STRING_VALID_FLAGS (STRSAFE_VALID_FLAGS | STRSAFE_IGNORE_NULL_UNICODE_STRINGS | STRSAFE_UNICODE_STRING_DEST_NULL_TERMINATED) | |
| 86 | |
| 87 #define STRSAFE_FILL_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_BEHIND_NULL)) | |
| 88 #define STRSAFE_FAILURE_BYTE(x) ((unsigned long)((x & 0x000000FF) | STRSAFE_FILL_ON_FAILURE)) | |
| 89 | |
| 90 #define STRSAFE_GET_FILL_PATTERN(dwFlags) ((int)(dwFlags & 0x000000FF)) | |
| 91 #endif | |
| 92 | |
| 93 #define STRSAFE_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL) | |
| 94 #define STRSAFE_E_INVALID_PARAMETER ((HRESULT)0x80070057L) | |
| 95 #define STRSAFE_E_END_OF_FILE ((HRESULT)0x80070026L) | |
| 96 | |
| 97 typedef char *STRSAFE_LPSTR; | |
| 98 typedef const char *STRSAFE_LPCSTR; | |
| 99 typedef wchar_t *STRSAFE_LPWSTR; | |
| 100 typedef const wchar_t *STRSAFE_LPCWSTR; | |
| 101 | |
| 102 STRSAFEAPI StringCopyWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc); | |
| 103 STRSAFEAPI StringCopyWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc); | |
| 104 STRSAFEAPI StringCopyExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 105 STRSAFEAPI StringCopyExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 106 STRSAFEAPI StringCopyNWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy); | |
| 107 STRSAFEAPI StringCopyNWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy); | |
| 108 STRSAFEAPI StringCopyNExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 109 STRSAFEAPI StringCopyNExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 110 STRSAFEAPI StringCatWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc); | |
| 111 STRSAFEAPI StringCatWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc); | |
| 112 STRSAFEAPI StringCatExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 113 STRSAFEAPI StringCatExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 114 STRSAFEAPI StringCatNWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend); | |
| 115 STRSAFEAPI StringCatNWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend); | |
| 116 STRSAFEAPI StringCatNExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 117 STRSAFEAPI StringCatNExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 118 STRSAFEAPI StringVPrintfWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszFormat,va_list argList); | |
| 119 STRSAFEAPI StringVPrintfWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszFormat,va_list argList); | |
| 120 STRSAFEAPI StringVPrintfExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,va_list argList); | |
| 121 STRSAFEAPI StringVPrintfExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,va_list argList); | |
| 122 STRSAFEAPI StringLengthWorkerA(STRSAFE_LPCSTR psz,size_t cchMax,size_t *pcchLength); | |
| 123 STRSAFEAPI StringLengthWorkerW(STRSAFE_LPCWSTR psz,size_t cchMax,size_t *pcchLength); | |
| 124 STRSAFE_INLINE_API StringGetsExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 125 STRSAFE_INLINE_API StringGetsExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 126 | |
| 127 #ifdef UNICODE | |
| 128 #define StringCchCopy StringCchCopyW | |
| 129 #else | |
| 130 #define StringCchCopy StringCchCopyA | |
| 131 #endif | |
| 132 | |
| 133 STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc); | |
| 134 STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc); | |
| 135 | |
| 136 #ifndef __CRT__NO_INLINE | |
| 137 STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc) { | |
| 138 HRESULT hr; | |
| 139 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 140 else hr = StringCopyWorkerA(pszDest,cchDest,pszSrc); | |
| 141 return hr; | |
| 142 } | |
| 143 | |
| 144 STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc) { | |
| 145 HRESULT hr; | |
| 146 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 147 else hr = StringCopyWorkerW(pszDest,cchDest,pszSrc); | |
| 148 return hr; | |
| 149 } | |
| 150 #endif /* !__CRT__NO_INLINE */ | |
| 151 | |
| 152 #ifdef UNICODE | |
| 153 #define StringCbCopy StringCbCopyW | |
| 154 #else | |
| 155 #define StringCbCopy StringCbCopyA | |
| 156 #endif | |
| 157 | |
| 158 STRSAFEAPI StringCbCopyA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc); | |
| 159 STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc); | |
| 160 | |
| 161 #ifndef __CRT__NO_INLINE | |
| 162 STRSAFEAPI StringCbCopyA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc) { | |
| 163 HRESULT hr; | |
| 164 size_t cchDest; | |
| 165 cchDest = cbDest / sizeof(char); | |
| 166 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 167 else hr = StringCopyWorkerA(pszDest,cchDest,pszSrc); | |
| 168 return hr; | |
| 169 } | |
| 170 | |
| 171 STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc) { | |
| 172 HRESULT hr; | |
| 173 size_t cchDest; | |
| 174 cchDest = cbDest / sizeof(wchar_t); | |
| 175 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 176 else hr = StringCopyWorkerW(pszDest,cchDest,pszSrc); | |
| 177 return hr; | |
| 178 } | |
| 179 #endif /* !__CRT__NO_INLINE */ | |
| 180 | |
| 181 #ifdef UNICODE | |
| 182 #define StringCchCopyEx StringCchCopyExW | |
| 183 #else | |
| 184 #define StringCchCopyEx StringCchCopyExA | |
| 185 #endif | |
| 186 | |
| 187 STRSAFEAPI StringCchCopyExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 188 STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 189 | |
| 190 #ifndef __CRT__NO_INLINE | |
| 191 STRSAFEAPI StringCchCopyExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 192 HRESULT hr; | |
| 193 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 194 else { | |
| 195 size_t cbDest; | |
| 196 cbDest = cchDest*sizeof(char); | |
| 197 hr = StringCopyExWorkerA(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags); | |
| 198 } | |
| 199 return hr; | |
| 200 } | |
| 201 | |
| 202 STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 203 HRESULT hr; | |
| 204 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 205 else { | |
| 206 size_t cbDest; | |
| 207 cbDest = cchDest*sizeof(wchar_t); | |
| 208 hr = StringCopyExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags); | |
| 209 } | |
| 210 return hr; | |
| 211 } | |
| 212 #endif /* !__CRT__NO_INLINE */ | |
| 213 | |
| 214 #ifdef UNICODE | |
| 215 #define StringCbCopyEx StringCbCopyExW | |
| 216 #else | |
| 217 #define StringCbCopyEx StringCbCopyExA | |
| 218 #endif | |
| 219 | |
| 220 STRSAFEAPI StringCbCopyExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 221 STRSAFEAPI StringCbCopyExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 222 | |
| 223 #ifndef __CRT__NO_INLINE | |
| 224 STRSAFEAPI StringCbCopyExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 225 HRESULT hr; | |
| 226 size_t cchDest; | |
| 227 size_t cchRemaining = 0; | |
| 228 cchDest = cbDest / sizeof(char); | |
| 229 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 230 else hr = StringCopyExWorkerA(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags); | |
| 231 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 232 if(pcbRemaining) { | |
| 233 *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 234 } | |
| 235 } | |
| 236 return hr; | |
| 237 } | |
| 238 | |
| 239 STRSAFEAPI StringCbCopyExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 240 HRESULT hr; | |
| 241 size_t cchDest; | |
| 242 size_t cchRemaining = 0; | |
| 243 cchDest = cbDest / sizeof(wchar_t); | |
| 244 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 245 else hr = StringCopyExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags); | |
| 246 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 247 if(pcbRemaining) { | |
| 248 *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 249 } | |
| 250 } | |
| 251 return hr; | |
| 252 } | |
| 253 #endif /* !__CRT__NO_INLINE */ | |
| 254 | |
| 255 STRSAFEAPI StringCchCopyNA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy); | |
| 256 STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy); | |
| 257 #ifdef UNICODE | |
| 258 #define StringCchCopyN StringCchCopyNW | |
| 259 #else | |
| 260 #define StringCchCopyN StringCchCopyNA | |
| 261 #endif | |
| 262 | |
| 263 #ifndef __CRT__NO_INLINE | |
| 264 STRSAFEAPI StringCchCopyNA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy) { | |
| 265 HRESULT hr; | |
| 266 if((cchDest > STRSAFE_MAX_CCH) || (cchToCopy > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 267 else hr = StringCopyNWorkerA(pszDest,cchDest,pszSrc,cchToCopy); | |
| 268 return hr; | |
| 269 } | |
| 270 | |
| 271 STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy) { | |
| 272 HRESULT hr; | |
| 273 if((cchDest > STRSAFE_MAX_CCH) || (cchToCopy > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 274 else hr = StringCopyNWorkerW(pszDest,cchDest,pszSrc,cchToCopy); | |
| 275 return hr; | |
| 276 } | |
| 277 #endif /* !__CRT__NO_INLINE */ | |
| 278 | |
| 279 STRSAFEAPI StringCbCopyNA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToCopy); | |
| 280 STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToCopy); | |
| 281 #ifdef UNICODE | |
| 282 #define StringCbCopyN StringCbCopyNW | |
| 283 #else | |
| 284 #define StringCbCopyN StringCbCopyNA | |
| 285 #endif | |
| 286 | |
| 287 #ifndef __CRT__NO_INLINE | |
| 288 STRSAFEAPI StringCbCopyNA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToCopy) { | |
| 289 HRESULT hr; | |
| 290 size_t cchDest; | |
| 291 size_t cchToCopy; | |
| 292 cchDest = cbDest / sizeof(char); | |
| 293 cchToCopy = cbToCopy / sizeof(char); | |
| 294 if((cchDest > STRSAFE_MAX_CCH) || (cchToCopy > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 295 else hr = StringCopyNWorkerA(pszDest,cchDest,pszSrc,cchToCopy); | |
| 296 return hr; | |
| 297 } | |
| 298 | |
| 299 STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToCopy) { | |
| 300 HRESULT hr; | |
| 301 size_t cchDest; | |
| 302 size_t cchToCopy; | |
| 303 cchDest = cbDest / sizeof(wchar_t); | |
| 304 cchToCopy = cbToCopy / sizeof(wchar_t); | |
| 305 if((cchDest > STRSAFE_MAX_CCH) || (cchToCopy > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 306 else hr = StringCopyNWorkerW(pszDest,cchDest,pszSrc,cchToCopy); | |
| 307 return hr; | |
| 308 } | |
| 309 #endif /* !__CRT__NO_INLINE */ | |
| 310 | |
| 311 STRSAFEAPI StringCchCopyNExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 312 STRSAFEAPI StringCchCopyNExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 313 #ifdef UNICODE | |
| 314 #define StringCchCopyNEx StringCchCopyNExW | |
| 315 #else | |
| 316 #define StringCchCopyNEx StringCchCopyNExA | |
| 317 #endif | |
| 318 | |
| 319 #ifndef __CRT__NO_INLINE | |
| 320 STRSAFEAPI StringCchCopyNExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 321 HRESULT hr; | |
| 322 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 323 else { | |
| 324 size_t cbDest; | |
| 325 cbDest = cchDest*sizeof(char); | |
| 326 hr = StringCopyNExWorkerA(pszDest,cchDest,cbDest,pszSrc,cchToCopy,ppszDestEnd,pcchRemaining,dwFlags); | |
| 327 } | |
| 328 return hr; | |
| 329 } | |
| 330 | |
| 331 STRSAFEAPI StringCchCopyNExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 332 HRESULT hr; | |
| 333 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 334 else { | |
| 335 size_t cbDest; | |
| 336 cbDest = cchDest*sizeof(wchar_t); | |
| 337 hr = StringCopyNExWorkerW(pszDest,cchDest,cbDest,pszSrc,cchToCopy,ppszDestEnd,pcchRemaining,dwFlags); | |
| 338 } | |
| 339 return hr; | |
| 340 } | |
| 341 #endif /* !__CRT__NO_INLINE */ | |
| 342 | |
| 343 STRSAFEAPI StringCbCopyNExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToCopy,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 344 STRSAFEAPI StringCbCopyNExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToCopy,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 345 #ifdef UNICODE | |
| 346 #define StringCbCopyNEx StringCbCopyNExW | |
| 347 #else | |
| 348 #define StringCbCopyNEx StringCbCopyNExA | |
| 349 #endif | |
| 350 | |
| 351 #ifndef __CRT__NO_INLINE | |
| 352 STRSAFEAPI StringCbCopyNExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToCopy,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 353 HRESULT hr; | |
| 354 size_t cchDest; | |
| 355 size_t cchToCopy; | |
| 356 size_t cchRemaining = 0; | |
| 357 cchDest = cbDest / sizeof(char); | |
| 358 cchToCopy = cbToCopy / sizeof(char); | |
| 359 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 360 else hr = StringCopyNExWorkerA(pszDest,cchDest,cbDest,pszSrc,cchToCopy,ppszDestEnd,&cchRemaining,dwFlags); | |
| 361 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 362 if(pcbRemaining) { | |
| 363 *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 364 } | |
| 365 } | |
| 366 return hr; | |
| 367 } | |
| 368 | |
| 369 STRSAFEAPI StringCbCopyNExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToCopy,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 370 HRESULT hr; | |
| 371 size_t cchDest; | |
| 372 size_t cchToCopy; | |
| 373 size_t cchRemaining = 0; | |
| 374 cchDest = cbDest / sizeof(wchar_t); | |
| 375 cchToCopy = cbToCopy / sizeof(wchar_t); | |
| 376 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 377 else hr = StringCopyNExWorkerW(pszDest,cchDest,cbDest,pszSrc,cchToCopy,ppszDestEnd,&cchRemaining,dwFlags); | |
| 378 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 379 if(pcbRemaining) { | |
| 380 *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 381 } | |
| 382 } | |
| 383 return hr; | |
| 384 } | |
| 385 #endif /* !__CRT__NO_INLINE */ | |
| 386 | |
| 387 STRSAFEAPI StringCchCatA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc); | |
| 388 STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc); | |
| 389 #ifdef UNICODE | |
| 390 #define StringCchCat StringCchCatW | |
| 391 #else | |
| 392 #define StringCchCat StringCchCatA | |
| 393 #endif | |
| 394 | |
| 395 #ifndef __CRT__NO_INLINE | |
| 396 STRSAFEAPI StringCchCatA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc) { | |
| 397 HRESULT hr; | |
| 398 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 399 else hr = StringCatWorkerA(pszDest,cchDest,pszSrc); | |
| 400 return hr; | |
| 401 } | |
| 402 | |
| 403 STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc) { | |
| 404 HRESULT hr; | |
| 405 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 406 else hr = StringCatWorkerW(pszDest,cchDest,pszSrc); | |
| 407 return hr; | |
| 408 } | |
| 409 #endif /* !__CRT__NO_INLINE */ | |
| 410 | |
| 411 STRSAFEAPI StringCbCatA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc); | |
| 412 STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc); | |
| 413 #ifdef UNICODE | |
| 414 #define StringCbCat StringCbCatW | |
| 415 #else | |
| 416 #define StringCbCat StringCbCatA | |
| 417 #endif | |
| 418 | |
| 419 #ifndef __CRT__NO_INLINE | |
| 420 STRSAFEAPI StringCbCatA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc) { | |
| 421 HRESULT hr; | |
| 422 size_t cchDest; | |
| 423 cchDest = cbDest / sizeof(char); | |
| 424 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 425 else hr = StringCatWorkerA(pszDest,cchDest,pszSrc); | |
| 426 return hr; | |
| 427 } | |
| 428 | |
| 429 STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc) { | |
| 430 HRESULT hr; | |
| 431 size_t cchDest; | |
| 432 cchDest = cbDest / sizeof(wchar_t); | |
| 433 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 434 else hr = StringCatWorkerW(pszDest,cchDest,pszSrc); | |
| 435 return hr; | |
| 436 } | |
| 437 #endif /* !__CRT__NO_INLINE */ | |
| 438 | |
| 439 STRSAFEAPI StringCchCatExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 440 STRSAFEAPI StringCchCatExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 441 #ifdef UNICODE | |
| 442 #define StringCchCatEx StringCchCatExW | |
| 443 #else | |
| 444 #define StringCchCatEx StringCchCatExA | |
| 445 #endif | |
| 446 | |
| 447 #ifndef __CRT__NO_INLINE | |
| 448 STRSAFEAPI StringCchCatExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 449 HRESULT hr; | |
| 450 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 451 else { | |
| 452 size_t cbDest; | |
| 453 cbDest = cchDest*sizeof(char); | |
| 454 hr = StringCatExWorkerA(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags); | |
| 455 } | |
| 456 return hr; | |
| 457 } | |
| 458 | |
| 459 STRSAFEAPI StringCchCatExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 460 HRESULT hr; | |
| 461 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 462 else { | |
| 463 size_t cbDest; | |
| 464 cbDest = cchDest*sizeof(wchar_t); | |
| 465 hr = StringCatExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags); | |
| 466 } | |
| 467 return hr; | |
| 468 } | |
| 469 #endif /* !__CRT__NO_INLINE */ | |
| 470 | |
| 471 STRSAFEAPI StringCbCatExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 472 STRSAFEAPI StringCbCatExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 473 #ifdef UNICODE | |
| 474 #define StringCbCatEx StringCbCatExW | |
| 475 #else | |
| 476 #define StringCbCatEx StringCbCatExA | |
| 477 #endif | |
| 478 | |
| 479 #ifndef __CRT__NO_INLINE | |
| 480 STRSAFEAPI StringCbCatExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 481 HRESULT hr; | |
| 482 size_t cchDest; | |
| 483 size_t cchRemaining = 0; | |
| 484 cchDest = cbDest / sizeof(char); | |
| 485 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 486 else hr = StringCatExWorkerA(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags); | |
| 487 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 488 if(pcbRemaining) { | |
| 489 *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 490 } | |
| 491 } | |
| 492 return hr; | |
| 493 } | |
| 494 | |
| 495 STRSAFEAPI StringCbCatExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 496 HRESULT hr; | |
| 497 size_t cchDest; | |
| 498 size_t cchRemaining = 0; | |
| 499 cchDest = cbDest / sizeof(wchar_t); | |
| 500 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 501 else hr = StringCatExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags); | |
| 502 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 503 if(pcbRemaining) { | |
| 504 *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 505 } | |
| 506 } | |
| 507 return hr; | |
| 508 } | |
| 509 #endif /* !__CRT__NO_INLINE */ | |
| 510 | |
| 511 STRSAFEAPI StringCchCatNA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend); | |
| 512 STRSAFEAPI StringCchCatNW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend); | |
| 513 #ifdef UNICODE | |
| 514 #define StringCchCatN StringCchCatNW | |
| 515 #else | |
| 516 #define StringCchCatN StringCchCatNA | |
| 517 #endif | |
| 518 | |
| 519 #ifndef __CRT__NO_INLINE | |
| 520 STRSAFEAPI StringCchCatNA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend) { | |
| 521 HRESULT hr; | |
| 522 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 523 else hr = StringCatNWorkerA(pszDest,cchDest,pszSrc,cchToAppend); | |
| 524 return hr; | |
| 525 } | |
| 526 | |
| 527 STRSAFEAPI StringCchCatNW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend) { | |
| 528 HRESULT hr; | |
| 529 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 530 else hr = StringCatNWorkerW(pszDest,cchDest,pszSrc,cchToAppend); | |
| 531 return hr; | |
| 532 } | |
| 533 #endif /* !__CRT__NO_INLINE */ | |
| 534 | |
| 535 STRSAFEAPI StringCbCatNA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToAppend); | |
| 536 STRSAFEAPI StringCbCatNW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToAppend); | |
| 537 #ifdef UNICODE | |
| 538 #define StringCbCatN StringCbCatNW | |
| 539 #else | |
| 540 #define StringCbCatN StringCbCatNA | |
| 541 #endif | |
| 542 | |
| 543 #ifndef __CRT__NO_INLINE | |
| 544 STRSAFEAPI StringCbCatNA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToAppend) { | |
| 545 HRESULT hr; | |
| 546 size_t cchDest; | |
| 547 size_t cchToAppend; | |
| 548 cchDest = cbDest / sizeof(char); | |
| 549 cchToAppend = cbToAppend / sizeof(char); | |
| 550 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 551 else hr = StringCatNWorkerA(pszDest,cchDest,pszSrc,cchToAppend); | |
| 552 return hr; | |
| 553 } | |
| 554 | |
| 555 STRSAFEAPI StringCbCatNW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToAppend) { | |
| 556 HRESULT hr; | |
| 557 size_t cchDest; | |
| 558 size_t cchToAppend; | |
| 559 cchDest = cbDest / sizeof(wchar_t); | |
| 560 cchToAppend = cbToAppend / sizeof(wchar_t); | |
| 561 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 562 else hr = StringCatNWorkerW(pszDest,cchDest,pszSrc,cchToAppend); | |
| 563 return hr; | |
| 564 } | |
| 565 #endif /* !__CRT__NO_INLINE */ | |
| 566 | |
| 567 STRSAFEAPI StringCchCatNExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 568 STRSAFEAPI StringCchCatNExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 569 #ifdef UNICODE | |
| 570 #define StringCchCatNEx StringCchCatNExW | |
| 571 #else | |
| 572 #define StringCchCatNEx StringCchCatNExA | |
| 573 #endif | |
| 574 | |
| 575 #ifndef __CRT__NO_INLINE | |
| 576 STRSAFEAPI StringCchCatNExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 577 HRESULT hr; | |
| 578 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 579 else { | |
| 580 size_t cbDest; | |
| 581 cbDest = cchDest*sizeof(char); | |
| 582 hr = StringCatNExWorkerA(pszDest,cchDest,cbDest,pszSrc,cchToAppend,ppszDestEnd,pcchRemaining,dwFlags); | |
| 583 } | |
| 584 return hr; | |
| 585 } | |
| 586 | |
| 587 STRSAFEAPI StringCchCatNExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 588 HRESULT hr; | |
| 589 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 590 else { | |
| 591 size_t cbDest; | |
| 592 cbDest = cchDest*sizeof(wchar_t); | |
| 593 hr = StringCatNExWorkerW(pszDest,cchDest,cbDest,pszSrc,cchToAppend,ppszDestEnd,pcchRemaining,dwFlags); | |
| 594 } | |
| 595 return hr; | |
| 596 } | |
| 597 #endif | |
| 598 | |
| 599 STRSAFEAPI StringCbCatNExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToAppend,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 600 STRSAFEAPI StringCbCatNExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToAppend,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 601 #ifdef UNICODE | |
| 602 #define StringCbCatNEx StringCbCatNExW | |
| 603 #else | |
| 604 #define StringCbCatNEx StringCbCatNExA | |
| 605 #endif | |
| 606 | |
| 607 #ifndef __CRT__NO_INLINE | |
| 608 STRSAFEAPI StringCbCatNExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cbToAppend,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 609 HRESULT hr; | |
| 610 size_t cchDest; | |
| 611 size_t cchToAppend; | |
| 612 size_t cchRemaining = 0; | |
| 613 cchDest = cbDest / sizeof(char); | |
| 614 cchToAppend = cbToAppend / sizeof(char); | |
| 615 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 616 else hr = StringCatNExWorkerA(pszDest,cchDest,cbDest,pszSrc,cchToAppend,ppszDestEnd,&cchRemaining,dwFlags); | |
| 617 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 618 if(pcbRemaining) { | |
| 619 *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 620 } | |
| 621 } | |
| 622 return hr; | |
| 623 } | |
| 624 | |
| 625 STRSAFEAPI StringCbCatNExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cbToAppend,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 626 HRESULT hr; | |
| 627 size_t cchDest; | |
| 628 size_t cchToAppend; | |
| 629 size_t cchRemaining = 0; | |
| 630 cchDest = cbDest / sizeof(wchar_t); | |
| 631 cchToAppend = cbToAppend / sizeof(wchar_t); | |
| 632 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 633 else hr = StringCatNExWorkerW(pszDest,cchDest,cbDest,pszSrc,cchToAppend,ppszDestEnd,&cchRemaining,dwFlags); | |
| 634 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 635 if(pcbRemaining) { | |
| 636 *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 637 } | |
| 638 } | |
| 639 return hr; | |
| 640 } | |
| 641 #endif /* !__CRT__NO_INLINE */ | |
| 642 | |
| 643 STRSAFEAPI StringCchVPrintfA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszFormat,va_list argList); | |
| 644 STRSAFEAPI StringCchVPrintfW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszFormat,va_list argList); | |
| 645 #ifdef UNICODE | |
| 646 #define StringCchVPrintf StringCchVPrintfW | |
| 647 #else | |
| 648 #define StringCchVPrintf StringCchVPrintfA | |
| 649 #endif | |
| 650 | |
| 651 #ifndef __CRT__NO_INLINE | |
| 652 STRSAFEAPI StringCchVPrintfA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszFormat,va_list argList) { | |
| 653 HRESULT hr; | |
| 654 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 655 else hr = StringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList); | |
| 656 return hr; | |
| 657 } | |
| 658 | |
| 659 STRSAFEAPI StringCchVPrintfW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszFormat,va_list argList) { | |
| 660 HRESULT hr; | |
| 661 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 662 else hr = StringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList); | |
| 663 return hr; | |
| 664 } | |
| 665 #endif /* !__CRT__NO_INLINE */ | |
| 666 | |
| 667 STRSAFEAPI StringCbVPrintfA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszFormat,va_list argList); | |
| 668 STRSAFEAPI StringCbVPrintfW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszFormat,va_list argList); | |
| 669 #ifdef UNICODE | |
| 670 #define StringCbVPrintf StringCbVPrintfW | |
| 671 #else | |
| 672 #define StringCbVPrintf StringCbVPrintfA | |
| 673 #endif | |
| 674 | |
| 675 #ifndef __CRT__NO_INLINE | |
| 676 STRSAFEAPI StringCbVPrintfA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszFormat,va_list argList) { | |
| 677 HRESULT hr; | |
| 678 size_t cchDest; | |
| 679 cchDest = cbDest / sizeof(char); | |
| 680 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 681 else hr = StringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList); | |
| 682 return hr; | |
| 683 } | |
| 684 | |
| 685 STRSAFEAPI StringCbVPrintfW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszFormat,va_list argList) { | |
| 686 HRESULT hr; | |
| 687 size_t cchDest; | |
| 688 cchDest = cbDest / sizeof(wchar_t); | |
| 689 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 690 else hr = StringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList); | |
| 691 return hr; | |
| 692 } | |
| 693 #endif /* !__CRT__NO_INLINE */ | |
| 694 | |
| 695 STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszFormat,...); | |
| 696 STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszFormat,...); | |
| 697 #ifdef UNICODE | |
| 698 #define StringCchPrintf StringCchPrintfW | |
| 699 #else | |
| 700 #define StringCchPrintf StringCchPrintfA | |
| 701 #endif | |
| 702 | |
| 703 #ifndef __CRT__NO_INLINE | |
| 704 STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszFormat,...) { | |
| 705 HRESULT hr; | |
| 706 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 707 else { | |
| 708 va_list argList; | |
| 709 va_start(argList,pszFormat); | |
| 710 hr = StringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList); | |
| 711 va_end(argList); | |
| 712 } | |
| 713 return hr; | |
| 714 } | |
| 715 | |
| 716 STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszFormat,...) { | |
| 717 HRESULT hr; | |
| 718 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 719 else { | |
| 720 va_list argList; | |
| 721 va_start(argList,pszFormat); | |
| 722 hr = StringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList); | |
| 723 va_end(argList); | |
| 724 } | |
| 725 return hr; | |
| 726 } | |
| 727 #endif /* !__CRT__NO_INLINE */ | |
| 728 | |
| 729 STRSAFEAPI StringCbPrintfA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszFormat,...); | |
| 730 STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszFormat,...); | |
| 731 #ifdef UNICODE | |
| 732 #define StringCbPrintf StringCbPrintfW | |
| 733 #else | |
| 734 #define StringCbPrintf StringCbPrintfA | |
| 735 #endif | |
| 736 | |
| 737 #ifndef __CRT__NO_INLINE | |
| 738 STRSAFEAPI StringCbPrintfA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPCSTR pszFormat,...) { | |
| 739 HRESULT hr; | |
| 740 size_t cchDest; | |
| 741 cchDest = cbDest / sizeof(char); | |
| 742 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 743 else { | |
| 744 va_list argList; | |
| 745 va_start(argList,pszFormat); | |
| 746 hr = StringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList); | |
| 747 va_end(argList); | |
| 748 } | |
| 749 return hr; | |
| 750 } | |
| 751 | |
| 752 STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPCWSTR pszFormat,...) { | |
| 753 HRESULT hr; | |
| 754 size_t cchDest; | |
| 755 cchDest = cbDest / sizeof(wchar_t); | |
| 756 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 757 else { | |
| 758 va_list argList; | |
| 759 va_start(argList,pszFormat); | |
| 760 hr = StringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList); | |
| 761 va_end(argList); | |
| 762 } | |
| 763 return hr; | |
| 764 } | |
| 765 #endif /* !__CRT__NO_INLINE */ | |
| 766 | |
| 767 STRSAFEAPI StringCchPrintfExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,...); | |
| 768 STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,...); | |
| 769 #ifdef UNICODE | |
| 770 #define StringCchPrintfEx StringCchPrintfExW | |
| 771 #else | |
| 772 #define StringCchPrintfEx StringCchPrintfExA | |
| 773 #endif | |
| 774 | |
| 775 #ifndef __CRT__NO_INLINE | |
| 776 STRSAFEAPI StringCchPrintfExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,...) { | |
| 777 HRESULT hr; | |
| 778 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 779 else { | |
| 780 size_t cbDest; | |
| 781 va_list argList; | |
| 782 cbDest = cchDest*sizeof(char); | |
| 783 va_start(argList,pszFormat); | |
| 784 hr = StringVPrintfExWorkerA(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList); | |
| 785 va_end(argList); | |
| 786 } | |
| 787 return hr; | |
| 788 } | |
| 789 | |
| 790 STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,...) { | |
| 791 HRESULT hr; | |
| 792 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 793 else { | |
| 794 size_t cbDest; | |
| 795 va_list argList; | |
| 796 cbDest = cchDest*sizeof(wchar_t); | |
| 797 va_start(argList,pszFormat); | |
| 798 hr = StringVPrintfExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList); | |
| 799 va_end(argList); | |
| 800 } | |
| 801 return hr; | |
| 802 } | |
| 803 #endif /* !__CRT__NO_INLINE */ | |
| 804 | |
| 805 STRSAFEAPI StringCbPrintfExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,...); | |
| 806 STRSAFEAPI StringCbPrintfExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,...); | |
| 807 #ifdef UNICODE | |
| 808 #define StringCbPrintfEx StringCbPrintfExW | |
| 809 #else | |
| 810 #define StringCbPrintfEx StringCbPrintfExA | |
| 811 #endif | |
| 812 | |
| 813 #ifndef __CRT__NO_INLINE | |
| 814 STRSAFEAPI StringCbPrintfExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,...) { | |
| 815 HRESULT hr; | |
| 816 size_t cchDest; | |
| 817 size_t cchRemaining = 0; | |
| 818 cchDest = cbDest / sizeof(char); | |
| 819 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 820 else { | |
| 821 va_list argList; | |
| 822 va_start(argList,pszFormat); | |
| 823 hr = StringVPrintfExWorkerA(pszDest,cchDest,cbDest,ppszDestEnd,&cchRemaining,dwFlags,pszFormat,argList); | |
| 824 va_end(argList); | |
| 825 } | |
| 826 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 827 if(pcbRemaining) { | |
| 828 *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 829 } | |
| 830 } | |
| 831 return hr; | |
| 832 } | |
| 833 | |
| 834 STRSAFEAPI StringCbPrintfExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,...) { | |
| 835 HRESULT hr; | |
| 836 size_t cchDest; | |
| 837 size_t cchRemaining = 0; | |
| 838 cchDest = cbDest / sizeof(wchar_t); | |
| 839 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 840 else { | |
| 841 va_list argList; | |
| 842 va_start(argList,pszFormat); | |
| 843 hr = StringVPrintfExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,&cchRemaining,dwFlags,pszFormat,argList); | |
| 844 va_end(argList); | |
| 845 } | |
| 846 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 847 if(pcbRemaining) { | |
| 848 *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 849 } | |
| 850 } | |
| 851 return hr; | |
| 852 } | |
| 853 #endif /* !__CRT__NO_INLINE */ | |
| 854 | |
| 855 STRSAFEAPI StringCchVPrintfExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,va_list argList); | |
| 856 STRSAFEAPI StringCchVPrintfExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,va_list argList); | |
| 857 #ifdef UNICODE | |
| 858 #define StringCchVPrintfEx StringCchVPrintfExW | |
| 859 #else | |
| 860 #define StringCchVPrintfEx StringCchVPrintfExA | |
| 861 #endif | |
| 862 | |
| 863 #ifndef __CRT__NO_INLINE | |
| 864 STRSAFEAPI StringCchVPrintfExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,va_list argList) { | |
| 865 HRESULT hr; | |
| 866 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 867 else { | |
| 868 size_t cbDest; | |
| 869 cbDest = cchDest*sizeof(char); | |
| 870 hr = StringVPrintfExWorkerA(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList); | |
| 871 } | |
| 872 return hr; | |
| 873 } | |
| 874 | |
| 875 STRSAFEAPI StringCchVPrintfExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,va_list argList) { | |
| 876 HRESULT hr; | |
| 877 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 878 else { | |
| 879 size_t cbDest; | |
| 880 cbDest = cchDest*sizeof(wchar_t); | |
| 881 hr = StringVPrintfExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList); | |
| 882 } | |
| 883 return hr; | |
| 884 } | |
| 885 #endif /* !__CRT__NO_INLINE */ | |
| 886 | |
| 887 STRSAFEAPI StringCbVPrintfExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,va_list argList); | |
| 888 STRSAFEAPI StringCbVPrintfExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,va_list argList); | |
| 889 #ifdef UNICODE | |
| 890 #define StringCbVPrintfEx StringCbVPrintfExW | |
| 891 #else | |
| 892 #define StringCbVPrintfEx StringCbVPrintfExA | |
| 893 #endif | |
| 894 | |
| 895 #ifndef __CRT__NO_INLINE | |
| 896 STRSAFEAPI StringCbVPrintfExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,va_list argList) { | |
| 897 HRESULT hr; | |
| 898 size_t cchDest; | |
| 899 size_t cchRemaining = 0; | |
| 900 cchDest = cbDest / sizeof(char); | |
| 901 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 902 else hr = StringVPrintfExWorkerA(pszDest,cchDest,cbDest,ppszDestEnd,&cchRemaining,dwFlags,pszFormat,argList); | |
| 903 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 904 if(pcbRemaining) { | |
| 905 *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 906 } | |
| 907 } | |
| 908 return hr; | |
| 909 } | |
| 910 | |
| 911 STRSAFEAPI StringCbVPrintfExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,va_list argList) { | |
| 912 HRESULT hr; | |
| 913 size_t cchDest; | |
| 914 size_t cchRemaining = 0; | |
| 915 cchDest = cbDest / sizeof(wchar_t); | |
| 916 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 917 else hr = StringVPrintfExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,&cchRemaining,dwFlags,pszFormat,argList); | |
| 918 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 919 if(pcbRemaining) { | |
| 920 *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 921 } | |
| 922 } | |
| 923 return hr; | |
| 924 } | |
| 925 #endif /* !__CRT__NO_INLINE */ | |
| 926 | |
| 927 STRSAFE_INLINE_API StringCchGetsA(STRSAFE_LPSTR pszDest,size_t cchDest); | |
| 928 STRSAFE_INLINE_API StringCchGetsW(STRSAFE_LPWSTR pszDest,size_t cchDest); | |
| 929 #ifdef UNICODE | |
| 930 #define StringCchGets StringCchGetsW | |
| 931 #else | |
| 932 #define StringCchGets StringCchGetsA | |
| 933 #endif | |
| 934 | |
| 935 #ifndef __CRT__NO_INLINE | |
| 936 STRSAFE_INLINE_API StringCchGetsA(STRSAFE_LPSTR pszDest,size_t cchDest) { | |
| 937 HRESULT hr; | |
| 938 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 939 else { | |
| 940 size_t cbDest; | |
| 941 cbDest = cchDest*sizeof(char); | |
| 942 hr = StringGetsExWorkerA(pszDest,cchDest,cbDest,NULL,NULL,0); | |
| 943 } | |
| 944 return hr; | |
| 945 } | |
| 946 | |
| 947 STRSAFE_INLINE_API StringCchGetsW(STRSAFE_LPWSTR pszDest,size_t cchDest) { | |
| 948 HRESULT hr; | |
| 949 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 950 else { | |
| 951 size_t cbDest; | |
| 952 cbDest = cchDest*sizeof(wchar_t); | |
| 953 hr = StringGetsExWorkerW(pszDest,cchDest,cbDest,NULL,NULL,0); | |
| 954 } | |
| 955 return hr; | |
| 956 } | |
| 957 #endif /* !__CRT__NO_INLINE */ | |
| 958 | |
| 959 STRSAFE_INLINE_API StringCbGetsA(STRSAFE_LPSTR pszDest,size_t cbDest); | |
| 960 STRSAFE_INLINE_API StringCbGetsW(STRSAFE_LPWSTR pszDest,size_t cbDest); | |
| 961 #ifdef UNICODE | |
| 962 #define StringCbGets StringCbGetsW | |
| 963 #else | |
| 964 #define StringCbGets StringCbGetsA | |
| 965 #endif | |
| 966 | |
| 967 #ifndef __CRT__NO_INLINE | |
| 968 STRSAFE_INLINE_API StringCbGetsA(STRSAFE_LPSTR pszDest,size_t cbDest) { | |
| 969 HRESULT hr; | |
| 970 size_t cchDest; | |
| 971 cchDest = cbDest / sizeof(char); | |
| 972 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 973 else hr = StringGetsExWorkerA(pszDest,cchDest,cbDest,NULL,NULL,0); | |
| 974 return hr; | |
| 975 } | |
| 976 | |
| 977 STRSAFE_INLINE_API StringCbGetsW(STRSAFE_LPWSTR pszDest,size_t cbDest) { | |
| 978 HRESULT hr; | |
| 979 size_t cchDest; | |
| 980 cchDest = cbDest / sizeof(wchar_t); | |
| 981 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 982 else hr = StringGetsExWorkerW(pszDest,cchDest,cbDest,NULL,NULL,0); | |
| 983 return hr; | |
| 984 } | |
| 985 #endif /* !__CRT__NO_INLINE */ | |
| 986 | |
| 987 STRSAFE_INLINE_API StringCchGetsExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 988 STRSAFE_INLINE_API StringCchGetsExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags); | |
| 989 #ifdef UNICODE | |
| 990 #define StringCchGetsEx StringCchGetsExW | |
| 991 #else | |
| 992 #define StringCchGetsEx StringCchGetsExA | |
| 993 #endif | |
| 994 | |
| 995 #ifndef __CRT__NO_INLINE | |
| 996 STRSAFE_INLINE_API StringCchGetsExA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 997 HRESULT hr; | |
| 998 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 999 else { | |
| 1000 size_t cbDest; | |
| 1001 cbDest = cchDest*sizeof(char); | |
| 1002 hr = StringGetsExWorkerA(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags); | |
| 1003 } | |
| 1004 return hr; | |
| 1005 } | |
| 1006 | |
| 1007 STRSAFE_INLINE_API StringCchGetsExW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1008 HRESULT hr; | |
| 1009 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1010 else { | |
| 1011 size_t cbDest; | |
| 1012 cbDest = cchDest*sizeof(wchar_t); | |
| 1013 hr = StringGetsExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags); | |
| 1014 } | |
| 1015 return hr; | |
| 1016 } | |
| 1017 #endif /* !__CRT__NO_INLINE */ | |
| 1018 | |
| 1019 STRSAFE_INLINE_API StringCbGetsExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 1020 STRSAFE_INLINE_API StringCbGetsExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags); | |
| 1021 #ifdef UNICODE | |
| 1022 #define StringCbGetsEx StringCbGetsExW | |
| 1023 #else | |
| 1024 #define StringCbGetsEx StringCbGetsExA | |
| 1025 #endif | |
| 1026 | |
| 1027 #ifndef __CRT__NO_INLINE | |
| 1028 STRSAFE_INLINE_API StringCbGetsExA(STRSAFE_LPSTR pszDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 1029 HRESULT hr; | |
| 1030 size_t cchDest; | |
| 1031 size_t cchRemaining = 0; | |
| 1032 cchDest = cbDest / sizeof(char); | |
| 1033 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1034 else hr = StringGetsExWorkerA(pszDest,cchDest,cbDest,ppszDestEnd,&cchRemaining,dwFlags); | |
| 1035 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER) || (hr==STRSAFE_E_END_OF_FILE)) { | |
| 1036 if(pcbRemaining) *pcbRemaining = (cchRemaining*sizeof(char)) + (cbDest % sizeof(char)); | |
| 1037 } | |
| 1038 return hr; | |
| 1039 } | |
| 1040 | |
| 1041 STRSAFE_INLINE_API StringCbGetsExW(STRSAFE_LPWSTR pszDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcbRemaining,unsigned long dwFlags) { | |
| 1042 HRESULT hr; | |
| 1043 size_t cchDest; | |
| 1044 size_t cchRemaining = 0; | |
| 1045 cchDest = cbDest / sizeof(wchar_t); | |
| 1046 if(cchDest > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1047 else hr = StringGetsExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,&cchRemaining,dwFlags); | |
| 1048 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER) || (hr==STRSAFE_E_END_OF_FILE)) { | |
| 1049 if(pcbRemaining) *pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)); | |
| 1050 } | |
| 1051 return hr; | |
| 1052 } | |
| 1053 #endif /* !__CRT__NO_INLINE */ | |
| 1054 | |
| 1055 STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz,size_t cchMax,size_t *pcchLength); | |
| 1056 STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz,size_t cchMax,size_t *pcchLength); | |
| 1057 #ifdef UNICODE | |
| 1058 #define StringCchLength StringCchLengthW | |
| 1059 #else | |
| 1060 #define StringCchLength StringCchLengthA | |
| 1061 #endif | |
| 1062 | |
| 1063 #ifndef __CRT__NO_INLINE | |
| 1064 STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz,size_t cchMax,size_t *pcchLength) { | |
| 1065 HRESULT hr; | |
| 1066 if(!psz || (cchMax > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1067 else hr = StringLengthWorkerA(psz,cchMax,pcchLength); | |
| 1068 if(FAILED(hr) && pcchLength) { | |
| 1069 *pcchLength = 0; | |
| 1070 } | |
| 1071 return hr; | |
| 1072 } | |
| 1073 | |
| 1074 STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz,size_t cchMax,size_t *pcchLength) { | |
| 1075 HRESULT hr; | |
| 1076 if(!psz || (cchMax > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1077 else hr = StringLengthWorkerW(psz,cchMax,pcchLength); | |
| 1078 if(FAILED(hr) && pcchLength) { | |
| 1079 *pcchLength = 0; | |
| 1080 } | |
| 1081 return hr; | |
| 1082 } | |
| 1083 #endif /* !__CRT__NO_INLINE */ | |
| 1084 | |
| 1085 STRSAFEAPI StringCbLengthA(STRSAFE_LPCSTR psz,size_t cbMax,size_t *pcbLength); | |
| 1086 STRSAFEAPI StringCbLengthW(STRSAFE_LPCWSTR psz,size_t cbMax,size_t *pcbLength); | |
| 1087 #ifdef UNICODE | |
| 1088 #define StringCbLength StringCbLengthW | |
| 1089 #else | |
| 1090 #define StringCbLength StringCbLengthA | |
| 1091 #endif | |
| 1092 | |
| 1093 #ifndef __CRT__NO_INLINE | |
| 1094 STRSAFEAPI StringCbLengthA(STRSAFE_LPCSTR psz,size_t cbMax,size_t *pcbLength) { | |
| 1095 HRESULT hr; | |
| 1096 size_t cchMax; | |
| 1097 size_t cchLength = 0; | |
| 1098 cchMax = cbMax / sizeof(char); | |
| 1099 if(!psz || (cchMax > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1100 else hr = StringLengthWorkerA(psz,cchMax,&cchLength); | |
| 1101 if(pcbLength) { | |
| 1102 if(SUCCEEDED(hr)) { | |
| 1103 *pcbLength = cchLength*sizeof(char); | |
| 1104 } else { | |
| 1105 *pcbLength = 0; | |
| 1106 } | |
| 1107 } | |
| 1108 return hr; | |
| 1109 } | |
| 1110 | |
| 1111 STRSAFEAPI StringCbLengthW(STRSAFE_LPCWSTR psz,size_t cbMax,size_t *pcbLength) { | |
| 1112 HRESULT hr; | |
| 1113 size_t cchMax; | |
| 1114 size_t cchLength = 0; | |
| 1115 cchMax = cbMax / sizeof(wchar_t); | |
| 1116 if(!psz || (cchMax > STRSAFE_MAX_CCH)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1117 else hr = StringLengthWorkerW(psz,cchMax,&cchLength); | |
| 1118 if(pcbLength) { | |
| 1119 if(SUCCEEDED(hr)) { | |
| 1120 *pcbLength = cchLength*sizeof(wchar_t); | |
| 1121 } else { | |
| 1122 *pcbLength = 0; | |
| 1123 } | |
| 1124 } | |
| 1125 return hr; | |
| 1126 } | |
| 1127 | |
| 1128 STRSAFEAPI StringCopyWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc) { | |
| 1129 HRESULT hr = S_OK; | |
| 1130 if(cchDest==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1131 else { | |
| 1132 while(cchDest && (*pszSrc!='\0')) { | |
| 1133 *pszDest++ = *pszSrc++; | |
| 1134 cchDest--; | |
| 1135 } | |
| 1136 if(cchDest==0) { | |
| 1137 pszDest--; | |
| 1138 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1139 } | |
| 1140 *pszDest= '\0'; | |
| 1141 } | |
| 1142 return hr; | |
| 1143 } | |
| 1144 | |
| 1145 STRSAFEAPI StringCopyWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc) { | |
| 1146 HRESULT hr = S_OK; | |
| 1147 if(cchDest==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1148 else { | |
| 1149 while(cchDest && (*pszSrc!=L'\0')) { | |
| 1150 *pszDest++ = *pszSrc++; | |
| 1151 cchDest--; | |
| 1152 } | |
| 1153 if(cchDest==0) { | |
| 1154 pszDest--; | |
| 1155 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1156 } | |
| 1157 *pszDest= L'\0'; | |
| 1158 } | |
| 1159 return hr; | |
| 1160 } | |
| 1161 | |
| 1162 STRSAFEAPI StringCopyExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1163 HRESULT hr = S_OK; | |
| 1164 STRSAFE_LPSTR pszDestEnd = pszDest; | |
| 1165 size_t cchRemaining = 0; | |
| 1166 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1167 else { | |
| 1168 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1169 if(!pszDest) { | |
| 1170 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1171 } | |
| 1172 if(!pszSrc) pszSrc = ""; | |
| 1173 } | |
| 1174 if(SUCCEEDED(hr)) { | |
| 1175 if(cchDest==0) { | |
| 1176 pszDestEnd = pszDest; | |
| 1177 cchRemaining = 0; | |
| 1178 if(*pszSrc!='\0') { | |
| 1179 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1180 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1181 } | |
| 1182 } else { | |
| 1183 pszDestEnd = pszDest; | |
| 1184 cchRemaining = cchDest; | |
| 1185 while(cchRemaining && (*pszSrc!='\0')) { | |
| 1186 *pszDestEnd++ = *pszSrc++; | |
| 1187 cchRemaining--; | |
| 1188 } | |
| 1189 if(cchRemaining > 0) { | |
| 1190 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 1191 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(char)) + (cbDest % sizeof(char))); | |
| 1192 } | |
| 1193 } else { | |
| 1194 pszDestEnd--; | |
| 1195 cchRemaining++; | |
| 1196 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1197 } | |
| 1198 *pszDestEnd = '\0'; | |
| 1199 } | |
| 1200 } | |
| 1201 } | |
| 1202 if(FAILED(hr)) { | |
| 1203 if(pszDest) { | |
| 1204 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1205 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1206 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1207 pszDestEnd = pszDest; | |
| 1208 cchRemaining = cchDest; | |
| 1209 } else if(cchDest > 0) { | |
| 1210 pszDestEnd = pszDest + cchDest - 1; | |
| 1211 cchRemaining = 1; | |
| 1212 *pszDestEnd = '\0'; | |
| 1213 } | |
| 1214 } | |
| 1215 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 1216 if(cchDest > 0) { | |
| 1217 pszDestEnd = pszDest; | |
| 1218 cchRemaining = cchDest; | |
| 1219 *pszDestEnd = '\0'; | |
| 1220 } | |
| 1221 } | |
| 1222 } | |
| 1223 } | |
| 1224 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1225 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1226 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1227 } | |
| 1228 return hr; | |
| 1229 } | |
| 1230 | |
| 1231 STRSAFEAPI StringCopyExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1232 HRESULT hr = S_OK; | |
| 1233 STRSAFE_LPWSTR pszDestEnd = pszDest; | |
| 1234 size_t cchRemaining = 0; | |
| 1235 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1236 else { | |
| 1237 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1238 if(!pszDest) { | |
| 1239 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1240 } | |
| 1241 if(!pszSrc) pszSrc = L""; | |
| 1242 } | |
| 1243 if(SUCCEEDED(hr)) { | |
| 1244 if(cchDest==0) { | |
| 1245 pszDestEnd = pszDest; | |
| 1246 cchRemaining = 0; | |
| 1247 if(*pszSrc!=L'\0') { | |
| 1248 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1249 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1250 } | |
| 1251 } else { | |
| 1252 pszDestEnd = pszDest; | |
| 1253 cchRemaining = cchDest; | |
| 1254 while(cchRemaining && (*pszSrc!=L'\0')) { | |
| 1255 *pszDestEnd++ = *pszSrc++; | |
| 1256 cchRemaining--; | |
| 1257 } | |
| 1258 if(cchRemaining > 0) { | |
| 1259 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 1260 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); | |
| 1261 } | |
| 1262 } else { | |
| 1263 pszDestEnd--; | |
| 1264 cchRemaining++; | |
| 1265 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1266 } | |
| 1267 *pszDestEnd = L'\0'; | |
| 1268 } | |
| 1269 } | |
| 1270 } | |
| 1271 if(FAILED(hr)) { | |
| 1272 if(pszDest) { | |
| 1273 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1274 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1275 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1276 pszDestEnd = pszDest; | |
| 1277 cchRemaining = cchDest; | |
| 1278 } else if(cchDest > 0) { | |
| 1279 pszDestEnd = pszDest + cchDest - 1; | |
| 1280 cchRemaining = 1; | |
| 1281 *pszDestEnd = L'\0'; | |
| 1282 } | |
| 1283 } | |
| 1284 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 1285 if(cchDest > 0) { | |
| 1286 pszDestEnd = pszDest; | |
| 1287 cchRemaining = cchDest; | |
| 1288 *pszDestEnd = L'\0'; | |
| 1289 } | |
| 1290 } | |
| 1291 } | |
| 1292 } | |
| 1293 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1294 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1295 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1296 } | |
| 1297 return hr; | |
| 1298 } | |
| 1299 | |
| 1300 STRSAFEAPI StringCopyNWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchSrc) { | |
| 1301 HRESULT hr = S_OK; | |
| 1302 if(cchDest==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1303 else { | |
| 1304 while(cchDest && cchSrc && (*pszSrc!='\0')) { | |
| 1305 *pszDest++ = *pszSrc++; | |
| 1306 cchDest--; | |
| 1307 cchSrc--; | |
| 1308 } | |
| 1309 if(cchDest==0) { | |
| 1310 pszDest--; | |
| 1311 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1312 } | |
| 1313 *pszDest= '\0'; | |
| 1314 } | |
| 1315 return hr; | |
| 1316 } | |
| 1317 | |
| 1318 STRSAFEAPI StringCopyNWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy) { | |
| 1319 HRESULT hr = S_OK; | |
| 1320 if(cchDest==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1321 else { | |
| 1322 while(cchDest && cchToCopy && (*pszSrc!=L'\0')) { | |
| 1323 *pszDest++ = *pszSrc++; | |
| 1324 cchDest--; | |
| 1325 cchToCopy--; | |
| 1326 } | |
| 1327 if(cchDest==0) { | |
| 1328 pszDest--; | |
| 1329 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1330 } | |
| 1331 *pszDest= L'\0'; | |
| 1332 } | |
| 1333 return hr; | |
| 1334 } | |
| 1335 | |
| 1336 STRSAFEAPI StringCopyNExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cchToCopy,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1337 HRESULT hr = S_OK; | |
| 1338 STRSAFE_LPSTR pszDestEnd = pszDest; | |
| 1339 size_t cchRemaining = 0; | |
| 1340 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1341 else if(cchToCopy > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1342 else { | |
| 1343 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1344 if(!pszDest) { | |
| 1345 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1346 } | |
| 1347 if(!pszSrc) pszSrc = ""; | |
| 1348 } | |
| 1349 if(SUCCEEDED(hr)) { | |
| 1350 if(cchDest==0) { | |
| 1351 pszDestEnd = pszDest; | |
| 1352 cchRemaining = 0; | |
| 1353 if((cchToCopy!=0) && (*pszSrc!='\0')) { | |
| 1354 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1355 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1356 } | |
| 1357 } else { | |
| 1358 pszDestEnd = pszDest; | |
| 1359 cchRemaining = cchDest; | |
| 1360 while(cchRemaining && cchToCopy && (*pszSrc!='\0')) { | |
| 1361 *pszDestEnd++ = *pszSrc++; | |
| 1362 cchRemaining--; | |
| 1363 cchToCopy--; | |
| 1364 } | |
| 1365 if(cchRemaining > 0) { | |
| 1366 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 1367 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(char)) + (cbDest % sizeof(char))); | |
| 1368 } | |
| 1369 } else { | |
| 1370 pszDestEnd--; | |
| 1371 cchRemaining++; | |
| 1372 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1373 } | |
| 1374 *pszDestEnd = '\0'; | |
| 1375 } | |
| 1376 } | |
| 1377 } | |
| 1378 if(FAILED(hr)) { | |
| 1379 if(pszDest) { | |
| 1380 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1381 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1382 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1383 pszDestEnd = pszDest; | |
| 1384 cchRemaining = cchDest; | |
| 1385 } else if(cchDest > 0) { | |
| 1386 pszDestEnd = pszDest + cchDest - 1; | |
| 1387 cchRemaining = 1; | |
| 1388 *pszDestEnd = '\0'; | |
| 1389 } | |
| 1390 } | |
| 1391 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 1392 if(cchDest > 0) { | |
| 1393 pszDestEnd = pszDest; | |
| 1394 cchRemaining = cchDest; | |
| 1395 *pszDestEnd = '\0'; | |
| 1396 } | |
| 1397 } | |
| 1398 } | |
| 1399 } | |
| 1400 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1401 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1402 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1403 } | |
| 1404 return hr; | |
| 1405 } | |
| 1406 | |
| 1407 STRSAFEAPI StringCopyNExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cchToCopy,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1408 HRESULT hr = S_OK; | |
| 1409 STRSAFE_LPWSTR pszDestEnd = pszDest; | |
| 1410 size_t cchRemaining = 0; | |
| 1411 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1412 else if(cchToCopy > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1413 else { | |
| 1414 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1415 if(!pszDest) { | |
| 1416 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1417 } | |
| 1418 if(!pszSrc) pszSrc = L""; | |
| 1419 } | |
| 1420 if(SUCCEEDED(hr)) { | |
| 1421 if(cchDest==0) { | |
| 1422 pszDestEnd = pszDest; | |
| 1423 cchRemaining = 0; | |
| 1424 if((cchToCopy!=0) && (*pszSrc!=L'\0')) { | |
| 1425 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1426 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1427 } | |
| 1428 } else { | |
| 1429 pszDestEnd = pszDest; | |
| 1430 cchRemaining = cchDest; | |
| 1431 while(cchRemaining && cchToCopy && (*pszSrc!=L'\0')) { | |
| 1432 *pszDestEnd++ = *pszSrc++; | |
| 1433 cchRemaining--; | |
| 1434 cchToCopy--; | |
| 1435 } | |
| 1436 if(cchRemaining > 0) { | |
| 1437 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 1438 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); | |
| 1439 } | |
| 1440 } else { | |
| 1441 pszDestEnd--; | |
| 1442 cchRemaining++; | |
| 1443 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1444 } | |
| 1445 *pszDestEnd = L'\0'; | |
| 1446 } | |
| 1447 } | |
| 1448 } | |
| 1449 if(FAILED(hr)) { | |
| 1450 if(pszDest) { | |
| 1451 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1452 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1453 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1454 pszDestEnd = pszDest; | |
| 1455 cchRemaining = cchDest; | |
| 1456 } else if(cchDest > 0) { | |
| 1457 pszDestEnd = pszDest + cchDest - 1; | |
| 1458 cchRemaining = 1; | |
| 1459 *pszDestEnd = L'\0'; | |
| 1460 } | |
| 1461 } | |
| 1462 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 1463 if(cchDest > 0) { | |
| 1464 pszDestEnd = pszDest; | |
| 1465 cchRemaining = cchDest; | |
| 1466 *pszDestEnd = L'\0'; | |
| 1467 } | |
| 1468 } | |
| 1469 } | |
| 1470 } | |
| 1471 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1472 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1473 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1474 } | |
| 1475 return hr; | |
| 1476 } | |
| 1477 | |
| 1478 STRSAFEAPI StringCatWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc) { | |
| 1479 HRESULT hr; | |
| 1480 size_t cchDestLength; | |
| 1481 hr = StringLengthWorkerA(pszDest,cchDest,&cchDestLength); | |
| 1482 if(SUCCEEDED(hr)) hr = StringCopyWorkerA(pszDest + cchDestLength,cchDest - cchDestLength,pszSrc); | |
| 1483 return hr; | |
| 1484 } | |
| 1485 | |
| 1486 STRSAFEAPI StringCatWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc) { | |
| 1487 HRESULT hr; | |
| 1488 size_t cchDestLength; | |
| 1489 hr = StringLengthWorkerW(pszDest,cchDest,&cchDestLength); | |
| 1490 if(SUCCEEDED(hr)) hr = StringCopyWorkerW(pszDest + cchDestLength,cchDest - cchDestLength,pszSrc); | |
| 1491 return hr; | |
| 1492 } | |
| 1493 | |
| 1494 STRSAFEAPI StringCatExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1495 HRESULT hr = S_OK; | |
| 1496 STRSAFE_LPSTR pszDestEnd = pszDest; | |
| 1497 size_t cchRemaining = 0; | |
| 1498 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1499 else { | |
| 1500 size_t cchDestLength; | |
| 1501 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1502 if(!pszDest) { | |
| 1503 if((cchDest==0) && (cbDest==0)) cchDestLength = 0; | |
| 1504 else hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1505 } else { | |
| 1506 hr = StringLengthWorkerA(pszDest,cchDest,&cchDestLength); | |
| 1507 if(SUCCEEDED(hr)) { | |
| 1508 pszDestEnd = pszDest + cchDestLength; | |
| 1509 cchRemaining = cchDest - cchDestLength; | |
| 1510 } | |
| 1511 } | |
| 1512 if(!pszSrc) pszSrc = ""; | |
| 1513 } else { | |
| 1514 hr = StringLengthWorkerA(pszDest,cchDest,&cchDestLength); | |
| 1515 if(SUCCEEDED(hr)) { | |
| 1516 pszDestEnd = pszDest + cchDestLength; | |
| 1517 cchRemaining = cchDest - cchDestLength; | |
| 1518 } | |
| 1519 } | |
| 1520 if(SUCCEEDED(hr)) { | |
| 1521 if(cchDest==0) { | |
| 1522 if(*pszSrc!='\0') { | |
| 1523 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1524 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1525 } | |
| 1526 } else hr = StringCopyExWorkerA(pszDestEnd,cchRemaining,(cchRemaining*sizeof(char)) + (cbDest % sizeof(char)),pszSrc,&pszDestEnd,&cchRemaining,dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); | |
| 1527 } | |
| 1528 } | |
| 1529 if(FAILED(hr)) { | |
| 1530 if(pszDest) { | |
| 1531 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1532 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1533 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1534 pszDestEnd = pszDest; | |
| 1535 cchRemaining = cchDest; | |
| 1536 } else if(cchDest > 0) { | |
| 1537 pszDestEnd = pszDest + cchDest - 1; | |
| 1538 cchRemaining = 1; | |
| 1539 *pszDestEnd = '\0'; | |
| 1540 } | |
| 1541 } | |
| 1542 if(dwFlags & STRSAFE_NULL_ON_FAILURE) { | |
| 1543 if(cchDest > 0) { | |
| 1544 pszDestEnd = pszDest; | |
| 1545 cchRemaining = cchDest; | |
| 1546 *pszDestEnd = '\0'; | |
| 1547 } | |
| 1548 } | |
| 1549 } | |
| 1550 } | |
| 1551 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1552 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1553 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1554 } | |
| 1555 return hr; | |
| 1556 } | |
| 1557 | |
| 1558 STRSAFEAPI StringCatExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1559 HRESULT hr = S_OK; | |
| 1560 STRSAFE_LPWSTR pszDestEnd = pszDest; | |
| 1561 size_t cchRemaining = 0; | |
| 1562 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1563 else { | |
| 1564 size_t cchDestLength; | |
| 1565 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1566 if(!pszDest) { | |
| 1567 if((cchDest==0) && (cbDest==0)) cchDestLength = 0; | |
| 1568 else hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1569 } else { | |
| 1570 hr = StringLengthWorkerW(pszDest,cchDest,&cchDestLength); | |
| 1571 if(SUCCEEDED(hr)) { | |
| 1572 pszDestEnd = pszDest + cchDestLength; | |
| 1573 cchRemaining = cchDest - cchDestLength; | |
| 1574 } | |
| 1575 } | |
| 1576 if(!pszSrc) pszSrc = L""; | |
| 1577 } else { | |
| 1578 hr = StringLengthWorkerW(pszDest,cchDest,&cchDestLength); | |
| 1579 if(SUCCEEDED(hr)) { | |
| 1580 pszDestEnd = pszDest + cchDestLength; | |
| 1581 cchRemaining = cchDest - cchDestLength; | |
| 1582 } | |
| 1583 } | |
| 1584 if(SUCCEEDED(hr)) { | |
| 1585 if(cchDest==0) { | |
| 1586 if(*pszSrc!=L'\0') { | |
| 1587 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1588 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1589 } | |
| 1590 } 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))); | |
| 1591 } | |
| 1592 } | |
| 1593 if(FAILED(hr)) { | |
| 1594 if(pszDest) { | |
| 1595 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1596 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1597 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1598 pszDestEnd = pszDest; | |
| 1599 cchRemaining = cchDest; | |
| 1600 } else if(cchDest > 0) { | |
| 1601 pszDestEnd = pszDest + cchDest - 1; | |
| 1602 cchRemaining = 1; | |
| 1603 *pszDestEnd = L'\0'; | |
| 1604 } | |
| 1605 } | |
| 1606 if(dwFlags & STRSAFE_NULL_ON_FAILURE) { | |
| 1607 if(cchDest > 0) { | |
| 1608 pszDestEnd = pszDest; | |
| 1609 cchRemaining = cchDest; | |
| 1610 *pszDestEnd = L'\0'; | |
| 1611 } | |
| 1612 } | |
| 1613 } | |
| 1614 } | |
| 1615 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1616 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1617 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1618 } | |
| 1619 return hr; | |
| 1620 } | |
| 1621 | |
| 1622 STRSAFEAPI StringCatNWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend) { | |
| 1623 HRESULT hr; | |
| 1624 size_t cchDestLength; | |
| 1625 hr = StringLengthWorkerA(pszDest,cchDest,&cchDestLength); | |
| 1626 if(SUCCEEDED(hr)) hr = StringCopyNWorkerA(pszDest + cchDestLength,cchDest - cchDestLength,pszSrc,cchToAppend); | |
| 1627 return hr; | |
| 1628 } | |
| 1629 | |
| 1630 STRSAFEAPI StringCatNWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend) { | |
| 1631 HRESULT hr; | |
| 1632 size_t cchDestLength; | |
| 1633 hr = StringLengthWorkerW(pszDest,cchDest,&cchDestLength); | |
| 1634 if(SUCCEEDED(hr)) hr = StringCopyNWorkerW(pszDest + cchDestLength,cchDest - cchDestLength,pszSrc,cchToAppend); | |
| 1635 return hr; | |
| 1636 } | |
| 1637 | |
| 1638 STRSAFEAPI StringCatNExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCSTR pszSrc,size_t cchToAppend,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1639 HRESULT hr = S_OK; | |
| 1640 STRSAFE_LPSTR pszDestEnd = pszDest; | |
| 1641 size_t cchRemaining = 0; | |
| 1642 size_t cchDestLength = 0; | |
| 1643 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1644 else if(cchToAppend > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1645 else { | |
| 1646 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1647 if(!pszDest) { | |
| 1648 if((cchDest==0) && (cbDest==0)) cchDestLength = 0; | |
| 1649 else hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1650 } else { | |
| 1651 hr = StringLengthWorkerA(pszDest,cchDest,&cchDestLength); | |
| 1652 if(SUCCEEDED(hr)) { | |
| 1653 pszDestEnd = pszDest + cchDestLength; | |
| 1654 cchRemaining = cchDest - cchDestLength; | |
| 1655 } | |
| 1656 } | |
| 1657 if(!pszSrc) pszSrc = ""; | |
| 1658 } else { | |
| 1659 hr = StringLengthWorkerA(pszDest,cchDest,&cchDestLength); | |
| 1660 if(SUCCEEDED(hr)) { | |
| 1661 pszDestEnd = pszDest + cchDestLength; | |
| 1662 cchRemaining = cchDest - cchDestLength; | |
| 1663 } | |
| 1664 } | |
| 1665 if(SUCCEEDED(hr)) { | |
| 1666 if(cchDest==0) { | |
| 1667 if((cchToAppend!=0) && (*pszSrc!='\0')) { | |
| 1668 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1669 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1670 } | |
| 1671 } else hr = StringCopyNExWorkerA(pszDestEnd,cchRemaining,(cchRemaining*sizeof(char)) + (cbDest % sizeof(char)),pszSrc,cchToAppend,&pszDestEnd,&cchRemaining,dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); | |
| 1672 } | |
| 1673 } | |
| 1674 if(FAILED(hr)) { | |
| 1675 if(pszDest) { | |
| 1676 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1677 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1678 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1679 pszDestEnd = pszDest; | |
| 1680 cchRemaining = cchDest; | |
| 1681 } else if(cchDest > 0) { | |
| 1682 pszDestEnd = pszDest + cchDest - 1; | |
| 1683 cchRemaining = 1; | |
| 1684 *pszDestEnd = '\0'; | |
| 1685 } | |
| 1686 } | |
| 1687 if(dwFlags & (STRSAFE_NULL_ON_FAILURE)) { | |
| 1688 if(cchDest > 0) { | |
| 1689 pszDestEnd = pszDest; | |
| 1690 cchRemaining = cchDest; | |
| 1691 *pszDestEnd = '\0'; | |
| 1692 } | |
| 1693 } | |
| 1694 } | |
| 1695 } | |
| 1696 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1697 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1698 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1699 } | |
| 1700 return hr; | |
| 1701 } | |
| 1702 | |
| 1703 STRSAFEAPI StringCatNExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPCWSTR pszSrc,size_t cchToAppend,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1704 HRESULT hr = S_OK; | |
| 1705 STRSAFE_LPWSTR pszDestEnd = pszDest; | |
| 1706 size_t cchRemaining = 0; | |
| 1707 size_t cchDestLength = 0; | |
| 1708 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1709 else if(cchToAppend > STRSAFE_MAX_CCH) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1710 else { | |
| 1711 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1712 if(!pszDest) { | |
| 1713 if((cchDest==0) && (cbDest==0)) cchDestLength = 0; | |
| 1714 else hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1715 } else { | |
| 1716 hr = StringLengthWorkerW(pszDest,cchDest,&cchDestLength); | |
| 1717 if(SUCCEEDED(hr)) { | |
| 1718 pszDestEnd = pszDest + cchDestLength; | |
| 1719 cchRemaining = cchDest - cchDestLength; | |
| 1720 } | |
| 1721 } | |
| 1722 if(!pszSrc) pszSrc = L""; | |
| 1723 } else { | |
| 1724 hr = StringLengthWorkerW(pszDest,cchDest,&cchDestLength); | |
| 1725 if(SUCCEEDED(hr)) { | |
| 1726 pszDestEnd = pszDest + cchDestLength; | |
| 1727 cchRemaining = cchDest - cchDestLength; | |
| 1728 } | |
| 1729 } | |
| 1730 if(SUCCEEDED(hr)) { | |
| 1731 if(cchDest==0) { | |
| 1732 if((cchToAppend!=0) && (*pszSrc!=L'\0')) { | |
| 1733 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1734 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1735 } | |
| 1736 } else hr = StringCopyNExWorkerW(pszDestEnd,cchRemaining,(cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t)),pszSrc,cchToAppend,&pszDestEnd,&cchRemaining,dwFlags & (~(STRSAFE_FILL_ON_FAILURE | STRSAFE_NULL_ON_FAILURE))); | |
| 1737 } | |
| 1738 } | |
| 1739 if(FAILED(hr)) { | |
| 1740 if(pszDest) { | |
| 1741 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1742 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1743 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1744 pszDestEnd = pszDest; | |
| 1745 cchRemaining = cchDest; | |
| 1746 } else if(cchDest > 0) { | |
| 1747 pszDestEnd = pszDest + cchDest - 1; | |
| 1748 cchRemaining = 1; | |
| 1749 *pszDestEnd = L'\0'; | |
| 1750 } | |
| 1751 } | |
| 1752 if(dwFlags & (STRSAFE_NULL_ON_FAILURE)) { | |
| 1753 if(cchDest > 0) { | |
| 1754 pszDestEnd = pszDest; | |
| 1755 cchRemaining = cchDest; | |
| 1756 *pszDestEnd = L'\0'; | |
| 1757 } | |
| 1758 } | |
| 1759 } | |
| 1760 } | |
| 1761 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1762 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1763 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1764 } | |
| 1765 return hr; | |
| 1766 } | |
| 1767 | |
| 1768 STRSAFEAPI StringVPrintfWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,STRSAFE_LPCSTR pszFormat,va_list argList) { | |
| 1769 HRESULT hr = S_OK; | |
| 1770 if(cchDest==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1771 else { | |
| 1772 int iRet; | |
| 1773 size_t cchMax; | |
| 1774 cchMax = cchDest - 1; | |
| 1775 iRet = _vsnprintf(pszDest,cchMax,pszFormat,argList); | |
| 1776 if((iRet < 0) || (((size_t)iRet) > cchMax)) { | |
| 1777 pszDest += cchMax; | |
| 1778 *pszDest = '\0'; | |
| 1779 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1780 } else if(((size_t)iRet)==cchMax) { | |
| 1781 pszDest += cchMax; | |
| 1782 *pszDest = '\0'; | |
| 1783 } | |
| 1784 } | |
| 1785 return hr; | |
| 1786 } | |
| 1787 | |
| 1788 STRSAFEAPI StringVPrintfWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,STRSAFE_LPCWSTR pszFormat,va_list argList) { | |
| 1789 HRESULT hr = S_OK; | |
| 1790 if(cchDest==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1791 else { | |
| 1792 int iRet; | |
| 1793 size_t cchMax; | |
| 1794 cchMax = cchDest - 1; | |
| 1795 iRet = _vsnwprintf(pszDest,cchMax,pszFormat,argList); | |
| 1796 if((iRet < 0) || (((size_t)iRet) > cchMax)) { | |
| 1797 pszDest += cchMax; | |
| 1798 *pszDest = L'\0'; | |
| 1799 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1800 } else if(((size_t)iRet)==cchMax) { | |
| 1801 pszDest += cchMax; | |
| 1802 *pszDest = L'\0'; | |
| 1803 } | |
| 1804 } | |
| 1805 return hr; | |
| 1806 } | |
| 1807 | |
| 1808 STRSAFEAPI StringVPrintfExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCSTR pszFormat,va_list argList) { | |
| 1809 HRESULT hr = S_OK; | |
| 1810 STRSAFE_LPSTR pszDestEnd = pszDest; | |
| 1811 size_t cchRemaining = 0; | |
| 1812 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1813 else { | |
| 1814 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1815 if(!pszDest) { | |
| 1816 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1817 } | |
| 1818 if(!pszFormat) pszFormat = ""; | |
| 1819 } | |
| 1820 if(SUCCEEDED(hr)) { | |
| 1821 if(cchDest==0) { | |
| 1822 pszDestEnd = pszDest; | |
| 1823 cchRemaining = 0; | |
| 1824 if(*pszFormat!='\0') { | |
| 1825 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1826 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1827 } | |
| 1828 } else { | |
| 1829 int iRet; | |
| 1830 size_t cchMax; | |
| 1831 cchMax = cchDest - 1; | |
| 1832 iRet = _vsnprintf(pszDest,cchMax,pszFormat,argList); | |
| 1833 if((iRet < 0) || (((size_t)iRet) > cchMax)) { | |
| 1834 pszDestEnd = pszDest + cchMax; | |
| 1835 cchRemaining = 1; | |
| 1836 *pszDestEnd = '\0'; | |
| 1837 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1838 } else if(((size_t)iRet)==cchMax) { | |
| 1839 pszDestEnd = pszDest + cchMax; | |
| 1840 cchRemaining = 1; | |
| 1841 *pszDestEnd = '\0'; | |
| 1842 } else if(((size_t)iRet) < cchMax) { | |
| 1843 pszDestEnd = pszDest + iRet; | |
| 1844 cchRemaining = cchDest - iRet; | |
| 1845 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 1846 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(char)) + (cbDest % sizeof(char))); | |
| 1847 } | |
| 1848 } | |
| 1849 } | |
| 1850 } | |
| 1851 } | |
| 1852 if(FAILED(hr)) { | |
| 1853 if(pszDest) { | |
| 1854 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1855 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1856 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1857 pszDestEnd = pszDest; | |
| 1858 cchRemaining = cchDest; | |
| 1859 } else if(cchDest > 0) { | |
| 1860 pszDestEnd = pszDest + cchDest - 1; | |
| 1861 cchRemaining = 1; | |
| 1862 *pszDestEnd = '\0'; | |
| 1863 } | |
| 1864 } | |
| 1865 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 1866 if(cchDest > 0) { | |
| 1867 pszDestEnd = pszDest; | |
| 1868 cchRemaining = cchDest; | |
| 1869 *pszDestEnd = '\0'; | |
| 1870 } | |
| 1871 } | |
| 1872 } | |
| 1873 } | |
| 1874 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1875 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1876 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1877 } | |
| 1878 return hr; | |
| 1879 } | |
| 1880 | |
| 1881 STRSAFEAPI StringVPrintfExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags,STRSAFE_LPCWSTR pszFormat,va_list argList) { | |
| 1882 HRESULT hr = S_OK; | |
| 1883 STRSAFE_LPWSTR pszDestEnd = pszDest; | |
| 1884 size_t cchRemaining = 0; | |
| 1885 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1886 else { | |
| 1887 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1888 if(!pszDest) { | |
| 1889 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1890 } | |
| 1891 if(!pszFormat) pszFormat = L""; | |
| 1892 } | |
| 1893 if(SUCCEEDED(hr)) { | |
| 1894 if(cchDest==0) { | |
| 1895 pszDestEnd = pszDest; | |
| 1896 cchRemaining = 0; | |
| 1897 if(*pszFormat!=L'\0') { | |
| 1898 if(!pszDest) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1899 else hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1900 } | |
| 1901 } else { | |
| 1902 int iRet; | |
| 1903 size_t cchMax; | |
| 1904 cchMax = cchDest - 1; | |
| 1905 iRet = _vsnwprintf(pszDest,cchMax,pszFormat,argList); | |
| 1906 if((iRet < 0) || (((size_t)iRet) > cchMax)) { | |
| 1907 pszDestEnd = pszDest + cchMax; | |
| 1908 cchRemaining = 1; | |
| 1909 *pszDestEnd = L'\0'; | |
| 1910 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 1911 } else if(((size_t)iRet)==cchMax) { | |
| 1912 pszDestEnd = pszDest + cchMax; | |
| 1913 cchRemaining = 1; | |
| 1914 *pszDestEnd = L'\0'; | |
| 1915 } else if(((size_t)iRet) < cchMax) { | |
| 1916 pszDestEnd = pszDest + iRet; | |
| 1917 cchRemaining = cchDest - iRet; | |
| 1918 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 1919 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); | |
| 1920 } | |
| 1921 } | |
| 1922 } | |
| 1923 } | |
| 1924 } | |
| 1925 if(FAILED(hr)) { | |
| 1926 if(pszDest) { | |
| 1927 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 1928 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 1929 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 1930 pszDestEnd = pszDest; | |
| 1931 cchRemaining = cchDest; | |
| 1932 } else if(cchDest > 0) { | |
| 1933 pszDestEnd = pszDest + cchDest - 1; | |
| 1934 cchRemaining = 1; | |
| 1935 *pszDestEnd = L'\0'; | |
| 1936 } | |
| 1937 } | |
| 1938 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 1939 if(cchDest > 0) { | |
| 1940 pszDestEnd = pszDest; | |
| 1941 cchRemaining = cchDest; | |
| 1942 *pszDestEnd = L'\0'; | |
| 1943 } | |
| 1944 } | |
| 1945 } | |
| 1946 } | |
| 1947 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER)) { | |
| 1948 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 1949 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 1950 } | |
| 1951 return hr; | |
| 1952 } | |
| 1953 | |
| 1954 STRSAFEAPI StringLengthWorkerA(STRSAFE_LPCSTR psz,size_t cchMax,size_t *pcchLength) { | |
| 1955 HRESULT hr = S_OK; | |
| 1956 size_t cchMaxPrev = cchMax; | |
| 1957 while(cchMax && (*psz!='\0')) { | |
| 1958 psz++; | |
| 1959 cchMax--; | |
| 1960 } | |
| 1961 if(cchMax==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1962 if(pcchLength) { | |
| 1963 if(SUCCEEDED(hr)) *pcchLength = cchMaxPrev - cchMax; | |
| 1964 else *pcchLength = 0; | |
| 1965 } | |
| 1966 return hr; | |
| 1967 } | |
| 1968 | |
| 1969 STRSAFEAPI StringLengthWorkerW(STRSAFE_LPCWSTR psz,size_t cchMax,size_t *pcchLength) { | |
| 1970 HRESULT hr = S_OK; | |
| 1971 size_t cchMaxPrev = cchMax; | |
| 1972 while(cchMax && (*psz!=L'\0')) { | |
| 1973 psz++; | |
| 1974 cchMax--; | |
| 1975 } | |
| 1976 if(cchMax==0) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1977 if(pcchLength) { | |
| 1978 if(SUCCEEDED(hr)) *pcchLength = cchMaxPrev - cchMax; | |
| 1979 else *pcchLength = 0; | |
| 1980 } | |
| 1981 return hr; | |
| 1982 } | |
| 1983 | |
| 1984 STRSAFE_INLINE_API StringGetsExWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 1985 HRESULT hr = S_OK; | |
| 1986 STRSAFE_LPSTR pszDestEnd = pszDest; | |
| 1987 size_t cchRemaining = 0; | |
| 1988 | |
| 1989 if(dwFlags & (~STRSAFE_VALID_FLAGS)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1990 else { | |
| 1991 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 1992 if(!pszDest) { | |
| 1993 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 1994 } | |
| 1995 } | |
| 1996 if(SUCCEEDED(hr)) { | |
| 1997 if(cchDest <= 1) { | |
| 1998 pszDestEnd = pszDest; | |
| 1999 cchRemaining = cchDest; | |
| 2000 if(cchDest==1) *pszDestEnd = '\0'; | |
| 2001 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 2002 } else { | |
| 2003 pszDestEnd = pszDest; | |
| 2004 cchRemaining = cchDest; | |
| 2005 while(cchRemaining > 1) { | |
| 2006 char ch; | |
| 2007 int i = getc(stdin); | |
| 2008 if(i==EOF) { | |
| 2009 if(pszDestEnd==pszDest) hr = STRSAFE_E_END_OF_FILE; | |
| 2010 break; | |
| 2011 } | |
| 2012 ch = (char)i; | |
| 2013 if(ch=='\n') break; | |
| 2014 *pszDestEnd = ch; | |
| 2015 pszDestEnd++; | |
| 2016 cchRemaining--; | |
| 2017 } | |
| 2018 if(cchRemaining > 0) { | |
| 2019 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 2020 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(char)) + (cbDest % sizeof(char))); | |
| 2021 } | |
| 2022 } | |
| 2023 *pszDestEnd = '\0'; | |
| 2024 } | |
| 2025 } | |
| 2026 } | |
| 2027 if(FAILED(hr)) { | |
| 2028 if(pszDest) { | |
| 2029 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 2030 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 2031 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 2032 pszDestEnd = pszDest; | |
| 2033 cchRemaining = cchDest; | |
| 2034 } else if(cchDest > 0) { | |
| 2035 pszDestEnd = pszDest + cchDest - 1; | |
| 2036 cchRemaining = 1; | |
| 2037 *pszDestEnd = '\0'; | |
| 2038 } | |
| 2039 } | |
| 2040 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 2041 if(cchDest > 0) { | |
| 2042 pszDestEnd = pszDest; | |
| 2043 cchRemaining = cchDest; | |
| 2044 *pszDestEnd = '\0'; | |
| 2045 } | |
| 2046 } | |
| 2047 } | |
| 2048 } | |
| 2049 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER) || (hr==STRSAFE_E_END_OF_FILE)) { | |
| 2050 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 2051 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 2052 } | |
| 2053 return hr; | |
| 2054 } | |
| 2055 | |
| 2056 STRSAFE_INLINE_API StringGetsExWorkerW(STRSAFE_LPWSTR pszDest,size_t cchDest,size_t cbDest,STRSAFE_LPWSTR *ppszDestEnd,size_t *pcchRemaining,unsigned long dwFlags) { | |
| 2057 HRESULT hr = S_OK; | |
| 2058 STRSAFE_LPWSTR pszDestEnd = pszDest; | |
| 2059 size_t cchRemaining = 0; | |
| 2060 if(dwFlags & (~STRSAFE_VALID_FLAGS)) { | |
| 2061 hr = STRSAFE_E_INVALID_PARAMETER; | |
| 2062 } else { | |
| 2063 if(dwFlags & STRSAFE_IGNORE_NULLS) { | |
| 2064 if(!pszDest) { | |
| 2065 if((cchDest!=0) || (cbDest!=0)) hr = STRSAFE_E_INVALID_PARAMETER; | |
| 2066 } | |
| 2067 } | |
| 2068 if(SUCCEEDED(hr)) { | |
| 2069 if(cchDest <= 1) { | |
| 2070 pszDestEnd = pszDest; | |
| 2071 cchRemaining = cchDest; | |
| 2072 if(cchDest==1) *pszDestEnd = L'\0'; | |
| 2073 hr = STRSAFE_E_INSUFFICIENT_BUFFER; | |
| 2074 } else { | |
| 2075 pszDestEnd = pszDest; | |
| 2076 cchRemaining = cchDest; | |
| 2077 while(cchRemaining > 1) { | |
| 2078 wchar_t ch = getwc(stdin); | |
| 2079 if(ch==WEOF) { | |
| 2080 if(pszDestEnd==pszDest) hr = STRSAFE_E_END_OF_FILE; | |
| 2081 break; | |
| 2082 } | |
| 2083 if(ch==L'\n') break; | |
| 2084 *pszDestEnd = ch; | |
| 2085 pszDestEnd++; | |
| 2086 cchRemaining--; | |
| 2087 } | |
| 2088 if(cchRemaining > 0) { | |
| 2089 if(dwFlags & STRSAFE_FILL_BEHIND_NULL) { | |
| 2090 memset(pszDestEnd + 1,STRSAFE_GET_FILL_PATTERN(dwFlags),((cchRemaining - 1)*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t))); | |
| 2091 } | |
| 2092 } | |
| 2093 *pszDestEnd = L'\0'; | |
| 2094 } | |
| 2095 } | |
| 2096 } | |
| 2097 if(FAILED(hr)) { | |
| 2098 if(pszDest) { | |
| 2099 if(dwFlags & STRSAFE_FILL_ON_FAILURE) { | |
| 2100 memset(pszDest,STRSAFE_GET_FILL_PATTERN(dwFlags),cbDest); | |
| 2101 if(STRSAFE_GET_FILL_PATTERN(dwFlags)==0) { | |
| 2102 pszDestEnd = pszDest; | |
| 2103 cchRemaining = cchDest; | |
| 2104 } else if(cchDest > 0) { | |
| 2105 pszDestEnd = pszDest + cchDest - 1; | |
| 2106 cchRemaining = 1; | |
| 2107 *pszDestEnd = L'\0'; | |
| 2108 } | |
| 2109 } | |
| 2110 if(dwFlags & (STRSAFE_NULL_ON_FAILURE | STRSAFE_NO_TRUNCATION)) { | |
| 2111 if(cchDest > 0) { | |
| 2112 pszDestEnd = pszDest; | |
| 2113 cchRemaining = cchDest; | |
| 2114 *pszDestEnd = L'\0'; | |
| 2115 } | |
| 2116 } | |
| 2117 } | |
| 2118 } | |
| 2119 if(SUCCEEDED(hr) || (hr==STRSAFE_E_INSUFFICIENT_BUFFER) || (hr==STRSAFE_E_END_OF_FILE)) { | |
| 2120 if(ppszDestEnd) *ppszDestEnd = pszDestEnd; | |
| 2121 if(pcchRemaining) *pcchRemaining = cchRemaining; | |
| 2122 } | |
| 2123 return hr; | |
| 2124 } | |
| 2125 #endif /* !__CRT__NO_INLINE */ | |
| 2126 | |
| 2127 #define StringCopyWorkerA StringCopyWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA; | |
| 2128 #define StringCopyWorkerW StringCopyWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW; | |
| 2129 #define StringCopyExWorkerA StringCopyExWorkerA_instead_use_StringCchCopyA_or_StringCchCopyExA; | |
| 2130 #define StringCopyExWorkerW StringCopyExWorkerW_instead_use_StringCchCopyW_or_StringCchCopyExW; | |
| 2131 #define StringCatWorkerA StringCatWorkerA_instead_use_StringCchCatA_or_StringCchCatExA; | |
| 2132 #define StringCatWorkerW StringCatWorkerW_instead_use_StringCchCatW_or_StringCchCatExW; | |
| 2133 #define StringCatExWorkerA StringCatExWorkerA_instead_use_StringCchCatA_or_StringCchCatExA; | |
| 2134 #define StringCatExWorkerW StringCatExWorkerW_instead_use_StringCchCatW_or_StringCchCatExW; | |
| 2135 #define StringCatNWorkerA StringCatNWorkerA_instead_use_StringCchCatNA_or_StrincCbCatNA; | |
| 2136 #define StringCatNWorkerW StringCatNWorkerW_instead_use_StringCchCatNW_or_StringCbCatNW; | |
| 2137 #define StringCatNExWorkerA StringCatNExWorkerA_instead_use_StringCchCatNExA_or_StringCbCatNExA; | |
| 2138 #define StringCatNExWorkerW StringCatNExWorkerW_instead_use_StringCchCatNExW_or_StringCbCatNExW; | |
| 2139 #define StringVPrintfWorkerA StringVPrintfWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA; | |
| 2140 #define StringVPrintfWorkerW StringVPrintfWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW; | |
| 2141 #define StringVPrintfExWorkerA StringVPrintfExWorkerA_instead_use_StringCchVPrintfA_or_StringCchVPrintfExA; | |
| 2142 #define StringVPrintfExWorkerW StringVPrintfExWorkerW_instead_use_StringCchVPrintfW_or_StringCchVPrintfExW; | |
| 2143 #define StringLengthWorkerA StringLengthWorkerA_instead_use_StringCchLengthA_or_StringCbLengthA; | |
| 2144 #define StringLengthWorkerW StringLengthWorkerW_instead_use_StringCchLengthW_or_StringCbLengthW; | |
| 2145 #define StringGetsExWorkerA StringGetsExWorkerA_instead_use_StringCchGetsA_or_StringCbGetsA | |
| 2146 #define StringGetsExWorkerW StringGetsExWorkerW_instead_use_StringCchGetsW_or_StringCbGetsW | |
| 2147 | |
| 2148 #ifndef STRSAFE_NO_DEPRECATE | |
| 2149 | |
| 2150 #undef strcpy | |
| 2151 #define strcpy strcpy_instead_use_StringCbCopyA_or_StringCchCopyA; | |
| 2152 | |
| 2153 #undef wcscpy | |
| 2154 #define wcscpy wcscpy_instead_use_StringCbCopyW_or_StringCchCopyW; | |
| 2155 | |
| 2156 #undef strcat | |
| 2157 #define strcat strcat_instead_use_StringCbCatA_or_StringCchCatA; | |
| 2158 | |
| 2159 #undef wcscat | |
| 2160 #define wcscat wcscat_instead_use_StringCbCatW_or_StringCchCatW; | |
| 2161 | |
| 2162 #undef sprintf | |
| 2163 #define sprintf sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA; | |
| 2164 | |
| 2165 #undef swprintf | |
| 2166 #define swprintf swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW; | |
| 2167 | |
| 2168 #undef vsprintf | |
| 2169 #define vsprintf vsprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; | |
| 2170 | |
| 2171 #undef vswprintf | |
| 2172 #define vswprintf vswprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; | |
| 2173 | |
| 2174 #undef _snprintf | |
| 2175 #define _snprintf _snprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA; | |
| 2176 | |
| 2177 #undef _snwprintf | |
| 2178 #define _snwprintf _snwprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW; | |
| 2179 | |
| 2180 #undef _vsnprintf | |
| 2181 #define _vsnprintf _vsnprintf_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; | |
| 2182 | |
| 2183 #undef _vsnwprintf | |
| 2184 #define _vsnwprintf _vsnwprintf_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; | |
| 2185 | |
| 2186 #undef strcpyA | |
| 2187 #define strcpyA strcpyA_instead_use_StringCbCopyA_or_StringCchCopyA; | |
| 2188 | |
| 2189 #undef strcpyW | |
| 2190 #define strcpyW strcpyW_instead_use_StringCbCopyW_or_StringCchCopyW; | |
| 2191 | |
| 2192 #undef lstrcpy | |
| 2193 #define lstrcpy lstrcpy_instead_use_StringCbCopy_or_StringCchCopy; | |
| 2194 | |
| 2195 #undef lstrcpyA | |
| 2196 #define lstrcpyA lstrcpyA_instead_use_StringCbCopyA_or_StringCchCopyA; | |
| 2197 | |
| 2198 #undef lstrcpyW | |
| 2199 #define lstrcpyW lstrcpyW_instead_use_StringCbCopyW_or_StringCchCopyW; | |
| 2200 | |
| 2201 #undef StrCpy | |
| 2202 #define StrCpy StrCpy_instead_use_StringCbCopy_or_StringCchCopy; | |
| 2203 | |
| 2204 #undef StrCpyA | |
| 2205 #define StrCpyA StrCpyA_instead_use_StringCbCopyA_or_StringCchCopyA; | |
| 2206 | |
| 2207 #undef StrCpyW | |
| 2208 #define StrCpyW StrCpyW_instead_use_StringCbCopyW_or_StringCchCopyW; | |
| 2209 | |
| 2210 #undef _tcscpy | |
| 2211 #define _tcscpy _tcscpy_instead_use_StringCbCopy_or_StringCchCopy; | |
| 2212 | |
| 2213 #undef _ftcscpy | |
| 2214 #define _ftcscpy _ftcscpy_instead_use_StringCbCopy_or_StringCchCopy; | |
| 2215 | |
| 2216 #undef lstrcat | |
| 2217 #define lstrcat lstrcat_instead_use_StringCbCat_or_StringCchCat; | |
| 2218 | |
| 2219 #undef lstrcatA | |
| 2220 #define lstrcatA lstrcatA_instead_use_StringCbCatA_or_StringCchCatA; | |
| 2221 | |
| 2222 #undef lstrcatW | |
| 2223 #define lstrcatW lstrcatW_instead_use_StringCbCatW_or_StringCchCatW; | |
| 2224 | |
| 2225 #undef StrCat | |
| 2226 #define StrCat StrCat_instead_use_StringCbCat_or_StringCchCat; | |
| 2227 | |
| 2228 #undef StrCatA | |
| 2229 #define StrCatA StrCatA_instead_use_StringCbCatA_or_StringCchCatA; | |
| 2230 | |
| 2231 #undef StrCatW | |
| 2232 #define StrCatW StrCatW_instead_use_StringCbCatW_or_StringCchCatW; | |
| 2233 | |
| 2234 #undef StrNCat | |
| 2235 #define StrNCat StrNCat_instead_use_StringCbCatN_or_StringCchCatN; | |
| 2236 | |
| 2237 #undef StrNCatA | |
| 2238 #define StrNCatA StrNCatA_instead_use_StringCbCatNA_or_StringCchCatNA; | |
| 2239 | |
| 2240 #undef StrNCatW | |
| 2241 #define StrNCatW StrNCatW_instead_use_StringCbCatNW_or_StringCchCatNW; | |
| 2242 | |
| 2243 #undef StrCatN | |
| 2244 #define StrCatN StrCatN_instead_use_StringCbCatN_or_StringCchCatN; | |
| 2245 | |
| 2246 #undef StrCatNA | |
| 2247 #define StrCatNA StrCatNA_instead_use_StringCbCatNA_or_StringCchCatNA; | |
| 2248 | |
| 2249 #undef StrCatNW | |
| 2250 #define StrCatNW StrCatNW_instead_use_StringCbCatNW_or_StringCchCatNW; | |
| 2251 | |
| 2252 #undef _tcscat | |
| 2253 #define _tcscat _tcscat_instead_use_StringCbCat_or_StringCchCat; | |
| 2254 | |
| 2255 #undef _ftcscat | |
| 2256 #define _ftcscat _ftcscat_instead_use_StringCbCat_or_StringCchCat; | |
| 2257 | |
| 2258 #undef wsprintf | |
| 2259 #define wsprintf wsprintf_instead_use_StringCbPrintf_or_StringCchPrintf; | |
| 2260 | |
| 2261 #undef wsprintfA | |
| 2262 #define wsprintfA wsprintfA_instead_use_StringCbPrintfA_or_StringCchPrintfA; | |
| 2263 | |
| 2264 #undef wsprintfW | |
| 2265 #define wsprintfW wsprintfW_instead_use_StringCbPrintfW_or_StringCchPrintfW; | |
| 2266 | |
| 2267 #undef wvsprintf | |
| 2268 #define wvsprintf wvsprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; | |
| 2269 | |
| 2270 #undef wvsprintfA | |
| 2271 #define wvsprintfA wvsprintfA_instead_use_StringCbVPrintfA_or_StringCchVPrintfA; | |
| 2272 | |
| 2273 #undef wvsprintfW | |
| 2274 #define wvsprintfW wvsprintfW_instead_use_StringCbVPrintfW_or_StringCchVPrintfW; | |
| 2275 | |
| 2276 #undef _vstprintf | |
| 2277 #define _vstprintf _vstprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; | |
| 2278 | |
| 2279 #undef _vsntprintf | |
| 2280 #define _vsntprintf _vsntprintf_instead_use_StringCbVPrintf_or_StringCchVPrintf; | |
| 2281 | |
| 2282 #undef _stprintf | |
| 2283 #define _stprintf _stprintf_instead_use_StringCbPrintf_or_StringCchPrintf; | |
| 2284 | |
| 2285 #undef _sntprintf | |
| 2286 #define _sntprintf _sntprintf_instead_use_StringCbPrintf_or_StringCchPrintf; | |
| 2287 | |
| 2288 #undef _getts | |
| 2289 #define _getts _getts_instead_use_StringCbGets_or_StringCchGets; | |
| 2290 | |
| 2291 #undef gets | |
| 2292 #define gets _gets_instead_use_StringCbGetsA_or_StringCchGetsA; | |
| 2293 | |
| 2294 #undef _getws | |
| 2295 #define _getws _getws_instead_use_StringCbGetsW_or_StringCchGetsW; | |
| 2296 #endif | |
| 2297 #endif |
