亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? if.c

?? Unix 第 6 版的 sh 手冊和源碼
?? C
字號:
/*
 * if exprression cmd [arg]....
 * if 是 test 命令的前身。在測試完表達式之后,如果為真則執行后面的命令。
 * 這里的 if 命令建立在 v7 test 命令基礎上。
 */

#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <unistd.h>
#include <fcntl.h>

#define EQ(a,b)	((tmp=a)==0?0:(strcmp(tmp,b)==0))

int 	ac;
char	**av;
int 	ap;
char	*tmp;

#define DIR 1
#define FIL 2
char *nxtarg(int mt);
int expr(void);
int e1(void);
int e2(void);
int e3(void);
int tio(char *a, int  f);
int ftype(char *f);
int fsizep(char *f);
void synbad(char *s1, char *s2);
int length(char *s);
int doex(char *earg);

int main(int argc, char**argv)
{
	ac = argc;
	av = argv;
	ap = 1;
	argv[ac] = 0;

	if (ac<=1)
		return 1;
	if (expr())
		return doex(0);
	else	
		return 1;
}
/*
 * 獲得下一個參數。mt 指示在讀到列表尾部的時候是否為語法錯誤,
 * 1 返回空指針,0 提示錯誤并退出。
 */
char *nxtarg(int mt)
{
	if (ap>=ac) {
		if(mt) {
			ap++;
			return(0);
		}
		synbad("argument exprected","");
	}
	return(av[ap++]);
}
/*
 * expr ::= * e1 -o expr | expr
 */
int expr(void)
{
	int p1;

	p1 = e1();
	if (EQ(nxtarg(1), "-o"))
		return(p1 | expr());
	ap--;
	return(p1);
}
/*
 * e1 ::= e2 -a e1 | e1
 */
int e1(void)
{
	int p1;

	p1 = e2();
	if (EQ(nxtarg(1), "-a"))
		return (p1 & e1());
	ap--;
	return(p1);
}
/*
 * e2 ::= e3 | ! e3
 */
int e2(void)
{
	if (EQ(nxtarg(0), "!"))
		return(!e3());
	ap--;
	return(e3());
}
/*
 * e3 ::= ( expr ) | { command ... } | -op file | string -op string
 */
int e3(void)
{
	int p1,r;
	register char *a;
	char *p2;
	int int1, int2;
	int ccode;

	a=nxtarg(0);
	if(EQ(a, "(")) {
		p1 = expr();
		if(!EQ(nxtarg(0), ")")) 
			synbad(") exprected","");
		return(p1);
	}
	if(EQ(a, "{")) { /* 執行一個命令并等待退出狀態 */
		if(fork()) /* 父進程執行部分 */ 
			wait(&ccode);
		else { /* 子進程執行部分 */
			if ((r=doex("}")) != 0)
				if (r == 1)
					synbad("} exprected","");
				else
					exit(r);
			else
				exit(0);
		}
		while((a=nxtarg(0)) && (!EQ(a,"}")));
		return(ccode? 0 : 1);
	}
	if(EQ(a, "-r"))
		return(tio(nxtarg(0), 0));

	if(EQ(a, "-w"))
		return(tio(nxtarg(0), 1));

	if(EQ(a, "-d"))
		return(ftype(nxtarg(0))==DIR);

	if(EQ(a, "-f"))
		return(ftype(nxtarg(0))==FIL);

	if(EQ(a, "-s"))
		return(fsizep(nxtarg(0)));

	if(EQ(a, "-t")) {
		if(ap>=ac)
			return(isatty(1));
		else
			return(isatty(atoi(nxtarg(0))));
	}
	if(EQ(a, "-n"))
		return(!EQ(nxtarg(0), ""));
	if(EQ(a, "-z"))
		return(EQ(nxtarg(0), ""));

	p2 = nxtarg(1);
	if (p2==0)
		return(!EQ(a,""));
	if(EQ(p2, "="))
		return(EQ(nxtarg(0), a));

	if(EQ(p2, "!="))
		return(!EQ(nxtarg(0), a));

	if(EQ(a, "-l")) {
		int1=length(p2);
		p2=nxtarg(0);
	} else{	int1=atoi(a);
	}
	int2 = atoi(nxtarg(0));
	if(EQ(p2, "-eq"))
		return(int1==int2);
	if(EQ(p2, "-ne"))
		return(int1!=int2);
	if(EQ(p2, "-gt"))
		return(int1>int2);
	if(EQ(p2, "-lt"))
		return(int1<int2);
	if(EQ(p2, "-ge"))
		return(int1>=int2);
	if(EQ(p2, "-le"))
		return(int1<=int2);
	synbad("unknown operator ",p2);
	return 0;
}
/*
 * 文件訪問測試
 */
