- forward port from SLE branch
authorDuncan Mac-Vicar P <dmacvicar@suse.de>
Fri, 23 Jun 2006 11:48:14 +0000 (11:48 +0000)
committerDuncan Mac-Vicar P <dmacvicar@suse.de>
Fri, 23 Jun 2006 11:48:14 +0000 (11:48 +0000)
devel/devel.dmacvicar/testbed.cc
devel/devel.ma/Parse.cc
zypp/base/LogControl.cc
zypp/base/LogControl.h

index 13b0a46..0a8a880 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <zypp/CapFactory.h>
 #include <zypp/KeyRing.h>
+#include <zypp/PublicKey.h>
 
 using namespace zypp::detail;
 
@@ -43,10 +44,12 @@ using namespace zypp::source::yum;
 
 int main()
 {
-  std::ofstream file;
-  file.open("lala.txt", ios::out);
-    //file << xml;
-    file.close();
+  zypp::devel::PublicKey k("/suse/dmacvicar/duncan.txt");
+  
+  cout << k.id() << std::endl;
+  cout << k.fingerprint() << std::endl;
+  cout << k.name() << std::endl;
+  
 }
 
 
index e1a7057..fa0218f 100644 (file)
@@ -181,7 +181,7 @@ int main( int argc, char * argv[] )
 {
   //zypp::base::LogControl::instance().logfile( "log.restrict" );
   INT << "===[START]==========================================" << endl;
-
+  return 0;
   ResPool pool( getZYpp()->pool() );
 
   if ( 0 )
index b1e12dd..a6cb06c 100644 (file)
@@ -17,6 +17,7 @@
 #include "zypp/base/LogControl.h"
 #include "zypp/base/String.h"
 #include "zypp/Date.h"
+#include "zypp/PathInfo.h"
 
 using std::endl;
 
@@ -66,15 +67,20 @@ namespace zypp
       ///////////////////////////////////////////////////////////////////
       struct FileWriter : public LogControl::LineWriter
       {
-        FileWriter( const Pathname & logfile_r )
-        : _logfile( logfile_r )
-        {}
-        Pathname _logfile;
+        FileWriter( const Pathname & logfile_r, mode_t mode_r )
+        {
+          // set unbuffered write
+          _outs.rdbuf()->pubsetbuf(0,0);
+          _outs.open( logfile_r.asString().c_str(), std::ios_base::app );
+          // not filesystem::chmod, as filesystem:: functions log,
+          // and this FileWriter is not yet in place.
+          ::chmod( logfile_r.asString().c_str(), mode_r );
+        }
+        std::ofstream _outs;
 
         virtual void writeOut( const std::string & formated_r )
         {
-          std::ofstream outs( _logfile.asString().c_str(), std::ios_base::app );
-          outs << formated_r << endl;
+          _outs << formated_r << endl;
         }
       };
       ///////////////////////////////////////////////////////////////////
@@ -226,14 +232,14 @@ namespace zypp
             _lineFormater.reset( new LogControl::LineFormater );
         }
 
-        void logfile( const Pathname & logfile_r )
+        void logfile( const Pathname & logfile_r, mode_t mode_r = 0640 )
         {
           if ( logfile_r.empty() )
             setLineWriter( shared_ptr<LogControl::LineWriter>() );
           else if ( logfile_r == Pathname( "-" ) )
             setLineWriter( shared_ptr<LogControl::LineWriter>(new StdErrWriter) );
           else
-            setLineWriter( shared_ptr<LogControl::LineWriter>(new FileWriter(logfile_r)) );
+            setLineWriter( shared_ptr<LogControl::LineWriter>(new FileWriter(logfile_r, mode_r)) );
         }
 
       private:
@@ -365,6 +371,9 @@ namespace zypp
     void LogControl::logfile( const Pathname & logfile_r )
     { LogControlImpl::instance.logfile( logfile_r ); }
 
+    void LogControl::logfile( const Pathname & logfile_r, mode_t mode_r )
+    { LogControlImpl::instance.logfile( logfile_r, mode_r ); }
+
     void LogControl::setLineWriter( const shared_ptr<LineWriter> & writer_r )
     { LogControlImpl::instance.setLineWriter( writer_r ); }
 
index 48cf830..860e28c 100644 (file)
@@ -79,11 +79,13 @@ namespace zypp
       void setLineFormater( const shared_ptr<LineFormater> & formater_r );
 
       /** Set path for the logfile.
-       * An empty pathname turns off logging.
-       * <tt>"-"</tt> logs to std::err.
+       * Permission for logfiles is set to 0640 unless an explicit mode_t
+       * value is given. An empty pathname turns off logging. <tt>"-"</tt>
+       * logs to std::err.
        * \throw if \a logfile_r is not usable.
       */
       void logfile( const Pathname & logfile_r );
+      void logfile( const Pathname & logfile_r, mode_t mode_r );
 
       /** Turn off logging. */
       void logNothing();