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++;
}
|