#include <stdio.h>
main(int argc, char **argv)
{
    int i = 0, j;
    char name[160];
    char *func_name;
    char *prefix;
    char *fname;
    FILE *header_file, *data_file;
    if (argc < 3)
	exit(1);

    prefix = argv[1];
    fname = argv[2];
    for (j = 0; prefix[j]; j++)
	prefix[j] = toupper(prefix[j]);

    sprintf(name, "%s.h", fname);
    header_file = fopen(name, "w");
    sprintf(name, "%s.t", fname);
    data_file = fopen(name, "w");

    fprintf(data_file, "static struct fkntab %s_fkntab[] =\n{\n", fname);

    for (gets(name); !feof(stdin); gets(name))
    {
	if (!*name || *name == '#')
	    continue;
	func_name = name;
	for (j = 0; name[j]; j++)
	{
	    if (name[j] == '\t' ||
		name[j] == ' ')
	    {
		name[j] = '\0';
		j++;
		while (name[j] || name[j] == ' ' || name[j] == '\t')
		    j++;
		if (name[j])
		    func_name = &name[j];
		break;
	    }
	}
	
	fprintf(data_file, "    {\"%s\", 0, 0},\n", func_name);
	for (j = 0; name[j]; j++)
	    name[j] = toupper(name[j]);
	fprintf(header_file, "#define %s_%s %d\n", prefix, name, i++);
    }

    fputs("    {NULL, 0, 0}\n};\n", data_file);
    exit(0);
}