// SPDX-License-Identifier: GPL-2.0-only
static struct resword {
	const char *name;
	int token;
} keywords[] = {
	{ "EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW },
	{ "EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW },
	{ "EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW },
	{ "EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW },
	{ "EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW },
	{ "__asm", ASM_KEYW },
	{ "__asm__", ASM_KEYW },
	{ "__attribute", ATTRIBUTE_KEYW },
	{ "__attribute__", ATTRIBUTE_KEYW },
	{ "__const", CONST_KEYW },
	{ "__const__", CONST_KEYW },
	{ "__extension__", EXTENSION_KEYW },
	{ "__inline", INLINE_KEYW },
	{ "__inline__", INLINE_KEYW },
	{ "__signed", SIGNED_KEYW },
	{ "__signed__", SIGNED_KEYW },
	{ "__typeof", TYPEOF_KEYW },
	{ "__typeof__", TYPEOF_KEYW },
	{ "__volatile", VOLATILE_KEYW },
	{ "__volatile__", VOLATILE_KEYW },
	{ "__builtin_va_list", VA_LIST_KEYW },

	// According to rth, c99 defines "_Bool", __restrict", __restrict__", "restrict".  KAO
	{ "_Bool", BOOL_KEYW },
	{ "_restrict", RESTRICT_KEYW },
	{ "__restrict__", RESTRICT_KEYW },
	{ "restrict", RESTRICT_KEYW },
	{ "asm", ASM_KEYW },

	// attribute commented out in modutils 2.4.2.  People are using 'attribute' as a
	// field name which breaks the genksyms parser.  It is not a gcc keyword anyway.
	// KAO. },
	// { "attribute", ATTRIBUTE_KEYW },

	{ "auto", AUTO_KEYW },
	{ "char", CHAR_KEYW },
	{ "const", CONST_KEYW },
	{ "double", DOUBLE_KEYW },
	{ "enum", ENUM_KEYW },
	{ "extern", EXTERN_KEYW },
	{ "float", FLOAT_KEYW },
	{ "inline", INLINE_KEYW },
	{ "int", INT_KEYW },
	{ "long", LONG_KEYW },
	{ "register", REGISTER_KEYW },
	{ "short", SHORT_KEYW },
	{ "signed", SIGNED_KEYW },
	{ "static", STATIC_KEYW },
	{ "struct", STRUCT_KEYW },
	{ "typedef", TYPEDEF_KEYW },
	{ "typeof", TYPEOF_KEYW },
	{ "union", UNION_KEYW },
	{ "unsigned", UNSIGNED_KEYW },
	{ "void", VOID_KEYW },
	{ "volatile", VOLATILE_KEYW },
};

#define NR_KEYWORDS (sizeof(keywords)/sizeof(struct resword))

static int is_reserved_word(register const char *str, register unsigned int len)
{
	int i;
	for (i = 0; i < NR_KEYWORDS; i++) {
		struct resword *r = keywords + i;
		int l = strlen(r->name);
		if (len == l && !memcmp(str, r->name, len))
			return r->token;
	}
	return -1;
}
