Author: dteske
Date: Sun Jun 23 09:41:47 2013
New Revision: 252109
URL: http://svnweb.freebsd.org/changeset/base/252109

Log:
  Fine-tune the parsing of the URL. Re-order, comment, and add debugging to
  each case of unique URL format.

Modified:
  head/usr.sbin/bsdconfig/share/media/ftp.subr
  head/usr.sbin/bsdconfig/share/media/httpproxy.subr

Modified: head/usr.sbin/bsdconfig/share/media/ftp.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/media/ftp.subr        Sun Jun 23 09:34:55 
2013        (r252108)
+++ head/usr.sbin/bsdconfig/share/media/ftp.subr        Sun Jun 23 09:41:47 
2013        (r252109)
@@ -378,27 +378,62 @@ f_media_set_ftp()
 
        local hostname="${url#*://}" port=21 dir=/
        case "$hostname" in
-       "["*"]")
+       #
+       # The order in-which the below individual cases appear is important!
+       #
+       "["*"]":*/*) # IPv6 address with port and directory
+               f_dprintf "Looks like an IPv6 addr with port/dir: %s" \
+                         "$hostname"
                hostname="${hostname#\[}"
-               hostname="${hostname%%\]*}"
+               port="${hostname#*\]:}"
+               port="${port%%[!0-9]*}"
+               dir="/${hostname#*/}"
+               hostname="${hostname%%\]:*}"
                ;;
-       "["*"]/"*)
+       "["*"]":*) # IPv6 address with port
+               f_dprintf "Looks like an IPv6 addr with port: %s" "$hostname"
                hostname="${hostname#\[}"
-               dir="/${hostname#*/}"
-               hostname="${hostname%%\]*}"
+               port="${hostname#*\]:}"
+               port="${port%%[!0-9]*}"
+               hostname="${hostname%%\]:*}"
                ;;
-       *"/"*)
+       "["*"]"/*) # IPv6 address with directory
+               f_dprintf "Looks like an IPv6 addr with dir: %s" "$hostname"
+               hostname="${hostname#\[}"
                dir="/${hostname#*/}"
-               hostname="${hostname%%/*}"
+               hostname="${hostname%%\]*}"
                ;;
-       "["*"]:"*)
+       "["*"]") # IPv6 address
+               f_dprintf "Looks like an IPv6 addr: %s" "$hostname"
                hostname="${hostname#\[}"
-               port="${hostname#*\]:}"
+               hostname="${hostname%\]}"
+               ;;
+       #
+       # ^^^ IPv6 above / DNS Name or IPv4 below vvv
+       #
+       *:*/*) # DNS name or IPv4 address with port and directory
+               f_dprintf "Looks like a %s with port/dir: %s" \
+                         "DNS name or IPv4 addr" "$hostname"
+               port="${hostname#*:}"
                port="${port%%[!0-9]*}"
-               hostname="${hostname%%\]:*}"
+               dir="/${hostname#*/}"
+               hostname="${hostname%%:*}"
+               ;;
+       *:*) # DNS name or IPv4 address with port
+               f_dprintf "Looks like a DNS name or IPv4 addr with port: %s" \
+                         "$hostname"
+               port="${hostname#*:}"
+               hostname="${hostname%%:*}"
                ;;
-       *)
+       */*) # DNS name or IPv4 address with directory
+               f_dprintf "Looks like a DNS name or IPv4 addr with dir: %s" \
+                         "$hostname"
+               dir="/${hostname#*/}"
                hostname="${hostname%%/*}"
+               ;;
+       *) # DNS name or IPv4 address
+               f_dprintf "Looks like a DNS name or IPv4 addr: %s" "$hostname"
+               : leave hostname as-is
        esac
 
        f_dprintf "hostname = \`%s'" "$hostname"

Modified: head/usr.sbin/bsdconfig/share/media/httpproxy.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/media/httpproxy.subr  Sun Jun 23 09:34:55 
2013        (r252108)
+++ head/usr.sbin/bsdconfig/share/media/httpproxy.subr  Sun Jun 23 09:41:47 
2013        (r252109)
@@ -77,19 +77,33 @@ f_media_set_http_proxy()
 
        local hostname="$proxy" port=3128
        case "$hostname" in
-       "["*"]")
-               hostname="${hostname#\[}"
-               hostname="${hostname%\]}"
-               ;;
-       "["*"]:"*)
+       #
+       # The order in-which the below individual cases appear is important!
+       #
+       "["*"]":*) # IPv6 address with port
+               f_dprintf "Looks like an IPv6 addr with port: %s" "$hostname"
                hostname="${hostname#\[}"
                port="${hostname#*\]:}"
                port="${port%%[!0-9]*}"
                hostname="${hostname%%\]:*}"
                ;;
-       *":"*)
+       "["*"]") # IPv6 address
+               f_dprintf "Looks like an IPv6 addr: %s" "$hostname"
+               hostname="${hostname#\[}"
+               hostname="${hostname%\]}"
+               ;;
+       #
+       # ^^^ IPv6 above / DNS Name or IPv4 below vvv
+       #
+       *:*) # DNS name or IPv4 address with port
+               f_dprintf "Looks like a DNS name or IPv4 addr with port: %s" \
+                         "$hostname"
                port="${hostname#*:}"
                hostname="${hostname%%:*}"
+               ;;
+       *) # DNS name or IPv4 address
+               f_dprintf "Looks like a DNS name or IPv4 addr: %s" "$hostname"
+               : leave hostname as-is
        esac
 
        setvar $VAR_HTTP_PROXY_HOST "$hostname"
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to