#!/bin/sh

FIFO=/var/cp_fifo
DIR=
RM=

mkfifo $FIFO 2>/dev/null

while true; do
  read CMD FILE < $FIFO

  case "$CMD" in
    cd)
      DIR=$FILE
      [ -d "$DIR" ] || DIR=${DIR%/[^/]*}
      ;;

    cp)
      [ -z "$DIR" ] && continue
      rw "$DIR"
      cp -R "$FILE" "$DIR"
      ro "$DIR"
      ;;

    rm)
      RM=$FILE
      ;;

    rmok)
      if [ "$FILE" = "$RM" ]; then
        rw "$FILE"
        rm -r "$FILE"
        ro "$FILE"
      fi
      RM=
      ;;

    exit)
      break;
      ;;
  esac
done

rm $FIFO
