paludis
Version 3.0.2
The one true package mangler
paludis
util
fd_holder.hh
1
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3
/*
4
* Copyright (c) 2006 Ciaran McCreesh
5
*
6
* This file is part of the Paludis package manager. Paludis is free software;
7
* you can redistribute it and/or modify it under the terms of the GNU General
8
* Public License version 2, as published by the Free Software Foundation.
9
*
10
* Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
* details.
14
*
15
* You should have received a copy of the GNU General Public License along with
16
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17
* Place, Suite 330, Boston, MA 02111-1307 USA
18
*/
19
20
#ifndef PALUDIS_GUARD_PALUDIS_FD_HOLDER_HH
21
#define PALUDIS_GUARD_PALUDIS_FD_HOLDER_HH 1
22
23
#include <unistd.h>
24
25
namespace
paludis
26
{
27
/**
28
* RAII holder for a file descriptor.
29
*/
30
class
PALUDIS_VISIBLE
FDHolder
31
{
32
private
:
33
const
int
_fd;
34
const
bool
_sync;
35
36
public
:
37
///\name Basic operations
38
///\{
39
40
FDHolder(
const
int
fd,
bool
sync =
true
) :
41
_fd(fd),
42
_sync(sync)
43
{
44
}
45
46
~FDHolder()
47
{
48
if
(-1 != _fd)
49
{
50
if
(_sync)
51
::fsync(_fd);
52
::close(_fd);
53
}
54
}
55
56
///\}
57
58
/**
59
* Fetch our file descriptor.
60
*/
61
operator
int ()
const
62
{
63
return
_fd;
64
}
65
};
66
}
67
68
#endif
PALUDIS_VISIBLE
#define PALUDIS_VISIBLE
Definition
attributes.hh:59
paludis
Definition
about_metadata-fwd.hh:24
Generated by
1.18.0