working apt-get source
[ntk/apt.git] / apt-pkg / contrib / fileutl.h
CommitLineData
578bfd0a
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
36375005 3// $Id: fileutl.h,v 1.16 1999/04/07 05:30:18 jgg 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
35 enum LocalFlags {AutoClose = (1<<0),Fail = (1<<1),DelOnFail = (1<<2)};
36 unsigned long Flags;
37 string FileName;
38
39 public:
d38b7b3d 40 enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny};
578bfd0a
AL
41
42 bool Read(void *To,unsigned long Size);
a05599f1 43 bool Write(const void *From,unsigned long Size);
578bfd0a 44 bool Seek(unsigned long To);
6d5dd02a 45 bool Truncate(unsigned long To);
7f25bdff 46 unsigned long Tell();
578bfd0a
AL
47 unsigned long Size();
48 bool Close();
49
50 // Simple manipulators
51 inline int Fd() {return iFd;};
36375005 52 inline void Fd(int fd) {iFd = fd1;};
578bfd0a
AL
53 inline bool IsOpen() {return iFd >= 0;};
54 inline bool Failed() {return (Flags & Fail) == Fail;};
55 inline void EraseOnFailure() {Flags |= DelOnFail;};
56 inline void OpFail() {Flags |= Fail;};
c7b5ce1c
AL
57 inline string &Name() {return FileName;};
58
8e06abb2 59 FileFd(string FileName,OpenMode Mode,unsigned long Perms = 0666);
36375005 60 FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose) {};
8e06abb2
AL
61 FileFd(int Fd,bool) : iFd(Fd), Flags(0) {};
62 virtual ~FileFd();
578bfd0a
AL
63};
64
8b89e57f 65bool CopyFile(FileFd &From,FileFd &To);
578bfd0a
AL
66int GetLock(string File,bool Errors = true);
67bool FileExists(string File);
68string SafeGetCWD();
3b5421b4
AL
69void SetCloseExec(int Fd,bool Close);
70void SetNonBlock(int Fd,bool Block);
1084d58a 71bool WaitFd(int Fd,bool write = false,unsigned long timeout = 0);
578bfd0a 72
8ce4327b
AL
73// File string manipulators
74string flNotDir(string File);
d38b7b3d 75string flNotFile(string File);
8ce4327b 76
578bfd0a 77#endif