📄 htfwrite.c
字号:
/* HTFWrite.c** BASIC FILE WRITER STREAM**** (c) COPYRIGHT MIT 1995.** Please first read the full copyright statement in the file COPYRIGH.** @(#) $Id: HTFWrite.c,v 2.46 1999/02/22 22:10:11 frystyk Exp $**** This version of the stream object just writes to a C file.** The file is assumed open and left open.**** Bugs:** strings written must be less than buffer size.**** History:** HFN: wrote it** HWL: converted the caching scheme to be hierachical by taking** AL code from Deamon** HFN: moved cache code to HTCache module***//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTFWrite.h" /* Implemented here */struct _HTStream { const HTStreamClass *isa; FILE * fp; BOOL leave_open; /* Close file when free? */};/* ------------------------------------------------------------------------- */PRIVATE int HTFWriter_put_character (HTStream * me, char c){ return (fputc(c, me->fp) == EOF) ? HT_ERROR : HT_OK;}PRIVATE int HTFWriter_put_string (HTStream * me, const char* s){ if (*s) /* For vms :-( 10/04-94 */ return (fputs(s, me->fp) == EOF) ? HT_ERROR : HT_OK; return HT_OK;}PRIVATE int HTFWriter_flush (HTStream * me){ return (fflush(me->fp) == EOF) ? HT_ERROR : HT_OK;}PRIVATE int HTFWriter_write (HTStream * me, const char* s, int l){ int status ; status = (fwrite(s, 1, l, me->fp) != l) ? HT_ERROR : HT_OK ; if (l > 1 && status == HT_OK) (void) HTFWriter_flush(me); return status ;}PRIVATE int HTFWriter_free (HTStream * me){ if (me) { if (me->leave_open != YES) fclose(me->fp); else HTFWriter_flush(me); HT_FREE(me); } return HT_OK;}PRIVATE int HTFWriter_abort (HTStream * me, HTList * e){ HTTRACE(STREAM_TRACE, "FileWriter.. ABORTING...\n"); if (me) { if (me->leave_open != YES) fclose(me->fp); HT_FREE(me); } return HT_ERROR;}PRIVATE const HTStreamClass HTFWriter = /* As opposed to print etc */{ "FileWriter", HTFWriter_flush, HTFWriter_free, HTFWriter_abort, HTFWriter_put_character, HTFWriter_put_string, HTFWriter_write};PUBLIC HTStream * HTFWriter_new (HTRequest * request, FILE * fp, BOOL leave_open){ HTStream * me = NULL; if (!fp) { HTTRACE(STREAM_TRACE, "FileWriter.. Bad file descriptor\n"); return HTErrorStream(); } if ((me = (HTStream *) HT_CALLOC(1, sizeof(HTStream))) == NULL) HT_OUTOFMEM("HTFWriter_new"); me->isa = &HTFWriter; me->fp = fp; me->leave_open = leave_open; return me;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -