Author: tschoening Date: Thu Jul 7 19:38:49 2016 New Revision: 1751829 URL: http://svn.apache.org/viewvc?rev=1751829&view=rev Log: Cleaning up the code a bit.
Modified: incubator/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp Modified: incubator/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp URL: http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp?rev=1751829&r1=1751828&r2=1751829&view=diff ============================================================================== --- incubator/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp (original) +++ incubator/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp Thu Jul 7 19:38:49 2016 @@ -6,7 +6,7 @@ * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -28,59 +28,65 @@ using namespace log4cxx::helpers; IMPLEMENT_LOG4CXX_OBJECT(ZipCompressAction) ZipCompressAction::ZipCompressAction(const File& src, - const File& dest, - bool del) - : source(src), destination(dest), deleteSource(del) { + const File& dest, + bool del) + : source(src), destination(dest), deleteSource(del) { } -bool ZipCompressAction::execute(log4cxx::helpers::Pool& p) const { - if (source.exists(p)) { - apr_pool_t* aprpool = p.getAPRPool(); - apr_procattr_t* attr; - apr_status_t stat = apr_procattr_create(&attr, aprpool); - if (stat != APR_SUCCESS) throw IOException(stat); - - stat = apr_procattr_io_set(attr, APR_NO_PIPE, APR_NO_PIPE, APR_FULL_BLOCK); - if (stat != APR_SUCCESS) throw IOException(stat); - - stat = apr_procattr_cmdtype_set(attr, APR_PROGRAM_PATH); - if (stat != APR_SUCCESS) throw IOException(stat); - - - // - // redirect the child's error stream to this processes' error stream - // - apr_file_t* child_err; - stat = apr_file_open_stderr(&child_err, aprpool); - if (stat == APR_SUCCESS) { - stat = apr_procattr_child_err_set(attr, child_err, NULL); - if (stat != APR_SUCCESS) throw IOException(stat); - } - - const char** args = (const char**) - apr_palloc(aprpool, 5 *sizeof(*args)); - int i = 0; - args[i++] = "zip"; - args[i++] = "-q"; - args[i++] = Transcoder::encode(destination.getPath(), p); - args[i++] = Transcoder::encode(source.getPath(), p); - args[i++] = NULL; - - if (destination.exists(p)) { - destination.deleteFile(p); - } - - apr_proc_t pid; - stat = apr_proc_create(&pid, "zip", args, NULL, attr, aprpool); - if (stat != APR_SUCCESS) throw IOException(stat); - - apr_proc_wait(&pid, NULL, NULL, APR_WAIT); - - if (deleteSource) { - source.deleteFile(p); - } - return true; - } - return false; -} +bool ZipCompressAction::execute(log4cxx::helpers::Pool& p) const +{ + if (!source.exists(p)) + { + return false; + } + + apr_pool_t* aprpool = p.getAPRPool(); + apr_procattr_t* attr; + apr_status_t stat = apr_procattr_create(&attr, aprpool); + if (stat != APR_SUCCESS) throw IOException(stat); + + stat = apr_procattr_io_set(attr, APR_NO_PIPE, APR_NO_PIPE, APR_FULL_BLOCK); + if (stat != APR_SUCCESS) throw IOException(stat); + + stat = apr_procattr_cmdtype_set(attr, APR_PROGRAM_PATH); + if (stat != APR_SUCCESS) throw IOException(stat); + + // + // redirect the child's error stream to this processes' error stream + // + apr_file_t* child_err; + stat = apr_file_open_stderr(&child_err, aprpool); + if (stat == APR_SUCCESS) + { + stat = apr_procattr_child_err_set(attr, child_err, NULL); + if (stat != APR_SUCCESS) throw IOException(stat); + } + + const char** args = (const char**) + apr_palloc(aprpool, 5 * sizeof(*args)); + int i = 0; + + args[i++] = "zip"; + args[i++] = "-q"; + args[i++] = Transcoder::encode(destination.getPath(), p); + args[i++] = Transcoder::encode(source.getPath(), p); + args[i++] = NULL; + + if (destination.exists(p)) + { + destination.deleteFile(p); + } + + apr_proc_t pid; + stat = apr_proc_create(&pid, "zip", args, NULL, attr, aprpool); + if (stat != APR_SUCCESS) throw IOException(stat); + + apr_proc_wait(&pid, NULL, NULL, APR_WAIT); + + if (deleteSource) + { + source.deleteFile(p); + } + return true; +}