#include "string.h"#include "serialize.h"#include "numeric.h"#include "log.h"#include "hex.h"#include "porting.h"#include "translation.h"#include "strfnd.h"#include <algorithm>#include <array>#include <sstream>#include <iomanip>#include <unordered_map>#include <iconv.h>
Include dependency graph for string.cpp:Functions | |
| static bool | convert (iconv_t cd, char *outbuf, size_t *outbuf_size, char *inbuf, size_t inbuf_size) |
| std::wstring | utf8_to_wide (std::string_view input) |
| std::string | wide_to_utf8 (std::wstring_view input) |
| void | wide_add_codepoint (std::wstring &result, char32_t codepoint) |
| std::string | urlencode (std::string_view str) |
| std::string | urldecode (std::string_view str) |
| u32 | readFlagString (std::string str, const FlagDesc *flagdesc, u32 *flagmask) |
| std::string | writeFlagString (u32 flags, const FlagDesc *flagdesc, u32 flagmask) |
| size_t | mystrlcpy (char *dst, const char *src, size_t size) noexcept |
| char * | mystrtok_r (char *s, const char *sep, char **lasts) noexcept |
| u64 | read_seed (const char *str) |
| static bool | parseHexColorString (const std::string &value, video::SColor &color, unsigned char default_alpha) |
| static bool | parseNamedColorString (const std::string &value, video::SColor &color) |
| bool | parseColorString (const std::string &value, video::SColor &color, bool quiet, unsigned char default_alpha) |
| std::string | encodeHexColorString (video::SColor color) |
| void | str_replace (std::string &str, char from, char to) |
Replace all occurrences of the character from in str with to. | |
| std::string | wrap_rows (std::string_view from, unsigned row_len, bool has_color_codes) |
Create a string based on from where a newline is forcefully inserted every row_len characters. | |
| static void | translate_all (std::wstring_view s, size_t &i, Translations *translations, std::wstring &res) |
| static void | translate_string (std::wstring_view s, Translations *translations, const std::wstring &textdomain, size_t &i, std::wstring &res, bool use_plural, unsigned long int number) |
| std::wstring | translate_string (std::wstring_view s, Translations *translations) |
| std::wstring | translate_string (std::wstring_view s) |
| std::string | sanitizeDirName (std::string_view str, std::string_view optional_prefix) |
| Sanitize the name of a new directory. | |
| template<class F > | |
| void | remove_indexed (std::string &s, F pred) |
| std::string | sanitize_untrusted (std::string_view str, bool keep_escapes) |
| Sanitize an untrusted string (e.g. | |
| void | safe_print_string (std::ostream &os, std::string_view str) |
| Prints a sanitized version of a string without control characters. | |
| std::optional< v3f > | str_to_v3f (std::string_view str) |
Parses a string of form (1, 2, 3) or 1, 2, 4 to a v3f. | |
Variables | |
| constexpr auto | DEFAULT_ENCODING |
| static const std::unordered_map< std::string, u32 > | s_named_colors |
| static const std::array< std::wstring_view, 30 > | disallowed_dir_names |
| static const std::wstring_view | disallowed_path_chars = L"<>:\"/\\|?*." |
| List of characters that are blacklisted from created directories. | |
|
static |
| std::string encodeHexColorString | ( | video::SColor | color | ) |
References hex_encode().
Referenced by WearBarParams::serializeJson().
Here is the call graph for this function:
Here is the caller graph for this function:
|
noexcept |
References MYMIN.
|
noexcept |
| bool parseColorString | ( | const std::string & | value, |
| video::SColor & | color, | ||
| bool | quiet, | ||
| unsigned char | default_alpha ) |
References errorstream, parseHexColorString(), and parseNamedColorString().
Referenced by ChatBuffer::ChatBuffer(), EnrichedString::addAtEnd(), check_color(), WearBarParams::deserializeJson(), ImageSource::generateImagePart(), StyleSpec::getColor(), StyleSpec::getColor(), StyleSpec::getColorArray(), ParsedText::globalTag(), GUIFormSpecMenu::parseBackgroundColor(), GUIFormSpecMenu::parseBox(), GUIFormSpecMenu::parseListColors(), GUIFormSpecMenu::parseTooltip(), read_color(), ParsedText::Element::setStyle(), GUITable::setTable(), and GUITable::setTextList().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
References hex_digit_decode().
Referenced by parseColorString().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
References hex_digit_decode(), lowercase(), and s_named_colors.
Referenced by parseColorString().
Here is the call graph for this function:
Here is the caller graph for this function:| u64 read_seed | ( | const char * | str | ) |
References murmur_hash_64_ua().
Referenced by MapgenParams::readParams().
Here is the call graph for this function:
Here is the caller graph for this function:| u32 readFlagString | ( | std::string | str, |
| const FlagDesc * | flagdesc, | ||
| u32 * | flagmask ) |
References FlagDesc::flag, and FlagDesc::name.
Referenced by Settings::getFlagStr(), read_flags(), and TestSettings::testFlagDesc().
Here is the caller graph for this function:| void remove_indexed | ( | std::string & | s, |
| F | pred ) |
| void safe_print_string | ( | std::ostream & | os, |
| std::string_view | str ) |
Prints a sanitized version of a string without control characters.
'\t' and '
' are allowed, as are UTF-8 control characters (e.g. RTL). ASCII control characters are replaced with their hex encoding in angle brackets (e.g. "a\x1eb" -> "a<1e>b").
References IS_ASCII_PRINTABLE_CHAR, IS_UTF8_MULTB_INNER, and IS_UTF8_MULTB_START.
Referenced by HTTPFetchOngoing::complete(), and IMetadata::resolveString().
Here is the caller graph for this function:
|
nodiscard |
Sanitize an untrusted string (e.g.
from the network). This will get strip control characters and (optionally) any MT-style escape sequences too. Note that they won't be removed cleanly but rather just broken, unlike with unescape_enriched. Line breaks and UTF-8 is permitted.
References remove_indexed().
Referenced by pkt_read_formspec_fields(), and TestUtilities::testSanitizeUntrusted().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string sanitizeDirName | ( | std::string_view | str, |
| std::string_view | optional_prefix ) |
Sanitize the name of a new directory.
This consists of two stages:
References disallowed_dir_names, disallowed_path_chars, str_equal(), utf8_to_wide(), and wide_to_utf8().
Referenced by ModApiMainMenu::l_create_world(), and TestUtilities::testSanitizeDirName().
Here is the call graph for this function:
Here is the caller graph for this function:| void str_replace | ( | std::string & | str, |
| char | from, | ||
| char | to ) |
Replace all occurrences of the character from in str with to.
| str | The string to (potentially) modify. |
| from | The character in str to replace. |
| to | The replacement character. |
Referenced by ImageSource::generateImagePart(), Client::initLocalMapSaving(), and TestUtilities::testStringReplace().
Here is the caller graph for this function:| std::optional< v3f > str_to_v3f | ( | std::string_view | str | ) |
Parses a string of form (1, 2, 3) or 1, 2, 4 to a v3f.
| str | string |
References trim().
Referenced by Settings::getV3F(), and ItemStack::getWieldScale().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
References split(), and translate_string().
Referenced by translate_string(), and translate_string().
Here is the call graph for this function:
Here is the caller graph for this function:| std::wstring translate_string | ( | std::wstring_view | s | ) |
| std::wstring translate_string | ( | std::wstring_view | s, |
| Translations * | translations ) |
References translate_all().
Referenced by unescape_translate().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
References errorstream, Translations::getPluralTranslation(), Translations::getTranslation(), split(), translate_all(), and wide_to_utf8().
Referenced by ChatBackend::addMessage(), Camera::drawNametags(), ModApiMainMenu::l_get_content_translation(), ModApiEnv::l_get_translated_string(), EnrichedString::operator=(), GUIFormSpecMenu::parseButton(), GUIFormSpecMenu::parseCheckbox(), GUIFormSpecMenu::parseHyperText(), GUIFormSpecMenu::parsePwdField(), GUIFormSpecMenu::parseSimpleField(), GUIFormSpecMenu::parseTextArea(), GUIEngine::setTopleftText(), translate_all(), and translate_string().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string urldecode | ( | std::string_view | str | ) |
References hex_digit_decode().
Referenced by TestUtilities::testUrlDecode().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string urlencode | ( | std::string_view | str | ) |
Referenced by HTTPFetchOngoing::HTTPFetchOngoing(), ModApiUtil::Initialize(), ModApiUtil::InitializeAsync(), ModApiUtil::InitializeClient(), ModApiUtil::l_urlencode(), and TestUtilities::testUrlEncode().
Here is the caller graph for this function:| std::wstring utf8_to_wide | ( | std::string_view | input | ) |
References convert(), DEFAULT_ENCODING, hex_encode(), and infostream.
Referenced by GUITable::allocString(), Game::createClient(), ProfilerGraph::draw(), drawItemStack(), Hud::drawLuaElements(), GUIFormSpecMenu::drawMenu(), Camera::drawNametags(), Game::getServerContent(), FontEngine::getTextWidth(), FontEngine::getTextWidth(), Server::handleChat(), Game::handlePointingAtNode(), Game::handlePointingAtObject(), GameUI::init(), ModApiServer::l_chat_send_all(), ModApiServer::l_chat_send_player(), ModApiClient::l_display_chat_message(), ModApiMainMenu::l_get_content_translation(), ModApiEnv::l_get_translated_string(), ModApiClient::l_send_chat_message(), Translations::loadMoEntry(), Translations::loadMoTranslation(), Translations::loadPoTranslation(), Translations::loadTrTranslation(), Client::makeScreenshot(), ChatPrompt::nickCompletion(), GUIChatConsole::OnEvent(), GUIFormSpecMenu::parseButton(), GUIFormSpecMenu::parseCheckbox(), GUIFormSpecMenu::parseDropDown(), GUIFormSpecMenu::parseHyperText(), GUIFormSpecMenu::parseImageButton(), GUIFormSpecMenu::parseItemImageButton(), GUIFormSpecMenu::parseLabel(), Translations::parsePoLine(), GUIFormSpecMenu::parsePwdField(), GUIFormSpecMenu::parseSimpleField(), GUIFormSpecMenu::parseTabHeader(), GUIFormSpecMenu::parseTable(), GUIFormSpecMenu::parseTextArea(), GUIFormSpecMenu::parseTextList(), GUIFormSpecMenu::parseTooltip(), GUIFormSpecMenu::parseVertLabel(), Server::printToConsoleOnly(), Game::processKeyInput(), GUIOpenURLMenu::regenerateGui(), Server::requestShutdown(), ClientLauncher::run(), sanitizeDirName(), GUIEngine::setTopleftText(), TestUtilities::testStrEqual(), TestUtilities::testUTF8(), TestUtilities::testWrapRows(), Game::toggleMinimap(), GameUI::update(), Game::updateChat(), GameUI::updateProfiler(), GUIChatConsole::weblinkClick(), and wstrgettext().
Here is the call graph for this function:| void wide_add_codepoint | ( | std::wstring & | result, |
| char32_t | codepoint ) |
| std::string wide_to_utf8 | ( | std::wstring_view | input | ) |
References convert(), DEFAULT_ENCODING, hex_encode(), and infostream.
Referenced by GUIFileSelectMenu::acceptInput(), GUIFormSpecMenu::acceptInput(), EnrichedString::addAtEnd(), ChatBuffer::formatChatLine(), TextDestGuiEngine::gotText(), TextDestNodeMetadata::gotText(), Server::handleChat(), Client::handleCommand_AccessDenied(), Client::handleCommand_ChatMessage(), ModApiMainMenu::l_get_content_translation(), ModApiEnv::l_get_translated_string(), Translations::loadPoEntry(), Translations::loadPoTranslation(), GUIChatConsole::OnEvent(), GUIFormSpecMenu::parseTable(), ParsedText::parseTag(), GUIFormSpecMenu::parseTextList(), GUIModalMenu::preprocessEvent(), GUIPasswordChange::processInput(), sanitizeDirName(), TestUtilities::testUTF8(), Server::ShutdownState::tick(), translate_string(), Client::typeChatMessage(), Translations::unescapeC(), and GUIChatConsole::updatePrimarySelection().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string wrap_rows | ( | std::string_view | from, |
| unsigned | row_len, | ||
| bool | has_color_codes = false ) |
Create a string based on from where a newline is forcefully inserted every row_len characters.
row_len characters whether it breaks a word or not. It is intended to be used for, for example, showing paths in the GUI.| from | The (utf-8) string to be wrapped into rows. |
| row_len | The row length (in characters). |
| has_color_codes | Whether the source string has colorize codes. |
References IS_UTF8_MULTB_INNER.
Referenced by GUIOpenURLMenu::regenerateGui(), and TestUtilities::testWrapRows().
Here is the caller graph for this function:| std::string writeFlagString | ( | u32 | flags, |
| const FlagDesc * | flagdesc, | ||
| u32 | flagmask ) |
References FlagDesc::name.
Referenced by push_flags_string(), Settings::setDefault(), and Settings::setFlagStr().
Here is the caller graph for this function:
|
constexpr |
Referenced by utf8_to_wide(), and wide_to_utf8().
|
static |
Referenced by sanitizeDirName().
|
static |
List of characters that are blacklisted from created directories.
Referenced by sanitizeDirName().
|
static |
Referenced by parseNamedColorString().