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);