if [ -f "/media/cryptofs/apps/usr/bin/lsdiff" ] ; then
  LSDIFF=/media/cryptofs/apps/usr/bin/lsdiff
else
  LSDIFF=/var/usr/bin/lsdiff
fi

if [ -f "/media/cryptofs/apps/usr/bin/patch" ] ; then
  PATCH_EXEC=/media/cryptofs/apps/usr/bin/patch
else
  PATCH_EXEC=/var/usr/bin/patch
fi

if [ -f "/media/cryptofs/apps/usr/bin/file" ] ; then
  FILE_UTIL=/media/cryptofs/apps/usr/bin/file
else
  FILE_UTIL=/var/usr/bin/file
fi

FILE_LIST=`$LSDIFF --strip=1 $APP_DIR/$PATCH_NAME`
BASE=`basename "$APP_DIR"`
IPKG_INFO_DIR=/usr/lib/ipkg/info
PATCH_CONTROL_DIR=/var/usr/lib/.webosinternals.patches
PATCH_PACKAGES_LIST=/media/internal/.webosinternals.patches.packages
VERSION=aupt-1

do_failure() {
  exit 0
}

# MAIN
if [ "$IPKG_OFFLINE_ROOT" = "" ]
then
  do_failure
fi

if [ "$APP_DIR" = "" ] || [ "$PATCH_NAME" = "" ]
then
  do_failure
fi

if [ ! -e $PATCH_EXEC ]
then
  do_failure
fi

if [ ! -e $LSDIFF ]
then
  do_failure
fi

if [ ! -d $PATCH_CONTROL_DIR ]
then
  rm -rf $PATCH_CONTROL_DIR
  mkdir -p $PATCH_CONTROL_DIR || do_failure
fi

if [ ! -e $PATCH_CONTROL_DIR/backups ]
then
  touch $PATCH_CONTROL_DIR/backups || do_failure
fi

if [ ! -e $PATCH_PACKAGES_LIST ]
then
  touch $PATCH_PACKAGES_LIST
  echo "/usr/palm/applications/$BASE/package_list/" >> /media/cryptofs/apps/$IPKG_INFO_DIR/$BASE.list
fi

if [ -e $PATCH_CONTROL_DIR/packages ]
then
  cat $PATCH_CONTROL_DIR/packages >> $PATCH_PACKAGES_LIST
  rm -f $PATCH_CONTROL_DIR/packages
fi

rm -f $APP_DIR/md5sums
touch $APP_DIR/md5sums

if [ ! -e $APP_DIR/package_list ]
then
  touch $APP_DIR/package_list || do_failure
fi

for i in $FILE_LIST
do
  file=/$i

  if [ -e $file ]
  then
    for j in `cat $APP_DIR/package_list`
    do
      md5sum_line=`grep -h $file $IPKG_INFO_DIR/$j.md5sums`
      if [ "$md5sum_line" != "" ]
      then
        echo $md5sum_line >> $APP_DIR/md5sums
        palm_md5sum=`echo $md5sum_line | awk '{print $1}'`
      fi
    done
  fi

  if [ ! -e $file.webosinternals.orig ]
  then
    if [ ! -e $file ]
    then
      mkdir -p `dirname $file`
      touch $file.webosinternals.orig
    else
      cp $file $file.webosinternals.orig
    fi
  elif [ -e $file ]
  then
    file_md5sum=`md5sum $file | awk '{print $1}'`

    if [ "$palm_md5sum" = "" ]
    then
        palm_md5sum=`grep -h $file $IPKG_INFO_DIR/*.md5sums | awk '{print $1}'`
    fi

    if [ "$file_md5sum" = "$palm_md5sum" ]
    then
      rm -f $file.webosinternals.orig
      cp $file $file.webosinternals.orig
    fi
  fi

  tmpvar=`echo $file | tr '/' '.'`
  sed -i -e /$tmpvar/d $PATCH_CONTROL_DIR/backups
  echo "$file $VERSION" >> $PATCH_CONTROL_DIR/backups
done

if [ -e $PATCH_PACKAGES_LIST ] 
then
  sed -i -e /`basename $APP_DIR`/d $PATCH_PACKAGES_LIST
fi

basename "$APP_DIR $VERSION">> $PATCH_PACKAGES_LIST


exit 0
