--- chroot/usr/share/initramfs-tools/scripts/live.orig	2008-02-05 12:53:19.000000000 +0100
+++ chroot/usr/share/initramfs-tools/scripts/live	2008-02-05 13:08:39.000000000 +0100
@@ -18,6 +18,7 @@
 USERNAME="user"
 USERFULLNAME="Live user"
 HOSTNAME="host"
+WGET=/bin/wget #override busybox wget to get full functionality
 
 mkdir -p "${mountpoint}"
 
@@ -560,7 +561,12 @@
 	else
 		MODULETORAMFILE="${copyfrom}/${LIVE_MEDIA_PATH}/${MODULETORAM}"
 
-		if [ -f "${MODULETORAMFILE}" ]
+                if [ -n "${FETCH}" ]
+                then
+                    size=`${WGET} -S --spider "${FETCH}" 2>&1 | grep -i '^ *content-length: [0-9]*' | tail -n 1 | sed -e s/'^ *content-length: \([0-9]*\)'/'\1'/i`
+                    size=`expr "$size" / 1024 + 5000`
+
+		elif [ -f "${MODULETORAMFILE}" ]
 		then
 			size=$( expr $(ls -la ${MODULETORAMFILE} | awk '{print $5}') / 1024 + 5000 )
 		else
@@ -569,7 +575,7 @@
 		fi
 	fi
 
-	if [ "${copytodev}" = "ram" ]
+	if [ "${copytodev}" = "ram" ] || [ ${FETCH} ]
 	then
 		# copying to ram:
 		freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - ) )
@@ -602,11 +608,17 @@
 	echo "mount -t ${fstype} ${mount_options} ${dev} ${copyto}"
 	mount -t "${fstype}" ${mount_options} "${dev}" "${copyto}"
 
+        OLDPWD=`pwd`
 	if [ "${extension}" = "tgz" ]
 	then
 		cd "${copyto}"
-		tar zxf "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
-		rm -f "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
+                if [ -n "${FETCH}" ] 
+                then
+                    ${WGET} ${FETCH} -O - | tar -zxf -
+                else
+                    tar zxf "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
+                    rm -f "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
+                fi
 		mount -r --move "${copyto}" "${rootmnt}"
 		cd "${OLDPWD}"
 	else
@@ -614,12 +626,24 @@
 		then
 			cp ${MODULETORAMFILE} ${copyto} # copy only the filesystem module
 		else
+                    if [ -n "{$FETCH}" ]
+                    then
+                        mkdir -p "${copyto}/${LIVE_MEDIA_PATH}"
+                        cd "${copyto}/${LIVE_MEDIA_PATH}"
+                        ${WGET} --progress=bar:force ${FETCH}
+                        cd "${OLDPWD}"
+                    else
 			cp -a ${copyfrom}/* ${copyto}   # "cp -a" from busybox also copies hidden files
+                    fi
 		fi
 
-		livefs_root
-		umount ${copyfrom}
-		mount -r --move ${copyto} ${copyfrom}
+                if [ -z "${FETCH}" ]
+                then
+                    umount ${copyfrom}
+                    mount -r --move ${copyto} ${copyfrom}
+                else
+                    livefs_root=${copyto}
+                fi
 	fi
 
 	rmdir ${copyto}
@@ -648,12 +672,6 @@
 		NFSROOT=${ROOTSERVER}:${ROOTPATH}
 	fi
 
-	if [ -n "${FETCH}" ] && do_httpmount
-	then
-		rc=0
-		return ${rc}
-	fi
-
 	if [ "${NFSROOT#*:}" = "${NFSROOT}" ] && [ "$NETBOOT" != "cifs" ]
 	then
 		NFSROOT=${ROOTSERVER}:${NFSROOT}
@@ -661,7 +679,10 @@
 
 	[ "${quiet}" != "y" ] && log_begin_msg "Trying netboot from ${NFSROOT}"
 
-	if [ "${NETBOOT}" != "nfs" ] && do_cifsmount
+        if [ -n "${FETCH}" ] && do_fetchmount
+	then
+		rc=0
+        elif [ "${NETBOOT}" != "nfs" ] && do_cifsmount 
 	then
 		rc=0
 	elif do_nfsmount
@@ -744,6 +765,20 @@
 	return ${rc}
 }
 
+do_fetchmount ()
+{
+    rc=1
+    if [ -x ${WGET} ] 
+    then
+        if ${WGET} -S --spider ${FETCH} 2>&1 | tail -n 3 | grep ^200
+        then 
+            #just test the file is there
+            rc=0
+        fi
+    fi
+	return ${rc}
+}
+
 do_snap_copy ()
 {
 	fromdev="${1}"
@@ -1264,7 +1299,7 @@
 		panic "Unable to find a medium containing a live file system"
 	fi
 
-	if [ "${TORAM}" ]
+	if [ "${TORAM}" ] || [ "${FETCH}" ]
 	then
 		live_dest="ram"
 	elif [ "${TODISK}" ]
