From f4df4aba71f814b2ea589e0ce4a6dddd20221417 Mon Sep 17 00:00:00 2001 From: stanton Date: Tue, 2 Feb 1999 22:25:42 +0000 Subject: * generic/tclIOCmd.c: * generic/tclBasic.c: Objectified the "open" command. [Bug: 1113] --- generic/tclBasic.c | 4 ++-- generic/tclIOCmd.c | 29 +++++++++++++++-------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/generic/tclBasic.c b/generic/tclBasic.c index 760ad21..1d66c80 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclBasic.c,v 1.13 1998/09/14 18:39:57 stanton Exp $ + * RCS: @(#) $Id: tclBasic.c,v 1.14 1999/02/02 22:25:42 stanton Exp $ */ #include "tclInt.h" @@ -188,7 +188,7 @@ static CmdInfo builtInCmds[] = { (CompileProc *) NULL, 1}, {"glob", Tcl_GlobCmd, (Tcl_ObjCmdProc *) NULL, (CompileProc *) NULL, 0}, - {"open", Tcl_OpenCmd, (Tcl_ObjCmdProc *) NULL, + {"open", (Tcl_CmdProc *) NULL, Tcl_OpenObjCmd, (CompileProc *) NULL, 0}, {"pid", (Tcl_CmdProc *) NULL, Tcl_PidObjCmd, (CompileProc *) NULL, 1}, diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c index 1c08d40..b1ed0c8 100644 --- a/generic/tclIOCmd.c +++ b/generic/tclIOCmd.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIOCmd.c,v 1.3 1998/09/14 18:39:59 stanton Exp $ + * RCS: @(#) $Id: tclIOCmd.c,v 1.4 1999/02/02 22:25:42 stanton Exp $ */ #include "tclInt.h" @@ -949,7 +949,7 @@ Tcl_FblockedObjCmd(unused, interp, objc, objv) /* *---------------------------------------------------------------------- * - * Tcl_OpenCmd -- + * Tcl_OpenObjCmd -- * * This procedure is invoked to process the "open" Tcl command. * See the user documentation for details on what it does. @@ -965,35 +965,35 @@ Tcl_FblockedObjCmd(unused, interp, objc, objv) /* ARGSUSED */ int -Tcl_OpenCmd(notUsed, interp, argc, argv) +Tcl_OpenObjCmd(notUsed, interp, argc, objv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ - char **argv; /* Argument strings. */ + Tcl_Obj * CONST objv[]; /* Argument objects. */ { int pipeline, prot; - char *modeString; + char *modeString, *arg1; Tcl_Channel chan; if ((argc < 2) || (argc > 4)) { - Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], - " fileName ?access? ?permissions?\"", (char *) NULL); + Tcl_WrongNumArgs(interp, 1, objv, "fileName ?access? ?permissions?"); return TCL_ERROR; } prot = 0666; if (argc == 2) { modeString = "r"; } else { - modeString = argv[2]; + modeString = Tcl_GetStringFromObj(objv[2], NULL); if (argc == 4) { - if (Tcl_GetInt(interp, argv[3], &prot) != TCL_OK) { + if (Tcl_GetIntFromObj(interp, objv[3], &prot) != TCL_OK) { return TCL_ERROR; } } } + arg1 = Tcl_GetStringFromObj(objv[1], NULL); pipeline = 0; - if (argv[1][0] == '|') { + if (arg1[0] == '|') { pipeline = 1; } @@ -1002,10 +1002,10 @@ Tcl_OpenCmd(notUsed, interp, argc, argv) */ if (!pipeline) { - chan = Tcl_OpenFileChannel(interp, argv[1], modeString, prot); + chan = Tcl_OpenFileChannel(interp, arg1, modeString, prot); } else { #ifdef MAC_TCL - Tcl_AppendResult(interp, + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "command pipelines not supported on Macintosh OS", (char *)NULL); return TCL_ERROR; @@ -1013,7 +1013,7 @@ Tcl_OpenCmd(notUsed, interp, argc, argv) int mode, seekFlag, cmdArgc; char **cmdArgv; - if (Tcl_SplitList(interp, argv[1]+1, &cmdArgc, &cmdArgv) != TCL_OK) { + if (Tcl_SplitList(interp, arg1+1, &cmdArgc, &cmdArgv) != TCL_OK) { return TCL_ERROR; } @@ -1045,7 +1045,8 @@ Tcl_OpenCmd(notUsed, interp, argc, argv) return TCL_ERROR; } Tcl_RegisterChannel(interp, chan); - Tcl_AppendResult(interp, Tcl_GetChannelName(chan), (char *) NULL); + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), + Tcl_GetChannelName(chan), (char *) NULL); return TCL_OK; } -- cgit v0.12