6 void env_param_cnt (char *pbuff
, int size
)
10 void env_param_list (char *pbuff
, int size
)
14 void env_param_strlist (char *pbuff
, int size
)
18 void env_param (char *pbuff
, int size
, int id
)
22 void env_last_retval (char *pbuff
, int size
)
26 void env_ppid (char *pbuff
, int size
)
28 sprintf(pbuff
, "%d", getppid());
31 void env_pid (char *pbuff
, int size
)
33 sprintf(pbuff
, "%d", getpid());
36 void env_var (char *pbuff
, int size
, char *pname
)
40 typedef struct __tag_ENVAR
{
44 void env_var_adv (char *pbuff
, int size
, ENVAR
*pstEnvar
)
48 void env_subscript (char *pbuff
, int size
, char *pname
, int len
)
52 void env_expr (char *pbuff
, int size
, char *pname
, int len
)
56 void env_expanssion (char *pbuff
, int size
, char *pname
, int len
)
63 int on_dollar_proc (int evt
, int token
, register const char *str
, register unsigned int len
, SRC_FILE_DESC
*psrcfile
)
65 #define BUFF_SIZE 1024
70 printf("################################################ DOLLAR\n");
74 c
= read_getc(psrcfile
);
76 if (c
== ' ' || c
== '\t' || c
== '\n' || c
== '\r')
78 read_ungetc(c
, psrcfile
);
79 str_buff
[str_idx
]=str
[0];
90 if (token
== T_GT
|| token
== T_LT
|| token
== T_DOLLAR
)
94 read_ungetc(c
, psrcfile
);
95 str_buff
[str_idx
]=str
[0];
102 psrcfile
->pstCurrTokenState
->state_token_str
= ")";
103 psrcfile
->pstCurrTokenState
->paired_token
= T_RBRACKET1
;
104 psrcfile
->pstCurrTokenState
->pfnPairTokenProc
= on_func_code_blk
;
105 STATE_SWITCH(psrcfile
, STATE_CODEBLOCK
);
126 else if ((c
>= 'a' && c
<= 'z') || (c
>= 'A' && c
<= 'Z') || c
== '_')
128 c
= read_token_str(psrcfile
);
129 env_var(buff
, BUFF_SIZE
, name
);
131 else if ((c
>= '0' && c
>= '9'))
133 env_var(buff
, BUFF_SIZE
, name
);
137 psrcfile
->pstCurrTokenState
->state_token_str
= "]";
138 psrcfile
->pstCurrTokenState
->paired_token
= T_RBRACKET2
;
140 psrcfile
->pstCurrTokenState
->pfnPairTokenProc
= on_func_code_blk
;
142 STATE_SWITCH(psrcfile
, STATE_EXPR
);
143 // XXX: on_expr_entry();
160 translate_char(str_buff
, str_idx
);
168 env_last_retval(buff
, BUFF_SIZE
);
172 env_pid(buff
, BUFF_SIZE
);
177 env_ppid(buff
, BUFF_SIZE
);
182 env_param_cnt(buff
, BUFF_SIZE
);
187 env_param_list(buff
, BUFF_SIZE
);
192 env_param_strlist(buff
, BUFF_SIZE
);
197 //printf("char '%c' followed after $ does not a valid combination.\n", c);
198 read_ungetc(c
, psrcfile
);
199 str_buff
[str_idx
]=str
[0];
206 //STATE_SWITCH(psrcfile, STATE_DOLLAR);
207 //SET_STATE_FLAG(psrcfile->pstCurrTokenState, TF_DOLLAR);