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

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

?? tclcmdmz.c

?? tcl源碼詳細(xì)資料
?? C
?? 第 1 頁 / 共 3 頁
字號(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 --

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人欧美日韩在线电影| 亚洲欧洲无码一区二区三区| 欧美精品一区二区久久久| 国产伦精一区二区三区| 麻豆91在线看| 美女性感视频久久| 成人一区在线观看| 国产成人午夜99999| 国产风韵犹存在线视精品| 国产精品99久久久久久似苏梦涵| 国产在线视视频有精品| 国产成人在线视频网址| 成人久久视频在线观看| 一本大道久久a久久综合| 在线亚洲一区二区| 欧美午夜精品久久久久久超碰| 欧美少妇一区二区| 91精品一区二区三区在线观看| 日韩欧美国产一区二区在线播放| 久久综合九色综合欧美就去吻| 久久在线免费观看| 亚洲国产激情av| 亚洲欧美激情小说另类| 亚洲午夜激情av| 免费成人你懂的| 国产福利91精品| 91亚洲国产成人精品一区二三 | 成人福利电影精品一区二区在线观看| 成人黄色综合网站| 欧美在线free| 91精品中文字幕一区二区三区| 欧美成人官网二区| 1000部国产精品成人观看| 亚洲午夜电影在线| 国产在线精品视频| 99久久久精品| 91精品婷婷国产综合久久| 国产视频一区二区三区在线观看| 亚洲另类一区二区| 免费精品视频最新在线| 风流少妇一区二区| 欧美日韩不卡视频| 久久久激情视频| 亚洲影院久久精品| 国产成人精品一区二区三区四区| 91麻豆福利精品推荐| 欧美成人官网二区| 亚洲免费观看高清| 国产综合色在线| 91久久精品午夜一区二区| 欧美变态凌虐bdsm| 亚洲制服丝袜av| 国产a级毛片一区| 欧美日韩国产一二三| 国产亚洲精品超碰| 日本欧美一区二区三区乱码| 北条麻妃国产九九精品视频| 日韩三级伦理片妻子的秘密按摩| 亚洲三级小视频| 久久99精品视频| 欧美亚洲自拍偷拍| 国产精品素人一区二区| 美美哒免费高清在线观看视频一区二区 | 激情五月婷婷综合| 日本久久精品电影| 国产欧美一区二区三区沐欲| 午夜电影久久久| 色婷婷精品大在线视频 | 狠狠色丁香婷综合久久| 色综合久久久网| 日本一区免费视频| 精品写真视频在线观看 | 亚洲激情在线播放| 国产成人激情av| 精品日韩欧美在线| 亚洲h精品动漫在线观看| 99久久国产综合精品麻豆| 精品嫩草影院久久| 免费久久精品视频| 欧美日韩国产首页| 一区二区三区欧美日| a美女胸又www黄视频久久| 亚洲久草在线视频| 成人禁用看黄a在线| 2024国产精品| 久久疯狂做爰流白浆xx| 欧美精品tushy高清| 亚洲高清不卡在线观看| 91视频免费观看| 亚洲欧美另类小说视频| 成人午夜av影视| 国产日韩av一区| 国产不卡在线一区| 国产日韩成人精品| 国产一区二区女| 26uuu亚洲婷婷狠狠天堂| 老司机一区二区| 精品国产99国产精品| 免费不卡在线观看| 欧美刺激脚交jootjob| 麻豆视频观看网址久久| 日韩一区二区免费高清| 日韩电影在线观看一区| 717成人午夜免费福利电影| 日精品一区二区三区| 欧美挠脚心视频网站| 日韩和欧美一区二区| 在线成人av网站| 免费视频一区二区| 欧美大肚乱孕交hd孕妇| 国内精品伊人久久久久av影院 | 日韩免费一区二区三区在线播放| 日日骚欧美日韩| 日韩欧美www| 国产一区欧美一区| 欧美激情资源网| 91香蕉视频mp4| 亚洲成人激情综合网| 91麻豆精品91久久久久久清纯 | 日韩三级电影网址| 国内久久精品视频| 国产精品美女久久福利网站| 99精品一区二区三区| 亚洲精品高清视频在线观看| 在线亚洲一区观看| 男女性色大片免费观看一区二区 | 亚洲人被黑人高潮完整版| 91福利资源站| 日韩vs国产vs欧美| 久久精品亚洲一区二区三区浴池| 国产成人在线视频播放| 亚洲美女区一区| 欧美精品xxxxbbbb| 国产乱妇无码大片在线观看| 中文字幕欧美一| 欧美日韩一卡二卡三卡| 久久99国产精品尤物| 国产精品久久一卡二卡| 欧美图片一区二区三区| 老色鬼精品视频在线观看播放| 欧美激情在线看| 欧美三级中文字| 国产v综合v亚洲欧| 亚洲一区国产视频| 欧美大黄免费观看| 色综合久久综合| 国内精品嫩模私拍在线| 亚洲美女视频在线观看| 日韩欧美激情在线| 91免费在线播放| 男人的j进女人的j一区| 成人免费在线播放视频| 欧美成人精品3d动漫h| 91美女蜜桃在线| 久久99最新地址| 一区二区三区精密机械公司| 亚洲精品在线观| 欧美性猛交xxxxxx富婆| 国产一区视频在线看| 亚洲成人av中文| 国产日韩欧美综合在线| 欧美日韩国产bt| 99精品国产热久久91蜜凸| 麻豆91免费看| 一级中文字幕一区二区| 精品福利视频一区二区三区| 欧美综合一区二区| 丁香婷婷综合色啪| 青青草97国产精品免费观看| 亚洲免费伊人电影| 国产色婷婷亚洲99精品小说| 欧美日本乱大交xxxxx| 成人av在线电影| 黑人巨大精品欧美黑白配亚洲| 一区二区三区不卡视频在线观看| 国产欧美日韩精品一区| 日韩欧美一区电影| 精品污污网站免费看| 99精品久久久久久| 国产黄色精品视频| 麻豆一区二区三| 日韩成人一级片| 亚洲高清在线精品| 亚洲综合清纯丝袜自拍| 国产精品久久三| 国产欧美精品一区二区色综合朱莉 | 91精品国产综合久久福利| av电影在线观看不卡| 国产suv一区二区三区88区| 极品尤物av久久免费看| 日本强好片久久久久久aaa| 亚洲成人动漫在线免费观看| 亚洲视频中文字幕| 国产精品天干天干在观线| 国产偷国产偷亚洲高清人白洁| 精品久久久久久久久久久久久久久久久 | 欧美色综合网站| 色视频成人在线观看免| 97精品国产露脸对白| 91麻豆精品国产91久久久久久久久|