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

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

?? batch.c

?? 一個dos操作系統DRDOS的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	}

	return(total);
}

MLOCAL BOOLEAN CDECL test_cond(cptr)
BYTE	**cptr;
{
	BYTE	*cmd,*str1, *str2, *ptr;
	DTA	search;
	BOOLEAN not, cond, neg,is_user;
	BYTE	level;
        BYTE    c[]=" \n";
        WORD	attr;
	UWORD   userid;
	LONG	val1,val2;

        cmd=*cptr;
        not = cond = NO;			/* Initialise the Flags     */

	if(!strnicmp(cmd = deblank(cmd), "not", 3)) {
	    not = YES;
	    cmd = deblank(cmd+3);
	}

	switch(if_index(&cmd)) {
	
	    /*
	     *	EXIST Option extract the possibly ambiguous filename
	     *	and check if it exists.
	     */
	    case 0:
		cmd = deblank(get_filename(heap(), cmd, YES));
		cond = !ms_x_first(heap(), ATTR_STD|ATTR_HID, &search);
		break;
		
	    /*
	     * DIREXIST Option checks if the given directory exists
	     */
	    case 1:
		cmd = deblank(get_filename(heap(), cmd, YES));
		attr = ms_x_chmod(heap(), ATTR_ALL, 0);
		if (attr < 0) cond = FALSE;
		else cond = (attr & 0x10);
		break;

	    /*
	     *	ERRORLEVEL Option extract the decimal number from the
	     *	command line.
	     */
	    case 2:
		level = 0;
		neg = FALSE;
		
		if(*cmd =='-') {
		    neg = TRUE;
		    cmd++;
		}

		if(!isdigit(*cmd)) {		/* SYNTAX error if the	    */ 
		    syntax();			/* first character is not a */
		    return FALSE;			/* digit.		    */
		}

		while(isdigit(*cmd))
		    level = level * 10 + (*cmd++ - '0');

		level = level & 0x00FF;

		if (neg) level = -level;

	        cond = (level<=(err_ret & 0x00FF)); 
		break;


/*RG-02*/
#if !defined(NOXBATCH)
#if (defined(CDOSTMP) || defined(CDOS))
	    /*
	     *	KEY ["string"] [==] [""] Search for the string "string" and
             *  display it if it exists, then read a key and echo it.
             *  However, if the string to match is null "" then do a keyboard
             *  status check and return TRUE if there is no key there
	     */
	    case 3:
		    cmd = deblank(cmd);
                ptr=cmd;
                if (display_string(&ptr)!=0)
                    return FALSE;

        	    cmd = deblank(ptr); 
	        while(*cmd == '=')		/* Remove any "=" string     */
	            cmd++;

	        cmd = deblank(cmd);
                if ((*cmd==0)||(*(cmd+1)!=' ')) { /* check for condition */
 	            syntax();
                    return FALSE;
                }

                /* read a character from the keyboard */
    	        c[0]=bdos(C_RAWIO, 0xFD);	/* Get a character from console */

                /* echo the char typed */
	        if (echoflg) 				/* echo to screen if wanted */
		    putc(c[0]);
	        crlf();			/* print cr/lf			*/
                
                /* check if it matches */
                if((tolower(c[0])==*cmd)||(toupper(c[0])==*cmd))
                    cond=TRUE;
                else 
                    cond=FALSE;

                /* skip the condition */
	        while (*cmd!=' ')
                    cmd++; /* skip the char */
        
		    break;

#endif
#if !defined (NOSECURITY) && (defined(CDOSTMP) || defined(CDOS))
	    /*
	     *	USERID Option extract the 4 digit hex user id
	     *	and check if it is us.
	     */
	    case 4:
                if (!login_enabled())
                    return FALSE;
		    cmd = deblank(cmd);
	        if(aschextobin(cmd)==get_user_on_station())
                    cond=TRUE;
                else
                    cond=FALSE;
                
                do {   /* skip past the user id */
                    if ((*cmd>='0' && *cmd<='9')
                        ||(tolower(*cmd)>='a' && tolower(*cmd)<='f'))
                        cmd++; /* skip the hex digit */
                    else {
               		    syntax();	
		            return FALSE;
                    }
	        } while (*cmd!=' ');
		break;

            /*
	     *	LOGINNAME Option extract the loginname and check if it is us.
	     */
	    case 5:
                if (!login_enabled())
                    return FALSE;
                is_user=TRUE;

            /*
	     *	GROUPNAME Option extract the loginname and check if it is us.
	     */
	    case 6:
                if (!login_enabled())
                    return FALSE;
		    cmd = deblank(cmd);
                if(aschextobin(user_info.userid)!=get_user_on_station()) {
	            if(get_user_info(get_user_on_station())!=0) {
                        syntax();
                        is_user=cond=FALSE;
			return FALSE;
                    }
                }
                if((is_user==TRUE)&&(strncmp(strlwr(cmd),strlwr(user_info.loginname),strlen(user_info.loginname))==0)) {
                    cond=TRUE;
                    cmd+=strlen(user_info.loginname);
                }
                else if((is_user!=TRUE)&&(strncmp(strlwr(cmd),strlwr(user_info.groupname),strlen(user_info.groupname))==0)) {
                    cond=TRUE;
                    cmd+=strlen(user_info.groupname);
                }
                else {
                    cond=FALSE;
	            while (*cmd!=' ')
                        cmd++; /* skip the name */
                }
                if (*cmd!=' ') {
                    is_user=cond=FALSE;
                }
                is_user=FALSE;
		break;

#endif
#endif /*NOXBATCH*/
/*RG-02-end*/            
            /*
	     *	String comparison option.
	     */
	    default:
		str1 = cmd;			/* Extract String 1	    */

		while ((!is_blank(cmd)) && (*cmd != '=') &&
		       ((*cmd != '!') || (cmd[1]!= '=')) &&
		       (*cmd != '<') && (*cmd != '>')) {

		    cmd = skip_char(cmd);
		}

		str2 = cmd;
		cmd = deblank(cmd);

		attr = get_operator(cmd++);

		if (attr == -1) {
		    syntax();
		    return(FALSE);
		}

		*str2 = 0;

		if (*cmd == '=' || *cmd == '>') cmd++;

		cmd = deblank(cmd);
		str2 = cmd;
		while (!is_blank(cmd)) cmd = skip_char(cmd);
		*cmd++ = 0;

		if (*str1 == '#') {
		    val1 = get_decimal(str1);
		    val2 = get_decimal(str2);    
		    switch(attr) {
		      case OP_EQ: cond = (val1==val2); break;
		      case OP_NE: cond = (val1!=val2); break;
		      case OP_LT: cond = (val1<val2); break;
		      case OP_LE: cond = (val1<=val2); break;
		      case OP_GT: cond = (val1>val2); break;
		      case OP_GE: cond = (val1>=val2); break;
		    }
		}
		else switch(attr) {
		case OP_EQ:
		    cond = (strcmp(str1,str2) == 0);
		    break;
		case OP_NE:
		    cond = (strcmp(str1,str2) != 0);
		    break;
		case OP_LT:
		    cond = (strcmp(str1,str2) < 0);
		    break;
		case OP_LE:
		    cond = (strcmp(str1,str2) <= 0);
		    break;
		case OP_GT:
		    cond = (strcmp(str1,str2) > 0);
		    break;
		case OP_GE:
		    cond = (strcmp(str1,str2) >= 0);
		    break;
		}
		break;
	}

	if(not) 				/* if negated condition     */
	    cond = !cond;

        *cptr=cmd;
        return cond; /* write result back */
}

