summaryrefslogtreecommitdiffstats
path: root/generic/tclProcess.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclProcess.c')
-rw-r--r--generic/tclProcess.c46
1 files changed, 21 insertions, 25 deletions
diff --git a/generic/tclProcess.c b/generic/tclProcess.c
index d55a1fd..b621e31 100644
--- a/generic/tclProcess.c
+++ b/generic/tclProcess.c
@@ -26,7 +26,7 @@ static int autopurge = 1; /* Autopurge flag. */
typedef struct ProcessInfo {
Tcl_Pid pid; /* Process id. */
- Tcl_Size resolvedPid; /* Resolved process id. */
+ int resolvedPid; /* Resolved process id. */
int purge; /* Purge eventualy. */
TclProcessWaitStatus status;/* Process status. */
int code; /* Error code, exit status or signal
@@ -44,10 +44,10 @@ TCL_DECLARE_MUTEX(infoTablesMutex)
*/
static void InitProcessInfo(ProcessInfo *info, Tcl_Pid pid,
- Tcl_Size resolvedPid);
+ int resolvedPid);
static void FreeProcessInfo(ProcessInfo *info);
static int RefreshProcessInfo(ProcessInfo *info, int options);
-static TclProcessWaitStatus WaitProcessStatus(Tcl_Pid pid, Tcl_Size resolvedPid,
+static TclProcessWaitStatus WaitProcessStatus(Tcl_Pid pid, size_t resolvedPid,
int options, int *codePtr, Tcl_Obj **msgPtr,
Tcl_Obj **errorObjPtr);
static Tcl_Obj * BuildProcessStatusObj(ProcessInfo *info);
@@ -76,7 +76,7 @@ void
InitProcessInfo(
ProcessInfo *info, /* Structure to initialize. */
Tcl_Pid pid, /* Process id. */
- Tcl_Size resolvedPid) /* Resolved process id. */
+ int resolvedPid) /* Resolved process id. */
{
info->pid = pid;
info->resolvedPid = resolvedPid;
@@ -122,7 +122,7 @@ FreeProcessInfo(
* Free allocated structure.
*/
- ckfree(info);
+ Tcl_Free(info);
}
/*
@@ -185,7 +185,7 @@ RefreshProcessInfo(
TclProcessWaitStatus
WaitProcessStatus(
Tcl_Pid pid, /* Process id. */
- Tcl_Size resolvedPid, /* Resolved process id. */
+ size_t resolvedPid, /* Resolved process id. */
int options, /* Options passed to Tcl_WaitPid. */
int *codePtr, /* If non-NULL, will receive either:
* - 0 for normal exit.
@@ -355,9 +355,8 @@ BuildProcessStatusObj(
/*
* Process still running, return empty obj.
*/
- Tcl_Obj *obj;
- TclNewObj(obj);
- return obj;
+
+ return Tcl_NewObj();
}
if (info->status == TCL_PROCESS_EXITED && info->code == 0) {
/*
@@ -400,7 +399,7 @@ ProcessListObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- Tcl_Obj *list, *elemPtr;
+ Tcl_Obj *list;
Tcl_HashEntry *entry;
Tcl_HashSearch search;
ProcessInfo *info;
@@ -419,8 +418,8 @@ ProcessListObjCmd(
for (entry = Tcl_FirstHashEntry(&infoTablePerResolvedPid, &search);
entry != NULL; entry = Tcl_NextHashEntry(&search)) {
info = (ProcessInfo *) Tcl_GetHashValue(entry);
- TclNewIntObj(elemPtr, info->resolvedPid);
- Tcl_ListObjAppendElement(interp, list, elemPtr);
+ Tcl_ListObjAppendElement(interp, list,
+ Tcl_NewWideIntObj(info->resolvedPid));
}
Tcl_MutexUnlock(&infoTablesMutex);
Tcl_SetObjResult(interp, list);
@@ -451,12 +450,12 @@ ProcessStatusObjCmd(
int objc, /* Number of arguments. */
Tcl_Obj *const objv[]) /* Argument objects. */
{
- Tcl_Obj *dict, *elemPtr;
- int index, options = WNOHANG;
+ Tcl_Obj *dict;
+ int options = WNOHANG;
Tcl_HashEntry *entry;
Tcl_HashSearch search;
ProcessInfo *info;
- int i, numPids;
+ Tcl_Size i, numPids;
Tcl_Obj **pidObjs;
int result;
int pid;
@@ -466,7 +465,7 @@ ProcessStatusObjCmd(
};
enum switchesEnum {
STATUS_WAIT, STATUS_LAST
- };
+ } index;
while (objc > 1) {
if (TclGetString(objv[1])[0] != '-') {
@@ -477,7 +476,7 @@ ProcessStatusObjCmd(
return TCL_ERROR;
}
++objv; --objc;
- if (STATUS_WAIT == (enum switchesEnum) index) {
+ if (STATUS_WAIT == index) {
options = 0;
} else {
break;
@@ -515,8 +514,7 @@ ProcessStatusObjCmd(
* Add to result.
*/
- TclNewIntObj(elemPtr, info->resolvedPid);
- Tcl_DictObjPut(interp, dict, elemPtr,
+ Tcl_DictObjPut(interp, dict, Tcl_NewWideIntObj(info->resolvedPid),
BuildProcessStatusObj(info));
}
}
@@ -566,8 +564,7 @@ ProcessStatusObjCmd(
* Add to result.
*/
- TclNewIntObj(elemPtr, info->resolvedPid);
- Tcl_DictObjPut(interp, dict, elemPtr,
+ Tcl_DictObjPut(interp, dict, Tcl_NewWideIntObj(info->resolvedPid),
BuildProcessStatusObj(info));
}
}
@@ -605,8 +602,7 @@ ProcessPurgeObjCmd(
ProcessInfo *info;
Tcl_Size i, numPids;
Tcl_Obj **pidObjs;
- int result;
- int pid;
+ int result, pid;
if (objc != 1 && objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "?pids?");
@@ -793,7 +789,7 @@ void
TclProcessCreated(
Tcl_Pid pid) /* Process id. */
{
- Tcl_Size resolvedPid;
+ size_t resolvedPid;
Tcl_HashEntry *entry, *entry2;
int isNew;
ProcessInfo *info;
@@ -827,7 +823,7 @@ TclProcessCreated(
* Allocate and initialize info structure.
*/
- info = (ProcessInfo *)ckalloc(sizeof(ProcessInfo));
+ info = (ProcessInfo *)Tcl_Alloc(sizeof(ProcessInfo));
InitProcessInfo(info, pid, resolvedPid);
/*