if(!(e = hash_find(expansions, m->name))) {
error(0, "%s:%d: unknown expansion name '%s'",
m->filename, m->line, m->name);
if(!(e = hash_find(expansions, m->name))) {
error(0, "%s:%d: unknown expansion name '%s'",
m->filename, m->line, m->name);
return -1;
} else if(m->nargs < e->min) {
error(0, "%s:%d: expansion '%s' requires %d args, only %d given",
m->filename, m->line, m->name, e->min, m->nargs);
return -1;
} else if(m->nargs < e->min) {
error(0, "%s:%d: expansion '%s' requires %d args, only %d given",
m->filename, m->line, m->name, e->min, m->nargs);
return -1;
} else if(m->nargs > e->max) {
error(0, "%s:%d: expansion '%s' takes at most %d args, but %d given",
m->filename, m->line, m->name, e->max, m->nargs);
return -1;
} else if(m->nargs > e->max) {
error(0, "%s:%d: expansion '%s' takes at most %d args, but %d given",
m->filename, m->line, m->name, e->max, m->nargs);