Posted to tcl by dgp at Thu Jan 16 19:58:29 GMT 2014view pretty
#include <string.h> #include <tcl.h> #include <tk.h> int Write(ClientData cd, Tcl_Interp *interp, int argc, const char **argv) { Tcl_Channel channel; int mode; if (argc != 2) { Tcl_SetObjResult(interp, Tcl_NewStringObj("syntax!", -1)); return TCL_ERROR; } if ((channel = Tcl_GetChannel(interp, "stdout", &mode)) == NULL) { return TCL_ERROR; } if (!(mode & TCL_WRITABLE)) { Tcl_SetObjResult(interp, Tcl_NewStringObj("not writable", -1)); return TCL_ERROR; } Tcl_Write(channel, argv[1], strlen(argv[1])); return TCL_OK; } int Tcl_AppInit(Tcl_Interp *interp) { if (Tcl_Init(interp) != TCL_OK) { return TCL_ERROR; } Tcl_CreateCommand(interp, "write", Write, NULL, NULL); if (Tcl_Eval(interp, "write [info patchlevel]") != TCL_OK) { return TCL_ERROR; } return TCL_OK; } int main(int argc, char **argv) { Tcl_FindExecutable(argv[0]); Tk_Main(argc, argv, Tcl_AppInit); }