|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T g
Length: 2339 (0x923) Types: TextFile Names: »g++filt.c«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89 └─⟦6f889378a⟧ »./g++-1.36.1.tar.Z« └─⟦3aa9a3deb⟧ └─⟦this⟧ »g++-1.36.1/g++filt.c«
/* Demangler filter for GNU C++ Copyright (C) 1989 Free Software Foundation, Inc. written by James Clark (jjc@jclark.uucp) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <stdio.h> #include <string.h> #include <ctype.h> char *malloc (); char *realloc (); #ifndef __STDC__ #define const #endif #ifdef __STDC__ extern char *cplus_demangle (const char *); #else extern char *cplus_demangle (); #endif void fatal (); static char *prog_name; #define SYMBOL_MAX 1024 #define SYMBOL_CHAR(c) (isascii(c) && (isalnum(c) || (c) == '_' || (c) == '$')) int main (argc, argv) int argc; char **argv; { char buf[SYMBOL_MAX+1]; int c; prog_name = argv[0]; c = getchar (); while (c != EOF) { int i = 0; while (c != EOF && !SYMBOL_CHAR (c)) { putchar (c); c = getchar (); } while (i < SYMBOL_MAX && c != EOF && SYMBOL_CHAR (c)) { buf[i++] = c; c = getchar (); } buf[i] = '\0'; if (i == SYMBOL_MAX) { fputs (buf, stdout); while (c != EOF && SYMBOL_CHAR (c)) { putchar (c); c = getchar (); } } else { char *result; if (i > 0 && (result = cplus_demangle (buf)) != NULL) { fputs (result, stdout); free (result); } else fputs (buf, stdout); } } return 0; } char * xmalloc (n) int n; { char *tem = malloc (n); if (tem == NULL) fatal ("out of memory"); return tem; } char * xrealloc (p, n) char *p; int n; { char *tem = realloc (p, n); if (tem == NULL) fatal ("out of memory"); return tem; } void fatal (message) const char *message; { fprintf (stderr, "%s: %s\n", prog_name, message); exit (1); }