Christian Couder <christian.couder@xxxxxxxxx> writes: >> I am not sure I have understood this, which helper? > > I think Junio is talking about the following function: > > static enum signature_option parse_signature_option(const char *arg) > > he suggested above. Correct. > With this function the above code could be just something like: > > if (parse_signature_option(name) < 0) > continue; More or less so, but the first "if" in the helper I wrote in the message above is broken. It should be static enum signature_option parse_signature_option(const char *arg) { if (!*arg) return S_BARE; else if (!strcmp(arg, "signer")) return S_SIGNER; ... else return -1; } and then the code equivalent to the bunch of strcmp() would be if (skip_prefix(name, "signature", &name) && (!*name || *name++ == ':') && (0 <= parse_signature_option(name))) ; /* we have "signature"-related atom */ else continue; /* not a "signature" atom */ or something like that.