LLVM  3.7.0
circular_raw_ostream.cpp
Go to the documentation of this file.
1 //===- circular_raw_ostream.cpp - Implement circular_raw_ostream ----------===//
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 //
10 // This implements support for circular buffered streams.
11 //
12 //===----------------------------------------------------------------------===//
13 
15 #include <algorithm>
16 using namespace llvm;
17 
18 void circular_raw_ostream::write_impl(const char *Ptr, size_t Size) {
19  if (BufferSize == 0) {
20  TheStream->write(Ptr, Size);
21  return;
22  }
23 
24  // Write into the buffer, wrapping if necessary.
25  while (Size != 0) {
26  unsigned Bytes =
27  std::min(unsigned(Size), unsigned(BufferSize - (Cur - BufferArray)));
28  memcpy(Cur, Ptr, Bytes);
29  Size -= Bytes;
30  Cur += Bytes;
31  if (Cur == BufferArray + BufferSize) {
32  // Reset the output pointer to the start of the buffer.
33  Cur = BufferArray;
34  Filled = true;
35  }
36  }
37 }
38 
40  if (BufferSize != 0) {
41  // Write out the buffer
42  TheStream->write(Banner, std::strlen(Banner));
43  flushBuffer();
44  }
45 }
Number of individual test Apply this number of consecutive mutations to each input exit after the first new interesting input is found the minimized corpus is saved into the first input directory Number of jobs to run If min(jobs, NumberOfCpuCores()/2)\" is used.") FUZZER_FLAG_INT(reload
raw_ostream & write(unsigned char C)
void flushBufferWithBanner()
flushBufferWithBanner - Force output of the buffer along with a small header.