--- /Depot/GoboCVS/tools/Scripts/Functions/GoboLinux	2007-03-30 10:48:51.000000000 +0200
+++ /Depot/GoboCVS/MyTools/Scripts/Functions/GoboLinux	2007-04-04 06:31:41.000000000 +0200
@@ -668,3 +668,74 @@
    cat $filesdir
    rm -- $filesdir
 }
+
+# IsDetached :: Tells if a program is detached or not
+# ##########
+# $1 -> program name
+# $2 -> program version
+# Returns -> 0 if program is detaches, 1 otherwise
+# #################
+function IsDetached () {
+	Parameters "$@" program version
+	local programdir=`Get_Dir runtime $program $version`
+	Quiet readlink $programdir
+	return
+}
+
+# UnlinkProgram :: Unlinks files for Program
+# #############
+# $1 -> Program Name
+# $2 -> Program Version
+# $3 -> Type of program: (attached | detached)
+# $4 -> Unmanaged entry: (keep | ask)
+# ####################
+function UnlinkProgram () {
+	Parameters "$@" program version type unmanaged
+	[ $type == "detached" ] && local programdir=`Get_Dir install $program $version` || local programdir=`Get_Dir runtime $program $version` 
+	local filesdir=$(Get_System_Paths "$programdir")
+	Log_Normal "Removing links..."
+	for file in $filesdir
+	do
+		readlink $file | Quiet grep "^$programdir" && Is_Writable $file && Quiet unlink $file
+	done
+	if [ -f ${programdir}/Resources/UnmanagedFiles -a $unmanaged != "keep" ]
+	then
+		{ [ $unmanaged == "ask" ] && ! Ask "There are unmanaged files present. Do you want to remove them?"; } || Uninstall_Unmanaged_Files "${programdir}Resources/UnmanagedFiles"
+	fi
+	Gen_Env_Cache
+}
+
+# UnlinkCurrent :: Basically removes Current link
+# #############
+# $1 -> Program name
+# $2 -> Program version
+# Returns -> 0 if success, 1 when fails
+# ####################
+function UnlinkCurrent () {
+	Parameters "$@" program version
+	local programdir=`Get_Dir runtime "$program" "$version"`
+	if [ "`Get_Version "$program" "Current"`" == "$version" ]
+	then
+		rm -rf `Get_Dir runtime "$program" ''`/Current
+	fi
+}
+
+# RemoveProgram :: Remove directories for a program
+# #############
+# $1 -> Program Name
+# $2 -> Program Version
+# $3 -> Program type (attached | detached)
+# ####################
+function RemoveProgram () {
+	Parameters "$@" program version type
+	[ $type == "detached" ] && local getdir="install" || local getdir="runtime"
+	local programdir=`Get_Dir $getdir $program $version` 
+	Log_Normal "Removing $programdir..."
+	# Remove Program
+	rm -rf -- ${programdir}
+	Quiet rmdir $(Get_Dir "$getdir" "$programname" '')
+	[ $type == "detached" ] && {
+		Quiet RemoveBroken $(Get_Dir runtime "$programname" '$version')
+		Quiet rmdir $(Get_Dir runtime "$programname" '')
+	}
+}