#if !defined(NOXBATCH)
BOOLEAN is_it_or(BYTE *cmd)
{
	cmd--;
	if ((*cmd != 0) && (*cmd != '\t') && (*cmd != ' '))
	    return FALSE;
        cmd++;
	if (strnicmp(cmd, "or", 2) != 0)
	    return FALSE;
	cmd+=2;    
	if ((*cmd != '\t') && (*cmd != ' '))
	    return FALSE;
	return TRUE;
}
#endif
GLOBAL VOID CDECL cmd_if(cmd)
BYTE	*cmd;
{
        BOOLEAN cond;
        
	ifcond=cond=test_cond(&cmd);
	
	if(!*deblank(cmd)) {		/* and return a SYNTAX error*/
	    syntax();			/* if it is empty.	    */
	    return;
	}
        if(!cond) {
#if !defined(NOXBATCH)
	    while (!is_it_or(cmd) &&
		       (*cmd != 0)) {
	        if (strnicmp(cmd,"ECHO",4)==0) return;       
	        cmd++;
	    }
            if (*cmd==0) return; /* no OR's so quit now */
	    
	    if_context = TRUE;
	    
	    docmd(deblank(cmd), YES); /* New command starts at "or" */
            
#endif
        }
	else {
	    cmd = deblank(cmd);

	    if (strnicmp(cmd,"AND",3)) {
		if (parse(cmd)) return;	  /* IF won't have been 'parsed' for */
					  /* > or < redirectors so do it now */
	    }

	    if_context = TRUE;
	    				  /* Execute command if the    */
	    docmd(cmd, YES);              /* condition flag is TRUE    */
	}
        if_context=FALSE;
}

