1 1.1 christos /* demanguse.c -- libiberty demangler usage 2 1.1.1.3 christos Copyright (C) 2021-2025 Free Software Foundation, Inc. 3 1.1 christos 4 1.1 christos This file is part of GNU Binutils. 5 1.1 christos 6 1.1 christos This program is free software; you can redistribute it and/or modify 7 1.1 christos it under the terms of the GNU General Public License as published by 8 1.1 christos the Free Software Foundation; either version 3 of the License, or 9 1.1 christos (at your option) any later version. 10 1.1 christos 11 1.1 christos This program is distributed in the hope that it will be useful, 12 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of 13 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 1.1 christos GNU General Public License for more details. 15 1.1 christos 16 1.1 christos You should have received a copy of the GNU General Public License 17 1.1 christos along with this program; if not, write to the Free Software 18 1.1 christos Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 19 1.1 christos 02110-1301, USA. */ 20 1.1 christos 21 1.1 christos #include <stdio.h> 22 1.1 christos #include <string.h> 23 1.1 christos #include "demangle.h" 24 1.1 christos #include "demanguse.h" 25 1.1 christos 26 1.1 christos /* Print the list of demangling styles to STREAM. A one line MSG is 27 1.1 christos printed before the styles. Output is limited to 80 columns, with 28 1.1 christos continuation lines being indented by leading spaces in MSG. */ 29 1.1 christos 30 1.1 christos void 31 1.1 christos display_demangler_styles (FILE *stream, const char *msg) 32 1.1 christos { 33 1.1 christos const struct demangler_engine *info = libiberty_demanglers; 34 1.1 christos int col; 35 1.1 christos int lead_spaces = 0; 36 1.1 christos const char *cont = ""; 37 1.1 christos 38 1.1 christos while (msg[lead_spaces] == ' ') 39 1.1 christos ++lead_spaces; 40 1.1 christos col = fprintf (stream, "%s", msg); 41 1.1 christos while (info->demangling_style_name) 42 1.1 christos { 43 1.1 christos if (col + strlen (info->demangling_style_name) >= 75) 44 1.1 christos { 45 1.1 christos fprintf (stream, "%.1s\n", cont); 46 1.1 christos col = fprintf (stream, "%.*s", lead_spaces, msg); 47 1.1 christos cont = ""; 48 1.1 christos } 49 1.1 christos col += fprintf (stream, "%s\"%s\"", cont, info->demangling_style_name); 50 1.1 christos cont = ", "; 51 1.1 christos ++info; 52 1.1 christos } 53 1.1 christos fprintf (stream, "\n"); 54 1.1 christos } 55