libzypp 17.31.23
HardLocksFile.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
25
26using std::endl;
27
29namespace zypp
30{
32 namespace target
33 {
34
35 void HardLocksFile::load( const Pathname & file_r, Data & data_r )
36 {
37 PathInfo pi( file_r );
38 if ( ! pi.isFile() )
39 {
40 WAR << "Can't read " << pi << endl;
41 return;
42 }
43
44 readPoolQueriesFromFile( file_r, std::back_inserter( data_r ) );
45
46 MIL << "Read " << pi << endl;
47 }
48
49 void HardLocksFile::store( const Pathname & file_r, const Data & data_r )
50 {
52 filesystem::chmod( tmp.path(), 0644 );
53
54 writePoolQueriesToFile( tmp.path(), data_r.begin(), data_r.end() );
55
56 if ( true ) // by now: no error info from writePoolQueriesToFile
57 {
58 filesystem::rename( tmp.path(), file_r );
59 MIL << "Wrote " << PathInfo(file_r) << endl;
60 }
61 else
62 {
63 ERR << "Can't write " << PathInfo(tmp.path()) << endl;
64 }
65 }
66
67 /******************************************************************
68 **
69 ** FUNCTION NAME : operator<<
70 ** FUNCTION TYPE : std::ostream &
71 */
72 std::ostream & operator<<( std::ostream & str, const HardLocksFile & obj )
73 {
74 str << obj.file() << ' ';
75 if ( obj._dataPtr )
76 str << obj.data();
77 else
78 str << "(unloaded)";
79 return str;
80 }
81
83 } // namespace target
86} // namespace zypp
Wrapper class for stat/lstat.
Definition: PathInfo.h:221
Provide a new empty temporary file and delete it when no longer needed.
Definition: TmpPath.h:128
static TmpFile makeSibling(const Pathname &sibling_r)
Provide a new empty temporary directory as sibling.
Definition: TmpPath.cc:218
Pathname path() const
Definition: TmpPath.cc:146
Save and restore hardlocks.
Definition: HardLocksFile.h:37
const Data & data() const
Return the data.
Definition: HardLocksFile.h:57
static void load(const Pathname &file_r, Data &data_r)
Read Data from file_r.
static void store(const Pathname &file_r, const Data &data_r)
Write Data to file_r.
const Pathname & file() const
Return the file path.
Definition: HardLocksFile.h:50
pool::PoolTraits::HardLockQueries Data
Definition: HardLocksFile.h:41
scoped_ptr< Data > _dataPtr
String related utilities and Regular expression matching.
int chmod(const Pathname &path, mode_t mode)
Like 'chmod'.
Definition: PathInfo.cc:1092
int rename(const Pathname &oldpath, const Pathname &newpath)
Like 'rename'.
Definition: PathInfo.cc:742
std::ostream & operator<<(std::ostream &str, const CommitPackageCache &obj)
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
#define MIL
Definition: Logger.h:96
#define ERR
Definition: Logger.h:98
#define WAR
Definition: Logger.h:97