diff options
Diffstat (limited to 'generic/tclProcess.c')
-rw-r--r-- | generic/tclProcess.c | 46 |
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); /* |