diff options
| author | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2010-02-13 23:08:49 +0000 |
|---|---|---|
| committer | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2010-02-13 23:08:49 +0000 |
| commit | bfeae01f185434c0cca7ff49015f42f529780513 (patch) | |
| tree | 9b3e114e895be3014a1d88e94150a04f7fa2854c /src/VBox/Runtime/common/string/stringalloc.cpp | |
| parent | 6a8183ab62ed80dff2c910d6de982d7cf9c4fe35 (diff) | |
| download | VirtualBox-svn-bfeae01f185434c0cca7ff49015f42f529780513.tar.gz | |
IPRT: common/string/string.cpp -> stringalloc.cpp.
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@26480 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'src/VBox/Runtime/common/string/stringalloc.cpp')
| -rw-r--r-- | src/VBox/Runtime/common/string/stringalloc.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/VBox/Runtime/common/string/stringalloc.cpp b/src/VBox/Runtime/common/string/stringalloc.cpp new file mode 100644 index 00000000000..760f7dc939a --- /dev/null +++ b/src/VBox/Runtime/common/string/stringalloc.cpp @@ -0,0 +1,125 @@ +/* $Id$ */ +/** @file + * IPRT - String Manipulation. + */ + +/* + * Copyright (C) 2006-2007 Sun Microsystems, Inc. + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa + * Clara, CA 95054 USA or visit http://www.sun.com if you need + * additional information or have any questions. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include <iprt/string.h> +#include "internal/iprt.h" + +#include <iprt/alloc.h> +#include <iprt/assert.h> +#include <iprt/err.h> +#include "internal/string.h" + + +/** + * Free string allocated by any of the non-UCS-2 string functions. + * + * @returns iprt status code. + * @param pszString Pointer to buffer with string to free. + * NULL is accepted. + */ +RTDECL(void) RTStrFree(char *pszString) +{ + if (pszString) + RTMemTmpFree(pszString); +} +RT_EXPORT_SYMBOL(RTStrFree); + + +/** + * Allocates a new copy of the given UTF-8 string. + * + * @returns Pointer to the allocated UTF-8 string. + * @param pszString UTF-8 string to duplicate. + */ +RTDECL(char *) RTStrDup(const char *pszString) +{ + AssertPtr(pszString); + size_t cch = strlen(pszString) + 1; + char *psz = (char *)RTMemAlloc(cch); + if (psz) + memcpy(psz, pszString, cch); + return psz; +} +RT_EXPORT_SYMBOL(RTStrDup); + + +/** + * Allocates a new copy of the given UTF-8 string. + * + * @returns iprt status code. + * @param ppszString Receives pointer of the allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to duplicate. + */ +RTDECL(int) RTStrDupEx(char **ppszString, const char *pszString) +{ + AssertPtr(ppszString); + AssertPtr(pszString); + + size_t cch = strlen(pszString) + 1; + char *psz = (char *)RTMemAlloc(cch); + if (psz) + { + memcpy(psz, pszString, cch); + *ppszString = psz; + return VINF_SUCCESS; + } + return VERR_NO_MEMORY; +} +RT_EXPORT_SYMBOL(RTStrDupEx); + + +/** + * Allocates a new copy of the given UTF-8 substring. + * + * @returns Pointer to the allocated UTF-8 substring. + * @param pszString UTF-8 string to duplicate. + * @param cchMax The max number of chars to duplicate, not counting + * the terminator. + */ +RTDECL(char *) RTStrDupN(const char *pszString, size_t cchMax) +{ + AssertPtr(pszString); + char *pszEnd = (char *)memchr(pszString, '\0', cchMax); + size_t cch = pszEnd ? (uintptr_t)pszEnd - (uintptr_t)pszString : cchMax; + char *pszDst = (char *)RTMemAlloc(cch); + if (pszDst) + { + memcpy(pszDst, pszString, cch); + pszDst[cch] = '\0'; + } + return pszDst; +} +RT_EXPORT_SYMBOL(RTStrDupN); + |
