]> git.saurik.com Git - apt.git/blame - apt-pkg/contrib/fileutl.h
fixed typo in fileutl.cc (damn you, studly caps...)
[apt.git] / apt-pkg / contrib / fileutl.h
CommitLineData
578bfd0a
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
f08fcf34 3// $Id: fileutl.h,v 1.24 2001/03/03 22:36:20 tausq Exp $
578bfd0a
AL
4/* ######################################################################
5
6 File Utilities
7
8 CopyFile - Buffered copy of a single file
9 GetLock - dpkg compatible lock file manipulation (fcntl)
10 FileExists - Returns true if the file exists
11 SafeGetCWD - Returns the CWD in a string with overrun protection
12
13 The file class is a handy abstraction for various functions+classes
14 that need to accept filenames.
15
16 This source is placed in the Public Domain, do with it what you will
17 It was originally written by Jason Gunthorpe.
18
19 ##################################################################### */
20 /*}}}*/
578bfd0a
AL
21#ifndef PKGLIB_FILEUTL_H
22#define PKGLIB_FILEUTL_H
23
6c139d6e 24#ifdef __GNUG__
094a497d 25#pragma interface "apt-pkg/fileutl.h"
6c139d6e
AL
26#endif
27
578bfd0a
AL
28#include <string>
29
8e06abb2 30class FileFd
578bfd0a
AL
31{
32 protected:
33 int iFd;
34
ddc1d8d0
AL
35 enum LocalFlags {AutoClose = (1<<0),Fail = (1<<1),DelOnFail = (1<<2),
36 HitEof = (1<<3)};
578bfd0a
AL
37 unsigned long Flags;
38 string FileName;
39
40 public:
f08fcf34 41 enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp};
578bfd0a 42
ddc1d8d0 43 bool Read(void *To,unsigned long Size,bool AllowEof = false);
a05599f1 44 bool Write(const void *From,unsigned long Size);
578bfd0a 45 bool Seek(unsigned long To);
727f18af 46 bool Skip(unsigned long To);
6d5dd02a 47 bool Truncate(unsigned long To);
7f25bdff 48 unsigned long Tell();
578bfd0a 49 unsigned long Size();
13d87e2e 50 bool Open(string FileName,OpenMode Mode,unsigned long Perms = 0666);
578bfd0a 51 bool Close();
b2e465d6
AL
52 bool Sync();
53
578bfd0a
AL
54 // Simple manipulators
55 inline int Fd() {return iFd;};
869f717a 56 inline void Fd(int fd) {iFd = fd;};
578bfd0a
AL
57 inline bool IsOpen() {return iFd >= 0;};
58 inline bool Failed() {return (Flags & Fail) == Fail;};
59 inline void EraseOnFailure() {Flags |= DelOnFail;};
60 inline void OpFail() {Flags |= Fail;};
ddc1d8d0 61 inline bool Eof() {return (Flags & HitEof) == HitEof;};
c7b5ce1c
AL
62 inline string &Name() {return FileName;};
63
13d87e2e
AL
64 FileFd(string FileName,OpenMode Mode,unsigned long Perms = 0666) : iFd(-1),
65 Flags(0)
66 {
67 Open(FileName,Mode,Perms);
68 };
36375005 69 FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose) {};
8e06abb2
AL
70 FileFd(int Fd,bool) : iFd(Fd), Flags(0) {};
71 virtual ~FileFd();
578bfd0a
AL
72};
73
8b89e57f 74bool CopyFile(FileFd &From,FileFd &To);
578bfd0a
AL
75int GetLock(string File,bool Errors = true);
76bool FileExists(string File);
77string SafeGetCWD();
3b5421b4
AL
78void SetCloseExec(int Fd,bool Close);
79void SetNonBlock(int Fd,bool Block);
1084d58a 80bool WaitFd(int Fd,bool write = false,unsigned long timeout = 0);
54676e1a 81int ExecFork();
ddc1d8d0 82bool ExecWait(int Pid,const char *Name,bool Reap = false);
578bfd0a 83
8ce4327b
AL
84// File string manipulators
85string flNotDir(string File);
d38b7b3d 86string flNotFile(string File);
421c8d10 87string flNoLink(string File);
b2e465d6
AL
88string flExtension(string File);
89string flCombine(string Dir,string File);
8ce4327b 90
578bfd0a 91#endif