Diff
Not logged in

Differences From Artifact [50d2df4b84]:

To Artifact [4c524a8f54]:


1
2
3
4
5
6
7
8
9
10


11
12

13
14
15
16
17
18
19
1
2
3
4
5
6
7
8


9
10
11

12
13
14
15
16
17
18
19








-
-
+
+

-
+







/*
 * tclUnixTest.c --
 *
 *	Contains platform specific test commands for the Unix platform.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution of
 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tclUnixTest.c,v 1.14.4.19 2010/02/26 01:21:08 dgp Exp $
 * RCS: @(#) $Id: tclUnixTest.c,v 1.14.4.20 2010/06/21 20:23:42 dgp Exp $
 */

#ifndef USE_TCL_STUBS
#   define USE_TCL_STUBS
#endif
#include "tclInt.h"

60
61
62
63
64
65
66
67
68



69
70

71
72

73
74


75
76

77
78

79
80

81
82
83
84

85
86
87
88
89
90
91
92
93
60
61
62
63
64
65
66


67
68
69


70


71


72
73


74


75


76




77


78
79
80
81
82
83
84







-
-
+
+
+
-
-
+
-
-
+
-
-
+
+
-
-
+
-
-
+
-
-
+
-
-
-
-
+
-
-








static const char *gotsig = "0";

/*
 * Forward declarations of functions defined later in this file:
 */

static void		TestFileHandlerProc(ClientData clientData, int mask);
static int		TestfilehandlerCmd(ClientData dummy,
static Tcl_CmdProc TestalarmCmd;
static Tcl_CmdProc TestchmodCmd;
static Tcl_CmdProc TestfilehandlerCmd;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestfilewaitCmd(ClientData dummy,
static Tcl_CmdProc TestfilewaitCmd;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestfindexecutableCmd(ClientData dummy,
static Tcl_CmdProc TestfindexecutableCmd;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestgetopenfileCmd(ClientData dummy,
static Tcl_CmdProc TestgetdefencdirCmd;
static Tcl_CmdProc TestgetopenfileCmd;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestgetdefencdirCmd(ClientData dummy,
static Tcl_CmdProc TestgotsigCmd;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestsetdefencdirCmd(ClientData dummy,
static Tcl_CmdProc TestsetdefencdirCmd;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestalarmCmd(ClientData dummy,
static Tcl_FileProc TestFileHandlerProc;
			    Tcl_Interp *interp, int argc, const char **argv);
static int		TestgotsigCmd(ClientData dummy,
			    Tcl_Interp *interp, int argc, const char **argv);
static void		AlarmHandler(int signum);
static void AlarmHandler(int signum);
static int		TestchmodCmd(ClientData dummy,
			    Tcl_Interp *interp, int argc, const char **argv);

/*
 *----------------------------------------------------------------------
 *
 * TclplatformtestInit --
 *
 *	Defines commands that test platform specific functionality for Unix
234
235
236
237
238
239
240
241

242
243
244
245
246

247
248
249
250
251
252
253

254
255
256
257
258

259
260
261
262
263
264
265
225
226
227
228
229
230
231

232
233
234
235
236

237
238
239
240
241
242
243

244
245
246
247
248

249
250
251
252
253
254
255
256







-
+




-
+






-
+




-
+







#endif
	}
	pipePtr->readCount = 0;
	pipePtr->writeCount = 0;

	if (strcmp(argv[3], "readable") == 0) {
	    Tcl_CreateFileHandler(GetFd(pipePtr->readFile), TCL_READABLE,
		    TestFileHandlerProc, (ClientData) pipePtr);
		    TestFileHandlerProc, pipePtr);
	} else if (strcmp(argv[3], "off") == 0) {
	    Tcl_DeleteFileHandler(GetFd(pipePtr->readFile));
	} else if (strcmp(argv[3], "disabled") == 0) {
	    Tcl_CreateFileHandler(GetFd(pipePtr->readFile), 0,
		    TestFileHandlerProc, (ClientData) pipePtr);
		    TestFileHandlerProc, pipePtr);
	} else {
	    Tcl_AppendResult(interp, "bad read mode \"", argv[3], "\"", NULL);
	    return TCL_ERROR;
	}
	if (strcmp(argv[4], "writable") == 0) {
	    Tcl_CreateFileHandler(GetFd(pipePtr->writeFile), TCL_WRITABLE,
		    TestFileHandlerProc, (ClientData) pipePtr);
		    TestFileHandlerProc, pipePtr);
	} else if (strcmp(argv[4], "off") == 0) {
	    Tcl_DeleteFileHandler(GetFd(pipePtr->writeFile));
	} else if (strcmp(argv[4], "disabled") == 0) {
	    Tcl_CreateFileHandler(GetFd(pipePtr->writeFile), 0,
		    TestFileHandlerProc, (ClientData) pipePtr);
		    TestFileHandlerProc, pipePtr);
	} else {
	    Tcl_AppendResult(interp, "bad read mode \"", argv[4], "\"", NULL);
	    return TCL_ERROR;
	}
    } else if (strcmp(argv[1], "empty") == 0) {
	if (argc != 3) {
	    Tcl_AppendResult(interp, "wrong # arguments: should be \"",
335
336
337
338
339
340
341
342

343
344
345
346
347
348
349
326
327
328
329
330
331
332

333
334
335
336
337
338
339
340







-
+








static void
TestFileHandlerProc(
    ClientData clientData,	/* Points to a Pipe structure. */
    int mask)			/* Indicates which events happened:
				 * TCL_READABLE or TCL_WRITABLE. */
{
    Pipe *pipePtr = (Pipe *) clientData;
    Pipe *pipePtr = clientData;

    if (mask & TCL_READABLE) {
	pipePtr->readCount++;
    }
    if (mask & TCL_WRITABLE) {
	pipePtr->writeCount++;
    }