--- port.tcl	2006-08-30 02:09:58.000000000 -0400
+++ /Users/favila/dports-dev/port.tcl	2007-02-27 07:04:40.000000000 -0500
@@ -2006,6 +2006,29 @@
 			ui_debug "$errorInfo"
 			break_softcontinue "Unable to open port: $result" 1 status
 		}
+		
+		# Make the -R switch work for fetch
+		if { $target == "fetch" && [info exists options(ports_do_dependents)]} {
+			if {[dportdepends $workername] != 0} {
+				break_softcontinue "Unable to determine dependents: $result" 1 status
+			}
+			# Build a list of dependencies to be fetched
+			set dlist [dlist_append_dependents $darwinports::open_dports $workername {}]
+			# Delete the port itself, because will be fetched after this block.
+			dlist_delete dlist $workername
+			
+			foreach dport $dlist {
+			# XXX code duplication. not sure how to refactor without touching everything
+				if {[catch {set result [dportexec $dport "fetch"]} result]} {
+					global errorInfo
+					dportclose $dport
+					ui_debug "$errorInfo"
+					break_softcontinue "Unable to fetch port: $result" 1 status
+				}
+				dportclose $dport
+			}
+		}
+		
 		if {[catch {set result [dportexec $workername $target]} result]} {
 			global errorInfo
 			dportclose $workername

