Bitcoin Core
31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
src
util
readwritefile.cpp
Go to the documentation of this file.
1
// Copyright (c) 2015-present The Bitcoin Core developers
2
// Copyright (c) 2017 The Zcash developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
#include <
util/readwritefile.h
>
7
8
#include <
util/fs.h
>
9
10
#include <algorithm>
11
#include <cstdio>
12
#include <limits>
13
#include <string>
14
#include <utility>
15
16
std::pair<bool,std::string>
ReadBinaryFile
(
const
fs::path &filename,
size_t
maxsize)
17
{
18
FILE *f =
fsbridge::fopen
(filename,
"rb"
);
19
if
(f ==
nullptr
)
20
return
std::make_pair(
false
,
""
);
21
std::string retval;
22
char
buffer[128];
23
do
{
24
const
size_t
n = fread(buffer, 1, std::min(
sizeof
(buffer), maxsize - retval.size()), f);
25
// Check for reading errors so we don't return any data if we couldn't
26
// read the entire file (or up to maxsize)
27
if
(ferror(f)) {
28
fclose(f);
29
return
std::make_pair(
false
,
""
);
30
}
31
retval.append(buffer, buffer+n);
32
}
while
(!feof(f) && retval.size() < maxsize);
33
fclose(f);
34
return
std::make_pair(
true
,retval);
35
}
36
37
bool
WriteBinaryFile
(
const
fs::path &filename,
const
std::string &data)
38
{
39
FILE *f =
fsbridge::fopen
(filename,
"wb"
);
40
if
(f ==
nullptr
)
41
return
false
;
42
if
(fwrite(data.data(), 1, data.size(), f) != data.size()) {
43
fclose(f);
44
return
false
;
45
}
46
if
(fclose(f) != 0) {
47
return
false
;
48
}
49
return
true
;
50
}
fs.h
fsbridge::fopen
FILE * fopen(const fs::path &p, const char *mode)
Definition
fs.cpp:25
WriteBinaryFile
bool WriteBinaryFile(const fs::path &filename, const std::string &data)
Write contents of std::string to a file.
Definition
readwritefile.cpp:37
ReadBinaryFile
std::pair< bool, std::string > ReadBinaryFile(const fs::path &filename, size_t maxsize)
Read full contents of a file and return them in a std::string.
Definition
readwritefile.cpp:16
readwritefile.h
Generated on
for Bitcoin Core by
1.16.1