[so] Lamuriri ...

Octavian Purdila so@cursuri.cs.pub.ro
Mon, 1 Nov 2004 12:16:37 +0200


On Monday 01 November 2004 11:15, Daniel Avieritei wrote:
> typedef struct simple_command {
>         word_t *in, *out, *err;
>         word_t *words;
>         int builtin;
> } simple_command_t;
>  in care campurile in, out, err indica fisierul in care / din care trebuie
> redirectat stdin, stderr (probabil s-a vrut sa fie stdout aici) si
> respectiv stderr, campul builtin specifica ca aceasta comanda este una
> builtin (cd sau exit), iar campul words contine comanda de executat.
>
> Shell-ul trebuie de asemenea sa suporte si urmatorii operatori de
> redirectare: "> fisier" pentru redirectarea stdout-ului in fisier ---> deci
> tb sa am un smcd->out (diferit de NULL samd)? "2> fisier" pentru
> redirectarea stderr-ului in fisier ---> deci tb sa am un smcd->err ? "&>
> fisier" pentru redirectarea stdout-ului si a stderr-ului in fisier --->
> deci tb sa am un smcd->out si un smcd->err? "< fisier pentru redirectarea
> stdin-ului din fisier ---> deci tb sa am un smcd->in ?
>

Da. 

> Pentru cazul cu &>, scmd->out si scmd->err sunt aceleasi insa tb sa fie
> amandoua acolo ca sa ne putem da seama in ce caz ne incadram, nu? (//quote
> from parser.y
> simple_command  REDIRECT_OE separator word { /*caz&>*/
>   $1->err=$1->out=$4;
> )
>

Daca intrebarea este: "daca scmd->out si scmd->err sunt aceleasi inseamna ca 
avem &>", raspunsul este da. La implementare o sa vedeti insa ca nu aveti 
nevoie de aceasta comparatie.

tavi