Example #1
0
File: symbol.c Project: 1587/ltp
/*
 * sym dump, but data is _always_ a string (print it)
 */
int sym_dump_s(SYM sym, int depth)
{

	register struct sym *se;	/* symbol entry */
	register int d;

	if (sym == NULL)
		return 0;

	if (sym->magic != SYM_MAGIC) {
		for (d = 0; d < depth; d++) {
			putchar('"');
			putchar(' ');
		}
		printf(" = %s\n", (char *)sym);
		return 0;
	}

	for (se = sym->sym; se != NULL; se = se->next) {
		for (d = 0; d < depth; d++) {
			putchar('"');
			putchar(' ');
		}
		printf("%s", se->key);
		if (((SYM) se->data)->magic == SYM_MAGIC) {
			putchar('\n');
			sym_dump_s((SYM) se->data, depth + 1);
		} else {
			printf("(%p) = %s (%p)\n", se->key, (char *)se->data,
			       se->data);
		}
	}
	return 0;
}
Example #2
0
int main(int argc, char *argv[])
{
	SYM tags;			/* tag data */
	int c;

	while ((c = getopt(argc, argv, "D:ehi")) != -1) {
		switch(c) {
			case 'i':
			    set_iscanner();
			    break;
			case 'D':
			    set_debug(optarg);
			    break;
			case 'e':
			    extended++;
			    break;
			case 'h':
			    fprintf(stderr, "%s [-e] [-i] [ -D area, level ] input-filenames\n",
				    argv[0]);
			    exit(0);
			default:
			    fprintf(stderr, "invalid argument, %c\n", c);
			    exit(1);
		}
	}

	lex_files(&argv[optind]);	/* I hope that argv[argc+1] == NULL */
	tags = sym_open(0, 0, 0);

	scanner(tags);
#ifdef DEBUGGING
	DEBUG(D_INIT, 1)
	sym_dump_s(tags, 0);
#endif
	reporter(tags);

	exit(0);
}