libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
SoftLocksFile.cc
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#include <iostream>
13
#include <fstream>
14
15
#include "
zypp/base/LogTools.h
"
16
#include "
zypp/base/IOStream.h
"
17
#include "
zypp/base/String.h
"
18
19
#include "
zypp/PathInfo.h
"
20
#include "
zypp/TmpPath.h
"
21
#include "
zypp/Date.h
"
22
23
#include "
zypp/target/SoftLocksFile.h
"
24
25
using
std::endl;
26
28
namespace
zypp
29
{
30
31
namespace
target
32
{
33
34
void
SoftLocksFile::load
(
const
Pathname & file_r,
Data
& data_r )
35
{
36
PathInfo pi( file_r );
37
if
( ! pi.isFile() )
38
{
39
WAR
<<
"Can't read "
<< pi << endl;
40
return
;
41
}
42
std::ifstream infile( file_r.c_str() );
43
for
(
iostr::EachLine
in( infile ); in; in.
next
() )
44
{
45
std::string l(
str::trim
(*in) );
46
if
( ! l.empty() && l[0] !=
'#'
)
47
{
48
data_r.insert(
IdString
(l) );
49
}
50
}
51
MIL
<<
"Read "
<< pi << endl;
52
}
53
54
void
SoftLocksFile::store
(
const
Pathname & file_r,
const
Data
& data_r )
55
{
56
filesystem::TmpFile
tmp(
filesystem::TmpFile::makeSibling
( file_r ) );
57
filesystem::chmod
( tmp.
path
(), 0644 );
58
59
std::ofstream outs( tmp.
path
().
c_str
() );
60
outs <<
"# zypp::SoftLocksFile generated "
<<
Date::now
() << endl;
61
dumpRange
( outs, data_r.begin(), data_r.end(),
"#"
,
"\n"
,
"\n"
,
"\n"
,
"#\n"
);
62
outs.close();
63
64
if
( outs.good() )
65
{
66
filesystem::rename
( tmp.
path
(), file_r );
67
MIL
<<
"Wrote "
<< PathInfo(file_r) << endl;
68
}
69
else
70
{
71
ERR
<<
"Can't write "
<< PathInfo(tmp.
path
()) << endl;
72
}
73
}
74
75
/******************************************************************
76
**
77
** FUNCTION NAME : operator<<
78
** FUNCTION TYPE : std::ostream &
79
*/
80
std::ostream &
operator<<
( std::ostream & str,
const
SoftLocksFile
& obj )
81
{
82
str << obj.
file
() <<
' '
;
83
if
( obj.
_dataPtr
)
84
str << obj.
data
();
85
else
86
str <<
"(unloaded)"
;
87
return
str;
88
}
89
91
}
// namespace target
94
}
// namespace zypp
zypp
target
SoftLocksFile.cc
Generated by
1.8.1