15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BASE_STRINGS_STRING_UTIL_POSIX_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BASE_STRINGS_STRING_UTIL_POSIX_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h> 109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include <string.h> 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <wchar.h> 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace base { 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Chromium code style is to not use malloc'd strings; this is only for use 18bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// for interaction with APIs that require it. 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)inline char* strdup(const char* str) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::strdup(str); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inline int strcasecmp(const char* string1, const char* string2) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::strcasecmp(string1, string2); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inline int strncasecmp(const char* string1, const char* string2, size_t count) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ::strncasecmp(string1, string2, count); 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)inline int vsnprintf(char* buffer, size_t size, 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* format, va_list arguments) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ::vsnprintf(buffer, size, format, arguments); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)inline int strncmp16(const char16* s1, const char16* s2, size_t count) { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(WCHAR_T_IS_UTF16) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ::wcsncmp(s1, s2, count); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(WCHAR_T_IS_UTF32) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return c16memcmp(s1, s2, count); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)inline int vswprintf(wchar_t* buffer, size_t size, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const wchar_t* format, va_list arguments) { 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(IsWprintfFormatPortable(format)); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ::vswprintf(buffer, size, format, arguments); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace base 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // BASE_STRINGS_STRING_UTIL_POSIX_H_ 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)