]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - ubuntu/vbox/include/internal/string.h
UBUNTU: vbox-update: Fix up KERN_DIR definitions
[mirror_ubuntu-bionic-kernel.git] / ubuntu / vbox / include / internal / string.h
CommitLineData
056a1eb7
SF
1/* $Id: string.h $ */
2/** @file
3 * IPRT - Internal RTStr header.
4 */
5
6/*
7 * Copyright (C) 2006-2016 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * The contents of this file may alternatively be used under the terms
18 * of the Common Development and Distribution License Version 1.0
19 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20 * VirtualBox OSE distribution, in which case the provisions of the
21 * CDDL are applicable instead of those of the GPL.
22 *
23 * You may elect to license modified versions of this file under the
24 * terms and conditions of either the GPL or the CDDL or both.
25 */
26
27#ifndef ___internal_string_h
28#define ___internal_string_h
29
30#include <iprt/string.h>
31
32RT_C_DECLS_BEGIN
33
34/** @def RTSTR_STRICT
35 * Enables strict assertions on bad string encodings.
36 */
37#ifdef DOXYGEN_RUNNING
38# define RTSTR_STRICT
39#endif
40/*#define RTSTR_STRICT*/
41
42#ifdef RTSTR_STRICT
43# define RTStrAssertMsgFailed(msg) AssertMsgFailed(msg)
44# define RTStrAssertMsgReturn(expr, msg, rc) AssertMsgReturn(expr, msg, rc)
45#else
46# define RTStrAssertMsgFailed(msg) do { } while (0)
47# define RTStrAssertMsgReturn(expr, msg, rc) do { if (!(expr)) return rc; } while (0)
48#endif
49
50DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs,
51 int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize);
52DECLHIDDEN(size_t) rtstrFormatType(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs,
53 int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize);
54
55/**
56 * Format kernel address into @a pszBuf.
57 *
58 * @returns Number of bytes returned.
59 * @param pszBuf The return buffer.
60 * @param cbBuf The buffer size.
61 * @param uPtr The ring-0 pointer value.
62 * @param cchWidth The specified width, -1 if not given.
63 * @param cchPrecision The specified precision.
64 * @param fFlags Format flags, RTSTR_F_XXX.
65 */
66DECLHIDDEN(size_t) rtStrFormatKernelAddress(char *pszBuf, size_t cbBuf, RTR0INTPTR uPtr, signed int cchWidth,
67 signed int cchPrecision, unsigned int fFlags);
68
69#ifdef RT_WITH_ICONV_CACHE
70DECLHIDDEN(void) rtStrIconvCacheInit(struct RTTHREADINT *pThread);
71DECLHIDDEN(void) rtStrIconvCacheDestroy(struct RTTHREADINT *pThread);
72#endif
73
74/**
75 * Indexes into RTTHREADINT::ahIconvs
76 */
77typedef enum RTSTRICONV
78{
79 /** UTF-8 to the locale codeset (LC_CTYPE). */
80 RTSTRICONV_UTF8_TO_LOCALE = 0,
81 /** The locale codeset (LC_CTYPE) to UTF-8. */
82 RTSTRICONV_LOCALE_TO_UTF8,
83 /** UTF-8 to the filesystem codeset - if different from the locale codeset. */
84 RTSTRICONV_UTF8_TO_FS,
85 /** The filesystem codeset to UTF-8. */
86 RTSTRICONV_FS_TO_UTF8,
87 /** The end of the valid indexes. */
88 RTSTRICONV_END
89} RTSTRICONV;
90
91DECLHIDDEN(int) rtStrConvert(const char *pchInput, size_t cchInput, const char *pszInputCS,
92 char **ppszOutput, size_t cbOutput, const char *pszOutputCS,
93 unsigned cFactor, RTSTRICONV enmCacheIdx);
94DECLHIDDEN(const char *) rtStrGetLocaleCodeset(void);
95DECLHIDDEN(int) rtUtf8Length(const char *psz, size_t cch, size_t *pcuc, size_t *pcchActual);
96
97DECLHIDDEN(int) rtStrToIpAddr6Str(const char *psz, char *pszAddrOut, size_t addrOutSize, char *pszPortOut, size_t portOutSize, bool followRfc);
98
99RT_C_DECLS_END
100
101#endif
102