/*
* This file is part of cparser.
- * Copyright (C) 2007-2009 Matthias Braun <matze@braunis.de>
- *
- * 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 2
- * of the License, 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., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * Copyright (C) 2012 Matthias Braun <matze@braunis.de>
*/
#include <config.h>
-#include <errno.h>
#include <string.h>
#include "adt/strutil.h"
#include "adt/xmalloc.h"
#include "adt/pset_new.h"
#include "separator_t.h"
+#include "symbol_table.h"
typedef struct output_limit {
const char *filename;
static output_limit *output_limits;
static const char *libname;
-static bool is_system_header(const char *fname)
-{
- if (strstart(fname, "/usr/include"))
- return true;
- if (fname == builtin_source_position.input_name)
- return true;
- return false;
-}
-
static const char *fix_builtin_names(const char *name)
{
- if (streq(name, "class")) {
- return "_class";
- } else if (streq(name, "this")) {
- return "_this";
- } else if (streq(name, "public")) {
- return "_public";
- } else if (streq(name, "protected")) {
- return "_protected";
- } else if (streq(name, "private")) {
- return "_private";
- } else if (streq(name, "final")) {
- return "_final";
- }
+#define FIX(x) if (streq(name, x)) return "_" x
+ FIX("class");
+ FIX("final");
+ FIX("private");
+ FIX("protected");
+ FIX("public");
+ FIX("this");
/* TODO put all reserved names here */
+#undef FIX
return name;
}
/* read the avoid list */
FILE *avoid = fopen("avoid.config", "r");
if (avoid != NULL) {
- while (!feof(avoid)) {
+ for (;;) {
char buf[1024];
char *res = fgets(buf, sizeof(buf), avoid);
if (res == NULL)
for ( ; entity != NULL; entity = entity->base.next) {
if (entity->kind != ENTITY_FUNCTION)
continue;
- const char *input_name = entity->base.source_position.input_name;
- if (is_system_header(input_name))
+ if (entity->base.pos.is_system_header)
continue;
if (entity->function.elf_visibility != ELF_VISIBILITY_DEFAULT)
continue;
if (output_limits != NULL) {
- bool in_limits = false;
+ bool in_limits = false;
+ char const *const input_name = entity->base.pos.input_name;
for (output_limit *limit = output_limits; limit != NULL;
limit = limit->next) {
if (streq(limit->filename, input_name)) {