⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcltest.c

📁 tcl是工具命令语言
💻 C
📖 第 1 页 / 共 5 页
字号:
			    Tcl_LoadHandle *handlePtr,			    Tcl_FSUnloadFileProc **unloadProcPtr));static Tcl_Obj *	TestReportLink _ANSI_ARGS_ ((Tcl_Obj *path,			    Tcl_Obj *to, int linkType));static CONST char**	TestReportFileAttrStrings _ANSI_ARGS_ ((			    Tcl_Obj *fileName, Tcl_Obj **objPtrRef));static int		TestReportFileAttrsGet _ANSI_ARGS_ ((Tcl_Interp *interp,			    int index, Tcl_Obj *fileName, Tcl_Obj **objPtrRef));static int		TestReportFileAttrsSet _ANSI_ARGS_ ((Tcl_Interp *interp,			    int index, Tcl_Obj *fileName, Tcl_Obj *objPtr));static int		TestReportUtime _ANSI_ARGS_ ((Tcl_Obj *fileName,			    struct utimbuf *tval));static int		TestReportNormalizePath _ANSI_ARGS_ ((			    Tcl_Interp *interp, Tcl_Obj *pathPtr,			    int nextCheckpoint));static int		TestReportInFilesystem _ANSI_ARGS_ ((Tcl_Obj *pathPtr, ClientData *clientDataPtr));static void		TestReportFreeInternalRep _ANSI_ARGS_ ((ClientData clientData));static ClientData	TestReportDupInternalRep _ANSI_ARGS_ ((ClientData clientData));static int		SimpleStat _ANSI_ARGS_ ((Tcl_Obj *path,			    Tcl_StatBuf *buf));static int		SimpleAccess _ANSI_ARGS_ ((Tcl_Obj *path,			    int mode));static Tcl_Channel	SimpleOpenFileChannel _ANSI_ARGS_ ((			    Tcl_Interp *interp, Tcl_Obj *fileName,			    int mode, int permissions));static Tcl_Obj*         SimpleListVolumes _ANSI_ARGS_ ((void));static int              SimplePathInFilesystem _ANSI_ARGS_ ((			    Tcl_Obj *pathPtr, ClientData *clientDataPtr));static Tcl_Obj*         SimpleCopy _ANSI_ARGS_ ((Tcl_Obj *pathPtr));static Tcl_Filesystem testReportingFilesystem = {    "reporting",    sizeof(Tcl_Filesystem),    TCL_FILESYSTEM_VERSION_1,    &TestReportInFilesystem, /* path in */    &TestReportDupInternalRep,    &TestReportFreeInternalRep,    NULL, /* native to norm */    NULL, /* convert to native */    &TestReportNormalizePath,    NULL, /* path type */    NULL, /* separator */    &TestReportStat,    &TestReportAccess,    &TestReportOpenFileChannel,    &TestReportMatchInDirectory,    &TestReportUtime,    &TestReportLink,    NULL /* list volumes */,    &TestReportFileAttrStrings,    &TestReportFileAttrsGet,    &TestReportFileAttrsSet,    &TestReportCreateDirectory,    &TestReportRemoveDirectory,     &TestReportDeleteFile,    &TestReportCopyFile,    &TestReportRenameFile,    &TestReportCopyDirectory,     &TestReportLstat,    &TestReportLoadFile,    NULL /* cwd */,    &TestReportChdir};static Tcl_Filesystem simpleFilesystem = {    "simple",    sizeof(Tcl_Filesystem),    TCL_FILESYSTEM_VERSION_1,    &SimplePathInFilesystem,    NULL,    NULL,    /* No internal to normalized, since we don't create any     * pure 'internal' Tcl_Obj path representations */    NULL,    /* No create native rep function, since we don't use it     * or 'Tcl_FSNewNativePath' */    NULL,    /* Normalize path isn't needed - we assume paths only have     * one representation */    NULL,    NULL,    NULL,    &SimpleStat,    &SimpleAccess,    &SimpleOpenFileChannel,    NULL,    NULL,    /* We choose not to support symbolic links inside our vfs's */    NULL,    &SimpleListVolumes,    NULL,    NULL,    NULL,    NULL,    NULL,     NULL,    /* No copy file - fallback will occur at Tcl level */    NULL,    /* No rename file - fallback will occur at Tcl level */    NULL,    /* No copy directory - fallback will occur at Tcl level */    NULL,     /* Use stat for lstat */    NULL,    /* No load - fallback on core implementation */    NULL,    /* We don't need a getcwd or chdir - fallback on Tcl's versions */    NULL,    NULL};/* * External (platform specific) initialization routine, these declarations * explicitly don't use EXTERN since this code does not get compiled * into the library: */extern int		TclplatformtestInit _ANSI_ARGS_((Tcl_Interp *interp));extern int		TclThread_Init _ANSI_ARGS_((Tcl_Interp *interp));/* *---------------------------------------------------------------------- * * Tcltest_Init -- * *	This procedure performs application-specific initialization. *	Most applications, especially those that incorporate additional *	packages, will have their own version of this procedure. * * Results: *	Returns a standard Tcl completion code, and leaves an error *	message in the interp's result if an error occurs. * * Side effects: *	Depends on the startup script. * *---------------------------------------------------------------------- */intTcltest_Init(interp)    Tcl_Interp *interp;		/* Interpreter for application. */{    Tcl_ValueType t3ArgTypes[2];    Tcl_Obj *listPtr;    Tcl_Obj **objv;    int objc, index;    static CONST char *specialOptions[] = {	"-appinitprocerror", "-appinitprocdeleteinterp",	"-appinitprocclosestderr", "-appinitprocsetrcfile", (char *) NULL    };    if (Tcl_PkgProvide(interp, "Tcltest", TCL_VERSION) == TCL_ERROR) {        return TCL_ERROR;    }    /*     * Create additional commands and math functions for testing Tcl.     */    Tcl_CreateCommand(interp, "gettimes", GetTimesCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "noop", NoopCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "noop", NoopObjCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testwrongnumargs", TestWrongNumArgsObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testfilesystem", TestFilesystemObjCmd, 	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testsimplefilesystem", TestSimpleFilesystemObjCmd, 	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testgetindexfromobjstruct",			 TestGetIndexFromObjStructObjCmd, (ClientData) 0,			 (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testaccessproc", TestaccessprocCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testasync", TestasyncCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testchannel", TestChannelCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testchannelevent", TestChannelEventCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testchmod", TestchmodCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testcmdtoken", TestcmdtokenCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testcmdinfo", TestcmdinfoCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testcmdtrace", TestcmdtraceCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testcreatecommand", TestcreatecommandCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testdcall", TestdcallCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testdel", TestdelCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testdelassocdata", TestdelassocdataCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_DStringInit(&dstring);    Tcl_CreateCommand(interp, "testdstring", TestdstringCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testencoding", TestencodingObjCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testevalex", TestevalexObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testevalobjv", TestevalobjvObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand( interp, "testevent", TesteventObjCmd,			  (ClientData) 0, (Tcl_CmdDeleteProc*) NULL );    Tcl_CreateCommand(interp, "testexithandler", TestexithandlerCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testexprlong", TestexprlongCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testexprparser", TestexprparserObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testexprstring", TestexprstringCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testfevent", TestfeventCmd, (ClientData) 0,            (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testfilelink", TestfilelinkCmd,             (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testfile", TestfileCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testgetassocdata", TestgetassocdataCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testgetplatform", TestgetplatformCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testgetvarfullname",	    TestgetvarfullnameCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testinterpdelete", TestinterpdeleteCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testlink", TestlinkCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testlocale", TestlocaleCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testopenfilechannelproc",    	    TestopenfilechannelprocCmd, (ClientData) 0,     	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testpanic", TestpanicCmd, (ClientData) 0,            (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testparser", TestparserObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testparsevar", TestparsevarObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testparsevarname", TestparsevarnameObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testregexp", TestregexpObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testsaveresult", TestsaveresultCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetassocdata", TestsetassocdataCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetnoerr", TestsetCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testseterr", TestsetCmd,            (ClientData) TCL_LEAVE_ERR_MSG, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testsetobjerrorcode", 	    TestsetobjerrorcodeCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetplatform", TestsetplatformCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "teststaticpkg", TeststaticpkgCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testtranslatefilename",            TesttranslatefilenameCmd, (ClientData) 0,            (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testupvar", TestupvarCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateMathFunc(interp, "T1", 0, (Tcl_ValueType *) NULL, TestMathFunc,	    (ClientData) 123);    Tcl_CreateMathFunc(interp, "T2", 0, (Tcl_ValueType *) NULL, TestMathFunc,	    (ClientData) 345);    Tcl_CreateCommand(interp, "teststatproc", TeststatprocCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testmainthread", TestmainthreadCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetmainloop", TestsetmainloopCmd,	    (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testexitmainloop", TestexitmainloopCmd,	    (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);    t3ArgTypes[0] = TCL_EITHER;    t3ArgTypes[1] = TCL_EITHER;    Tcl_CreateMathFunc(interp, "T3", 2, t3ArgTypes, TestMathFunc2,	    (ClientData) 0);#ifdef TCL_THREADS    if (TclThread_Init(interp) != TCL_OK) {	return TCL_ERROR;    }#endif    /*     * Check for special options used in ../tests/main.test     */    listPtr = Tcl_GetVar2Ex(interp, "argv", NULL, TCL_GLOBAL_ONLY);    if (listPtr != NULL) {        if (Tcl_ListObjGetElements(interp, listPtr, &objc, &objv) != TCL_OK) {	    return TCL_ERROR;        }        if (objc && (Tcl_GetIndexFromObj(NULL, objv[0], specialOptions, NULL,		TCL_EXACT, &index) == TCL_OK)) {	    switch (index) {	        case 0: {		    return TCL_ERROR;	        }	        case 1: {		    Tcl_DeleteInterp(interp);		    return TCL_ERROR;	        }	        case 2: {		    int mode;		    Tcl_UnregisterChannel(interp, 			    Tcl_GetChannel(interp, "stderr", &mode));		    return TCL_ERROR;	        }	        case 3: {		    if (objc-1) {		        Tcl_SetVar2Ex(interp, "tcl_rcFileName", NULL,			       objv[1], TCL_GLOBAL_ONLY);		    }		    return TCL_ERROR;	        }	    }        }    }	    /*     * And finally add any platform specific test commands.     */        return TclplatformtestInit(interp);}/* *---------------------------------------------------------------------- * * TestasyncCmd -- * *	This procedure implements the "testasync" command.  It is used *	to test the asynchronous handler facilities of Tcl. * * Results: *	A standard Tcl result. * * Side effects: *	Creates, deletes, and invokes handlers. * *---------------------------------------------------------------------- */	/* ARGSUSED */static intTestasyncCmd(dummy, interp, argc, argv)    ClientData dummy;			/* Not used. */    Tcl_Interp *interp;			/* Current interpreter. */    int argc;				/* Number of arguments. */    CONST char **argv;			/* Argument strings. */{    TestAsyncHandler *asyncPtr, *prevPtr;    int id, code;    static int nextId = 1;    char buf[TCL_INTEGER_SPACE];    if (argc < 2) {	wrongNumArgs:	Tcl_SetResult(interp, "wrong # args", TCL_STATIC);	return TCL_ERROR;    }    if (strcmp(argv[1], "create") == 0) {	if (argc != 3) {	    goto wrongNumArgs;	}	asyncPtr = (TestAsyncHandler *) ckalloc(sizeof(TestAsyncHandler));	asyncPtr->id = nextId;	nextId++;	asyncPtr->handler = Tcl_AsyncCreate(AsyncHandlerProc,		(ClientData) asyncPtr);	asyncPtr->command = (char *) ckalloc((unsigned) (strlen(argv[2]) + 1));	strcpy(asyncPtr->command, argv[2]);	asyncPtr->nextPtr = firstHandler;	firstHandler = asyncPtr;	TclFormatInt(buf, asyncPtr->id);	Tcl_SetResult(interp, buf, TCL_VOLATILE);    } else if (strcmp(argv[1], "delete") == 0) {	if (argc == 2) {	    while (firstHandler != NULL) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -