La receta de Man

TÍTULO:			La receta de Man
VERSIÓN LFS:	Cualquiera
AUTOR:			Mark Hymers <markh@linuxfromscratch.org>
TRADUCTOR:	Proyecto LFS-ES

SINOPSIS:	Cuestiones de Formateo y Compresión para las páginas del
                	manual.

Nota: Esta receta era mantenida anteriormente por
Rudolf Floers <r.floers@web.de> 
y luego por Gerard Beekmans <gerard@linuxfromscratch.org>.  
Gracias a ambos. Sin embargo, cualquier error ¡sigue siendo mi 
responsabilidad!

RECETA:

(1)  Compresión de las páginas del manual

Si deseas ahorrar algo de espacio en disco, puedes comprimir todas las 
páginas del manual con bzip2 o con gzip.
Solíamos recomendar nada mas usar gzip /usr/share/man/*/* (o el equivalente)
para bzip2) pero rompía los enlaces simbólicos. En cambio, puedes usar
el siguiente guión.

(¡una copia está disponible en
http://www.linuxfromscratch.org/~markh/scripts/compman
si no deseas cortar y pegar de acá!)

==========================================================================
#!/bin/sh
#
# Comprime (con bzip2 o gzip) todas las páginas del manual en una jerarquía
# y actualiza los enlaces simbólicos - Por Marc Heerdink <marc@koelkast.net>.
# Modificado para escojer el modo a comprimir ficheros con gzip o bzip2 y
# para manipular todos los enlaces simbólicos de manera apropiada, por
# Mark Hymers <markh@linuxfromscratch.org>
#
# ADVERTENCIA: Este guión todavía no puede arreglárselas con enlaces duros
# (son bienvenidas las sugerencias respecto a cómo manejarlos)
# El único momento en el que esto pueda ser un problema es si tienes un
# enlace simbólico apuntando a un enlace duro; pero entonces, de todas
# maneras debes estar enfermo si haces algo como eso :-)
#

if [ ! -d "$1" -o -z "$1" ] || [ "$2" != "bz2" -a "$2" != "gz" ]; then
  echo "Modo de uso: $0 <dir> <bz2/gz>"
  exit 1
fi

for DIR in $1/man*; do
  cd $DIR

  for FILE in *; do

    if [ -L "$FILE" ]; then
        case $FILE in
        *.bz2)
            EXT=bz2 ;;
        *.gz)
            EXT=gz ;;
        *)
            EXT=none ;;
        esac

        if [ "$EXT" != "none" ]; then
            LINK=`ls -l $FILE |cut -d ">" -f2 |tr -d " " | sed s/.$EXT$//`
            NEWNAME=`echo "$FILE" | sed s/\.$EXT$//`
            mv "$FILE" "$NEWNAME"
            FILE="$NEWNAME"
        else
            LINK=`ls -l $FILE |cut -d ">" -f2 |tr -d " "`
        fi

        rm -f "$FILE" && ln -s "${LINK}.$2" "${FILE}.$2"
        echo "Reenlazando $FILE"

    elif [ -f "$FILE" ]; then
        case $FILE in
        *.bz2)
            bunzip2 $FILE
            FILE=`echo $FILE | sed s/\.bz2$//`
        ;;
        *.gz)
            gunzip $FILE
            FILE=`echo $FILE | sed s/\.gz$//`
        ;;
        esac

        case $2 in
        bz2)
            bzip2 "$FILE" && chmod 644 "${FILE}.${2}";;
        gz)
            gzip "$FILE" && chmod 644 "${FILE}.${2}";;
        esac

        echo "Comprimiendo $FILE"

    fi

  done # para FILE
done # para DIR
==========================================================================

No olvides establecer el guión como ejecutable y luego ejecutarlo usando
algo como:
./compman /usr/share/man bz2

La primera opción es el árbol de la página del manual que se va a comprimir.
La segunda opción es bz2 o gz, así le decimos al guión qué sistema de
compresión queremos usar.

(2)      cat pages

POR AGREGAR - Hay un pequeño problema; Por el momento no puedo hacer que
funcione. ¡Espero poder solucionar esto pronto!