72 char *outname, *inname;
74 did32 stdinput, stdoutput;
92 fprintf(dev,
"\n\n%s%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
108 len =
read(dev, buf,
sizeof(buf));
126 ntok =
lexan(buf, len, tokbuf, &tlen, tok, toktyp);
155 outname = inname =
NULL;
156 if ( (ntok >=3) && ( (toktyp[ntok-2] ==
SH_TOK_LESS)
163 inname = &tokbuf[tok[ntok-1]];
165 outname = &tokbuf[tok[ntok-1]];
172 if ( (ntok >=3) && ( (toktyp[ntok-2] ==
SH_TOK_LESS)
179 if (inname !=
NULL) {
183 inname = &tokbuf[tok[ntok-1]];
185 if (outname !=
NULL) {
189 outname = &tokbuf[tok[ntok-1]];
197 for (i=0; i<ntok; i++) {
202 if ((ntok == 0) || (i < ntok)) {
207 stdinput = stdoutput = dev;
211 for (j = 0; j <
ncmd; j++) {
223 if (diff || (*cmp !=
NULLCH)) {
233 fprintf(dev,
"command %s not found\n", tokbuf);
240 if (inname !=
NULL || outname !=
NULL || backgnd){
246 for (i=0; i<ntok; i++) {
247 args[i] = &tokbuf[tok[i]];
252 if ((*
cmdtab[j].cfunc)(ntok, args)
262 if (inname !=
NULL) {
269 if (outname !=
NULL) {
271 if (stdoutput ==
SYSERR) {
283 cmdtab[j].cname, 2, ntok, &tmparg);
288 (
addargs(child, ntok, tok, tlen, tokbuf, &tmparg)
303 while (msg != child) {
#define NULL
連結リスト用のNULLポインタ
#define F_CTL_TRUNC
ファイルを切り捨てる。
#define SHELL_EXITMSG
XINUシェル終了時のメッセージ
#define SH_TOK_GREATER
大なり'>'トークン
#define SHELL_BAN5
シェル起動時のバナー その5
syscall read(did32, char *, uint32)
#define EOF
ファイルの終端(End of File)に達した場合(読み込み処理に用いる)
#define SHELL_CMDPRIO
コマンドに対するプロセス優先度
int32 lexan(char *, int32, char *, int32 *, int32[], int32[])
syscall control(did32, int32, int32, int32)
umsg32 receive(void)
メッセージの受信を待ち、受信後にreceive()の呼び出し者にメッセージを返す。
#define SH_TOK_OTHER
その他('&'、'<'、'>以外')のトークン(例:英数字文字列)
#define SHELL_INERRMSG
インプットとして用いるファイルが開けなかった場合のエラーメッセージ
#define SHELL_BAN0
シェル起動時のバナー その0(文字色を赤くするANSIエスケープシーケンス)
#define SHELL_BAN6
シェル起動時のバナー その6
#define SHELL_EXIT
XINUシェルを終了させる返り値
#define SHELL_BAN7
シェル起動時のバナー その7
#define SHELL_CMDSTK
コマンドを実行するプロセスに対するスタックサイズ
status addargs(pid32, int32, int32[], int32, char *, void *)
XINUシェルが作成したコマンドプロセスのスタックに引数argv(任意個)のローカルコピーを追加する。 ...
#define FALSE
Boolean False(0)
#define SH_NEWLINE
LF改行コード' '(字句解析時に用いる)
#define TRUE
Boolean True(1)
umsg32 recvclr(void)
受信メッセージをクリアし、待機している場合はメッセージを返す。
#define SHELL_BAN3
シェル起動時のバナー その3
#define SHELL_BAN1
シェル起動時のバナー その1
#define SHELL_MAXTOK
一行あたりの最大トークン数
#define SHELL_PROMPT
コマンドプロンプト
int16 prdesc[NDESC]
プロセス用のデバイスディスクリプタ
int int32
符号あり32ビット整数(int)
pri16 resume(pid32)
プロセスを休止状態(サスペンド)からREADY状態に遷移させる。
pid32 create(void *, uint32, pri16, char *, uint32,...)
関数の実行を開始するプロセスを作成する。
#define SHELL_STRTMSG
Welcomeメッセージ
#define SHELL_CREATMSG
コマンド実行時にプロセスを生成できなかった場合のエラーメッセージ
struct procent proctab[]
プロセステーブル。
#define SHELL_BGERRMSG
I/Oリダイレクトできなかった場合もしくはバックグラウンドのXINUシェルビルトインコマンドエラー用のメッセ...
int32 fprintf(int, char *,...)
#define SH_TOK_AMPER
アンパサンド'&'トークン
syscall open(did32, char *, char *)
#define SHELL_BAN2
シェル起動時のバナー その2
#define SHELL_BAN4
シェル起動時のバナー その4
#define SHELL_OUTERRMSG
アウトプットとして用いるファイルが開けなかった場合のエラーメッセージ
const struct cmdent cmdtab[]
XINUシェルが提供するコマンドを管理する配列
uint32 ncmd
XINUシェルが提供するコマンドの数
#define SHELL_SYNERRMSG
シンタックスエラー時のメッセージ
#define NULLCH
NULL文字(NULL終端)
#define SHELL_BUFLEN
インプットバッファの長さ
#define SHELL_BAN9
シェル起動時のバナー その9(文字色をデフォルトに戻すANSIエスケープシーケンス)
#define SHELL_BAN8
シェル起動時のバナー その8
#define SH_TOK_LESS
小なり'<'トークン