(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* 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
]
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 =
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