Posted to tcl by dgp at Thu Jan 16 19:58:29 GMT 2014view raw
- #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);
- }