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

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

?? safe.tcl

?? genesis 2000 v9.1軟件下載
?? TCL
?? 第 1 頁 / 共 2 頁
字號:
# safe.tcl --## This file provide a safe loading/sourcing mechanism for safe interpreters.# It implements a virtual path mecanism to hide the real pathnames from the# slave. It runs in a master interpreter and sets up data structure and# aliases that will be invoked when used from a slave interpreter.# # See the safe.n man page for details.## Copyright (c) 1996-1997 Sun Microsystems, Inc.## See the file "license.terms" for information on usage and redistribution# of this file, and for a DISCLAIMER OF ALL WARRANTIES.## SCCS: @(#) safe.tcl 1.21 97/08/13 15:37:22## The implementation is based on namespaces. These naming conventions# are followed:# Private procs starts with uppercase.# Public  procs are exported and starts with lowercase## Needed utilities packagepackage require opt 0.1;# Create the safe namespacenamespace eval ::safe {    # Exported API:    namespace export interp \	    interpAddToAccessPath interpFindInAccessPath \	    setLogCmd ;# Proto/dummy declarations for auto_mkIndexproc ::safe::interpCreate {} {}proc ::safe::interpInit {} {}proc ::safe::interpConfigure {} {}proc ::safe::interpDelete {} {}    # Interface/entry point function and front end for "Create"    ::tcl::OptProc interpCreate {	{?slave? -name {} "name of the slave (optional)"}	{-accessPath -list {} "access path for the slave"}	{-noStatics "prevent loading of statically linked pkgs"}	{-nestedLoadOk "allow nested loading"}	{-deleteHook -script {} "delete hook"}    } {	InterpCreate $slave $accessPath \		[expr {!$noStatics}] $nestedLoadOk $deleteHook;    }    # Interface/entry point function and front end for "Init"    ::tcl::OptProc interpInit {	{slave -name {} "name of the slave"}	{-accessPath -list {} "access path for the slave"}	{-noStatics "prevent loading of statically linked pkgs"}	{-nestedLoadOk "allow nested loading"}	{-deleteHook -script {} "delete hook"}    } {	InterpInit $slave $accessPath \		[expr {!$noStatics}] $nestedLoadOk $deleteHook;    }    # Interface/entry point function and front end for "Configure"    ::tcl::OptProc interpConfigure {	{slave -name {} "name of the slave"}	{-accessPath -list {} "access path for the slave"}	{-noStatics "prevent loading of statically linked pkgs"}	{-nestedLoadOk "allow nested loading"}	{-deleteHook -script {} "delete hook"}    } {	# Check that at least one flag was given:	if {[string match "*-*" $Args]} {	    # reconfigure everything (because otherwise you can't	    # change -noStatics for instance)	    InterpConfigure $slave $accessPath \		    [expr {!$noStatics}] $nestedLoadOk $deleteHook;	    # auto_reset the slave (to completly synch the new access_path)	    if {[catch {::interp eval $slave {auto_reset}} msg]} {		Log $slave "auto_reset failed: $msg";	    }	} else {	    # none was given, lets return current values instead	    set res {}	    lappend res [list -accessPath [Set [PathListName $slave]]]	    if {![Set [StaticsOkName $slave]]} {		lappend res "-noStatics"	    }	    if {[Set [NestedOkName $slave]]} {		lappend res "-nestedLoadOk"	    }	    lappend res [list -deleteHook [Set [DeleteHookName $slave]]]	    join $res	}    }    #    # safe::InterpCreate : doing the real job    #    # This procedure creates a safe slave and initializes it with the    # safe base aliases.    # NB: slave name must be simple alphanumeric string, no spaces,    # no (), no {},...  {because the state array is stored as part of the name}    #    # Returns the slave name.    #    # Optional Arguments :     # + slave name : if empty, generated name will be used    # + access_path: path list controlling where load/source can occur,    #                if empty: the master auto_path will be used.    # + staticsok  : flag, if 0 :no static package can be loaded (load {} Xxx)    #                      if 1 :static packages are ok.    # + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub)    #                      if 1 : multiple levels are ok.        # use the full name and no indent so auto_mkIndex can find us    proc ::safe::InterpCreate {	slave 	access_path	staticsok	nestedok	deletehook    } {	# Create the slave.	if {[string compare "" $slave]} {	    ::interp create -safe $slave;	} else {	    # empty argument: generate slave name	    set slave [::interp create -safe];	}	Log $slave "Created" NOTICE;	# Initialize it. (returns slave name)	InterpInit $slave $access_path $staticsok $nestedok $deletehook;    }    #    # InterpConfigure (was setAccessPath) :    #    Sets up slave virtual auto_path and corresponding structure    #    within the master. Also sets the tcl_library in the slave    #    to be the first directory in the path.    #    Nb: If you change the path after the slave has been initialized    #    you probably need to call "auto_reset" in the slave in order that it    #    gets the right auto_index() array values.    proc ::safe::InterpConfigure {slave access_path staticsok\	    nestedok deletehook} {	# determine and store the access path if empty	if {[string match "" $access_path]} {	    set access_path [uplevel #0 set auto_path];	    # Make sure that tcl_library is in auto_path	    # and at the first position (needed by setAccessPath)	    set where [lsearch -exact $access_path [info library]];	    if {$where == -1} {		# not found, add it.		set access_path [concat [list [info library]] $access_path];		Log $slave "tcl_library was not in auto_path,\			added it to slave's access_path" NOTICE;	    } elseif {$where != 0} {		# not first, move it first		set access_path [concat [list [info library]]\			[lreplace $access_path $where $where]];		Log $slave "tcl_libray was not in first in auto_path,\			moved it to front of slave's access_path" NOTICE;	    	    }	    # Add 1st level sub dirs (will searched by auto loading from tcl	    # code in the slave using glob and thus fail, so we add them	    # here so by default it works the same).	    set access_path [AddSubDirs $access_path];	}	Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\		nestedok=$nestedok deletehook=($deletehook)" NOTICE;	# clear old autopath if it existed	set nname [PathNumberName $slave];	if {[Exists $nname]} {	    set n [Set $nname];	    for {set i 0} {$i<$n} {incr i} {		Unset [PathToken $i $slave];	    }	}	# build new one	set slave_auto_path {}	set i 0;	foreach dir $access_path {	    Set [PathToken $i $slave] $dir;	    lappend slave_auto_path "\$[PathToken $i]";	    incr i;	}	Set $nname $i;	Set [PathListName $slave] $access_path;	Set [VirtualPathListName $slave] $slave_auto_path;	Set [StaticsOkName $slave] $staticsok	Set [NestedOkName $slave] $nestedok	Set [DeleteHookName $slave] $deletehook	SyncAccessPath $slave;    }    #    #    # FindInAccessPath:    #    Search for a real directory and returns its virtual Id    #    (including the "$")proc ::safe::interpFindInAccessPath {slave path} {	set access_path [GetAccessPath $slave];	set where [lsearch -exact $access_path $path];	if {$where == -1} {	    return -code error "$path not found in access path $access_path";	}	return "\$[PathToken $where]";    }    #    # addToAccessPath:    #    add (if needed) a real directory to access path    #    and return its virtual token (including the "$").proc ::safe::interpAddToAccessPath {slave path} {	# first check if the directory is already in there	if {![catch {interpFindInAccessPath $slave $path} res]} {	    return $res;	}	# new one, add it:	set nname [PathNumberName $slave];	set n [Set $nname];	Set [PathToken $n $slave] $path;	set token "\$[PathToken $n]";	Lappend [VirtualPathListName $slave] $token;	Lappend [PathListName $slave] $path;	Set $nname [expr $n+1];	SyncAccessPath $slave;	return $token;    }    # This procedure applies the initializations to an already existing    # interpreter. It is useful when you want to install the safe base    # aliases into a preexisting safe interpreter.    proc ::safe::InterpInit {	slave 	access_path	staticsok	nestedok	deletehook    } {	# Configure will generate an access_path when access_path is	# empty.	InterpConfigure $slave $access_path $staticsok $nestedok $deletehook;	# These aliases let the slave load files to define new commands	# NB we need to add [namespace current], aliases are always	# absolute paths.	::interp alias $slave source {} [namespace current]::AliasSource $slave	::interp alias $slave load {} [namespace current]::AliasLoad $slave	# This alias lets the slave have access to a subset of the 'file'	# command functionality.	AliasSubset $slave file file dir.* join root.* ext.* tail \		path.* split	# This alias interposes on the 'exit' command and cleanly terminates	# the slave.	::interp alias $slave exit {} [namespace current]::interpDelete $slave	# The allowed slave variables already have been set	# by Tcl_MakeSafe(3)	# Source init.tcl into the slave, to get auto_load and other	# procedures defined:	# We don't try to use the -rsrc on the mac because it would get	# confusing if you would want to customize init.tcl	# for a given set of safe slaves, on all the platforms	# you just need to give a specific access_path and	# the mac should be no exception. As there is no	# obvious full "safe ressources" design nor implementation	# for the mac, safe interps there will just don't	# have that ability. (A specific app can still reenable	# that using custom aliases if they want to).	# It would also make the security analysis and the Safe Tcl security	# model platform dependant and thus more error prone.	if {[catch {::interp eval $slave\		{source [file join $tcl_library init.tcl]}}\		msg]} {	    Log $slave "can't source init.tcl ($msg)";	    error "can't source init.tcl into slave $slave ($msg)"	}	return $slave    }    # Add (only if needed, avoid duplicates) 1 level of    # sub directories to an existing path list.    # Also removes non directories from the returned list.    proc AddSubDirs {pathList} {	set res {}	foreach dir $pathList {	    if {[file isdirectory $dir]} {		# check that we don't have it yet as a children		# of a previous dir		if {[lsearch -exact $res $dir]<0} {		    lappend res $dir;		}		foreach sub [glob -nocomplain -- [file join $dir *]] {		    if {    ([file isdirectory $sub])		         && ([lsearch -exact $res $sub]<0) } {			# new sub dir, add it !	                lappend res $sub;	            }		}	    }	}	return $res;    }    # This procedure deletes a safe slave managed by Safe Tcl and    # cleans up associated state:    proc ::safe::interpDelete {slave} {        Log $slave "About to delete" NOTICE;	# If the slave has a cleanup hook registered, call it.	# check the existance because we might be called to delete an interp	# which has not been registered with us at all	set hookname [DeleteHookName $slave];	if {[Exists $hookname]} {	    set hook [Set $hookname];	    if {![::tcl::Lempty $hook]} {		# remove the hook now, otherwise if the hook		# calls us somehow, we'll loop		Unset $hookname;		if {[catch {eval $hook $slave} err]} {		    Log $slave "Delete hook error ($err)";		}	    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品水蜜桃| 波多野结衣欧美| 欧美主播一区二区三区| 亚洲欧美日本在线| 99综合电影在线视频| 国产婷婷色一区二区三区四区| 国产美女精品在线| 国产视频一区在线播放| 日韩国产精品大片| 欧美精品 国产精品| 亚洲人成网站影音先锋播放| 日韩三级视频中文字幕| 夜夜精品视频一区二区 | 一区二区三区鲁丝不卡| 不卡的电影网站| 亚洲天堂成人网| 欧美在线观看你懂的| 亚洲成a人v欧美综合天堂下载| 粉嫩久久99精品久久久久久夜| 亚洲女爱视频在线| 欧美日韩综合不卡| 久久aⅴ国产欧美74aaa| 国产色91在线| 色综合久久中文字幕| 免费人成黄页网站在线一区二区| 欧美成人性战久久| 国产毛片一区二区| 亚洲欧洲美洲综合色网| 91蝌蚪porny成人天涯| 日韩电影在线一区| 国产一区不卡精品| 亚洲精品视频在线| 91久久精品国产91性色tv| 偷窥少妇高潮呻吟av久久免费| 91精品国产乱| 国产成人精品综合在线观看 | 精品一区二区免费视频| 国产日韩欧美一区二区三区综合| 不卡一区二区三区四区| 午夜电影网一区| 精品国产91久久久久久久妲己 | 国产精品一区在线观看你懂的| 欧美激情一区二区三区不卡 | 亚洲素人一区二区| 欧美精品1区2区3区| 久久亚洲春色中文字幕久久久| 亚洲免费电影在线| 91精品国产综合久久小美女| 波多野结衣精品在线| 午夜激情久久久| 国产精品麻豆视频| 欧美第一区第二区| 国产精品1区2区3区| 国产午夜亚洲精品不卡| 欧美美女网站色| 岛国精品在线观看| 寂寞少妇一区二区三区| 亚洲线精品一区二区三区| 国产色一区二区| 精品成a人在线观看| 欧美调教femdomvk| 色悠久久久久综合欧美99| 国产综合久久久久久鬼色 | 大胆亚洲人体视频| 亚洲国产另类精品专区| 欧美在线色视频| 黑人巨大精品欧美黑白配亚洲| 亚洲图片欧美色图| 亚洲欧美一区二区在线观看| 欧美久久婷婷综合色| 91在线高清观看| 国产1区2区3区精品美女| 麻豆成人免费电影| 午夜激情综合网| 亚洲男女一区二区三区| 日韩精品专区在线影院重磅| 日韩一区二区三区视频在线观看| 91国产成人在线| 欧美日韩一区二区在线观看视频| 成人免费视频视频在线观看免费| 国产自产视频一区二区三区| 国产一区欧美日韩| 麻豆精品视频在线| 精品一区二区三区久久久| 麻豆91在线播放免费| 日本在线不卡视频| 国产中文字幕精品| 亚洲国产sm捆绑调教视频| 无码av免费一区二区三区试看| 亚洲小说欧美激情另类| 一区二区三区成人| 偷拍一区二区三区四区| 五月婷婷久久丁香| 精彩视频一区二区三区| 麻豆中文一区二区| 午夜精品久久久久久久99水蜜桃| 婷婷亚洲久悠悠色悠在线播放 | 亚洲一区二区三区国产| 亚洲黄色尤物视频| 一区二区免费在线播放| 视频一区在线视频| 蜜桃视频免费观看一区| 国产精品 日产精品 欧美精品| 国产一区二区三区视频在线播放| 久久er99热精品一区二区| jlzzjlzz亚洲女人18| 精品一区二区三区香蕉蜜桃| 久久国产精品色| 国产电影精品久久禁18| www.日韩在线| 欧美亚洲日本一区| 久久婷婷综合激情| 中文字幕制服丝袜成人av| 一区二区三区 在线观看视频| 亚洲动漫第一页| 美女高潮久久久| 99视频国产精品| 欧美日韩激情在线| 久久免费偷拍视频| 亚洲欧洲日本在线| 婷婷成人综合网| 精品一区二区三区欧美| 国产伦精一区二区三区| 97国产一区二区| 日韩三级在线观看| 中文字幕在线一区二区三区| 亚洲成人av电影在线| 久久精品国产在热久久| 色综合视频在线观看| 欧美电影免费观看高清完整版在线| 国产女同互慰高潮91漫画| 亚洲一二三专区| 丰满亚洲少妇av| 欧美成人性福生活免费看| 精品久久久久av影院 | 5566中文字幕一区二区电影| 久久久一区二区| 日韩欧美电影一二三| 亚洲一区二区三区影院| 九九**精品视频免费播放| 欧美影院一区二区| 久久午夜电影网| 琪琪久久久久日韩精品| av电影在线观看一区| 日韩一级片在线播放| 亚洲自拍偷拍麻豆| 国产一区二区久久| 日韩欧美在线网站| 尤物av一区二区| 大白屁股一区二区视频| 久久影院午夜片一区| 首页国产欧美久久| 欧美三级在线看| 中文字幕一区二区三区四区不卡| 国产在线观看一区二区| 9191成人精品久久| 亚洲欧美另类久久久精品2019| 国产麻豆午夜三级精品| 欧美日韩高清一区| 亚洲美女屁股眼交| 成人aaaa免费全部观看| 日韩成人一级大片| 欧美影视一区在线| 亚洲综合小说图片| 97精品电影院| 亚洲视频在线一区二区| 成人av资源在线| 精品卡一卡二卡三卡四在线| 久久99这里只有精品| 欧美精品国产精品| 日本sm残虐另类| 欧美日韩不卡一区二区| 亚洲综合一区二区精品导航| 91美女片黄在线观看| 国产精品美女久久福利网站| 成人污视频在线观看| 中文字幕欧美国产| 国产在线观看免费一区| 国产日韩欧美在线一区| 国内一区二区视频| 欧美经典一区二区| 国产激情视频一区二区三区欧美| 日本一区二区免费在线| 国产成人亚洲综合a∨婷婷图片| 欧美丝袜丝交足nylons图片| 五月婷婷久久综合| 日韩色在线观看| 国产成人h网站| 国产女人aaa级久久久级| 99免费精品视频| 亚洲日本va午夜在线电影| 久久久久久一级片| 婷婷成人激情在线网| 欧美福利一区二区| 一区二区三区小说| 精品国产乱码久久| 国产成人av一区二区三区在线 | 亚洲一区视频在线| 在线观看网站黄不卡| 1024亚洲合集|