📄 fileutil.cpp
字号:
// fileutil.cc// code for fileutil.h// copyright SafeTP Development Group, Inc., 2000 Terms of use are as specified in license.txt#include <stdio.h>#include "fileutil.h" // file module#include "exc.h"MemFileSource::MemFileSource(DataBlock const &obj) : storage(obj){ // these are ptrs instead of embedded because // you can't rely in initialization order of // members#ifdef WIN32 // filesystem hack tmpnam(fname); FILE* fp = fopen(fname,"wb"); fwrite((char*)storage.getData(), 1, storage.getDataLen(), fp); fclose(fp); fsource = new FileSource(fname, true /*pumpAndClose*/);#else stream = new istrstream((char*)storage.getData(), storage.getDataLen()); fsource = new FileSource(*stream, true /*pumpAndClose*/);#endif}MemFileSource::~MemFileSource(){ delete fsource;#ifdef WIN32 // filesystem hack remove(fname);#else delete stream;#endif}MemFileSink::MemFileSink(int maxlen) : storage(maxlen){#ifdef WIN32 // filesystem hack tmpnam(fname); fsink = new FileSink(fname);#else stream = new ostrstream((char*)storage.getData(), maxlen); fsink = new FileSink(*stream);#endif}MemFileSink::~MemFileSink(){ delete fsink;#ifdef WIN32 // filesystem hack remove(fname);#else delete stream;#endif}DataBlock const &MemFileSink::getData(){#ifdef WIN32 // filesystem hack fsink->InputFinished(); // flush to disk FILE* fp = fopen(fname,"rb"); int len = fread((char*)storage.getData(), 1, storage.getAllocated(), fp); storage.setDataLen(len); fclose(fp);#else storage.setDataLen(stream->pcount());#endif return storage;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -