/src/mozilla-central/tools/fuzzing/libfuzzer/FuzzerIO.h
Line | Count | Source |
1 | | //===- FuzzerIO.h - Internal header for IO utils ----------------*- C++ -* ===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | // IO interface. |
10 | | //===----------------------------------------------------------------------===// |
11 | | |
12 | | #ifndef LLVM_FUZZER_IO_H |
13 | | #define LLVM_FUZZER_IO_H |
14 | | |
15 | | #include "FuzzerDefs.h" |
16 | | |
17 | | namespace fuzzer { |
18 | | |
19 | | long GetEpoch(const std::string &Path); |
20 | | |
21 | | Unit FileToVector(const std::string &Path, size_t MaxSize = 0, |
22 | | bool ExitOnError = true); |
23 | | |
24 | | std::string FileToString(const std::string &Path); |
25 | | |
26 | | void CopyFileToErr(const std::string &Path); |
27 | | |
28 | | void WriteToFile(const Unit &U, const std::string &Path); |
29 | | |
30 | | void ReadDirToVectorOfUnits(const char *Path, Vector<Unit> *V, |
31 | | long *Epoch, size_t MaxSize, bool ExitOnError); |
32 | | |
33 | | // Returns "Dir/FileName" or equivalent for the current OS. |
34 | | std::string DirPlusFile(const std::string &DirPath, |
35 | | const std::string &FileName); |
36 | | |
37 | | // Returns the name of the dir, similar to the 'dirname' utility. |
38 | | std::string DirName(const std::string &FileName); |
39 | | |
40 | | // Returns path to a TmpDir. |
41 | | std::string TmpDir(); |
42 | | |
43 | | bool IsInterestingCoverageFile(const std::string &FileName); |
44 | | |
45 | | void DupAndCloseStderr(); |
46 | | |
47 | | void CloseStdout(); |
48 | | |
49 | | void Printf(const char *Fmt, ...); |
50 | | |
51 | | // Print using raw syscalls, useful when printing at early init stages. |
52 | | void RawPrint(const char *Str); |
53 | | |
54 | | // Platform specific functions: |
55 | | bool IsFile(const std::string &Path); |
56 | | size_t FileSize(const std::string &Path); |
57 | | |
58 | | void ListFilesInDirRecursive(const std::string &Dir, long *Epoch, |
59 | | Vector<std::string> *V, bool TopDir); |
60 | | |
61 | | struct SizedFile { |
62 | | std::string File; |
63 | | size_t Size; |
64 | 188k | bool operator<(const SizedFile &B) const { return Size < B.Size; } |
65 | | }; |
66 | | |
67 | | void GetSizedFilesFromDir(const std::string &Dir, Vector<SizedFile> *V); |
68 | | |
69 | | char GetSeparator(); |
70 | | // Similar to the basename utility: returns the file name w/o the dir prefix. |
71 | | std::string Basename(const std::string &Path); |
72 | | |
73 | | FILE* OpenFile(int Fd, const char *Mode); |
74 | | |
75 | | int CloseFile(int Fd); |
76 | | |
77 | | int DuplicateFile(int Fd); |
78 | | |
79 | | void RemoveFile(const std::string &Path); |
80 | | |
81 | | void DiscardOutput(int Fd); |
82 | | |
83 | | intptr_t GetHandleFromFd(int fd); |
84 | | |
85 | | } // namespace fuzzer |
86 | | |
87 | | #endif // LLVM_FUZZER_IO_H |