1/* Shared helper routines for manipulating XML. 2 3 Copyright (C) 2006-2020 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20#include "common-defs.h" 21#include "xml-utils.h" 22 23/* See xml-utils.h. */ 24 25std::string 26xml_escape_text (const char *text) 27{ 28 std::string result; 29 30 xml_escape_text_append (&result, text); 31 32 return result; 33} 34 35/* See xml-utils.h. */ 36 37void 38xml_escape_text_append (std::string *result, const char *text) 39{ 40 /* Expand the result. */ 41 for (int i = 0; text[i] != '\0'; i++) 42 switch (text[i]) 43 { 44 case '\'': 45 *result += "'"; 46 break; 47 case '\"': 48 *result += """; 49 break; 50 case '&': 51 *result += "&"; 52 break; 53 case '<': 54 *result += "<"; 55 break; 56 case '>': 57 *result += ">"; 58 break; 59 default: 60 *result += text[i]; 61 break; 62 } 63} 64