libzypp  12.16.5
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 
24 #include "zypp/PoolQueryUtil.tcc"
25 
26 using std::endl;
27 
29 namespace zypp
30 {
31 
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