<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Tcl Channel Output</title>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <? prevnext "<h1>Tcl Channel Output</h1>" ?>

   <pre>
<span class="keyword">static</span> <span class="type">int</span>
<span class="function-name">outputproc</span>(ClientData instancedata, CONST84 <span class="type">char</span> *<span class="variable-name">buf</span>, <span class="type">int</span>
<span class="variable-name">toWrite</span>, <span class="type">int</span> *<span class="variable-name">errorCodePtr</span>)
{
    rivet_server_conf *rsc = (rivet_server_conf *)instancedata;
    rivet_interp_globals *globals =
	Tcl_GetAssocData(rsc-&gt;server_interp, <span class="string">&quot;rivet&quot;</span>, NULL);

    TclWeb_PrintHeaders(globals-&gt;req);
    <span class="keyword">if</span> (globals-&gt;req-&gt;content_sent == 0)
    {
	ap_rwrite(buf, toWrite, globals-&gt;r);
	ap_rflush(globals-&gt;r);
    }
    <span class="keyword">return</span> toWrite;
}
</pre>

    <?footer?>
  </body>
</html>
