--- /Depot/GoboCVS/tools/Scripts/bin/DisableProgram	2007-03-30 10:48:51.000000000 +0200
+++ /Depot/GoboCVS/MyTools/Scripts/bin/DisableProgram	2007-04-04 06:06:59.000000000 +0200
@@ -5,6 +5,7 @@
 Import GoboLinux
 Import Log
 Import OptionParser
+Import Directories
 
 ### Options ###################################################################
 
@@ -20,7 +21,7 @@
 "from package. Options available are \"ask\", \"remove\" and \"keep\"." "ask"
 Parse_Options "$@"
 
-### Operation #################################################################
+### Operation ###################################################################
 
 Is_Writable "${goboPrograms}" || Verify_Superuser
 
@@ -30,34 +31,25 @@
 else versionnumber=`Get_Version "$programname" "Current"`
 fi
 
-prefix="${goboPrograms}/$programname/$versionnumber"
+IsDetached $programname $versionnumber && isdetached=true || isdetached=false
 
-Is_Directory "$prefix" || Die "$programname version $versionnumber was not found."
+Is_Directory `Get_Dir runtime "$programname" "$versionnumber"` || {
+	# Remove links if there are any active
+	IsDetached $programname $versionnumber && Quiet UnlinkProgram $programname $versionnumber "detached" $unmanaged
+	Die "$programname version $versionnumber was not found."
+}
 
 Log_Normal "Disabling ${programname}, version ${versionnumber}."
 
-disabled="${goboPrograms}/$programname/$versionnumber-Disabled"
-
-if [ "`Get_Version "$programname" "Current"`" == "$versionnumber" ]
+UnlinkCurrent $programname $versionnumber || Die "Couldn't disable $programname $versionnumber."
+if IsDetached $programname $versionnumber
 then
-    rm -rf ${goboPrograms}/$programname/Current
+	# Program is Detached, unlink files
+	UnlinkProgram $programname $versionnumber "detached" $(Entry unmanaged)
+else
+	# Program is  Attached, unlink files also :)
+	UnlinkProgram $programname $versionnumber "attached" $(Entry unmanaged)
 fi
-mv "$prefix" "$disabled" || Die "Couldn't disable $programname $versionnumber."
-
-filesdir=$(Get_System_Paths "$disabled")
-
-Log_Normal "Removing links..."
-RemoveBroken $filesdir || Die "Couldn't cleanup links."
-
-if [ -f ./Resources/UnmanagedFiles ] && ! Is_Entry "unmanaged" "keep"
-then
-   { Is_Entry "unmanaged" "ask" && ! Ask "There are unmanaged files present. Do you want to remove them?"; } || Uninstall_Unmanaged_Files "${goboPrograms}/$programname/$versionnumber-Disabled/Resources/UnmanagedFiles"
-fi
-
-Gen_Env_Cache
-
-
-mv "$disabled" "$prefix" || Die "Please check $disabled."
 Log_Normal "${programname} ${versionnumber} disabled."
 
 # TODO unlink current if it's the one that was disabled.
