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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tclcmdmz.c

?? tcl源碼詳細(xì)資料
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
#ifndef EXCLUDE_TCL/*  * tclCmdMZ.c -- * *	This file contains the top-level command routines for most of *	the Tcl built-in commands whose names begin with the letters *	M to Z.  It contains only commands in the generic core (i.e. *	those that don't depend much upon UNIX facilities). * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies.  The University of California * makes no representations about the suitability of this * software for any purpose.  It is provided "as is" without * express or implied warranty. */#include "tclInt.h"/* * Structure used to hold information about variable traces: */typedef struct {    int flags;			/* Operations for which Tcl command is				 * to be invoked. */    int length;			/* Number of non-NULL chars. in command. */    char command[4];		/* Space for Tcl command to invoke.  Actual				 * size will be as large as necessary to				 * hold command.  This field must be the				 * last in the structure, so that it can				 * be larger than 4 bytes. */} TraceVarInfo;/* * Forward declarations for procedures defined in this file: */static char *		TraceVarProc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, char *name1, char *name2,			    int flags));/* *---------------------------------------------------------------------- * * Tcl_RegexpCmd -- * *	This procedure is invoked to process the "regexp" Tcl command. *	See the user documentation for details on what it does. * * Results: *	A standard Tcl result. * * Side effects: *	See the user documentation. * *---------------------------------------------------------------------- */	/* ARGSUSED */intTcl_RegexpCmd(dummy, interp, argc, argv)    ClientData dummy;			/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    int noCase = 0;    int indices = 0;    regexp *regexpPtr;    char **argPtr, *string;    int match, i;    if (argc < 3) {	wrongNumArgs:	Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],		" ?-nocase? exp string ?matchVar? ?subMatchVar ",		"subMatchVar ...?\"", (char *) NULL);	return TCL_ERROR;    }    argPtr = argv+1;    argc--;    while ((argc > 0) && (argPtr[0][0] == '-')) {	if (strcmp(argPtr[0], "-indices") == 0) {	    argPtr++;	    argc--;	    indices = 1;	} else if (strcmp(argPtr[0], "-nocase") == 0) {	    argPtr++;	    argc--;	    noCase = 1;	} else {	    break;	}    }    if (argc < 2) {	goto wrongNumArgs;    }    regexpPtr = TclCompileRegexp(interp, argPtr[0]);    if (regexpPtr == NULL) {	return TCL_ERROR;    }    /*     * Convert the string to lower case, if desired, and perform     * the match.     */    if (noCase) {	register char *dst, *src;	string = (char *) ckalloc((unsigned) (strlen(argPtr[1]) + 1));	for (src = argPtr[1], dst = string; *src != 0; src++, dst++) {	    if (isupper(*src)) {		*dst = tolower(*src);	    } else {		*dst = *src;	    }	}	*dst = 0;    } else {	string = argPtr[1];    }    tclRegexpError = NULL;    match = regexec(regexpPtr, string);    if (string != argPtr[1]) {	ckfree(string);    }    if (tclRegexpError != NULL) {	Tcl_AppendResult(interp, "error while matching pattern: ",		tclRegexpError, (char *) NULL);	return TCL_ERROR;    }    if (!match) {	interp->result = "0";	return TCL_OK;    }    /*     * If additional variable names have been specified, return     * index information in those variables.     */    argc -= 2;    if (argc > NSUBEXP) {	interp->result = "too many substring variables";	return TCL_ERROR;    }    for (i = 0; i < argc; i++) {	char *result, info[50];	if (regexpPtr->startp[i] == NULL) {	    if (indices) {		result = Tcl_SetVar(interp, argPtr[i+2], "-1 -1", 0);	    } else {		result = Tcl_SetVar(interp, argPtr[i+2], "", 0);	    }	} else {	    if (indices) {		sprintf(info, "%d %d", regexpPtr->startp[i] - string,			regexpPtr->endp[i] - string - 1);		result = Tcl_SetVar(interp, argPtr[i+2], info, 0);	    } else {		char savedChar, *first, *last;		first = argPtr[1] + (regexpPtr->startp[i] - string);		last = argPtr[1] + (regexpPtr->endp[i] - string);		savedChar = *last;		*last = 0;		result = Tcl_SetVar(interp, argPtr[i+2], first, 0);		*last = savedChar;	    }	}	if (result == NULL) {	    Tcl_AppendResult(interp, "couldn't set variable \"",		    argPtr[i+2], "\"", (char *) NULL);	    return TCL_ERROR;	}    }    interp->result = "1";    return TCL_OK;}/* *---------------------------------------------------------------------- * * Tcl_RegsubCmd -- * *	This procedure is invoked to process the "regsub" Tcl command. *	See the user documentation for details on what it does. * * Results: *	A standard Tcl result. * * Side effects: *	See the user documentation. * *---------------------------------------------------------------------- */	/* ARGSUSED */intTcl_RegsubCmd(dummy, interp, argc, argv)    ClientData dummy;			/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    int noCase = 0, all = 0;    regexp *regexpPtr;    char *string, *p, *firstChar, *newValue, **argPtr;    int match, result, flags;    register char *src, c;    if (argc < 5) {	wrongNumArgs:	Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],		" ?-nocase? ?-all? exp string subSpec varName\"", (char *) NULL);	return TCL_ERROR;    }    argPtr = argv+1;    argc--;    while (argPtr[0][0] == '-') {	if (strcmp(argPtr[0], "-nocase") == 0) {	    argPtr++;	    argc--;	    noCase = 1;	} else if (strcmp(argPtr[0], "-all") == 0) {	    argPtr++;	    argc--;	    all = 1;	} else {	    break;	}    }    if (argc != 4) {	goto wrongNumArgs;    }    regexpPtr = TclCompileRegexp(interp, argPtr[0]);    if (regexpPtr == NULL) {	return TCL_ERROR;    }    /*     * Convert the string to lower case, if desired.     */    if (noCase) {	register char *dst;	string = (char *) ckalloc((unsigned) (strlen(argPtr[1]) + 1));	for (src = argPtr[1], dst = string; *src != 0; src++, dst++) {	    if (isupper(*src)) {		*dst = tolower(*src);	    } else {		*dst = *src;	    }	}	*dst = 0;    } else {	string = argPtr[1];    }    /*     * The following loop is to handle multiple matches within the     * same source string;  each iteration handles one match and its     * corresponding substitution.  If "-all" hasn't been specified     * then the loop body only gets executed once.     */    flags = 0;    for (p = string; *p != 0; ) {	tclRegexpError = NULL;	match = regexec(regexpPtr, p);	if (tclRegexpError != NULL) {	    Tcl_AppendResult(interp, "error while matching pattern: ",		    tclRegexpError, (char *) NULL);	    result = TCL_ERROR;	    goto done;	}	if (!match) {	    break;	}	/*	 * Copy the portion of the source string before the match to the	 * result variable.	 */    	src = argPtr[1] + (regexpPtr->startp[0] - string);	c = *src;	*src = 0;	newValue = Tcl_SetVar(interp, argPtr[3], argPtr[1] + (p - string),		flags);	*src = c;	flags = TCL_APPEND_VALUE;	if (newValue == NULL) {	    cantSet:	    Tcl_AppendResult(interp, "couldn't set variable \"",		    argPtr[3], "\"", (char *) NULL);	    result = TCL_ERROR;	    goto done;	}    	/*	 * Append the subSpec argument to the variable, making appropriate	 * substitutions.  This code is a bit hairy because of the backslash	 * conventions and because the code saves up ranges of characters in	 * subSpec to reduce the number of calls to Tcl_SetVar.	 */    	for (src = firstChar = argPtr[2], c = *src; c != 0; src++, c = *src) {	    int index;    	    if (c == '&') {		index = 0;	    } else if (c == '\\') {		c = src[1];		if ((c >= '0') && (c <= '9')) {		    index = c - '0';		} else if ((c == '\\') || (c == '&')) {		    *src = c;		    src[1] = 0;		    newValue = Tcl_SetVar(interp, argPtr[3], firstChar,			    TCL_APPEND_VALUE);		    *src = '\\';		    src[1] = c;		    if (newValue == NULL) {			goto cantSet;		    }		    firstChar = src+2;		    src++;		    continue;		} else {		    continue;		}	    } else {		continue;	    }	    if (firstChar != src) {		c = *src;		*src = 0;		newValue = Tcl_SetVar(interp, argPtr[3], firstChar,			TCL_APPEND_VALUE);		*src = c;		if (newValue == NULL) {		    goto cantSet;		}	    }	    if ((index < NSUBEXP) && (regexpPtr->startp[index] != NULL)		    && (regexpPtr->endp[index] != NULL)) {		char *first, *last, saved;    		first = argPtr[1] + (regexpPtr->startp[index] - string);		last = argPtr[1] + (regexpPtr->endp[index] - string);		saved = *last;		*last = 0;		newValue = Tcl_SetVar(interp, argPtr[3], first,			TCL_APPEND_VALUE);		*last = saved;		if (newValue == NULL) {		    goto cantSet;		}	    }	    if (*src == '\\') {		src++;	    }	    firstChar = src+1;	}	if (firstChar != src) {	    if (Tcl_SetVar(interp, argPtr[3], firstChar,		    TCL_APPEND_VALUE) == NULL) {		goto cantSet;	    }	}	p = regexpPtr->endp[0];	if (!all) {	    break;	}    }    /*     * If there were no matches at all, then return a "0" result.     */    if (p == string) {	interp->result = "0";	result = TCL_OK;	goto done;    }    /*     * Copy the portion of the source string after the last match to the     * result variable.     */    if (*p != 0) {	if (Tcl_SetVar(interp, argPtr[3], p, TCL_APPEND_VALUE) == NULL) {	    goto cantSet;	}    }    interp->result = "1";    result = TCL_OK;    done:    if (string != argPtr[1]) {	ckfree(string);    }    return result;}/* *---------------------------------------------------------------------- * * Tcl_RenameCmd -- * *	This procedure is invoked to process the "rename" Tcl command. *	See the user documentation for details on what it does. * * Results: *	A standard Tcl result. * * Side effects: *	See the user documentation. * *---------------------------------------------------------------------- */	/* ARGSUSED */intTcl_RenameCmd(dummy, interp, argc, argv)    ClientData dummy;			/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    char **argv;			/* Argument strings. */{    register Command *cmdPtr;    Interp *iPtr = (Interp *) interp;    Tcl_HashEntry *hPtr;    int new;    if (argc != 3) {	Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],		" oldName newName\"", (char *) NULL);	return TCL_ERROR;    }    if (argv[2][0] == '\0') {	if (Tcl_DeleteCommand(interp, argv[1]) != 0) {	    Tcl_AppendResult(interp, "can't delete \"", argv[1],		    "\": command doesn't exist", (char *) NULL);	    return TCL_ERROR;	}	return TCL_OK;    }    hPtr = Tcl_FindHashEntry(&iPtr->commandTable, argv[2]);    if (hPtr != NULL) {	Tcl_AppendResult(interp, "can't rename to \"", argv[2],		"\": command already exists", (char *) NULL);	return TCL_ERROR;    }    hPtr = Tcl_FindHashEntry(&iPtr->commandTable, argv[1]);    if (hPtr == NULL) {	Tcl_AppendResult(interp, "can't rename \"", argv[1],		"\":  command doesn't exist", (char *) NULL);	return TCL_ERROR;    }    cmdPtr = (Command *) Tcl_GetHashValue(hPtr);    Tcl_DeleteHashEntry(hPtr);    hPtr = Tcl_CreateHashEntry(&iPtr->commandTable, argv[2], &new);    Tcl_SetHashValue(hPtr, cmdPtr);    return TCL_OK;}/* *---------------------------------------------------------------------- * * Tcl_ReturnCmd --

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人啪免费观看软件 | 精品久久人人做人人爰| 国产精品综合av一区二区国产馆| 国产精品福利在线播放| 91精品久久久久久久99蜜桃| 成人黄色大片在线观看| 日产欧产美韩系列久久99| 亚洲欧美日韩国产成人精品影院| 欧美一区二区黄色| 欧美最新大片在线看| 高清不卡一二三区| 久久99精品久久久| 亚洲国产aⅴ成人精品无吗| 中文字幕av资源一区| 欧美精选在线播放| 日韩三级视频中文字幕| 成人激情综合网站| 韩国在线一区二区| 美女视频黄 久久| 有码一区二区三区| 国产精品激情偷乱一区二区∴| 精品国产一区二区国模嫣然| 欧美日韩黄色一区二区| 91美女蜜桃在线| bt7086福利一区国产| 国产乱妇无码大片在线观看| 蜜臀久久久99精品久久久久久| 亚洲成人黄色小说| 亚洲最大成人综合| 1000精品久久久久久久久| 国产午夜精品一区二区三区视频| 欧美成人a在线| 欧美成人福利视频| 欧美成人女星排名| 日韩午夜精品电影| 欧美一区日韩一区| 欧美高清性hdvideosex| 欧美日韩视频不卡| 制服丝袜日韩国产| 欧美精品久久99久久在免费线| 欧洲精品视频在线观看| 欧美日韩在线综合| 678五月天丁香亚洲综合网| 欧美伦理电影网| 91麻豆精品国产91久久久资源速度 | 欧美日韩精品一区二区| 欧洲亚洲精品在线| 欧美亚洲精品一区| 91精品国产黑色紧身裤美女| 91精品婷婷国产综合久久竹菊| 欧美群妇大交群的观看方式| 欧美人妖巨大在线| 欧美久久久影院| 精品国产乱码久久久久久久久| 91丨九色丨国产丨porny| 精品一区二区在线免费观看| 亚洲午夜视频在线| 亚洲电影一级黄| 亚洲一区二区黄色| 亚洲在线免费播放| 一级中文字幕一区二区| 中文字幕在线视频一区| 中文字幕亚洲在| 日韩码欧中文字| 亚洲欧美日韩综合aⅴ视频| 中文字幕免费一区| 夜夜亚洲天天久久| 一区二区国产视频| 免费在线观看一区二区三区| 国产成人av影院| 成人午夜碰碰视频| 欧美日本国产视频| 国产欧美精品一区| 日韩一区二区在线看| 成人a级免费电影| 风间由美一区二区三区在线观看 | 国产欧美日韩卡一| 国产精品久线在线观看| 亚洲人成在线观看一区二区| 亚洲国产一区二区视频| 国产真实乱偷精品视频免| av一区二区三区四区| 色婷婷久久99综合精品jk白丝 | 欧美国产欧美亚州国产日韩mv天天看完整| 宅男在线国产精品| av在线播放不卡| 色偷偷成人一区二区三区91| 56国语精品自产拍在线观看| 日韩欧美中文字幕公布| 国产精品国模大尺度视频| 另类小说一区二区三区| 国产欧美精品国产国产专区| 欧美精品久久久久久久多人混战| 99久久久久免费精品国产| 欧美一级在线观看| 亚洲同性同志一二三专区| 蜜臀av一级做a爰片久久| 成人免费视频app| 欧美一级爆毛片| 亚洲男人的天堂av| 国产v综合v亚洲欧| 日韩三区在线观看| 亚洲尤物在线视频观看| 成人激情午夜影院| 精品国产sm最大网站免费看 | 国产精品拍天天在线| 蜜桃在线一区二区三区| 一本到不卡精品视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 五月天亚洲精品| 不卡av在线免费观看| 久久久久久久久97黄色工厂| 日韩精品久久久久久| 99久久国产综合精品麻豆| 久久日一线二线三线suv| 秋霞国产午夜精品免费视频| 在线观看免费视频综合| 亚洲日本在线视频观看| 成熟亚洲日本毛茸茸凸凹| 精品国产自在久精品国产| 男人操女人的视频在线观看欧美 | 99国产精品一区| 国产婷婷色一区二区三区在线| 久久国产剧场电影| 欧美一级高清片| 青青草精品视频| 欧美日本在线一区| 亚洲综合在线免费观看| 色综合视频在线观看| 亚洲欧洲国产专区| 福利一区二区在线| 国产精品午夜久久| 成人av手机在线观看| 亚洲国产精品传媒在线观看| 国产成人综合视频| 国产日韩欧美精品一区| 国产黄色91视频| 久久精品人人做人人爽人人| 国产福利精品一区二区| 久久久精品国产免费观看同学| 国产美女在线精品| 欧美国产国产综合| av男人天堂一区| 亚洲男人的天堂av| 欧美在线啊v一区| 亚洲va天堂va国产va久| 欧美一区二区三区在线看| 麻豆一区二区三| 26uuu国产在线精品一区二区| 国产一区二区三区四| 国产欧美一区视频| 97se狠狠狠综合亚洲狠狠| 亚洲精品免费在线| 欧美性一区二区| 免费观看在线综合| 国产三级一区二区| 一本久久精品一区二区| 午夜伦欧美伦电影理论片| 日韩一级欧美一级| 成人性生交大片免费看中文 | 欧美挠脚心视频网站| 美女爽到高潮91| 国产亚洲短视频| 91麻豆文化传媒在线观看| 午夜精品成人在线| 久久久久久久久99精品| 日本大香伊一区二区三区| 视频一区中文字幕| 国产偷v国产偷v亚洲高清| 色94色欧美sute亚洲线路一ni| 亚洲成人自拍一区| 久久久99久久| 欧美亚洲国产一区二区三区va| 日本不卡一区二区三区| 欧美国产精品v| 欧美日韩二区三区| 国产98色在线|日韩| 一级女性全黄久久生活片免费| 日韩免费看的电影| 97久久人人超碰| 波多野结衣在线aⅴ中文字幕不卡| 精品一区二区在线免费观看| 日本久久一区二区| 欧美一区二区三区不卡| 日韩一区二区三区四区| 久久人人97超碰com| 国产精品欧美一区喷水| 亚洲电影欧美电影有声小说| 亚洲一区在线免费观看| 奇米影视在线99精品| 国产自产2019最新不卡| 色综合中文字幕国产 | 欧美伦理影视网| 欧美一区二区三区四区高清| 国产成人午夜精品5599| 亚洲高清一区二区三区| 国产精品丝袜黑色高跟| 日韩欧美成人午夜| 欧美性感一区二区三区| 成人精品视频一区二区三区尤物|