pike.git
/
lib
/
modules
/
Search.pmod
/
Filter.pmod
/
Word.pmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/lib/modules/Search.pmod/Filter.pmod/Word.pmod:1:
+
// This file is part of Roxen Search
+
// Copyright © 2001 - 2009, Roxen IS. All rights reserved.
+
//
+
// $Id: Word.pmod,v 1.13 2009/05/25 18:26:52 mast Exp $
-
+
inherit .HTML;
+
+
constant contenttypes = ({ "application/msword", "application/vnd.ms-word" });
+
constant fields = ({ "body", "title", "keywords"});
+
+
.Output filter(Standards.URI uri, string|Stdio.File data, string content_type)
+
{
+
.Output res=.Output();
+
+
if(objectp(data))
+
data=data->read();
+
+
string fn = tmp_filename();
+
object f = Stdio.File(fn, "wct");
+
int r = f->write(data);
+
f->close();
+
if(r != sizeof(data))
+
error("Failed to write data for %O (returned %O, not %O)\n",
+
fn, r, sizeof(data));
+
+
string text;
+
string bin = combine_path(getcwd(), "modules/search/bin/wvWare");
+
string cwd = combine_path(getcwd(), "modules/search/bin");
+
string xml = combine_path(getcwd(), "modules/search/pike-modules/"
+
"Search.pmod/Filter.pmod/wvHtml.xml");
+
string doc = combine_path(getcwd(), fn);
+
mixed err = catch
+
{
+
// Wait for process exit since rm() may otherwise fail
+
text = my_popen( ({ bin, "-1", "-c", "utf-8", "-x", xml, doc }), cwd, 1);
+
};
+
if(!rm(fn))
+
werror("Search: Failed to remove temporary file: %s\n", fn);
+
if(err)
+
throw(err);
+
+
return ::filter(uri, text, "text/html", ([]), "utf-8");
+
}
Newline at end of file added.