Monday, February 9, 2004, 11:07:27 PM, Hallvard wrote:

> I know some people say "garbage in - garbage out", but one can't
> always control what comes into one's programs as input. Here's what
> came to one of mine:

> http://www.bbc.co.uk/cgi-perl/h2/h2.cgi?state=threads&board=cult.tamaraswift&&sort=T

thanks for reporting that, hallvard! i've extended my patched version
of decode-cgi to cope with that as well:

>> decode-cgi "state=threads&board=cult.tamaraswift&&sort=T"
== [state: "threads" board: "cult.tamaraswift" sort: "T"]

-- snip --
decode-cgi: func [
     {Converts CGI argument string to a list of words and value strings.}
     args [any-string!] "Starts at first argument word"
     /local list nv-pair value name name-chars val
][
    add-nv: func [ list name value /local val-ptr ] [
        if none? name [ return ]

        value: dehex replace/all any [ value (copy "") ] "+" " "
        either val-ptr: find list to-set-word name 
            [ change/only next val-ptr compose [ (first next val-ptr) (value) ] ]
            [ append list compose [ (to-set-word name) (value) ] ]
    ]

    list: make block! 8
    name-chars: complement charset "&="
    nv-pair:    [ copy name some name-chars value (add-nv list name val) | "&" ]
    value:      [ "=" value | "&" | [ copy val to "&" skip | copy val to end ] ]

    parse/all args [ some nv-pair | none ]
    list
]
-- snap --

if someone wants to submit it to the view 1.3 effort, do not hesitate
to do so.

-- 
Best regards,
 Andreas


-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to