#!/bin/sh --
#	lzh2tar.sh - Convert lzh to tar
#	Mon,14 Jan,2008
#	Copyright(C)2008 G-HAL
#
RM=/bin/rm
CHMOD=/bin/chmod
ECHO=/bin/echo
MKTEMP=/usr/bin/mktemp
GREP=/usr/bin/grep
BASENAME=/usr/bin/basename
DIRNAME=/usr/bin/dirname
STAT=/usr/bin/stat
TOUCH=/usr/bin/touch
SED=/usr/bin/sed
XARGS=/usr/bin/xargs
TAR=/usr/bin/tar
LHA=/usr/local/bin/lha
#
SED_REFORMAT__GET_SUFFIX='s/^.*(\.[^\.]*)$/\1/'
LHA_STDOUT__KEY='	- Melted  $'
#
#
if [ "x${TMPDIR}" = "x" ]; then
  TMPDIR=/tmp
fi
if [ "x${1}" = "x" ]; then
  echo "$0: Argment required..."
  exit 1
fi
if [ "x${1}" = "x--delete" ]; then
  ARG_FILE=$2
  SW_RM=true
else
  ARG_FILE=$1
  SW_RM=false
fi
if [ ! -f ${ARG_FILE} ]; then
  echo "$0: No input file..."
  exit 1
fi
#
ARG_DIR=`${DIRNAME} ${ARG_FILE}`
ARG_SUFFIX=`${ECHO} "${ARG_FILE}" | ${SED} -E "${SED_REFORMAT__GET_SUFFIX}"`
if [ "${ARG_SUFFIX}" = "${ARG_FILE}" ]; then
  echo "$0: Can't quarry suffix..."
  exit 1
fi
ARG_BASE=`${BASENAME} -s ${ARG_SUFFIX} ${ARG_FILE}`
DST_FILE="${ARG_DIR}/${ARG_BASE}.tar"
#
if [ ! "${ARG_SUFFIX}" = ".lzh" -a ! "${ARG_SUFFIX}" = ".lha" ]; then
  echo "$0: Unknown suffix..."
  exit 1
fi
#
#
tempfoo=`${BASENAME} $0`
TMPDIR1=`${MKTEMP} -d ${TMPDIR}/${tempfoo}.XXXXXX`
if [ $? -ne 0 ]; then
  echo "$0: Can't create temp dir, exiting..."
  exit 1
fi
TMPFILE2=`${MKTEMP} ${TMPDIR}/${tempfoo}.XXXXXX`
if [ $? -ne 0 ]; then
  echo "$0: Can't create temp file, exiting..."
  exit 1
fi
#
#
SED_REFORMAT__CUT_LHA_KEY='s/^'`${ECHO} ${TMPDIR1} | ${SED} -e "s/\//\\\\\\\\\//g"`'\/(.*)'${LHA_STDOUT__KEY}'/\1/'
${LHA} xgw=${TMPDIR1} -q1 ${ARG_FILE} | ${GREP} -e "${LHA_STDOUT__KEY}" | ${SED} -E "${SED_REFORMAT__CUT_LHA_KEY}" | ${SED} -e "s/ /\\\\ /g" > ${TMPFILE2}
${XARGS} ${TAR} -cf ${DST_FILE} -C ${TMPDIR1} < ${TMPFILE2}
#
${TOUCH} -c -h -r ${ARG_FILE} ${DST_FILE}
${CHMOD} -h `${STAT} -n -f "%Mp%03Lp" ${ARG_FILE}` ${DST_FILE}
if [ ${SW_RM} = true ]; then
  ${RM} -P ${ARG_FILE}
fi
#
${RM} -PR ${TMPDIR1}
${RM} -P ${TMPFILE2}
#
# [ End of File ]

