#!/bin/sh
# Copyright (C) 2000-2016 Synology Inc. All rights reserved.

CHECK_AND_LINK_FILE()
{
	local LINK=$1
	local LINK_TARGET=$(realpath /var/packages/Perl/target/$LINK)
	local LINK_BASE=$(dirname $LINK)

	if [ ! -d "$LINK_BASE" ]; then
		mkdir -p $LINK_BASE
	fi
	if [ -e "$LINK" ]; then
		rm -rf $LINK
	fi
	if [ ! -e "$LINK" ]; then
		ln -sf $LINK_TARGET $LINK
	fi
}

CHECK_AND_REMOVE()
{
	[ -L $1 ] && rm $1
}

CHECK_LINK_TARGET()
{
	LINK=$1
	LINK_TARGET_REAL=$(readlink $LINK)
	LINK_TARGET=$(realpath /var/packages/Perl/target/$LINK)

	if [ -z "$LINK_TARGET_REAL" ]; then
		return 1
	fi

	if [ "$LINK_TARGET_REAL" != "$LINK_TARGET" ]; then
		return 1
	fi

	return 0
}

EACH()
{
	for file in $(cd /var/packages/Perl/target/ && find "$2" -mindepth 1 -maxdepth 1); do
		$1 /$file || return $?
	done
}

ALL()
{
	EACH $1 "usr/local/bin" || return $?
	EACH $1 "usr/local/sbin" || return $?
	EACH $1 "usr/local/share" || return $?
	EACH $1 "usr/local/lib" || return $?
	EACH $1 "usr/bin" || return $?
	EACH $1 "usr/lib" || return $?
}

DO_LINK()
{
	ALL CHECK_AND_LINK_FILE
}

DO_REMOVE()
{
	ALL CHECK_AND_REMOVE
}

CHECK_LINK()
{
	ALL CHECK_LINK_TARGET
}