int tio(char *a, int  f)
{

	f = open(a, f);
	if (f>=0) {
		close(f);
		return(1);
	}
	return(0);
}
/*
 * 文件類型測試
 */
int ftype(char *f)
{
	struct stat statb;

	if(stat(f,&statb)<0)
		return(0);
	if((statb.st_mode&S_IFMT)==S_IFDIR)
		return(DIR);
	return(FIL);
}
/*
 * 文件大小測試
 */
int fsizep(char *f)
{
	struct stat statb;
	if(stat(f,&statb)<0)
		return(0);
	return(statb.st_size>0);
}
/*
 * 打印錯誤信息并退出
 */
void synbad(char *s1, char *s2)
{
	write(2, "if: ", 6);
	write(2, s1, strlen(s1));
	write(2, s2, strlen(s2));
	write(2, "\n", 1);
	exit(1);
}
/*
 * 字符串長度測試
 */
int length(char *s)
{
	char *es=s;
	while(*es++);
	return((int)(es-s-1));
}
/*
 * 執行命令
 * earg 是終止參數
 */
int doex(char *earg)
{
	static char ncom[]="/usr/bin/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
	char *p=av[ap];
	char **v=av+ap;
	int i=0;
	char c;

	if (p == 0)
		return 0;

	if (earg != 0) {
		while (*v != 0 && !EQ(*v,earg))
			v++;
		if (*v == 0)
			return 1;
		else
			*v=0;
	}

	execv(p, av+ap);
	while((c=p[i])) {
		ncom[9+i++] = c;
	}
	ncom[9+i] = '\0';
	execv(ncom+4, av+ap);
	execv(ncom, av+ap);
	return 127;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美老年两性高潮| 欧美亚洲日本国产| 国产精品福利影院| 欧美不卡一区二区| av不卡免费在线观看| 亚洲成人综合视频| 国产日韩欧美电影| 精品国产一区二区三区忘忧草 | 99麻豆久久久国产精品免费| 欧美在线视频日韩| 欧美唯美清纯偷拍| 日本一区二区三区免费乱视频| 综合久久久久久| 中国色在线观看另类| 中文字幕一区二区三区不卡在线 | 国产精品护士白丝一区av| 日本中文字幕一区二区视频| 亚洲国产一区二区a毛片| 一区二区在线观看不卡| 亚洲欧美色综合| 亚洲激情自拍视频| 成人小视频在线| 99久久精品国产导航| 欧美三级乱人伦电影| 日韩欧美亚洲国产另类| 欧美videossexotv100| 亚洲高清不卡在线| 91精品1区2区| 欧美精品tushy高清| 亚洲精品视频在线观看免费| 成人激情免费视频| 欧美三片在线视频观看| 亚洲日本在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 成人欧美一区二区三区白人| 国产麻豆精品视频| 成人自拍视频在线| 久久女同性恋中文字幕| 亚洲人成影院在线观看| 成人黄色777网| 久久成人综合网| 国产一区二区三区免费播放| 日韩女优av电影在线观看| 蜜桃视频在线观看一区| 99久久精品99国产精品| 亚洲三级电影网站| 欧美在线free| 日韩成人精品在线| 精品91自产拍在线观看一区| 国产一区二区导航在线播放| 国产欧美一区二区精品婷婷| 成人av在线影院| 一区二区三区在线视频免费| 国产乱码精品1区2区3区| 欧美性高清videossexo| 婷婷中文字幕综合| 成人久久18免费网站麻豆| 国产精品久久久久四虎| 欧美最猛性xxxxx直播| 亚洲成人7777| 精品国产乱码久久久久久图片| 精品一区二区三区影院在线午夜| 色婷婷综合久久久久中文 | 日韩午夜激情电影| 国产精品麻豆视频| 欧美羞羞免费网站| 久久99精品久久久久久国产越南 | 国产欧美一区视频| 日本道色综合久久| 美女视频免费一区| 亚洲国产岛国毛片在线| 日韩电影一区二区三区四区| 精品区一区二区| 99久久精品国产麻豆演员表| 日韩福利视频导航| 国产欧美精品一区| 欧美日韩精品电影| 亚洲精品菠萝久久久久久久| 91精品国产综合久久福利软件 | 中文字幕巨乱亚洲| 欧美日韩在线观看一区二区| 欧美精品日韩精品| 成人精品国产免费网站| 五月激情六月综合| 中文字幕日本不卡| 日韩精品一区二区三区蜜臀| jlzzjlzz亚洲女人18| 麻豆成人综合网| 亚洲黄色小视频| 欧美—级在线免费片| 91精品欧美久久久久久动漫| 亚洲欧美国产毛片在线| 日韩欧美一二三| 欧美性三三影院| av不卡在线播放| 国产成人精品免费视频网站| 久久夜色精品国产欧美乱极品| 亚洲成人免费视| 国产精品美女久久久久久久网站| 欧美一区二区啪啪| 在线观看免费成人| www..com久久爱| 韩国女主播一区二区三区| 日韩一区二区三区视频在线观看 | 91国偷自产一区二区开放时间| 国产成人日日夜夜| 久久99精品久久久久久| 日韩电影免费在线看| 亚洲一区二区偷拍精品| 欧美一区二区三区免费视频| 在线免费观看日本一区| 91在线观看高清| 午夜久久福利影院| 亚洲乱码日产精品bd| 国产精品免费看片| 欧美激情一区二区三区全黄| 精品国产凹凸成av人网站| 日韩一区二区免费在线观看| 91精品在线免费| 欧美视频在线一区二区三区 | 欧美一区二区在线看| 欧美日韩在线播放三区四区| 色婷婷综合五月| 91网上在线视频| 91国产福利在线| 精品视频1区2区3区| 欧美日韩在线播放一区| 91精品国产品国语在线不卡| 91精品国产高清一区二区三区 | 色噜噜狠狠成人中文综合 | 亚洲国产成人tv| 午夜久久久久久久久久一区二区| 偷窥少妇高潮呻吟av久久免费| 婷婷丁香激情综合| 久久精品噜噜噜成人av农村| 久久99九九99精品| 国产精品亚洲专一区二区三区| 国产宾馆实践打屁股91| 日韩黄色小视频| 亚洲欧美在线观看| 亚洲国产aⅴ天堂久久| 蜜乳av一区二区| 成人黄色在线看| 色欧美乱欧美15图片| 91麻豆精品国产91久久久使用方法| 欧美一级高清片| 中文一区一区三区高中清不卡| 亚洲黄色片在线观看| 久久激情五月婷婷| 成人黄色在线视频| 欧美一区二区三区精品| 国产日韩欧美在线一区| 亚洲精品国产a久久久久久 | 国产一区二区三区免费播放| 色天天综合久久久久综合片| 日韩视频永久免费| 国产精品乱码妇女bbbb| 视频在线观看91| 国产91丝袜在线播放0| 欧美日韩在线一区二区| 国产欧美精品一区aⅴ影院| 亚洲成av人综合在线观看| 国产乱子轮精品视频| 欧美性受xxxx| 国产欧美日韩精品一区| 婷婷丁香激情综合| 91视频在线观看免费| 精品电影一区二区| 亚洲午夜激情av| 成人app在线观看| 欧美老年两性高潮| 亚洲欧美日韩国产手机在线| 免费观看30秒视频久久| 精品亚洲成av人在线观看| 一本色道a无线码一区v| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产日韩成人精品| 日韩精品久久理论片| 色婷婷国产精品综合在线观看| 精品成人一区二区| 日韩av电影免费观看高清完整版| av在线一区二区| 久久久精品国产免费观看同学| 视频一区二区国产| 欧美中文字幕亚洲一区二区va在线 | 亚洲素人一区二区| 国产自产视频一区二区三区| 在线成人av影院| 亚洲成人激情av| 91黄色激情网站| 一区二区三区在线观看视频| 成人免费黄色在线| 国产视频一区在线观看| 伊人婷婷欧美激情| 91一区一区三区| 成人欧美一区二区三区| www.在线欧美| 亚洲欧洲日产国产综合网| 成人高清视频在线| 国产精品素人一区二区|