index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Allan McRae <allan@archlinux.org> | 2015-01-27 11:41:06 +1000 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2015-02-01 21:20:08 +1000 |
commit | 295a3491adc4af5c8634ac82777212ed9c664457 (patch) | |
tree | 71617111c4816357abae2a7d89d451f06e2d63c1 /scripts/libmakepkg/tidy/zipman.sh.in | |
parent | 33466000d63e88e7a2ac7b1278a5966595fba707 (diff) |
-rw-r--r-- | scripts/libmakepkg/tidy/zipman.sh.in | 58 |
diff --git a/scripts/libmakepkg/tidy/zipman.sh.in b/scripts/libmakepkg/tidy/zipman.sh.in new file mode 100644 index 00000000..8557789b --- /dev/null +++ b/scripts/libmakepkg/tidy/zipman.sh.in @@ -0,0 +1,58 @@ +#!/bin/bash +# +# zipman.sh - Compress man and info pages +# +# Copyright (c) 2011-2015 Pacman Development Team <pacman-dev@archlinux.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +[ -n "$LIBMAKEPKG_TIDY_ZIPMAN_SH" ] && return +LIBMAKEPKG_TIDY_ZIPMAN_SH=1 + +LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + +source "$LIBRARY/util/message.sh" +source "$LIBRARY/util/option.sh" + + +tidy_zipman() { + if check_option "zipman" "y" && [[ -n ${MAN_DIRS[*]} ]]; then + msg2 "$(gettext "Compressing man and info pages...")" + local file files inode link + while read -rd ' ' inode; do + read file + find ${MAN_DIRS[@]} -type l 2>/dev/null | + while read -r link ; do + if [[ "${file}" -ef "${link}" ]] ; then + rm -f "$link" "${link}.gz" + if [[ ${file%/*} = ${link%/*} ]]; then + ln -s -- "${file##*/}.gz" "${link}.gz" + else + ln -s -- "/${file}.gz" "${link}.gz" + fi + fi + done + if [[ -z ${files[$inode]} ]]; then + files[$inode]=$file + gzip -9 -n -f "$file" + else + rm -f "$file" + ln "${files[$inode]}.gz" "${file}.gz" + chmod 644 "${file}.gz" + fi + done < <(find ${MAN_DIRS[@]} -type f \! -name "*.gz" \! -name "*.bz2" \ + -exec @INODECMD@ '{}' + 2>/dev/null) + fi +} |