#!/bin/bash
#< Script to format shell code redirection and ampersand into HTML entities
BASENAME="/usr/bin/basename"
CAT="/bin/cat"
CP="/bin/cp"
DATE="/bin/date"
ECHO="/bin/echo"
MV="/bin/mv"
RM="/bin/rm"
SED="/usr/bin/sed"
BACKUP_DIR="/var/tmp/html_backup"
THIS_PROG=$( ${BASENAME} $0 )
TMP_DIR="/tmp"
print_error() {
${ECHO} "Error: $@" >&2
}
print_usage() {
{
${ECHO} "Usage: ${THIS_PROG} file_1 [file_2..[file_n]]"
} >&2
}
check_input_file() {
if [ ! -e "${INPUT_FILE}" ]; then
print_error "Input file ${INPUT_FILE} does not exist"
exit 1
fi
if [ "${INPUT_FILE##*.}" != "html" ]; then
print_error "Filename ${INPUT_FILE} does not end in .html - is this an HTML file?"
exit 1
fi
}
check_backup_directory() {
if [ ! -d "${BACKUP_DIR}" ]; then
print_error "Backup directory ${BACKUP_DIR} does not exist"
exit 1
elif [ ! -w "${BACKUP_DIR}" ]; then
print_error "Backup directory ${BACKUP_DIR} is not writable"
exit 1
fi
}
create_backup() {
FILENAME=$( ${BASENAME} "${INPUT_FILE}" )
TIMESTAMP=$( ${DATE} +%Y%m%d-%H%M )
SUFFIX="${TIMESTAMP}.$$"
BACKUP_FILE="${BACKUP_DIR}/${FILENAME}.${SUFFIX}"
${CP} ${INPUT_FILE} "${BACKUP_FILE}"
${ECHO} "Backup created: ${BACKUP_FILE}"
}
process_file() {
FILENAME=$( ${BASENAME} "${INPUT_FILE}" )
TMP_FILE="${TMP_DIR}/${FILENAME}.working"
HEADER_FILE="${TMP_DIR}/${FILENAME}.header"
FOOTER_FILE="${TMP_DIR}/${FILENAME}.footer"
BODY_FILE="${TMP_DIR}/${FILENAME}.body"
REBUILT_FILE="${TMP_DIR}/${FILENAME}.rebuilt"
${SED} -n '1,2 p' ${INPUT_FILE} > ${HEADER_FILE}
${SED} -n '$ p' ${INPUT_FILE} > ${FOOTER_FILE}
${SED} -e '1,2 d' -e '$ d' ${INPUT_FILE} > ${BODY_FILE}
${SED} 's/&/\&/g; s/</\</g; s/>/\>/g;' ${BODY_FILE} > "${TMP_FILE}"
${CAT} ${HEADER_FILE} ${TMP_FILE} ${FOOTER_FILE} > ${REBUILT_FILE}
${MV} ${REBUILT_FILE} ${INPUT_FILE}
${RM} -f ${TMP_DIR}/${FILENAME}.{working,header,footer,body}
}
if [ "$#" -lt "1" -o "$1" = "-h" ]; then
print_usage
exit 1
fi
check_backup_directory
while [ "$#" -ge "1" ]; do
INPUT_FILE=$1
check_input_file
create_backup
process_file
shift
done
exit 0