Beispiel #1
0
static void
put_syms(int type, const char *tag, int lno, const char *path, const char *line_image, void *arg)
{
	const struct put_func_data *data = arg;
	GTOP *gtop;
	const char *p;

	/*
	 * sanity checks
	 * These checks are required, because there is no telling what kind of string
	 * comes as 'a symbol' from external plug-in parsers.
	 */
	for (p = tag; *p; p++) {
		if (isspace(*p)) {
			if (wflag)
				warning("symbol name includs a space character. (Ignored) [+%d %s]", lno, path);
			return;
		}
	}
	if (p == tag) {
		if (wflag)
			warning("symbol name is null. (Ignored) [+%d %s]", lno, path);
		return;
	}
	if (p - tag >= IDENTLEN) {
		if (wflag)
			warning("symbol name is too long. (Ignored) [+%d %s]", lno, path);
		return;
	}
	switch (type) {
	case PARSER_DEF:
		gtop = data->gtop[GTAGS];
		break;
	case PARSER_REF_SYM:
		gtop = data->gtop[GRTAGS];
		if (gtop == NULL)
			return;
		break;
	default:
		return;
	}
	gtags_put_using(gtop, tag, lno, data->fid, line_image);
}
Beispiel #2
0
static void
put_syms(int type, const char *tag, int lno, const char *path, const char *line_image, void *arg)
{
	const struct put_func_data *data = arg;
	GTOP *gtop;

	switch (type) {
	case PARSER_DEF:
		gtop = data->gtop[GTAGS];
		break;
	case PARSER_REF_SYM:
		gtop = data->gtop[GRTAGS];
		if (gtop == NULL)
			return;
		break;
	default:
		return;
	}
	gtags_put_using(gtop, tag, lno, data->fid, line_image);
}