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 --
*
|