CernVM-FS
2.13.0
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
sink_file.cc
Go to the documentation of this file.
1
5
#include "
sink_file.h
"
6
7
#include <cerrno>
8
#include <cstdio>
9
#include <string>
10
11
namespace
cvmfs {
12
19
int64_t
FileSink::Write
(
const
void
*buf, uint64_t sz) {
20
const
size_t
ret = fwrite(buf, 1ul, sz,
file_
);
21
22
if
(ferror(
file_
) != 0) {
23
// ferror does not tell us what exactly the error is
24
// and errno is also not set
25
// so just return generic I/O error flag
26
return
-EIO;
27
}
28
29
return
static_cast<
int64_t
>
(ret);
30
}
31
38
int
FileSink::Reset
() {
39
return
((fflush(
file_
) == 0) && (ftruncate(fileno(
file_
), 0) == 0)
40
&& (freopen(NULL,
"w"
,
file_
) ==
file_
))
41
? 0
42
: -errno;
43
}
44
54
int
FileSink::Purge
() {
55
if
(
is_owner_
&&
file_
) {
56
const
int
ret = fclose(
file_
);
57
file_
= NULL;
58
if
(ret != 0) {
59
return
-errno;
60
}
61
62
return
0;
63
}
else
{
64
return
Reset
();
65
}
66
}
67
71
std::string
FileSink::Describe
() {
72
std::string result =
"File sink with "
;
73
result +=
IsValid
() ?
" valid file pointer"
:
" invalid file pointer"
;
74
return
result;
75
}
76
void
FileSink::Adopt
(FILE *file,
bool
is_owner) {
77
if
(
is_owner_
&&
file_
) {
78
(void)fclose(
file_
);
79
}
80
81
is_owner_
= is_owner;
82
file_
=
file
;
83
}
84
}
// namespace cvmfs
cvmfs::FileSink::Purge
virtual int Purge()
Definition:
sink_file.cc:54
cvmfs::FileSink::file_
FILE * file_
Definition:
sink_file.h:109
cvmfs::FileSink::Describe
virtual std::string Describe()
Definition:
sink_file.cc:71
sink_file.h
cvmfs::FileSink::IsValid
virtual bool IsValid()
Definition:
sink_file.h:59
cvmfs::FileSink::Adopt
void Adopt(FILE *file, bool is_owner=true)
Definition:
sink_file.cc:76
cvmfs::FileSink::file
FILE * file()
Definition:
sink_file.h:105
cvmfs::FileSink::Write
virtual int64_t Write(const void *buf, uint64_t sz)
Definition:
sink_file.cc:19
cvmfs::FileSink::Reset
virtual int Reset()
Definition:
sink_file.cc:38
cvmfs::Sink::is_owner_
bool is_owner_
Definition:
sink.h:100
cvmfs
cvmfs
network
sink_file.cc
Generated on Sun Jun 15 2025 02:21:13 for CernVM-FS by
1.8.5