From: Vlad S. <ser...@us...> - 2005-06-08 20:13:38
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8706/nsd Modified Files: tclcmds.c tclresp.c Log Message: added ns_returnbinary command which returns binary data without conversion/encoding Index: tclcmds.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclcmds.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** tclcmds.c 18 Apr 2005 13:04:14 -0000 1.10 --- tclcmds.c 8 Jun 2005 20:13:12 -0000 1.11 *************** *** 142,145 **** --- 142,146 ---- NsTclReturnNoticeObjCmd, NsTclReturnObjCmd, + NsTclReturnBinaryObjCmd, NsTclReturnRedirectObjCmd, NsTclReturnUnauthorizedObjCmd, *************** *** 480,483 **** --- 481,485 ---- {"ns_returnunauthorized", NULL, NsTclReturnUnauthorizedObjCmd}, {"ns_returnnotfound", NULL, NsTclReturnNotFoundObjCmd}, + {"ns_returnbinary", NULL, NsTclReturnBinaryObjCmd}, /* Index: tclresp.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclresp.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tclresp.c 27 Apr 2005 00:20:20 -0000 1.3 --- tclresp.c 8 Jun 2005 20:13:12 -0000 1.4 *************** *** 192,195 **** --- 192,236 ---- *---------------------------------------------------------------------- * + * NsTclReturnBinaryObjCmd -- + * + * Implements ns_returnbinary. Send complete response to client with + * given string as body. + * + * Results: + * Tcl result. + * + * Side effects: + * Connection will be closed. + * + *---------------------------------------------------------------------- + */ + + int + NsTclReturnBinaryObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) + { + Ns_Conn *conn; + unsigned char *data; + int len, status, result; + + if (objc != 4) { + Tcl_WrongNumArgs(interp, 1, objv, "status type data"); + return TCL_ERROR; + } + if (GetConn(arg, interp, &conn) != TCL_OK) { + return TCL_ERROR; + } + if (Tcl_GetIntFromObj(interp, objv[1], &status) != TCL_OK) { + return TCL_ERROR; + } + data = Tcl_GetByteArrayFromObj(objv[3], &len); + result = Ns_ConnReturnData(conn, status, data, len, Tcl_GetString(objv[2])); + + return Result(interp, result); + } + + + /* + *---------------------------------------------------------------------- + * * NsTclRespondObjCmd -- * |