Posted to tcl by GPS at Sat Jun 16 12:02:17 GMT 2007view pretty
int sys_exec ( TCL_OBJ_CMD_ARGS ) { char **argv; int argvOffset = 0; int objcOffset = 1; if (objc < 2) { Tcl_WrongNumArgs (interp, 1, objv, "program ?arg ...?"); return TCL_ERROR; } argv = (char **) Tcl_Alloc (sizeof (char *) * objc); while (objcOffset < objc) { argv[argvOffset] = Tcl_GetString (objv[objcOffset]); ++argvOffset; ++objcOffset; } argv[argvOffset] = NULL; if (-1 == execvp (argv[0], argv)) { Tcl_SetResult (interp, (char *)Tcl_PosixError (interp), TCL_VOLATILE); Tcl_Free ((char *)argv); return TCL_ERROR; } Tcl_SetResult (interp, "execv failed with an unknown error. This shouldn't be reached.", TCL_STATIC); return TCL_ERROR; }