function ewww_image_optimizer_install_pngout()
{
    if (FALSE === current_user_can('install_plugins')) {
        wp_die(__('You don\'t have permission to install image optimizer utilities.', EWWW_IMAGE_OPTIMIZER_DOMAIN));
    }
    if (PHP_OS != 'WINNT') {
        $tar = ewww_image_optimizer_find_binary('tar', 't');
    }
    if (empty($tar) && PHP_OS != 'WINNT') {
        $pngout_error = __('tar command not found', EWWW_IMAGE_OPTIMIZER_DOMAIN);
    }
    if (PHP_OS == 'Linux') {
        $os_string = 'linux';
    }
    if (PHP_OS == 'FreeBSD') {
        $os_string = 'bsd';
    }
    $latest = '20130221';
    if (empty($pngout_error)) {
        if (PHP_OS == 'Linux' || PHP_OS == 'FreeBSD') {
            $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-' . $os_string . '-static.tar.gz'));
            if (is_wp_error($download_result)) {
                $pngout_error = $download_result->get_error_message();
            } else {
                $arch_type = php_uname('m');
                exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH) . ' pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static');
                if (!rename(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static', EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static')) {
                    if (empty($pngout_error)) {
                        $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                    }
                }
                if (!chmod(EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static', 0755)) {
                    if (empty($pngout_error)) {
                        $pngout_error = __("could not set permissions", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                    }
                }
                $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_TOOL_PATH) . 'pngout-static', 'p');
            }
        }
        if (PHP_OS == 'Darwin') {
            $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-darwin.tar.gz'));
            if (is_wp_error($download_result)) {
                $pngout_error = $download_result->get_error_message();
            } else {
                exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH) . ' pngout-' . $latest . '-darwin/pngout');
                if (!rename(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'pngout-' . $latest . '-darwin/pngout', EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static')) {
                    if (empty($pngout_error)) {
                        $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                    }
                }
                if (!chmod(EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static', 0755)) {
                    if (empty($pngout_error)) {
                        $pngout_error = __("could not set permissions", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                    }
                }
                $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_TOOL_PATH) . 'pngout-static', 'p');
            }
        }
    }
    if (PHP_OS == 'WINNT') {
        $download_result = download_url('http://advsys.net/ken/util/pngout.exe');
        if (is_wp_error($download_result)) {
            $pngout_error = $download_result->get_error_message();
        } else {
            if (!rename($download_result, EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout.exe')) {
                if (empty($pngout_error)) {
                    $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                }
            }
            $pngout_version = ewww_image_optimizer_tool_found('"' . EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout.exe"', 'p');
        }
    }
    if (!empty($pngout_version)) {
        $sendback = add_query_arg('pngout', 'success', remove_query_arg(array('pngout', 'error'), wp_get_referer()));
    }
    if (!isset($sendback)) {
        $sendback = add_query_arg(array('pngout' => 'failed', 'error' => urlencode($pngout_error)), remove_query_arg(array('pngout', 'error'), wp_get_referer()));
    }
    wp_redirect($sendback);
    exit(0);
}
function ewww_image_optimizer_install_pngout()
{
    ewwwio_debug_message('<b>' . __FUNCTION__ . '()</b>');
    $permissions = apply_filters('ewww_image_optimizer_admin_permissions', '');
    if (FALSE === current_user_can($permissions)) {
        wp_die(esc_html__('You do not have permission to install image optimizer utilities.', EWWW_IMAGE_OPTIMIZER_DOMAIN));
    }
    if (PHP_OS != 'WINNT') {
        $tar = ewww_image_optimizer_find_nix_binary('tar', 't');
    }
    if (empty($tar) && PHP_OS != 'WINNT') {
        $pngout_error = __('tar command not found', EWWW_IMAGE_OPTIMIZER_DOMAIN);
    }
    if (PHP_OS == 'Linux') {
        $os_string = 'linux';
    }
    if (PHP_OS == 'FreeBSD') {
        $os_string = 'bsd';
    }
    $latest = '20150319';
    $tool_path = trailingslashit(EWWW_IMAGE_OPTIMIZER_TOOL_PATH);
    if (empty($pngout_error)) {
        if (PHP_OS == 'Linux' || PHP_OS == 'FreeBSD') {
            $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-' . $os_string . '-static.tar.gz'));
            if (is_wp_error($download_result)) {
                $pngout_error = $download_result->get_error_message();
            } else {
                $arch_type = php_uname('m');
                exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_BINARY_PATH) . ' pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static');
                if (file_exists(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static')) {
                    if (!rename(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static', $tool_path . 'pngout-static')) {
                        if (empty($pngout_error)) {
                            $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                        }
                    }
                    if (!chmod($tool_path . 'pngout-static', 0755)) {
                        if (empty($pngout_error)) {
                            $pngout_error = __("could not set permissions", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                        }
                    }
                    $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg($tool_path) . 'pngout-static', 'p');
                } else {
                    $pngout_error = __('extraction of files failed', EWWW_IMAGE_OPTIMIZER_DOMAIN);
                }
            }
        }
        if (PHP_OS == 'Darwin') {
            $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-darwin.tar.gz'));
            if (is_wp_error($download_result)) {
                $pngout_error = $download_result->get_error_message();
            } else {
                exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_BINARY_PATH) . ' pngout-' . $latest . '-darwin/pngout');
                if (file_exists(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static')) {
                    if (!rename(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-darwin/pngout', $tool_path . 'pngout-static')) {
                        if (empty($pngout_error)) {
                            $pngout_error = __('could not move pngout', EWWW_IMAGE_OPTIMIZER_DOMAIN);
                        }
                    }
                    if (!chmod($tool_path . 'pngout-static', 0755)) {
                        if (empty($pngout_error)) {
                            $pngout_error = __('could not set permissions', EWWW_IMAGE_OPTIMIZER_DOMAIN);
                        }
                    }
                    $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg($tool_path) . 'pngout-static', 'p');
                } else {
                    $pngout_error = __('extraction of files failed', EWWW_IMAGE_OPTIMIZER_DOMAIN);
                }
            }
        }
    }
    if (PHP_OS == 'WINNT') {
        $download_result = download_url('http://advsys.net/ken/util/pngout.exe');
        if (is_wp_error($download_result)) {
            $pngout_error = $download_result->get_error_message();
        } else {
            if (!rename($download_result, $tool_path . 'pngout.exe')) {
                if (empty($pngout_error)) {
                    $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN);
                }
            }
            $pngout_version = ewww_image_optimizer_tool_found('"' . $tool_path . 'pngout.exe"', 'p');
        }
    }
    if (!empty($pngout_version)) {
        $sendback = add_query_arg('ewww_pngout', 'success', remove_query_arg(array('ewww_pngout', 'ewww_error'), wp_get_referer()));
    }
    if (!isset($sendback)) {
        $sendback = add_query_arg(array('ewww_pngout' => 'failed', 'ewww_error' => urlencode($pngout_error)), remove_query_arg(array('ewww_pngout', 'ewww_error'), wp_get_referer()));
    }
    wp_redirect(esc_url_raw($sendback));
    ewwwio_memory(__FUNCTION__);
    exit(0);
}