Coverage Report

Created: 2018-09-25 14:53

/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