--- usr/share/initramfs-tools/scripts/live	2007-11-18 16:21:41.000000000 +0000
+++ usr/share/initramfs-tools/scripts/live	2008-01-24 00:48:39.000000000 +0000
@@ -60,6 +60,16 @@
                                 export FETCH
                                 ;;
 
+			ftpfs=*)
+				FTPFS="${ARGUMENT#ftpfs=}"
+				export FTPFS
+				;;
+
+			httpfs=*)
+				HTTPFS="${ARGUMENT#httpfs=}"
+				export HTTPFS
+				;;
+
 			hostname=*)
 				HOSTNAME="${ARGUMENT#hostname=}"
 				LIVECONF="changed"
@@ -648,7 +653,7 @@
 		NFSROOT=${ROOTSERVER}:${ROOTPATH}
 	fi
 
-	if [ -n "${FETCH}" ] && do_httpmount
+	if [ -n "${FETCH}" -o -n "${HTTPFS}" -o -n "${FTPFS}" ] && do_httpmount
 	then
 		rc=0
 		return ${rc}
@@ -678,19 +683,39 @@
 do_httpmount ()
 {
 	rc=1
-	extension=$(echo "${FETCH}" | sed 's/\(.*\)\.\(.*\)/\2/')
+	dest="${mountpoint}/${LIVE_MEDIA_PATH}"
+	mount -t ramfs ram "${mountpoint}"
+	mkdir -p "${dest}"
+	for webfile in HTTPFS FTPFS FETCH ; do
+
+	url=`eval echo \"\$\{${webfile}\}\"`
+	extension=$(echo "${url}" | sed 's/\(.*\)\.\(.*\)/\2/')
 
-	case "${extension}" in
+	[ -n "$url" ] && case "${extension}" in
 		squashfs|tgz|tar)
-			[ "${quiet}" != "y" ] && log_begin_msg "Trying wget ${FETCH} -O ${mountpoint}/$(basename ${FETCH})"
-			mkdir -p "${mountpoint}/${LIVE_MEDIA_PATH}"
-			wget "${FETCH}" -O "${mountpoint}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
+			if [ $webfile = FETCH ] ; then
+			[ "${quiet}" != "y" ] && log_begin_msg "Trying wget ${url} -O ${dest}/$(basename ${url})"
+			wget "${url}" -O "${dest}/$(basename ${url})"
+			else
+			[ "${quiet}" != "y" ] && log_begin_msg "Trying mount ${url} on ${dest}/$(basename ${url})"
+				if [ $webfile = FTPFS ] ; then
+				  FUSE_MOUNT=curlftpfs
+				  url=`dirname $url`
+				else
+				  FUSE_MOUNT=httpfs
+				fi
+				modprobe fuse
+				$FUSE_MOUNT "${url}" "${dest}"
+			fi
 			[ ${?} -eq 0 ] && rc=0
 			[ "${extension}" = "tgz" ] && live_dest="ram"
+                       break
 			;;
 
 		*)
-			[ "${quiet}" != "y" ] && log_begin_msg "Unrecognized archive extension for ${FETCH}"
+			[ "${quiet}" != "y" ] && log_begin_msg "Unrecognized archive extension for ${url}"
 	esac
+	done
+	if [ ${rc} != 0 ] ; then umount "${mountpoint}" ; fi
 
 	return ${rc}
@@ -1234,7 +1249,7 @@
 
 	set_usplash_timeout
 
-	if [ ! -z "${NETBOOT}" ] || [ ! -z "${FETCH}" ]
+	if [ ! -z "${NETBOOT}" ] || [ ! -z "${FETCH}" ] || [ ! -z "${HTTPFS}" ] || [ ! -z "${FTPFS}" ]
 	then
 		if do_netmount
 		then
