21 #ifndef PKGLIB_FILEUTL_H
22 #define PKGLIB_FILEUTL_H
24 #include <apt-pkg/macros.h>
25 #include <apt-pkg/aptconfiguration.h>
33 #ifndef APT_8_CLEANER_HEADERS
38 #define APT_HAS_GZIP 1
46 enum LocalFlags {AutoClose = (1<<0),Fail = (1<<1),DelOnFail = (1<<2),
47 HitEof = (1<<3), Replace = (1<<4), Compressed = (1<<5) };
50 std::string TemporaryFileName;
56 ReadWrite = ReadOnly | WriteOnly,
60 Atomic = Exclusive | (1 << 4),
63 WriteEmpty = ReadWrite | Create | Empty,
64 WriteExists = ReadWrite,
65 WriteAny = ReadWrite | Create,
66 WriteTemp = ReadWrite | Create | Exclusive,
68 WriteAtomic = ReadWrite | Create | Atomic
70 enum CompressMode { Auto =
'A', None =
'N', Extension =
'E', Gzip =
'G', Bzip2 =
'B', Lzma =
'L', Xz =
'X' };
72 inline bool Read(
void *To,
unsigned long long Size,
bool AllowEof)
74 unsigned long long Jnk;
76 return Read(To,Size,&Jnk);
79 bool Read(
void *To,
unsigned long long Size,
unsigned long long *Actual = 0);
80 char* ReadLine(
char *To,
unsigned long long const Size);
81 bool Write(
const void *From,
unsigned long long Size);
82 bool static Write(
int Fd,
const void *From,
unsigned long long Size);
83 bool Seek(
unsigned long long To);
84 bool Skip(
unsigned long long To);
85 bool Truncate(
unsigned long long To);
86 unsigned long long Tell();
87 unsigned long long Size();
88 unsigned long long FileSize();
89 time_t ModificationTime();
97 __deprecated
bool Read(
void *To,
unsigned long long Size,
unsigned long *Actual)
100 bool const T = Read(To, Size, &R);
105 bool Open(std::string FileName,
unsigned int const Mode,CompressMode Compress,
unsigned long const Perms = 0666);
107 inline bool Open(std::string
const &FileName,
unsigned int const Mode,
unsigned long const Perms = 0666) {
108 return Open(FileName, Mode, None, Perms);
110 bool OpenDescriptor(
int Fd,
unsigned int const Mode, CompressMode Compress,
bool AutoClose=
false);
112 inline bool OpenDescriptor(
int Fd,
unsigned int const Mode,
bool AutoClose=
false) {
113 return OpenDescriptor(Fd, Mode, None, AutoClose);
119 inline int Fd() {
return iFd;};
120 inline void Fd(
int fd) { OpenDescriptor(fd, ReadWrite);};
121 __deprecated gzFile gzFd();
123 inline bool IsOpen() {
return iFd >= 0;};
124 inline bool Failed() {
return (Flags & Fail) == Fail;};
125 inline void EraseOnFailure() {Flags |= DelOnFail;};
126 inline void OpFail() {Flags |= Fail;};
127 inline bool Eof() {
return (Flags & HitEof) == HitEof;};
128 inline bool IsCompressed() {
return (Flags & Compressed) == Compressed;};
129 inline std::string &Name() {
return FileName;};
131 FileFd(std::string FileName,
unsigned int const Mode,
unsigned long Perms = 0666) : iFd(-1), Flags(0), d(NULL)
133 Open(FileName,Mode, None, Perms);
135 FileFd(std::string FileName,
unsigned int const Mode, CompressMode Compress,
unsigned long Perms = 0666) : iFd(-1), Flags(0), d(NULL)
137 Open(FileName,Mode, Compress, Perms);
139 FileFd() : iFd(-1), Flags(AutoClose), d(NULL) {};
140 FileFd(
int const Fd,
unsigned int const Mode = ReadWrite, CompressMode Compress = None) : iFd(-1), Flags(0), d(NULL)
142 OpenDescriptor(Fd, Mode, Compress);
144 FileFd(
int const Fd,
bool const AutoClose) : iFd(-1), Flags(0), d(NULL)
146 OpenDescriptor(Fd, ReadWrite, None, AutoClose);
155 bool FileFdErrno(
const char* Function,
const char* Description,...) __like_printf(3) __cold;
156 bool FileFdError(
const char* Description,...) __like_printf(2) __cold;
159 bool RunScripts(
const char *Cnf);
161 int GetLock(std::string File,
bool Errors =
true);
162 bool FileExists(std::string File);
163 bool RealFileExists(std::string File);
164 bool DirectoryExists(std::string
const &Path) __attrib_const;
165 bool CreateDirectory(std::string
const &Parent, std::string
const &Path);
166 time_t GetModificationTime(std::string
const &Path);
168 std::string GetTempDir();
176 bool CreateAPTDirectoryIfNeeded(std::string
const &Parent, std::string
const &Path);
178 std::vector<std::string> GetListOfFilesInDir(std::string
const &Dir, std::string
const &Ext,
179 bool const &SortList,
bool const &AllowNoExt=
false);
180 std::vector<std::string> GetListOfFilesInDir(std::string
const &Dir, std::vector<std::string>
const &Ext,
181 bool const &SortList);
182 std::vector<std::string> GetListOfFilesInDir(std::string
const &Dir,
bool SortList);
183 std::string SafeGetCWD();
184 void SetCloseExec(
int Fd,
bool Close);
185 void SetNonBlock(
int Fd,
bool Block);
186 bool WaitFd(
int Fd,
bool write =
false,
unsigned long timeout = 0);
188 pid_t ExecFork(std::set<int> keep_fds);
189 void MergeKeepFdsFromConfiguration(std::set<int> &keep_fds);
190 bool ExecWait(pid_t Pid,
const char *Name,
bool Reap =
false);
193 std::string flNotDir(std::string File);
194 std::string flNotFile(std::string File);
195 std::string flNoLink(std::string File);
196 std::string flExtension(std::string File);
197 std::string flCombine(std::string Dir,std::string File);
200 std::vector<std::string> Glob(std::string
const &pattern,
int flags=0);
Definition: fileutl.cc:65
Representation of supported compressors.
Definition: aptconfiguration.h:95