doc/output.tex: Add a missing member reference in vtable initializer.
[sod] / lib / keyword.h
index 5b486bf..525b31f 100644 (file)
@@ -322,7 +322,8 @@ extern kw_unkhookfn *kw_unkhook;
     size_t nn;                                                         \
                                                                        \
     for (k = kwfirst; k; k = va_arg(*ap, const char *)) {              \
-      if (!strcmp(k, "kw.valist")) {                                   \
+      set##_KWSET(KWSET__ARGVA)                                                \
+      /*else*/ if (!strcmp(k, "kw.valist")) {                          \
        aap = va_arg(*ap, va_list *);                                   \
        kk = va_arg(*aap, const char *);                                \
        set##_kwparse(kw, kk, aap, 0, 0);                               \
@@ -330,35 +331,33 @@ extern kw_unkhookfn *kw_unkhook;
        vv = va_arg(*ap, const struct kwval *);                         \
        nn = va_arg(*ap, size_t);                                       \
        set##_kwparse(kw, 0, 0, vv, nn);                                \
-      }                                                                        \
-      set##_KWSET(KWSET__ARGVA)                                                \
-      else kw_unknown(#set, k);                                                \
+      } else kw_unknown(#set, k);                                      \
     }                                                                  \
                                                                        \
     while (n) {                                                                \
-      if (!strcmp(v->kw, "kw.valist")) {                               \
+      set##_KWSET(KWSET__ARGTAB)                                       \
+      /*else*/ if (!strcmp(v->kw, "kw.valist")) {                      \
        aap = *(va_list *const *)v->val;                                \
        kk = va_arg(*aap, const char *);                                \
        set##_kwparse(kw, kk, aap, 0, 0);                               \
       } else if (!strcmp(v->kw, "kw.tab")) {                           \
        t = (const struct kwtab *)v->val;                               \
        set##_kwparse(kw, 0, 0, t->v, t->n);                            \
-      }                                                                        \
-      set##_KWSET(KWSET__ARGTAB)                                       \
-      else kw_unknown(#set, v->kw);                                    \
+      } else kw_unknown(#set, v->kw);                                  \
       v++; n--;                                                                \
     }                                                                  \
   }
+
 #define KWSET__ARGVA(type, name, dflt)                                 \
-  else if (!strcmp(k, #name)) {                                                \
+  if (!strcmp(k, #name)) {                                             \
     kw->name##_suppliedp = 1;                                          \
     kw->name = va_arg(*ap, type);                                      \
-  }
+  } else
 #define KWSET__ARGTAB(type, name, dflt)                                        \
-  else if (!strcmp(v->kw, #name)) {                                    \
+  if (!strcmp(v->kw, #name)) {                                         \
     kw->name##_suppliedp = 1;                                          \
     kw->name = *(type const *)v->val;                                  \
-  }
+  } else
 
 /*----- Defining keyword-accepting functions ------------------------------*/