From 25edbb8e734b4adfafaee94aae0258e31d9b1acb Mon Sep 17 00:00:00 2001 From: tschoening Date: Thu, 7 Jul 2016 19:38:49 +0000 Subject: Cleaning up the code a bit. git-svn-id: http://svn.apache.org/repos/asf/incubator/log4cxx/trunk@1751829 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/cpp/zipcompressaction.cpp | 114 +++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 54 deletions(-) diff --git a/src/main/cpp/zipcompressaction.cpp b/src/main/cpp/zipcompressaction.cpp index 86a4cba..90f6333 100644 --- a/src/main/cpp/zipcompressaction.cpp +++ b/src/main/cpp/zipcompressaction.cpp @@ -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; +} -- cgit v1.2.1