* mktable.c
*
*/
-static char *mk_mapname(char modifier)
+static char *
+mk_mapname(char modifier)
{
static char *modifiers[8] = {
"shift", "altgr", "ctrl", "alt", "shl", "shr", "ctl", "ctr"
return buf;
}
-static void outchar(unsigned char c, int comma)
+static void
+outchar(FILE *fd, unsigned char c, int comma)
{
- printf("'");
- printf((c == '\'' || c == '\\') ? "\\%c" : isgraph(c) ? "%c"
+ fprintf(fd, "'");
+ fprintf(fd, (c == '\'' || c == '\\') ? "\\%c" : isgraph(c) ? "%c"
: "\\%03o", c);
- printf(comma ? "', " : "'");
+ fprintf(fd, comma ? "', " : "'");
}
-static void attr_noreturn mktable(void)
+static void
+mktable(FILE *fd)
{
int j;
unsigned int i, imax;
unsigned int maxfunc;
unsigned int keymap_count = 0;
- printf(
+ fprintf(fd,
/* not to be translated... */
- "/* Do not edit this file! It was automatically generated by */\n");
- printf
- ("/* loadkeys --mktable defkeymap.map > defkeymap.c */\n\n");
- printf("#include <linux/types.h>\n");
- printf("#include <linux/keyboard.h>\n");
- printf("#include <linux/kd.h>\n\n");
+ "/* Do not edit this file! It was automatically generated by */\n");
+ fprintf(fd, "/* loadkeys --mktable defkeymap.map > defkeymap.c */\n\n");
+ fprintf(fd, "#include <linux/types.h>\n");
+ fprintf(fd, "#include <linux/keyboard.h>\n");
+ fprintf(fd, "#include <linux/kd.h>\n\n");
for (i = 0; i < MAX_NR_KEYMAPS; i++)
if (key_map[i]) {
keymap_count++;
if (i)
- printf("static ");
- printf("u_short %s_map[NR_KEYS] = {", mk_mapname(i));
+ fprintf(fd, "static ");
+ fprintf(fd, "u_short %s_map[NR_KEYS] = {", mk_mapname(i));
for (j = 0; j < NR_KEYS; j++) {
if (!(j % 8))
- printf("\n");
- printf("\t0x%04x,", U((key_map[i])[j]));
+ fprintf(fd, "\n");
+ fprintf(fd, "\t0x%04x,", U((key_map[i])[j]));
}
- printf("\n};\n\n");
+ fprintf(fd, "\n};\n\n");
}
for (imax = MAX_NR_KEYMAPS - 1; imax > 0; imax--)
if (key_map[imax])
break;
- printf("ushort *key_maps[MAX_NR_KEYMAPS] = {");
+ fprintf(fd, "ushort *key_maps[MAX_NR_KEYMAPS] = {");
for (i = 0; i <= imax; i++) {
- printf((i % 4) ? " " : "\n\t");
+ fprintf(fd, (i % 4) ? " " : "\n\t");
if (key_map[i])
- printf("%s_map,", mk_mapname(i));
+ fprintf(fd, "%s_map,", mk_mapname(i));
else
- printf("0,");
+ fprintf(fd, "0,");
}
if (imax < MAX_NR_KEYMAPS - 1)
- printf("\t0");
- printf("\n};\n\nunsigned int keymap_count = %d;\n\n", keymap_count);
+ fprintf(fd, "\t0");
+ fprintf(fd, "\n};\n\nunsigned int keymap_count = %d;\n\n", keymap_count);
/* uglified just for xgettext - it complains about nonterminated strings */
- printf("/*\n"
+ fprintf(fd,
+ "/*\n"
" * Philosophy: most people do not define more strings, but they who do\n"
" * often want quite a lot of string space. So, we statically allocate\n"
" * the default and allocate dynamically in chunks of 512 bytes.\n"
if (func_table[maxfunc - 1])
break;
- printf("char func_buf[] = {\n");
+ fprintf(fd, "char func_buf[] = {\n");
for (i = 0; i < maxfunc; i++) {
ptr = func_table[i];
if (ptr) {
- printf("\t");
+ fprintf(fd, "\t");
for (; *ptr; ptr++)
- outchar(*ptr, 1);
- printf("0, \n");
+ outchar(fd, *ptr, 1);
+ fprintf(fd, "0, \n");
}
}
if (!maxfunc)
- printf("\t0\n");
- printf("};\n\n");
+ fprintf(fd, "\t0\n");
+ fprintf(fd, "};\n\n");
- printf("char *funcbufptr = func_buf;\n"
+ fprintf(fd,
+ "char *funcbufptr = func_buf;\n"
"int funcbufsize = sizeof(func_buf);\n"
"int funcbufleft = 0; /* space left */\n" "\n");
- printf("char *func_table[MAX_NR_FUNC] = {\n");
+ fprintf(fd, "char *func_table[MAX_NR_FUNC] = {\n");
for (i = 0; i < maxfunc; i++) {
if (func_table[i])
- printf("\tfunc_buf + %ld,\n",
+ fprintf(fd, "\tfunc_buf + %ld,\n",
(long)(func_table[i] - func_buf));
else
- printf("\t0,\n");
+ fprintf(fd, "\t0,\n");
}
if (maxfunc < MAX_NR_FUNC)
- printf("\t0,\n");
- printf("};\n");
+ fprintf(fd, "\t0,\n");
+ fprintf(fd, "};\n");
#ifdef KDSKBDIACRUC
if (prefer_unicode) {
- printf("\nstruct kbdiacruc accent_table[MAX_DIACR] = {\n");
+ fprintf(fd, "\nstruct kbdiacruc accent_table[MAX_DIACR] = {\n");
for (i = 0; i < accent_table_size; i++) {
- printf("\t{");
- outchar(accent_table[i].diacr, 1);
- outchar(accent_table[i].base, 1);
- printf("0x%04x},", accent_table[i].result);
+ fprintf(fd, "\t{");
+ outchar(fd, accent_table[i].diacr, 1);
+ outchar(fd, accent_table[i].base, 1);
+ fprintf(fd, "0x%04x},", accent_table[i].result);
if (i % 2)
- printf("\n");
+ fprintf(fd, "\n");
}
if (i % 2)
- printf("\n");
- printf("};\n\n");
+ fprintf(fd, "\n");
+ fprintf(fd, "};\n\n");
} else
#endif
{
- printf("\nstruct kbdiacr accent_table[MAX_DIACR] = {\n");
+ fprintf(fd, "\nstruct kbdiacr accent_table[MAX_DIACR] = {\n");
for (i = 0; i < accent_table_size; i++) {
- printf("\t{");
- outchar(accent_table[i].diacr, 1);
- outchar(accent_table[i].base, 1);
- outchar(accent_table[i].result, 0);
- printf("},");
+ fprintf(fd, "\t{");
+ outchar(fd, accent_table[i].diacr, 1);
+ outchar(fd, accent_table[i].base, 1);
+ outchar(fd, accent_table[i].result, 0);
+ fprintf(fd, "},");
if (i % 2)
- printf("\n");
+ fprintf(fd, "\n");
}
if (i % 2)
- printf("\n");
- printf("};\n\n");
+ fprintf(fd, "\n");
+ fprintf(fd, "};\n\n");
}
- printf("unsigned int accent_table_size = %d;\n", accent_table_size);
-
- freekeys();
-
- exit(0);
+ fprintf(fd, "unsigned int accent_table_size = %d;\n", accent_table_size);
}
static void attr_noreturn bkeymap(void)
if (optb)
bkeymap();
- if (optm)
- mktable();
+ if (optm) {
+ mktable(stdout);
+ freekeys();
+ exit(EXIT_SUCCESS);
+ }
loadkeys(fd, kbd_mode);
* mktable.c
*
*/
-static char *mk_mapname(char modifier)
+static char *
+mk_mapname(char modifier)
{
static char *modifiers[8] = {
"shift", "altgr", "ctrl", "alt", "shl", "shr", "ctl", "ctr"
return buf;
}
-static void outchar(unsigned char c, int comma)
+static void
+outchar(FILE *fd, unsigned char c, int comma)
{
- printf("'");
- printf((c == '\'' || c == '\\') ? "\\%c" : isgraph(c) ? "%c"
+ fprintf(fd, "'");
+ fprintf(fd, (c == '\'' || c == '\\') ? "\\%c" : isgraph(c) ? "%c"
: "\\%03o", c);
- printf(comma ? "', " : "'");
+ fprintf(fd, comma ? "', " : "'");
}
-static void attr_noreturn mktable(void)
+static void
+mktable(FILE *fd)
{
int j;
unsigned int i, imax;
unsigned int maxfunc;
unsigned int keymap_count = 0;
- printf(
+ fprintf(fd,
/* not to be translated... */
- "/* Do not edit this file! It was automatically generated by */\n");
- printf
- ("/* loadkeys --mktable defkeymap.map > defkeymap.c */\n\n");
- printf("#include <linux/types.h>\n");
- printf("#include <linux/keyboard.h>\n");
- printf("#include <linux/kd.h>\n\n");
+ "/* Do not edit this file! It was automatically generated by */\n");
+ fprintf(fd, "/* loadkeys --mktable defkeymap.map > defkeymap.c */\n\n");
+ fprintf(fd, "#include <linux/types.h>\n");
+ fprintf(fd, "#include <linux/keyboard.h>\n");
+ fprintf(fd, "#include <linux/kd.h>\n\n");
for (i = 0; i < MAX_NR_KEYMAPS; i++)
if (key_map[i]) {
keymap_count++;
if (i)
- printf("static ");
- printf("u_short %s_map[NR_KEYS] = {", mk_mapname(i));
+ fprintf(fd, "static ");
+ fprintf(fd, "u_short %s_map[NR_KEYS] = {", mk_mapname(i));
for (j = 0; j < NR_KEYS; j++) {
if (!(j % 8))
- printf("\n");
- printf("\t0x%04x,", U((key_map[i])[j]));
+ fprintf(fd, "\n");
+ fprintf(fd, "\t0x%04x,", U((key_map[i])[j]));
}
- printf("\n};\n\n");
+ fprintf(fd, "\n};\n\n");
}
for (imax = MAX_NR_KEYMAPS - 1; imax > 0; imax--)
if (key_map[imax])
break;
- printf("ushort *key_maps[MAX_NR_KEYMAPS] = {");
+ fprintf(fd, "ushort *key_maps[MAX_NR_KEYMAPS] = {");
for (i = 0; i <= imax; i++) {
- printf((i % 4) ? " " : "\n\t");
+ fprintf(fd, (i % 4) ? " " : "\n\t");
if (key_map[i])
- printf("%s_map,", mk_mapname(i));
+ fprintf(fd, "%s_map,", mk_mapname(i));
else
- printf("0,");
+ fprintf(fd, "0,");
}
if (imax < MAX_NR_KEYMAPS - 1)
- printf("\t0");
- printf("\n};\n\nunsigned int keymap_count = %d;\n\n", keymap_count);
+ fprintf(fd, "\t0");
+ fprintf(fd, "\n};\n\nunsigned int keymap_count = %d;\n\n", keymap_count);
/* uglified just for xgettext - it complains about nonterminated strings */
- printf("/*\n"
+ fprintf(fd,
+ "/*\n"
" * Philosophy: most people do not define more strings, but they who do\n"
" * often want quite a lot of string space. So, we statically allocate\n"
" * the default and allocate dynamically in chunks of 512 bytes.\n"
if (func_table[maxfunc - 1])
break;
- printf("char func_buf[] = {\n");
+ fprintf(fd, "char func_buf[] = {\n");
for (i = 0; i < maxfunc; i++) {
ptr = func_table[i];
if (ptr) {
- printf("\t");
+ fprintf(fd, "\t");
for (; *ptr; ptr++)
- outchar(*ptr, 1);
- printf("0, \n");
+ outchar(fd, *ptr, 1);
+ fprintf(fd, "0, \n");
}
}
if (!maxfunc)
- printf("\t0\n");
- printf("};\n\n");
+ fprintf(fd, "\t0\n");
+ fprintf(fd, "};\n\n");
- printf("char *funcbufptr = func_buf;\n"
+ fprintf(fd,
+ "char *funcbufptr = func_buf;\n"
"int funcbufsize = sizeof(func_buf);\n"
"int funcbufleft = 0; /* space left */\n" "\n");
- printf("char *func_table[MAX_NR_FUNC] = {\n");
+ fprintf(fd, "char *func_table[MAX_NR_FUNC] = {\n");
for (i = 0; i < maxfunc; i++) {
if (func_table[i])
- printf("\tfunc_buf + %ld,\n",
+ fprintf(fd, "\tfunc_buf + %ld,\n",
(long)(func_table[i] - func_buf));
else
- printf("\t0,\n");
+ fprintf(fd, "\t0,\n");
}
if (maxfunc < MAX_NR_FUNC)
- printf("\t0,\n");
- printf("};\n");
+ fprintf(fd, "\t0,\n");
+ fprintf(fd, "};\n");
#ifdef KDSKBDIACRUC
if (prefer_unicode) {
- printf("\nstruct kbdiacruc accent_table[MAX_DIACR] = {\n");
+ fprintf(fd, "\nstruct kbdiacruc accent_table[MAX_DIACR] = {\n");
for (i = 0; i < accent_table_size; i++) {
- printf("\t{");
- outchar(accent_table[i].diacr, 1);
- outchar(accent_table[i].base, 1);
- printf("0x%04x},", accent_table[i].result);
+ fprintf(fd, "\t{");
+ outchar(fd, accent_table[i].diacr, 1);
+ outchar(fd, accent_table[i].base, 1);
+ fprintf(fd, "0x%04x},", accent_table[i].result);
if (i % 2)
- printf("\n");
+ fprintf(fd, "\n");
}
if (i % 2)
- printf("\n");
- printf("};\n\n");
+ fprintf(fd, "\n");
+ fprintf(fd, "};\n\n");
} else
#endif
{
- printf("\nstruct kbdiacr accent_table[MAX_DIACR] = {\n");
+ fprintf(fd, "\nstruct kbdiacr accent_table[MAX_DIACR] = {\n");
for (i = 0; i < accent_table_size; i++) {
- printf("\t{");
- outchar(accent_table[i].diacr, 1);
- outchar(accent_table[i].base, 1);
- outchar(accent_table[i].result, 0);
- printf("},");
+ fprintf(fd, "\t{");
+ outchar(fd, accent_table[i].diacr, 1);
+ outchar(fd, accent_table[i].base, 1);
+ outchar(fd, accent_table[i].result, 0);
+ fprintf(fd, "},");
if (i % 2)
- printf("\n");
+ fprintf(fd, "\n");
}
if (i % 2)
- printf("\n");
- printf("};\n\n");
+ fprintf(fd, "\n");
+ fprintf(fd, "};\n\n");
}
- printf("unsigned int accent_table_size = %d;\n", accent_table_size);
-
- freekeys();
-
- exit(0);
+ fprintf(fd, "unsigned int accent_table_size = %d;\n", accent_table_size);
}
static void attr_noreturn bkeymap(void)
if (optb)
bkeymap();
- if (optm)
- mktable();
+ if (optm) {
+ mktable(stdout);
+ freekeys();
+ exit(EXIT_SUCCESS);
+ }
loadkeys(fd, kbd_mode);