RSS Git Download  Clone
Raw View History
Blames found: 30 Mode: text/x-c++src Binary: false


Hang on, we reloading big blames...
/******************************************************************************* * BFile.cc BEAM BFile access class * T.Barnaby, BEAM Ltd, 27/11/95 ******************************************************************************* */ #include <stdarg.h> #include <BFile.h> #include <sys/stat.h> #include <string.h> #include <errno.h>
#include <unistd.h>
#define STRBUF 10240 BFile::BFile(){ ofile = NULL; } BFile::BFile(const BFile& file){
open(file.ofileName, file.omode);
} BFile& BFile::operator=(const BFile& file){ open(file.ofileName, file.omode); return *this; } BFile::~BFile(){ close(); } BError BFile::open(BString name, BString mode){ BError err; ofileName = name; omode = mode;
if(! (ofile = fopen64(name, mode))) err.set(-errno, BString("Cannot open file: ") + name + ": " + strerror(errno));
return err; } BError BFile::open(FILE* file){ BError err; ofile = file;
return err; } BError BFile::open(int fd, BString mode){ BError err; if(! (ofile = fdopen(fd, mode))) err.set(-errno, strerror(errno));
return err; } BError BFile::close(){ BError err;
int e;
if(ofile){
if(e = fclose(ofile)) err.set(-errno, strerror(errno));
ofile = 0; } return err; }
int BFile::isOpen(){ return (ofile != 0);
}
int BFile::isEnd(){ return feof(ofile);
}
FILE* BFile::getFd(){ return ofile; } BUInt64 BFile::length(){ struct stat64 s;
fstat64(fileno(ofile), &s);
return s.st_size; } int BFile::read(void* buf, int nbytes){ return fread(buf, 1, nbytes, ofile); } int BFile::readString(BString& str){ char buf[STRBUF];
if(fgets(buf, STRBUF)){
str = buf; return str.len(); } else { return 0; } }
char* BFile::fgets(char* buf, size_t size){ return ::fgets(buf, size, ofile); }
int BFile::write(const void* buf, int nbytes){ return fwrite(buf, 1, nbytes, ofile); } int BFile::writeString(const BString& str){ return fputs(str.retStr(), ofile); }
int BFile::seek(BUInt64 pos){ return fseeko64(ofile, pos, 0);
}
BUInt64 BFile::position(){ return ftello64(ofile); }
int BFile::setVBuf(char* buf, int mode, size_t size){ return setvbuf(ofile, buf, mode, size); } int BFile::printf(const char* fmt, ...){ va_list ap; va_start(ap, fmt); return vfprintf(ofile, fmt, ap); }
BError BFile::truncate(){ BError err; if(ftruncate(fileno(ofile), 0) < 0) err.set(-errno, strerror(errno)); return err; } BError BFile::flush(){ BError err; if(::fflush(ofile) != 0) err.set(-errno, strerror(errno)); return err; } BString BFile::fileName(){ return ofileName; }