Mark Kettenis <mark.kette...@xs4all.nl> writes: [...]
>> > - for (i = 0; kbdenc_tab[i].value; i++) >> > - printf("%s\n", kbdenc_tab[i].name); >> > + for (i = 0; i < encs->nencodings; i++) { >> > + n = &kbdenc_tab[0]; >> > + found = 0; >> > + encoding = encs->encodings[i]; >> > + while (n->value) { >> > + if (n->value == KB_ENCODING(encoding)) { >> > + printf("%s", n->name); >> > + found++; >> > + } >> > + n++; >> > + } >> >> This looks a lot like a for loop. > > Right. But there are some similar loops that are already written this > way. So I left it the way I wrote^H^H^H^H^Hcopied it. Feel free to > submite a separate patch that fixes this. Ah, I see. Here's the diff. Index: kbd_wscons.c =================================================================== RCS file: /cvs/src/sbin/kbd/kbd_wscons.c,v retrieving revision 1.31 diff -u -p -p -u -r1.31 kbd_wscons.c --- kbd_wscons.c 30 Sep 2016 12:07:23 -0000 1.31 +++ kbd_wscons.c 30 Sep 2016 14:55:03 -0000 @@ -100,27 +100,23 @@ kbd_show_enc(struct wskbd_encoding_data kbtype_tab[idx]); for (i = 0; i < encs->nencodings; i++) { - n = &kbdenc_tab[0]; found = 0; encoding = encs->encodings[i]; - while (n->value) { + for (n = &kbdenc_tab[0]; n->value; n++) { if (n->value == KB_ENCODING(encoding)) { printf("%s", n->name); found++; } - n++; } if (found == 0) printf("<encoding 0x%04x>", KB_ENCODING(encoding)); - n = &kbdvar_tab[0]; found = 0; variant = KB_VARIANT(encoding); - while (n->value) { + for (n = &kbdvar_tab[0]; n->value; n++) { if ((n->value & KB_VARIANT(encoding)) == n->value) { printf(".%s", n->name); variant &= ~n->value; } - n++; } if (variant != 0) printf(".<variant 0x%08x>", variant); @@ -248,11 +244,9 @@ kbd_set(char *name, int verbose) *b++ = *c++; *b = '\0'; v = 0; - n = &kbdvar_tab[0]; - while (n->value) { + for (n = &kbdvar_tab[0]; n->value; n++) { if (strcmp(n->name, buf) == 0) v = n->value; - n++; } if (v == 0) errx(1, "unknown variant %s", buf); -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE