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

📄 tcltest.c

📁 linux系统下的音频通信
💻 C
📖 第 1 页 / 共 5 页
字号:
/*  * tclTest.c -- * *	This file contains C command procedures for a bunch of additional *	Tcl commands that are used for testing out Tcl's C interfaces. *	These commands are not normally included in Tcl applications; *	they're only used for testing. * * Copyright (c) 1993-1994 The Regents of the University of California. * Copyright (c) 1994-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: @(#) tclTest.c 1.119 97/10/31 15:57:28 */#define TCL_TEST#include "tclInt.h"#include "tclPort.h"/* * Declare external functions used in Windows tests. */#if defined(__WIN32__)extern TclPlatformType *	TclWinGetPlatform _ANSI_ARGS_((void));#endif/* * Dynamic string shared by TestdcallCmd and DelCallbackProc;  used * to collect the results of the various deletion callbacks. */static Tcl_DString delString;static Tcl_Interp *delInterp;/* * One of the following structures exists for each asynchronous * handler created by the "testasync" command". */typedef struct TestAsyncHandler {    int id;				/* Identifier for this handler. */    Tcl_AsyncHandler handler;		/* Tcl's token for the handler. */    char *command;			/* Command to invoke when the					 * handler is invoked. */    struct TestAsyncHandler *nextPtr;	/* Next is list of handlers. */} TestAsyncHandler;static TestAsyncHandler *firstHandler = NULL;/* * The dynamic string below is used by the "testdstring" command * to test the dynamic string facilities. */static Tcl_DString dstring;/* * The command trace below is used by the "testcmdtraceCmd" command * to test the command tracing facilities. */static Tcl_Trace cmdTrace;/* * One of the following structures exists for each command created * by TestdelCmd: */typedef struct DelCmd {    Tcl_Interp *interp;		/* Interpreter in which command exists. */    char *deleteCmd;		/* Script to execute when command is				 * deleted.  Malloc'ed. */} DelCmd;/* * Forward declarations for procedures defined later in this file: */int			Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp));static int		AsyncHandlerProc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, int code));static void		CleanupTestSetassocdataTests _ANSI_ARGS_((			    ClientData clientData, Tcl_Interp *interp));static void		CmdDelProc1 _ANSI_ARGS_((ClientData clientData));static void		CmdDelProc2 _ANSI_ARGS_((ClientData clientData));static int		CmdProc1 _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, int argc, char **argv));static int		CmdProc2 _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, int argc, char **argv));static void		CmdTraceDeleteProc _ANSI_ARGS_((			    ClientData clientData, Tcl_Interp *interp,			    int level, char *command, Tcl_CmdProc *cmdProc,			    ClientData cmdClientData, int argc,			    char **argv));static void		CmdTraceProc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, int level, char *command,			    Tcl_CmdProc *cmdProc, ClientData cmdClientData,                            int argc, char **argv));static int		CreatedCommandProc _ANSI_ARGS_((			    ClientData clientData, Tcl_Interp *interp,			    int argc, char **argv));static int		CreatedCommandProc2 _ANSI_ARGS_((			    ClientData clientData, Tcl_Interp *interp,			    int argc, char **argv));static void		DelCallbackProc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp));static int		DelCmdProc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, int argc, char **argv));static void		DelDeleteProc _ANSI_ARGS_((ClientData clientData));static void		ExitProcEven _ANSI_ARGS_((ClientData clientData));static void		ExitProcOdd _ANSI_ARGS_((ClientData clientData));static int              GetTimesCmd _ANSI_ARGS_((ClientData clientData,                            Tcl_Interp *interp, int argc, char **argv));static int              NoopCmd _ANSI_ARGS_((ClientData clientData,                            Tcl_Interp *interp, int argc, char **argv));static int              NoopObjCmd _ANSI_ARGS_((ClientData clientData,                            Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));static void		SpecialFree _ANSI_ARGS_((char *blockPtr));static int		StaticInitProc _ANSI_ARGS_((Tcl_Interp *interp));static int		TestaccessprocCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestAccessProc1 _ANSI_ARGS_((CONST char *path,			   int mode));static int		TestAccessProc2 _ANSI_ARGS_((CONST char *path,			   int mode));static int		TestAccessProc3 _ANSI_ARGS_((CONST char *path,			   int mode));static int		TestasyncCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestcmdinfoCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestcmdtokenCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestcmdtraceCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestchmodCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestcreatecommandCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestdcallCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestdelCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestdelassocdataCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestdstringCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestexithandlerCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestexprlongCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestexprstringCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestfileCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestfeventCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestgetassocdataCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestgetplatformCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestgetvarfullnameCmd _ANSI_ARGS_((			    ClientData dummy, Tcl_Interp *interp,			    int objc, Tcl_Obj *CONST objv[]));static int		TestinterpdeleteCmd _ANSI_ARGS_((ClientData dummy,		            Tcl_Interp *interp, int argc, char **argv));static int		TestlinkCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestMathFunc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, Tcl_Value *args,			    Tcl_Value *resultPtr));static int		TestMathFunc2 _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, Tcl_Value *args,			    Tcl_Value *resultPtr));static Tcl_Channel	TestOpenFileChannelProc1 _ANSI_ARGS_((Tcl_Interp *interp,			    char *filename, char *modeString, int permissions));static Tcl_Channel	TestOpenFileChannelProc2 _ANSI_ARGS_((Tcl_Interp *interp,			    char *filename, char *modeString, int permissions));static Tcl_Channel	TestOpenFileChannelProc3 _ANSI_ARGS_((Tcl_Interp *interp,			    char *filename, char *modeString, int permissions));static int		TestPanicCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestsetassocdataCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestsetnoerrCmd _ANSI_ARGS_((ClientData dummy,		            Tcl_Interp *interp, int argc, char **argv));static int		TestsetobjerrorcodeCmd _ANSI_ARGS_((			    ClientData dummy, Tcl_Interp *interp,			    int objc, Tcl_Obj *CONST objv[]));static int		TestopenfilechannelprocCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestsetplatformCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestsetrecursionlimitCmd _ANSI_ARGS_((                            ClientData dummy, Tcl_Interp *interp,			    int objc, Tcl_Obj *CONST objv[]));static int		TeststaticpkgCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestStatProc1 _ANSI_ARGS_((CONST char *path,			    TclStat_ *buf));static int		TestStatProc2 _ANSI_ARGS_((CONST char *path,			    TclStat_ *buf));static int		TestStatProc3 _ANSI_ARGS_((CONST char *path,			    TclStat_ *buf));static int		TeststatprocCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TesttranslatefilenameCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestupvarCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int argc, char **argv));static int		TestwordendObjCmd _ANSI_ARGS_((ClientData dummy,			    Tcl_Interp *interp, int objc,			    Tcl_Obj *CONST objv[]));/* * External (platform specific) initialization routine: */EXTERN int		TclplatformtestInit _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 interp->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];	    if (Tcl_PkgProvide(interp, "Tcltest", TCL_VERSION) == TCL_ERROR) {        return TCL_ERROR;    }    /*     * Create additional commands and math functions for testing Tcl.     */    Tcl_CreateCommand(interp, "noop", NoopCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "noop", NoopObjCmd, (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", TclTestChannelCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testchannelevent", TclTestChannelEventCmd,            (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_CreateCommand(interp, "testexithandler", TestexithandlerCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testexprlong", TestexprlongCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testexprstring", TestexprstringCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(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_CreateCommand(interp, "testopenfilechannelproc",    	    TestopenfilechannelprocCmd, (ClientData) 0,     	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetassocdata", TestsetassocdataCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetnoerr", TestsetnoerrCmd,            (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testsetobjerrorcode", 	    TestsetobjerrorcodeCmd, (ClientData) 0,	    (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testsetplatform", TestsetplatformCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateObjCommand(interp, "testsetrecursionlimit",	    TestsetrecursionlimitCmd,	    (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_CreateObjCommand(interp, "testwordend", TestwordendObjCmd,	    (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testfevent", TestfeventCmd, (ClientData) 0,            (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "testpanic", TestPanicCmd, (ClientData) 0,            (Tcl_CmdDeleteProc *) NULL);    Tcl_CreateCommand(interp, "gettimes", GetTimesCmd, (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);    t3ArgTypes[0] = TCL_EITHER;    t3ArgTypes[1] = TCL_EITHER;    Tcl_CreateMathFunc(interp, "T3", 2, t3ArgTypes, TestMathFunc2,	    (ClientData) 0);    /*     * 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. */    char **argv;			/* Argument strings. */{    TestAsyncHandler *asyncPtr, *prevPtr;    int id, code;    static int nextId = 1;    char buf[30];    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;	sprintf(buf, "%d", asyncPtr->id);	Tcl_SetResult(interp, buf, TCL_VOLATILE);    } else if (strcmp(argv[1], "delete") == 0) {	if (argc == 2) {	    while (firstHandler != NULL) {		asyncPtr = firstHandler;		firstHandler = asyncPtr->nextPtr;		Tcl_AsyncDelete(asyncPtr->handler);		ckfree(asyncPtr->command);		ckfree((char *) asyncPtr);	    }	    return TCL_OK;	}	if (argc != 3) {	    goto wrongNumArgs;	}	if (Tcl_GetInt(interp, argv[2], &id) != TCL_OK) {	    return TCL_ERROR;	}	for (prevPtr = NULL, asyncPtr = firstHandler; asyncPtr != NULL;		prevPtr = asyncPtr, asyncPtr = asyncPtr->nextPtr) {	    if (asyncPtr->id != id) {		continue;	    }	    if (prevPtr == NULL) {		firstHandler = asyncPtr->nextPtr;	    } else {		prevPtr->nextPtr = asyncPtr->nextPtr;	    }

⌨️ 快捷键说明

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