21 #ifndef PKGLIB_FILEUTL_H
22 #define PKGLIB_FILEUTL_H
24 #include <apt-pkg/macros.h>
25 #include <apt-pkg/aptconfiguration.h>
32 #ifndef APT_8_CLEANER_HEADERS
37 #define APT_HAS_GZIP 1
45 enum LocalFlags {AutoClose = (1<<0),Fail = (1<<1),DelOnFail = (1<<2),
46 HitEof = (1<<3), Replace = (1<<4), Compressed = (1<<5) };
49 std::string TemporaryFileName;
55 ReadWrite = ReadOnly | WriteOnly,
59 Atomic = Exclusive | (1 << 4),
62 WriteEmpty = ReadWrite | Create | Empty,
63 WriteExists = ReadWrite,
64 WriteAny = ReadWrite | Create,
65 WriteTemp = ReadWrite | Create | Exclusive,
67 WriteAtomic = ReadWrite | Create | Atomic
69 enum CompressMode { Auto =
'A', None =
'N', Extension =
'E', Gzip =
'G', Bzip2 =
'B', Lzma =
'L', Xz =
'X' };
71 inline bool Read(
void *To,
unsigned long long Size,
bool AllowEof)
73 unsigned long long Jnk;
75 return Read(To,Size,&Jnk);
78 bool Read(
void *To,
unsigned long long Size,
unsigned long long *Actual = 0);
79 char* ReadLine(
char *To,
unsigned long long const Size);
80 bool Write(
const void *From,
unsigned long long Size);
81 bool static Write(
int Fd,
const void *From,
unsigned long long Size);
82 bool Seek(
unsigned long long To);
83 bool Skip(
unsigned long long To);
84 bool Truncate(
unsigned long long To);
85 unsigned long long Tell();
86 unsigned long long Size();
87 unsigned long long FileSize();
88 time_t ModificationTime();
96 __deprecated
bool Read(
void *To,
unsigned long long Size,
unsigned long *Actual)
99 bool const T = Read(To, Size, &R);
104 bool Open(std::string FileName,
unsigned int const Mode,CompressMode Compress,
unsigned long const Perms = 0666);
106 inline bool Open(std::string
const &FileName,
unsigned int const Mode,
unsigned long const Perms = 0666) {
107 return Open(FileName, Mode, None, Perms);
109 bool OpenDescriptor(
int Fd,
unsigned int const Mode, CompressMode Compress,
bool AutoClose=
false);
111 inline bool OpenDescriptor(
int Fd,
unsigned int const Mode,
bool AutoClose=
false) {
112 return OpenDescriptor(Fd, Mode, None, AutoClose);
118 inline int Fd() {
return iFd;};
119 inline void Fd(
int fd) { OpenDescriptor(fd, ReadWrite);};
120 __deprecated gzFile gzFd();
122 inline bool IsOpen() {
return iFd >= 0;};
123 inline bool Failed() {
return (Flags & Fail) == Fail;};
124 inline void EraseOnFailure() {Flags |= DelOnFail;};
125 inline void OpFail() {Flags |= Fail;};
126 inline bool Eof() {
return (Flags & HitEof) == HitEof;};
127 inline bool IsCompressed() {
return (Flags & Compressed) == Compressed;};
128 inline std::string &Name() {
return FileName;};
130 FileFd(std::string FileName,
unsigned int const Mode,
unsigned long Perms = 0666) : iFd(-1), Flags(0), d(NULL)
132 Open(FileName,Mode, None, Perms);
134 FileFd(std::string FileName,
unsigned int const Mode, CompressMode Compress,
unsigned long Perms = 0666) : iFd(-1), Flags(0), d(NULL)
136 Open(FileName,Mode, Compress, Perms);
138 FileFd() : iFd(-1), Flags(AutoClose), d(NULL) {};
139 FileFd(
int const Fd,
unsigned int const Mode = ReadWrite, CompressMode Compress = None) : iFd(-1), Flags(0), d(NULL)
141 OpenDescriptor(Fd, Mode, Compress);
143 FileFd(
int const Fd,
bool const AutoClose) : iFd(-1), Flags(0), d(NULL)
145 OpenDescriptor(Fd, ReadWrite, None, AutoClose);
154 bool FileFdErrno(
const char* Function,
const char* Description,...) __like_printf(3) __cold;
155 bool FileFdError(
const char* Description,...) __like_printf(2) __cold;
158 bool RunScripts(
const char *Cnf);
160 int GetLock(std::string File,
bool Errors =
true);
161 bool FileExists(std::string File);
162 bool RealFileExists(std::string File);
163 bool DirectoryExists(std::string
const &Path) __attrib_const;
164 bool CreateDirectory(std::string
const &Parent, std::string
const &Path);
165 time_t GetModificationTime(std::string
const &Path);
173 bool CreateAPTDirectoryIfNeeded(std::string
const &Parent, std::string
const &Path);
175 std::vector<std::string> GetListOfFilesInDir(std::string
const &Dir, std::string
const &Ext,
176 bool const &SortList,
bool const &AllowNoExt=
false);
177 std::vector<std::string> GetListOfFilesInDir(std::string
const &Dir, std::vector<std::string>
const &Ext,
178 bool const &SortList);
179 std::vector<std::string> GetListOfFilesInDir(std::string
const &Dir,
bool SortList);
180 std::string SafeGetCWD();
181 void SetCloseExec(
int Fd,
bool Close);
182 void SetNonBlock(
int Fd,
bool Block);
183 bool WaitFd(
int Fd,
bool write =
false,
unsigned long timeout = 0);
185 bool ExecWait(pid_t Pid,
const char *Name,
bool Reap =
false);
188 std::string flNotDir(std::string File);
189 std::string flNotFile(std::string File);
190 std::string flNoLink(std::string File);
191 std::string flExtension(std::string File);
192 std::string flCombine(std::string Dir,std::string File);
195 std::vector<std::string> Glob(std::string
const &pattern,
int flags=0);