aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/fmt/test/util.cc
blob: 116e8a3a0ab8030bc41aee3a1c8c417bd076bc80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Formatting library for C++ - test utilities 
// 
// Copyright (c) 2012 - present, Victor Zverovich 
// All rights reserved. 
// 
// For the license information refer to format.h. 
 
#include "util.h" 

#include <cstring> 
 
void increment(char* s) { 
  for (int i = static_cast<int>(std::strlen(s)) - 1; i >= 0; --i) { 
    if (s[i] != '9') { 
      ++s[i]; 
      break; 
    } 
    s[i] = '0'; 
  } 
} 
 
std::string get_system_error(int error_code) { 
#if defined(__MINGW32__) || !defined(_WIN32) 
  return strerror(error_code); 
#else 
  enum { BUFFER_SIZE = 200 }; 
  char buffer[BUFFER_SIZE]; 
  if (strerror_s(buffer, BUFFER_SIZE, error_code)) 
    throw std::exception("strerror_s failed"); 
  return buffer; 
#endif 
} 
 
const char* const FILE_CONTENT = "Don't panic!"; 
 
fmt::buffered_file open_buffered_file(FILE** fp) { 
#if FMT_USE_FCNTL 
  fmt::file read_end, write_end; 
  fmt::file::pipe(read_end, write_end); 
  write_end.write(FILE_CONTENT, std::strlen(FILE_CONTENT)); 
  write_end.close(); 
  fmt::buffered_file f = read_end.fdopen("r"); 
  if (fp) *fp = f.get(); 
#else 
  fmt::buffered_file f("test-file", "w"); 
  fputs(FILE_CONTENT, f.get()); 
  if (fp) *fp = f.get(); 
#endif 
  return f; 
}