Author: carnold
Date: Thu Feb 14 23:52:05 2008
New Revision: 627968

URL: http://svn.apache.org/viewvc?rev=627968&view=rev
Log:
LOGCXX-241: Eliminate direct call of apr_file_open in FileOutputStream

Modified:
    logging/log4cxx/trunk/src/main/cpp/fileoutputstream.cpp
    logging/log4cxx/trunk/src/main/include/log4cxx/helpers/fileoutputstream.h

Modified: logging/log4cxx/trunk/src/main/cpp/fileoutputstream.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/fileoutputstream.cpp?rev=627968&r1=627967&r2=627968&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/fileoutputstream.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/fileoutputstream.cpp Thu Feb 14 23:52:05 
2008
@@ -32,18 +32,15 @@
 IMPLEMENT_LOG4CXX_OBJECT(FileOutputStream)
 
 FileOutputStream::FileOutputStream(const LogString& filename,
-    bool append) {
-    open(filename, append);
+    bool append) : pool(), fileptr(open(filename, append, pool)) {
 }
 
 FileOutputStream::FileOutputStream(const logchar* filename,
-    bool append) {
-    LogString fn(filename);
-    open(fn, append);
+    bool append) : pool(), fileptr(open(filename, append, pool)) {
 }
 
-void FileOutputStream::open(const LogString& filename,
-    bool append) {
+apr_file_t* FileOutputStream::open(const LogString& filename,
+    bool append, Pool& pool) {
     apr_fileperms_t perm = APR_OS_DEFAULT;
     apr_int32_t flags = APR_WRITE | APR_CREATE;
     if (append) {
@@ -51,24 +48,25 @@
     } else {
         flags |= APR_TRUNCATE;
     }
-    LOG4CXX_ENCODE_CHAR(fn, filename);
-    apr_file_t** pfileptr = reinterpret_cast<apr_file_t**>(&fileptr);
-    log4cxx_status_t stat = apr_file_open(pfileptr,
-        fn.c_str(), flags, perm, (apr_pool_t*) pool.getAPRPool());
+    File fn;
+    fn.setPath(filename);
+    apr_file_t* fileptr = 0;
+    apr_status_t stat = fn.open(&fileptr, flags, perm, pool);
     if (stat != APR_SUCCESS) {
       throw IOException(stat);
     }
+    return fileptr;
 }
 
 FileOutputStream::~FileOutputStream() {
   if (fileptr != NULL && !APRInitializer::isDestructed) {
-    apr_file_close((apr_file_t*) fileptr);
+    apr_file_close(fileptr);
   }
 }
 
 void FileOutputStream::close(Pool& /* p */) {
   if (fileptr != NULL) {
-    apr_status_t stat = apr_file_close((apr_file_t*) fileptr);
+    apr_status_t stat = apr_file_close(fileptr);
     if (stat != APR_SUCCESS) {
         throw IOException(stat);
     }
@@ -88,7 +86,7 @@
   const char* data = buf.data();
   while(nbytes > 0) {
     apr_status_t stat = apr_file_write(
-      (apr_file_t*) fileptr, data + pos, &nbytes);
+      fileptr, data + pos, &nbytes);
     if (stat != APR_SUCCESS) {
       throw IOException(stat);
     }

Modified: 
logging/log4cxx/trunk/src/main/include/log4cxx/helpers/fileoutputstream.h
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/helpers/fileoutputstream.h?rev=627968&r1=627967&r2=627968&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/include/log4cxx/helpers/fileoutputstream.h 
(original)
+++ logging/log4cxx/trunk/src/main/include/log4cxx/helpers/fileoutputstream.h 
Thu Feb 14 23:52:05 2008
@@ -35,7 +35,7 @@
           {
           private:
                   Pool pool;
-                  void* fileptr;
+                  apr_file_t* fileptr;
 
           public:
                   DECLARE_ABSTRACT_LOG4CXX_OBJECT(FileOutputStream)
@@ -55,7 +55,8 @@
           private:
                   FileOutputStream(const FileOutputStream&);
                   FileOutputStream& operator=(const FileOutputStream&);
-                  void open(const LogString& fn, bool append);
+                  static apr_file_t* open(const LogString& fn, bool append, 
+                       log4cxx::helpers::Pool& p);
           };
 
           LOG4CXX_PTR_DEF(FileOutputStream);


Reply via email to