/*RG-03*/
#if !defined(NOXBATCH)
GLOBAL VOID CDECL cmd_or(cmd)
BYTE	*cmd;
{
        BOOLEAN cond;
        BYTE    *org_cmd;
        
        cond=test_cond(&cmd);
	if(!*deblank(cmd)) {		/* and return a SYNTAX error*/
	    syntax();			/* if it is empty.	    */
	    return;
	}
        if(!cond) {
       	    org_cmd = cmd;			/* now look for "OR" */
	    while (!is_it_or(cmd) &&
		   (*cmd != 0)) {
		if (strnicmp(cmd,"ECHO",4)==0) while(*cmd) cmd++;
		else cmd++;
	    }
            if (*cmd==0) { /* oh dear, no ORs */
                if (ifcond) /* but so far so good, so do command anyway */
	           docmd(deblank(org_cmd), YES); 
                return;
            }
	    docmd(deblank(cmd), YES); /* New command starts at "or" */
            return;
        }
	else {
            cmd = deblank(cmd);
	    
	    if (strnicmp(cmd,"AND",3)) {
	        if (parse(cmd)) return;	  /* IF won't have been 'parsed' for */
					  /* > or < redirectors so do it now */
	    }
	    
	    ifcond=cond;                 /* Execute command if the    */
	    docmd(cmd, YES);    	 /* condition flag is TRUE    */
        }
}
#endif /*NOXBATCH*/
/*RG-03-end*/


GLOBAL VOID CDECL cmd_for(s)
BYTE *s;
{
FCONTROL *fc;
BYTE *bp1;

	fc = (FCONTROL *) heap_get(sizeof(FCONTROL));

						/* Allocate Control Struct  */
	if(forptr)				/* and prevent nesting of  */
	    goto for_error;			/* FOR Command. 	   */

	s = deblank(s); 			/* Remove leading blanks   */
	if ((*s++ != '%') ||			/* Get the FOR variable    */
	    (fc->forvar = *s++) < ' ')		/* character and save	   */
	    goto for_error;

	if(strnicmp(s = deblank(s), "in", 2))	/* Check for the correct   */
	    goto for_error;			/* command syntax.	   */

	s = deblank(s+2);
	if (*s++ != '(')
	    goto for_error;

	fc->files = (BYTE *)heap();		/* Allocate FOR parameter  */
	while(*s && *s != ')') {		/* buffer and scan the	   */
	    bp1 = (BYTE *)heap();		/* command line generating */
						/* zero terminated strings */
	    while(strchr(batch_sep, *s))	/* Skip any separators	   */
		s = skip_char(s);

	    while(   *s != ')' &&		/* then copy all valid	   */
		     !strchr(batch_sep, *s))	/* characters into buffer  */
		      				/* then zero terminate	   */
		copy_char(&bp1, &s);

	    *bp1++ = '\0';
	    heap_get(strlen(heap()) + 1);	/* Preserve String	    */
	}
	
	*(BYTE *)heap_get(1) = '\0'; 		/* Final String is zero     */
						/* bytes in length	    */
	
	s = deblank(s);
	if(*s++ != ')')
	    goto for_error;
	
	if(strnicmp(s = deblank(s), "do", 2))
	    goto for_error;

	if(in_flag & REDIR_ACTIVE)	/* If Input redirection has been */
	    in_flag |= REDIR_FOR;	/* enabled for this command force*/
					/* it on for the complete command*/

	if(out_flag & REDIR_ACTIVE)	/* If Output redirection has been*/
	    out_flag |= REDIR_FOR;	/* enabled for this command force*/
					/* it on for the complete command*/

	fc->cmd = (BYTE *)heap_get(strlen(s = deblank(s+2)) +1);
	strcpy(fc->cmd, s);

	fc->sflg = NO;			/* File matching inactive  */
	for_flag = YES; 		/* Turn FOR processing ON  */
	forptr = fc;			/* Save control Structure  */
	return;
	
for_error:				/* When a Syntax error occurs	*/
	heap_set((BYTE *) fc);		/* restore the heap and print	*/
	syntax();			/* an error message.		*/
	return;
}

