// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: fileutl.cc,v 1.5 1998/07/15 05:56:43 jgg Exp $
+// $Id: fileutl.cc,v 1.6 1998/07/19 04:42:12 jgg Exp $
/* ######################################################################
File Utilities
// CopyFile - Buffered copy of a file /*{{{*/
// ---------------------------------------------------------------------
/* The caller is expected to set things so that failure causes erasure */
-bool CopyFile(File From,File To)
+bool CopyFile(FileFd From,FileFd To)
{
if (From.IsOpen() == false || To.IsOpen() == false)
return false;
}
/*}}}*/
-// File::File - Open a file /*{{{*/
+// FileFd::FileFd - Open a file /*{{{*/
// ---------------------------------------------------------------------
/* The most commonly used open mode combinations are given with Mode */
-File::File(string FileName,OpenMode Mode, unsigned long Perms)
+FileFd::FileFd(string FileName,OpenMode Mode, unsigned long Perms)
{
Flags = AutoClose;
switch (Mode)
case WriteExists:
iFd = open(FileName.c_str(),O_RDWR);
break;
+
+ // Dont use this in public directories
+ case LockEmpty:
+ iFd = open(FileName.c_str(),O_RDWR | O_CREAT | O_TRUNC,Perms);
+ break;
}
if (iFd < 0)
this->FileName = FileName;
}
/*}}}*/
-// File::~File - Closes the file /*{{{*/
+// FileFd::~File - Closes the file /*{{{*/
// ---------------------------------------------------------------------
/* If the proper modes are selected then we close the Fd and possibly
unlink the file on error. */
-File::~File()
+FileFd::~FileFd()
{
Close();
}
/*}}}*/
-// File::Read - Read a bit of the file /*{{{*/
+// FileFd::Read - Read a bit of the file /*{{{*/
// ---------------------------------------------------------------------
/* */
-bool File::Read(void *To,unsigned long Size)
+bool FileFd::Read(void *To,unsigned long Size)
{
if (read(iFd,To,Size) != (signed)Size)
{
return true;
}
/*}}}*/
-// File::Write - Write to the file /*{{{*/
+// FileFd::Write - Write to the file /*{{{*/
// ---------------------------------------------------------------------
/* */
-bool File::Write(void *From,unsigned long Size)
+bool FileFd::Write(void *From,unsigned long Size)
{
if (write(iFd,From,Size) != (signed)Size)
{
return true;
}
/*}}}*/
-// File::Seek - Seek in the file /*{{{*/
+// FileFd::Seek - Seek in the file /*{{{*/
// ---------------------------------------------------------------------
/* */
-bool File::Seek(unsigned long To)
+bool FileFd::Seek(unsigned long To)
{
if (lseek(iFd,To,SEEK_SET) != (signed)To)
{
return true;
}
/*}}}*/
-// File::Size - Return the size of the file /*{{{*/
+// FileFd::Size - Return the size of the file /*{{{*/
// ---------------------------------------------------------------------
/* */
-unsigned long File::Size()
+unsigned long FileFd::Size()
{
struct stat Buf;
if (fstat(iFd,&Buf) != 0)
return Buf.st_size;
}
/*}}}*/
-// File::Close - Close the file if the close flag is set /*{{{*/
+// FileFd::Close - Close the file if the close flag is set /*{{{*/
// ---------------------------------------------------------------------
/* */
-bool File::Close()
+bool FileFd::Close()
{
bool Res = true;
if ((Flags & AutoClose) == AutoClose)
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: fileutl.h,v 1.3 1998/07/12 23:58:49 jgg Exp $
+// $Id: fileutl.h,v 1.4 1998/07/19 04:42:13 jgg Exp $
/* ######################################################################
File Utilities
#include <string>
-class File
+class FileFd
{
protected:
int iFd;
string FileName;
public:
- enum OpenMode {ReadOnly,WriteEmpty,WriteExists};
+ enum OpenMode {ReadOnly,WriteEmpty,WriteExists,LockEmpty};
bool Read(void *To,unsigned long Size);
bool Write(void *From,unsigned long Size);
inline void EraseOnFailure() {Flags |= DelOnFail;};
inline void OpFail() {Flags |= Fail;};
- File(string FileName,OpenMode Mode,unsigned long Perms = 0666);
- File(int Fd) : iFd(Fd), Flags(AutoClose) {};
- File(int Fd,bool) : iFd(Fd), Flags(0) {};
- virtual ~File();
+ FileFd(string FileName,OpenMode Mode,unsigned long Perms = 0666);
+ FileFd(int Fd) : iFd(Fd), Flags(AutoClose) {};
+ FileFd(int Fd,bool) : iFd(Fd), Flags(0) {};
+ virtual ~FileFd();
};
-bool CopyFile(string From,string To);
+bool CopyFile(FileFd From,FileFd To);
int GetLock(string File,bool Errors = true);
bool FileExists(string File);
string SafeGetCWD();
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: mmap.cc,v 1.6 1998/07/15 05:56:44 jgg Exp $
+// $Id: mmap.cc,v 1.7 1998/07/19 04:42:14 jgg Exp $
/* ######################################################################
MMap Class - Provides 'real' mmap or a faked mmap using read().
// MMap::MMap - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-MMap::MMap(File &F,unsigned long Flags) : Fd(F), Flags(Flags), iSize(0),
+MMap::MMap(FileFd &F,unsigned long Flags) : Fd(F), Flags(Flags), iSize(0),
Base(0)
{
if ((Flags & NoImmMap) != NoImmMap)
// DynamicMMap::DynamicMMap - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-DynamicMMap::DynamicMMap(File &F,unsigned long Flags,unsigned long WorkSpace) :
+DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace) :
MMap(F,Flags | NoImmMap), WorkSpace(WorkSpace)
{
unsigned long EndOfFile = Fd.Size();
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: mmap.h,v 1.5 1998/07/15 05:56:45 jgg Exp $
+// $Id: mmap.h,v 1.6 1998/07/19 04:42:15 jgg Exp $
/* ######################################################################
MMap Class - Provides 'real' mmap or a faked mmap using read().
{
protected:
- File &Fd;
+ FileFd &Fd;
unsigned long Flags;
unsigned long iSize;
void *Base;
bool Sync();
bool Sync(unsigned long Start,unsigned long Stop);
- MMap(File &F,unsigned long Flags);
+ MMap(FileFd &F,unsigned long Flags);
virtual ~MMap();
};
inline unsigned long WriteString(string S) {return WriteString(S.begin(),S.size());};
void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;};
- DynamicMMap(File &F,unsigned long Flags,unsigned long WorkSpace = 1024*1024);
+ DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace = 1024*1024);
virtual ~DynamicMMap();
};
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: deblistparser.cc,v 1.7 1998/07/16 06:08:42 jgg Exp $
+// $Id: deblistparser.cc,v 1.8 1998/07/19 04:42:16 jgg Exp $
/* ######################################################################
Package Cache Generator - Generator for the cache structure.
// ListParser::debListParser - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-debListParser::debListParser(File &File) : Tags(File)
+debListParser::debListParser(FileFd &File) : Tags(File)
{
}
/*}}}*/
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: deblistparser.h,v 1.4 1998/07/12 23:58:54 jgg Exp $
+// $Id: deblistparser.h,v 1.5 1998/07/19 04:42:17 jgg Exp $
/* ######################################################################
Debian Package List Parser - This implements the abstract parser
virtual bool Step();
- debListParser(File &File);
+ debListParser(FileFd &File);
};
#endif
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: tagfile.cc,v 1.9 1998/07/19 04:22:06 jgg Exp $
+// $Id: tagfile.cc,v 1.10 1998/07/19 04:42:10 jgg Exp $
/* ######################################################################
Fast scanner for RFC-822 type header information
// TagFile::pkgTagFile - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-pkgTagFile::pkgTagFile(File &Fd,unsigned long Size) : Fd(Fd), Size(Size)
+pkgTagFile::pkgTagFile(FileFd &Fd,unsigned long Size) : Fd(Fd), Size(Size)
{
Buffer = new char[Size];
Start = End = Buffer;
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: tagfile.h,v 1.6 1998/07/19 04:22:07 jgg Exp $
+// $Id: tagfile.h,v 1.7 1998/07/19 04:42:11 jgg Exp $
/* ######################################################################
Fast scanner for RFC-822 type header information
class pkgTagFile
{
- File &Fd;
+ FileFd &Fd;
char *Buffer;
char *Start;
char *End;
inline unsigned long Offset() {return iOffset;};
bool Jump(pkgTagSection &Tag,unsigned long Offset);
- pkgTagFile(File &F,unsigned long Size = 32*1024);
+ pkgTagFile(FileFd &F,unsigned long Size = 32*1024);
};
#endif
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: apt-cache.cc,v 1.3 1998/07/19 04:22:10 jgg Exp $
+// $Id: apt-cache.cc,v 1.4 1998/07/19 04:42:18 jgg Exp $
/* ######################################################################
apt-cache - Manages the cache file.
return _error->Error("Package file %s is out of sync.",I.FileName());
}
- File PkgF(I.FileName(),File::ReadOnly);
+ FileFd PkgF(I.FileName(),FileFd::ReadOnly);
if (_error->PendingError() == true)
{
delete [] Buffer;
string Ver;
// Open the cache
- File CacheF(CacheFile,File::WriteEmpty);
+ FileFd CacheF(CacheFile,FileFd::WriteEmpty);
if (_error->PendingError() == true)
return false;
cout << FileName << endl;
// Do the merge
- File TagF(FileName.c_str(),File::ReadOnly);
+ FileFd TagF(FileName.c_str(),FileFd::ReadOnly);
debListParser Parser(TagF);
if (_error->PendingError() == true)
return _error->Error("Problem opening %s",FileName.c_str());
}
// Open the cache file
- File CacheF(CacheFile,File::ReadOnly);
+ FileFd CacheF(CacheFile,FileFd::ReadOnly);
if (_error->PendingError() == true)
break;