38 inline string timestamp()
41 inline string userAtHostname()
45 char * tmp = ::cuserid(buf);
49 if (!::gethostname(buf, 255))
50 result +=
"@" + string(buf);
55 static std::string pidAndAppname()
57 static std::string _val;
60 pid_t mypid = getpid();
66 _val += myname.basename();
71 static std::string cmdline()
73 static std::string _val;
76 pid_t mypid = getpid();
80 const char * sep =
"'";
81 while ( cmdlineStr && cmdlineStr.get( ch ) )
90 case '\0': _val +=
'\''; sep =
" '";
break;
91 case '\n': _val +=
' ';
break;
92 case '\\': _val +=
'\\'; _val +=
'\\';
break;
93 case '|': _val +=
'\\'; _val +=
'|';
break;
94 default: _val += ch;
break;
105 const char _sep =
'|';
107 unsigned _refcnt = 0;
109 Pathname _fnameLastFail;
111 inline void openLog()
113 if ( _fname.empty() )
117 _log.open( _fname.asString().c_str(), std::ios::out|std::ios::app );
118 if( !_log && _fnameLastFail != _fname )
120 ERR <<
"Could not open logfile '" << _fname <<
"'" << endl;
121 _fnameLastFail = _fname;
125 inline void closeLog()
138 inline void refDown()
165 if ( ! rootdir.absolute() )
173 MIL <<
"installation log file " << _fname << endl;
181 if ( _fname.empty() )
195 _log << timestamp() <<
" ";
197 const char * s = comment.c_str();
199 unsigned size = comment.size();
202 if (comment[size-1] ==
'\n')
205 for (
unsigned i = 0; i < size; ++i, ++c )
208 _log << string( s, c + 1 - s ) <<
"# ";
213 _log << std::string( s, c-s );
225 << _sep << userAtHostname()
242 << _sep << p->edition()
243 << _sep << p->arch();
247 _log << _sep << userAtHostname();
249 _log << _sep << pidAndAppname();
254 << _sep << p->repoInfo().alias()
255 << _sep << p->checksum().checksum()
271 << _sep << p->edition()
272 << _sep << p->arch();
276 _log << _sep << userAtHostname();
278 _log << _sep << pidAndAppname();
325 if ( oldrepo.
url() != newrepo.
url() )