GLOBAL VOID for_end()
{
	if(for_flag) {
	    heap_set((BYTE *) forptr);	/* Terminate FOR processing	*/
	    forptr = (FCONTROL *) NULL; /* restore the HEAP and reset	*/
	    for_flag = NO;		/* control flags.		*/
	}
}

/*.pa*/
/*
 *	This command generates the displayed prompt based on the contents
 *	of the string PROMPT= in the environment. Otherwise the default
 *	prompt string DEFAULT_PROMPT is used.
 */

MLOCAL BOOLEAN prompt_flg = FALSE;	/* Prompt Flag 			*/

MLOCAL VOID prompt()			/* display command line prompt	*/
{
	REG BYTE *cp;
	BYTE	 buf[MAX_PATHLEN];
	BYTE	 c;
#if !STACK
	BYTE	 cpbuf[MAX_ENVLEN];
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产另类精品专区| 91同城在线观看| 日本怡春院一区二区| 一区二区三区在线视频免费| 亚洲国产精华液网站w| 欧美激情一区二区三区全黄| 久久精品亚洲麻豆av一区二区| 精品国产一区二区三区忘忧草| 欧美大片国产精品| 欧美大片在线观看| 久久久亚洲精品石原莉奈| 2欧美一区二区三区在线观看视频| 精品精品国产高清a毛片牛牛 | 91久久精品午夜一区二区| 99久久国产综合精品麻豆| www.亚洲精品| 欧美色国产精品| 欧美一三区三区四区免费在线看 | 久久久九九九九| 亚洲午夜日本在线观看| 一区二区三区日韩在线观看| 亚洲一线二线三线久久久| 亚洲国产一区视频| 久久99精品久久久久| 国产福利一区二区三区| 不卡免费追剧大全电视剧网站| aaa欧美大片| 欧美午夜精品久久久| 欧美一区二区三区在线视频| 日韩精品一区二区三区swag| 国产精品素人视频| 亚洲精品免费电影| 日韩国产一二三区| 国产精品1区2区3区| 99riav久久精品riav| 欧美日韩精品高清| 精品国产制服丝袜高跟| 亚洲视频每日更新| 日日摸夜夜添夜夜添精品视频| 国精产品一区一区三区mba桃花| 国产精品亚洲人在线观看| 色先锋久久av资源部| 日韩一区二区在线观看| 久久夜色精品一区| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美网站一区二区| 精品国产青草久久久久福利| 中文字幕一区在线观看视频| 日韩精品成人一区二区在线| 成人激情av网| 日韩一级免费观看| 亚洲欧美日韩在线播放| 美女久久久精品| 91麻豆精品秘密| 精品日产卡一卡二卡麻豆| 亚洲色图在线播放| 国产一区二区在线电影| 欧美性大战久久久久久久蜜臀| 久久久夜色精品亚洲| 午夜久久久久久久久| 91在线视频播放| 欧美videossexotv100| 一区二区三区四区在线| 久久99精品一区二区三区三区| 91麻豆高清视频| 久久九九影视网| 日本一区中文字幕| 91国在线观看| 国产精品久久久久久久蜜臀| 麻豆91精品91久久久的内涵| 欧美性xxxxx极品少妇| 欧美激情中文不卡| 捆绑调教美女网站视频一区| 色哟哟一区二区在线观看| 亚洲免费视频中文字幕| 国产福利视频一区二区三区| 日韩无一区二区| 亚洲成人久久影院| 91原创在线视频| 国产精品三级av在线播放| 黄色成人免费在线| 日韩精品一区国产麻豆| 香港成人在线视频| 欧美专区在线观看一区| 中文字幕制服丝袜一区二区三区| 国产一区二区精品在线观看| 日韩一级精品视频在线观看| 亚洲成人在线免费| 欧美图片一区二区三区| 亚洲自拍欧美精品| 一本久久a久久精品亚洲| 国产精品欧美久久久久一区二区| 国产原创一区二区| 亚洲精品一区二区三区四区高清| 五月婷婷久久丁香| 欧美日韩在线播放三区四区| 亚洲美女视频在线观看| 91视频你懂的| 中文字幕亚洲一区二区va在线| 国产成人鲁色资源国产91色综| wwwwww.欧美系列| 韩国毛片一区二区三区| 久久综合九色综合久久久精品综合| 免费精品99久久国产综合精品| 91精品国产色综合久久不卡蜜臀| 亚洲123区在线观看| 欧美精品三级在线观看| 午夜影院久久久| 日韩欧美中文字幕制服| 蜜臀精品久久久久久蜜臀 | 国产精品久久久久久久久晋中 | 一个色综合av| 在线观看不卡一区| 亚洲一区二区三区精品在线| 欧美日韩一区二区在线视频| 午夜久久福利影院| 日韩视频中午一区| 国产一区不卡在线| 中文字幕二三区不卡| 91在线精品一区二区| 一区二区不卡在线播放| 91精品久久久久久蜜臀| 久草这里只有精品视频| 国产婷婷一区二区| 不卡视频在线看| 亚洲一区精品在线| 日韩一区二区不卡| 国产福利电影一区二区三区| 中文字幕一区二区三区四区不卡| 97久久久精品综合88久久| 亚洲国产精品嫩草影院| 欧美刺激脚交jootjob| 国产不卡视频一区| 亚洲小说春色综合另类电影| 日韩一卡二卡三卡| av午夜精品一区二区三区| 亚洲综合丝袜美腿| 精品久久久久久综合日本欧美| 懂色一区二区三区免费观看| 亚洲精品免费视频| 欧美大片在线观看一区| 97se亚洲国产综合自在线不卡 | 色综合天天综合网国产成人综合天| 一区二区三区在线播放| 日韩一区二区免费在线电影| 成人av在线电影| 日日嗨av一区二区三区四区| 久久婷婷综合激情| 91久久精品国产91性色tv| 捆绑紧缚一区二区三区视频| 亚洲欧洲av另类| 欧美一区二区三区四区久久| 成人h动漫精品一区二区| 亚洲国产成人高清精品| 国产欧美精品在线观看| 欧美剧情片在线观看| 99久久伊人网影院| 日av在线不卡| 一区二区三区四区视频精品免费| 欧美一区二区久久久| 97成人超碰视| 国产精品一区二区在线观看不卡| 亚洲va欧美va人人爽午夜| 国产精品久久网站| 精品免费国产二区三区 | 久久久久久久久久久黄色| 91久久奴性调教| 风间由美性色一区二区三区| 婷婷国产v国产偷v亚洲高清| 国产精品初高中害羞小美女文| 91.麻豆视频| 91豆麻精品91久久久久久| 国产剧情一区二区| 日韩国产欧美三级| 亚洲欧美偷拍另类a∨色屁股| 精品久久99ma| 4438成人网| 91国内精品野花午夜精品| 成人毛片在线观看| 久久99日本精品| 日韩精品色哟哟| 一区二区免费视频| 亚洲欧美日韩在线不卡| 国产精品午夜久久| 欧美精品一区二区精品网| 69av一区二区三区| 欧美性生活久久| 91国产精品成人| 91蜜桃免费观看视频| 国产大陆精品国产| 精品在线观看免费| 老司机午夜精品| 男人操女人的视频在线观看欧美| 亚洲国产你懂的| 一区二区成人在线视频 | 激情综合网天天干| 日韩精品每日更新| 香蕉久久一区二区不卡无毒影院 | 成人黄页在线观看| 国产成人精品在线看|