printlist.c revision 92ed17828163bd22e8650252460319b94ef9aa74
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#include "gprof.h"
/*
* these are the lists of names:
* there is the list head and then the listname
* is a pointer to the list head
* (for ease of passing to stringlist functions).
*/
struct stringlist fhead = { 0, 0 };
struct stringlist *flist = &fhead;
struct stringlist Fhead = { 0, 0 };
struct stringlist *Flist = &Fhead;
struct stringlist ehead = { 0, 0 };
struct stringlist *elist = &ehead;
struct stringlist Ehead = { 0, 0 };
struct stringlist *Elist = &Ehead;
void
addlist(struct stringlist *listp, char *funcname)
{
struct stringlist *slp;
slp = malloc(sizeof (struct stringlist));
if (slp == NULL) {
(void) fprintf(stderr, "gprof: ran out room for printlist\n");
exit(1);
}
slp->next = listp->next;
slp->string = funcname;
listp->next = slp;
}
bool
onlist(struct stringlist *listp, char *funcname)
{
struct stringlist *slp;
for (slp = listp->next; slp; slp = slp->next) {
if (strcmp(slp->string, funcname) == 0)
return (TRUE);
if (funcname[0] == '_' &&
strcmp(slp->string, &funcname[1]) == 0)
return (TRUE);
}
return (FALSE);
}