#!/bin/bash

die() {
  typeset THISRC=$1

  [[ "$1" != "" ]] && shift

  [[ "$1" != "" ]]  && echo "$*"
  [[ "${TMPDIR}" != "" -a ]] && [[ -d ${TMPDIR} ]] && rm -r ${TMPDIR}
  exit ${THISRC}
}


  [[ "${IPKG_TMP}" != "" ]] && TMP="${IPKG_TMP}"

  [[ "${TMP}" == "" ]] && TMP="/tmp"

  TMPDIR="${TMP}/$(basename $0).$$"

  PKG_FILES="control.tar.gz data.tar.gz debian-binary"

  which ar >/dev/null
  [[ $? -ne 0 ]] && die 5 "Can not find the ar executable!"

  [[ "$1" == "" ]] && die 1 "Usage: $( basename $0 ) fullname_of_ipkfile_to_convert [...]"

  mkdir -p ${TMPDIR}
  cd  ${TMPDIR}

  INPUTFILES="$*"

  for CUR_IPKG in ${INPUTFILES} ; do
    if [ ! -f ${CUR_IPKG} ] ; then
      echo "ERROR: ${CUR_IPKG} not found. Hint: Use the fully qualified filename"
      continue
    fi

    ar -x ${CUR_IPKG} || die 2 "Error extracting the file \"${CUR_IPKG}\" "
    for CURFILE in ${PKG_FILES} ; do
      [[ ! -f ${CURFILE} ]] && die 3 "Error extracting the file (\"${CURFILE}\" not found)"
    done

    mv ${CUR_IPKG} ${CUR_IPKG}.ar
    tar cvf - ${PKG_FILES} | gzip >${CUR_IPKG}
    [[ $? -ne 0 ]] && die 4 "Error creating the converted archive: \"${CUR_IPKG}\" "
   
  done
  die 0
