#define eq(a, b)        (Strcmp(a, b) == 0)



struct wordent {
    Char   *word;
    struct wordent *prev;
    struct wordent *next;
};

/*
 * struktura zmiennych
 *
 * aliasy i zmienne sa przechowywane w drzewie AVT
 */
EXTERN struct varent {
    Char  **vec;                /* tablica slow ktore sa wartoscia  */
    Char   *v_name;             /* nazwa zmiennej/aliasu  */
    int     v_flags;            /* flagi */
    struct varent *v_link[3];   /* galezie nizej sa dokladnie zdefiniowane */
    int     v_bal;              /* jak "ciezkie" jest drezwo */
}       shvhed, aliases;        /*drzewo zmiennych/aliasow */

#define v_left          v_link[0] /*bardziej intuicyjne potrakowanie galezi*/
#define v_right         v_link[1]
#define v_parent        v_link[2]

#define adrof(v)        adrof1(v, &shvhed)  /*znajdujemy zmienna v wsrod
                                                zmiennych*/
#define varval(v)       value1(v, &shvhed)  /*zwraca wartosc zmiennej */

/*
 * The following are for interfacing redo substitution in
 * aliases to the lexical routines.
 */


/*
 * Historia komend
 *
 * Kazda lista historii zawiera rozszerzona liste slow
 * numer zdarzenia i jak latwo zauwazyc jest zorganizowana w kolejke
 */

EXTERN struct Hist {
    struct wordent Hlex;
    int     Hnum;
    int     Href;
    time_t  Htime;
    Char   *histline;
    struct Hist *Hnext;
}       Histlist;