Mark Kettenis <[email protected]> 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