/* * $ substitute one word, for i/o redirection */ Char * Dfix1(Char *cp) { Char *Dv[2]; if (noexec) return (0); Dv[0] = cp; Dv[1] = NULL; Dfix2(Dv); if (gargc != 1) { setname(vis_str(cp)); stderror(ERR_NAME | ERR_AMBIG); } cp = Strsave(gargv[0]); blkfree(gargv), gargv = 0; return (cp); }
/* * $ substitute one word, for i/o redirection */ Char * Dfix1(Char *cp) { Char *Dv[2], **expanded; if (noexec) return (0); Dv[0] = cp; Dv[1] = NULL; expanded = Dfix2(Dv); if (expanded[0] == NULL || expanded[1] != NULL) { blkfree(expanded); setname(short2str(cp)); stderror(ERR_NAME | ERR_AMBIG); } cp = Strsave(expanded[0]); blkfree(expanded); return (cp); }
/* * Fix up the $ expansions and quotations in the * argument list to command t. */ void Dfix(struct command *t) { Char **pp; Char *p; if (noexec) return; /* Note that t_dcom isn't trimmed thus !...:q's aren't lost */ for (pp = t->t_dcom; (p = *pp++) != NULL;) for (; *p; p++) { if (cmap(*p, _DOL | QUOTES)) { /* $, \, ', ", ` */ Dfix2(t->t_dcom); /* found one */ blkfree(t->t_dcom); t->t_dcom = gargv; gargv = 0; return; } } }
/* * $ substitute one word, for i/o redirection */ tchar * Dfix1(tchar *cp) { tchar *Dv[2]; #ifdef TRACE tprintf("TRACE- Dfix1()\n"); #endif if (noexec) return (0); Dv[0] = cp; Dv[1] = NOSTR; Dfix2(Dv); if (gargc != 1) { setname(cp); bferr("Ambiguous"); } cp = savestr(gargv[0]); blkfree(gargv), gargv = 0; return (cp); }
/* * Fix up the $ expansions and quotations in the * argument list to command t. */ void Dfix(struct command *t) { tchar **pp; tchar *p; #ifdef TRACE tprintf("TRACE- Dfix()\n"); #endif if (noexec) return; /* Note that t_dcom isn't trimmed thus !...:q's aren't lost */ for (pp = t->t_dcom; p = *pp++; ) while (*p) if (cmap(*p++, _DOL|QUOTES)) { /* $, \, ', ", ` */ Dfix2(t->t_dcom); /* found one */ blkfree(t->t_dcom); t->t_dcom = gargv; gargv = 0; return; } }