blob: 7f260bfc8b4ee85cf2f0d1711c60220cf59058d8 [file] [log] [blame]
[email protected]8ad97ad2013-06-08 06:05:471// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BASE_STRINGS_STRING_UTIL_WIN_H_
6#define BASE_STRINGS_STRING_UTIL_WIN_H_
7
8#include <stdarg.h>
avi84f37e12015-12-25 09:31:429#include <stddef.h>
[email protected]8ad97ad2013-06-08 06:05:4710#include <stdio.h>
11#include <string.h>
12#include <wchar.h>
13
14#include "base/logging.h"
15
16namespace base {
17
18// Chromium code style is to not use malloc'd strings; this is only for use
19// for interaction with APIs that require it.
20inline char* strdup(const char* str) {
21 return _strdup(str);
22}
23
[email protected]8ad97ad2013-06-08 06:05:4724inline int vsnprintf(char* buffer, size_t size,
25 const char* format, va_list arguments) {
thakisc0107ee2015-02-06 03:42:1426 int length = vsnprintf_s(buffer, size, size - 1, format, arguments);
27 if (length < 0)
28 return _vscprintf(format, arguments);
[email protected]8ad97ad2013-06-08 06:05:4729 return length;
30}
31
32inline int vswprintf(wchar_t* buffer, size_t size,
33 const wchar_t* format, va_list arguments) {
34 DCHECK(IsWprintfFormatPortable(format));
35
thakisc0107ee2015-02-06 03:42:1436 int length = _vsnwprintf_s(buffer, size, size - 1, format, arguments);
37 if (length < 0)
38 return _vscwprintf(format, arguments);
[email protected]8ad97ad2013-06-08 06:05:4739 return length;
40}
41
42} // namespace base
43
44#endif // BASE_STRINGS_STRING_UTIL_WIN_H_