X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fpage.ml;h=a98e688358c070b5f1001a8ae26ca0199a51beb0;hb=eeb304015c65ccf593a77058d5db5f5a3e3b45d5;hp=f9bb3800d7dd10ef6a79722c5e433f520df1d280;hpb=df32ab1d0dd164b73cfa9607797eaf85e0a0154d;p=cocanwiki.git diff --git a/scripts/page.ml b/scripts/page.ml index f9bb380..a98e688 100644 --- a/scripts/page.ml +++ b/scripts/page.ml @@ -1,7 +1,7 @@ (* COCANWIKI - a wiki written in Objective CAML. * Written by Richard W.M. Jones . * Copyright (C) 2004 Merjis Ltd. - * $Id: page.ml,v 1.23 2004/09/27 16:21:09 rich Exp $ + * $Id: page.ml,v 1.24 2004/09/27 18:08:02 rich Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,6 +49,8 @@ let search_engines = [ ] let split_words = Pcre.regexp "\\W+" +let split_qs_re = Pcre.regexp "\\?" + let xhtml_re = Pcre.regexp "<.*?>|[^<>]+" let run r (q : cgi) (dbh : Dbi.connection) hostid {edit_anon=edit_anon} user = @@ -87,7 +89,12 @@ let run r (q : cgi) (dbh : Dbi.connection) hostid {edit_anon=edit_anon} user = let search_terms_from_referer referer = let _, argnames = List.find (fun (rex, _) -> Pcre.pmatch ~rex referer) search_engines in - let args = Cgi_args.parse referer in + let url, qs = + match Pcre.split ~rex:split_qs_re ~max:2 referer with + | [url] | [url;""] -> url, "" + | [url;qs] -> url, qs + | _ -> assert false in + let args = Cgi_args.parse qs in let argname = List.find (fun argname -> List.mem_assoc argname args) argnames in let search_string = List.assoc argname args in