The fc_net_write function is used to send a header and/or footer and a file that exists somewhere in the system. The fileName should be the full path name of a file.
PRInt32 fc_net_write(const char *fileName, const char *hdr, const char *ftr, PRUint32 hlen, PRUint32 flen, PRUint32 flags, PRIntervalTime timeout, Session *sn, Request *rq);
IO_OKAY if successful.
IO_ERROR if an error occurs.
FC_ERROR if an error in file handling occurs.
The following table describes parameters for the fc_net_write function.
Table 11–5 fc_net_write parameters| 
 Parameter  | 
 Description  | 
|---|---|
| 
 const char *fileName  | 
 File to be inserted.  | 
| 
 const char *hdr  | 
 Any header data (which can be NULL).  | 
| 
 const char *ftr  | 
 Any footer data (which can be NULL).  | 
| 
 PRUint32 hlen  | 
 Length of the header data in bytes (which can be 0).  | 
| 
 PRUint32 flen  | 
 Length of the footer data in bytes (which can be 0).  | 
| 
 PRUint32 flags  | 
 ORed directives for this function (see the Flags table, below).  | 
| 
 PRIntervalTime timeout  | 
 Timeout before this function aborts.  | 
| 
 Request *rq  | 
 Pointer to the request.  | 
| 
 Session *sn  | 
 Pointer to the session.  | 
The following table describes flags for fc_net_write.
Table 11–6 Flags for fc_net_write| 
 Flag  | 
 Description  | 
|---|---|
| 
 FC_CNTLEN  | 
 Supplies the Content-Length header and does a PROTOCOL_START_RESPONSE.  | 
| 
 FC_PROTO  | 
 Does a PROTOCOL_START_RESPONSE.  | 
const char *fileName = "/docs/myads/file1.ad";
char *hdr = GenHdr(); // Implemented by plugin
char *ftr = GenFtr(); // Implemented by plugin
if(fc_net_write(fileName, hdr, ftr, strlen(hdr), strlen(ftr),
    FC_CNTLEN, PR_INTERVAL_NO_TIMEOUT, sn, rq) != IO_OKEY)
{
    ereport(LOG_FAILURE, "fc_net_write() failed");
    return REQ_ABORTED;
}