/*ARGSUSED*/ void dowhich(Char **v, struct command *c) { struct wordent lexw[3]; struct varent *vp; lexw[0].next = &lexw[1]; lexw[1].next = &lexw[2]; lexw[2].next = &lexw[0]; lexw[0].prev = &lexw[2]; lexw[1].prev = &lexw[0]; lexw[2].prev = &lexw[1]; lexw[0].word = STRNULL; lexw[2].word = STRret; while (*++v) { if ((vp = adrof1(*v, &aliases)) != NULL) { (void)fprintf(cshout, "%s: \t aliased to ", vis_str(*v)); blkpr(cshout, vp->vec); (void)fputc('\n', cshout); set(STRstatus, Strsave(STR0)); } else { lexw[1].word = *v; set(STRstatus, Strsave(tellmewhat(lexw, NULL) ? STR0 : STR1)); } } }
/* The dowhich() is by: * Andreas Luik <*****@*****.**> * I S A GmbH - Informationssysteme fuer computerintegrierte Automatisierung * Azenberstr. 35 * D-7000 Stuttgart 1 * West-Germany * Thanks!! */ int cmd_expand(Char *cmd, Char **str) { struct wordent lexp[3]; struct varent *vp; int rv = TRUE; lexp[0].next = &lexp[1]; lexp[1].next = &lexp[2]; lexp[2].next = &lexp[0]; lexp[0].prev = &lexp[2]; lexp[1].prev = &lexp[0]; lexp[2].prev = &lexp[1]; lexp[0].word = STRNULL; lexp[2].word = STRret; if ((vp = adrof1(cmd, &aliases)) != NULL && vp->vec != NULL) { if (str == NULL) { xprintf(CGETS(22, 1, "%S: \t aliased to "), cmd); blkpr(vp->vec); xputchar('\n'); } else *str = blkexpand(vp->vec); } else { lexp[1].word = cmd; rv = tellmewhat(lexp, str); } return rv; }