Compare commits

...

1599 commits

Author SHA1 Message Date
Jean-Francois Dockes
13df29f01f Use recursive mutex on log calls because some call arguments can themselves call the log. Caused actual deadlocks in recoll 1.23 GUI with high verbosity 2017-01-16 13:59:11 +01:00
Jean-Francois Dockes
35d92714d9 log statement cleanup while looking for sthing else... 2017-01-16 13:40:44 +01:00
Jean-Francois Dockes
c50ff21bf8 log 2017-01-16 11:14:54 +01:00
Jean-Francois Dockes
d8c11e62ef log 2017-01-16 11:13:50 +01:00
Jean-Francois Dockes
5bbef7fc98 Fix mimetype filtering (indexedmimetypes/excludedmimetypes) not working for embedded documents 2017-01-13 09:18:18 +01:00
Jean-Francois Dockes
ae61973ee0 web 2017-01-13 09:14:08 +01:00
Jean-Francois Dockes
b1a7c594e7 get rid of forgotten remaining STD_SHARED_PTR parser bison source 2017-01-13 09:13:47 +01:00
Jean-Francois Dockes
6583d48dad Windows GUI: transform file paths to use backslashes before passing them to viewer, as some windows viewers only understand backslashes 2017-01-02 11:18:16 +01:00
Jean-Francois Dockes
d14bab6130 win version 2016-12-16 10:23:07 +01:00
Jean-Francois Dockes
5dc856542d Search term did not get passed to viewer for the main page open link because of mysteriously lost line of code 2016-12-11 18:53:29 +01:00
Jean-Francois Dockes
a79bbba2db Replace deprecated Xapian::Database::flush() with commit() (name change only) 2016-12-11 09:40:29 +01:00
Jean-Francois Dockes
6670b36bb7 added "all in one" rclepub1 filter (no individual indexing of chapters) 2016-12-05 15:19:02 +01:00
Jean-Francois Dockes
ee15caa509 w version innosetup 2016-12-05 12:32:47 +01:00
Jean-Francois Dockes
e94efa964c Windows: change backslashes to slashes when accepting native viewer command (avoid later issues with stringtostrings) 2016-12-05 12:28:22 +01:00
Jean-Francois Dockes
58e546076d Add maximize=1/0 parameter to gui native viewer defs for opening maximized window on Windows 2016-12-05 12:17:56 +01:00
Jean-Francois Dockes
5acaefd942 merge win changes 2016-12-03 10:52:30 +01:00
Jean-Francois Dockes
6534980618 Add option for starting maximized to rclstartw 2016-12-03 10:51:06 +01:00
Jean-Francois Dockes
9f6780486d innosetup version update 2016-12-03 10:50:44 +01:00
Jean-Francois Dockes
1714d2aad1 comments and traces 2016-12-02 10:57:48 +01:00
Jean-Francois Dockes
21400af15d Update debian packaging, and use the new appropriate kde version for newer ubuntu releases 2016-11-26 10:47:22 +01:00
Jean-Francois Dockes
d3280af7ad web 2016-11-26 09:40:38 +01:00
Jean-Francois Dockes
b68580441c doc 2016-11-17 13:32:55 +01:00
Jean-Francois Dockes
d0e3c20241 doc 2016-11-17 13:32:29 +01:00
Jean-Francois Dockes
3a473a1ae3 Updated version string for windows 2016-11-15 18:35:32 +01:00
Jean-Francois Dockes
308d0f424a merged windows changes (mostly: xapian->1.4) 2016-11-15 18:32:40 +01:00
Jean-Francois Dockes
1d303468a5 detect unicode BOM in text files 2016-11-15 18:31:34 +01:00
Jean-Francois Dockes
68d4d36f83 merge common code 2016-11-15 18:30:01 +01:00
Jean-Francois Dockes
2e022af5b0 doc 2016-11-15 18:27:18 +01:00
Jean-Francois Dockes
38f8e522ae Updated innosetup file 2016-11-15 18:25:31 +01:00
Jean-Francois Dockes
6d6d73e455 Windows: use xapian 1.4 2016-11-15 16:43:05 +01:00
Jean-Francois Dockes
a1d68511af pretty 2016-11-08 12:42:46 +01:00
Jean-Francois Dockes
74c341f726 added listmem 2016-11-08 12:42:19 +01:00
Jean-Francois Dockes
ee2dda44f2 added 2016-11-08 12:41:40 +01:00
Jean-Francois Dockes
c03bd1b91a sync with common 2016-11-08 12:41:29 +01:00
Jean-Francois Dockes
ee58aabdbe make use of st::future conditional, we do not really need it 2016-11-08 12:40:44 +01:00
Jean-Francois Dockes
cc858289e8 removed test code 2016-11-08 12:40:15 +01:00
medoc
22f57ebffc Merged in monperrus/recoll/monperrus/fix-typo-in-mimeview-tb-opens-eml-not-em-1474182735665 (pull request #6)
fix typo in mimeview (TB opens eml not emf files)
2016-09-21 17:37:17 +02:00
Martin Monperrus
ab659c88e0 fix typo in mimeview (TB opens eml not emf files) 2016-09-18 07:12:22 +00:00
Jean-Francois Dockes
d914d5d392 web 2016-09-16 12:22:28 +02:00
Jean-Francois Dockes
16efdbc07a doc 2016-09-16 12:22:03 +02:00
Jean-Francois Dockes
589c59f6a4 catch Xapian exception caused by bad stemming language. Check stemdb creation status and have recollindex exit in error if it failed 2016-09-16 12:21:18 +02:00
Jean-Francois Dockes
c0892d2327 new greek translation 2016-09-12 15:08:00 +02:00
Jean-Francois Dockes
c7d030fbb4 doc 2016-09-12 09:15:04 +02:00
Jean-Francois Dockes
e77279c6b6 dutch translation 2016-08-31 20:51:56 +02:00
Jean-Francois Dockes
e836ad6828 real-time indexer: regular files which were part of the topdirs list were not monitored 2016-08-13 09:17:29 +02:00
Jean-Francois Dockes
935f3d22df comment 2016-08-13 09:07:29 +02:00
Jean-Francois Dockes
3bf0a886f3 GUI: allow setting full CSS style for term highlighting, not only color value 2016-08-12 19:13:29 +02:00
Jean-Francois Dockes
aff4bd10a5 python: make sure that all ways to get a doc attr use the same code 2016-08-12 18:01:37 +02:00
Jean-Francois Dockes
01d0f4b734 execm filters: the change to let filters set arbitrary metadata lost the top doc size, now saved aside 2016-08-12 18:00:52 +02:00
Jean-Francois Dockes
3bbaf51b5f tests: change reference output: some archive members now get a proper file name (shown as title) 2016-08-12 17:59:30 +02:00
Jean-Francois Dockes
9433336b68 doc 2016-08-12 17:40:10 +02:00
Jean-Francois Dockes
57d0f01a5d Python: implemented doc_subscript() so that doc["someattr"] actually works (as documented...) 2016-08-12 13:55:46 +02:00
Jean-Francois Dockes
7fddf874d7 Total file count was not reset at end of indexing 2016-08-12 09:04:19 +02:00
Jean-Francois Dockes
1ba51ed250 doc and web perf notes 2016-08-11 12:15:01 +02:00
Jean-Francois Dockes
4070ab2902 comments 2016-08-11 12:13:06 +02:00
Jean-Francois Dockes
a27f1bed7e Encode strftime output into utf-8 before displaying in GUI 2016-08-06 15:01:34 +02:00
Jean-Francois Dockes
035e75e696 none 2016-08-06 14:25:58 +02:00
Jean-Francois Dockes
723497b7a0 Forgotten files in windows path insensitivity commit 2016-08-06 12:27:58 +02:00
Jean-Francois Dockes
08a3bd926c Make path searches case-insensitive on windows. 2016-08-06 12:20:45 +02:00
Jean-Francois Dockes
0294f6ca6d Stay single-threaded on windows, multithread is slower and exit does not work 2016-08-06 12:20:06 +02:00
Jean-Francois Dockes
5584e3aa1d Check for newer pdftotext version to avoid double HTML escaping. fixes issue #318 2016-08-05 08:51:34 +02:00
Jean-Francois Dockes
f306365df6 web 2016-08-05 08:49:27 +02:00
Jean-Francois Dockes
fa0016f577 doc 2016-08-05 08:49:14 +02:00
Jean-Francois Dockes
2135e50b50 c++11 initializers 2016-08-03 09:22:27 +02:00
Jean-Francois Dockes
4d911028d8 Fix topdirs existence checking for non default config dirs 2016-08-03 07:12:48 +02:00
Jean-Francois Dockes
f6b7df9292 web 2016-08-02 07:49:01 +02:00
Jean-Francois Dockes
4ee8199f21 new danish messages 2016-08-02 07:47:42 +02:00
Jean-Francois Dockes
d3bfcd9c80 comment 2016-08-02 07:47:28 +02:00
Jean-Francois Dockes
ffc4a6f90b use --copy 2016-08-02 07:46:53 +02:00
Jean-Francois Dockes
91a9c5bca5 added page about common ms windows recoll issues 2016-07-16 11:17:13 +02:00
Jean-Francois Dockes
f28661e20a use std c++11 initializer instead of create_xx hacks 2016-07-16 11:15:31 +02:00
Jean-Francois Dockes
e99926cd5f use std:🧵:hardware_concurrency instead of misc hacks 2016-07-16 11:14:44 +02:00
Jean-Francois Dockes
68a7ac61a0 windows: slashize input in path_absolute() (fixes -c option needing forward /) 2016-07-16 11:11:36 +02:00
Jean-Francois Dockes
9058dc5c3d web 2016-07-14 10:14:05 +02:00
Jean-Francois Dockes
000623b7a5 log messages 2016-07-14 10:14:01 +02:00
Jean-Francois Dockes
6d683d4ecd Add external dialog: dont terminate dir path with /, causes problems on windows 2016-07-13 15:41:19 +02:00
Jean-Francois Dockes
c1d06dd450 got rid of the STD_SHARED_XX std/tr1 defines 2016-07-13 15:12:25 +02:00
Jean-Francois Dockes
eb6465a619 restore code erased by log conversion 2016-07-13 11:23:20 +02:00
Jean-Francois Dockes
0ce33781f2 typo 2016-07-13 11:22:08 +02:00
Jean-Francois Dockes
4eace1d666 Small windows adjustements for std::mutex changes 2016-07-13 09:27:38 +02:00
Jean-Francois Dockes
aac3ef82aa utils/ test makefile tweak 2016-07-13 08:30:19 +02:00
Jean-Francois Dockes
9c17edf814 fixed a few forgotten log statements 2016-07-13 07:47:56 +02:00
Jean-Francois Dockes
d6fded76af update mutagen version 2016-07-12 19:24:47 +02:00
Jean-Francois Dockes
a1d0b9c8ba fix debuglog ref in test driver + std=c++11 2016-07-12 19:32:02 +02:00
Jean-Francois Dockes
e0473b5606 Replaced pthread with std:: thread and mutex 2016-07-12 18:08:21 +02:00
Jean-Francois Dockes
dfcd57f665 log messages 2016-07-12 13:04:32 +02:00
Jean-Francois Dockes
f2eb637a35 flush log lines 2016-07-12 12:34:13 +02:00
Jean-Francois Dockes
12de4bb102 logging now uses c++ streams 2016-07-12 09:41:04 +02:00
Jean-Francois Dockes
8fc0043de2 got rid of main 2016-07-11 18:21:32 +02:00
Jean-Francois Dockes
72e9b896bf Allow execm input handlers to set arbitrary data fields 2016-07-11 18:13:39 +02:00
Jean-Francois Dockes
067226a8b2 enable the fn and dfn queryaliases by default 2016-06-21 18:30:39 +02:00
Jean-Francois Dockes
2c5d3a2a63 web 2016-06-21 18:30:06 +02:00
Jean-Francois Dockes
3af31612d5 Python module: do not limit result fetching to the Xapian result count: it may be underestimated 2016-06-21 12:17:26 +02:00
Jean-Francois Dockes
652b29eb56 increment basepos after adding postings for path elements so that cfn terms are not at the same positions 2016-06-21 12:16:10 +02:00
Jean-Francois Dockes
3fd6e866a5 arrange so that ' .net' is split as .net and net. Previously it only produced .net, which meant that matching filename extensions, like in fn:pdf$ did not work well because of cases where a special char or a space occurred before the . 2016-06-20 17:25:25 +02:00
Jean-Francois Dockes
f3aa385448 fix ref test results 2016-06-20 16:35:49 +02:00
Jean-Francois Dockes
bdd6942e2d comment: replace single with double quotes to avoid groff -man issues in extracted text 2016-06-20 15:37:38 +02:00
Jean-Francois Dockes
7ee9ffc73e add missing std:: qualifiers 2016-06-20 15:35:33 +02:00
Jean-Francois Dockes
51487e50bf bump VERSION 2016-06-20 15:33:53 +02:00
Jean-Francois Dockes
337dc036f2 comment 2016-06-20 15:33:31 +02:00
Jean-Francois Dockes
a3efbe5fd0 use --tag=LD opt to libtool when building the picstatic lib (python module) 2016-06-20 15:33:10 +02:00
Jean-Francois Dockes
9b2ac0d014 merged shared module (confXml code 2016-06-18 19:38:10 +02:00
Jean-Francois Dockes
c2e7708035 added toupper and simpleregexp utils 2016-06-18 19:37:41 +02:00
Jean-Francois Dockes
9a61c47467 add code to test thumbnail paths 2016-06-18 19:36:57 +02:00
Jean-Francois Dockes
c75be77069 define support for text/x-java and application/sql, output by xdg-mime in place of text/plain. fixes issue #312 2016-06-17 10:06:25 +02:00
Jean-Francois Dockes
af4e4fc90d pull 1.22.2 packaging changes 2016-06-16 10:28:15 +02:00
Jean-Francois Dockes
97da304ea8 web 2016-06-16 10:17:07 +02:00
Jean-Francois Dockes
6c970d7d43 1.22 compat (shared_ptr) for kde4 kio 2016-06-15 17:41:22 +02:00
Jean-Francois Dockes
8a7fec1b97 web 2016-06-15 11:59:58 +02:00
Jean-Francois Dockes
8890543618 GUI index stats: truncate avg doc length to integer 2016-06-12 11:45:32 +02:00
Jean-Francois Dockes
b970c37ba6 doc 2016-06-01 09:48:38 +02:00
Jean-Francois Dockes
0de2faef3c Updated the python external indexer sample 2016-06-01 09:47:20 +02:00
Jean-Francois Dockes
aef606d529 defined data access interface for external indexers 2016-06-01 09:46:47 +02:00
Jean-Francois Dockes
cd11886f6c document the python index update interface 2016-06-01 09:44:11 +02:00
Jean-Francois Dockes
5eba4eebcf web 2016-06-01 09:43:18 +02:00
Jean-Francois Dockes
5b46131ec5 Python module Doc_setattr: miscplaced DECREF caused crashes 2016-06-01 09:39:24 +02:00
Jean-Francois Dockes
1241a3ac5c add init check in recoll.Doc to avoid crash if connect() not called yet 2016-05-30 13:33:33 +02:00
Jean-Francois Dockes
851f7c5fa1 doc 2016-05-30 13:32:03 +02:00
Jean-Francois Dockes
68a0ade62f added %x to print the xapian docid 2016-05-28 08:30:25 +02:00
Jean-Francois Dockes
b35526120b added option to print the reconstructed document word list 2016-05-28 08:30:06 +02:00
Jean-Francois Dockes
8200bb78d2 Use structured comments in recoll.conf and use them to generate the docbook and man page texts 2016-05-26 18:20:09 +02:00
Jean-Francois Dockes
a1a2bbf952 doc:added multithreading section 2016-05-26 10:19:46 +02:00
Jean-Francois Dockes
dadf10d0ea web:mention mh 2016-05-25 08:32:43 +02:00
Jean-Francois Dockes
db1a33db06 improve the documentation of execm filters and include a pointer to a simple sample 2016-05-23 19:21:53 +02:00
Jean-Francois Dockes
ba2002192d got rid of the statfs() version of fsocc(), keeping only the Posix statvfs() (except on win32 of course) 2016-05-23 19:21:20 +02:00
Jean-Francois Dockes
8d836ca39a comments 2016-05-23 19:16:31 +02:00
Jean-Francois Dockes
b8cc6f8c27 added bogus minimum sample execm handler, indexing text lines as docs 2016-05-23 18:59:00 +02:00
Jean-Francois Dockes
4cf10c4778 web 2016-05-23 18:58:09 +02:00
Jean-Francois Dockes
5799fd1f37 comment 2016-05-23 18:57:44 +02:00
Jean-Francois Dockes
8a7f313a82 doc 2016-05-23 09:32:22 +02:00
Jean-Francois Dockes
27d021e029 get rid of empty destructor 2016-05-11 12:17:51 +02:00
Jean-Francois Dockes
493dd14a52 web 2016-05-11 12:16:50 +02:00
Jean-Francois Dockes
e2e9b116fe merge 2016-05-11 08:45:05 +02:00
Jean-Francois Dockes
96f181cad3 exit more abruptly to avoid mysterious core dump on quitting program 2016-05-11 08:44:11 +02:00
Jean-Francois Dockes
bc1cf908f6 doc 2016-05-10 08:52:07 +02:00
Jean-Francois Dockes
cd36ea1a71 Hungarian translation 2016-05-08 19:44:23 +02:00
Jean-Francois Dockes
42bcb10e0e none 2016-05-08 19:42:44 +02:00
Jean-Francois Dockes
45961198f5 doc 2016-05-03 11:35:02 +02:00
Jean-Francois Dockes
ed0fca3dbf doc touchups 2016-05-03 11:30:13 +02:00
Jean-Francois Dockes
72ab23080d move x11mon from librecoll to recollindex to remove the lib dependance on x11 2016-05-03 11:27:35 +02:00
Jean-Francois Dockes
68872ae40c doc 2016-04-18 08:05:55 +02:00
Jean-Francois Dockes
210b586646 advsearch: remove unused close() slot 2016-04-18 08:05:27 +02:00
Jean-Francois Dockes
ccccc11ffa Restoring adv search clause list bigger than default size could/would crash the GUI 2016-04-17 17:04:03 +02:00
Jean-Francois Dockes
3629afb23d remove bogus python2 dep 2016-04-17 17:00:53 +02:00
Jean-Francois Dockes
6a0dd53fcd doc 2016-04-17 14:51:39 +02:00
Jean-Francois Dockes
b7dd919258 Fix build for the Qt GUI part to heed DESTDIR 2016-04-17 08:09:03 +02:00
Jean-Francois Dockes
766e7d4804 doc: clarifications in the synonyms section 2016-04-17 08:07:52 +02:00
Jean-Francois Dockes
1b0e8bb5b6 get the generated doc out of version control 2016-04-15 11:19:58 +02:00
Jean-Francois Dockes
de6fcae15e doc/web 2016-04-14 19:06:01 +02:00
Jean-Francois Dockes
f9ff3dcfff Release 1.22.0 tagged 2016-04-14 17:02:34 +02:00
Jean-Francois Dockes
c0a941a753 hgignore 2016-04-14 17:02:31 +02:00
Jean-Francois Dockes
61c9b008e9 fix file list 2016-04-14 17:02:10 +02:00
Jean-Francois Dockes
e124598f2f fix file list 2016-04-14 16:57:10 +02:00
Jean-Francois Dockes
279c483f6b inno setup file update 2016-04-14 16:37:45 +02:00
Jean-Francois Dockes
918626c11d Handler timeout should not interrupt the whole indexing pass 2016-04-14 15:48:01 +02:00
Jean-Francois Dockes
84b4378acb none 2016-04-14 14:27:13 +02:00
Jean-Francois Dockes
73e901ad3c Small fixes for porting recent changes to windows 2016-04-14 14:24:56 +02:00
Jean-Francois Dockes
57f330dfb3 messages 2016-04-14 09:51:16 +02:00
Jean-Francois Dockes
0af6bc70d7 webcache editor: handle interactions with indexer 2016-04-14 09:32:53 +02:00
Jean-Francois Dockes
dca275ecc2 Add delete and copy url ops to the webcache editor 2016-04-13 18:27:08 +02:00
Jean-Francois Dockes
ae22d52077 1st proto for GUI webcache editor 2016-04-13 15:52:41 +02:00
Jean-Francois Dockes
aed2a15765 Preview and Open for web cache: setKeyDir(getfather("")) resulted in ./ and getConfParam() failures 2016-04-12 18:13:10 +02:00
Jean-Francois Dockes
1232ba5f43 mimetype: use the default command if none is configured 2016-04-12 18:06:56 +02:00
Jean-Francois Dockes
030a304e95 execcmd::backtick: check that command is not empty 2016-04-12 17:26:41 +02:00
Jean-Francois Dockes
d3c0a9ddad astyled 2016-04-12 10:04:48 +02:00
Jean-Francois Dockes
c3595b3e12 GUI: possible end-slash mismatch in dir comparison would prevent enabling the real-time indexer config tool 2016-04-11 18:40:13 +02:00
Jean-Francois Dockes
9a4d7de7f9 doc 2016-04-11 18:39:26 +02:00
Jean-Francois Dockes
6a7e8d14df GUI: move some options to a new View menu, and add some more index stats 2016-04-11 17:50:39 +02:00
Jean-Francois Dockes
b97ef969f7 slightly improve indexing stats by keep a count of file errors and remembering the total files 2016-04-11 17:23:02 +02:00
Jean-Francois Dockes
ebb8469253 implement confsimple::get/set for integers 2016-04-11 17:21:59 +02:00
Jean-Francois Dockes
95f4807ed9 Indexing cancellation: do not reset flag after throw in cancelcheck: other threads need it 2016-04-11 14:51:05 +02:00
Jean-Francois Dockes
96c14a27df rclpdf rename 2016-04-11 14:50:22 +02:00
Jean-Francois Dockes
c1d329e47d renamed rclmpdf.py to more normal rclpdf.py 2016-04-11 13:59:07 +02:00
Jean-Francois Dockes
6d7a7684f4 pdf: add config variables to control if we attempt attachment extraction and ocr 2016-04-11 13:57:58 +02:00
Jean-Francois Dockes
a077f4a10e describe new pdf handler configuration parameters + other comments 2016-04-11 13:56:22 +02:00
Jean-Francois Dockes
7c177c5576 Allow setting XAPIAN_CONFIG in the environment 2016-04-10 19:48:32 +02:00
Jean-Francois Dockes
e1ef041ca7 doc 2016-04-09 20:01:48 +02:00
Jean-Francois Dockes
c09ca43fb7 add show stats entry to file menu 2016-04-08 19:00:18 +02:00
Jean-Francois Dockes
6f114bf58b Add cachedir variable allowing to move all data directories by setting a single value. Closes issue #270 2016-04-08 15:09:15 +02:00
Jean-Francois Dockes
90a7f083ec added module for simplified interface to libxmp 2016-04-08 11:37:23 +02:00
Jean-Francois Dockes
c98bdb0edd converted rcldjvu to python 2016-04-08 10:24:52 +02:00
Jean-Francois Dockes
82a5469d23 Restore PDF OCR capability from shell version of rclpdf script 2016-04-08 09:00:23 +02:00
Jean-Francois Dockes
7af11764c1 Only create config on first param request so that getconfdir() does not need a full config build 2016-04-08 08:59:41 +02:00
Jean-Francois Dockes
6f2cc07713 web 2016-04-07 16:46:07 +02:00
Jean-Francois Dockes
4822ecb903 updated kio help file 2016-04-06 15:37:25 +02:00
Jean-Francois Dockes
6f8c7b786c new fedora spec file also builds kde5 kio 2016-04-06 15:32:11 +02:00
Jean-Francois Dockes
da17ee7446 web 2016-04-06 15:24:48 +02:00
Jean-Francois Dockes
a8a56a1418 also build kde4 kio for konq 2016-04-06 15:24:36 +02:00
Jean-Francois Dockes
94267749e4 opensuse sleap42/kde5 spec files 2016-04-05 11:26:12 +02:00
Jean-Francois Dockes
2e98b95634 Created kio_recoll-kde4 as trying to maintain a kde4/5 merged version would need to many ifdefs 2016-04-05 09:50:37 +02:00
Jean-Francois Dockes
e46c63ec09 astyled + removed some debug/diag statements inserted during kde5 port 2016-04-05 08:45:51 +02:00
Jean-Francois Dockes
6142d3ef33 kio module sort of working with kde5 dolphin, but not konqueror 2016-04-04 19:53:30 +02:00
Jean-Francois Dockes
cebc4a6b24 ?oved utility method from guiutils.cpp to main.cpp 2016-04-04 19:52:47 +02:00
Jean-Francois Dockes
37400d5d4a increase default limit size of compressed files to 50 MB 2016-04-03 10:01:49 +02:00
Jean-Francois Dockes
21ab089f2e synced conftree 2016-04-03 10:01:21 +02:00
Jean-Francois Dockes
4b2b754a79 doc 2016-04-03 10:00:56 +02:00
Jean-Francois Dockes
493ee606f7 new Czech messages 2016-04-03 10:00:36 +02:00
Jean-Francois Dockes
b13e465de4 doc 2016-04-03 10:00:17 +02:00
Jean-Francois Dockes
ae2962a41c astyled 2016-03-22 13:50:49 +01:00
Jean-Francois Dockes
90afc535a4 Merged utility file versions with other packages 2016-03-22 13:35:35 +01:00
Jean-Francois Dockes
e6af8c6020 small adjustments for out-of-recoll builds 2016-03-21 18:51:41 +01:00
Jean-Francois Dockes
c344b3ed4c Make pathut/smallut change work on windows 2016-03-21 13:18:14 +01:00
Jean-Francois Dockes
35de51985b moved code around to make smallut and pathut less recoll-specific and reusable. No actual changes 2016-03-21 12:55:31 +01:00
Jean-Francois Dockes
7b2a455b80 doc 2016-03-21 12:52:11 +01:00
Jean-Francois Dockes
22ee8d73d4 doc 2016-03-21 12:50:59 +01:00
Jean-Francois Dockes
efc9b5a3cf Merge 2016-03-17 19:27:46 +01:00
Jean-Francois Dockes
59747d0291 Small change to innosetup script so that install can be performed by non-privileged user 2016-03-17 19:26:52 +01:00
Jean-Francois Dockes
bb173b4526 xls filter: catch HTML files disguising as XLS 2016-02-26 09:35:23 +01:00
Jean-Francois Dockes
07e20eef4b xdg-mime replaces "file" as default MIME identifying command. "file" kept as last resource fallback 2016-02-26 08:49:13 +01:00
Jean-Francois Dockes
bd31c1dca4 effect-less typo 2016-02-26 08:45:07 +01:00
Jean-Francois Dockes
fee2dff744 Lower log level for xattr op error with errno ENOTSUP 2016-02-23 08:03:17 +01:00
Jean-Francois Dockes
3f3b3a15c7 conftree: astyle + merge with upmpdcli version 2016-02-22 17:27:06 +01:00
Jean-Francois Dockes
111dd7a7e5 Actually make use of the autodiacsens and autocasesens configuration variables. Closes issue #299 2016-02-13 12:22:14 +01:00
Jean-Francois Dockes
6a16c88d22 messages 2016-01-31 19:42:55 +01:00
Jean-Francois Dockes
db92a4d5e3 message adjust 2016-01-31 08:55:03 +01:00
Jean-Francois Dockes
d05a4c67e4 generated 2016-01-31 08:54:43 +01:00
Jean-Francois Dockes
8a34ea9034 doc 2016-01-31 08:54:25 +01:00
Jean-Francois Dockes
1ddab81565 forgotten tr() around message text 2016-01-31 08:43:42 +01:00
Jean-Francois Dockes
29159b1041 danish translation 2016-01-30 09:32:42 +01:00
Jean-Francois Dockes
d69c8ccc43 merge windows changes 2016-01-29 20:13:53 +01:00
Jean-Francois Dockes
c334059f30 doc 2016-01-29 20:09:57 +01:00
Jean-Francois Dockes
5211c08e06 Dont check that the values in skippedPaths exist like we do with topdirs, they are wildcard exprs! 2016-01-29 20:09:35 +01:00
Jean-Francois Dockes
d16066291e Suppressed a couple warnings (unsigned issues) + small windows release fixes 2016-01-29 17:30:50 +01:00
Jean-Francois Dockes
aef515f970 Fix the language parser to properly handle multiple mime type specs (fix regression over 1.20) 2016-01-29 14:03:09 +01:00
Jean-Francois Dockes
17ae789aa1 skip long timeout file while running test set 2016-01-29 13:41:06 +01:00
Jean-Francois Dockes
1c4515dd26 more query language parser tests 2016-01-29 13:40:05 +01:00
Jean-Francois Dockes
041d7e26ab doc 2016-01-27 15:34:09 +01:00
Jean-Francois Dockes
470d2e6e02 Fix doc build for in-tree builds. Fixes issue #289 2016-01-21 18:06:20 +01:00
Jean-Francois Dockes
92a55d7121 web 2016-01-21 18:05:38 +01:00
Jean-Francois Dockes
baab8cf562 doc 2016-01-12 16:54:58 +01:00
Jean-Francois Dockes
7928232eda Show confirmation dialog when Opening a temp file copy (warn user about lost edits) 2016-01-12 15:36:54 +01:00
Jean-Francois Dockes
55a7bee49b doc 2016-01-12 15:33:23 +01:00
Jean-Francois Dockes
b15fd92697 Missing ParamStale initialization would crash GUI when clicking Open after indexing config update. Fixes issue #284 2016-01-11 10:00:08 +01:00
Jean-Francois Dockes
b56778875e doc 2016-01-11 10:01:17 +01:00
Jean-Francois Dockes
fad8f5151b Centralize stat calls to ensure consistency of time fields on windows 2016-01-08 11:23:10 +01:00
Jean-Francois Dockes
a1d4659d5b Windows new dirent.h needs sys/stat.h 2016-01-07 19:13:53 +01:00
Jean-Francois Dockes
97c5ecdcce Avoid calling stat() after readdir() on Windows as we already have what we want 2016-01-07 18:47:13 +01:00
Jean-Francois Dockes
7f549e5847 doc 2016-01-07 18:44:38 +01:00
Jean-Francois Dockes
dcc208d582 Install and use webhelp on Windows. Could not get the fragment to work for context-sensitive help, so this is always better. 2016-01-07 17:22:27 +01:00
Jean-Francois Dockes
e5f46063ce Fix the F1 help manual hrefs 2016-01-07 16:55:25 +01:00
Jean-Francois Dockes
53619920e2 Help: prefer the webhelp format manual if present 2016-01-07 16:42:44 +01:00
Jean-Francois Dockes
c7c69d9101 get usermanual.html build to work out of tree 2016-01-07 16:28:09 +01:00
Jean-Francois Dockes
44684fa78d add webhelp format doc to VCS for easy transfer to Windows 2016-01-07 14:57:27 +01:00
Jean-Francois Dockes
1a729efed4 Replace the chunked manual with the nicer webhelp format 2016-01-07 11:54:44 +01:00
Jean-Francois Dockes
25db73b496 Replace the chunked manual with the nicer webhelp format 2016-01-07 11:53:02 +01:00
Jean-Francois Dockes
b02373de91 merge 2016-01-07 08:17:10 +01:00
Jean-Francois Dockes
6f66ffe3d9 hg add usermanual.html for easy access by Windows build 2016-01-07 08:13:05 +01:00
Jean-Francois Dockes
66dbe2366a hg add usermanual.html for easy access by Windows build 2016-01-07 08:10:08 +01:00
Jean-Francois Dockes
64537d482a Try not to break utf-8 while writing a config file, to help with future hand-editing 2016-01-05 09:21:11 +01:00
Jean-Francois Dockes
34abf55295 recoll.conf sample: typo in commented-out excludededmimetypes 2016-01-05 09:19:58 +01:00
Jean-Francois Dockes
e1b90653c7 GUI open: make %U output an url_encoded version of the url. It was previously the same as %u, and not used in default files 2016-01-05 09:19:14 +01:00
Jean-Francois Dockes
e17ce28e39 Remember the "Ignore out of date index data" decision for the rest of the session 2015-12-12 15:54:17 +01:00
Jean-Francois Dockes
41ec4b10e1 doc 2015-12-12 15:52:14 +01:00
Jean-Francois Dockes
ced3aadd21 Windows: fix missing O_BINARY. Reinstate image tag indexing 2015-12-02 12:02:15 +01:00
Jean-Francois Dockes
1486e65d4b Windows: fix missing O_BINARY 2015-12-02 11:42:44 +01:00
Jean-Francois Dockes
d410c867e7 mh_execm: compute file md5 before activating filter to avoid concurrent open issues on Windows 2015-12-02 10:30:04 +01:00
Jean-Francois Dockes
c333321423 Windows: disabled image tag indexing because of excessive pyexiv2 crashes 2015-12-02 08:40:42 +01:00
Jean-Francois Dockes
99985925ad windows: GUI index config: convert backslashes in skippedPaths 2015-12-01 17:34:49 +01:00
Jean-Francois Dockes
90a8a44da0 windows: mh_mbox reverted the test for From lines... 2015-12-01 17:29:44 +01:00
Jean-Francois Dockes
610a22e460 typo 2015-12-01 17:26:44 +01:00
Jean-Francois Dockes
9edf2c3f9c windows: fsocc and fix wpd2html install 2015-12-01 15:50:24 +01:00
Jean-Francois Dockes
920567ca4c allow indexer and query tools to use different log files 2015-12-01 14:31:33 +01:00
Jean-Francois Dockes
2a48efc22b doc 2015-12-01 14:30:17 +01:00
Jean-Francois Dockes
9762fffc23 Got rid of empty binc imap config.h 2015-11-23 13:43:37 +01:00
Jean-Francois Dockes
d2623c68b3 Allow out-of-tree builds 2015-11-23 11:22:25 +01:00
Jean-Francois Dockes
295f763189 Fix a signal name consistency issue for qt5 2015-11-23 11:08:33 +01:00
Jean-Francois Dockes
40c07f28d2 doc 2015-11-23 11:01:15 +01:00
Jean-Francois Dockes
ae103f6f78 for some reason, the gui does not work correctly with qt 5.2 which is default on ubuntu trusty. Stay with qt4 for now 2015-11-23 11:00:54 +01:00
Jean-Francois Dockes
307dad3776 messages 2015-11-22 10:34:28 +01:00
Jean-Francois Dockes
13739fe17a packaging 2015-11-22 10:04:47 +01:00
Jean-Francois Dockes
6943ddfee6 future 1.22 packaging 2015-11-22 09:56:04 +01:00
Jean-Francois Dockes
8ff30e520e Removed tag RECOLL-1.22.0 2015-11-22 08:37:46 +01:00
Jean-Francois Dockes
9cb5552c4b Removed tag RECOLL-1.22.0 2015-11-21 18:45:28 +01:00
Jean-Francois Dockes
3032b7fa9b Release 1.22.0 tagged 2015-11-21 18:44:41 +01:00
Jean-Francois Dockes
c04f3016a5 webcache resizing: clarifications 2015-11-21 15:47:30 +01:00
Jean-Francois Dockes
4f02368859 doc 2015-11-21 14:41:11 +01:00
Jean-Francois Dockes
368c158437 doc 2015-11-21 13:23:00 +01:00
Jean-Francois Dockes
1c0effb529 synonyms documentation 2015-11-21 13:22:11 +01:00
Jean-Francois Dockes
f7acf83487 recollq: add synonyms use option 2015-11-21 12:52:41 +01:00
Jean-Francois Dockes
2d2a87983e GUI: enable synonyms in preferences and query 2015-11-21 12:52:21 +01:00
Jean-Francois Dockes
ea01917b92 prefs window: factorize show prefs/show ext idx 2015-11-21 12:50:22 +01:00
Jean-Francois Dockes
10dcb8bb7d rcldb syngroups: allow setting synonyms source after construction 2015-11-21 12:48:09 +01:00
Jean-Francois Dockes
47e2c361d7 rclmpdf.py: p2/3 compat 2015-11-21 12:46:58 +01:00
Jean-Francois Dockes
4bb6be39bb rclinfo: remove trace message 2015-11-21 12:46:28 +01:00
Jean-Francois Dockes
f78448b19b doc 2015-11-21 12:45:50 +01:00
Jean-Francois Dockes
062f7a6991 syngroups: simplify structure, allow unlimited line length 2015-11-21 12:45:18 +01:00
Jean-Francois Dockes
413caa050b merge 2015-11-16 15:19:25 +01:00
Jean-Francois Dockes
c2c303c98a Make sure to execute python2 scripts with python2 2015-11-16 15:18:59 +01:00
Jean-Francois Dockes
d9759f376b Index generic XML as text by default. Closes issue #277 2015-11-16 14:27:23 +01:00
Jean-Francois Dockes
ca5fe29841 more python3 tweaks 2015-11-16 13:19:44 +01:00
Jean-Francois Dockes
8cb67b371f doc 2015-11-16 13:19:29 +01:00
Jean-Francois Dockes
4d79267ee9 comments 2015-11-16 09:26:19 +01:00
Jean-Francois Dockes
6b464464d8 innosetup version 2015-11-15 18:42:47 +01:00
Jean-Francois Dockes
59311d0258 Windows install: copy libiconv-2 from the MinGW tree 2015-11-15 16:07:33 +01:00
Jean-Francois Dockes
481ca31786 Avoid using the return value of localtime_r, it's sometimes null on windows. 2015-11-15 16:07:01 +01:00
Jean-Francois Dockes
6d7a1c01f8 Add entries for cs,js,css 2015-11-15 16:05:22 +01:00
Jean-Francois Dockes
0c8ef692e7 Use os.devnull instead of /dev/null 2015-11-15 16:04:55 +01:00
Jean-Francois Dockes
17101b2141 Windows: small fixes to vc project files 2015-11-15 11:05:27 +01:00
Jean-Francois Dockes
7cbac4b8c5 windows: fix filter name for svg 2015-11-15 11:04:45 +01:00
Jean-Francois Dockes
c75b0ac0ce conf parsing: do not truncate lines. Fixes GUI not displaying results with paths longer than around 1000 characters 2015-11-13 08:14:05 +01:00
Jean-Francois Dockes
f9857effb6 doc 2015-11-13 08:13:20 +01:00
Jean-Francois Dockes
e1e795a237 doc 2015-11-13 07:30:29 +01:00
Jean-Francois Dockes
d3e491dbec update windows installer version 2015-11-12 11:16:33 +01:00
Jean-Francois Dockes
e877bf0466 doc 2015-11-12 09:29:01 +01:00
Jean-Francois Dockes
08edf2d3fc Windows install: need to copy libiconv-2.dll from the MinGW directory for unrtf to work 2015-11-12 09:18:24 +01:00
Jean-Francois Dockes
03922daaa1 licence copyright etc 2015-11-11 22:40:37 +01:00
Jean-Francois Dockes
a25ce61b4f Use new preview code 2015-11-09 16:41:35 +01:00
Jean-Francois Dockes
759c41c936 Split the preview code for clarity 2015-11-09 15:40:11 +01:00
Jean-Francois Dockes
e33904d65c more py3 fixups 2015-11-07 17:19:40 +01:00
Jean-Francois Dockes
d70569382f more filters made compatible with python3 2015-11-07 16:59:17 +01:00
Jean-Francois Dockes
3e802e9ed6 first pass at converting the filters for python 2/3 compat 2015-11-06 16:49:03 +01:00
Jean-Francois Dockes
b405aeaad4 windows port had broken unix uncompression 2015-11-06 16:48:33 +01:00
Jean-Francois Dockes
65cf261dbc Fix inactive click on "Preview" link inside detail area of auxiliary restable used for "Show subdocs" 2015-11-03 08:55:20 +01:00
Jean-Francois Dockes
3ca393a67d rcldb::getSubDocs() (called from GUI show subdocs) was returning too many results because the parent/child ipath test was flawed 2015-11-03 08:40:13 +01:00
Jean-Francois Dockes
af51a8d8f6 doc 2015-11-03 08:26:13 +01:00
Jean-Francois Dockes
be96986593 Created windows installer 2015-11-02 08:58:32 +01:00
Jean-Francois Dockes
37a1ed0c39 Try fixing sending intr to subprocess + fix indent 2015-10-31 15:55:13 +01:00
Jean-Francois Dockes
c7525f9a3d web 2015-10-31 09:24:40 +01:00
Jean-Francois Dockes
67e88eac56 merged trcircache append 2015-10-31 09:17:03 +01:00
Jean-Francois Dockes
689f71d6e8 indent 2015-10-31 09:07:23 +01:00
Jean-Francois Dockes
23efed6966 merge 2015-10-30 18:41:38 +01:00
Jean-Francois Dockes
9d18128dbe GUI: max size of 1000 Mb for webcache file was stupid 2015-10-30 18:41:04 +01:00
Jean-Francois Dockes
0ab2796baa doc 2015-10-30 15:56:10 +01:00
Jean-Francois Dockes
7079534ab3 test driver for stringtokens 2015-10-30 15:56:04 +01:00
Jean-Francois Dockes
c5abb2530b Add pychm install 2015-10-30 15:42:08 +01:00
Jean-Francois Dockes
0d5f513a3a Support wordperfect with libwpd 2015-10-30 11:39:50 +01:00
Jean-Francois Dockes
670224a6f7 Change 'which' so that it processes relative paths like wpd/wpd2html.exe 2015-10-30 11:39:25 +01:00
Jean-Francois Dockes
db27f7c016 Handling logout and system shutdown for recollindex on ms-windows. 2015-10-29 16:04:59 +01:00
Jean-Francois Dockes
3e7991f705 cancelcheck build files changes 2015-10-29 15:42:12 +01:00
Jean-Francois Dockes
b8fb486cc7 Cancelcheck: don't declare the static unique instance in .h, seems wrong on windows 2015-10-29 15:40:21 +01:00
Jean-Francois Dockes
700a02259b use $HOME instead of ~ 2015-10-27 07:38:05 +01:00
Jean-Francois Dockes
12ebeb5a37 web 2015-10-27 07:38:30 +01:00
Jean-Francois Dockes
f646c22655 Windows: use case-insensitive comparison (ascii-only) for skippedPaths etc. 2015-10-14 11:07:57 +02:00
Jean-Francois Dockes
539ee97da7 Windows: fix path splitting for the XP field 2015-10-14 10:53:15 +02:00
Jean-Francois Dockes
ba21b2f27e Fix chrono change for mingw. Actually use the release lib in other builds 2015-10-14 09:44:43 +02:00
Jean-Francois Dockes
cc73d47cb0 housekeeping: separated out the chrono utility 2015-10-14 09:18:26 +02:00
Jean-Francois Dockes
28aeb4fd64 doc 2015-10-14 09:16:01 +02:00
Jean-Francois Dockes
8fa6085968 doc 2015-10-13 17:31:26 +02:00
Jean-Francois Dockes
e749e72628 Get uncompression to work and fix a few other issues 2015-10-13 16:48:16 +02:00
Jean-Francois Dockes
7d8ffefee2 let filter 'which' find a command in a specified subdir of PATH elements 2015-10-13 10:00:48 +02:00
Jean-Francois Dockes
1a5d304576 doc 2015-10-12 15:48:09 +02:00
Jean-Francois Dockes
ba8b3ff8e9 Use windeployqt to properly copy Qt stuff to distribute 2015-10-12 14:43:45 +02:00
Jean-Francois Dockes
16a7b16e7b Release build + icon 2015-10-12 14:16:44 +02:00
Jean-Francois Dockes
d43580a75e windows ico try 2015-10-12 14:09:38 +02:00
Jean-Francois Dockes
264483e26a Completed install-building script for current functionality 2015-10-12 12:29:44 +02:00
Jean-Francois Dockes
0a7c3f51dd had inverted rclimg cmds on unix/windows 2015-10-12 11:57:59 +02:00
Jean-Francois Dockes
1e33d37c0a none 2015-10-11 10:18:39 +02:00
Jean-Francois Dockes
af168b1a25 Use the python-based filters written for ms-win on Linux too 2015-10-11 08:41:15 +02:00
Jean-Francois Dockes
ff2efc05ff ubuntu utopic not supported any more 2015-10-11 08:40:00 +02:00
Jean-Francois Dockes
4c58c73b73 added image tag filter based on pyexiv2 2015-10-10 18:40:04 +02:00
Jean-Francois Dockes
a89a70dc62 windows mkinstdir 2015-10-09 16:17:50 +02:00
Jean-Francois Dockes
9bbdf29997 windows mimeview. Change remaining cmd start to rclstartw 2015-10-09 16:16:10 +02:00
Jean-Francois Dockes
e810c0e92b avoid using .srt suffix for text/plain temp files 2015-10-09 16:14:32 +02:00
Jean-Francois Dockes
3d6730ef4d none 2015-10-09 15:35:50 +02:00
Jean-Francois Dockes
b45377749d windows: small build fixes 2015-10-09 11:21:16 +02:00
Jean-Francois Dockes
7539722cc0 recoll.pro -> recoll-win.pro 2015-10-09 11:07:57 +02:00
Jean-Francois Dockes
0dea7a849d Windows: GUI "Open" works 2015-10-09 11:03:27 +02:00
Jean-Francois Dockes
6eb2fd3622 restore window recoll.pro 2015-10-09 08:34:41 +02:00
Jean-Francois Dockes
11643709a8 none 2015-10-09 08:16:35 +02:00
Jean-Francois Dockes
56fc0c0a63 none 2015-10-09 08:10:34 +02:00
Jean-Francois Dockes
133b5211b9 none 2015-10-09 08:09:27 +02:00
Jean-Francois Dockes
6ad7ab5f05 doc 2015-10-08 16:13:15 +02:00
Jean-Francois Dockes
775e1a838b Pure mingw build ok 2015-10-08 15:32:38 +02:00
Jean-Francois Dockes
acb0a9012a Pure mingw build ok 2015-10-08 15:32:01 +02:00
Jean-Francois Dockes
474ecc2b08 none 2015-10-08 15:21:43 +02:00
Jean-Francois Dockes
4949994e3f qt project for recollindex 2015-10-08 15:01:35 +02:00
Jean-Francois Dockes
f6cbe86e3e got rid of a number of ifdefs which should not be needed anymore 2015-10-08 14:48:50 +02:00
Jean-Francois Dockes
d373565e0c Windows: manage timeouts, time and size limits 2015-10-08 14:08:36 +02:00
Jean-Francois Dockes
4efb618250 fix timeouts for mh_execm filters 2015-10-08 10:10:04 +02:00
Jean-Francois Dockes
bdf5cb8755 Windows: GUI working ok AFAICS 2015-10-07 18:02:13 +02:00
Jean-Francois Dockes
601effdaf8 Windows: get GUI preview working by fixing child-spawning from a GUI app 2015-10-07 10:36:37 +02:00
Jean-Francois Dockes
07753a03ce Windows: fix signal connections using STD_SHARED_PTR. won't work, reason unknown 2015-10-07 09:43:02 +02:00
Jean-Francois Dockes
b89e3f47fe Fix small windows/mingw portability issues in code used by the GUI 2015-10-07 09:25:28 +02:00
Jean-Francois Dockes
f3691fd995 Fixed some "unused xxx" warnings + include autoconfig 2015-10-07 08:30:49 +02:00
Jean-Francois Dockes
1f6939813b replace all %lld instances 2015-10-03 17:25:17 +02:00
Jean-Francois Dockes
5f4dc25e49 Windows: tests with building librecoll with mingw 2015-10-03 10:21:24 +02:00
Jean-Francois Dockes
ce62afaede merge 2015-10-02 18:30:49 +02:00
Jean-Francois Dockes
e981394808 Windows: the qt GUI builds with Qt/MinGW. No link. 2015-10-02 18:30:13 +02:00
Jean-Francois Dockes
9037d1166f add aspellDicDir variable to enable storing the aspell dict away from the config dir 2015-10-02 13:26:13 +02:00
Jean-Francois Dockes
bca286836e Added possibly uncomplete rcluncomp.py script for windows 2015-10-01 18:23:30 +02:00
Jean-Francois Dockes
0fa30959f6 Windows: small fixes for rclmpdf.py to work with alivate poppler 2015-10-01 16:36:29 +02:00
Jean-Francois Dockes
89970ba045 prepare rclmpdf->rclmpdf.py for windows 2015-10-01 15:09:45 +02:00
Jean-Francois Dockes
88123f6f97 doc 2015-10-01 10:33:08 +02:00
Jean-Francois Dockes
69578c0bd3 fix make dist 2015-10-01 09:38:47 +02:00
Jean-Francois Dockes
d11117deb4 forgot to update recoll.pro.in in eae5661db0df 2015-10-01 09:18:20 +02:00
Jean-Francois Dockes
761f5c382c Add GUI dialog to start indexing with special options. Closes issue #264 2015-10-01 09:07:00 +02:00
Jean-Francois Dockes
d22d13aac9 Clarified mhmboxquirks usage with example. Fixes issue #271 2015-09-30 09:47:38 +02:00
Jean-Francois Dockes
3c9248d28a Avanced search in "Any Clause" mode: directory filter would not filter but add an ORed clause! Fixes issue #269 2015-09-28 10:00:32 +02:00
Jean-Francois Dockes
0183b8cbb8 Merged the changes from the current windows port 2015-09-25 16:14:27 +02:00
Jean-Francois Dockes
f000aaa792 suppressed a number of gratuitous unistd inclusions + clean up preview progress dialog code 2015-09-24 15:36:02 +02:00
Jean-Francois Dockes
e6ea2ba4dc only remove a fragment part from a file name if it looks like an html 2015-09-14 17:10:24 +02:00
Jean-Francois Dockes
2ee9cb1329 doc 2015-09-14 17:12:14 +02:00
Jean-Francois Dockes
0cc5bb82d5 Small filter fixes 2015-09-14 14:19:23 +02:00
Jean-Francois Dockes
dced9ff268 filters: use rb instead of r 2015-09-14 11:36:36 +02:00
Jean-Francois Dockes
5076b0f2d3 python scripts for ppt and xls 2015-09-14 11:32:16 +02:00
Jean-Francois Dockes
5b79d1ca34 rclimg (tweaks for perl) 2015-09-14 10:33:39 +02:00
Jean-Francois Dockes
e4962fab19 merge 2015-09-14 10:22:08 +02:00
Jean-Francois Dockes
5d5de516e4 more filter conversion to python: svg and xml. Get rid of rclnull 2015-09-14 09:51:11 +02:00
Jean-Francois Dockes
56381a568f fixed vc++ project for merged trexecmd 2015-09-13 14:42:07 +02:00
Jean-Francois Dockes
34a8225a24 add utility routine to fake a child in execmd exerciser 2015-09-13 13:05:09 +02:00
Jean-Francois Dockes
b3a718d3af comment 2015-09-13 13:04:44 +02:00
Jean-Francois Dockes
fcd4a6a3ac merged the w and u versions of the execmd exerciser 2015-09-13 11:14:39 +02:00
Jean-Francois Dockes
3956d0a867 rcltext.py 2015-09-13 10:34:40 +02:00
Jean-Francois Dockes
76dc1cb9a3 windows: rclrtf.py and rcldoc.py apparently working ok 2015-09-12 16:53:24 +02:00
Jean-Francois Dockes
99aa5cc3fc windows: arrange so that we can use simple python script names in mimeconf 2015-09-12 16:18:05 +02:00
Jean-Francois Dockes
4b5bbf425b cleanup in new python filters 2015-09-12 10:54:26 +02:00
Jean-Francois Dockes
39356a4457 Python filters beginning to work, still issues. 2015-09-11 16:16:16 +02:00
Jean-Francois Dockes
817d79ed22 1st successful use of mh_exec (direct antiword exec) 2015-09-11 11:26:53 +02:00
Jean-Francois Dockes
98bb9d43b4 Get rid of recoll.conf.in 2015-09-11 09:39:42 +02:00
Jean-Francois Dockes
610758bd73 Arrange so that we dont need recoll.conf.in any more. 2015-09-11 09:38:31 +02:00
Jean-Francois Dockes
3f9b4d8813 open xml python + xslt filter 2015-09-10 17:39:49 +02:00
Jean-Francois Dockes
3eb1ed14a4 More windows execcmd implementation and cleanup 2015-09-10 10:14:32 +02:00
Jean-Francois Dockes
91984f5513 Windows execmd: basic execm (question/response) test ok 2015-09-09 15:39:14 +02:00
Jean-Francois Dockes
592c3919d1 Windows execmd: environment setting and getline 2015-09-09 13:32:53 +02:00
Jean-Francois Dockes
ee9b2ddce6 Added ExecCmd::which + fix member variable names 2015-09-09 09:00:20 +02:00
Jean-Francois Dockes
fa13c25f6f Windows execmd: do check for cancellation 2015-09-08 18:16:46 +02:00
Jean-Francois Dockes
6590598765 Windows: simple read of child output works. 2015-09-08 17:55:20 +02:00
Jean-Francois Dockes
2299dc1b59 Windows: 'trexecmd -o env' sort of works, but waits for timeout at end of input 2015-09-08 15:49:13 +02:00
Jean-Francois Dockes
bc455f365e testcode 2015-09-08 10:27:58 +02:00
Jean-Francois Dockes
4b1440b2b1 first non-compiling and incomplete draft of the windows execmd module 2015-09-08 10:24:19 +02:00
Jean-Francois Dockes
c66f916827 execcmd: type clean up + make sure that duplex / filter (not used by recoll) mode works by closing outgoing pipe at end of data 2015-09-08 07:56:50 +02:00
Jean-Francois Dockes
11d914b08c execmd comments and test driver only 2015-09-07 19:10:19 +02:00
Jean-Francois Dockes
4a90074482 converted/duplicated rclsoff to rclsoff.py, using python-libxslt/xml 2015-09-07 15:34:39 +02:00
Jean-Francois Dockes
b3092151dc New python-based msword filter + basic arch to convert the others 2015-09-07 11:16:20 +02:00
Jean-Francois Dockes
9bb428aa3b execm test driver: use to test rcldoc.py 2015-09-07 11:15:46 +02:00
Jean-Francois Dockes
28be1152ef actually postprocess 2015-09-07 09:23:07 +02:00
Jean-Francois Dockes
dac19964f3 temp ckpt 2015-09-06 19:55:43 +02:00
Jean-Francois Dockes
6efbc3b841 refcntr transition to shared_ptr. test exec.release->reset 2015-09-05 08:51:41 +02:00
Jean-Francois Dockes
0896177cdf merge 2015-09-05 08:46:55 +02:00
Jean-Francois Dockes
8ae7683d64 Merge 2015-09-05 08:45:55 +02:00
Jean-Francois Dockes
b07017e940 Suppressed a number of ininteresting warnings 2015-09-05 08:42:50 +02:00
Jean-Francois Dockes
40ae40fe66 fileurltolocalpath: Only remove fragment indicator from url if path looks like an html file 2015-09-04 11:35:09 +02:00
Jean-Francois Dockes
309709dd72 typos 2015-09-04 10:25:16 +02:00
Jean-Francois Dockes
075126c9ff merge 2015-09-04 10:22:42 +02:00
Jean-Francois Dockes
71bfccb3cf fix configure.ac typo 2015-09-04 10:21:38 +02:00
Jean-Francois Dockes
0caad5b4f5 Hide most ExecCmd internals 2015-09-04 10:12:17 +02:00
Jean-Francois Dockes
be4bee1faa Small fixes after full rebuild from repo 2015-09-04 09:27:06 +02:00
Jean-Francois Dockes
a44980f3f9 Added a bit of signal/interrupt managing to recollprod. Added common property
sheet (not used yet).
2015-09-03 17:15:55 +02:00
Jean-Francois Dockes
1a42ea5c46 x86 config 2015-09-02 12:11:15 +02:00
Jean-Francois Dockes
16cc149e40 use path_pathtofileurl 2015-09-02 09:13:07 +02:00
Jean-Francois Dockes
5f9b0110de Fix computation of file:// urls from paths 2015-09-02 09:11:25 +02:00
Jean-Francois Dockes
66bc94d1e8 _WIN32 ifdefs cleanup 2015-09-02 08:40:39 +02:00
Jean-Francois Dockes
5631554abd more int fixups 2015-09-02 07:34:59 +02:00
Jean-Francois Dockes
52939d5517 doc 2015-09-02 07:32:48 +02:00
Jean-Francois Dockes
e947ef3f77 tst 2015-09-02 07:31:09 +02:00
Jean-Francois Dockes
535bf682f2 Suppressed many integer size warnings by a mix of type adjustments and casts,
none of which should have a real effect.
2015-09-01 19:39:20 +02:00
Jean-Francois Dockes
1b9673deb1 More small windows int types fixes. 2015-09-01 15:03:21 +02:00
Jean-Francois Dockes
59ba8e9fce length() comparisons in stringccxmp were reversed... 2015-09-01 15:02:03 +02:00
Jean-Francois Dockes
cdcbb01eab Test for empty term before dereferencing utf-8 iterator 2015-09-01 14:45:41 +02:00
Jean-Francois Dockes
468c9fe575 Test for end() after lower_bound call before dereferencing! 2015-09-01 14:44:30 +02:00
Jean-Francois Dockes
a0d7c41888 Turn synonyms expansion off if the search is sensitive to either case or diacritics. + misc trace improvements 2015-09-01 08:13:11 +02:00
Jean-Francois Dockes
b47cb97e1d Turn synonyms expansion off if the search is sensitive to either case or diacritics. + misc trace improvements 2015-09-01 08:13:11 +02:00
Jean-Francois Dockes
aa676151a5 added option to force recollq build 2015-09-01 08:11:43 +02:00
Jean-Francois Dockes
5e062990a4 added option to force recollq build 2015-09-01 08:11:43 +02:00
Jean-Francois Dockes
9f8d382b3d missing errno.h 2015-09-01 08:14:17 +02:00
Jean-Francois Dockes
b748a20f35 doc 2015-09-01 07:12:27 +02:00
Jean-Francois Dockes
8f5597026d Handle windows paths: mostly change tests for relative, and some other tweaks. 2015-08-31 17:20:04 +02:00
Jean-Francois Dockes
6bbb87b063 recollindex and recollq build and run but fail because of unac error 2015-08-31 13:08:50 +02:00
Jean-Francois Dockes
20c9638ea4 fix bogus signedness warning 2015-08-30 17:45:19 +02:00
Jean-Francois Dockes
970935f130 Windows: fixed a number of int size warnings mostly by casting them away 2015-08-30 17:30:31 +02:00
Jean-Francois Dockes
d5aa8db282 fix linux build of windows branch 2015-08-30 15:50:28 +02:00
Jean-Francois Dockes
271e3ab2d9 fix linux build of windows branch 2015-08-30 15:50:17 +02:00
Jean-Francois Dockes
e32b102bd3 Idem. recollindex builds, forgotten bits 2015-08-30 15:31:35 +02:00
Jean-Francois Dockes
60fd34e40f recollindex builds. Still need to implement quite a lot of ifndefed stuff (pathut, rclconfig) 2015-08-30 15:30:50 +02:00
Jean-Francois Dockes
ca55c34b28 1st mods to get a build under windows. Does not build yet, far from it 2015-08-30 11:19:18 +02:00
Jean-Francois Dockes
2c7f4f8a83 fix typo in synonyms multigroups update 2015-08-25 07:36:48 +02:00
Jean-Francois Dockes
0751bbfed8 Support multi-word synonyms and add modifier to turn-off synonyms expansion 2015-08-23 12:15:52 +02:00
Jean-Francois Dockes
b4ab07c450 fix flac mime types in rclaudio + small changes for experimenting with embedding an interpreter in recollindex 2015-08-23 09:29:26 +02:00
Jean-Francois Dockes
df7ff6aa2c made building user doc optional at configure time 2015-08-23 09:05:05 +02:00
Jean-Francois Dockes
16b3396f12 Implement single-term query-time synonyms 2015-08-22 15:11:07 +02:00
Jean-Francois Dockes
f4ecd5c29e more safexx posix stuff 2015-08-22 08:37:58 +02:00
Jean-Francois Dockes
34e7ad0936 data struct for synonym groups 2015-08-22 08:35:54 +02:00
Jean-Francois Dockes
b1c5f5b96e data struct for synonym groups 2015-08-21 19:03:59 +02:00
Jean-Francois Dockes
776539571b add routine to test prog to exercise execm proto 2015-08-21 08:33:13 +02:00
Jean-Francois Dockes
fca3ad235f Prepared windows port by removing a number of spurious reference to unix-specific interfaces, and using some xapian posix adaptor includes 2015-08-19 14:41:10 +02:00
Jean-Francois Dockes
e693344c96 Get rid of dead/unused code + use xapian posix include files 2015-08-19 13:32:44 +02:00
Jean-Francois Dockes
3297646cc3 firstindexing was never run because the status file was trucated before it was tested for being not empty 2015-08-19 13:22:30 +02:00
Jean-Francois Dockes
bd3e930533 Make dehyphenate (co-worker->coworker) optional 2015-08-19 11:34:26 +02:00
Jean-Francois Dockes
5c001aec83 removed a number of gratuitous linuxisms 2015-08-18 12:44:53 +02:00
Jean-Francois Dockes
fdd8da9a90 Handle the case where unac produces whitespace, which may occur with letter-less accents 2015-08-13 18:22:09 +02:00
Jean-Francois Dockes
2fb4804d38 Generate an additional unhyphenated term for singly hyphenated words: co-worker will index as [co worker], [co-worker] and [coworker]. Only produce terms for alphanumeric hashtags (discard #,xyz) 2015-08-13 18:18:49 +02:00
Jean-Francois Dockes
7fff38562b Discard data for docs where the alternate transcode-from-8bit trial fails after the transcode from utf-8 has failed 2015-08-13 18:14:47 +02:00
Jean-Francois Dockes
4a34a57474 namespace std 2015-08-13 18:12:00 +02:00
Jean-Francois Dockes
1e746164c5 Release 1.22.0 tagged 2015-08-10 16:19:06 +02:00
Jean-Francois Dockes
64ef2d44f0 make dist fixup 2015-08-10 16:18:58 +02:00
Jean-Francois Dockes
b1555fba59 Release 1.22.0 tagged 2015-08-10 16:17:56 +02:00
Jean-Francois Dockes
4edcff7792 make dist fixup 2015-08-10 16:17:53 +02:00
Jean-Francois Dockes
455543a71e use qshortcuts instead of the event filter for tab management key events 2015-08-10 11:28:08 +02:00
Jean-Francois Dockes
a319f09411 move include around for tidyness 2015-08-10 11:16:07 +02:00
Jean-Francois Dockes
4cce11188f pass prefix parameters to qt make at install time 2015-08-10 11:15:22 +02:00
Jean-Francois Dockes
95e13d8cd5 submit to automake really wanting wasaparse.hpp not .h 2015-08-10 10:11:08 +02:00
Jean-Francois Dockes
ec8709af9b Removed tag RECOLL-1.22.0 2015-08-10 10:09:47 +02:00
Jean-Francois Dockes
8bd448d140 Release 1.22.0 tagged 2015-08-10 10:07:58 +02:00
Jean-Francois Dockes
810c420dc5 Reset status of highlighting/term data when loading doc in editor. Fixes search not working after using shift+arrow 2015-08-09 19:20:42 +02:00
Jean-Francois Dockes
b71c399fe7 Use std[::tr1]::shared_ptr instead of local RefCntr by default 2015-08-09 13:54:24 +02:00
Jean-Francois Dockes
143b3e92b6 import sys 2015-08-09 13:37:30 +02:00
Jean-Francois Dockes
bf4116faae clean up autoconf of unordered_xx, prepare change to shared_ptr 2015-08-09 10:21:46 +02:00
Jean-Francois Dockes
e37284f05f Prevent highligting of bogus terms in results (prevent path elts, negative queries or internal stuff) 2015-08-08 21:56:45 +02:00
Jean-Francois Dockes
fe6174652b only lowercase field name once 2015-08-08 11:07:06 +02:00
Jean-Francois Dockes
48d816d88c test drivers build 2015-08-08 10:55:55 +02:00
Jean-Francois Dockes
d98822856e Allow setting additional aspell param as alternate workaround to Debian #772415 2015-08-07 10:13:15 +02:00
Jean-Francois Dockes
e9e1c6ea6d merge 2015-08-06 08:26:39 +02:00
Jean-Francois Dockes
8c24e63808 wrap up yacc cleanup 2015-08-06 08:21:17 +02:00
Jean-Francois Dockes
36ec7728c0 Avoid replacing (instead of concatenating) the current author field value with the internal one when the document is a top-level one. This allows metadata from metadatacmds to be used 2015-08-06 08:08:36 +02:00
Jean-Francois Dockes
29650b3db2 trace 2015-08-06 08:03:57 +02:00
Jean-Francois Dockes
8b3ea3e763 doc 2015-08-06 08:02:47 +02:00
Jean-Francois Dockes
53befc5399 Add kde code to dist 2015-08-06 07:47:21 +02:00
Jean-Francois Dockes
51ef2961e9 modes 2015-08-05 13:58:11 +02:00
Jean-Francois Dockes
e3bc496fde modes 2015-08-05 13:57:49 +02:00
Jean-Francois Dockes
3091d457b0 finally? fixed the wasaparse bison mess by writing a local version of ylwrap 2015-08-05 12:08:14 +02:00
Jean-Francois Dockes
39671bacac dont make xadump by default 2015-08-05 09:45:27 +02:00
Jean-Francois Dockes
00e25b9d67 other ut/test drivers Makefiles 2015-08-05 09:01:11 +02:00
Jean-Francois Dockes
7daf9484f6 fix ut/test drivers Makefile 2015-08-05 08:47:10 +02:00
Jean-Francois Dockes
63f5aecd90 dist builds 2015-08-04 18:47:35 +02:00
Jean-Francois Dockes
5f380c59e5 fix glitches in bison run and parser build 2015-08-04 17:55:48 +02:00
Jean-Francois Dockes
0998237b53 Kio build + fix python build 2015-08-04 17:24:30 +02:00
Jean-Francois Dockes
571f5a18e2 get rid of scripts not used any more 2015-08-04 17:23:26 +02:00
Jean-Francois Dockes
3ed2cea2ac begin fixing dist 2015-08-03 11:43:56 +02:00
Jean-Francois Dockes
e9fed9d826 added qtgui to build 2015-08-03 10:13:01 +02:00
Jean-Francois Dockes
0b3dec1022 recollq and python module 2015-08-02 19:13:27 +02:00
Jean-Francois Dockes
220d28c912 recollindex and python module building and running 2015-08-02 17:40:51 +02:00
Jean-Francois Dockes
fdfcdbb47a cosmetics 2015-08-01 16:27:04 +02:00
Jean-Francois Dockes
bc17cf8859 Autophrase only active on AND lists 2015-07-31 13:01:02 +02:00
Jean-Francois Dockes
bd55dda19a Fix bogus syntax errors about parentheses around phrases 2015-07-31 12:19:28 +02:00
Jean-Francois Dockes
0726619ced Release 1.21.1 tagged 2015-07-31 11:28:53 +02:00
Jean-Francois Dockes
de6cf85d6b 1.21.1 2015-07-31 11:28:48 +02:00
Jean-Francois Dockes
76bbe9940b release 3959 2015-07-31 11:26:54 +02:00
Jean-Francois Dockes
db7e861b0a exit with meaningful status 2015-07-31 11:24:56 +02:00
Jean-Francois Dockes
6bdadc08f9 comment 2015-07-31 11:23:17 +02:00
Jean-Francois Dockes
d14673ef42 doc 2015-07-31 11:22:47 +02:00
Jean-Francois Dockes
4aad882453 recoll GUI: behave as recollq if argv[0] is recollq 2015-07-31 09:50:30 +02:00
Jean-Francois Dockes
bd93f547d5 Add ctrl+l as shortcut to move the focus to the search entry 2015-07-29 09:51:03 +02:00
Jean-Francois Dockes
bbc2dd1e48 reslist popup: enable save to file for web cache entries, disable open parent 2015-07-25 10:59:27 +02:00
Jean-Francois Dockes
be51bf5ef0 Also index non-html files from the web queue and fix the Open operation for them 2015-07-24 16:30:13 +02:00
Jean-Francois Dockes
7cc5f9e039 Allow starting with fixed simple search mode instead of last remembered value 2015-07-20 19:17:53 +02:00
Jean-Francois Dockes
ecd15062d9 Impose memory usage limit on external filters. Fixes issue #259 2015-07-18 19:30:49 +02:00
Jean-Francois Dockes
62a63e8f64 comments 2015-07-17 11:00:42 +02:00
Jean-Francois Dockes
87d133f2ba web 2015-07-17 10:19:54 +02:00
Jean-Francois Dockes
fb8a8285ab Remove spurious reference to QWebView, this was preventing building with --disable-webkit when webkit was actually absent 2015-07-16 17:17:28 +02:00
Jean-Francois Dockes
4af4c3ddea missing std qualifier on queue 2015-07-02 15:20:23 +02:00
Jean-Francois Dockes
0020e9b0a2 rclpdf: work with newer poppler version which do escape html text inside <head> 2015-06-30 10:35:22 +02:00
Jean-Francois Dockes
09f5f1c796 replaced unused map with list 2015-06-26 13:37:06 +02:00
Jean-Francois Dockes
9617a179d5 none 2015-06-17 09:22:48 +02:00
Jean-Francois Dockes
a5848f80c6 1.21 debian packaging 2015-06-17 09:21:14 +02:00
Jean-Francois Dockes
1b2a55f3a9 Fix kioslave build: need to build parser first 2015-06-17 09:20:53 +02:00
Jean-Francois Dockes
1a761fc088 doc 2015-06-17 09:19:53 +02:00
Jean-Francois Dockes
ea34853ce0 Release 1.21.0 tagged 2015-06-16 15:06:07 +02:00
Jean-Francois Dockes
81fd348960 doc 2015-06-16 15:02:09 +02:00
Jean-Francois Dockes
77e01d510e add recoll -v to print version 2015-06-16 14:42:55 +02:00
Jean-Francois Dockes
6d9ff166c6 test file name change 2015-06-16 09:57:46 +02:00
Jean-Francois Dockes
5346327165 manifest 2015-06-16 09:50:19 +02:00
Jean-Francois Dockes
77315c0fc6 release 3928 2015-06-16 09:41:43 +02:00
Jean-Francois Dockes
bb9adaa30f Split monster file rclmain_w.cpp. No code changes 2015-06-16 09:39:08 +02:00
Jean-Francois Dockes
c873fc3fe7 doc 2015-06-16 09:38:41 +02:00
Jean-Francois Dockes
3964b713d2 doc 2015-06-15 18:13:00 +02:00
Jean-Francois Dockes
551158e8ad none 2015-06-15 17:03:38 +02:00
Jean-Francois Dockes
31ad621fc2 Danish translation update from Morten Langlo 2015-06-15 07:55:15 +02:00
Jean-Francois Dockes
51795d4b34 Fixed the autophrase fix: need a full tree flatten to work 2015-06-14 09:22:34 +02:00
Jean-Francois Dockes
2e8a63ea3b Fix autophrase for queries produced by new parser 2015-06-13 08:18:08 +02:00
Jean-Francois Dockes
230b386bb8 doc 2015-06-12 10:18:37 +02:00
Jean-Francois Dockes
04d42ae75f Implemented saving/loading simple and advanced searches to/from named XML files. Close issue #220 2015-06-11 18:35:16 +02:00
Jean-Francois Dockes
22926e4753 rearranged a bit the query text splitting and arranged to generate an error when an excessively long term results in a null query (but not when there are other usable terms) 2015-06-09 19:44:19 +02:00
Jean-Francois Dockes
f171d027e2 comments and indent 2015-06-09 19:34:15 +02:00
Jean-Francois Dockes
8b2ec487ea removed unused method 2015-06-09 19:16:10 +02:00
Jean-Francois Dockes
24a271ccd2 config checking: only test skippedPaths existence for user-added values, not defaults 2015-06-08 13:20:06 +02:00
Jean-Francois Dockes
c3a54f6925 Warn if config file contains non-existing paths. Fixes issue #244 2015-06-08 10:14:11 +02:00
Jean-Francois Dockes
cb8905f5d0 Also include the result list header fragment in the snippets window header. Add "class" attributes "respar" and "snippets" to the tables to enable selection if needed. 2015-06-08 08:43:00 +02:00
Jean-Francois Dockes
f00fa77d45 Retrieve font color from qt defaults and use it to set color in webkit-based elements (reslist and snippets window). User still needs to use the prefs to fix the font size. Closes issue #251 2015-06-07 14:12:09 +02:00
Jean-Francois Dockes
05a5d0c3b7 remove stray message 2015-06-07 12:42:27 +02:00
Jean-Francois Dockes
5f8ac4b8a4 Add %u spec to reslist paragraph format to output either local file path (with file:// stripped) or url). Fixes issue #254 2015-06-06 16:08:54 +02:00
Jean-Francois Dockes
5bb18dfc36 Strip space chars from crontool entries. Fixes issue #253 2015-06-06 09:10:57 +02:00
Jean-Francois Dockes
11343b7aad "Snippets" link translation 2015-06-06 08:20:46 +02:00
Jean-Francois Dockes
867e0ea0ce Fix forgotten string translation 2015-06-06 08:16:46 +02:00
Jean-Francois Dockes
5916f1a0e0 Implemented support for posix_spawn() and (main change): always use vfork() for starting external commands 2015-05-27 16:24:18 +02:00
Jean-Francois Dockes
1de1b64c02 man 2015-05-27 11:53:22 +02:00
Jean-Francois Dockes
75774bcee9 cosmetics+prepare change to shared_ptr+import unix socket support 2015-05-21 18:02:27 +02:00
Jean-Francois Dockes
847bfb61f5 cosmetics+prepare shift to shared_ptr 2015-05-21 18:01:25 +02:00
Jean-Francois Dockes
901f42a769 improve compat with shared_ptr in view of future riddance of local code 2015-05-21 17:59:31 +02:00
Jean-Francois Dockes
8e71cbe3ff doc 2015-05-21 12:56:02 +02:00
Jean-Francois Dockes
28b9d96ffa web 2015-05-21 12:55:54 +02:00
Jean-Francois Dockes
cec5ea02c8 Check RECOLL_LOGDATE environment variable to add date stamps to the debug log. Closes issue #246 2015-05-17 08:59:19 +02:00
Jean-Francois Dockes
a6e1ebd92c Check that all topdirs elements are absolute paths 2015-05-07 08:19:25 +02:00
Jean-Francois Dockes
be764dbb8a commented qpdfview sample usage 2015-05-07 07:33:40 +02:00
Jean-Francois Dockes
0d9eb72c4e 1.20.6 packaging 2015-05-07 07:33:02 +02:00
Jean-Francois Dockes
ab75bd2c99 web 2015-05-07 07:32:29 +02:00
Jean-Francois Dockes
234564d76f updated messages 2015-04-25 10:14:33 +02:00
Jean-Francois Dockes
4a7a097ff3 Fix tr() calls in respopup.cpp 2015-04-25 10:07:09 +02:00
Jean-Francois Dockes
0e76eadb18 Add capability to run tesseract from rclpdf. Disabled by default, see comments at the top of rclpdf 2015-04-24 18:13:52 +02:00
Jean-Francois Dockes
705ffc7307 KIO slave: perform incremental updates during listDir. Bump the default maxentries to 10000. use RECOLL_KIO_STEMLANG for defining stemming language. Closes issue #235 2015-04-24 13:07:55 +02:00
Jean-Francois Dockes
8e02e25943 recoll GUI: add menu option to retry failed files 2015-04-24 10:47:33 +02:00
Jean-Francois Dockes
d7dea4ae3d Let recollindex execute a script at startup to try and guess if it should retry failed files 2015-04-24 10:46:58 +02:00
Jean-Francois Dockes
7161f3a396 comments 2015-04-24 09:56:24 +02:00
Jean-Francois Dockes
0ec312a119 recollindex: do not retry files which previously failed to be indexed, except if they were changed since, or option -k is set 2015-04-23 10:37:37 +02:00
Jean-Francois Dockes
447be9bf31 Minimum checking that we have enough space before attempting decompression. Change config default compressed file from no limit to 20 MB 2015-04-22 17:08:06 +02:00
Jean-Francois Dockes
0aafe19c84 web 2015-04-22 15:55:03 +02:00
Jean-Francois Dockes
0df5961cd4 Contributed rclscribus fixes, thanks to Morten 2015-04-20 09:16:37 +02:00
Jean-Francois Dockes
d343200ef2 danish 2015-04-20 09:01:14 +02:00
Jean-Francois Dockes
49ee3a0f5a messages 2015-04-20 08:48:23 +02:00
Jean-Francois Dockes
191f1d082b french messages 2015-04-20 08:48:07 +02:00
Jean-Francois Dockes
be38efa805 change the way we call tr() in multisave.cpp, was not working. Updates all message files 2015-04-19 20:00:13 +02:00
Jean-Francois Dockes
cef68461aa guard against spaces in filenames inside rclokulnote and rcldoc filters 2015-04-17 13:12:01 +02:00
Jean-Francois Dockes
7127789833 Try to match as long a suffix as possible when determining MIME type. This will allow .tar.gz files to be indexed directly instead of being decompressed to a temp file first. 2015-04-16 19:52:04 +02:00
Jean-Francois Dockes
d0f829fec2 Use special case for indexing empty files 2015-04-16 19:49:40 +02:00
Jean-Francois Dockes
822171bd7e OpenBSD has no xattrs, help recoll build anyway 2015-04-09 09:08:30 +02:00
Jean-Francois Dockes
01d55fd35f 7zip filter: minimum docs and test 2015-04-07 09:03:03 +02:00
medoc
6dda54e228 Merged in igitur/recoll (pull request #4)
Implement filter for .7z files. Based on rclzip and rcltar
2015-04-07 08:27:19 +02:00
Francois Botha
d802e87e5a Implement filter for .7z files. Based on rclzip and rcltar 2015-04-06 09:57:00 +02:00
Jean-Francois Dockes
c16fb7122d update tabwidget::currentChanged(QWidget*) to currentChanged(int) 2015-04-05 10:10:31 +02:00
Jean-Francois Dockes
f2ce709a15 Used to write settings in the exit handler, do it earlier because it crashes qt5 2015-04-05 09:08:55 +02:00
Jean-Francois Dockes
1b786815b7 get rid of rclmain event filter 2015-04-05 08:45:59 +02:00
Jean-Francois Dockes
db5089404a qt5 qmake needs printsupport module 2015-04-05 08:45:04 +02:00
Jean-Francois Dockes
4cf5b409a9 Fix things to build with qt5. Not functional yet: no menus+dumps core on exit... 2015-03-31 18:03:52 +02:00
Jean-Francois Dockes
242a00d5f9 1.20.4 packaging 2015-03-30 15:04:38 +02:00
Jean-Francois Dockes
fe0e6680bc web 2015-03-30 15:04:17 +02:00
Jean-Francois Dockes
5105d6f390 fix hyphe-used-as-minus-sign 2015-03-30 15:03:59 +02:00
Jean-Francois Dockes
1b73c6d4ae packaging 2015-03-28 17:53:08 +01:00
Jean-Francois Dockes
85695e1d03 web 2015-03-28 17:52:17 +01:00
Jean-Francois Dockes
f20c857871 get rid of stale unity-lens-recoll refs 2015-03-28 08:53:55 +01:00
Jean-Francois Dockes
895f7c1ab1 Import sample fragbuts.xml if user file does not exist 2015-03-28 08:43:45 +01:00
Jean-Francois Dockes
5c067685f0 stopsuffixes: old user value if set overrides new variable 2015-03-27 08:40:54 +01:00
Jean-Francois Dockes
2169cd2a83 fix scope packaging 2015-03-27 08:39:50 +01:00
Jean-Francois Dockes
4384112337 Use O_NOATIME to avoid disturbing st_atime when possible. Closes issue #230 2015-03-25 13:49:33 +01:00
Jean-Francois Dockes
5527dbd4f9 Moved mimemap variable recoll_noindex to recoll.conf noContentSuffixes 2015-03-25 11:48:59 +01:00
Jean-Francois Dockes
1182e8344f web 2015-03-25 10:45:54 +01:00
Jean-Francois Dockes
df57ada369 Ensure replacement md5 code works on bigendian systems (do we ever run on any of those?) 2015-03-03 16:16:18 +01:00
Jean-Francois Dockes
3c52b1cd70 Replaced RSA md5 code with public domain OpenBSD/debian dpkg version 2015-03-01 14:28:01 +01:00
Jean-Francois Dockes
83fc3d45ed query parser would crash on dir: query containing slashes 2015-03-01 14:26:29 +01:00
Jean-Francois Dockes
663d89aee9 make sure that CPPFLAGS CXXFLAGS and LDFLAGS are used during the build 2015-03-01 12:43:09 +01:00
Jean-Francois Dockes
2e83c92b89 doc 2015-03-01 12:39:22 +01:00
Jean-Francois Dockes
b71be61fe8 python2->python in script headers 2015-02-27 18:43:27 +01:00
Jean-Francois Dockes
c2bb46e4e9 removed section about prebuilt trees, only confusing as these dont exist any more 2015-02-26 16:21:32 +01:00
Jean-Francois Dockes
0797bbb9b3 Fix cygwin64 build. Closes issue #227 2015-02-23 10:14:03 +01:00
Jean-Francois Dockes
225747ad8c Revert change in indexfiles which was preventing the real time indexer from processing the web queue 2015-02-16 19:35:24 +01:00
Jean-Francois Dockes
b685052c4f Fix parser to compile with bison 3 2015-02-16 08:43:40 +01:00
Jean-Francois Dockes
9d26f4908a web queue: fix cache resizing utility + bug in indexer which would skip oldest entry 2015-02-15 16:08:36 +01:00
Jean-Francois Dockes
1f2776daf6 change version to future 1.21 + document new query language features 2015-02-07 10:29:18 +01:00
Jean-Francois Dockes
13a2428710 Install script used wrong css file for the manual. F1 displayed un-styled manual 2015-02-07 10:27:32 +01:00
Jean-Francois Dockes
7b6304791e none 2015-01-29 17:28:08 +01:00
Jean-Francois Dockes
9c876adea6 hgignore 2015-01-29 17:25:22 +01:00
Jean-Francois Dockes
a521207de1 add some parser tests 2015-01-29 17:22:30 +01:00
Jean-Francois Dockes
1b87553c8b parser: fix shift/reduce conflicts and errors by setting precedence for '(' and '-' 2015-01-29 17:22:07 +01:00
Jean-Francois Dockes
81cf9bbdac Converted query language parser from the old regexp jungle to bison. Allow using parentheses for clearer syntax. 2015-01-29 16:15:17 +01:00
Jean-Francois Dockes
0848431d5c release 3787 2015-01-28 11:22:49 +01:00
Jean-Francois Dockes
4cc5b2a27e release 3790 2015-01-28 11:22:01 +01:00
Jean-Francois Dockes
5ea83e4fa6 backout 2015-01-28 11:21:03 +01:00
Jean-Francois Dockes
01aab05459 ckpt 2015-01-27 19:15:41 +01:00
Jean-Francois Dockes
59d4ab9706 none 2015-01-27 15:53:39 +01:00
Jean-Francois Dockes
a5cadac1ef System tray icon basics 2015-01-26 16:13:18 +01:00
Jean-Francois Dockes
b3f628c438 typo in followLinks variable for [/usr/share/man] in default conf 2015-01-26 15:58:03 +01:00
Jean-Francois Dockes
e419662fac Change things so that the first chunk of a multi-chunk (multi-mb) text files gets an ipath so that it does not stand for the whole file, but is treated like other chunks 2015-01-21 16:21:33 +01:00
Jean-Francois Dockes
5cbae3985b Use readnext() method to read even 1st chunk of text files to perform appropriate end of chunk truncation to eol. Wont affect uncunked files 2015-01-21 16:03:26 +01:00
Jean-Francois Dockes
aa36cda20c Added web cache resize tool 2015-01-19 17:00:06 +01:00
Jean-Francois Dockes
01b29ddf2a doc 2015-01-19 16:57:03 +01:00
Jean-Francois Dockes
b737443474 Better window title for the q frags window 2015-01-19 16:56:51 +01:00
Jean-Francois Dockes
29bb401873 doc 2015-01-19 16:56:01 +01:00
Jean-Francois Dockes
dad6778596 doc 2014-12-19 09:53:21 +01:00
Jean-Francois Dockes
bf3b8e1c8e release 1.20.1 web and packaging 2014-12-19 09:52:59 +01:00
Jean-Francois Dockes
7a23422538 web 2014-12-18 20:12:23 +01:00
Jean-Francois Dockes
53b4e1bc21 Release 1.20.1 tagged 2014-12-18 19:40:22 +01:00
Jean-Francois Dockes
0985422ada updated message files and french translation 2014-12-18 18:33:17 +01:00
Jean-Francois Dockes
e4bc55c503 VERSION -> 1.20.1, prepare for release 2014-12-18 18:13:17 +01:00
Jean-Francois Dockes
cac0fdb080 release 1.20.0p3 2014-12-18 15:43:58 +01:00
Jean-Francois Dockes
a088c982bd Make xls-dump.py errors less noisy, hopefully avoiding system reports on Fedora 2014-12-18 15:35:42 +01:00
Jean-Francois Dockes
136f9483ac Query Fragments: re-read file if changed. Print informative error message if file cant be parsed 2014-12-18 14:48:01 +01:00
Jean-Francois Dockes
53f8e38e88 Change message after interrupting indexing from "failed" to "interrupted" 2014-12-18 08:17:20 +01:00
Jean-Francois Dockes
7d54e147a0 Query Fragments: handle config file errors + doc 2014-12-17 15:35:14 +01:00
Jean-Francois Dockes
b2370d953f add keyboard accelerators for the result table Ctrl+r -> switch focus to results. Ctrl+o Open current result. Ctrl+Shft+o Open and close recoll. Ctrl+d preview (draft) 2014-12-15 16:13:30 +01:00
Jean-Francois Dockes
a0af5d1260 fragbuts sort of working 2014-12-10 18:56:43 +01:00
Jean-Francois Dockes
18a1c66fbc query fragments: initial: parse and create, does nothing yet 2014-12-10 14:07:37 +01:00
Jean-Francois Dockes
288c97233a Add prefix / index rclbes field (backend) to allow discriminating results from the web cache 2014-12-10 14:05:55 +01:00
Jean-Francois Dockes
6ef054101f doc 2014-12-10 14:05:03 +01:00
Jean-Francois Dockes
1e0f935b89 usemtime config variable needs to be global 2014-12-09 15:58:23 +01:00
Jean-Francois Dockes
dc7ec0ac9f Delete RCL_USE_XATTR configure/compile time variable, it was not
useful. Add configuration variable to use mtime instead of ctime for update
detection. Useful on a system where xattrs would be modified but not
indexed, to avoid excessive reindexing.
2014-12-09 11:15:17 +01:00
Jean-Francois Dockes
f321a1582b Set main window title according to config dir name. closes issue #218 2014-12-09 08:36:31 +01:00
Jean-Francois Dockes
cd4c39fd06 Adjust the font selection display text when the current choice is to let webkit choose the default 2014-12-09 08:09:49 +01:00
Jean-Francois Dockes
b11f66cb80 Aspell lib loading: use simple name for the lib and let the system work instead of trying to guess the path. Fixes problem with multi-arch aspell on Debian Jessie 2014-12-06 16:22:41 +01:00
Jean-Francois Dockes
13570505b1 kio compile for utopic 2014-12-06 16:21:29 +01:00
Jean-Francois Dockes
98242d1b53 compensate for off-by-3 error when setting webkit font size with QWebSettings. Experiment (ifndefed) with using css instead 2014-12-01 14:08:13 +01:00
Jean-Francois Dockes
a955e65f05 doc 2014-12-01 13:31:19 +01:00
Jean-Francois Dockes
65f63f71b2 sync with fedora package 2014-12-01 13:30:59 +01:00
Jean-Francois Dockes
3579edc289 none 2014-11-30 09:48:48 +01:00
Jean-Francois Dockes
ed8fec99c1 new simplified chinese messages 2014-11-20 19:32:14 +01:00
Jean-Francois Dockes
dacf48a09c missing ifdef would make --disable-idxthreads build fail 2014-11-20 19:31:35 +01:00
Jean-Francois Dockes
62ec3a2e3d New messages for simplified chinese 2014-11-18 15:43:39 +01:00
Jean-Francois Dockes
4766809545 doc 2014-11-18 08:29:48 +01:00
Jean-Francois Dockes
bd5024b771 none 2014-11-09 06:35:31 +01:00
Jean-Francois Dockes
24380e01e2 ancient 2014-11-09 06:34:57 +01:00
Jean-Francois Dockes
83aebfce56 changes not affecting recoll (ifdefed) 2014-11-05 14:35:13 +01:00
Jean-Francois Dockes
1339e6048a namespace cleanup 2014-11-05 13:53:02 +01:00
Jean-Francois Dockes
d6886f2157 rclmpdf ok? 2014-10-29 11:57:44 +01:00
Jean-Francois Dockes
9da7883144 dquot -> quot! 2014-10-29 11:57:18 +01:00
Jean-Francois Dockes
8a6a558d22 new pdf filter which can process attachments 2014-10-29 08:20:03 +01:00
Jean-Francois Dockes
86edc98202 fsindexer: avoid generating an empty bogus document when getting a subdoc error after the base doc has been seen 2014-10-29 08:18:20 +01:00
Jean-Francois Dockes
6da082ca81 comments 2014-10-29 08:17:14 +01:00
Jean-Francois Dockes
7d4e08647c do not identify .mp4 as audio/mp4 as they are more currently video/mp4. not listing .mp4 at all will let the system identifier do its job 2014-10-10 11:15:46 +02:00
Jean-Francois Dockes
c6ad335e01 we now never use FNM_LEADING_DIR. Change a param default for consistency, and fix the doc 2014-10-10 10:23:24 +02:00
Jean-Francois Dockes
1de5c62cbe Defining a topdir under a skippedPath is allowed and usefully works with normal indexing. This change fixes a bug which prevented it from working with the real-time monitor and recollindex -i 2014-10-10 10:17:57 +02:00
Jean-Francois Dockes
2d42477c90 doc 2014-10-05 13:10:13 +02:00
Jean-Francois Dockes
139cc726c1 doc 2014-10-05 13:09:38 +02:00
Jean-Francois Dockes
aa67f56ab9 rclpurple: fix for current log format 2014-10-01 11:37:52 +02:00
Jean-Francois Dockes
c28fe16c85 rclpurple: fix for current log format 2014-10-01 11:37:20 +02:00
Jean-Francois Dockes
00a7f2b268 web: fix links 2014-09-15 09:07:57 +02:00
Jean-Francois Dockes
9294cac633 cleanup ancient download pages 2014-09-15 09:04:46 +02:00
Jean-Francois Dockes
3159cbe4b9 packaging 2014-09-11 08:42:35 +02:00
Jean-Francois Dockes
1c0d3bd8cf merge 2014-09-11 08:40:09 +02:00
Jean-Francois Dockes
7b4c1d8859 packaging 2014-09-11 08:39:47 +02:00
Jean-Francois Dockes
976589d218 doc 2014-08-25 16:23:55 +02:00
Jean-Francois Dockes
56cad37f5c rclpdf: also escape text inside meta content attributes 2014-08-25 14:16:45 +02:00
Jean-Francois Dockes
e169ff2cae GUI: add possibility to call script from link in result paragraph html 2014-08-24 18:11:00 +02:00
Jean-Francois Dockes
2707ca095f run script oops 2014-08-24 11:17:23 +02:00
Jean-Francois Dockes
7373f5e58d trial version of "run script" popup menu entry for the GUI 2014-08-24 11:15:50 +02:00
Jean-Francois Dockes
e5dfb800f7 Release 1.20.0p2 tagged 2014-07-29 10:03:38 +02:00
Jean-Francois Dockes
3801f306de 1.20.0p2 2014-07-29 10:03:28 +02:00
Jean-Francois Dockes
d6aff23827 index #hashtags as such 2014-07-29 09:56:00 +02:00
Jean-Francois Dockes
4a0ac96f92 fix textsplit core dump caused by interaction of new 1.20 code with little-tested camelcase splitting section 2014-07-28 22:12:35 +02:00
Jean-Francois Dockes
d77a7fe28a Release 1.20.0p1 tagged 2014-07-26 19:37:20 +02:00
Jean-Francois Dockes
f1e503ba3b release 1.20.0p1 2014-07-26 19:37:19 +02:00
Jean-Francois Dockes
003f4eb2fe doc 2014-07-26 19:36:25 +02:00
Jean-Francois Dockes
86a21bac26 Repaired problem in commit 577fd9d3a634 which broke case-sensitive indexing term prefix wrapping 2014-07-24 15:29:19 +02:00
Jean-Francois Dockes
7c4f4b7045 All docs get containerfilename field, indexed exclusively with prefix (only a field search containerfilename:someterm can match). 2014-07-23 19:30:41 +02:00
Jean-Francois Dockes
80c0787e3d Add new kind of aliases for field names, to be used only at query time 2014-07-23 16:52:08 +02:00
Jean-Francois Dockes
e1576b8b53 Add flag qualifying field to be indexed exclusively with prefix 2014-07-23 15:28:16 +02:00
Jean-Francois Dockes
957bc1a11c tests: make it easier to move to other machine by sorting on url and other small changes 2014-07-23 10:23:03 +02:00
Jean-Francois Dockes
a9e43ad950 mimeconf: create entries for application/javascript and application/x-php (for using xdg-mime) 2014-07-23 10:21:37 +02:00
Jean-Francois Dockes
b831c4c226 web 2014-07-23 10:20:05 +02:00
Jean-Francois Dockes
4fea8f2774 updated message files 2014-07-22 09:15:29 +02:00
Jean-Francois Dockes
2b74952978 Allow configuration of the last-resort external command used to identify mime types 2014-07-19 16:15:43 +02:00
Jean-Francois Dockes
3c130e462c Treat the "open parent" link click more like the right-click menu entry for open parent. The latter is still different because it opens the enclosing document, not necessarily a folder if the doc result is embedded. But they now behave the same if the parent is a folder 2014-07-19 15:31:03 +02:00
Jean-Francois Dockes
079b6d909c Processs xdg.tags and xdg.comment freedesktop extended attribute fields, as complementing keywords and description 2014-07-19 15:03:40 +02:00
Jean-Francois Dockes
ce24fbe678 Gui result list: add %P substitution for parent folder and F link target for opening the parent folder 2014-07-17 10:46:15 +02:00
Jean-Francois Dockes
e6b2c4434a try out modification to use container file name for display, but not search, purposes when the subdocument file name is not set 2014-07-16 17:05:26 +02:00
Jean-Francois Dockes
fd4b0cd026 web 2014-07-16 17:04:20 +02:00
Jean-Francois Dockes
5a1360eec8 remove hard-coded path 2014-07-16 14:28:00 +02:00
Jean-Francois Dockes
a25eebf22e python module: query_iter function must incref the query (problem surfaced because the query ref count is now correct following the previous incref fix 2014-07-16 14:29:18 +02:00
Jean-Francois Dockes
12669e48d2 do not unaccent Bengali characters (process like the Hindi ones) 2014-07-16 12:47:30 +02:00
Jean-Francois Dockes
2f299e11ca add application/gzip (as other application/x-gzip) 2014-07-16 12:46:32 +02:00
Jean-Francois Dockes
a0aa86b97c doc 2014-07-16 10:02:34 +02:00
Jean-Francois Dockes
d3c01e5450 Improved error message, closes issue #207 2014-07-14 08:30:41 +02:00
Jean-Francois Dockes
2433716040 Web history indexing: fmtime was not saved to the cache, resulting in empty dates in queries 2014-07-08 15:06:47 +02:00
Jean-Francois Dockes
63405344c7 Release 1.20.0 tagged 2014-07-07 19:00:20 +02:00
Jean-Francois Dockes
71ccffd447 fix manifest 2014-07-07 19:00:13 +02:00
Jean-Francois Dockes
5d27deda3e fix manifest 2014-07-07 18:59:40 +02:00
Jean-Francois Dockes
c345f21067 Consequences of 3656:ee3c7f3d964f. Deal with the fact that some subdocs may not have a filename field at all 2014-07-07 18:58:00 +02:00
Jean-Francois Dockes
9a40f9c2e9 Removed tag RECOLL_1_20_0 2014-07-07 18:56:07 +02:00
Jean-Francois Dockes
1adea26fb6 mode 2014-06-26 12:34:14 +02:00
Jean-Francois Dockes
767be861f2 Python module: stray INCREF on db object prevented descriptor and memory freeing. Fixed prototypes for db_close and query_close methods (fixes possible core dump) 2014-06-26 12:43:18 +02:00
Jean-Francois Dockes
7c69299339 zip: improved error output. Fixes issue #201 2014-07-06 16:32:41 +02:00
Jean-Francois Dockes
2635871992 ppt-dump: improve error messages 2014-07-06 16:27:40 +02:00
Jean-Francois Dockes
d34d28418a msword docs: avoid generating an error for files containing only a picture (empty antiword output) 2014-07-06 16:24:11 +02:00
Jean-Francois Dockes
244c2ed468 1.19.14p1 2014-06-26 13:14:41 +02:00
Jean-Francois Dockes
be2eeb0c60 web 2014-06-24 08:25:18 +02:00
Jean-Francois Dockes
5b73bb57dd OpenOffice filter: do produce white space for tab input! 2014-06-24 08:13:32 +02:00
Jean-Francois Dockes
34f23d515f web 2014-06-23 14:59:17 +02:00
Jean-Francois Dockes
f0ae2dcddf doc 2014-06-17 09:53:56 +02:00
Jean-Francois Dockes
7a1322a590 Query language: it used to be that an entry lacking whitespace but
splittable, like [term1,term2] was transformed into a phrase search, which
made sense in some cases, but no so many. This commit changes this:
[term1,term2] now means term1 AND term2. [term1/term2] means
term1 OR term2. This is especially useful for field searches where you
would previously be forced to repeat the field name for every term.
[somefield:term1 somefield:term2] can now be expressed as somefield:term1,term2
2014-06-12 17:12:08 +02:00
Jean-Francois Dockes
21c12a6700 forgot to return false when no app found -> bad alloc/core dump 2014-06-12 16:55:24 +02:00
Jean-Francois Dockes
17d3e40ea9 don't add the top container file name to the subdocs terms 2014-06-12 14:17:18 +02:00
Jean-Francois Dockes
417b9d7c72 test driver 2014-06-10 17:41:46 +02:00
Jean-Francois Dockes
0f9880bec2 none 2014-06-10 17:40:56 +02:00
Jean-Francois Dockes
7bf2bdf9df doc 2014-06-10 17:40:20 +02:00
Jean-Francois Dockes
6aefb7aded 1.19.14 packaging and web pages 2014-06-07 19:18:28 +02:00
Jean-Francois Dockes
a7b62d5469 execmd: limit the cases where the child process could call the LOGXX functions to really exceptional cases. Previously, the child process could be called with a non-existant command to exec, which would trigger a LOGERR call, which in turn could block because the log mutex had been taken in the father process (and there is nobody in the child to free it). This would manifest itself by 20mn of "selectloop returned 1" messages as the father was waiting for a blocked child until the filter timeout. Other threads would go on, and the timeout would finally trigger, so this did not end up as a failed indexing as long as someone was patient... 2014-06-07 18:48:35 +02:00
Jean-Francois Dockes
730659d0bf Use a single Xapian Database object for update and query operations while indexing instead of separately open read/write ones. Separate objects seem to trigger Xapian issues 2014-06-07 11:44:04 +02:00
Jean-Francois Dockes
2edf0c1821 rcltar: clean up import statements 2014-06-07 11:45:25 +02:00
Jean-Francois Dockes
0b3ed2b1c4 comment 2014-06-05 09:22:48 +02:00
Jean-Francois Dockes
9ece9353c7 doc 2014-06-05 09:22:25 +02:00
Jean-Francois Dockes
70e7411433 remember toolbar placement area between sessions 2014-05-27 11:57:24 +02:00
Jean-Francois Dockes
b3bec32b3d allow displaying current doc filter (media/message etc.) as menu 2014-05-27 10:49:12 +02:00
Jean-Francois Dockes
464ac702ed shipping manifest cleanup 2014-05-24 14:32:08 +02:00
Jean-Francois Dockes
b7511f6f17 release 3636 2014-05-24 14:26:53 +02:00
Jean-Francois Dockes
16b63b4e14 doc 2014-05-24 08:33:00 +02:00
Jean-Francois Dockes
1a753c8c4a textsplit: check for underflow while trimming the span 2014-05-19 18:52:51 +02:00
Jean-Francois Dockes
3726999684 Allow access to Xapian docid for Recoll document in recollq and Python API. Add sample Python program to find document duplicates, using MD5 terms 2014-05-19 12:00:15 +02:00
Jean-Francois Dockes
95947d06b9 doc 2014-05-15 15:21:08 +02:00
Jean-Francois Dockes
3adb52864f doc 2014-05-15 15:19:38 +02:00
Jean-Francois Dockes
619fd37370 doc 2014-05-15 15:19:10 +02:00
Jean-Francois Dockes
9a65d81d6a doc 2014-05-15 15:18:02 +02:00
Jean-Francois Dockes
495c45f835 Off by one error in maximum embedding depth test caused overflow of FileInterner m_tmpflgs temp flags array and possibly bus error depending on arch (only seen on 32 bits arch) 2014-05-15 15:15:01 +02:00
xliiv
d69bb0b74a Added Polish translation files 2014-05-11 00:43:19 +02:00
Jean-Francois Dockes
69b86b1d2c none 2014-05-06 16:58:09 +02:00
Jean-Francois Dockes
bf638559ba 1.19.13 2014-05-06 16:57:12 +02:00
Jean-Francois Dockes
9c8f4c468c 1.13 pkg updates 2014-05-06 16:56:53 +02:00
Jean-Francois Dockes
7c52fedf30 catch ppt-dump errors to avoid bogus system reports 2014-05-06 11:39:27 +02:00
Jean-Francois Dockes
f70e760759 get rid of numerous probably inocuous valgrind/helgrind messages by ensuring that actual string copies are passed between threads, without refcount/shared data magic 2014-05-05 19:01:58 +02:00
Jean-Francois Dockes
43c5c4c59f mt indexing: do not pass copies of Xapian::Document between threads: the reference counting is not mt-safe. Replace with pointers 2014-05-05 10:59:50 +02:00
Jean-Francois Dockes
83eba9602a restructured needUpdate() 2014-05-06 08:26:38 +02:00
Jean-Francois Dockes
9cf02d0be9 Config GUI: removed a bunch of ininteresting variables. Compacte layout a bit. Added indexedmimetypes and excludedmimetypes 2014-05-02 14:01:32 +02:00
Jean-Francois Dockes
51590fa714 none 2014-05-02 10:09:03 +02:00
Jean-Francois Dockes
bff02cc4d3 add excludedmimetypes configuration variable 2014-05-02 10:07:26 +02:00
Jean-Francois Dockes
e2a0e8b311 GUI: add "Open With" entry in reslist/table popups to let the user choose the app 2014-05-01 09:28:46 +02:00
Jean-Francois Dockes
7da8d7b293 added utility module for computing list of desktop apps handling MIME type 2014-05-01 08:07:10 +02:00
Jean-Francois Dockes
a46925d492 doc 2014-05-01 08:06:29 +02:00
Jean-Francois Dockes
285d422076 factored out the doc up to date check, plus use recollindex -e -i for updating 2014-05-01 08:06:08 +02:00
Jean-Francois Dockes
064d919f97 recollindex: allow passing -e -i for erasing index data before rebuilding 2014-05-01 08:04:44 +02:00
Jean-Francois Dockes
257b176e76 recollindex -i or -e: do not process the web queue 2014-04-30 11:12:08 +02:00
Jean-Francois Dockes
e385e4dcc3 add /media to the default skippedPaths list mostly as a reminder that blindly processing these with the general indexer is a bad idea (use separate indexes instead). 2014-04-30 10:50:58 +02:00
Jean-Francois Dockes
4ed65969f5 doc 2014-04-30 10:02:04 +02:00
Jean-Francois Dockes
af8e48e4ed command line query: add option -N to print field names between values when -F is used. Interpret [-F ""] as print all fields 2014-04-30 10:01:03 +02:00
Jean-Francois Dockes
4910d515e0 translate unicode hyphen (0x2010) in to ascii minus 2014-04-30 09:59:51 +02:00
Jean-Francois Dockes
22ad89b555 doc 2014-04-28 17:09:00 +02:00
Jean-Francois Dockes
4bb258caab manual: got rid of the sgml bits. Go XML ! 2014-04-28 08:55:13 +02:00
Jean-Francois Dockes
8766b4250c fix term byte offsets produced by new textsplit: for highlighting 2014-04-24 12:42:10 +02:00
Jean-Francois Dockes
3970aa2902 New text splitter with word accumulator and full partial span generation. Search/Index seem ok. Still a pb with use for highlighting (preview) 2014-04-24 10:13:19 +02:00
Jean-Francois Dockes
e17595162e doc 2014-04-24 10:10:53 +02:00
Jean-Francois Dockes
3d7a199894 fix command line version documentation 2014-04-08 08:58:29 +02:00
Jean-Francois Dockes
06467450a9 Release 1.19.12p2 tagged 2014-04-07 16:15:35 +02:00
Jean-Francois Dockes
3e49f135f7 none 2014-04-07 16:15:11 +02:00
Jean-Francois Dockes
c456750b1e doubleclick in restable opens document 2014-04-07 10:24:59 +02:00
Jean-Francois Dockes
5ba3f3844e Release 1.19.12p1 tagged 2014-04-06 06:59:46 +02:00
Jean-Francois Dockes
dc200edebf fix install script for the xls filter 2014-04-06 06:59:23 +02:00
Jean-Francois Dockes
5a171a6821 packaging 2014-04-02 15:34:14 +02:00
Jean-Francois Dockes
db55b5ba56 Release 1.19.12 tagged 2014-04-02 15:16:59 +02:00
Jean-Francois Dockes
b25d9aef60 1.19.12 2014-04-02 15:15:45 +02:00
Jean-Francois Dockes
3deca29657 obsoleted old debian directory 2014-04-02 15:11:40 +02:00
Jean-Francois Dockes
6c1c2bde17 release 3583 2014-04-02 15:08:54 +02:00
Jean-Francois Dockes
7cc942efd1 moved out the unity lens code 2014-04-02 15:06:36 +02:00
Jean-Francois Dockes
43bb925dcd Make unity-scope-recoll a separate project 2014-04-02 14:48:07 +02:00
Jean-Francois Dockes
e75d18a611 none 2014-04-02 14:39:58 +02:00
Jean-Francois Dockes
3824e4878e none 2014-04-02 09:42:48 +02:00
Jean-Francois Dockes
5515a4a145 unity scope: use directly nautilus instead of xdg-open for "show in directory" 2014-04-02 09:36:11 +02:00
Jean-Francois Dockes
7c4f77cc04 unity scope: compute url encoding locally instead of calling lib, for conformance with whats expected by the thumbnailing thingies 2014-04-01 16:12:54 +02:00
Jean-Francois Dockes
d6cf3a6a5f tests 2014-04-01 16:11:31 +02:00
Jean-Francois Dockes
5413b45b69 Fix a few bugs in the unity scope and try to improve icon generation. Thumbnails are broken because python and the desktop have different ideas about url encoding 2014-04-01 11:22:02 +02:00
Jean-Francois Dockes
51e8329684 small ubuntu packaging updates for trusty/1.19.11 2014-03-31 10:28:54 +02:00
Jean-Francois Dockes
88756755e3 add parameter to set max stored length of metadata fields. Previously fixed at 150. Fixes issue #178 2014-03-26 18:43:49 +01:00
Jean-Francois Dockes
df9c451cf1 comment 2014-03-26 18:02:59 +01:00
Jean-Francois Dockes
54b54344dc doc 2014-03-26 18:02:43 +01:00
Jean-Francois Dockes
54a689c6fc macports: no configure patch needed any more 2014-03-26 18:02:22 +01:00
Jean-Francois Dockes
b565477b33 updated to work with 1.19 2014-03-22 16:20:59 +01:00
Jean-Francois Dockes
95fd1abd25 doc 2014-03-10 10:35:39 +01:00
Jean-Francois Dockes
ff2f424dad perform tilde expansion for dir: clauses. Closes issue #177 2014-03-10 10:14:04 +01:00
Jean-Francois Dockes
18a636d85f doc 2014-03-10 10:13:23 +01:00
Jean-Francois Dockes
a4652a59e0 add .ogb->video/ogg 2014-03-10 10:13:11 +01:00
Jean-Francois Dockes
d84d475ec8 none 2014-03-10 10:12:46 +01:00
Jean-Francois Dockes
a61e3efe83 remove unused var 2014-03-10 10:12:13 +01:00
Jean-Francois Dockes
793fab65d2 pic for site 2014-03-10 10:11:12 +01:00
Jean-Francois Dockes
00843a1b51 properly expand tilde when creating temp dir 2014-02-27 13:25:46 +01:00
Jean-Francois Dockes
3f427f27ad adapted to work with recoll 2014-02-26 15:39:28 +01:00
Jean-Francois Dockes
1ec195b8d4 init from github/honza/mutt-notmuch-py 2014-02-26 15:13:54 +01:00
Jean-Francois Dockes
3d2cfa2710 Fix Python module python 2.6 build and function 2014-01-23 21:13:04 +01:00
Jean-Francois Dockes
49fbaf1a81 Replace catdoc with mso-dumper for XLS too 2014-01-09 17:44:05 +01:00
Jean-Francois Dockes
458e51efca debian/ubuntu packaging: update xapian deps 2014-01-09 14:14:50 +01:00
Jean-Francois Dockes
d32fc173b6 doc 2014-01-07 17:28:54 +01:00
Jean-Francois Dockes
2dcacd8970 python searchdata sample 2013-12-11 14:23:29 +01:00
Jean-Francois Dockes
7bfdac94fd Release 1.19.11p1 tagged 2013-11-27 07:39:25 +01:00
Jean-Francois Dockes
ec934a78dd fix needs 1.19.11 needs autoconf to build 2013-11-27 07:39:02 +01:00
Jean-Francois Dockes
c567d85bf1 Release 1.19.11 tagged 2013-11-26 11:03:29 +01:00
Jean-Francois Dockes
b04f507dfb Install script did not copy the ppt extraction python script 2013-11-26 11:03:08 +01:00
Jean-Francois Dockes
b702b144b2 doc 2013-11-26 09:29:28 +01:00
Jean-Francois Dockes
5986ed13cb Doc. Commit history note for my future understanding: the 19_MAINT branch
was abandonned at this point.  There is not enough new development in trunk
to justify version 1.20, and what there is has seen quite a lot of test
(mostly the code refactoring necessitated by the optional "update only ext
attr metadata" feature). OTOH the python3 code needs to come out to support
the new Unity scope, and I was too lazy to merge it the 19 branch (also a
bit too much mod for a "maintenance" branch). So what would have been
1.20.0 comes out as 1.19.10, on the trunk.
2013-11-26 08:15:07 +01:00
Jean-Francois Dockes
d8f4ca8d5a Release 1.19.10 tagged 2013-11-25 19:28:51 +01:00
Jean-Francois Dockes
0e43fea6be more packaging touchups 2013-11-25 19:27:54 +01:00
Jean-Francois Dockes
7b5af16ece none 2013-11-25 17:45:12 +01:00
Jean-Francois Dockes
75e0c40f8e debian packaging changes: separate python-recoll package and build python3-recoll 2013-11-25 17:44:22 +01:00
Jean-Francois Dockes
87e89879c5 small build fixes 2013-11-25 16:04:56 +01:00
Jean-Francois Dockes
4599d11831 manifest 2013-11-23 16:10:08 +01:00
Jean-Francois Dockes
a59b3bdc8c release 1.19.10 2013-11-23 16:08:42 +01:00
Jean-Francois Dockes
486cd5ac0b homebrew->1.19.9 2013-11-21 13:27:00 +00:00
Jean-Francois Dockes
0bf62e1a85 PPT filter: fix infinite loop in script (happened on invalid files) 2013-11-21 12:59:13 +01:00
Jean-Francois Dockes
8082d7558a Unity Scope: allow adjusting the max results count using the unityscopemaxresults config variable 2013-11-20 08:45:51 +01:00
Jean-Francois Dockes
e9cb6ac9fe doc 2013-11-19 14:57:38 +01:00
Jean-Francois Dockes
d2e7b5e24c PPT filter: use mso-dump 2013-11-19 14:42:59 +01:00
Jean-Francois Dockes
44995858f5 PPT filter: use mso-dump 2013-11-19 14:42:05 +01:00
Jean-Francois Dockes
2f73e1df75 greek messages 2013-11-19 14:41:41 +01:00
Jean-Francois Dockes
0dee803983 comments 2013-11-19 14:41:14 +01:00
Jean-Francois Dockes
5cc5d6ef52 kio: delete librecoll.so to force a static link 2013-11-19 09:35:42 +01:00
Jean-Francois Dockes
d80bac1f47 none 2013-11-19 09:19:55 +01:00
Jean-Francois Dockes
7341b1d2e8 message 2013-11-18 09:03:32 +01:00
Jean-Francois Dockes
f550568b79 new version from Dimitrios 2013-11-17 21:36:56 +01:00
Jean-Francois Dockes
1c5128fe97 rclppt: fix absolute paths 2013-11-14 19:20:36 +01:00
Jean-Francois Dockes
f8e23f5a90 ppt filter: support unoconv 0.4 by using directory as parameter to -o 2013-11-14 19:09:47 +01:00
Jean-Francois Dockes
f092ad0a49 python rclconfig: do not generate exception for missing file 2013-11-12 14:40:24 +01:00
Jean-Francois Dockes
6314bc8b8a powerpoint: decide to use unoconv based on the number of lines in catppt output 2013-11-12 10:40:07 +01:00
Jean-Francois Dockes
7e73276568 Powerpoint docs: add option to have rclppt use unoconv 2013-11-12 09:56:50 +01:00
Jean-Francois Dockes
f9f590c079 ubuntu packaging changes 2013-11-11 10:53:27 +01:00
Jean-Francois Dockes
a40b4398b7 Release 1.20.0 tagged 2013-11-11 08:04:19 +01:00
Jean-Francois Dockes
690f9e24c9 Removed tag RECOLL_1_20_0 2013-11-11 08:04:06 +01:00
Jean-Francois Dockes
053dd0bf54 none 2013-11-11 08:03:06 +01:00
Jean-Francois Dockes
da110e18d4 Release 1.20.0 tagged 2013-11-11 08:01:52 +01:00
Jean-Francois Dockes
abc7633a26 none 2013-11-11 07:49:18 +01:00
Jean-Francois Dockes
0143fdd7cc unity scope: need to use same cats as top files scope 2013-11-11 07:48:33 +01:00
Jean-Francois Dockes
3758f5eb36 mac homebrew trailing whitespace in formula 2013-11-10 19:19:22 +01:00
Jean-Francois Dockes
c80422a8e5 none 2013-11-10 18:46:00 +01:00
Jean-Francois Dockes
d988566bfc none 2013-11-10 18:45:11 +01:00
Jean-Francois Dockes
e1ff2db697 merged saucy file 2013-11-10 18:44:17 +01:00
Jean-Francois Dockes
828541a2c3 unity scope packaging 2013-11-10 18:22:18 +01:00
Jean-Francois Dockes
f95eb7c293 unity recoll smart scope sort of working 2013-11-10 17:10:09 +01:00
Jean-Francois Dockes
d60c534cc9 build both python and python3 recoll modules 2013-11-09 18:06:34 +01:00
Jean-Francois Dockes
4bf95a68e5 release 1.20.0 2013-11-09 14:40:06 +01:00
Jean-Francois Dockes
ceb2c086f4 Gui adv. search: when toggling from prox to phrase, slack stayed at 10 2013-11-09 11:37:05 +01:00
Jean-Francois Dockes
53845645fb GUI multiple clicks crash: make sure the GUI cant reenter the db 2013-11-09 11:22:08 +01:00
Jean-Francois Dockes
34d12cc212 python: makedocabstract failure should not cause exception 2013-11-07 18:24:57 +01:00
Jean-Francois Dockes
9c66d39e33 query: fix bug with computation of date query: periods including the first days of the current months were calculated wrongly 2013-11-07 18:13:11 +01:00
Jean-Francois Dockes
7b378185f7 unity scope: worked on filters. Not much joy 2013-11-07 16:24:28 +01:00
Jean-Francois Dockes
fa2455a01a unity scope: scope is called and returns results. 2013-11-07 15:04:49 +01:00
Jean-Francois Dockes
46f1dd1f4b backslashes in abstract could fudge the format of the db data record... 2013-11-07 15:00:43 +01:00
Jean-Francois Dockes
66e6c6d39a sort of works except for filters 2013-11-07 14:22:39 +01:00
Jean-Francois Dockes
90723d03e4 unity smart scope begins to work standalone 2013-11-07 12:32:24 +01:00
Jean-Francois Dockes
0509a79df5 recoll scope checkpoint 2013-11-07 10:57:57 +01:00
Jean-Francois Dockes
05bbecd7b5 none 2013-11-06 20:07:18 +01:00
Jean-Francois Dockes
67a7f1cad9 add a few audio mime types 2013-11-06 20:05:14 +01:00
Jean-Francois Dockes
cd1bf1adad compile: dont set -g -O2 by default, leave it to the envir 2013-11-06 20:04:49 +01:00
Jean-Francois Dockes
eec0ac92f3 doc 2013-11-06 20:04:18 +01:00
Jean-Francois Dockes
6bc2b3fcce Recoll Lens becomes a Scope for Ubuntu 13.10 2013-11-06 20:03:55 +01:00
Jean-Francois Dockes
59bebae0dd fixed config version 2013-11-06 18:05:20 +01:00
Jean-Francois Dockes
eec468a027 tests: avoid breaking old html text with data for python 2013-10-30 18:37:26 +01:00
Jean-Francois Dockes
36f6e31030 python api tests: added rclextract test 2013-10-30 18:28:36 +01:00
Jean-Francois Dockes
825e0c74fd python module: return bytes not bytearray in binurl as python file open takes a bytes object. Fix misc small problems seen while implementing tests 2013-10-30 16:57:39 +01:00
Jean-Francois Dockes
ab3f947ab2 added python api tests 2013-10-30 16:56:18 +01:00
Jean-Francois Dockes
472afce18f Python module: python3 compatibility 2013-10-30 10:38:02 +01:00
Jean-Francois Dockes
6b49c23aa8 Build: ensure that we do not try to build the dynamic lib after compiling non-pic objects. Remove configure from source control 2013-10-30 08:38:14 +01:00
Jean-Francois Dockes
70d26c551f Build: ensure that we do not try to build the dynamic lib after compiling non-pic objects. Remove configure from source control 2013-10-30 08:24:41 +01:00
Jean-Francois Dockes
a6320c1bfb Build: ensure that we do not try to build the dynamic lib after compiling non-pic objects. Remove configure from source control 2013-10-30 08:23:58 +01:00
Jean-Francois Dockes
5fd8d89bed Build: ensure that we do not try to build the dynamic lib after compiling non-pic objects. Remove configure from source control 2013-10-30 08:23:44 +01:00
Jean-Francois Dockes
e2b5c84dbc merged freebsd changes 2013-10-29 14:30:37 +01:00
Jean-Francois Dockes
1f8337ce51 Fixed a number of issues put into light by clang on FreeBSD 10 2013-10-29 15:01:59 +01:00
Jean-Francois Dockes
3a7a2b6f2b mimeconf: opendoc templates 2013-10-29 14:24:01 +01:00
Jean-Francois Dockes
2af3c756af python: heed conftop/confmid in rclconfig.py 2013-10-29 14:23:02 +01:00
Jean-Francois Dockes
ba7f6736cb doc 2013-10-29 14:22:23 +01:00
Jean-Francois Dockes
48754a799f python: highlighter would produce wrong end of span tag when user methods were not set 2013-10-29 09:13:49 +01:00
Jean-Francois Dockes
90cd19bdf4 fix multiple typos in commit 25c58c7/8ce2914 2013-10-29 08:36:14 +01:00
medoc
358bd69386 Dont strip diacritics from Hindi Devanagari characters, they are determinant to word meaning 2013-10-26 18:56:51 +02:00
medoc
142c3be8de Dont strip diacritics from Hindi Devanagari characters, they are determinant to word meaning 2013-10-26 18:56:25 +02:00
medoc
97f9089709 make modern automake happy 2013-10-26 18:54:54 +02:00
medoc
0b08d23fbe INCLUDES->AM_CPPFLAGS 2013-10-26 18:52:19 +02:00
medoc
5940bc56e3 INCLUDES->AM_CPPFLAGS 2013-10-26 18:52:01 +02:00
medoc
e59fadd4d4 GUI: restable: the dups and snippets links did not work 2013-10-21 19:41:01 +02:00
medoc
406c83d23d doc 2013-10-21 19:39:40 +02:00
medoc
d140462500 macports updates 2013-10-21 19:39:23 +02:00
medoc
9cf4a6e258 look for the expedited indexing request file in all possible user configuration directories 2013-10-21 08:47:42 +02:00
Jean-Francois Dockes
4d3685a21f Deal with tr1 being gone in c0x11 compilers 2013-10-18 13:02:48 +02:00
Jean-Francois Dockes
b3b34748cf devanagari punctuation 2013-10-18 13:06:17 +02:00
Jean-Francois Dockes
cc2e0ce736 stringToTokens bug with skipinit 0 (never used) 2013-10-18 13:05:53 +02:00
Jean-Francois Dockes
79d8b0676a homebrew 2013-10-14 16:16:20 +02:00
Jean-Francois Dockes
5f5106571d autoconfig out things that dont work currently on mac os x 2013-10-08 14:03:23 +02:00
Jean-Francois Dockes
9f8b6fd347 autoconfig out things that dont work currently on mac os x 2013-10-08 13:46:16 +02:00
Jean-Francois Dockes
c1808aa5a7 homebrew formula for recoll 2013-10-08 11:58:08 +02:00
Jean-Francois Dockes
ba18d452fa comment 2013-10-08 10:29:22 +02:00
Jean-Francois Dockes
84076f0691 replace deprecated qt action::activated() with action::triggered() 2013-10-07 20:23:43 +02:00
Jean-Francois Dockes
8305bb37c0 doc 2013-10-07 12:03:54 +02:00
Jean-Francois Dockes
2d7797cb0a Handle partial indexing of document restricted to metadata from extended attributes 2013-10-04 10:57:11 +02:00
Jean-Francois Dockes
02e466d46f Code for reaping xattrs and cmd metadata did not need to be implemented as internfile members and can be used in other contexts 2013-10-03 09:38:55 +02:00
Jean-Francois Dockes
7366ab158e Code for reaping xattrs and cmd metadata did not need to be implemented as internfile members and can be used in other contexts 2013-10-03 09:38:35 +02:00
Jean-Francois Dockes
cb6909d554 doc 2013-10-02 10:20:19 +02:00
Jean-Francois Dockes
9cf25a4994 allow disabling the modif accumulation wait by creating a magic file 2013-09-30 18:43:15 +02:00
Jean-Francois Dockes
e738c96d21 portability to debian kfreebsd 2013-09-30 08:53:15 +02:00
Jean-Francois Dockes
3eae448186 comments 2013-09-29 18:29:53 +02:00
Jean-Francois Dockes
5c9123ef30 add Keywords entry to make lintian happy 2013-09-29 18:26:37 +02:00
Jean-Francois Dockes
27b32a0723 fix hyphen-used-as-minus-sign lintian warning 2013-09-29 18:26:13 +02:00
Jean-Francois Dockes
b74d574076 doc 2013-09-28 09:44:10 +02:00
Jean-Francois Dockes
223a80ccd6 doc 2013-09-28 09:14:52 +02:00
Jean-Francois Dockes
71112fcea5 allow RECOLL_CONFTOP and RECOLL_CONFMID configuration variables to augment the confdir stack 2013-09-27 13:05:03 +02:00
Jean-Francois Dockes
c1b087a288 message 2013-09-27 13:04:23 +02:00
Jean-Francois Dockes
19175841da fix metadatacmds multifield modif, didnt set anything at all... 2013-09-27 13:04:05 +02:00
Jean-Francois Dockes
f978c9e955 allow multiple field output from metadatacmds entry beginning with rclmulti. Add noxattrfields config variable to allow disabling extended attributes usage 2013-09-27 12:07:32 +02:00
Jean-Francois Dockes
3e9a464658 doc 2013-09-27 10:42:22 +02:00
Jean-Francois Dockes
57684643a6 clang 2013-09-26 17:36:39 +02:00
Jean-Francois Dockes
5ff5c28d4c fix clang++ warning 2013-09-26 17:26:58 +02:00
Jean-Francois Dockes
7db570a982 fix clang++ warning 2013-09-26 17:26:03 +02:00
Jean-Francois Dockes
f8803dda49 get rid of the OFFTPC nonsense and cast to long long use lld to print off_t 2013-09-26 14:35:50 +02:00
Jean-Francois Dockes
0eeb8f7366 make clang happy 2013-09-26 14:34:59 +02:00
Jean-Francois Dockes
979f246886 none 2013-09-26 14:34:19 +02:00
Jean-Francois Dockes
27fc8575b6 added termMatch method to the Python API 2013-09-16 19:05:11 +02:00
Jean-Francois Dockes
f3c5179bc0 comments 2013-09-14 15:19:56 +02:00
Jean-Francois Dockes
3af974bb9a indicate that the PPA recoll package conflicts with the debian python-recoll package 2013-09-10 15:42:16 +02:00
medoc
70179d5189 move the execution of external metadata-gathering commands from fsindexer to internfile for consistency of handling with filter-generated metadata 2013-09-06 11:51:00 +02:00
medoc
b2a485b95a doc 2013-09-06 09:00:40 +02:00
medoc
cf130485ba fix buffer overflow in test driver 2013-08-28 22:12:30 +02:00
medoc
2c5ee53797 flush the update queue before set_metadata 2013-08-28 11:10:40 +02:00
Jean-Francois Dockes
ea65cfc438 .hxx -> text/x-c 2013-08-11 20:55:52 +02:00
Jean-Francois Dockes
a99ee9d40f doc 2013-08-11 20:54:50 +02:00
medoc
c75223d026 new German translation 2013-07-17 14:10:31 +02:00
medoc
642f32d4a7 doc 2013-07-16 09:59:21 +02:00
medoc
256830f298 trace 2013-07-16 09:59:16 +02:00
medoc
a9959ef1e7 get recoll non-gui parts to build under cygwin 2013-07-15 22:35:04 +02:00
Jean-Francois Dockes
a41a72560b doc 2013-07-09 15:53:29 +02:00
Jean-Francois Dockes
e2f8db63cf packaging 2013-06-19 05:18:42 +02:00
Jean-Francois Dockes
fa146a202f doc 2013-06-18 15:24:02 +02:00
Jean-Francois Dockes
10ac4b789a Release 1.19.5 tagged 2013-06-18 14:38:49 +02:00
Jean-Francois Dockes
78637fd8e7 Removed tag RECOLL_1_19_5 2013-06-18 14:38:34 +02:00
Jean-Francois Dockes
5bd16e37d8 let the user override the message about mbox index not up to date 2013-06-18 12:12:17 +02:00
Jean-Francois Dockes
214a06bc5b Release 1.19.5 tagged 2013-06-18 07:56:10 +02:00
Jean-Francois Dockes
80a47f8153 Removed tag RECOLL_1_19_5 2013-06-18 07:55:49 +02:00
Jean-Francois Dockes
d1b087545c new czech translation 2013-06-18 07:54:53 +02:00
Jean-Francois Dockes
0f3a105418 Release 1.19.5 tagged 2013-06-17 13:34:26 +02:00
Jean-Francois Dockes
24f8164f13 none 2013-06-17 13:33:26 +02:00
Jean-Francois Dockes
096885ccee release 3384 2013-06-17 13:32:18 +02:00
Jean-Francois Dockes
b4c7da2cbd install rclconfig.py to the filters dir + VERSION 1.19.5 2013-06-17 12:42:40 +02:00
Jean-Francois Dockes
0e32ada873 doc 2013-06-17 11:56:56 +02:00
Jean-Francois Dockes
3db85ab1b5 Ignore empty mime_type extended attribute returned by bug in CIFS linux kernel module (samba mounts) 2013-06-17 11:52:04 +02:00
Jean-Francois Dockes
2b5d894b4b have the zip filter access the config if possible and use the zipSkippedNames variable 2013-06-10 14:03:24 +02:00
Jean-Francois Dockes
285915a8e9 test driver: no data output by default 2013-06-10 14:01:03 +02:00
Jean-Francois Dockes
3e89df81cb need to build rclconfig as a confstack of conftrees 2013-06-10 14:00:33 +02:00
Jean-Francois Dockes
7cf0c9c709 hack the lens package to use a local rclconfig.py until the updated python package is released 2013-06-09 11:52:47 +02:00
Jean-Francois Dockes
0e4e4c9ce3 look for rclconfig inside the recoll package 2013-06-09 11:35:40 +02:00
Jean-Francois Dockes
7ec4b3bf00 add configuration access module to the recoll python package. Allows external index info access for the Unity Lens 2013-06-09 11:18:48 +02:00
Jean-Francois Dockes
eea3ffc03a use the rclconfig module if it is installed to find out and setup the external indexes according to current configuration 2013-06-09 11:14:52 +02:00
Jean-Francois Dockes
ee38ac72d7 doc 2013-06-09 10:33:54 +02:00
Jean-Francois Dockes
b844b1d701 comments 2013-06-09 10:33:12 +02:00
Jean-Francois Dockes
7b1a77fea5 avoid spurious warning popups about stemming languages when index does not exist 2013-06-08 09:42:23 +02:00
Jean-Francois Dockes
588d971f30 Release 1.19.4 tagged 2013-06-07 08:37:21 +02:00
Jean-Francois Dockes
566154469b doc 2013-06-07 08:37:05 +02:00
Jean-Francois Dockes
af209f4d0e Removed tag RECOLL_1_19_4 2013-06-07 08:36:06 +02:00
Jean-Francois Dockes
dbdfe3122f dont show snippets link in history links (makes no sense as there are no query terms...) 2013-06-07 08:29:19 +02:00
Jean-Francois Dockes
055a749e5b Release 1.19.4 tagged 2013-06-06 14:07:05 +02:00
Jean-Francois Dockes
e05f754f39 1.19.4 2013-06-06 14:06:45 +02:00
Jean-Francois Dockes
3109e6069c release 3364 2013-06-06 14:06:32 +02:00
Jean-Francois Dockes
67e5c631c8 Store original working directory before changing, for later turning user args into absolute paths 2013-06-06 14:05:26 +02:00
Jean-Francois Dockes
5a4e10780a export RECOLL_CONFDIR to filters 2013-06-06 13:39:48 +02:00
Jean-Francois Dockes
c21490d0e5 doc 2013-06-06 13:26:34 +02:00
Jean-Francois Dockes
5872f01ef1 updated translations 2013-06-06 13:26:13 +02:00
Jean-Francois Dockes
98bea3fbd9 convert 8 bit strings to unicode before running the query 2013-06-06 13:24:35 +02:00
Jean-Francois Dockes
8dd3219237 typo in non-linux code 2013-05-29 08:33:09 +02:00
Jean-Francois Dockes
c965fb661a new german translation 2013-05-29 08:30:24 +02:00
Jean-Francois Dockes
8a9b803c6b the way we added the autophrase to the query (OR) created false matches. Use AND_MAYBE instead 2013-05-26 15:26:41 +02:00
Jean-Francois Dockes
2ed0fa0734 missing return statement... 2013-05-26 15:25:16 +02:00
Jean-Francois Dockes
13d716eb0f disable completion in preview search entry, it's not helpful because of the root entries in the preloaded combobox 2013-05-26 15:24:29 +02:00
Jean-Francois Dockes
fe7815955d Fix problems which occurred when using functions like open-parents with multiple indexes containing identical paths (udis) 2013-05-25 11:26:57 +02:00
Jean-Francois Dockes
e85c2c81f0 check the apptag flag before special-casing html document open 2013-05-24 13:54:41 +02:00
Jean-Francois Dockes
ee8cdda97e none 2013-05-24 13:39:13 +02:00
Jean-Francois Dockes
3e0d96fee3 1.19.3 2013-05-23 10:03:28 +02:00
Jean-Francois Dockes
e2fd2ab681 doc 2013-05-23 09:58:32 +02:00
Jean-Francois Dockes
1e2aa8c1f3 Release 1.19.3 tagged 2013-05-23 09:54:23 +02:00
Jean-Francois Dockes
4fb7ab8f2c 1.19.3 2013-05-23 09:54:10 +02:00
Jean-Francois Dockes
ff42c53ac5 release 3346 2013-05-23 09:53:50 +02:00
Jean-Francois Dockes
d50971743f doc 2013-05-23 09:53:28 +02:00
Jean-Francois Dockes
2a6a1e776f sometimes inserted garbage in term->uterm map 2013-05-23 09:47:05 +02:00
Jean-Francois Dockes
e4ef224b5c messages 2013-05-23 09:46:11 +02:00
Jean-Francois Dockes
f398e118ee clarified the dialog used to choose viewer apps 2013-05-23 07:56:27 +02:00
Jean-Francois Dockes
49d058bb3d make 1st tab default 2013-05-22 18:56:39 +02:00
Jean-Francois Dockes
b20ff6a526 make search line completion case-sensitive. Removes an extremely ennoying behaviour which made it difficult to retry a search with different capitalization 2013-05-22 14:14:25 +02:00
Jean-Francois Dockes
f6d413cc74 revert to line-wrapping snippet window entries like 1.18 2013-05-22 13:45:06 +02:00
Jean-Francois Dockes
8c5eece7fb always set the "haspages" flags when reading doc from index so that the Snippets link can be set even if no abstract is computed 2013-05-22 13:24:31 +02:00
Jean-Francois Dockes
6efeec9d9e arrange so that shift-ctrl-s selects search text if focus already in search entry 2013-05-22 12:55:09 +02:00
Jean-Francois Dockes
2bfad4d976 doc: qtzeitgeist->qzeitgeist 2013-05-22 12:53:18 +02:00
Jean-Francois Dockes
5a7b68c3cc Restore "Open Parent" popup menu entry. Useful to open the enclosing folder. Closes issue #141 2013-05-21 18:34:10 +02:00
Jean-Francois Dockes
8741af154e new translations 2013-05-20 16:40:23 +02:00
Jean-Francois Dockes
3daea14025 doc 2013-05-17 17:05:31 +02:00
Jean-Francois Dockes
6c716640e1 doc 2013-05-17 16:51:30 +02:00
Jean-Francois Dockes
4807961070 none 2013-05-14 10:23:20 +02:00
Jean-Francois Dockes
e6b491369e doc 2013-05-14 10:23:09 +02:00
Jean-Francois Dockes
7b50026558 none 2013-05-14 10:21:58 +02:00
Jean-Francois Dockes
57066287c7 debian build fixes 2013-05-14 10:21:13 +02:00
Jean-Francois Dockes
497dcec1c4 Release 1.19.2 tagged 2013-05-14 08:16:05 +02:00
Jean-Francois Dockes
ad625b6754 1.19.2 hopeful 2013-05-14 08:15:46 +02:00
Jean-Francois Dockes
738d5af3e8 fixed bug in path translation feature + confusing messages about reindexing missing files 2013-05-14 08:12:33 +02:00
Jean-Francois Dockes
9048151075 doc 2013-05-13 19:05:26 +02:00
Jean-Francois Dockes
31fb484952 doc 2013-05-13 15:52:42 +02:00
Jean-Francois Dockes
11c9e9f984 kio_recoll:use the static lib 2013-05-13 15:00:54 +02:00
Jean-Francois Dockes
6fd2eefe3e fix rpath for the kioslave 2013-05-13 11:34:00 +02:00
Jean-Francois Dockes
ef40d488af doc 2013-05-13 10:50:06 +02:00
Jean-Francois Dockes
e63020054b Release 1.19.1 tagged 2013-05-12 22:36:33 +02:00
Jean-Francois Dockes
d2b11eb705 1.19.1? 2013-05-12 22:36:18 +02:00
Jean-Francois Dockes
a0e002b1e1 Using a file name clause in advanced search crashed the GUI because of a bad dynamic cast in the history management code 2013-05-12 22:33:37 +02:00
Jean-Francois Dockes
bddc44f427 doc 2013-05-12 11:20:18 +02:00
Jean-Francois Dockes
266a4d582d doc 2013-05-12 11:19:31 +02:00
Jean-Francois Dockes
4d185887c7 Release 1.19.0 tagged 2013-05-12 10:33:05 +02:00
Jean-Francois Dockes
d533e5a484 none 2013-05-12 10:32:51 +02:00
Jean-Francois Dockes
d6ce73d111 Removed tag RECOLL_1_19_0 2013-05-12 10:32:42 +02:00
Jean-Francois Dockes
6d2c9759bd Release 1.19.0 tagged 2013-05-12 10:32:01 +02:00
Jean-Francois Dockes
717406f33c release 1.19.0 2013-05-12 10:32:00 +02:00
Jean-Francois Dockes
b90065a94e doc 2013-05-12 10:23:14 +02:00
Jean-Francois Dockes
53fb4dec63 fixed --disable-webkit 2013-05-12 10:07:04 +02:00
Jean-Francois Dockes
407130936d doc 2013-04-30 19:36:48 +02:00
Jean-Francois Dockes
452c8761ea none 2013-04-30 11:36:20 +02:00
Jean-Francois Dockes
652904013f 1.19 ubuntu packaging fixups 2013-04-30 11:34:47 +02:00
Jean-Francois Dockes
dc50394087 release 3304 2013-04-30 09:51:01 +02:00
Jean-Francois Dockes
f287a46913 doc and messages 2013-04-30 09:50:26 +02:00
Jean-Francois Dockes
000a79141d doc 2013-04-30 08:25:54 +02:00
Jean-Francois Dockes
736d4a7b9c pre1.19 3301 2013-04-29 16:12:16 +02:00
Jean-Francois Dockes
41dbcf05d9 release 3300 2013-04-29 16:05:25 +02:00
Jean-Francois Dockes
9d1ad7271e GUI: filter area QGroupBox -> QFrame, saves space 2013-04-29 15:49:35 +02:00
Jean-Francois Dockes
be65a3dda5 check the stripchars options when adding an external index 2013-04-29 15:34:17 +02:00
Jean-Francois Dockes
e8c737a17c spell suggestions after adv search should not be links to start simple search 2013-04-29 12:52:46 +02:00
Jean-Francois Dockes
60e8ce141c added recursive reindex option to recollindex command line 2013-04-29 08:50:54 +02:00
Jean-Francois Dockes
382963ee45 none 2013-04-29 08:13:51 +02:00
Jean-Francois Dockes
0d875f54f2 fix minor issues in multisave and popup menus 2013-04-28 16:58:05 +02:00
Jean-Francois Dockes
c381b2776b added function to save multiple result selection in restable into files 2013-04-28 09:48:40 +02:00
Jean-Francois Dockes
a71de8895f use content_type "name" attribute as attachment file name if there is no content_disposition "filename" attribute 2013-04-28 09:41:03 +02:00
Jean-Francois Dockes
675d2e586d use restable instead of reslist for "show subdocs" 2013-04-27 16:08:22 +02:00
Jean-Francois Dockes
3def1e444c factorized GUI result popup menu code 2013-04-27 11:11:35 +02:00
Jean-Francois Dockes
974541f6c1 Added (unifdefd) code to detect garbage data like undecoded base64 by looking at word length stats 2013-04-27 08:29:55 +02:00
Jean-Francois Dockes
a6ee6a45cd ff ligature 2013-04-26 15:28:16 +02:00
Jean-Francois Dockes
515c086d10 changed the mime handler cache key (was the mime type), to avoid having multiple copies of the same filter when applied to different mime types. This reduces a lot the number of processes during indexing, with no impact on performance 2013-04-25 18:18:48 +02:00
Jean-Francois Dockes
1ca3d028e6 fixed a few connections in subdocs aux reslist 2013-04-25 14:21:24 +02:00
Jean-Francois Dockes
cdbf8e6cd3 roughly auto-config threads depending on cpu count 2013-04-25 09:00:50 +02:00
Jean-Francois Dockes
55361a1b55 Add possibility to display a list of sub-documents for a given result 2013-04-24 16:33:53 +02:00
Jean-Francois Dockes
7446823cec restore mail Open 2013-04-24 08:57:00 +02:00
Jean-Francois Dockes
fc7281eee9 none 2013-04-24 08:32:14 +02:00
Jean-Francois Dockes
3779a99480 code moved around for clarity, no real changes 2013-04-23 15:59:06 +02:00
Jean-Francois Dockes
b56f63b6a0 moved code around 2013-04-22 17:30:11 +02:00
Jean-Francois Dockes
4d6cdc7e61 added code to purge obsolete messages when a compound document (esp. mbox) is shortened and a partial update is performed (no general purge). Else the orphan docs remained in the index potentially forever (needed actual reindex of the file by a full pass to go away) 2013-04-22 11:32:49 +02:00
Jean-Francois Dockes
39e2db774a be consistent in adding sig in value and doc record 2013-04-21 17:45:00 +02:00
Jean-Francois Dockes
fe085ae837 disable the "Open" button for emails, never works anyway 2013-04-21 17:44:08 +02:00
Jean-Francois Dockes
8be16bb56d adjust message about re-indexing out of date doc for the case where the real-time indexer is running 2013-04-21 17:43:42 +02:00
Jean-Francois Dockes
b76f02ef49 none 2013-04-18 19:10:28 +02:00
Jean-Francois Dockes
e67e1a7f6d 1.18.2 ubuntu packaging 2013-04-18 19:09:34 +02:00
Jean-Francois Dockes
7e3b1f8059 removed debian qt3 packaging files 2013-04-18 18:32:53 +02:00
Jean-Francois Dockes
b792cf045f arrange so that a default first indexing run for a given user runs a quick shallow pass, so that queries return some results quickly after indexing starts, avoiding user frustration 2013-04-18 14:29:32 +02:00
Jean-Francois Dockes
a65b9e99c4 removed the "use file command" option from the GUI index config tool, as you would very seldom want to turn this off and users make mistakes. Still available by editing the config file 2013-04-18 11:11:20 +02:00
Jean-Francois Dockes
a2fa6a433f added option for external CSS style sheet for Snippets window 2013-04-18 10:15:25 +02:00
Jean-Francois Dockes
bb3e25d925 doc 2013-04-18 09:25:12 +02:00
Jean-Francois Dockes
72cfe268ad Add support for indexing symlinks as such. Use inode/directory instead of application/x-fsdirectory as directory mime type. Fix stat/lstat usage in places (wipedir) 2013-04-17 18:34:02 +02:00
Jean-Francois Dockes
5285711417 more tweaking for video config 2013-04-17 10:13:32 +02:00
Jean-Francois Dockes
43e8466728 dont de-dup empty docs 2013-04-17 09:57:57 +02:00
Jean-Francois Dockes
a2f4bc9cf5 add functions and interface to display the duplicates of a result document 2013-04-17 09:36:46 +02:00
Jean-Francois Dockes
c4656c1d10 fix links 2013-04-17 08:42:21 +02:00
Jean-Francois Dockes
a476146ef0 none 2013-04-17 07:53:21 +02:00
Jean-Francois Dockes
a8a9f902e9 use add_boolean_term instead of add_term where it makes sense 2013-04-16 16:01:06 +02:00
Jean-Francois Dockes
c7d9d524f9 add terms for doc md5s 2013-04-16 15:56:49 +02:00
Jean-Francois Dockes
9db6529a6f doc 2013-04-16 15:56:07 +02:00
Jean-Francois Dockes
b85dd0b5d1 comment 2013-04-16 15:55:47 +02:00
Jean-Francois Dockes
d296296003 use the xml doc tools 2013-04-16 15:55:31 +02:00
Jean-Francois Dockes
50c4383103 comments 2013-04-16 15:54:54 +02:00
Jean-Francois Dockes
17c6f5a3c5 doc 2013-04-14 14:35:03 +02:00
Jean-Francois Dockes
1554573a18 remove relevance percent from default reslist par format. Dont save format if default 2013-04-14 09:29:12 +02:00
Jean-Francois Dockes
ec99c6bf51 make sure that expansions of * done to retrieve all years or all mime types from index are done against the appropriate field section of the main index, not the whole synexpand one 2013-04-13 16:34:09 +02:00
Jean-Francois Dockes
b8778f655e doc 2013-04-13 16:33:15 +02:00
Jean-Francois Dockes
c0dc0b02d7 add icons for video files 2013-04-13 15:42:41 +02:00
Jean-Francois Dockes
a653512fee Properly update the web cache when the user increases the size limit 2013-04-12 17:16:22 +02:00
Jean-Francois Dockes
b53d12008a internfile: do not compute md5 when in preview mode 2013-04-09 12:40:46 +02:00
Jean-Francois Dockes
532ed64f3b replace atol with atoll to fix result size display bug. Also use atoll for time conversions, 2032 is coming... 2013-04-04 20:01:31 +02:00
Jean-Francois Dockes
253efc54c6 ignore ms project and visio files cause we dont know what to do with them 2013-04-04 19:52:42 +02:00
Jean-Francois Dockes
ad585c00b2 updated message files 2013-04-03 20:02:35 +02:00
Jean-Francois Dockes
64c2794a74 doc 2013-04-01 18:40:42 +02:00
Jean-Francois Dockes
5850f697e5 avoid re-running a setQuery that already failed 2013-04-01 16:20:06 +02:00
Jean-Francois Dockes
dd42a9f51e allow wild chars in dir clauses 2013-04-01 16:01:21 +02:00
Jean-Francois Dockes
1574eb459b use st_ctime always to detect file changes 2013-03-31 08:36:11 +02:00
Jean-Francois Dockes
ed91113eab use dblatex for producing the PDF doc. We could now go full XML 2013-03-30 17:14:40 +01:00
Jean-Francois Dockes
fc848f48ff Handle wildcards as normal chars everywhere when splitting for query 2013-03-30 12:49:31 +01:00
Jean-Francois Dockes
5341b5575b more utf-8 err checking prevents bogus terms in index 2013-03-30 10:24:10 +01:00
Jean-Francois Dockes
1bdf2b67e5 extract more svg metadata 2013-03-28 08:49:40 +01:00
Jean-Francois Dockes
09c6ae2d60 got rid of STRIPCHARS compile-time variable to make the code more readable, and corresponding configure option. + make sure that CONFDIR from environment gets translated to absolute path 2013-03-27 17:38:11 +01:00
Jean-Francois Dockes
b3c602db73 more small fnmatch() fixes 2013-03-27 16:56:54 +01:00
Jean-Francois Dockes
60b9845b83 fnmatch() errors encountered with charset conversion errors on file names were treated as matches 2013-03-27 15:44:24 +01:00
Jean-Francois Dockes
e7eafe4ab4 doc 2013-03-27 15:33:52 +01:00
Jean-Francois Dockes
c6edb81531 doc 2013-03-26 19:32:43 +01:00
Jean-Francois Dockes
96a3a749f0 added GUI interface to edit the path translations 2013-03-26 18:49:59 +01:00
Jean-Francois Dockes
9627f84e3c added basic facility for result path translation 2013-03-26 10:42:46 +01:00
Jean-Francois Dockes
dcbdf6c8fb changed the message about missing helpers to make it clear that the data is only updated by indexing 2013-03-26 09:13:40 +01:00
Jean-Francois Dockes
afeaad86f3 reopen log file on SIGHUP 2013-03-22 11:19:33 +01:00
Jean-Francois Dockes
76f3288fc8 make comma a normal wordsplit char 2013-03-22 10:06:02 +01:00
Jean-Francois Dockes
2418dd787c loglevels 2013-03-22 10:04:59 +01:00
Jean-Francois Dockes
76d354539a compile in threaded indexing code by default 2013-03-07 15:00:29 +01:00
Jean-Francois Dockes
583082d0d8 make parameters for mbox recog (line length) even more lax 2013-03-07 14:52:21 +01:00
Jean-Francois Dockes
cebaed48aa Add parameter to chdir on recollindex startup, /tmp by default. Closes issue #129 2013-03-07 11:05:54 +01:00
Jean-Francois Dockes
2c06368d99 updated message files 2013-03-07 09:13:59 +01:00
Jean-Francois Dockes
c4dfb3668b Specified GNU Free Documentation License for the manual 2013-03-07 08:59:58 +01:00
Jean-Francois Dockes
41ada1e2ca simplified temp file handling for compressed documents and, for querying, implemented caching for last file uncompressed 2013-03-06 18:52:57 +01:00
Jean-Francois Dockes
042a54ef27 ensure we use vfork when single-threaded, even if threading is compiled in 2013-03-06 15:21:14 +01:00
Jean-Francois Dockes
466dfc49e2 doc 2013-03-06 10:07:04 +01:00
Jean-Francois Dockes
90c2b85715 wildcard-expand mime types against the index not the config 2013-03-04 14:44:04 +01:00
Jean-Francois Dockes
68dd8c92be remove use of - as span-building character. 2013-03-04 12:16:11 +01:00
Jean-Francois Dockes
beb3c5fca1 updated python searchdata object to match current C++ interface 2013-03-01 11:50:35 +01:00
Jean-Francois Dockes
ccaac8cf0e Arrange things so that "open parent" selects the file child when the parent is a directory 2013-02-27 14:36:45 +01:00
Jean-Francois Dockes
05db0dcd05 dont use prefixed terms for looking for snippets. Reversible 2013-02-27 14:36:10 +01:00
Jean-Francois Dockes
82f9a73b7c typo 2013-02-27 14:35:39 +01:00
Jean-Francois Dockes
449452d55d sleep a bit longer before exiting when acting as proxy to the unity dash 2013-02-27 14:32:22 +01:00
Jean-Francois Dockes
117ec4af73 improved detection of incomplete snippets lists 2013-02-26 15:49:36 +01:00
Jean-Francois Dockes
54bc5d6c84 actually implement maxTermExpand and maxXapianClauses and improve error message 2013-02-26 14:34:25 +01:00
Jean-Francois Dockes
48358c3182 doc 2013-02-26 14:33:14 +01:00
Jean-Francois Dockes
0aaab57569 set application window icon 2013-02-26 11:32:39 +01:00
Jean-Francois Dockes
768b649c41 abstract: ensure snippet does not extend below baseTextPosition, this prevents retrieving page numbers. 2013-02-26 10:40:47 +01:00
Jean-Francois Dockes
8ba800d5bb use _exit() to cancel a slow query, the normal exit waits for who knows what and we just want out here 2013-02-26 10:36:03 +01:00
Jean-Francois Dockes
616f053ffb changed the external viewer definition dialogs 2013-02-25 16:23:29 +01:00
Jean-Francois Dockes
5fbfbd0c03 get F3 to act like ^F is search is not open 2013-02-25 14:34:08 +01:00
Jean-Francois Dockes
eb639db9ae doc 2013-02-24 18:01:32 +01:00
Jean-Francois Dockes
d01f472bbf fixed crash with autosearch caused by starting several simultaneous queries 2013-02-22 10:51:12 +01:00
Jean-Francois Dockes
5e813ad4c6 doc 2013-02-21 19:13:31 +01:00
Jean-Francois Dockes
defe1e780d doc 2013-02-21 13:31:51 +01:00
Jean-Francois Dockes
22d21f1685 Small fixes for ubuntu 12.11 quantal: icon name list weirdness + new xdg location for thumbnails 2013-02-21 13:31:37 +01:00
Jean-Francois Dockes
f807698970 comments 2013-02-21 13:29:47 +01:00
Jean-Francois Dockes
779e926451 process extended attributes by default 2013-02-19 16:12:24 +01:00
Jean-Francois Dockes
abc83bd22c minor opt: avoid walking allterms if not needed: no stemlangs + stripchars 2013-02-19 16:11:15 +01:00
Jean-Francois Dockes
cb1e6a56be For case-sensitive indexes, wildcard expansion was not performed correctly for lowercase terms if no upped/mixed case version existed 2013-02-16 16:44:14 +01:00
Jean-Francois Dockes
5f057e61c6 doc 2013-01-30 17:41:45 +01:00
Jean-Francois Dockes
ad815f3038 fix the external index dialog to accept either xapian directory or recoll config directories 2013-01-30 11:46:29 +01:00
Jean-Francois Dockes
6423c3a91b cleaned up processing of metadata from diverse origins (doc,extattrs,localfields) 2013-01-29 14:33:57 +01:00
Jean-Francois Dockes
89996fde05 freebsd shlib build fixes 2013-01-29 12:36:41 +01:00
Jean-Francois Dockes
0358fcec80 make extended attributes support the default 2013-01-28 09:46:04 +01:00
Jean-Francois Dockes
c8c642a5b9 fix compile issue with idxthreads enabled 2013-01-28 09:45:33 +01:00
Jean-Francois Dockes
78e889d984 use the "charset" extended attribute for text files if it is set 2013-01-23 12:04:02 +01:00
Jean-Francois Dockes
17ecc9d7bb test "mime_type" extended attribute before trying other type recognition methods 2013-01-23 11:55:15 +01:00
Jean-Francois Dockes
2f32856f55 add possibility to import tags from external app, e.g. tmsu 2013-01-22 18:30:18 +01:00
Jean-Francois Dockes
9b4ce08a0d split the term expansion code out of rcldb.cpp 2013-01-15 10:06:24 +01:00
Jean-Francois Dockes
af214b3aa0 small wildcard/regexp wrapper 2013-01-14 18:07:23 +01:00
Jean-Francois Dockes
e0640357ce reorganized the term expansion code so that the term explorer works fully with case and diac sensitivity options 2013-01-14 18:06:48 +01:00
Jean-Francois Dockes
1f9e9d200a small fixups and compilation issues 2013-01-14 09:57:04 +01:00
Jean-Francois Dockes
a8e4d4734f comments 2013-01-13 09:08:05 +01:00
Jean-Francois Dockes
862d877c24 missinginclude 2013-01-13 09:05:33 +01:00
Jean-Francois Dockes
bb438ef3a4 compilation error with STRIPCHARS set 2013-01-13 09:02:48 +01:00
Jean-Francois Dockes
3ac7972dab HTML: do not concatenate text found before body tag with the title. Fixes issue #125 2013-01-12 14:06:40 +01:00
Jean-Francois Dockes
62b637934d edit 2013-01-11 17:58:23 +01:00
Jean-Francois Dockes
e0074ca80b comments 2013-01-11 17:56:22 +01:00
Jean-Francois Dockes
8c5258ce19 Add db stats option to term explorer 2013-01-10 15:12:43 +01:00
Jean-Francois Dockes
5aad9d50e1 make sure we only show the automatic missing helpers dialog once 2013-01-10 09:30:05 +01:00
Jean-Francois Dockes
0f89eab100 replaced SCLT_EXCL clauses with general excl/neg flag 2013-01-05 18:15:54 +01:00
Jean-Francois Dockes
3e6a9971c3 define new searchdataclausepath to replace the old dir: filtering mechanism. ORing dirs now works 2013-01-05 16:21:30 +01:00
Jean-Francois Dockes
e219fa016d adjusted results for ordering etc. on new machine 2013-01-05 15:40:47 +01:00
Jean-Francois Dockes
2a424b5eae adjusted results for ordering etc. on new machine 2013-01-05 15:36:25 +01:00
Jean-Francois Dockes
8f1ab60cbf python module mac compilation 2013-01-05 10:17:10 +01:00
Jean-Francois Dockes
b87e59220e python module mac compilation 2013-01-05 08:49:24 +01:00
Jean-Francois Dockes
e81924c273 use static linking on macosx 2013-01-04 14:15:34 +01:00
Jean-Francois Dockes
6cf3c2e5ab perform case/diac expansion when processing wildcards 2013-01-04 13:34:26 +01:00
Jean-Francois Dockes
477eb2e8c1 comments 2013-01-04 11:57:03 +01:00
Jean-Francois Dockes
5c295c905f doc 2013-01-04 11:56:20 +01:00
Jean-Francois Dockes
9b891341b3 added icon formats 2013-01-04 11:56:07 +01:00
Jean-Francois Dockes
7091195303 wild/reg spe chars defs moved to cstr 2013-01-04 10:06:08 +01:00
Jean-Francois Dockes
4cf77a96eb fix test driver compile 2013-01-04 10:05:07 +01:00
Jean-Francois Dockes
1a469d893f protect the xrdb from multiple accesses from needupdate tests and write thread 2013-01-01 16:20:06 +01:00
Jean-Francois Dockes
b8b4f4cb6d get python setup.py to work when called directly 2012-12-31 12:14:05 +01:00
Jean-Francois Dockes
b9f889180d packaging ok with lib/recoll/librecoll.so... on debian fedora and suse 2012-12-30 17:31:00 +01:00
Jean-Francois Dockes
a9002d1a01 build with lib moved to recoll subdir works for debian 2012-12-30 16:11:51 +01:00
Jean-Francois Dockes
cd69601085 added copy of debian dir 2012-12-30 16:10:16 +01:00
Jean-Francois Dockes
674537e169 suppress warning about chown return value 2012-12-30 16:03:05 +01:00
Jean-Francois Dockes
aa06cd13f8 move librecoll to lib/recoll 2012-12-30 14:46:21 +01:00
Jean-Francois Dockes
a23e38602c fedora rpmbuild really ok 2012-12-29 21:50:50 +01:00
Jean-Francois Dockes
f67d25a615 fedora rpmbuild ok 2012-12-29 21:19:06 +01:00
Jean-Francois Dockes
50c5170752 release 3149 2012-12-29 17:16:43 +01:00
Jean-Francois Dockes
3e2d9cbb7d none 2012-12-29 15:34:17 +01:00
Jean-Francois Dockes
d0290a3a96 fix tarfile build script 2012-12-29 15:21:16 +01:00
Jean-Francois Dockes
0d8b7c44e8 release 3146 2012-12-29 15:04:12 +01:00
Jean-Francois Dockes
a38abf400d release 3145 2012-12-29 14:55:16 +01:00
Jean-Francois Dockes
f4838c7cc6 Use xml toolchain by default 2012-12-29 14:54:57 +01:00
Jean-Francois Dockes
4053758383 Use dynamic lib for shared recoll code 2012-12-29 14:27:01 +01:00
Jean-Francois Dockes
b780423010 none 2012-12-29 08:44:00 +01:00
Jean-Francois Dockes
f52bdf5cbb m_havewriteq was not always initialized, resulting in stray flush call 2012-12-28 16:34:15 +01:00
Jean-Francois Dockes
2172c5d38d traces 2012-12-28 16:31:10 +01:00
Jean-Francois Dockes
6379e57810 add test with dir: spec on a path containing spaces 2012-12-25 10:21:56 +01:00
Jean-Francois Dockes
aaa6b5ab2f Fix the unity-lens for the new python module setup 2012-12-23 08:24:09 +01:00
Jean-Francois Dockes
33de6b9fbb fixed python scripts for next->rownumber Query change 2012-12-22 15:58:45 +01:00
Jean-Francois Dockes
d2f0a6fa32 python: got rid of the old "next" query member: masked by method anyway 2012-12-22 15:05:29 +01:00
Jean-Francois Dockes
2fa36f488b implemented more db cursor methods: scroll, next, __iter__ 2012-12-22 14:40:21 +01:00
Jean-Francois Dockes
0cbf05f1c7 implemented fetchmany and other features for compatibility with the DB API 2.0 2012-12-21 21:18:01 +01:00
Jean-Francois Dockes
e51bb69951 python gui sample: properly fix the double connect issue 2012-12-21 15:08:30 +01:00
Jean-Francois Dockes
d18e55c139 python module tweaks 2012-12-21 14:30:57 +01:00
Jean-Francois Dockes
ea8e767da9 none 2012-12-21 14:25:30 +01:00
Jean-Francois Dockes
fca07e02e2 python GUI sample working 2012-12-21 14:24:31 +01:00
Jean-Francois Dockes
906b636a97 none 2012-12-21 12:23:32 +01:00
Jean-Francois Dockes
12c60d39d9 pyqt4 sample 2012-12-21 12:08:07 +01:00
Jean-Francois Dockes
9f7d32992c typo in sortby test 2012-12-20 20:11:08 +01:00
Jean-Francois Dockes
ebae482ebe doc 2012-12-20 18:16:30 +01:00
Jean-Francois Dockes
770ff3a4c5 make python recoll a package with 2 modules recoll and rclextract 2012-12-20 17:06:18 +01:00
Jean-Francois Dockes
66e8817f77 make python recoll a package with 2 modules recoll and rclextract 2012-12-20 17:05:34 +01:00
Jean-Francois Dockes
fc68d31151 Python extractor module 2012-12-20 11:16:30 +01:00
Jean-Francois Dockes
988e013502 add noremove option to TempFile 2012-12-20 11:15:43 +01:00
Jean-Francois Dockes
e2013ab52c split the iDocToFile method into static and member parts for use from python module 2012-12-20 11:15:10 +01:00
Jean-Francois Dockes
17589947a2 removed static decls for previously deleted methods 2012-12-20 08:10:54 +01:00
Jean-Francois Dockes
05a39a163f comments 2012-12-20 08:05:12 +01:00
Jean-Francois Dockes
8cd40c7cd9 temporary checkpoint for python module modifs 2012-12-19 19:59:31 +01:00
Jean-Francois Dockes
6e9b058a46 make sure that sort by field "relevancyrating" is equivalent to natural Xapian ordering 2012-12-19 19:59:06 +01:00
Jean-Francois Dockes
f4e390c35b make ugroups a real vector of vectors (the previous "vectors" had only one entry with the user string even if it was made of several words) 2012-12-19 19:57:12 +01:00
Jean-Francois Dockes
d78d25b988 comment 2012-12-19 19:56:03 +01:00
Jean-Francois Dockes
80771f4add added method to Rcl::Query for retrieving ref to SearchData + misc rclquery cleanup 2012-12-19 10:33:27 +01:00
Jean-Francois Dockes
8021ed51c2 trace 2012-12-18 16:44:40 +01:00
Jean-Francois Dockes
9300be3097 dont use clock_gettime by default 2012-12-18 16:23:41 +01:00
Jean-Francois Dockes
7671dc6482 dont use clock_gettime by default 2012-12-18 16:22:59 +01:00
Jean-Francois Dockes
54acbc3d34 Drain the job pipeline in fsindexer::purgefiles like was done in fsindexer::indexfiles as there is no warranty that the latter will be called before a db::close for each iteration of the monitor loop 2012-12-15 09:21:50 +01:00
Jean-Francois Dockes
0a39e7817a doc 2012-12-14 16:03:50 +01:00
Jean-Francois Dockes
1a269751f5 additional cleanup after switch from .beagle to .recollweb 2012-12-14 13:20:09 +01:00
Jean-Francois Dockes
453d88717d Implement workaround to character encoding issues in chm files and python HTMLParser 2012-12-05 13:24:02 +01:00
Jean-Francois Dockes
c343dd7021 doc 2012-12-04 11:16:24 +01:00
Jean-Francois Dockes
b7995b9ea0 comments 2012-12-04 10:17:57 +01:00
Jean-Francois Dockes
ccde8805f5 python api: allow specifying the stemming language 2012-12-04 08:35:36 +01:00
Jean-Francois Dockes
98c38513e7 better stats in workqueue 2012-12-03 19:11:59 +01:00
Jean-Francois Dockes
9c6b88d2f2 fix no threads compile 2012-12-02 14:47:06 +01:00
Jean-Francois Dockes
474e57b26d recollindex threads: reset the config pointer when retrieving handler from cache. Seems to have been the cause of the crashes 2012-11-30 19:34:19 +01:00
Jean-Francois Dockes
bc94f9f83f more config isolation. Still crashing 2012-11-30 16:45:02 +01:00
Jean-Francois Dockes
45d56f17de Use PTMutexLocker in workqueue, and make it restartable 2012-11-30 07:35:03 +01:00
Jean-Francois Dockes
2f800e3eb3 implemented configuration for thread structure. Still crashes, but not often... 2012-11-29 17:26:48 +01:00
Jean-Francois Dockes
30516ceb52 use const rclconfig 2012-11-28 13:20:52 +01:00
Jean-Francois Dockes
fe6664faa9 use const rclconfig 2012-11-28 13:20:18 +01:00
Jean-Francois Dockes
8ac559677c ensure that indexing threads operations are transparent to high level callers such as the real time monitor 2012-11-26 15:40:31 +01:00
Jean-Francois Dockes
d7962cb5c2 take care of pathologic charset decls with empty value 2012-11-26 11:40:08 +01:00
Jean-Francois Dockes
e412dc0d20 timing and traces 2012-11-26 09:16:06 +01:00
Jean-Francois Dockes
d084ac9899 Observe followSymlinks in indexfiles() 2012-11-26 09:14:51 +01:00
Jean-Francois Dockes
8f8a1dfb3b stemdb: only need to expand the unac'd term if it differs from raw + comments and traces 2012-11-26 09:13:57 +01:00
Jean-Francois Dockes
526919f1b4 add nanos() i/f to Chrono 2012-11-26 09:08:44 +01:00
Jean-Francois Dockes
1856dd6bfb set default followSymlinks for /usr/share/man 2012-11-26 09:07:59 +01:00
Jean-Francois Dockes
b1179973b4 speed up the wait loop by sleeping 5 ms before reaping status instead of failing and sleeping 1 S 2012-11-26 09:07:29 +01:00
Jean-Francois Dockes
ec66832649 doc 2012-11-23 17:55:43 +01:00
Jean-Francois Dockes
5e6212a298 added preferences for search-as-you-type and combobox completion 2012-11-23 17:10:53 +01:00
Jean-Francois Dockes
e0dcd948fc doc 2012-11-23 13:51:22 +01:00
Jean-Francois Dockes
3a0e2744d6 autosearch: reduce timer to 200 mS and fix log messages 2012-11-23 13:51:14 +01:00
Jean-Francois Dockes
4e9cbde3f3 fix gcc warning 2012-11-23 13:50:11 +01:00
Jean-Francois Dockes
b93664636d typo in log message 2012-11-23 13:49:44 +01:00
Jean-Francois Dockes
88cb434177 dont explicitly reset search when starting new one: less flashing 2012-11-23 13:37:07 +01:00
Jean-Francois Dockes
8a18c7bdd8 threads: added recoll_threadinit calls to block signals 2012-11-23 13:36:05 +01:00
Jean-Francois Dockes
f52ca5f95c added associations for opendocument graphic files 2012-11-23 13:35:04 +01:00
Jean-Francois Dockes
a0f1887200 new variation on the search-as-you-type code 2012-11-18 17:29:47 +01:00
Jean-Francois Dockes
d2fbc7f53d add "soft" term expansion limit not causing error when reached 2012-11-18 17:28:49 +01:00
Jean-Francois Dockes
1539fe7e4d simplified and dispatched code in the searchdata monster 2012-11-18 13:25:54 +01:00
Jean-Francois Dockes
e4aa111d55 call setlocale before rclconfig init 2012-11-18 13:07:11 +01:00
Jean-Francois Dockes
7a9b75c852 none 2012-11-18 11:55:54 +01:00
Jean-Francois Dockes
85bbbd7dd8 none 2012-11-18 11:55:21 +01:00
Jean-Francois Dockes
198e89eda7 use vfork when possible + small cleanups in mt init 2012-11-18 08:33:33 +01:00
Jean-Francois Dockes
917f1039ce doc 2012-11-18 08:28:03 +01:00
Jean-Francois Dockes
3c36c57db2 term generation: only keep @ when not at start of term 2012-11-18 08:25:19 +01:00
Jean-Francois Dockes
9f63e46142 aspell: test to determine if error was caused by missing dictionary was wrong 2012-11-18 08:22:53 +01:00
Jean-Francois Dockes
3588b52f5b find as you type experimentation 2012-11-17 16:02:30 +01:00
Jean-Francois Dockes
a5cacd8784 1.18.1 packaging changes 2012-11-17 14:28:28 +01:00
Jean-Francois Dockes
d68eacc172 Prevent error caused by trying to add a posting for an empty term (created by unac on really weird data) 2012-11-16 17:41:14 +01:00
Jean-Francois Dockes
494c57ee9c Raw dbs: do not skip diacritics and case expansion for terms which do not look like like natural language words (and for which stemming is skipped) 2012-11-16 13:15:58 +01:00
Jean-Francois Dockes
a29aea17ff Improved ergonomy of term completion by using combobox listview instead of separate dialog 2012-11-15 08:31:43 +01:00
Jean-Francois Dockes
a3744ddb5d czech messages 2012-11-14 22:42:36 +01:00
Jean-Francois Dockes
df2950190f none 2012-11-14 12:21:12 +01:00
Jean-Francois Dockes
8a855ffb47 man page typos fix from Kartik 2012-11-14 12:20:50 +01:00
Jean-Francois Dockes
91e378a5a2 comments 2012-11-05 09:04:53 +01:00
Jean-Francois Dockes
570388de5a Multithreaded indexing seems not to crash anymore thanks to locked existence map 2012-11-02 21:43:51 +01:00
Jean-Francois Dockes
a7304b9770 doc 2012-11-02 21:43:05 +01:00
Jean-Francois Dockes
bd5f2687e3 gnote files 2012-11-02 21:41:21 +01:00
Jean-Francois Dockes
f549722974 none 2012-11-02 21:39:05 +01:00
Jean-Francois Dockes
5c18e81dff doc 2012-11-02 17:30:07 +01:00
Jean-Francois Dockes
81f050190f comments 2012-11-02 11:37:23 +01:00
Jean-Francois Dockes
1cd3c0a659 comments 2012-11-02 09:47:39 +01:00
Jean-Francois Dockes
4b63268ac5 update pyrecoll for new addOrUpdate arg list 2012-11-01 11:46:38 +01:00
Jean-Francois Dockes
3f768cf977 from 1.18 branch: Adjust things for using the new Firefox plugin: remove visible Beagle references + fix 1.18 web queue indexing bugs 2012-11-01 11:30:39 +01:00
Jean-Francois Dockes
3da5158e9f from 1.18 branch: When creating initial config directory (1st exec), initialize specific unac_except_trans for some languages: de, se/no/dk/fi + fix mixup of language and country codes 2012-11-01 11:27:50 +01:00
Jean-Francois Dockes
a11c696554 1st parallel multithreaded version of indexing which can do my home without crashing... Let's checkpoint 2012-11-01 11:19:48 +01:00
Jean-Francois Dockes
007f0b06c1 recollindex -i/e would dump core if file list was empty 2012-10-31 07:50:17 +01:00
Jean-Francois Dockes
7d9560f5c2 doc 2012-10-30 15:35:40 +01:00
Jean-Francois Dockes
05fb1ad4a3 Use new location for thumbnails directory as per thumbnails std 8.0 2012-10-30 15:33:33 +01:00
Jean-Francois Dockes
20a5a01f9a Automatically start search after replacing spelling error 2012-10-30 15:25:04 +01:00
Jean-Francois Dockes
5a3566fc23 doc 2012-10-30 08:15:51 +01:00
Jean-Francois Dockes
56eac2d914 document the native app choice 2012-10-30 08:15:20 +01:00
Jean-Francois Dockes
7da0307c25 snippets: move search zone in button area. Fix shortcuts 2012-10-30 07:44:53 +01:00
Jean-Francois Dockes
09ff4ef393 Fixed UI crash by replacing snippets QDialog with a QWidget... 2012-10-29 18:47:10 +01:00
Jean-Francois Dockes
98ba87f024 bad keyterm extraction in snippets_w resulted in bad find parameter to evince 2012-10-29 15:59:43 +01:00
Jean-Francois Dockes
51c0a344df Fixed tilde expansion for beaglequeuedir 2012-10-29 15:17:43 +01:00
Jean-Francois Dockes
17a04bc61f updated the beagle instructions 2012-10-29 07:55:11 +01:00
Jean-Francois Dockes
bd6e4f2ce4 set O_APPEND on log fd just in case 2012-10-28 16:49:07 +01:00
Jean-Francois Dockes
d8e711a096 make sure a TempDir class cant be copied 2012-10-28 16:48:05 +01:00
Jean-Francois Dockes
21c9c6ffb3 avoid bogus error message in margin case 2012-10-28 16:47:23 +01:00
Jean-Francois Dockes
10e5488f25 cleaned up the missing helper storage class 2012-10-28 16:43:19 +01:00
Jean-Francois Dockes
6b1fe7195c marked const rclconfig methods 2012-10-26 14:54:31 +02:00
Jean-Francois Dockes
15ee5781c7 marked const conftree methods 2012-10-26 14:52:17 +02:00
Jean-Francois Dockes
16ba6ebe85 set mboxquirks tbird on ~/.mozilla 2012-10-26 10:25:22 +02:00
Jean-Francois Dockes
c73b9887e5 Release 1.18.002 tagged 2012-10-25 14:26:56 +02:00
Jean-Francois Dockes
7361f18414 none 2012-10-25 14:26:47 +02:00
Jean-Francois Dockes
ec01e3c02a Removed tag help 2012-10-25 14:26:14 +02:00
Jean-Francois Dockes
dc79baceed Added tag help for changeset e44205c25606 2012-10-25 14:25:55 +02:00
Jean-Francois Dockes
ca29d5e24c none 2012-10-25 14:24:57 +02:00
Jean-Francois Dockes
374db62a1b Support explicit HTML markup in fields when the markup="html" attribute is present 2012-10-25 14:22:20 +02:00
Jean-Francois Dockes
ebe0d66e52 doc 2012-10-23 22:14:43 +02:00
Jean-Francois Dockes
798c0ccfeb GUI: Automatically popup the "show missing helpers" dialog after first indexing 2012-10-23 20:06:16 +02:00
Jean-Francois Dockes
c9e271ed99 the missing filter detection code was broken 2012-10-23 19:40:51 +02:00
Jean-Francois Dockes
0e74a7061a book icons 2012-10-23 19:33:39 +02:00
Jean-Francois Dockes
217c38edb4 handle application tag when looking for icon, and add icons for books and book chapters (epub, chm, info) 2012-10-23 16:34:07 +02:00
Jean-Francois Dockes
128b54cabd handle filters returning unicode objects 2012-10-23 16:32:52 +02:00
Jean-Francois Dockes
01afbf4b7c extract epub metadata into top document 2012-10-23 16:32:20 +02:00
Jean-Francois Dockes
06c393818f translations: removed all obsolete flags 2012-10-22 08:00:14 +02:00
Jean-Francois Dockes
4d7b635dcc updated german messages 2012-10-22 07:56:10 +02:00
Jean-Francois Dockes
62815c5e98 Release 1.18.001 tagged 2012-10-21 18:57:35 +02:00
Jean-Francois Dockes
8ad626fc2e 1.18.001 2012-10-21 18:57:24 +02:00
Jean-Francois Dockes
b77794d22e small adjustments to the lens for 1.18 2012-10-21 18:56:42 +02:00
Jean-Francois Dockes
d731292858 none 2012-10-21 18:22:13 +02:00
Jean-Francois Dockes
5ce3f7a9bd Python module: check types in setbinurl 2012-10-21 18:21:48 +02:00
Jean-Francois Dockes
a525c5056f dont generate error for empty abstract this is a problem for python 2012-10-21 17:57:08 +02:00
Jean-Francois Dockes
a6a2c752fd Using recoll as an embedded document opener for the unity lens was broken 2012-10-20 09:25:35 +02:00
Jean-Francois Dockes
a5e4b6af5b make opening parent of text/html|epub the default (instead of opening html temp file 2012-10-20 09:24:37 +02:00
Jean-Francois Dockes
087ef91e01 mac 2012-10-19 19:10:21 +02:00
Jean-Francois Dockes
a295fad849 mac 2012-10-19 19:05:26 +02:00
Jean-Francois Dockes
aafae071ce doc 2012-10-19 16:28:23 +02:00
Jean-Francois Dockes
ff43aeff89 'unobsolete' messages so that the file can be used with 1.17 2012-10-19 16:28:16 +02:00
Jean-Francois Dockes
ec338d09c2 Only disable appropriate options not whole panel when index is tripped 2012-10-19 16:27:15 +02:00
Jean-Francois Dockes
9cc554647f changed date format to be consistent with query language 2012-10-19 16:26:41 +02:00
Jean-Francois Dockes
ca05a7efd2 none 2012-10-19 10:51:52 +02:00
Jean-Francois Dockes
2cf1ff3a6f fixed the lookup path for standard qt messages so that standard dialogs will be translated + fixed categories names for adv search dialog 2012-10-19 10:51:36 +02:00
Jean-Francois Dockes
07a8dfe72a updated message translation source files 2012-10-19 10:50:24 +02:00
Jean-Francois Dockes
cb2556ce5f web 2012-10-19 10:48:03 +02:00
Jean-Francois Dockes
15cd105bb4 Release 1.18.0 tagged 2012-10-18 14:43:40 +02:00
Jean-Francois Dockes
7d1b2c76a1 Removed tag RECOLL_1_18_0 2012-10-18 14:42:39 +02:00
Jean-Francois Dockes
7e190036e3 get the kio to build (and works on suse12.2) + compiler warnings 2012-10-18 14:42:25 +02:00
Jean-Francois Dockes
2b8e2c8301 fixed for recoll 1.18 but php issues. Needs php5 update? 2012-10-18 14:33:45 +02:00
Jean-Francois Dockes
bbfa4e58ff Release 1.18.0 tagged 2012-10-18 10:48:54 +02:00
Jean-Francois Dockes
72c435b1bf Removed tag RECOLL_1_18_0 2012-10-18 10:48:44 +02:00
Jean-Francois Dockes
aef3911f4b doc 2012-10-18 10:48:11 +02:00
Jean-Francois Dockes
57c884e1a1 stray virtual 2012-10-17 17:53:33 +02:00
Jean-Francois Dockes
6960384c38 Release 1.18.0 tagged 2012-10-17 15:53:23 +02:00
Jean-Francois Dockes
0f707607c4 make img in result list an href to the document url. Enables drag/dropping in somes cases (not all) 2012-10-17 11:45:35 +02:00
Jean-Francois Dockes
5ddda8b35e fix opendocument mime config 2012-10-17 11:44:53 +02:00
Jean-Francois Dockes
bff71e49ab make recipient a default stored field 2012-10-17 11:44:33 +02:00
Jean-Francois Dockes
7321313bd8 web 2012-10-17 11:43:47 +02:00
Jean-Francois Dockes
d8f55dc2ff release 2927 2012-10-16 16:10:24 +02:00
Jean-Francois Dockes
75b6f5b96c missing include 2012-10-16 16:10:14 +02:00
Jean-Francois Dockes
125c90ed7a release 2925 2012-10-16 15:23:05 +02:00
Jean-Francois Dockes
7cc8265ac2 doc 2012-10-16 15:01:57 +02:00
Jean-Francois Dockes
45a67da99b comment 2012-10-16 14:56:17 +02:00
Jean-Francois Dockes
d76531411a doc 2012-10-16 14:49:09 +02:00
Jean-Francois Dockes
2296a8d287 implemented advanced search history feature 2012-10-16 13:37:56 +02:00
Jean-Francois Dockes
303da79621 fix prefix stripping in maxYearSpan 2012-10-16 13:36:54 +02:00
Jean-Francois Dockes
d260bdbf7a doc 2012-10-16 13:35:49 +02:00
Jean-Francois Dockes
b9468e3c78 define non default unac_except_trans for tests 2012-10-16 13:35:35 +02:00
Jean-Francois Dockes
4aedf7dca8 release 2917 2012-10-15 09:15:01 +02:00
Jean-Francois Dockes
1be563398f doc 2012-10-15 08:40:50 +02:00
Jean-Francois Dockes
c5febffb7d Least user astonishment principle: just keep the ligature decompositions in the default unac_except_trans, no accents 2012-10-15 08:34:21 +02:00
Jean-Francois Dockes
b57f483a30 filenames used for "filename search" need to be lowercased and stripped 2012-10-15 08:06:04 +02:00
Jean-Francois Dockes
7c76d34b05 mobi changes. no filter yet 2012-10-15 08:04:59 +02:00
Jean-Francois Dockes
bc8c6d2da6 Automatically activate newly added external index 2012-10-13 18:30:13 +02:00
Jean-Francois Dockes
828b141469 mimetype T prefix was mishandled for a raw index 2012-10-13 11:08:53 +02:00
Jean-Francois Dockes
a16746e5bb Arrange so we can now open the parent of a document (e.g. chm file instead of temp copy of html page inside chm), even when the parent is itself embedded in an archive 2012-10-12 16:54:52 +02:00
Jean-Francois Dockes
8d4afed3cb correctly handle return from Db::getDoc(udi... 2012-10-12 13:37:54 +02:00
Jean-Francois Dockes
67411e8839 add epub test 2012-10-12 13:37:23 +02:00
Jean-Francois Dockes
4d52ab3a01 comment 2012-10-12 13:37:07 +02:00
Jean-Francois Dockes
82e92c949c comment 2012-10-12 13:36:38 +02:00
Jean-Francois Dockes
86e48fb52e none 2012-10-12 13:35:21 +02:00
Jean-Francois Dockes
8cb5a6746c ensure chm file can be renamed 2012-10-12 13:34:56 +02:00
Jean-Francois Dockes
5811542a6b rclepub: use elt ids instead of hrefs + debug traces 2012-10-11 15:35:15 +02:00
Jean-Francois Dockes
3e15ce79cc set meaningful window titles for reslist fragment editors 2012-10-11 14:05:35 +02:00
Jean-Francois Dockes
abdf4c12b5 added epub + chm/info rclaptg 2012-10-11 14:04:54 +02:00
Jean-Francois Dockes
4e3a33cf49 add epub viewer and set rclaptg meta tag for chm and info 2012-10-11 14:03:30 +02:00
Jean-Francois Dockes
4dba354273 process rclaptg when searching mimeview allexcept 2012-10-09 14:53:53 +02:00
Jean-Francois Dockes
c807184115 message 2012-10-09 14:52:32 +02:00
Jean-Francois Dockes
d76f286a1c manifest 2012-10-08 14:58:22 +02:00
Jean-Francois Dockes
d36c323eb9 release 2896 2012-10-08 14:55:48 +02:00
Jean-Francois Dockes
3a67b411ca doc 2012-10-08 14:30:21 +02:00
Jean-Francois Dockes
97bc58201b Snippet generation: limit positions walk to max hit position. Return status code when truncated walk possibly generated incomplete snippets. Implement config variabl for max pos walk 2012-10-08 14:30:14 +02:00
Jean-Francois Dockes
46b7f87e51 add snippetMaxPosWalk config var for adjusting max positions list walking in snippet generation 2012-10-08 14:27:52 +02:00
Jean-Francois Dockes
3a6535dd5c insert message when snippets risk being incomplete 2012-10-08 14:26:53 +02:00
Jean-Francois Dockes
0c705a1f11 add snippets link to default link bundle 2012-10-08 14:25:17 +02:00
Jean-Francois Dockes
461861171a Adjust messages + plaintorich return false if no actual match found 2012-10-08 14:24:25 +02:00
Jean-Francois Dockes
9b1a23385d Add search to snippets window + dont display snippets where no actual match is found 2012-10-08 14:23:17 +02:00
Jean-Francois Dockes
ec9bdfa882 doc 2012-10-06 21:04:03 +02:00
Jean-Francois Dockes
5436397dc1 fix a few tests to better run in an utf-8 locale 2012-10-06 15:49:07 +02:00
Jean-Francois Dockes
822848b31c For plain text files, try alternate decode from 8bit charset when decode from UTF-8 fails 2012-10-06 15:12:49 +02:00
Jean-Francois Dockes
52804fef6c factored out common charset handling code in exec and execm, cleaned up charset and textplain handling in mh_mail 2012-10-06 12:14:04 +02:00
Jean-Francois Dockes
8be8a00a79 small test fixups 2012-10-06 12:11:51 +02:00
Jean-Francois Dockes
17e749500d new autodiacsens=false default 2012-10-06 12:10:48 +02:00
Jean-Francois Dockes
92d2dca380 fix 8bit file name processing 2012-10-06 12:00:05 +02:00
Jean-Francois Dockes
e75ed6bbb3 glitch in maxmemberkb handling 2012-10-06 11:59:48 +02:00
Jean-Francois Dockes
5c5770a5f4 implemented maxmemberkb limit for multidoc (e.g. archive) members 2012-10-06 09:05:35 +02:00
Jean-Francois Dockes
c456ea2175 check for empty file name in internfile, else gets stuck later because empty fn is interpreted as read stdin in md5 2012-10-05 16:42:13 +02:00
Jean-Francois Dockes
fb9d1a81bc comment 2012-10-05 14:59:16 +02:00
Jean-Francois Dockes
20acc0aef7 doc 2012-10-05 12:53:45 +02:00
Jean-Francois Dockes
a4a7246a12 implemented proper limitation and error reporting in case of truncation for term and query expansions 2012-10-05 12:36:19 +02:00
Jean-Francois Dockes
86515ce52a removed list size truncature on filename expansion 2012-10-05 09:19:42 +02:00
Jean-Francois Dockes
8de0e2e8c9 fixed bug that would erase search term made of single wildcard 2012-10-05 09:15:09 +02:00
Jean-Francois Dockes
05f3e48ab3 improve handling of result list truncature 2012-10-05 08:45:21 +02:00
Jean-Francois Dockes
abe18946ed doc and messages 2012-10-04 17:03:46 +02:00
Jean-Francois Dockes
f54ac99973 mbox: implement member size limit of 100MB and autodetec thunderbird mboxes (look for .msf) 2012-10-04 17:00:50 +02:00
Jean-Francois Dockes
a732e429bb implement mime exceptions to "use desktop open" so that we can use evince and pass page and search string parameters for pdf,ps and dvi even when all other mime types are passed to xdg-open 2012-10-04 09:51:29 +02:00
Jean-Francois Dockes
b873e5cff4 let rcldvi and rclps emit ^L page markers for use with %p and evince 2012-10-04 09:49:03 +02:00
Jean-Francois Dockes
3d630238d8 skip very big files (50M) in zip tar and rar extractors 2012-10-04 08:22:33 +02:00
Jean-Francois Dockes
d0306b7865 none 2012-10-04 08:21:54 +02:00
Jean-Francois Dockes
4f6e014a0e autodiacsens and autocasesens parameters 2012-10-03 15:35:40 +02:00
Jean-Francois Dockes
5c28a92911 Abstracts: improve the way we group terms for quality computation 2012-10-03 11:17:16 +02:00
Jean-Francois Dockes
3dfa44c9a3 add a class for skipped characters 2012-10-03 09:07:59 +02:00
Jean-Francois Dockes
343e4f4f17 fix glitch caused by udi prefix change 2012-10-03 08:05:39 +02:00
Jean-Francois Dockes
46a7f1692c Prefixes for unique identifier and parent terms were not wrapped 2012-10-02 19:16:57 +02:00
Jean-Francois Dockes
42a08170a8 attempt to eliminate more unicode uninteresting characters 2012-10-02 17:45:16 +02:00
Jean-Francois Dockes
437ad58151 improve message printed for aspell dictionary creation error 2012-10-02 16:26:18 +02:00
Jean-Francois Dockes
bf6bbfbf14 arrange to enable passing a match term as an argument when opening a document with the native editor (only / mostly pdf for now) 2012-10-02 14:40:09 +02:00
Jean-Francois Dockes
0b65142149 dont highlight snippet page number matching search term 2012-10-02 11:52:44 +02:00
Jean-Francois Dockes
2e0cd5bc82 Only create the snippets menu entry if doc has pages. Add code for a snippets window link inside the result list 2012-10-02 10:56:23 +02:00
Jean-Francois Dockes
eca84d32cb add type for .tcl 2012-10-02 10:41:13 +02:00
Jean-Francois Dockes
6930255001 missing include 2012-10-02 08:28:43 +02:00
Jean-Francois Dockes
4f0ccb69b7 small touchups to the aspell suggestions code 2012-10-01 17:28:30 +02:00
Jean-Francois Dockes
8f1b706b81 default to stripped index 2012-10-01 17:27:16 +02:00
Jean-Francois Dockes
ca57607a35 indexStripChars config variable 2012-10-01 17:26:45 +02:00
Jean-Francois Dockes
822ff8c454 comments and small fixes to case/diac code 2012-10-01 17:26:16 +02:00
Jean-Francois Dockes
580615da28 fix 2 glitches in pdf page numer handling 2012-10-01 11:27:16 +02:00
Jean-Francois Dockes
99f36613e8 added a few case and diacritics sensitivity test cases 2012-09-27 20:12:24 +02:00
Jean-Francois Dockes
96bdac2859 snippets: need a multimap for the group container 2012-09-27 13:12:07 +02:00
Jean-Francois Dockes
8a5cc2f707 snippets: assign slots by group of derived terms 2012-09-27 12:34:30 +02:00
Jean-Francois Dockes
e48d402823 moved snippets generation code from db to query object 2012-09-26 12:13:40 +02:00
Jean-Francois Dockes
94b571aac6 merged the case/diac sensitivity code back into trunk 2012-09-25 19:20:24 +02:00
Jean-Francois Dockes
603a26f67b Added tag PAGES for changeset 2d3c20acfcf4 2012-09-25 19:13:54 +02:00
Jean-Francois Dockes
91a2c5c338 Detect doc source snippets capability 2012-09-25 16:02:41 +02:00
Jean-Francois Dockes
f896f41d93 temporary aspell suggest workaround 2012-09-25 15:40:11 +02:00
Jean-Francois Dockes
4241f87109 comments and test driver changes 2012-09-25 15:38:26 +02:00
Jean-Francois Dockes
4681ce672a use table in snippets popup 2012-09-23 18:26:40 +02:00
Jean-Francois Dockes
7a3cfa6c77 Separate count and context for snippets in the snippets popup from the default values for the result list 2012-09-23 18:19:43 +02:00
Jean-Francois Dockes
694755a2d0 disable real time indexing setup gui if system type does not support monitor mode 2012-09-23 18:13:25 +02:00
Jean-Francois Dockes
c2dab20d7e preliminary implementation for the snippets "open to page" popup window 2012-09-20 13:51:40 +02:00
Jean-Francois Dockes
ab85754757 simplified the except_trans container, previous method was buggy 2012-09-20 13:46:09 +02:00
Jean-Francois Dockes
60f505ccd7 cleaned up uproplist file 2012-09-20 07:15:15 +02:00
Jean-Francois Dockes
a1ada61c79 added a bunch of graphic characters to the word breakers list and changed the container used from set to unordered_set for speed 2012-09-19 19:50:45 +02:00
Jean-Francois Dockes
64571dcb84 changed variable names for clarity 2012-09-19 19:49:43 +02:00
Jean-Francois Dockes
80c1ab84a4 comments 2012-09-19 19:48:38 +02:00
Jean-Francois Dockes
ad6d3f4dd6 Bad concatenation generated absurd page numbers for document with several multiple paeg breaks 2012-09-19 14:04:20 +02:00
Jean-Francois Dockes
e22b347767 ensure that recoll configured with indexStripChars=1 runs as compiled with -DRCL_INDEX_STRIPCHARS 2012-09-15 15:16:20 +02:00
Jean-Francois Dockes
48e9a4f901 case sensitivity: clause mod flags were lost on the way 2012-09-14 15:02:51 +02:00
Jean-Francois Dockes
166624f7f2 Make Recoll optionally sensitive to case and diacritics 2012-09-14 14:34:27 +02:00
Jean-Francois Dockes
7fcfe27952 circache: handle the case where the cache dir exists but not the file 2012-09-14 08:24:40 +02:00
Jean-Francois Dockes
d1d014b089 fix manifest 2012-09-14 08:23:41 +02:00
Jean-Francois Dockes
e9938e8aa2 add greek messages to qmake 2012-09-14 08:22:54 +02:00
Jean-Francois Dockes
ca247b8e86 none 2012-09-13 12:32:05 +02:00
Jean-Francois Dockes
18835b5515 merged from cdsens branch 2012-09-13 12:28:42 +02:00
Jean-Francois Dockes
cdfef1ea1f small mods inocuous or auxiliary to case/diac sensitivity but which can live in main branch 2012-09-13 12:25:01 +02:00
Jean-Francois Dockes
b2a1a88365 none 2012-09-13 12:07:27 +02:00
Jean-Francois Dockes
aef050f2f3 aspell: use isSpellingCandidate() instead of local brew 2012-09-13 12:04:38 +02:00
Jean-Francois Dockes
510a8ecd7b doc 2012-09-13 12:01:09 +02:00
Jean-Francois Dockes
7f5cd0af91 release 2812 2012-09-13 11:59:16 +02:00
Jean-Francois Dockes
60d4843576 Remove improper assertion use from beagle cache handling code 2012-09-13 09:44:47 +02:00
Jean-Francois Dockes
eaaa7aa419 none 2012-09-12 10:33:04 +02:00
Jean-Francois Dockes
80dd073b08 Display page numbers inside abstracts when possible (e.g.: for pdfs) 2012-09-11 12:44:40 +02:00
Jean-Francois Dockes
af6d99398b none 2012-09-11 10:11:41 +02:00
Jean-Francois Dockes
e32b1e2bfb new script to start/stop indexing according to battery/ac power status 2012-09-11 09:51:13 +02:00
Jean-Francois Dockes
44469d723b Fix the page break recording function for multiple page break at same term position 2012-09-10 18:14:21 +02:00
Jean-Francois Dockes
4733fa826b fixed incorrect unique() algo usage 2012-09-01 17:27:49 +02:00
Jean-Francois Dockes
fabfa3a8ff more small prefix fixups 2012-08-28 17:36:24 +02:00
Jean-Francois Dockes
49d0bd2fe3 simplified field config a bit by moving some hard coded values from the c++ to the fields file 2012-08-28 14:44:53 +02:00
Jean-Francois Dockes
48028b7cba arrange to create all stem dicts in one pass 2012-08-28 13:39:34 +02:00
Jean-Francois Dockes
4295a3c582 create class StemDb as derived class from XapSynFamily 2012-08-27 15:38:08 +02:00
Jean-Francois Dockes
1f395ed982 added code for unac to perform pure case-folding 2012-08-27 12:40:57 +02:00
Jean-Francois Dockes
d1d6d65ef1 small code reorg 2012-08-25 19:08:42 +02:00
Jean-Francois Dockes
b149fe1e8c Reimplemented the stem expansion mechanism over Xapian synonyms feature 2012-08-25 11:12:36 +02:00
Jean-Francois Dockes
d81c69a55a added some currency symbols to punctuation 2012-08-24 20:54:03 +02:00
Jean-Francois Dockes
9bb1d4d177 comment 2012-08-24 15:39:16 +02:00
Jean-Francois Dockes
1fba4f050e comment 2012-08-24 15:31:02 +02:00
Jean-Francois Dockes
26791ca0f1 simplified stemdb-creating code 2012-08-24 14:50:24 +02:00
Jean-Francois Dockes
6cce642781 comments doc and formatting 2012-08-24 10:26:16 +02:00
Jean-Francois Dockes
5128a4dcfd add <pre style="white-space: pre-wrap"> to plain text HTML display options 2012-08-22 09:36:08 +02:00
Jean-Francois Dockes
c96b5d11f0 add capability to remember page breaks generated by, e.g. pdftotext, and use them to start an external viewer on a match page 2012-08-21 15:03:02 +02:00
Jean-Francois Dockes
a0398a6afd comments 2012-08-21 08:38:23 +02:00
Jean-Francois Dockes
ccaa499b54 slightly simplified temp file handling 2012-08-21 08:35:39 +02:00
Jean-Francois Dockes
bce82def6f allow multiple directory specs as in dir:/home/me -dir:tmp 2012-08-19 08:27:12 +02:00
Jean-Francois Dockes
6c5272ddaa described the new preview search in the manual 2012-08-18 16:08:15 +02:00
Jean-Francois Dockes
1ed0f4ddf8 Arrange for plaintorich to keep track of the link between match area and search terms. Use this in preview to allow walking the matches for a given search term group 2012-08-18 12:15:43 +02:00
Jean-Francois Dockes
35ed2b3ca9 defined data structure to pass around the search term description used for highlighting and other 2012-08-17 10:45:00 +02:00
Jean-Francois Dockes
e7ba520bed highlighting: avoid trying to match groups in area already highlighted: this could prevent an effective match further in the text 2012-08-14 08:33:52 +02:00
Jean-Francois Dockes
761d4240a3 comments 2012-08-14 08:20:12 +02:00
Jean-Francois Dockes
a368c1350f small fixups for suffix-less opendoc files and jpeg2000 2012-08-14 08:18:40 +02:00
Jean-Francois Dockes
8b4bec5ca4 none 2012-08-14 08:16:17 +02:00
Jean-Francois Dockes
75a7beec1b dont terminate monitor for permission-related addwatch error 2012-08-14 08:15:49 +02:00
Jean-Francois Dockes
54b92ef62a comment 2012-08-14 08:08:16 +02:00
Jean-Francois Dockes
d25ab7aae0 xesam is irrelevant 2012-08-06 14:44:12 +02:00
Jean-Francois Dockes
b1a4106fe6 none 2012-07-28 09:11:32 +02:00
Jean-Francois Dockes
dfecd574a8 Escape html characters in fields before inserting them in result paragraph. Closes issue #99 2012-07-27 09:00:45 +02:00
Jean-Francois Dockes
e909fc21e8 comment 2012-06-05 14:14:02 +02:00
Jean-Francois Dockes
6cc820d1eb internals: virtualized the doc fetcher interface 2012-06-05 07:16:11 +02:00
Jean-Francois Dockes
0136d93d7f doc 2012-06-01 16:11:45 +02:00
Jean-Francois Dockes
0f1dad919f rclsoff: modified to correctly handle exported google docs. Also improves handling regular libreoffice files: spaces were eaten around <span> tags 2012-05-28 09:45:08 +02:00
Jean-Francois Dockes
5e71e67051 messages typos 2012-05-28 09:42:59 +02:00
Jean-Francois Dockes
7028575d7d add archive icon 2012-05-28 09:42:12 +02:00
Jean-Francois Dockes
dfa53a0808 typo in 2754:5a63b39e0c5a 2012-05-28 09:41:40 +02:00
Jean-Francois Dockes
57b1a8cf45 config consistency touchups 2012-05-28 09:11:33 +02:00
Jean-Francois Dockes
9f9a4091c6 added archive icon 2012-05-28 09:10:24 +02:00
Jean-Francois Dockes
99a88a356b doc 2012-05-28 09:09:26 +02:00
Jean-Francois Dockes
b622d50404 config checking test program 2012-05-28 09:08:55 +02:00
Jean-Francois Dockes
b824db50af Greek messages 2012-05-27 12:08:24 +02:00
Jean-Francois Dockes
5eb6eb6995 indexing daemon: reexecute after the initial indexing pass to get rid of memory if it was heavy 2012-05-25 18:51:52 +02:00
Jean-Francois Dockes
0b0286412b doc 2012-05-25 18:36:41 +02:00
Jean-Francois Dockes
e9d2719247 config: getDaemSkippedPaths() could crash if daemSkippedPaths was empty 2012-05-25 17:06:01 +02:00
Jean-Francois Dockes
8866431f41 Added contributed rcltar filter 2012-05-25 17:04:39 +02:00
Jean-Francois Dockes
07a4cc832c Added contributed rcltar filter 2012-05-25 17:04:22 +02:00
Jean-Francois Dockes
8cc33a60b4 use title as canonic field name for caption/title/subject, instead of caption 2012-05-25 11:09:10 +02:00
Jean-Francois Dockes
83af1a37da Python module: add Doc object method to retrieve binary path 2012-05-25 08:25:42 +02:00
Jean-Francois Dockes
799c6bf2d6 1.17.3 doc+pack changes 2012-05-24 16:33:46 +02:00
Jean-Francois Dockes
b73b1ab68c fixed missing button text in index config 2012-05-24 15:43:51 +02:00
Jean-Francois Dockes
a7698d37a4 Absurd input source global variable in Binc imap caused the indexer to crash when an email message contained attachments which were disguised messages (ie: x-mimehtml), because this would cause a recursive call into Binc with a different data source (ie: string instead of original fd, clobbering the original source 2012-05-24 14:52:41 +02:00
Jean-Francois Dockes
fdac5f91b1 doc 2012-05-24 14:34:28 +02:00
Jean-Francois Dockes
99bbf51afa GUI: fixed issues with result list scrolling and paging 2012-05-23 10:37:38 +02:00
Jean-Francois Dockes
71a62799e3 doc 2012-05-22 08:22:45 +02:00
Jean-Francois Dockes
23691ea278 test xml 2012-05-21 12:02:17 +02:00
Jean-Francois Dockes
73c79bb4ac doc 2012-05-21 11:50:13 +02:00
Jean-Francois Dockes
4c227d2456 Handle non-standard file name suffixes during decompression. Recoll should now index arbitrary compressed XML formats. Closes issue #93 2012-05-21 11:50:09 +02:00
Jean-Francois Dockes
9b06f6cb25 Get recoll to compile with clang (on freebsd) and eliminate warnings. You can no build recoll with make CXX=clang LINK=clang 2012-05-20 17:35:03 +02:00
Jean-Francois Dockes
f7e1d687b1 rclxml 2012-05-19 09:23:24 +02:00
Jean-Francois Dockes
6f30ff3ed2 rclxml 2012-05-19 09:23:09 +02:00
Jean-Francois Dockes
a99d132569 mac 2012-05-19 09:19:18 +02:00
Jean-Francois Dockes
f67e7ed81e macports for 1.17.2 2012-05-19 09:18:49 +02:00
Jean-Francois Dockes
49815cfd7d release 1.17.2 packaging and doc touchups 2012-05-17 16:15:49 +02:00
Jean-Francois Dockes
45b98b2e16 1.17.2 ubuntu packaging 2012-05-17 11:40:53 +02:00
Jean-Francois Dockes
33373cef94 the unac_except_trans example had been lost 2012-05-16 14:05:25 +02:00
Jean-Francois Dockes
c1cea67333 index: added sanity checks to mail handler 2012-05-16 12:25:44 +02:00
Jean-Francois Dockes
b34826a083 html: small additional cleanup after previous <body> processing modification 2012-05-16 10:13:53 +02:00
Jean-Francois Dockes
289e88c1bc Html: Just ignore opening and closing <body> and <html> tags. Current browsers show text before or after the body and ignore multiple body tags. Not pushed to 1.17 maint because of possible disruption. Closes issue #92 2012-05-16 10:07:09 +02:00
Jean-Francois Dockes
80075b9b26 "program" unit test: file -i output changed from ie text/x-perl to application/x-perl on freebsd 2012-05-16 10:04:34 +02:00
Jean-Francois Dockes
b1aa233fd0 fstreewalk test driver. Added option to try setNoFnmPathname 2012-05-16 10:03:17 +02:00
Jean-Francois Dockes
a9215c6818 GUI crash: protect against starting simultaneous queries 2012-05-15 16:11:12 +02:00
Jean-Francois Dockes
697e4ccb46 new lens version 2012-05-15 15:03:54 +02:00
Jean-Francois Dockes
72df119e21 Unity Lens: display thumbnail when available, fix small icons issues 2012-05-15 13:23:17 +02:00
Jean-Francois Dockes
6d627af054 doc 2012-05-15 08:29:05 +02:00
Jean-Francois Dockes
eb46597ee1 ubuntu packaging: fixed partial debian merge and updated for 1.17 maintenance changes 2012-05-15 08:28:55 +02:00
Jean-Francois Dockes
0c058bd2ef debug messages for icon paths 2012-05-14 17:31:25 +02:00
Jean-Francois Dockes
ba2b0935a0 unity lens: try to be informative instead of crashing when the index does not exist 2012-05-14 11:23:25 +02:00
Jean-Francois Dockes
c07acd7402 doc 2012-05-14 11:03:15 +02:00
Jean-Francois Dockes
db97cb0534 mimemap: add csv -> text/plain association 2012-05-14 11:02:42 +02:00
Jean-Francois Dockes
c3663057cd doc 2012-05-04 11:54:30 +02:00
Jean-Francois Dockes
884ee1817d rcldb fix crash caused by 5c8d237c639d in case there is only one index 2012-05-04 11:54:07 +02:00
Jean-Francois Dockes
592a1b5f39 GUI: add error dialog from spell_w when db cant be opened 2012-05-04 10:56:48 +02:00
Jean-Francois Dockes
822acc79d2 GUI: only do the result up to date check before preview for the main index (we cant update the others anyway) 2012-05-04 09:52:14 +02:00
Jean-Francois Dockes
f8c9452228 deflt config: create association for .eml and [view] entries for text/x-mail and message/rfc822 to make possible to Open individual messages (ie with thunderbird) 2012-05-04 09:50:58 +02:00
Jean-Francois Dockes
b435dd8cc3 reslist: only create an Open popup menu entry if we would create an Open link (doc type has a viewer). 2012-05-04 09:46:20 +02:00
Jean-Francois Dockes
630b9400d2 solaris locking fix 2012-04-28 15:32:38 +02:00
Jean-Francois Dockes
27a4f93a39 missing include 2012-04-28 15:31:51 +02:00
Jean-Francois Dockes
99f20c32c4 rcldia fix from the author 2012-04-21 20:48:44 +02:00
Jean-Francois Dockes
c123da6428 markup fix 2012-04-21 08:30:03 +02:00
Jean-Francois Dockes
2a81e8bc16 Applied a bunch of markup corrections and improvements as suggested by JCP, our kind Spanish translator and docbook guru 2012-04-19 21:39:47 +02:00
Jean-Francois Dockes
6d8ff61c0f recoll_applet: stricter option checking in 1.17 broke the applet 2012-04-18 09:01:16 +02:00
Jean-Francois Dockes
5b2ada3a54 --disable-python-module broke install 2012-04-18 08:59:52 +02:00
Jean-Francois Dockes
28cbec7bfc fix version string updating 2012-04-14 15:43:15 +02:00
Jean-Francois Dockes
5e3b3d52fd doc 2012-04-14 15:42:56 +02:00
Jean-Francois Dockes
fbe90156b5 Cleaned up file name handling. Fixes that file names were sometimes indexed split, sometimes not. They now always are both, with different prefixes. Forces reindex 2012-04-13 09:18:08 +02:00
Jean-Francois Dockes
44732da80e more delistification 2012-04-12 08:15:50 +02:00
Jean-Francois Dockes
a17b7523e7 cosmetics: list -> vector in more places 2012-04-11 19:58:08 +02:00
Jean-Francois Dockes
5462f639d3 use vector instead of list for execmd arg list 2012-04-11 15:36:49 +02:00
Jean-Francois Dockes
6dfbaed494 add -Z "in place reset" option to recollindex 2012-04-11 11:33:33 +02:00
873 changed files with 164232 additions and 66718 deletions

137
.hgignore
View file

@ -1,102 +1,97 @@
syntax: glob syntax: glob
*.o
*.dep *.dep
*.dep.stamp *.dep.stamp
*.o
.libs
*.la
stamp-h1
.dirstamp
libtool
.deps
*.lo
*~ *~
\#* \#*
src/Makefile *.obj
src/autom4te.cache *.sdf
src/bincimapmime/alldeps *.tlog
src/common/autoconfig.h *.lib
src/common/rclversion.h *.idb
*.log
*.pdb
.vs
*.exe
*.ilk
ptrans
src/aclocal.m4
src/compile
src/config.guess
src/config.sub
src/depcomp
src/install-sh
src/Makefile.in
src/ltmain.sh
src/m4/libtool.m4
src/m4/ltoptions.m4
src/m4/ltsugar.m4
src/m4/ltversion.m4
src/m4/lt~obsolete.m4
src/missing
src/config.log src/config.log
src/config.status src/config.status
src/desktop/unity-lens-recoll/Makefile src/configure
src/desktop/unity-lens-recoll/autom4te.cache src/Makefile
src/desktop/unity-lens-recoll/bin/unity-recoll-daemon src/autom4te.cache
src/desktop/unity-lens-recoll/config.log src/common/autoconfig.h
src/desktop/unity-lens-recoll/config.status src/common/rclversion.h
src/desktop/unity-lens-recoll/data/recoll.lens src/doc/user/webhelp/docs/*
src/desktop/unity-lens-recoll/data/unity-lens-recoll.service
src/doc/user/HTML.manifest
src/doc/user/index.html
src/doc/user/rcl.indexing.beaglequeue.html
src/doc/user/rcl.indexing.config.html
src/doc/user/rcl.indexing.html
src/doc/user/rcl.indexing.monitor.html
src/doc/user/rcl.indexing.periodic.html
src/doc/user/rcl.indexing.storage.html
src/doc/user/rcl.install.building.html
src/doc/user/rcl.install.config.html
src/doc/user/rcl.install.external.html
src/doc/user/rcl.install.html
src/doc/user/rcl.introduction.html
src/doc/user/rcl.introduction.recoll.html
src/doc/user/rcl.introduction.search.html
src/doc/user/rcl.kicker-applet.html
src/doc/user/rcl.program.api.html
src/doc/user/rcl.program.fields.html
src/doc/user/rcl.program.html
src/doc/user/rcl.search.anchorwild.html
src/doc/user/rcl.search.commandline.html
src/doc/user/rcl.search.complex.html
src/doc/user/rcl.search.custom.html
src/doc/user/rcl.search.desktop.html
src/doc/user/rcl.search.history.html
src/doc/user/rcl.search.html
src/doc/user/rcl.search.lang.html
src/doc/user/rcl.search.multidb.html
src/doc/user/rcl.search.preview.html
src/doc/user/rcl.search.reslist.html
src/doc/user/rcl.search.sort.html
src/doc/user/rcl.search.termexplorer.html
src/doc/user/rcl.search.tips.html
src/doc/user/rcl.search.wildcards.html
src/doc/user/rcl.searchkcl.html
src/doc/user/rcl.searchkio.html
src/doc/user/rcl.searchkio.searchabledocs.html
src/doc/user/usermanual.aux
src/doc/user/usermanual.html
src/doc/user/usermanual.html-text
src/doc/user/usermanual.log
src/doc/user/usermanual.out
src/doc/user/usermanual.pdf src/doc/user/usermanual.pdf
src/doc/user/usermanual.tex-pdf
src/doc/user/usermanual.tex-pdf-tmp
src/doc/user/usermanual.txt
src/filters/rclexecm.pyc src/filters/rclexecm.pyc
src/filters/rcllatinclass.pyc src/filters/rcllatinclass.pyc
src/index/alldeps src/recollindex
src/index/alldeps.stamp
src/index/recollindex
src/kde/kioslave/kio_recoll/builddir src/kde/kioslave/kio_recoll/builddir
src/lib/alldeps src/python/recoll/Makefile
src/lib/librcl.a
src/mk/localdefs
src/mk/sysconf
src/python/recoll/build src/python/recoll/build
src/python/recoll/recoll/__init__.pyc
src/python/recoll/setup.py src/python/recoll/setup.py
src/python/samples/recollgui/rclmain.py
src/python/samples/recollgui/rclmain.pyc
src/recollq
src/xadump
src/qtgui/.moc/* src/qtgui/.moc/*
src/qtgui/.obj/* src/qtgui/.obj/*
src/qtgui/.ui/* src/qtgui/.ui/*
src/qtgui/Makefile src/qtgui/Makefile
src/qtgui/i18n/*.qm
src/qtgui/qrc_recoll.cpp src/qtgui/qrc_recoll.cpp
src/qtgui/recoll src/qtgui/recoll
src/qtgui/recoll.app
src/qtgui/recoll.pro src/qtgui/recoll.pro
src/query/alldeps src/qtgui/recoll.app
src/query/recollq
src/query/xadump
src/recollinstall
src/sampleconf/rclmon.sh src/sampleconf/rclmon.sh
src/sampleconf/recoll.conf src/sampleconf/recoll.conf
tests/casediac/aspdict.en.rws
tests/casediac/idxstatus.txt
tests/casediac/index.pid
tests/casediac/mimeview
tests/casediac/missing
tests/casediac/recoll.conf
tests/casediac/xapiandb
tests/config/aspdict.en.rws tests/config/aspdict.en.rws
tests/config/history tests/config/history
tests/config/idxstatus.txt tests/config/idxstatus.txt
tests/config/index.pid tests/config/index.pid
tests/config/missing tests/config/missing
tests/config/xapiandb tests/config/xapiandb
tests/indexedmimetypes/aspdict.en.rws
tests/indexedmimetypes/idxstatus.txt tests/indexedmimetypes/idxstatus.txt
tests/indexedmimetypes/index.pid tests/indexedmimetypes/index.pid
tests/indexedmimetypes/mimeview
tests/indexedmimetypes/missing
tests/indexedmimetypes/recoll.conf
tests/indexedmimetypes/xapiandb
tests/xattr/mimeview
website/usermanual/* website/usermanual/*
website/idxthreads/forkingRecoll.html
website/idxthreads/xapDocCopyCrash.html
website/pages/recoll-mingw.html
website/pages/recoll-webui-install-wsgi.html
website/pages/recoll-windows.html
website/pages/recoll-windows-faq.html

View file

@ -55,6 +55,7 @@ share/pixmaps/recoll.png
%%DATADIR%%/filters/rclwpd %%DATADIR%%/filters/rclwpd
%%DATADIR%%/filters/rclxls %%DATADIR%%/filters/rclxls
%%DATADIR%%/filters/rclzip %%DATADIR%%/filters/rclzip
%%DATADIR%%/filters/rcl7z
%%DATADIR%%/filters/xdg-open %%DATADIR%%/filters/xdg-open
%%DATADIR%%/images/aptosid-book.png %%DATADIR%%/images/aptosid-book.png
%%DATADIR%%/images/aptosid-manual.png %%DATADIR%%/images/aptosid-manual.png

View file

@ -4,29 +4,57 @@
# For the kio: (and kdesdk?) # For the kio: (and kdesdk?)
# sudo apt-get install pkg-kde-tools cdbs # sudo apt-get install pkg-kde-tools cdbs
RCLVERS=1.17.1 RCLVERS=1.22.4
LENSVERS=1.17.1.2654 LENSVERS=1.19.10.3543
SCOPEVERS=1.20.2.4
PPAVERS=1 PPAVERS=1
#
RCLSRC=/y/home/dockes/projets/fulltext/recoll/src
SCOPESRC=/y/home/dockes/projets/fulltext/unity-scope-recoll
RCLDOWNLOAD=/y/home/dockes/projets/lesbonscomptes/recoll
case $RCLVERS in case $RCLVERS in
[23]*) PPANAME=recollexp-ppa;; [23]*) PPANAME=recollexp-ppa;;
1.14*) PPANAME=recoll-ppa;; 1.14*) PPANAME=recoll-ppa;;
*) PPANAME=recoll15-ppa;; *) PPANAME=recoll15-ppa;;
esac esac
#PPANAME=recollexp-ppa #PPANAME=recollexp-ppa
echo "PPA: $PPANAME. Type CR if Ok, else ^C" echo "PPA: $PPANAME. Type CR if Ok, else ^C"
read rep read rep
####### QT4 fatal()
debdir=debianrclqt4 {
series4="lucid maverick natty oneiric precise" echo $*; exit 1
series4="natty oneiric precise" }
check_recoll_orig()
{
if test ! -f recoll_${RCLVERS}.orig.tar.gz ; then
cp -p $RCLDOWNLOAD/recoll-${RCLVERS}.tar.gz \
recoll_${RCLVERS}.orig.tar.gz || \
fatal "Can find neither recoll_${RCLVERS}.orig.tar.gz nor " \
"recoll-${RCLVERS}.tar.gz"
fi
}
# Note: recoll 1.22+ builds on precise fail. precise stays at 1.21
####### QT
debdir=debian
# Note: no new releases for lucid: no webkit. Or use old debianrclqt4 dir.
series="trusty xenial yakkety"
series=
if test "X$series" != X ; then
check_recoll_orig
test -d recoll-${RCLVERS} || tar xvzf recoll_${RCLVERS}.orig.tar.gz
fi
for series in $series ; do
for series in $series4 ; do
rm -rf recoll-${RCLVERS}/debian rm -rf recoll-${RCLVERS}/debian
cp -rp ${debdir}/ recoll-${RCLVERS}/debian cp -rp ${debdir}/ recoll-${RCLVERS}/debian || exit 1
if test -f $debdir/control-$series ; then if test -f $debdir/control-$series ; then
cp -f -p $debdir/control-$series recoll-${RCLVERS}/debian/control cp -f -p $debdir/control-$series recoll-${RCLVERS}/debian/control
@ -44,43 +72,121 @@ for series in $series4 ; do
done done
### KIO ### KIO
seriesk="lucid maverick natty oneiric precise" series="trusty xenial yakkety"
seriesk="" series="xenial yakkety"
debdir=debiankio debdir=debiankio
topdir=kio-recoll-${RCLVERS}
if test "X$series" != X ; then
check_recoll_orig
if test ! -f kio-recoll_${RCLVERS}.orig.tar.gz ; then
cp -p recoll_${RCLVERS}.orig.tar.gz \
kio-recoll_${RCLVERS}.orig.tar.gz || exit 1
fi
if test ! -d $topdir ; then
mkdir temp
cd temp
tar xvzf ../recoll_${RCLVERS}.orig.tar.gz || exit 1
mv recoll-${RCLVERS} ../$topdir || exit 1
cd ..
fi
fi
for svers in $series ; do
for series in $seriesk ; do rm -rf $topdir/debian
cp -rp ${debdir}/ $topdir/debian || exit 1
rm -rf recoll-${RCLVERS}/debian sed -e s/SERIES/$svers/g \
cp -rp ${debdir}/ recoll-${RCLVERS}/debian
sed -e s/SERIES/$series/g \
-e s/PPAVERS/${PPAVERS}/g \ -e s/PPAVERS/${PPAVERS}/g \
< ${debdir}/changelog > recoll-${RCLVERS}/debian/changelog ; < ${debdir}/changelog > $topdir/debian/changelog ;
if test $svers = "trusty" ; then
mv -f $topdir/debian/control-4 $topdir/debian/control
mv -f $topdir/debian/rules-4 $topdir/debian/rules
else
rm -f $topdir/debian/control-4 $topdir/debian/rules-4
fi
(cd $topdir;debuild -S -sa) || exit 1
(cd recoll-${RCLVERS};debuild -S -sa) || break dput $PPANAME kio-recoll_${RCLVERS}-0~ppa${PPAVERS}~${svers}1_source.changes
dput $PPANAME kio-recoll_${RCLVERS}-0~ppa${PPAVERS}~${series}1_source.changes
done done
### Unity Lens ### Unity Lens
seriesl="natty oneiric precise" series="precise"
#seriesl="oneiric" series=
debdir=debianunitylens debdir=debianunitylens
topdir=recoll-lens-${LENSVERS}
if test "X$series" != X ; then
if test ! -f recoll-lens_${LENSVERS}.orig.tar.gz ; then
if test -f recoll-lens-${LENSVERS}.tar.gz ; then
mv recoll-lens-${LENSVERS}.tar.gz \
recoll-lens_${LENSVERS}.orig.tar.gz
else
fatal "Can find neither recoll-lens_${LENSVERS}.orig.tar.gz nor " \
"recoll-lens-${LENSVERS}.tar.gz"
fi
fi
test -d $topdir || tar xvzf recoll-lens_${LENSVERS}.orig.tar.gz || exit 1
fi
for series in $seriesl ; do for series in $series ; do
rm -rf recoll-lens-${LENSVERS}/debian rm -rf $topdir/debian
cp -rp ${debdir}/ recoll-lens-${LENSVERS}/debian cp -rp ${debdir}/ $topdir/debian || exit 1
sed -e s/SERIES/$series/g \ sed -e s/SERIES/$series/g \
-e s/PPAVERS/${PPAVERS}/g \ -e s/PPAVERS/${PPAVERS}/g \
< ${debdir}/changelog > recoll-lens-${LENSVERS}/debian/changelog ; < ${debdir}/changelog > $topdir/debian/changelog ;
(cd recoll-lens-${LENSVERS};debuild -S -sa) || break (cd $topdir;debuild -S -sa) || break
dput $PPANAME recoll-lens_${LENSVERS}-1~ppa${PPAVERS}~${series}1_source.changes dput $PPANAME \
recoll-lens_${LENSVERS}-1~ppa${PPAVERS}~${series}1_source.changes
done
### Unity Scope
series="trusty xenial yakkety"
series=
debdir=debianunityscope
if test ! -d ${debdir}/ ; then
rm -f ${debdir}
ln -s ${SCOPESRC}/debian $debdir
fi
topdir=unity-scope-recoll-${SCOPEVERS}
if test "X$series" != X ; then
if test ! -f unity-scope-recoll_${SCOPEVERS}.orig.tar.gz ; then
if test -f unity-scope-recoll-${SCOPEVERS}.tar.gz ; then
mv unity-scope-recoll-${SCOPEVERS}.tar.gz \
unity-scope-recoll_${SCOPEVERS}.orig.tar.gz
else
if test -f $RCLDOWNLOAD/unity-scope-recoll-${SCOPEVERS}.tar.gz;then
cp -p $RCLDOWNLOAD/unity-scope-recoll-${SCOPEVERS}.tar.gz \
unity-scope-recoll_${SCOPEVERS}.orig.tar.gz || fatal copy
else
fatal "Can find neither " \
"unity-scope-recoll_${SCOPEVERS}.orig.tar.gz nor " \
"$RCLDOWNLOAD/unity-scope-recoll-${SCOPEVERS}.tar.gz"
fi
fi
fi
test -d $topdir || tar xvzf unity-scope-recoll_${SCOPEVERS}.orig.tar.gz \
|| exit 1
fi
for series in $series ; do
rm -rf $topdir/debian
cp -rp ${debdir}/ $topdir/debian || exit 1
sed -e s/SERIES/$series/g \
-e s/PPAVERS/${PPAVERS}/g \
< ${debdir}/changelog > $topdir/debian/changelog ;
(cd $topdir;debuild -S -sa) || break
dput $PPANAME \
unity-scope-recoll_${SCOPEVERS}-1~ppa${PPAVERS}~${series}1_source.changes
done done

View file

@ -0,0 +1,23 @@
README for Debian
-----------------
Installing over an older version: 1.18 introduces significant index formats
changes to support optional character case and diacritics sensitivity, and it
will be advisable to reset the index in most cases. This will be best done by
destroying the index directory (rm -rf ~/.recoll/xapiandb).
If 1.18 is not configured for case and diacritics sensitivity, it is mostly
compatible with 1.17 indexes.
-- Kartik Mistry <kartik@debian.org> Tue, 13 Nov 2012 12:33:00 +0530
Installing over an older version: 1.16 is mostly compatible with 1.15 indexes,
except for a few differences for weird terms containing punctuation signs.
Perform a full index pass if installing over an older version. The simplest
way to do this is to quit all recoll programs and just delete the index
directory (rm -rf ~/.recoll/xapiandb), then start recoll or recollindex.
recollindex -z will do the same in most cases.
Also, using the anchored search feature requires a full reindex.
-- Kartik Mistry <kartik@debian.org> Thu, 22 Sep 2011 21:30:05 +0530

View file

@ -0,0 +1,639 @@
recoll (1.22.4-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Fix advanced search 'start search' not doing anything with qt5
-- Jean-Francois Dockes <jf@dockes.org> Tue, 25 Nov 2016 11:38:00 +0100
recoll (1.22.3-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
*
-- Jean-Francois Dockes <jf@dockes.org> Tue, 21 Jun 2016 15:11:00 +0200
recoll (1.22.2-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Packaging fixes.
-- Jean-Francois Dockes <jf@dockes.org> Thu, 16 Jun 2016 09:11:00 +0200
recoll (1.22.1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Fixed two GUI crashes
* Small other fixes
-- Jean-Francois Dockes <jf@dockes.org> Tue, 14 Jun 2016 17:31:00 +0200
recoll (1.22.0-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* New build based on autotools
* Synonyms
* Windows port
-- Jean-Francois Dockes <jf@dockes.org> Tue, 05 Apr 2016 16:01:00 +0200
recoll (1.21.5-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Fix query language parser for multiple mime or rclcat entries
-- Jean-Francois Dockes <jf@dockes.org> Fri, 29 Jan 2016 14:48:00 +0200
recoll (1.21.4-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Show confirmation dialog when opening temp files + small bug fixes
-- Jean-Francois Dockes <jf@dockes.org> Tue, 12 Jan 2016 16:19:00 +0200
recoll (1.21.3-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Fix webcache size being capped at 1 GB
-- Jean-Francois Dockes <jf@dockes.org> Sat, 31 Oct 2015 09:26:00 +0200
recoll (1.21.2-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* New special indexing dialog in GUI
* Fix advanced search dialog "Any Clause" mode
* Fixed a few bounds issues catched by Windows VC++
* Miscellaneous other minor fixes
-- Jean-Francois Dockes <jf@dockes.org> Tue, 01 Oct 2015 09:40:00 +0200
recoll (1.21.0-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* New bison-based query parser.
* Improves filter execution performance
* Save/reload queries
-- Jean-Francois Dockes <jf@dockes.org> Tue, 16 Jun 2015 18:10:00 +0200
recoll (1.20.6-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Fix some decompression issues with serious performance and
system load consequences in some cases (depending on data): minimum
checking that enough temp space is available before uncompressing, no
need to uncompress tar.gz files, set a default of 20 MBs for
maxcompressedfilekbs.
* rclscribus fixes.
* GUI messages: Danish translation and fix 2 dialogs which were not
translated improvements.
-- Jean-Francois Dockes <jf@dockes.org> Sat, 25 Apr 2015 14:36:00 +0200
recoll (1.20.4-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Should have been in 1.20.3: skip compressed fs image files like xxx.img.gz
by default (mimemap:recoll_noindex).
-- Jean-Francois Dockes <jf@dockes.org> Mon, 30 Mar 2015 10:06:00 +0200
recoll (1.20.3-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* fixes a bug where the real time indexer did not process the web queue
* miscellaneous usability improvements in the GUI.
* Copy sample fragbuts.xml file if it does not exist
-- Jean-Francois Dockes <jf@dockes.org> Sat, 28 Mar 2015 09:40:00 +0200
recoll (1.20.1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.20.1 brings improved indexing of compound words like email addresses
and miscellaneous usability improvements in the GUI.
-- Jean-Francois Dockes <jf@dockes.org> Fri, 19 Dec 2014 08:14:00 +0200
recoll (1.19.14p2-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.19.14p2 fixes Bengali diacritics processing, a memory leak in the
Python module, and a few minor issues in the filters.
-- Jean-Francois Dockes <jf@dockes.org> Thu, 11 Sep 2014 07:47:00 +0200
recoll (1.19.14p1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.19.14p1 fixes a descriptor and memory leak in the Python module. The
main programs and library are unchanged.
-- Jean-Francois Dockes <jf@dockes.org> Thu, 26 Jun 2014 13:14:00 +0200
recoll (1.19.14-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.19.14 fixes two relatively minor but ennoying issues in indexing:
- The use of a separate readonly Database object for querying the index
while indexing would trigger Xapian errors, (bad block reads), and
subsequent up-to-date check failures (leading to unnecessary
reindexing). The jury is out as to the cause, but using the same
object for reading and writing seems to eliminate the problem.
- A spurious log message in the child process between forking and
executing the filter could block on a mutex, and lead to a 20 mn
timeout for the affected father process thread (happened only in
multithread mode).
-- Jean-Francois Dockes <jf@dockes.org> Sat, 07 Jun 2014 18:56:00 +0200
recoll (1.19.13-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.19.13 hopefully fixes the multithreaded indexing crashes and silences
the noisy ppt extractor failures.
-- Jean-Francois Dockes <jf@dockes.org> Thu, 06 May 2014 14:22:00 +0200
recoll (1.19.12p2-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.19.12 p1 + restable doubleclick
-- Jean-Francois Dockes <jf@dockes.org> Sun, 07 Apr 2014 16:17:00 +0200
recoll (1.19.12p1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* 1.19.12 install forgot the xls filter
-- Jean-Francois Dockes <jf@dockes.org> Sun, 06 Apr 2014 06:57:00 +0200
recoll (1.19.12-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Minor fixes to 1.19.11. Make metadata stored length a parameter.
* New xls dumper based on mso-dumper removes catdoc dependancy
* Move out the code for the Ubuntu Unity lens and scope
-- Jean-Francois Dockes <jf@dockes.org> Mon, 02 Apr 2014 15:12:00 +0200
recoll (1.19.11p1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* minor fixes to 1.19.10
-- Jean-Francois Dockes <jf@dockes.org> Mon, 27 Nov 2013 09:54:00 +0200
recoll (1.19.10-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Support for saucy in 1.19. Separate python and python3 packages
-- Jean-Francois Dockes <jf@dockes.org> Sat, 23 Nov 2013 16:01:46 +0100
recoll (1.18.1-1) experimental; urgency=low
* New upstream version:
+ Please read README.Debian for changes in index db format.
* debian/patches/txtcsvopen.diff:
+ Dropped. Merged upstream.
* debian/patches/fix-manpage-typos.patch:
+ Added patch to fix manpage typos and groff errors.
* debian/control:
+ Added VCS-* fields.
-- Kartik Mistry <kartik@debian.org> Tue, 13 Nov 2012 12:29:46 +0530
recoll (1.17.3-2) unstable; urgency=medium
* debian/rules:
+ Call dh_python2 for python-recoll. (Closes: #681586)
* debian/control:
+ Added X-Python-Version field for correct Python version dependency.
-- Kartik Mistry <kartik@debian.org> Sat, 14 Jul 2012 20:20:56 +0530
recoll (1.17.3-1) unstable; urgency=low
* New upstream release.
* debian/patches/txtcsvopen.diff:
+ Added patch to fix opening of compressed text-files with gnumeric.
(Closes: #674756)
-- Kartik Mistry <kartik@debian.org> Fri, 08 Jun 2012 11:46:57 +0530
recoll (1.17.2-1) unstable; urgency=low
* New upstream release:
+ Dropped patches: fix-kFreeBSD-ftbfs.patch, recoll_ionice_getpid.patch.
These are merged with upstream.
+ Refreshed patch: fix-python-install.patch.
* debian/rules, debian/control:
+ Added hardening support.
* debian/copyright:
+ Fixed duplicate Copyright sections.
-- Kartik Mistry <kartik@debian.org> Fri, 18 May 2012 10:59:21 +0530
recoll (1.17.1-2) unstable; urgency=low
* debian/patches:
+ fix-kFreeBSD-ftbfs.patch: Added patch to fix FTBFS on kFreeBSD from
upstream (Closes: #667083)
+ recoll_ionice_getpid.patch: Added patch to fix FTBFS with gcc-4.7 from
upstream (Closes: #667352)
-- Kartik Mistry <kartik@debian.org> Wed, 04 Apr 2012 12:16:48 +0530
recoll (1.17.1-1) unstable; urgency=low
* New upstream release.
* Enable Python module resulting into new binary: python-recoll.
* debian/control:
+ Updated Build-Deps: libqtwebkit-dev, python-all-dev.
+ Added python-recoll binary.
+ Updated Standards-Version to 3.9.3
* debian/rules:
+ Build Python module by default.
* debian/recoll.menu, debian/python-recoll.install, debian/recoll.install:
+ Changes for new binary package.
* debian/copyright:
+ Updated to copyright-format 1.0
+ Updated upstream and Debian copyright.
+ Fixed unicode.org/copyright.html URL.
-- Kartik Mistry <kartik@debian.org> Tue, 27 Mar 2012 12:15:51 +0530
recoll (1.16.2-1) unstable; urgency=low
* New upstream release.
* debian/copyright:
+ Updated as per DEP-5 format, simplying copyright file.
* debian/control:
+ Dropped: flac, vorbis-tools and libid3-tools from Suggests, as
python-mutagen handles audio now.
+ Dropped: lyx from Suggests, as it will be too heavy for most of users as
discussed with upstream.
* debian/rules:
+ Use STRIP variable to strip during install phase. This makes patch
01_nostrip_final_binaries_437901.diff obsolete, removed this patch.
-- Kartik Mistry <kartik@debian.org> Wed, 09 Nov 2011 20:35:16 +0530
recoll (1.16.1-1) unstable; urgency=low
* New upstream release.
* debian/copyright:
+ Added missing GPL-3 URL in debian/* copyright section.
-- Kartik Mistry <kartik@debian.org> Thu, 29 Sep 2011 10:06:54 +0530
recoll (1.16.0-1) unstable; urgency=low
* New upstream release:
+ See README.Debian for upgrade note and information.
* debian/copyright:
+ Updated as per latest DEP-5 format.
* debian/control:
+ Recommends: xdg-utils now.
* debian/rules:
+ Added recommends build targets.
-- Kartik Mistry <kartik@debian.org> Thu, 22 Sep 2011 21:30:25 +0530
recoll (1.15.9-1) unstable; urgency=low
* New upstream release:
+ Dropped patch 02_recoll_staticfix_626882.diff, merged upstream
-- Kartik Mistry <kartik@debian.org> Wed, 15 Jun 2011 09:20:20 +0530
recoll (1.15.8-2) unstable; urgency=low
* debian/patches/02_recoll_staticfix_626882.diff:
+ Added patch to fix segfault in 1.15.8. Patch from Jean-Francois Dockes
<jf@dockes.org> (Closes: #626882)
-- Kartik Mistry <kartik@debian.org> Tue, 17 May 2011 09:57:50 +0530
recoll (1.15.8-1) unstable; urgency=low
* New upstream release.
* debian/patches/02_kfreebsd-ftbfs.diff:
+ Removed. Merged with upstream.
* debian/control:
+ Updated to Standards-Version 3.9.2 (no changes needed)
-- Kartik Mistry <kartik@debian.org> Thu, 12 May 2011 09:47:21 +0530
recoll (1.15.7-2) unstable; urgency=low
* Applied patch 02_kfreebsd-ftbfs.diff from upstream to fix FTBFS
on kFreeBSD-* (Closes: #618796)
* debian/copyright:
+ Updated to latest DEP-5 specification
-- Kartik Mistry <kartik@debian.org> Fri, 15 Apr 2011 18:38:54 +0530
recoll (1.15.7-1) unstable; urgency=low
* New upstream release:
+ Fixed: Segmentation fault when file type radio button clicked.
(Closes: #617353)
* debian/patches/02_manpage_fix.diff:
+ Removed. Merged with upstream.
-- Kartik Mistry <kartik@debian.org> Sun, 13 Mar 2011 09:07:57 +0530
recoll (1.15.2-1) unstable; urgency=low
* Upload to unstable
* New upstream release
* debian/patches:
+ Refreshed 01_nostrip_final_binaries_437901.diff
+ Added 02_manpage_fix.diff to fix manpage groff issues
-- Kartik Mistry <kartik@debian.org> Tue, 15 Feb 2011 11:25:58 +0530
recoll (1.14.4-1) experimental; urgency=low
* New upstream release
* debian/copyright:
+ Updated for DEP-5 format specification
-- Kartik Mistry <kartik@debian.org> Thu, 02 Dec 2010 00:29:06 +0530
recoll (1.14.2-1) experimental; urgency=low
* New upstream release
* debian/control:
+ Added xlstproc as Recommends (Closes: #587684)
+ Added python-mutagen as Suggests
* debian/patches:
+ Refreshed 01_nostrip_final_binaries_437901.diff
+ Removed 02_recoll-prepare-for-xapian-1.2.diff, merged with upstream
-- Kartik Mistry <kartik@debian.org> Mon, 27 Sep 2010 17:52:17 +0530
recoll (1.13.04-3) unstable; urgency=low
* Added patch for xapian 1.2 compatibility from Olly Betts <olly@survex.com>
(Closes: #579929)
-- Kartik Mistry <kartik@debian.org> Mon, 03 May 2010 09:47:16 +0530
recoll (1.13.04-2) unstable; urgency=low
* debian/control:
+ Added missing packages to Suggests: flac, libid3-tools, lyx, pstotext,
python-chm, untex, vorbis-tools Thanks to Ivan Vilata i Balaguer
<ivan@selidor.net> (Closes: #578441)
-- Kartik Mistry <kartik@debian.org> Fri, 23 Apr 2010 11:07:00 +0530
recoll (1.13.04-1) unstable; urgency=low
* New upstream release
-- Kartik Mistry <kartik@debian.org> Fri, 16 Apr 2010 10:39:02 +0530
recoll (1.13.02-2) unstable; urgency=low
* debian/control:
+ Don't suggest xpdf (Closes: #569333)
* debian/copyright:
+ Updated Debian package copyright year
* Removed unused README.source file
-- Kartik Mistry <kartik@debian.org> Fri, 19 Feb 2010 10:42:53 +0530
recoll (1.13.02-1) unstable; urgency=low
* New upstream release
* debian/control:
+ Updated to Standards-Version 3.8.4 (no changes needed)
-- Kartik Mistry <kartik@debian.org> Wed, 03 Feb 2010 11:00:53 +0530
recoll (1.13.01-1) unstable; urgency=low
* New upstream release
+ Fixed bug that causes field values ignored for Capitalized words and
phrases
-- Kartik Mistry <kartik@debian.org> Fri, 08 Jan 2010 10:09:15 +0530
recoll (1.13.00-1) unstable; urgency=low
* New upstream release
* debian/control:
+ Fixed package descriptions, replaced QT->Qt (Closes: #563725)
* debian/patches/01_nostrip_final_binaries_437901.diff:
+ Refreshed patch for upstream changes
* Converted package to new source format '3.0 (quilt)'
-- Kartik Mistry <kartik@debian.org> Tue, 05 Jan 2010 23:23:30 +0530
recoll (1.12.4-1) unstable; urgency=low
* New upstream release:
+ Fixed FTBFS with binutils-gold (Closes: #556315)
-- Kartik Mistry <kartik@debian.org> Fri, 11 Dec 2009 00:08:37 +0530
recoll (1.12.3-1) unstable; urgency=low
* New upstream release
* debian/control:
+ Updated Build-Depends on libqt4-dev as we are building Qt4 ui now
* debian/rules:
+ Make sure that we call qmake-qt4
-- Kartik Mistry <kartik@debian.org> Thu, 29 Oct 2009 22:44:50 +0530
recoll (1.12.2-1) unstable; urgency=low
* New upstream release:
+ Dropped patch 02_manpage_fixes.diff, merged with upstream
* Added debian/README.source file to confirm with latest policy
* Removed debian/docs, we are using dh_installdocs in debian/rules
* debian/control:
+ Wrapped up Build-Depends
+ Depends on quilt, since patch system is using quilt now
+ Updated to Standards-Version 3.8.3
+ Updated dependency on libxapian-dev (>= 1.0.15)
* debian/rules:
+ Changes for quilt migration
-- Kartik Mistry <kartik@debian.org> Fri, 23 Oct 2009 10:14:05 +0530
recoll (1.12.1-1) unstable; urgency=low
* New upstream release
* debian/control:
+ Updated to Standards-Version 3.8.2 (no changes needed)
* debian/copyright:
+ [Lintian] Removed licenses URL links to symlink
-- Kartik Mistry <kartik@debian.org> Sat, 27 Jun 2009 20:08:28 +0530
recoll (1.12.0-1) unstable; urgency=low
* New upstream release
* debian/copyright:
+ [Lintian] Updated for use of correct copyright symbol © instead of (C)
+ Updated Debian packaging copyright year
* debian/rules:
+ Used dh_prep instead of deprecated dh_clean -k
* debian/control:
+ Updated debhelper dependency to 7
* debian/patches:
+ Dropped 02_gcc-snapshot-missing-headers-fix.dpatch, merged with upstream
+ Added patch 02_manpage_fixes.dpatch for groff warnings
-- Kartik Mistry <kartik@debian.org> Sat, 28 Feb 2009 14:33:53 +0530
recoll (1.11.0-2) unstable; urgency=low
* debian/control:
+ Added versioned build-dep on libxapian-dev, Thanks to Brad Sawatzky
<brad+debian@swatter.net> for catch (Closes: #507473)
+ Add libimage-exiftool-perl as Suggests in which I forgot in
previous upload
* debian/changelog:
+ Fixed typo from previous upload entry
-- Kartik Mistry <kartik@debian.org> Wed, 03 Dec 2008 15:05:55 +0530
recoll (1.11.0-1) unstable; urgency=low
* New upstream release:
+ Remembers missing filters in first run (Closes: #500690)
* debian/control:
+ Added libimage-exiftool-perl as Suggests (Closes: #502427)
+ Added Python as recommaded due to filters/rclpython script
although, its not necessary as it will be installed only
when Python is present
* debian/patches:
+ Refreshed patch for gcc 4.4 FTBFS (Closes: #505376)
* debian/copyright:
+ Updated for newly added filter and image files
-- Kartik Mistry <kartik@debian.org> Thu, 13 Nov 2008 21:18:15 +0530
recoll (1.10.6-1) unstable; urgency=low
* New upstream release
+ Fixed typo in tooltip in indexing configuration (Closes: #486689)
+ Dropped patch 03_manpage_fixes.dpatch, merged with upstream
* debian/control:
+ Updated to Standards-Version 3.8.0 (no changes needed)
+ Updated my maintainer email address
* debian/copyright:
+ Updated my maintainer email address
+ Updated license text to proposed license format
+ Updated upstream copyright year
-- Kartik Mistry <kartik@debian.org> Thu, 11 Sep 2008 16:06:48 +0530
recoll (1.10.2-1) unstable; urgency=low
* New upstream release
+ Updated patch debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch
Some portions are now merged with upstream
* debian/copyright:
+ Fixed indentation to 80 characters
+ Updated Debian package copyright year
-- Kartik Mistry <kartik.mistry@gmail.com> Thu, 29 May 2008 23:25:40 +0530
recoll (1.10.1-1) unstable; urgency=low
* New upstream release
+ Updated debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch
Some portions are merged with upstream
* debian/control:
+ Fixed short description, Thanks to Mohammed Adnène Trojette
<adn+deb@diwi.org>
* debian/patches/03_manpage_fixes.dpatch:
+ Added patch to fix manpage groff warnings
-- Kartik Mistry <kartik.mistry@gmail.com> Wed, 27 Feb 2008 18:41:25 +0530
recoll (1.10.0-5) unstable; urgency=low
* debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch:
+ Really fixed the FTBFS with gcc-4.3/g++-4.3 (Closes: #455652)
-- Kartik Mistry <kartik.mistry@gmail.com> Sun, 27 Jan 2008 14:37:53 +0530
recoll (1.10.0-4) unstable; urgency=low
* debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch:
+ Updated patch to fix missing include header in qtgui/main.cpp
(Closes: #455652)
* debian/copyright:
+ Updated missing license for qtgui/q3richtext_p.h
+ Moved other copyright holders for GPL above license
to make it readable
-- Kartik Mistry <kartik.mistry@gmail.com> Wed, 23 Jan 2008 10:42:20 +0530
recoll (1.10.0-3) unstable; urgency=low
* debian/control:
+ Added external helper programs and utilities to Suggests field
(Closes: #441629, #457033)
-- Kartik Mistry <kartik.mistry@gmail.com> Fri, 28 Dec 2007 08:12:52 +0530
recoll (1.10.0-2) unstable; urgency=low
* debian/control:
+ Updated Standards-Version to 3.7.3
* debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch:
+ Added patch to fix compilation with gcc-snapshot due to
missing headers (Closes: #455652)
* debian/rules:
+ Fixed clean target
-- Kartik Mistry <kartik.mistry@gmail.com> Tue, 11 Dec 2007 14:42:47 +0530
recoll (1.10.0-1) unstable; urgency=low
* New upstream release
* debian/control:
+ Moved Homepage: entry to control field
+ Dropped unnecessary dependency on qt3-dev-tools
-- Kartik Mistry <kartik.mistry@gmail.com> Wed, 28 Nov 2007 19:54:58 +0530
recoll (1.9.0-1) unstable; urgency=low
* New upstream release
* debian/patches: dropped 02_desktop_entry_fixes.dpatch, merged with
upstream, rewrote 01_nostrip_final_binary_437901.dpatch after upstream
changes
* debian/menu: used Data Management since it is better and appropriate
* debian/copyright: added missing copyright from index/csguess.cpp
-- Kartik Mistry <kartik.mistry@gmail.com> Wed, 12 Sep 2007 14:05:39 +0530
recoll (1.8.2-3) unstable; urgency=low
* debian/rules: added better clean target, better configure flags,
separated LDFLAGS
* Added dpatch support
* debian/patches/01_nostrip_final_binary_437901.dpatch: added patch to not
strip binary from upstream (Closes: #437901)
* debian/patches/02_desktop_entry_fixes.dpatch: added patch to fix desktop
menu entry according to freedesktop standards
* debian/menu: fixed according to latest menu policy, changed subsection to
Tools from Databases (hint taken from beagle)
* debian/copyright: moved copyright out of license section, adjusted
copyrights portions under proper license
-- Kartik Mistry <kartik.mistry@gmail.com> Sat, 18 Aug 2007 20:28:49 +0530
recoll (1.8.2-2) unstable; urgency=low
* debian/rules: xapian is dynamically linked now, Thanks to
Jean-Francois Dockes <jean-francois.dockes@wanadoo.fr> (Closes: #427783)
* Fixed debian/watch file, Thanks to Vincent Fourmond <fourmond@debian.org>
-- Kartik Mistry <kartik.mistry@gmail.com> Fri, 08 Jun 2007 10:51:01 +0530
recoll (1.8.2-1) unstable; urgency=low
* New upstream release
* debian/watch: fixed now
* debian/control: fixed long descriptions
-- Kartik Mistry <kartik.mistry@gmail.com> Tue, 22 May 2007 15:24:54 +0530
recoll (1.8.1-1) unstable; urgency=low
* Initial release (Closes: #422039)
* Based on package prepared by Jean-Francois Dockes <jean-francois.dockes@wanadoo.fr>
-- Kartik Mistry <kartik.mistry@gmail.com> Thu, 3 May 2007 12:15:02 +0530

View file

@ -0,0 +1,85 @@
Source: recoll
Section: x11
Priority: optional
Maintainer: Jean-Francois Dockes <jfd@recoll.org>
Build-Depends: autotools-dev,
debhelper (>= 7),
dh-python,
bison,
libqt4-dev,
libqtwebkit-dev,
libx11-dev,
libxapian-dev (>= 1.2.0),
libz-dev,
python-all-dev (>= 2.6.6-3~),
python3-all-dev,
Standards-Version: 3.9.6
X-Python-Version: >= 2.7
Homepage: http://www.lesbonscomptes.com/recoll
Vcs-Git: git://anonscm.debian.org/collab-maint/recoll.git
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/recoll.git;a=summary
Package: recoll
Architecture: any
Depends: ${misc:Depends}, ${shlibs:Depends}, python
Recommends: python-recoll, aspell, xdg-utils, xsltproc,
python-libxml2, python-libxslt1
Suggests: antiword,
ghostscript,
libimage-exiftool-perl,
poppler-utils,
pstotext,
python-chm,
python-mutagen,
unrtf,
untex
Description: Personal full text search package with a Qt GUI
This package is a personal full text search package is based on a very strong
backend (Xapian), for which it provides an easy to use and feature-rich
interface.
.
Features:
* Qt-based GUI
* Supports the following document types (and their compressed versions)
- Natively: text, html, OpenOffice files, maildir and mailbox (Mozilla and
IceDove mail) with attachments, pidgin log files
- With external helpers: pdf (pdftotext), postscript (ghostscript), msword
(antiword), excel, ppt (catdoc), rtf (unrtf)
* Powerful query facilities, with boolean searches, phrases, filter on file
types and directory tree
* Support for multiple charsets, Internal processing and storage uses Unicode
UTF-8
* Stemming performed at query time (can switch stemming language after
indexing)
* Easy installation. No database daemon, web server or exotic language
necessary
* An indexer which runs either as a thread inside the GUI or as an external,
cron'able program
Package: python-recoll
Architecture: any
Section: python
Depends: recoll (= ${binary:Version}),
${misc:Depends},
${python:Depends},
${shlibs:Depends}
Description: Python extension for recoll
Personal full text search package which is based on a very strong backend
(Xapian), for which it provides an easy to use and feature-rich interface.
.
This package provides Python extension module for recoll which can be use to
extend recoll such as an Ubuntu Unity Lens.
Package: python3-recoll
Architecture: any
Section: python
Depends: recoll (= ${binary:Version}),
${misc:Depends},
${python3:Depends},
${shlibs:Depends}
Description: Python extension for recoll
Personal full text search package which is based on a very strong backend
(Xapian), for which it provides an easy to use and feature-rich interface.
.
This package provides Python extension module for recoll which can be use to
extend recoll such as an Ubuntu Unity Lens.

View file

@ -21,9 +21,9 @@ Copyright: J\xfcrgen Hermann, Mike Brown, Christopher Arndt
License: GPL-2+ License: GPL-2+
Files: internfile/htmlparse.cpp mh_html.cpp Files: internfile/htmlparse.cpp mh_html.cpp
Copyright: 1999-2001, BrightStation PLC Copyright: 1999-2001, BrightStation PLC,
Copyright: 2001, Ananova Ltd 2001, Ananova Ltd,
Copyright: 2002-2004, Olly Betts 2002-2004, Olly Betts.
License: GPL-2+ License: GPL-2+
Files: unac/* Files: unac/*
@ -83,42 +83,11 @@ License: LGPL-2+
can be found in `/usr/share/common-licenses/LGPL-2' and can be found in `/usr/share/common-licenses/LGPL-2' and
`/usr/share/common-licenses/LGPL-2.1' and `/usr/share/common-licenses/LGPL-3'. `/usr/share/common-licenses/LGPL-2.1' and `/usr/share/common-licenses/LGPL-3'.
Files: qtgui/q3richtext_p.h
Copyright: 1992-2007, Trolltech ASA. All rights reserved
License:
This file is part of the Qt3Support module of the Qt Toolkit.
.
This file may be used under the terms of the GNU General Public License
version 2.0 as published by the Free Software Foundation and appearing in the
file LICENSE.GPL included in the packaging of this file. Please review the
following information to ensure GNU General Public Licensing requirements will
be met: http://trolltech.com/products/qt/licenses/licensing/opensource/
.
If you are unsure which license is appropriate for your use, please review the
following information:
http://trolltech.com/products/qt/licenses/licensing/licensingoverview
or contact the sales department at sales@trolltech.com.
.
In addition, as a special exception, Trolltech gives you certain additional
rights. These rights are described in the Trolltech GPL Exception version 1.0,
which can be found at http://www.trolltech.com/products/qt/gplexception/ and
in the file GPL_EXCEPTION.txt in this package.
.
In addition, as a special exception, Trolltech, as the sole copyright
holder for Qt Designer, grants users of the Qt/Eclipse Integration
plug-in the right for the Qt/Eclipse Integration to link to
functionality provided by Qt Designer and its related libraries.
.
Trolltech reserves all rights not expressly granted herein.
.
Trolltech ASA (c) 2007
.
This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Files: common/uproplist.h Files: common/uproplist.h
Copyright: 1991-2006, Unicode, Inc. Copyright: 1991-2006, Unicode, Inc.
License: License: Unicode
License: Unicode
All rights reserved. Distributed under the Terms of Use in All rights reserved. Distributed under the Terms of Use in
http://www.unicode.org/copyright.html http://www.unicode.org/copyright.html
. .
@ -153,7 +122,9 @@ License:
Files: utils/md5.* Files: utils/md5.*
Copyright: 1991-1992, RSA Data Security, Inc. All rights reserved. Copyright: 1991-1992, RSA Data Security, Inc. All rights reserved.
License: License: RSA
License:RSA
MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
. .
License to copy and use this software is granted provided that it is License to copy and use this software is granted provided that it is
@ -175,8 +146,10 @@ License:
Files: desktop/xdg-utils-1.0.1/* Files: desktop/xdg-utils-1.0.1/*
Copyright: 2006, Kevin Krammer <kevin.krammer@gmx.at>, Copyright: 2006, Kevin Krammer <kevin.krammer@gmx.at>,
Jeremy White <jwhite@codeweavers.com> Jeremy White <jwhite@codeweavers.com>.
License: License: MIT
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights
@ -197,6 +170,8 @@ License:
Files: index/csguess.cpp Files: index/csguess.cpp
Copyright: 2000-2004, Mikio Hirabayashi Copyright: 2000-2004, Mikio Hirabayashi
License: LGPL-2.1+
License: LGPL-2.1+ License: LGPL-2.1+
This file is part of QDBM, Quick Database Manager. This file is part of QDBM, Quick Database Manager.
. .

View file

@ -0,0 +1,2 @@
usr/lib/python2*/*-packages/*.egg-info
usr/lib/python2*/*-packages/recoll/*

View file

@ -0,0 +1,2 @@
usr/lib/python3*/*-packages/*.egg-info
usr/lib/python3*/*-packages/recoll/*

View file

@ -0,0 +1,12 @@
usr/bin
usr/lib/recoll
usr/share/applications
usr/share/icons
usr/share/man
usr/share/pixmaps
usr/share/recoll/doc
usr/share/recoll/examples
usr/share/recoll/filters
usr/share/recoll/filters
usr/share/recoll/images
usr/share/recoll/translations

View file

@ -0,0 +1,2 @@
?package(recoll):needs="X11" section="Applications/Data Management" \
title="Personal Search Tool" command="/usr/bin/recoll"

View file

@ -3,11 +3,14 @@
# Uncomment this to turn on verbose mode. # Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1 #export DH_VERBOSE=1
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CFLAGS = -Wall -g CFLAGS += -Wall -g
#LDFLAGS = -Wl,-z,defs #LDFLAGS += -Wl,-z,defs
#build qt4 UI only #build qt4 UI only
export QMAKE=qmake-qt4 export QMAKE=qmake-qt4
@ -31,7 +34,7 @@ build-arch: build-stamp
build-indep: build-stamp build-indep: build-stamp
build-stamp: config.status build-stamp: config.status
dh_testdir dh_testdir
$(MAKE) $(MAKE) -j 5
touch $@ touch $@
clean: clean:
@ -46,11 +49,18 @@ install:
dh_testroot dh_testroot
dh_prep dh_prep
dh_installdirs dh_installdirs
$(MAKE) prefix=$(CURDIR)/debian/tmp/usr install
$(MAKE) STRIP=ls prefix=$(CURDIR)/debian/tmp/usr install chmod a+x $(CURDIR)/debian/tmp/usr/share/recoll/examples/rclmon.sh
chmod a-x $(CURDIR)/debian/tmp/usr/share/recoll/filters/rclxslt.py
chmod a-x $(CURDIR)/debian/tmp/usr/share/recoll/filters/rclexec1.py
chmod a-x $(CURDIR)/debian/tmp/usr/share/recoll/filters/rclexec1.py
rm -f $(CURDIR)/debian/tmp/usr/lib/recoll/librecoll.la
(cd python/recoll; python setup.py install \ (cd python/recoll; python setup.py install \
--install-layout=deb \ --install-layout=deb \
--prefix=$(CURDIR)/debian/tmp/usr ) --prefix=$(CURDIR)/debian/tmp/usr )
(cd python/recoll; python3 setup.py install \
--install-layout=deb \
--prefix=$(CURDIR)/debian/tmp/usr )
binary-arch: build install binary-arch: build install
dh_testdir dh_testdir
@ -60,6 +70,9 @@ binary-arch: build install
dh_installmenu dh_installmenu
dh_installman dh_installman
dh_install --sourcedir=debian/tmp dh_install --sourcedir=debian/tmp
dh_makeshlibs
dh_python2 -p python-recoll
dh_python3 -p python3-recoll
dh_link dh_link
dh_strip dh_strip
dh_compress dh_compress

View file

@ -0,0 +1,2 @@
version=3
http://www.lesbonscomptes.com/recoll/download.html recoll-(.*)\.tar\.gz

View file

@ -1,3 +1,65 @@
kio-recoll (1.22.4-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Switch to kf5 for appropriate series. Update to 1.22.4 (same as .3)
-- Jean-Francois Dockes <jf@dockes.org> Sat, 26 Nov 2016 09:46:00 +0100
kio-recoll (1.22.3-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* No changes specific to the KIO, just use the 1.22 lib. Update to .3
-- Jean-Francois Dockes <jf@dockes.org> Fri, 25 Nov 2016 10:59:00 +0100
kio-recoll (1.22.2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* No changes specific to the KIO, just use the 1.22 lib.
-- Jean-Francois Dockes <jf@dockes.org> Tue, 15 Jun 2016 09:57:00 +0200
kio-recoll (1.21.0-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* No changes specific to the KIO, just use the 1.21 lib.
-- Jean-Francois Dockes <jf@dockes.org> Tue, 16 Jun 2015 18:21:00 +0200
kio-recoll (1.20.6-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Increase the default maximum number of entries displayed in a directory
window (can be adjusted with the kio_max_direntries configuration
variable).
* Display entries incrementally instead of sending the whole
list at once.
-- Jean-Francois Dockes <jf@dockes.org> Sat, 25 Apr 2015 14:47:00 +0200
kio-recoll (1.20.1-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to version 1.20.1
-- Jean-Francois Dockes <jf@dockes.org> Fri, 19 Dec 2014 08:14:00 +0200
kio-recoll (1.19.14p2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* No changes, build for Ubuntu Utopic
-- Jean-Francois Dockes <jf@dockes.org> Sat, 06 Dec 2014 08:44:00 +0200
kio-recoll (1.19.12-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.19.12
-- Jean-Francois Dockes <jf@dockes.org> Wed, 02 Apr 2014 15:50:00 +0200
kio-recoll (1.19.10-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.19.10
-- Jean-Francois Dockes <jf@dockes.org> Sat, 25 Nov 2013 18:00:00 +0100
kio-recoll (1.19.2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.19.2
-- Jean-Francois Dockes <jf@dockes.org> Mon, 13 May 2013 12:09:00 +0100
kio-recoll (1.18.2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.18.2
-- Jean-Francois Dockes <jf@dockes.org> Mon, 18 Apr 2013 18:05:00 +0100
kio-recoll (1.18.1-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.18.1
-- Jean-Francois Dockes <jf@dockes.org> Mon, 05 Nov 2012 13:25:00 +0100
kio-recoll (1.17.0-0~ppaPPAVERS~SERIES1) SERIES; urgency=low kio-recoll (1.17.0-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.17.0 * Updated package to recoll version 1.17.0
-- Jean-Francois Dockes <jf@dockes.org> Sun, 25 Mar 2012 18:05:00 +0200 -- Jean-Francois Dockes <jf@dockes.org> Sun, 25 Mar 2012 18:05:00 +0200

View file

@ -2,15 +2,26 @@ Source: kio-recoll
Section: kde Section: kde
Priority: extra Priority: extra
Maintainer: Jean-Francois Dockes <jfd@recoll.org> Maintainer: Jean-Francois Dockes <jfd@recoll.org>
Build-Depends: cdbs, cmake, debhelper (>= 7), kdelibs5-dev (>= 4:4.2.2), pkg-kde-tools (>= 0.4.0), libxapian-dev, libz-dev Build-Depends: cdbs,
Standards-Version: 3.8.1 cmake,
libtool,
debhelper (>= 7),
bison,
kdelibs5-dev (>= 4:4.2.2),
qtbase5-dev,
extra-cmake-modules,
kio-dev,
pkg-kde-tools (>= 0.4.0),
libxapian-dev,
libz-dev
Standards-Version: 3.9.7
Homepage: http://www.recoll.org/ Homepage: http://www.recoll.org/
Package: kio-recoll Package: kio-recoll
Architecture: any Architecture: any
Depends: ${misc:Depends}, ${shlibs:Depends} Depends: ${misc:Depends}, ${shlibs:Depends}, recoll
Description: A Recoll KIO slave for KDE 4 Description: Recoll KIO slave for KDE 4
A Recoll KIO slave for KDE 4, allows performing a Recoll search by Recoll KIO slave for KDE 4, allows performing a Recoll search by
entering an appropriate URL in a KDE open dialog, or with an HTML-based entering an appropriate URL in a KDE open dialog, or with an HTML-based
interface displayed in Konqueror. interface displayed in Konqueror.
The HTML-based interface is similar to the Recoll GUI QT-based interface, The HTML-based interface is similar to the Recoll GUI QT-based interface,

View file

@ -0,0 +1,33 @@
Source: kio-recoll
Section: kde
Priority: extra
Maintainer: Jean-Francois Dockes <jfd@recoll.org>
Build-Depends: cdbs,
cmake,
libtool,
debhelper (>= 7),
bison,
kdelibs5-dev (>= 4:4.2.2),
pkg-kde-tools (>= 0.4.0),
libxapian-dev,
libz-dev
Standards-Version: 3.9.5
Homepage: http://www.recoll.org/
Package: kio-recoll
Architecture: any
Depends: ${misc:Depends}, ${shlibs:Depends}, recoll
Description: A Recoll KIO slave for KDE 4
A Recoll KIO slave for KDE 4, allows performing a Recoll search by
entering an appropriate URL in a KDE open dialog, or with an HTML-based
interface displayed in Konqueror.
The HTML-based interface is similar to the Recoll GUI QT-based interface,
slightly less powerful. It allows performing a search while staying fully
within the KDE framework: drag and drop from the result list works
normally and you have your normal choice of applications for opening files.
An alternative interface uses a directory view of search results. Due to
limitations in the current KIO slave interface, it is currently not
obviously useful.
The interface is described in more detail inside a help file which you can
access by entering recoll:/ inside the konqueror URL line (this works only
if the recoll KIO slave has been previously installed).

View file

@ -54,7 +54,7 @@ Copyright (c) 1991-2004 Unicode, Inc.
COPYRIGHT AND PERMISSION NOTICE COPYRIGHT AND PERMISSION NOTICE
Copyright © 1991-2006 Unicode, Inc. All rights reserved. Distributed under Copyright © 1991-2006 Unicode, Inc. All rights reserved. Distributed under
the Terms of Use in http://www.unicode.org/copyright.html. the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining a Permission is hereby granted, free of charge, to any person obtaining a

View file

@ -0,0 +1,6 @@
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/pkg-kde-tools/makefiles/1/cdbs/kde.mk
DEB_SRCDIR = kde/kioslave/kio_recoll-kde4

View file

@ -0,0 +1 @@
3.0 (quilt)

View file

@ -1,59 +0,0 @@
recoll (1.14.3-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.14.3
-- Jean-Francois Dockes <jf@dockes.org> Thu, 25 Nov 2010 10:25:00 +0200
recoll (1.14.2-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.14.2
-- Jean-Francois Dockes <jf@dockes.org> Sat, 25 Sep 2010 09:37:20 +0200
recoll (1.13.04-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.13.04
-- Jean-Francois Dockes <jf@dockes.org> Thu, 14 Apr 2010 13:42:00 +0200
recoll (1.13.00-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.13.00
-- Jean-Francois Dockes <jf@dockes.org> Tue, 05 Jan 2010 09:52:20 +0100
recoll (1.12.4-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.12.4
-- Jean-Francois Dockes <jf@dockes.org> Wed, 28 Oct 2009 17:16:20 +0200
recoll (1.12.3-0~ppa3~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.12.3
-- Jean-Francois Dockes <jf@dockes.org> Wed, 28 Oct 2009 17:16:20 +0200
recoll (1.12.2-0~ppa3~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.12.2
-- Jean-Francois Dockes <jf@dockes.org> Mon, 19 Oct 2009 16:17:46 +0200
recoll (1.11.0-0ubuntu1) dapper; urgency=low
* Updated package to recoll version 1.11.0
-- Jean-Francois Dockes <jfd@recoll.org> Sun, 19 Oct 2008 09:57:13 +0200
recoll (1.10.6-0ubuntu1) dapper; urgency=low
* Updated package to recoll version 1.10.6
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 12 Sep 2008 10:14:20 +0200
recoll (1.10.4-0ubuntu1) hardy; urgency=low
* Updated package to recoll version 1.10.4
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 29 Aug 2008 15:39:40 +0200
recoll (1.10.1-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.10.1
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 01 Feb 2008 11:30:01 +0100
recoll (1.10.0-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.10.0
-- Jean-Francois Dockes <jfd@recoll.org> Wed, 11 Nov 2007 15:34:51 +0200
recoll (1.9.0-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.9.0
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 7 Sep 2007 15:34:51 +0200
recoll (1.8.1-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.8.1
-- Jean-Francois Dockes <jfd@recoll.org> Wed, 7 Mar 2007 09:08:05 +0100
recoll (1.7.5-0ubuntu1) feisty; urgency=low
* Initial release
-- Jean-Francois Dockes <jfd@recoll.org> Wed, 10 Jan 2007 16:04:13 +0100

View file

@ -1,35 +0,0 @@
Source: recoll
Section: x11
Priority: optional
Maintainer: Jean-Francois Dockes <jf@dockes.org>
Build-Depends: debhelper (>= 5), libqt3-headers, libqt3-mt-dev, qt3-dev-tools, libxapian-dev
Standards-Version: 3.7.2
Package: recoll
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Recommends: aspell
Description: a personal full text search package with a QT GUI
The Recoll personal full text search package is based on a very strong
backend (Xapian), for which it provides an easy to use and feature-rich
interface.
.
Features:
* QT-based GUI.
* Supports the following document types (and their compressed versions):
- Natively: text, html, OpenOffice files, maildir and mailbox
(Mozilla and Thunderbird mail ok) with attachments, gaim log files.
- With external helpers: pdf (pdftotext), postscript (ghostscript),
msword (antiword), excel, ppt (catdoc), rtf (unrtf),
* Powerful query facilities, with boolean searches, phrases, filter on
file types and directory tree.
* Support for multiple charsets. Internal processing and storage uses
Unicode UTF-8.
* Stemming performed at query time (can switch stemming language after
indexing)
* Easy installation. No database daemon, web server or exotic language
necessary.
* An indexer which runs either as a thread inside the GUI or as an
external, cron'able program.
.
Homepage: <http://www.lesbonscomptes.com/recoll>

View file

@ -1,113 +0,0 @@
This package was debianized by Jean-Francois Dockes <jfd@recoll.org> on
Wed, 10 Jan 2007 16:04:13 +0100.
It was downloaded from http://www.recoll.org
Upstream Author: Jean-Francois Dockes <jfd@recoll.org>
Copyright: (C) 2005,2006, Jean-Francois Dockes <jfd@recoll.org>
License:
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
The Debian packaging is (C) 2007, Jean-Francois Dockes <jfd@recoll.org> and
is licensed under the GPL, see above.
Portions of the software are:
Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL:
/* This file is part of The New Aspell
* Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL
* license version 2.0 or 2.1. You should have received a copy of the
* LGPL license along with this library if you did not you can find it
* at http://www.gnu.org/.
On Debian systems, the complete text of the GNU LGPL
can be found in `/usr/share/common-licenses/LGPL-2'.
Copyright 2002-2005 Andreas Aardal Hanssen
Copyright (C) 2000-2004 Mikio Hirabayashi
Copyright 1999,2000,2001 BrightStation PLC
Copyright 2001 Ananova Ltd
Copyright 2002 Olly Betts
Copyright (C) 2000, 2001, 2002 Loic Dachary <loic@senga.org>
- GPL V2 or later, same license text as above
Copyright (c) 1991-2004 Unicode, Inc.
COPYRIGHT AND PERMISSION NOTICE
Copyright © 1991-2006 Unicode, Inc. All rights reserved. Distributed under
the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining a
copy of the Unicode data files and any associated documentation (the "Data
Files") or Unicode software and any associated documentation (the
"Software") to deal in the Data Files or Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, and/or sell copies of the Data Files or Software, and
to permit persons to whom the Data Files or Software are furnished to do
so, provided that (a) the above copyright notice(s) and this permission
notice appear with all copies of the Data Files or Software, (b) both the
above copyright notice(s) and this permission notice appear in associated
documentation, and (c) there is clear notice in each modified Data File or
in the Software as well as in the documentation associated with the Data
File(s) or Software that the data or software has been modified.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written
authorization of the copyright holder.
Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
/*
* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
*
* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
* rights reserved.
*
* License to copy and use this software is granted provided that it
* is identified as the "RSA Data Security, Inc. MD5 Message-Digest
* Algorithm" in all material mentioning or referencing this software
* or this function.
*
* License is also granted to make and use derivative works provided
* that such works are identified as "derived from the RSA Data
* Security, Inc. MD5 Message-Digest Algorithm" in all material
* mentioning or referencing the derived work.
*
* RSA Data Security, Inc. makes no representations concerning either
* the merchantability of this software or the suitability of this
* software for any particular purpose. It is provided "as is"
* without express or implied warranty of any kind.
*
* These notices must be retained in any copies of any part of this
* documentation and/or software.
*/

View file

@ -1 +0,0 @@
README

View file

@ -1,2 +0,0 @@
?package(recoll):needs="X11" section="Apps/Databases"\
title="Personal Search Tool" command="/usr/bin/recoll"

View file

@ -1,69 +0,0 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This has to be exported to make some magic below work.
export DH_OPTIONS
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
config.status: configure
dh_testdir
./configure CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" \
--host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr --mandir=\$${prefix}/share/man
build: build-stamp
build-stamp: config.status
dh_testdir
$(MAKE)
touch $@
clean:
dh_testdir
dh_testroot
rm -f build-stamp
-$(MAKE) distclean
dh_clean
install:
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
$(MAKE) prefix=$(CURDIR)/debian/recoll/usr install
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs ChangeLog
dh_installdocs
dh_installmenu
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary-indep: build install
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

View file

@ -1,12 +0,0 @@
# Example watch control file for uscan
# Rename this file to "watch" and then you can run the "uscan" command
# to check for upstream updates and more.
# See uscan(1) for format
# Compulsory line, this is a version 3 file
version=3
# Uncomment to examine a Webpage
# <Webpage URL> <string match>
http://www.recoll.org/download.html recoll-(.*)\.tar\.gz

View file

@ -1,118 +0,0 @@
recoll (1.17.1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.17.1: unity lens support
-- Jean-Francois Dockes <jf@dockes.org> Tue, 27 Mar 2012 16:21:00 +0200
recoll (1.17.0-0~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.17.0
-- Jean-Francois Dockes <jf@dockes.org> Mon, 18 Mar 2012 16:50:00 +0200
recoll (1.16.2-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.16.2
-- Jean-Francois Dockes <jf@dockes.org> Mon, 07 Nov 2011 17:50:00 +0200
recoll (1.16.1-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.16.1
-- Jean-Francois Dockes <jf@dockes.org> Wed, 28 Sep 2011 15:07:00 +0200
recoll (1.16.0-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.16.0
-- Jean-Francois Dockes <jf@dockes.org> Wed, 07 Sep 2011 18:30:00 +0200
recoll (1.15.8-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.15.8
-- Jean-Francois Dockes <jf@dockes.org> Mon, 02 May 2011 17:27:00 +0200
recoll (1.15.7-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.15.7
-- Jean-Francois Dockes <jf@dockes.org> Thu, 10 Mar 2011 10:54:00 +0200
recoll (1.15.5-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.15.5
-- Jean-Francois Dockes <jf@dockes.org> Fri, 04 Mar 2011 13:54:00 +0200
recoll (1.15.2-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.15.2
-- Jean-Francois Dockes <jf@dockes.org> Mon, 14 Feb 2011 21:54:00 +0200
recoll (1.15.1-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.15.1 (fixes qt 4.4 build issue on karmic)
-- Jean-Francois Dockes <jf@dockes.org> Wed, 02 Feb 2011 15:48:00 +0200
recoll (1.15.0-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.15.0
-- Jean-Francois Dockes <jf@dockes.org> Wed, 02 Feb 2011 09:48:00 +0200
recoll (1.14.3-0~ppa1~SERIES1) SERIES; urgency=low
* Update to release 1.14.3
-- Jean-Francois Dockes <jf@dockes.org> Thu, 25 Nov 2010 10:25:00 +0200
recoll (1.14.2-0~ppa1~SERIES1) SERIES; urgency=low
* Update to release 1.14.2
-- Jean-Francois Dockes <jf@dockes.org> Sat, 25 Sep 2010 09:37:20 +0200
recoll (1.13.04-0~ppa2~SERIES1) SERIES; urgency=low
* Switch to qt4 on Jaunty.
-- Jean-Francois Dockes <jf@dockes.org> Sat, 01 May 2010 12:15:00 +0200
recoll (1.13.04-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.13.04
-- Jean-Francois Dockes <jf@dockes.org> Thu, 14 Apr 2010 13:42:00 +0200
recoll (1.13.02-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.13.02
* Imported current goodness from debian maintainer control and rules
files. Thanks to Kartik Mistry <kartik@debian.org>
-- Jean-Francois Dockes <jf@dockes.org> Wed, 03 Feb 2010 16:21:00 +0100
recoll (1.13.01-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.13.01
-- Jean-Francois Dockes <jf@dockes.org> Thu, 07 Jan 2010 10:52:00 +0100
recoll (1.13.00-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.13.00
-- Jean-Francois Dockes <jf@dockes.org> Tue, 05 Jan 2010 09:52:20 +0100
recoll (1.12.4-0~ppa1~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.12.4
-- Jean-Francois Dockes <jf@dockes.org> Wed, 28 Oct 2009 17:16:20 +0200
recoll (1.12.3-0~ppa3~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.12.3
-- Jean-Francois Dockes <jf@dockes.org> Wed, 28 Oct 2009 17:16:20 +0200
recoll (1.12.2-0~ppa3~SERIES1) SERIES; urgency=low
* Updated package to recoll version 1.12.2
-- Jean-Francois Dockes <jf@dockes.org> Mon, 19 Oct 2009 16:17:46 +0200
recoll (1.11.0-0ubuntu1) dapper; urgency=low
* Updated package to recoll version 1.11.0
-- Jean-Francois Dockes <jfd@recoll.org> Sun, 19 Oct 2008 09:57:13 +0200
recoll (1.10.6-0ubuntu1) dapper; urgency=low
* Updated package to recoll version 1.10.6
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 12 Sep 2008 10:14:20 +0200
recoll (1.10.4-0ubuntu1) hardy; urgency=low
* Updated package to recoll version 1.10.4
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 29 Aug 2008 15:39:40 +0200
recoll (1.10.1-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.10.1
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 01 Feb 2008 11:30:01 +0100
recoll (1.10.0-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.10.0
-- Jean-Francois Dockes <jfd@recoll.org> Wed, 11 Nov 2007 15:34:51 +0200
recoll (1.9.0-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.9.0
-- Jean-Francois Dockes <jfd@recoll.org> Fri, 7 Sep 2007 15:34:51 +0200
recoll (1.8.1-0ubuntu1) gutsy; urgency=low
* Updated package to recoll version 1.8.1
-- Jean-Francois Dockes <jfd@recoll.org> Wed, 7 Mar 2007 09:08:05 +0100
recoll (1.7.5-0ubuntu1) feisty; urgency=low
* Initial release
-- Jean-Francois Dockes <jfd@recoll.org> Wed, 10 Jan 2007 16:04:13 +0100

View file

@ -1 +0,0 @@
5

View file

@ -1,45 +0,0 @@
Source: recoll
Section: x11
Priority: optional
Maintainer: Jean-Francois Dockes <jf@dockes.org>
Build-Depends: debhelper (>= 7),
autotools-dev,
libqt4-dev,
libqtwebkit-dev,
libxapian-dev (>= 1.0.15),
libx11-dev,
libz-dev,
python-all-dev (>= 2.6.6-3~),
quilt
Standards-Version: 3.9.3
Package: recoll
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Recommends: aspell, python, xdg-utils, xsltproc
Suggests: antiword, catdoc, ghostscript, libimage-exiftool-perl, poppler-utils,
pstotext, python-chm, python-mutagen, unrtf, untex
Description: a personal full text search package with a QT GUI
The Recoll personal full text search package is based on a very strong
backend (Xapian), for which it provides an easy to use and feature-rich
interface.
.
Features:
* QT-based GUI.
* Supports the following document types (and their compressed versions):
- Natively: text, html, OpenOffice files, maildir and mailbox
(Mozilla and Thunderbird mail ok) with attachments, gaim log files.
- With external helpers: pdf (pdftotext), postscript (ghostscript),
msword (antiword), excel, ppt (catdoc), rtf (unrtf),
* Powerful query facilities, with boolean searches, phrases, filter on
file types and directory tree.
* Support for multiple charsets. Internal processing and storage uses
Unicode UTF-8.
* Stemming performed at query time (can switch stemming language after
indexing)
* Easy installation. No database daemon, web server or exotic language
necessary.
* An indexer which runs either as a thread inside the GUI or as an
external, cron'able program.
.
Homepage: <http://www.lesbonscomptes.com/recoll>

View file

@ -1,43 +0,0 @@
Source: recoll
Section: x11
Priority: optional
Maintainer: Jean-Francois Dockes <jf@dockes.org>
Build-Depends: debhelper (>= 7),
autotools-dev,
libqt4-dev,
libxapian-dev (>= 1.0.15),
libx11-dev,
libz-dev,
python-dev,
quilt
Standards-Version: 3.8.3
Package: recoll
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Recommends: aspell, python, xsltproc
Suggests: antiword, catdoc, ghostscript, libimage-exiftool-perl, poppler-utils, unrtf, python-mutagen
Description: a personal full text search package with a QT GUI
The Recoll personal full text search package is based on a very strong
backend (Xapian), for which it provides an easy to use and feature-rich
interface.
.
Features:
* QT-based GUI.
* Supports the following document types (and their compressed versions):
- Natively: text, html, OpenOffice files, maildir and mailbox
(Mozilla and Thunderbird mail ok) with attachments, gaim log files.
- With external helpers: pdf (pdftotext), postscript (ghostscript),
msword (antiword), excel, ppt (catdoc), rtf (unrtf),
* Powerful query facilities, with boolean searches, phrases, filter on
file types and directory tree.
* Support for multiple charsets. Internal processing and storage uses
Unicode UTF-8.
* Stemming performed at query time (can switch stemming language after
indexing)
* Easy installation. No database daemon, web server or exotic language
necessary.
* An indexer which runs either as a thread inside the GUI or as an
external, cron'able program.
.
Homepage: <http://www.lesbonscomptes.com/recoll>

View file

@ -1,2 +0,0 @@
?package(recoll):needs="X11" section="Apps/Databases"\
title="Personal Search Tool" command="/usr/bin/recoll"

View file

@ -1,15 +0,0 @@
Description: Fix python module installation
setup.py --root and --user options interfer with debian wanting a
dist-packages, not site-packages installation for python modules
Author: Jean-Francois Dockes <jf@dockes.org>
Last-Update: 2012-03-26
--- a/recollinstall.in
+++ b/recollinstall.in
@@ -139,5 +139,4 @@
${datadir}/recoll/translations/recoll_zh.qm || exit 1
-@NOPYTHON@(cd python/recoll;python setup.py install \
- --prefix=${REALPREFIX} ${ROOTFORPYTHON})
+#@NOPYTHON@(cd python/recoll;python setup.py install \
+# --prefix=${REALPREFIX} ${ROOTFORPYTHON})

View file

@ -1 +0,0 @@
fix-python-install.patch

View file

@ -1,2 +0,0 @@
version=3
http://www.recoll.org/download.html recoll-(.*)\.tar\.gz

View file

@ -1,3 +1,21 @@
recoll-lens (1.19.10.3543-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated lens to release 1.19.10
-- Jean-Francois Dockes <jf@dockes.org> Sat, 23 Nov 2013 18:00:00 +0100
recoll-lens (1.19.2.3328-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated lens to release 1.19.2, for consistency, same as 1.19.0 in fact
-- Jean-Francois Dockes <jf@dockes.org> Mon, 14 May 2013 08:22:00 +0100
recoll-lens (1.19.0.3315-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated lens to vers. 1.19.0
-- Jean-Francois Dockes <jf@dockes.org> Sun, 12 May 2013 14:43:00 +0100
recoll-lens (1.18.1.2997-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated lens to vers. 1.18.1
-- Jean-Francois Dockes <jf@dockes.org> Mon, 05 Nov 2012 13:31:00 +0100
recoll-lens (1.17.2.2697-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated lens to vers. 1.17.1.2697 : display thumbnails when they exist
-- Jean-Francois Dockes <jf@dockes.org> Tue, 15 May 2012 13:51:00 +0200
recoll-lens (1.17.1.2654-1~ppaPPAVERS~SERIES1) SERIES; urgency=low recoll-lens (1.17.1.2654-1~ppaPPAVERS~SERIES1) SERIES; urgency=low
* Updated lens to vers. 1.17.1.2654 : display/open results for embedded files * Updated lens to vers. 1.17.1.2654 : display/open results for embedded files
-- Jean-Francois Dockes <jf@dockes.org> Tue, 27 Mar 2012 16:22:00 +0200 -- Jean-Francois Dockes <jf@dockes.org> Tue, 27 Mar 2012 16:22:00 +0200

View file

@ -5,8 +5,9 @@ Maintainer: Jean-Francois Dockes <jfd@recoll.org>
Build-Depends: debhelper (>= 7), Build-Depends: debhelper (>= 7),
autotools-dev, autotools-dev,
recoll, recoll,
python-recoll,
python python
Standards-Version: 3.9.2 Standards-Version: 3.9.3
Package: recoll-lens Package: recoll-lens
Architecture: all Architecture: all

View file

@ -39,6 +39,7 @@ binary-indep: build install
dh_testroot dh_testroot
dh_installchangelogs ChangeLog dh_installchangelogs ChangeLog
dh_installdocs README dh_installdocs README
dh_python2
dh_link dh_link
dh_compress dh_compress
dh_fixperms dh_fixperms

View file

@ -0,0 +1,10 @@
Package building file for Mac homebrew: http://brew.sh/
Install homebrew following the instructions on the home page, then copy
recoll.rb to /usr/local/Library/Formula/, then "brew install recoll" should
just work.
Also see: https://github.com/medoc92/homebrew/tree/recoll

View file

@ -0,0 +1,35 @@
require 'formula'
class Recoll < Formula
homepage 'http://www.recoll.org'
url 'http://www.recoll.org/recoll-1.19.11p1.tar.gz'
sha1 'f4259c21faff9f30882d0bf1e8f952c19ed9936b'
depends_on 'xapian'
depends_on 'qt'
def patches
DATA
end
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
test do
system "#{bin}/recollindex", "-h"
end
end
__END__
--- a/configure.orig 2014-01-07 12:39:40.606718201 +0100
+++ b/configure 2014-01-07 12:39:58.574599715 +0100
@@ -5120,7 +5120,7 @@
# basically to enable using a Macbook for development
if test X$sys = XDarwin ; then
# The default is xcode
- QMAKE="${QMAKE} -spec macx-g++"
+ QMAKE="${QMAKE}"
fi
# Discriminate qt3/4. Qt3 qmake prints its version on stderr but we don't

View file

@ -1,11 +1,11 @@
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id$ # $Id: Portfile 111989 2013-10-08 17:10:55Z ryandesign@macports.org $
PortSystem 1.0 PortSystem 1.0
PortGroup app 1.0 PortGroup app 1.0
name recoll name recoll
version 1.16.2 version 1.19.11p1
categories textproc categories textproc
platforms darwin platforms darwin
license GPL-2+ license GPL-2+
@ -18,8 +18,8 @@ long_description Recoll is a desktop search tool based on Xapian
homepage http://www.recoll.org/ homepage http://www.recoll.org/
master_sites ${homepage} master_sites ${homepage}
checksums sha1 40c18a958eeecbb70cbdf14fa7319b54525537fa \ checksums rmd160 de98039d80174a5da6e3cdbcc8b7bc0f4407e44a \
rmd160 fb598b9c637cab49734547a41f2e8ec232f89dbe sha256 8d1d040b8de1f65f01bc0a56053a6df7677360031bf9a6779d3496ced4a61186
depends_lib port:xapian-core \ depends_lib port:xapian-core \
port:qt4-mac \ port:qt4-mac \
@ -34,8 +34,7 @@ depends_run port:antiword \
port:unrtf \ port:unrtf \
port:unzip port:unzip
patchfiles patch-configure.diff \ patchfiles patch-sampleconf-mimeview.diff
patch-sampleconf-mimeview.diff
configure.args --without-x \ configure.args --without-x \
--disable-x11mon --disable-x11mon

View file

@ -1,11 +0,0 @@
--- configure.orig 2011-10-11 06:25:31.000000000 -0500
+++ configure 2011-11-27 20:02:11.000000000 -0600
@@ -4366,7 +4366,7 @@
LIBICONV=""
S_LDFLAGS=$LDFLAGS
S_CPPFLAGS=$CPPFLAGS
-for dir in ${libdir} /opt/local/lib /usr/local/lib ;do
+for dir in ${libdir} ;do
CPPFLAGS="$S_CPPFLAGS -I$dir/../include"
LDFLAGS="$S_LDFLAGS -L$dir"

View file

@ -1,134 +1,147 @@
--- sampleconf/mimeview 2011-10-11 08:44:09.000000000 +0200 --- sampleconf/mimeview 2013-09-30 18:45:06.000000000 +0200
+++ sampleconf/mimeview.mac 2011-11-27 17:55:42.000000000 +0100 +++ sampleconf/mimeview.mac 2013-09-30 18:45:06.000000000 +0200
@@ -2,7 +2,8 @@ @@ -2,7 +2,8 @@
## ########################################## ## ##########################################
# External viewers, launched by the recoll GUI when you click on a result # External viewers, launched by the recoll GUI when you click on a result
-# 'edit' link -# 'edit' link
+# 'Open' link - MAC version +# 'Open' link - MAC version
+# On the MAC, we basically use "open" for everything... +# On the MAC, we use "open" for everything...
# Mime types which we should not uncompress if they are found gzipped or # Mime types which we should not uncompress if they are found gzipped or
# bzipped because the native viewer knows how to handle. These would be # bzipped because the native viewer knows how to handle. These would be
@@ -11,74 +12,71 @@ @@ -16,20 +17,17 @@
# search string
# - For pages of CHM and EPUB documents where we can choose to open the
# parent document instead of a temporary html file.
-xallexcepts = application/pdf application/postscript application/x-dvi \
- text/html|gnuinfo text/html|chm text/html|epub \
- application/x-fsdirectory|parentopen inode/directory|parentopen
+#xallexcepts = application/pdf application/postscript application/x-dvi \
+# text/html|gnuinfo text/html|chm text/html|epub
[view] [view]
# Pseudo entry used if the 'use desktop' preference is set in the GUI # Pseudo entry used if the 'use desktop' preference is set in the GUI
-application/x-all = xdg-open %f -application/x-all = xdg-open %u
+application/x-all = open %f +application/x-all = open %f
application/x-kword = kword %f application/epub+zip = ebook-viewer %f
application/x-abiword = abiword %f -# Open the parent epub document for epub parts instead of opening them as
-# html documents. This is almost always what we want.
-text/html|epub = ebook-viewer %F;ignoreipath=1
-
-application/x-gnote = gnote %f
+# If you want to open the parent epub document for epub parts instead of
+# opening them as html documents:
+#text/html|epub = ebook-viewer %F;ignoreipath=1
-application/pdf = okular %f application/x-mobipocket-ebook = ebook-viewer %f
-application/postscript = okular %f
-application/x-dvi = okular %f
+application/pdf = open %f
+application/postscript = open %f
+application/x-dvi = open %f
application/x-lyx = lyx %f @@ -76,13 +74,9 @@
application/x-scribus = scribus %f application/vnd.wordperfect = libreoffice %f
text/rtf = libreoffice %f
-application/msword = libreoffice %f +application/x-chm = kchmviewer %f
-application/vnd.ms-excel = libreoffice %f application/x-dia-diagram = dia %f
-application/vnd.ms-powerpoint = libreoffice %f -
+application/msword = open %f application/x-fsdirectory = dolphin %f
+application/vnd.ms-excel = open %f -inode/directory = dolphin %f
+application/vnd.ms-powerpoint = open %f -application/x-fsdirectory|parentopen = dolphin --select %(childurl) %f
-inode/directory|parentopen = dolphin --select %(childurl) %f
application/vnd.openxmlformats-officedocument.wordprocessingml.document = \ -
- libreoffice %f
+ open %f
application/vnd.openxmlformats-officedocument.wordprocessingml.template = \
- libreoffice %f
+ open %f
application/vnd.openxmlformats-officedocument.presentationml.template = \
- libreoffice %f
+ open %f
application/vnd.openxmlformats-officedocument.presentationml.presentation = \
- libreoffice %f
+ open %f
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet = \
- libreoffice %f
+ open %f
application/vnd.openxmlformats-officedocument.spreadsheetml.template =\
- libreoffice %f
-application/vnd.sun.xml.calc = libreoffice %f
-application/vnd.sun.xml.calc.template = libreoffice %f
-application/vnd.sun.xml.draw = libreoffice %f
-application/vnd.sun.xml.draw.template = libreoffice %f
-application/vnd.sun.xml.impress = libreoffice %f
-application/vnd.sun.xml.impress.template = libreoffice %f
-application/vnd.sun.xml.math = libreoffice %f
-application/vnd.sun.xml.writer = libreoffice %f
-application/vnd.sun.xml.writer.global = libreoffice %f
-application/vnd.sun.xml.writer.template = libreoffice %f
-application/vnd.wordperfect = libreoffice %f
+ open %f
+application/vnd.sun.xml.calc = open %f
+application/vnd.sun.xml.calc.template = open %f
+application/vnd.sun.xml.draw = open %f
+application/vnd.sun.xml.draw.template = open %f
+application/vnd.sun.xml.impress = open %f
+application/vnd.sun.xml.impress.template = open %f
+application/vnd.sun.xml.math = open %f
+application/vnd.sun.xml.writer = open %f
+application/vnd.sun.xml.writer.global = open %f
+application/vnd.sun.xml.writer.template = open %f
+application/vnd.wordperfect = open %f
application/x-chm = kchmviewer %f
-application/x-fsdirectory = dolphin %f
+application/x-fsdirectory = open %f
application/x-gnuinfo = xterm -e "info -f %f" application/x-gnuinfo = xterm -e "info -f %f"
application/x-gnumeric = gnumeric %f
-application/x-flac = rhythmbox %f @@ -102,11 +96,6 @@
-audio/mpeg = rhythmbox %f image/x-ms-bmp = gwenview %f
-application/ogg = rhythmbox %f image/x-xpmi = gwenview %f
-
-image/jpeg = gwenview %f -# Opening mail messages not always works.
-image/png = gwenview %f -# - Thunderbird will only open a single-message file if it has an .emf
-image/tiff = gwenview %f -# extension
-image/gif = gwenview %f -# - "sylpheed %f" seems to work ok as of version 3.3
-image/svg+xml = inkview %f -# - "kmail --view %u" works
-image/vnd.djvu = djview %f message/rfc822 = thunderbird -file %f
-image/x-xcf = gimp %f text/x-mail = thunderbird -file %f
-image/bmp = gwenview %f application/x-mimehtml = thunderbird -file %f
-image/x-ms-bmp = gwenview %f @@ -119,11 +108,11 @@
-image/x-xpmi = gwenview %f application/x-tar = ark %f
- application/zip = ark %f
-# Or firefox -remote "openFile(%u)"
-application/x-tex = emacsclient %f -application/x-awk = emacsclient --no-wait %f
-text/x-tex = emacsclient %f -application/x-perl = emacsclient --no-wait %f
-text/html = firefox %u -text/x-perl = emacsclient --no-wait %f
+application/x-flac = open %f -application/x-shellscript = emacsclient --no-wait %f
+audio/mpeg = open %f -text/x-shellscript = emacsclient --no-wait %f
+application/ogg = open %f +application/x-awk = emacsclient %f
+ +application/x-perl = emacsclient %f
+image/jpeg = open %f +text/x-perl = emacsclient %f
+image/png = open %f +application/x-shellscript = emacsclient %f
+image/tiff = open %f +text/x-shellscript = emacsclient %f
+image/gif = open %f
+image/svg+xml = open %f # Or firefox -remote "openFile(%u)"
+image/vnd.djvu = open %f text/html = firefox %u
+image/x-xcf = open %f @@ -135,41 +124,39 @@
+image/bmp = open %f
+image/x-ms-bmp = open %f application/x-webarchive = konqueror %f
+image/x-xpmi = open %f text/x-fictionbook = ebook-viewer %f
+ -application/x-tex = emacsclient --no-wait %f
+application/x-tex = open %f -application/xml = emacsclient --no-wait %f
+text/x-tex = open %f -text/xml = emacsclient --no-wait %f
+text/html = open %u -text/x-tex = emacsclient --no-wait %f
text/html|gnuinfo = rclshowinfo %F %(title) -text/plain = emacsclient --no-wait %f
-text/plain = emacsclient %f -text/x-awk = emacsclient --no-wait %f
-text/x-c = emacsclient %f -text/x-c = emacsclient --no-wait %f
-text/x-c+ = emacsclient %f -text/x-c+ = emacsclient --no-wait %f
-text/x-c++ = emacsclient %f -text/x-c++ = emacsclient --no-wait %f
-text/x-html-sidux-man = konqueror %f +application/x-tex = emacsclient %f
-text/x-html-aptosid-man = iceweasel %f +application/xml = emacsclient %f
+text/plain = open %f +text/xml = emacsclient %f
+text/x-c = open %f +text/x-tex = emacsclient %f
+text/x-c+ = open %f +text/plain = emacsclient %f
+text/x-c++ = open %f +text/x-awk = emacsclient %f
+text/x-c = emacsclient %f
+text/x-c+ = emacsclient %f
+text/x-c++ = emacsclient %f
text/x-csv = libreoffice %f
text/x-html-sidux-man = konqueror %f
text/x-html-aptosid-man = iceweasel %f
-application/x-chm = kchmviewer %f
# Html pages inside a chm have a chm rclaptg set by the filter. Kchmviewer
# knows how to use the ipath (which is the internal chm path) to open the
# file at the right place
text/html|chm = kchmviewer --url %i %F
-text/x-ini = emacsclient --no-wait %f
+text/x-ini = emacsclient %f
text/x-man = xterm -u8 -e "groff -T ascii -man %f | more"
text/x-python = idle %f text/x-python = idle %f
-text/x-gaim-log = emacsclient --no-wait %f
-text/x-purple-html-log = emacsclient --no-wait %f
-text/x-purple-log = emacsclient --no-wait %f
+text/x-gaim-log = emacsclient %f
+text/x-purple-html-log = emacsclient %f
+text/x-purple-log = emacsclient %f
# The video types will usually be handled by the desktop default, but they
# need entries here to get an "Open" link
-video/3gpp = vlc %f
-video/mp2p = vlc %f
-video/mp2t = vlc %f
-video/mp4 = vlc %f
-video/mpeg = vlc %f
-video/quicktime = vlc %f
-video/x-matroska = vlc %f
-video/x-ms-asf = vlc %f
-video/x-msvideo = vlc %f
-
+video/3gpp = open %f
+video/mp2p = open %f
+video/mp2t = open %f
+video/mp4 = open %f
+video/mpeg = open %f
+video/quicktime = open %f
+video/x-matroska = open %f
+video/x-ms-asf = open %f
+video/x-msvideo = open %f

View file

@ -0,0 +1,85 @@
#
# spec file for package kio_recoll
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An &quot;Open Source License&quot; is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define rname recoll
Name: kio_recoll
Version: 1.21.6
Release: 0
Summary: Extended Search
License: GPL-2.0+
Summary: KIO slave for the Recoll full text search tool
Group: Productivity/Text/Utilities
Url: http://www.lesbonscomptes.com/recoll/
Source: http://www.lesbonscomptes.com/recoll/%{rname}-%{version}.tar.gz
BuildRequires: libkde4-devel
BuildRequires: kio-devel
BuildRequires: libxapian-devel
BuildRequires: recoll = %{version}
Requires: recoll = %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Recoll is a personal full text search tool for Unix/Linux.
This package provides the kio-slave
%prep
%setup -q -n %{rname}-%{version}
%build
pushd kde/kioslave/kio_recoll
%cmake_kde4 -d build
%make_jobs
popd
pushd kde/kioslave/kio_recoll-kde4
%cmake_kde4 -d build
%make_jobs
%install
pushd kde/kioslave/kio_recoll
%kde4_makeinstall -C build
popd
pushd kde/kioslave/kio_recoll-kde4
%kde4_makeinstall -C build
%files
%defattr(-,root,root)
%{_libdir}/qt5/plugins/kio_recoll.so
%{_datadir}/kio_recoll/
%{_datadir}/kservices5/*.protocol
%{_libdir}/kde4/kio_recoll.so
%{_datadir}/kde4/apps/kio_recoll/help.html
%{_datadir}/kde4/apps/kio_recoll/welcome.html
%{_datadir}/kde4/services/recoll.protocol
%{_datadir}/kde4/services/recollf.protocol
%changelog
* Tue Apr 05 2016 Jean-Francois Dockes <jfd@recoll.org> 1.21.6-0
- Also build kde5 versions: works with Dolphin. Keep kde4 version for
Konqueror
* Sun Mar 18 2012 Jean-Francois Dockes <jfd@recoll.org> 1.17.0-0
- 1.17.0
* Mon May 02 2011 Jean-Francois Dockes <jfd@recoll.org> 1.16.2-0
- 1.16.2
* Mon May 02 2011 Jean-Francois Dockes <jfd@recoll.org> 1.15.8-0
- 1.15.8
* Sun Mar 06 2011 Jean-Francois Dockes <jfd@recoll.org> 1.15.5-0
- Initial spec file for kio

View file

@ -0,0 +1,75 @@
Name: recoll
Version: 1.19.9
Release: %mkrel 1
Summary: Desktop full text search tool with a Qt GUI
URL: http://www.lesbonscomptes.com/recoll/
Group: Databases
License: GPLv2
Source0: http://www.lesbonscomptes.com/recoll/%{name}-%{version}.tar.gz
BuildRequires: xapian-devel
BuildRequires: pkgconfig(QtCore)
BuildRequires: pkgconfig(QtWebKit)
Requires: xapian
%description
Recoll is a personal full text search package for Linux, FreeBSD and
other Unix systems. It is based on a very strong backend (Xapian), for
which it provides an easy to use, feature-rich, easy administration
interface.
%package -n kio-%{name}
Summary: Kioslave for %{name}
Group: Graphical desktop/KDE
BuildRequires: cmake
BuildRequires: kdelibs4-devel
Requires: %{name} = %{version}-%{release}
Requires: kdebase4-workspace
%description -n kio-%{name}
Kioslave for %{name}. Enables to perform querries and extract
results in konqueror and dolphin.
%prep
%setup -q
%build
%configure2_5x --disable-python-module
%make
%install
%makeinstall_std
rm lib/librecoll.so*
pushd kde/kioslave/kio_recoll
%cmake_kde4
%make
%makeinstall_std
popd
%files
%doc README
%{_bindir}/*
%{_datadir}/applications/recoll-searchgui.desktop
%{_datadir}/icons/hicolor/48x48/apps/recoll.png
%{_datadir}/pixmaps/recoll.png
%{_datadir}/%{name}
%{_mandir}/man1/recoll*
%{_mandir}/man5/recoll*
%{_kde_libdir}/%name/librecoll.so.%version
%files -n kio-%{name}
%{_kde_libdir}/kde4/kio_recoll.so
%{_kde_datadir}/apps/kio_recoll/help.html
%{_kde_datadir}/apps/kio_recoll/welcome.html
%{_kde_datadir}/kde4/services/recoll.protocol
%{_kde_datadir}/kde4/services/recollf.protocol

View file

@ -0,0 +1,123 @@
#
# spec file for package recoll
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An &quot;Open Source License&quot; is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: recoll
Version: 1.21.6
Release: 0
Summary: Extended Search
License: GPL-2.0+
Summary: Extended Search
Group: Productivity/Text/Utilities
Url: http://www.lesbonscomptes.com/recoll/
Source: http://www.lesbonscomptes.com/recoll/%{name}-%{version}.tar.gz
BuildRequires: aspell-devel
%if 0%{?suse_version} > 1320
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5WebKit)
BuildRequires: pkgconfig(Qt5WebKitWidgets)
BuildRequires: pkgconfig(Qt5Xml)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(Qt5PrintSupport)
%else
BuildRequires: libQtWebKit-devel
BuildRequires: libqt4-devel
%endif
BuildRequires: bison
BuildRequires: libxapian-devel
BuildRequires: python-devel
BuildRequires: update-desktop-files
# Recommends for the helpers.
Recommends: antiword
Recommends: poppler-tools
Recommends: libwpd-tools
Recommends: libxslt
Recommends: catdoc
Recommends: djvulibre
Recommends: python-mutagen
Recommends: exiftool
Recommends: perl-Image-ExifTool
Recommends: python-base
Recommends: unrar
Recommends: python-rarfile
Recommends: python-PyCHM
Recommends: unrtf
Recommends: pstotext
# Default requires for recoll itself
Requires: sed
Requires: awk
Requires: aspell
Requires: python
Suggests: kio_recoll
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Recoll is a personal full text search tool for Unix/Linux.
It is based on the very strong Xapian back-end, for which it provides a feature-rich yet easy to use front-end with a QT graphical interface.
Recoll is free, open source, and licensed under the GPL. The current version is 1.12.0 .
Features:
* Easy installation, few dependencies. No database daemon, web server, desktop environment or exotic language necessary.
* Will run on most unix-based systems
* Qt-based GUI. Can use either Qt 3 or Qt 4.
* Searches most common document types, emails and their attachments.
* Powerful query facilities, with boolean searches, phrases, proximity, wildcards, filter on file types and directory tree.
* Multi-language and multi-character set with Unicode based internals.
* (more detail)
%prep
%setup -q
%build
%if 0%{?suse_version} > 1320
export QMAKE=qmake-qt5
%endif
%configure --with-inotify
make %{?_smp_mflags}
%install
make DESTDIR=%{buildroot} install %{?_smp_mflags}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root)
%dir %{_libdir}/recoll
%dir %{_datadir}/appdata
%{_bindir}/recoll
%{_bindir}/recollindex
%{_datadir}/recoll
%{_datadir}/applications/recoll-searchgui.desktop
%{_datadir}/appdata/recoll.appdata.xml
%{_datadir}/icons/hicolor
%{_datadir}/pixmaps/recoll.png
%{_libdir}/recoll/librecoll.so.%{version}
%{_libdir}/python2.7/site-packages/recoll
%{_libdir}/python2.7/site-packages/Recoll-1.0-py2.7.egg-info
%{_mandir}/man1/recoll.1.gz
%{_mandir}/man1/recollq.1.gz
%{_mandir}/man1/recollindex.1.gz
%{_mandir}/man5/recoll.conf.5.gz
%changelog
* Tue Apr 05 2016 Jean-Francois Dockes <jfd@recoll.org> 1.21.6-0
- Recoll 1.21.6, esp. for the kde5 kio

View file

@ -1,131 +1,224 @@
%define name recoll Summary: Desktop full text search tool with Qt GUI
%define version 1.17.0 Name: recoll
%define release 0 Version: 1.20.6
Release: 1%{?dist}
Name: %{name}
Version: %{version}
Release: %{release}
Summary: Desktop Full Text Search Tool with a QT Gui
Source0: http://www.recoll.org/%{name}-%{version}.tar.gz
URL: http://www.recoll.org/
Group: Applications/Databases Group: Applications/Databases
License: GPLv2+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot URL: http://www.lesbonscomptes.com/recoll/
License: GPL Source0: http://www.lesbonscomptes.com/recoll/recoll-%{version}.tar.gz
BuildRequires: qt-devel
# libxapian-devel or xapian-core-devel? BuildRequires: qtwebkit-devel
BuildRequires: libqt4-devel zlib-devel libxapian-devel libuuid-devel python-devel BuildRequires: python-devel
BuildRequires: zlib-devel
BuildRequires: aspell-devel
BuildRequires: xapian-core-devel
BuildRequires: desktop-file-utils
Requires: xdg-utils
%description %description
Recoll is a personal full text search package for Linux, FreeBSD and Recoll is a personal full text search package for Linux, FreeBSD and
other Unix systems. It is based on a very strong back end (Xapian), for other Unix systems. It is based on a very strong back end (Xapian), for
which it provides an easy to use, feature-rich, easy administration which it provides an easy to use, feature-rich, easy administration
interface. interface.
%global __provides_exclude_from ^%{_libdir}/recoll/librecoll\\.so.*$
# --------------------------------------------------------------------------- %global __requires_exclude ^librecoll\\.so.*$
%prep %prep
%setup -q %setup -q -n %{name}-%{version}
chmod 0644 utils/{conftree.cpp,conftree.h,debuglog.cpp,debuglog.h}
# ---------------------------------------------------------------------------
%build %build
export QMAKE=qmake-qt4
%configure %configure
make %{?_smp_mflags} make %{?_smp_mflags}
# ---------------------------------------------------------------------------
%install %install
rm -rf $RPM_BUILD_ROOT make install DESTDIR=%{buildroot} STRIP=/bin/true INSTALL='install -p'
%makeinstall
# --------------------------------------------------------------------------- desktop-file-install --delete-original \
--dir=%{buildroot}/%{_datadir}/applications \
%{buildroot}/%{_datadir}/applications/%{name}-searchgui.desktop
%clean # use /usr/bin/xdg-open
rm -rf $RPM_BUILD_ROOT rm -f %{buildroot}/usr/share/recoll/filters/xdg-open
# --------------------------------------------------------------------------- # fix perms
chmod 0755 %{buildroot}/usr/share/recoll/filters/rclexecm.py
chmod 0755 %{buildroot}%{_libdir}/recoll/librecoll.so.*
%post
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ] ; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
fi
if [ -x %{_bindir}/update-desktop-database ] ; then
%{_bindir}/update-desktop-database &> /dev/null
fi
exit 0
%postun
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ] ; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
fi
if [ -x %{_bindir}/update-desktop-database ] ; then
%{_bindir}/update-desktop-database &> /dev/null
fi
exit 0
%files %files
%defattr(-,root,root,-) %doc COPYING ChangeLog README
%{_bindir}/* %{_bindir}/%{name}
%{python_sitearch}/ %{_bindir}/%{name}index
%{_datadir}/%{name} %{_datadir}/%{name}
%{_datadir}/applications/recoll-searchgui.desktop %{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/icons/hicolor/48x48/apps/recoll.png %{_datadir}/applications/%{name}-searchgui.desktop
%{_datadir}/pixmaps/recoll.png %{_datadir}/icons/hicolor/48x48/apps/%{name}.png
%{_mandir}/man1/recoll* %{_datadir}/pixmaps/%{name}.png
%{_mandir}/man5/recoll* %{_libdir}/recoll
%if 0%{?suse_version} > 1120 %{python_sitearch}/recoll
%dir %{_datadir}/applications %{python_sitearch}/Recoll*.egg-info
%dir %{_datadir}/pixmaps %{_mandir}/man1/%{name}.1*
%endif %{_mandir}/man1/recollq.1*
%dir %{_datadir}/icons/hicolor/48x48/apps %{_mandir}/man1/%{name}index.1*
%dir %{_datadir}/icons/hicolor/48x48 %{_mandir}/man5/%{name}.conf.5*
%dir %{_datadir}/icons/hicolor
# ---------------------------------------------------------------------------
%changelog %changelog
* Sun Mar 18 2012 Jean-Francois Dockes <jfd@recoll.org> 1.17.0-0 * Sat Apr 25 2015 Jean-Francois Dockes <jf@dockes.org> - 1.20.6-1
- Update to release 1.17.0 - 1.20.6
* Mon Nov 07 2011 Jean-Francois Dockes <jfd@recoll.org> 1.16.2-0
- Update to release 1.16.2 * Fri Dec 19 2014 Jean-Francois Dockes <jf@dockes.org> - 1.20.1-1
* Mon May 02 2011 Jean-Francois Dockes <jfd@recoll.org> 1.15.8-0 - 1.20.1
- Update to release 1.15.8
* Fri Mar 04 2011 Jean-Francois Dockes <jfd@recoll.org> 1.15.5-0 * Sun Nov 09 2014 Jean-Francois Dockes <jf@dockes.org> - 1.19.14p2-1
- Update to release 1.15.2 - 1.19.14p2
* Thu Feb 15 2011 Jean-Francois Dockes <jfd@recoll.org> 1.15.2-0
- Update to release 1.15.2 * Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.19.13-3
* Thu Feb 2 2011 Jean-Francois Dockes <jfd@recoll.org> 1.15.0-0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
- Update to release 1.15.0
* Thu Oct 28 2010 Jean-Francois Dockes <jfd@recoll.org> 1.14.3-1 * Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.19.13-2
- Update to release 1.14.3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu Oct 28 2010 Jean-Francois Dockes <jfd@recoll.org> 1.14.2-1
- Rebuilt with a Xapian built with --disable-sse * Tue May 06 2014 Terje Rosten <terje.rosten@ntnu.no> - 1.19.13-1
* Sat Sep 24 2010 Jean-Francois Dockes <jfd@recoll.org> 1.14.2-0 - 1.19.13
- Update to release 1.14.2
* Thu Apr 14 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.04-1 * Mon Jan 20 2014 Terje Rosten <terje.rosten@ntnu.no> - 1.19.11-1
- Update to release 1.13.04 - 1.19.11
* Mon Nov 11 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.9-1
- 1.19.9
* Tue Nov 05 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.8-1
- 1.19.8
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.19.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Jun 12 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.4-2
- Fix filter setup
* Mon Jun 10 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.4-1
- 1.19.4
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.18.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Nov 19 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.18.1-1
- 1.18.1
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.17.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed May 30 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.17.3-1
- 1.17.3
* Sat Mar 31 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.17.1-1
- 1.17.1
* Sun Mar 25 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.17-1
- 1.17
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.2-3
- Rebuilt for c++ ABI breakage
* Wed Feb 15 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.16.2-2
- Add patch to build with gcc 4.7
* Wed Feb 01 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.16.2-1
- 1.16.2
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Mon Oct 24 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.16.1-2
- Add patch to fix crash (bz #747472)
* Tue Oct 18 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.16.1-1
- 1.16.1
* Tue May 24 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.15.8-2
- add patch from upstream to fix crash.
* Sun May 08 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.15.8-1
- 1.15.8
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.14.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Jan 28 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.14.4-1
- 1.14.4
* Mon Nov 15 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.14.2-2
- Add patch to fix #631704
* Sun Nov 7 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.14.2-1
- 1.14.2
* Thu Jul 15 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-6
- add patch to build with xapian 1.2 (from J.F. Dockes, thanks)
* Sat Jul 10 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-5
- use system xdg-open
- trim chagenlog
* Fri Jul 9 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-4
- fix some review comments
* Mon May 10 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-3
- use version macro in source url
- don't strip bins, giving non empty debuginfo package
- more explicit file listing
- try to preserve timestamps
- use proper name for spec file
- fix changelog
- license seems to be GPLv2+
- include some %%doc files
- add buildroot tag
- some source add execute bit set
- explicit enable inotify
- add aspell-devel to bulldreq
- make with _smp_mflags seems to work
- add post scripts
- add patch to build gui with correct flags (ref: 338791)
* Sun May 9 2010 J.F. Dockes <jfd@recoll.org> 1.13.04-2
- bumped the release number to issue new rpms for fc10
* Sun May 9 2010 J.F. Dockes 1.13.04
- updated to recoll release 1.13.04
* Fri Feb 12 2010 Terry Duell 1.13.02
- updated to release 1.13.02
* Tue Jan 12 2010 Terry Duell 1.13.01-3
- updated to fix Fedora desktop-file-install and install icon
* Sun Jan 10 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-2
- updated for recent fedoras: depend on xapian packages, use qt4
* Thu Jan 07 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-1 * Thu Jan 07 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-1
- Update to release 1.13.01 - update to release 1.13.01
* Thu Dec 10 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.4-1
- Update to release 1.12.4 * Wed Feb 1 2006 Jean-Francois Dockes <jfd@recoll.org> 1.2.0-1
* Wed Oct 28 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.3-1 - initial packaging
- Update to release 1.12.3
* Tue Sep 20 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.2-1
- Update to release 1.12.0
* Thu Jan 29 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.0-1
- Update to release 1.12.0
* Mon Oct 13 2008 Jean-Francois Dockes <jfd@recoll.org> 1.11.0-1
- Update to release 1.11.0
* Thu Sep 11 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.6-1
- Update to release 1.10.6
* Thu May 27 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.2-1
- Update to release 1.10.2
* Thu Jan 31 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.1-1
- Update to release 1.10.1
* Wed Nov 21 2007 Jean-Francois Dockes <jfd@recoll.org> 1.10.0-1
- Update to release 1.10.0
* Tue Sep 11 2007 Jean-Francois Dockes <jfd@recoll.org> 1.9.0-1
- Update to release 1.9.0
* Tue Mar 6 2007 Jean-Francois Dockes <jfd@recoll.org> 1.8.1-1
- Update to release 1.8.1
* Mon Jan 15 2007 Jean-Francois Dockes <jfd@recoll.org> 1.7.5-1
- Update to release 1.7.5
* Mon Jan 08 2007 Jean-Francois Dockes <jfd@recoll.org> 1.7.3-1
- Update to release 1.7.3
* Tue Nov 28 2006 Jean-Francois Dockes <jfd@recoll.org> 1.6.1-1
- Update to release 1.6.1
* Mon Oct 2 2006 Jean-Francois Dockes <jfd@recoll.org> 1.4.3-1
- Update to release 1.5.3
* Sun May 7 2006 Jean-Francois Dockes <jfd@recoll.org> 1.4.3-1
- Update to release 1.4.3
* Fri Mar 31 2006 Jean-Francois Dockes <jfd@recoll.org> 1.3.3-1
- Update to release 1.3.3
* Thu Feb 2 2006 Jean-Francois Dockes <jfd@recoll.org> 1.2.2-1
- Update to release 1.2.2
* Thu Jan 10 2006 Jean-Francois Dockes <jfd@recoll.org> 1.1.0-1
- Initial packaging

View file

@ -1,19 +1,25 @@
Summary: Desktop full text search tool with Qt GUI
Name: recoll Name: recoll
Version: 1.14.3 Version: 1.21.6
Release: 1%{?dist} Release: 1%{?dist}
Summary: Desktop full text search tool with a qt gui
Group: Applications/Databases Group: Applications/Databases
License: GPL License: GPLv2+
URL: http://www.recoll.org/ URL: http://www.lesbonscomptes.com/recoll/
Source0: http://www.recoll.org/recoll-1.14.3.tar.gz Source0: http://www.lesbonscomptes.com/recoll/recoll-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # Source10: qmake-qt4.sh
BuildRequires: aspell-devel
# Not sure how easy it is to find a xapian-core rpm. Will be easier to BuildRequires: bison
# build by hand for many. Run time uses a static link to xapian, doesnt BuildRequires: desktop-file-utils
# depend on libxapian.so # kio
BuildRequires: qt-devel BuildRequires: kdelibs4-devel
Requires: qt BuildRequires: qt5-qtbase-devel
BuildRequires: qt5-qtwebkit-devel
BuildRequires: extra-cmake-modules
BuildRequires: kf5-kio-devel
BuildRequires: python2-devel
BuildRequires: xapian-core-devel
BuildRequires: zlib-devel
Requires: xdg-utils
%description %description
Recoll is a personal full text search package for Linux, FreeBSD and Recoll is a personal full text search package for Linux, FreeBSD and
@ -21,73 +27,277 @@ other Unix systems. It is based on a very strong backend (Xapian), for
which it provides an easy to use, feature-rich, easy administration which it provides an easy to use, feature-rich, easy administration
interface. interface.
%package kio
Summary: KIO support for recoll
Group: Applications/Databases
Requires: %{name} = %{version}-%{release}
%description kio
The recoll KIO slave allows performing a recoll search by entering an
appropriate URL in a KDE open dialog, or with an HTML-based interface
displayed in Konqueror.
%prep %prep
%setup -q %setup -q -n %{name}-%{version}
chmod 0644 utils/{conftree.cpp,conftree.h,debuglog.cpp,debuglog.h}
%build %build
[ -n "$QTDIR" ] || . %{_sysconfdir}/profile.d/qt.sh CFLAGS="%{optflags}"; export CFLAGS
CXXFLAGS="%{optflags}"; export CXXFLAGS
LDFLAGS="%{?__global_ldflags}"; export LDFLAGS
# force use of custom/local qmake, to inject proper build flags (above)
#install -m755 -D %{SOURCE10} qmake-qt4.sh
export QMAKE=qmake-qt5
%configure %configure
make %{?_smp_mflags} static make %{?_smp_mflags}
%install %install
rm -rf $RPM_BUILD_ROOT make install DESTDIR=%{buildroot} STRIP=/bin/true INSTALL='install -p'
%makeinstall
%clean desktop-file-install --delete-original \
rm -rf $RPM_BUILD_ROOT --dir=%{buildroot}/%{_datadir}/applications \
%{buildroot}/%{_datadir}/applications/%{name}-searchgui.desktop
# use /usr/bin/xdg-open
rm -f %{buildroot}/usr/share/recoll/filters/xdg-open
# fix perms
chmod 0755 %{buildroot}/usr/share/recoll/filters/rclexecm.py
chmod 0755 %{buildroot}%{_libdir}/recoll/librecoll.so.*
# kio_recoll -kde5
(
mkdir kde/kioslave/kio_recoll/build && pushd kde/kioslave/kio_recoll/build
%cmake ..
make %{?_smp_mflags} VERBOSE=1
make install DESTDIR=%{buildroot}
popd
)
# kio_recoll -kde4
(
mkdir kde/kioslave/kio_recoll-kde4/build && \
pushd kde/kioslave/kio_recoll-kde4/build
%cmake ..
make %{?_smp_mflags} VERBOSE=1
make install DESTDIR=%{buildroot}
popd
)
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
echo "%{_libdir}/recoll" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
%post
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ] ; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
fi
if [ -x %{_bindir}/update-desktop-database ] ; then
%{_bindir}/update-desktop-database &> /dev/null
fi
/sbin/ldconfig
exit 0
%postun
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ] ; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
fi
if [ -x %{_bindir}/update-desktop-database ] ; then
%{_bindir}/update-desktop-database &> /dev/null
fi
/sbin/ldconfig
exit 0
%files %files
%defattr(-,root,root,-) %doc COPYING ChangeLog README
%{_bindir}/* %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
%{_bindir}/%{name}
%{_bindir}/%{name}index
%{_datadir}/%{name} %{_datadir}/%{name}
%{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/applications/%{name}-searchgui.desktop %{_datadir}/applications/%{name}-searchgui.desktop
%{_datadir}/icons/hicolor/48x48/apps/%{name}.png %{_datadir}/icons/hicolor/48x48/apps/%{name}.png
%{_datadir}/pixmaps/%{name}.png %{_datadir}/pixmaps/%{name}.png
%{_mandir}/man1/recoll* %{_libdir}/recoll
%{_mandir}/man5/recoll* %{python_sitearch}/recoll
%doc %{python_sitearch}/Recoll*.egg-info
%{_mandir}/man1/%{name}.1*
%{_mandir}/man1/%{name}q.1*
%{_mandir}/man1/%{name}index.1*
%{_mandir}/man5/%{name}.conf.5*
%files kio
%{_libdir}/kde4/kio_recoll.so
%{_libdir}/qt5/plugins/kio_recoll.so
%{_datadir}/kde4/apps/kio_recoll/
%{_datadir}/kde4/services/recoll.protocol
%{_datadir}/kde4/services/recollf.protocol
%{_datadir}/kio_recoll/help.html
%{_datadir}/kio_recoll/welcome.html
%{_datadir}/kservices5/recoll.protocol
%{_datadir}/kservices5/recollf.protocol
%changelog %changelog
* Thu Nov 25 2010 Jean-Francois Dockes <jfd@recoll.org> 1.14.3-1 * Mon Jan 18 2016 Terje Rosten <terje.rosten@ntnu.no> - 1.21.4-1
- Update to release 1.14.3 - 1.21.4
* Sat Sep 24 2010 Jean-Francois Dockes <jfd@recoll.org> 1.14.2-2
- Rebuilt with xapian 1.0.21 configured with the -disable-sse flag to avoid the "illegal instruction" problem on older CPUs * Sat Oct 31 2015 Terje Rosten <terje.rosten@ntnu.no> - 1.21.3-1
* Sat Sep 24 2010 Jean-Francois Dockes <jfd@recoll.org> 1.14.2-1 - 1.21.3
- Update to release 1.14.2
* Thu Apr 14 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.04-1 * Sat Oct 03 2015 Terje Rosten <terje.rosten@ntnu.no> - 1.21.2-1
- Update to release 1.13.04 - 1.21.2
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.20.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Tue May 05 2015 Terje Rosten <terje.rosten@ntnu.no> - 1.20.6-1
- 1.20.6
- Fixes bz#1218161 and bz#1204464
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 1.20.5-3
- Rebuilt for GCC 5 C++11 ABI change
* Sat Apr 11 2015 Terje Rosten <terje.rosten@ntnu.no> - 1.20.5-2
- Add KIO subpackage
* Tue Apr 07 2015 Terje Rosten <terje.rosten@ntnu.no> - 1.20.5-1
- 1.20.5
- Include kio support (bz#1203257)
* Sat Jan 10 2015 Terje Rosten <terje.rosten@ntnu.no> - 1.20.1-1
- 1.20.1
* Sun Nov 09 2014 Terje Rosten <terje.rosten@ntnu.no> - 1.19.14p2-1
- 1.19.14p2
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.19.13-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.19.13-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Tue May 06 2014 Terje Rosten <terje.rosten@ntnu.no> - 1.19.13-1
- 1.19.13
* Mon Jan 20 2014 Terje Rosten <terje.rosten@ntnu.no> - 1.19.11-1
- 1.19.11
* Mon Nov 11 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.9-1
- 1.19.9
* Tue Nov 05 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.8-1
- 1.19.8
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.19.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Jun 12 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.4-2
- Fix filter setup
* Mon Jun 10 2013 Terje Rosten <terje.rosten@ntnu.no> - 1.19.4-1
- 1.19.4
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.18.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Nov 19 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.18.1-1
- 1.18.1
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.17.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed May 30 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.17.3-1
- 1.17.3
* Sat Mar 31 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.17.1-1
- 1.17.1
* Sun Mar 25 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.17-1
- 1.17
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.2-3
- Rebuilt for c++ ABI breakage
* Wed Feb 15 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.16.2-2
- Add patch to build with gcc 4.7
* Wed Feb 01 2012 Terje Rosten <terje.rosten@ntnu.no> - 1.16.2-1
- 1.16.2
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Mon Oct 24 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.16.1-2
- Add patch to fix crash (bz #747472)
* Tue Oct 18 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.16.1-1
- 1.16.1
* Tue May 24 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.15.8-2
- add patch from upstream to fix crash.
* Sun May 08 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.15.8-1
- 1.15.8
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.14.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Jan 28 2011 Terje Rosten <terje.rosten@ntnu.no> - 1.14.4-1
- 1.14.4
* Mon Nov 15 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.14.2-2
- Add patch to fix #631704
* Sun Nov 7 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.14.2-1
- 1.14.2
* Thu Jul 15 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-6
- add patch to build with xapian 1.2 (from J.F. Dockes, thanks)
* Sat Jul 10 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-5
- use system xdg-open
- trim chagenlog
* Fri Jul 9 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-4
- fix some review comments
* Mon May 10 2010 Terje Rosten <terje.rosten@ntnu.no> - 1.13.04-3
- use version macro in source url
- don't strip bins, giving non empty debuginfo package
- more explicit file listing
- try to preserve timestamps
- use proper name for spec file
- fix changelog
- license seems to be GPLv2+
- include some %%doc files
- add buildroot tag
- some source add execute bit set
- explicit enable inotify
- add aspell-devel to bulldreq
- make with _smp_mflags seems to work
- add post scripts
- add patch to build gui with correct flags (ref: 338791)
* Sun May 9 2010 J.F. Dockes <jfd@recoll.org> 1.13.04-2
- bumped the release number to issue new rpms for fc10
* Sun May 9 2010 J.F. Dockes 1.13.04
- updated to recoll release 1.13.04
* Fri Feb 12 2010 Terry Duell 1.13.02
- updated to release 1.13.02
* Tue Jan 12 2010 Terry Duell 1.13.01-3
- updated to fix Fedora desktop-file-install and install icon
* Sun Jan 10 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-2
- updated for recent fedoras: depend on xapian packages, use qt4
* Thu Jan 07 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-1 * Thu Jan 07 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-1
- Update to release 1.13.01 - update to release 1.13.01
* Wed Oct 28 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.3-1
- Update to release 1.12.3
* Thu Jan 29 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.0-1
- Update to release 1.12.0
* Mon Oct 13 2008 Jean-Francois Dockes <jfd@recoll.org> 1.11.0-1
- Update to release 1.11.0
* Fri Sep 12 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.6-1
- Update to release 1.10.6
* Thu May 27 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.2-1
- Update to release 1.10.2
* Thu Jan 31 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.1-1
- Update to release 1.10.1
* Wed Nov 21 2007 Jean-Francois Dockes <jfd@recoll.org> 1.10.0-1
- Update to release 1.10.0
* Tue Sep 11 2007 Jean-Francois Dockes <jfd@recoll.org> 1.9.0-1
- Update to release 1.9.0
* Tue Mar 6 2007 Jean-Francois Dockes <jfd@recoll.org> 1.8.1-1
- Update to release 1.8.1
* Mon Jan 15 2007 Jean-Francois Dockes <jfd@recoll.org> 1.7.5-1
- Update to release 1.7.5
* Mon Jan 08 2007 Jean-Francois Dockes <jfd@recoll.org> 1.7.3-1
- Update to release 1.7.3
* Tue Nov 28 2006 Jean-Francois Dockes <jfd@recoll.org> 1.6.1-1
- Update to release 1.6.0
* Mon Nov 20 2006 Jean-Francois Dockes <jfd@recoll.org> 1.5.11-1
- Update to release 1.5.11
* Mon Oct 2 2006 Jean-Francois Dockes <jfd@recoll.org> 1.5.2-1
- Update to release 1.5.2
* Fri Mar 31 2006 Jean-Francois Dockes <jfd@recoll.org> 1.3.2-1
- Update to release 1.3.1
* Wed Feb 1 2006 Jean-Francois Dockes <jfd@recoll.org> 1.2.0-1 * Wed Feb 1 2006 Jean-Francois Dockes <jfd@recoll.org> 1.2.0-1
- Initial packaging - initial packaging

View file

@ -1,112 +0,0 @@
Name: recoll
Version: 1.17.0
Release: 1%{?dist}
Summary: Desktop full text search tool with a qt gui
Group: Applications/Databases
License: GPLv2
URL: http://www.recoll.org/
Source0: http://www.recoll.org/recoll-1.17.0.tar.gz
BuildRequires: qt-devel qt-webkit-devel xapian-core-devel zlib-devel desktop-file-utils
%description
Recoll is a personal full text search package for Linux, FreeBSD and
other Unix systems. It is based on a very strong backend (Xapian), for
which it provides an easy to use, feature-rich, easy administration
interface.
%prep
%setup -q
%build
QMAKE=qmake-qt4
export QMAKE
%configure
# No smpflags as the builds fails for some reason if -j is used.
make
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
desktop-file-install --delete-original \
--dir=%{buildroot}/%{_datadir}/applications \
%{buildroot}/%{_datadir}/applications/%{name}-searchgui.desktop
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%{_bindir}/*
%{_datadir}/%{name}
%{_datadir}/applications/%{name}-searchgui.desktop
%{_datadir}/icons/hicolor/48x48/apps/%{name}.png
%{_datadir}/pixmaps/%{name}.png
%{_mandir}/man1/recoll*
%{_mandir}/man5/recoll*
%doc
%changelog
* Sun Mar 18 2012 J.F. Dockes <jfd@recoll.org> 1.17.9-1
- updated to release 1.16.1
* Wed Sep 28 2011 J.F. Dockes <jfd@recoll.org> 1.16.1-1
- updated to release 1.16.1
* Wed Sep 21 2011 J.F. Dockes <jfd@recoll.org> 1.16.0-1
- updated to release 1.16.0
* Mon May 02 2011 J.F. Dockes <jfd@recoll.org> 1.15.8-1
- updated to release 1.15.8
* Fri Mar 15 2011 J.F. Dockes <jfd@recoll.org> 1.15.5-1
- updated to release 1.15.5
* Thu Feb 15 2011 J.F. Dockes <jfd@recoll.org> 1.15.2-1
- updated to release 1.15.2
* Wed Feb 02 2011 J.F. Dockes <jfd@recoll.org> 1.15.0-1
- updated to release 1.15.0
* Mon Sep 13 2010 J.F. Dockes <jfd@recoll.org> 1.14.0-1
- updated to release 1.14.0
* Sun May 9 2010 J.F. Dockes <jfd@recoll.org> 1.13.04-2
- Bumped the release number to issue new rpms for fc10
* Sun May 9 2010 J.F. Dockes 1.13.04
- spec file updated to recoll release 1.13.04.
* Fri Feb 12 2010 Terry Duell 1.13.02
- updated to release 1.13.02
* Mon Jan 12 2010 Terry Duell 1.13.01-3
- rpm spec file updated to fix Fedora desktop-file-install and install icon
* Sun Jan 10 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-2
- Rpm Spec file updated for recent fedoras: depend on xapian packages, use qt4
* Thu Jan 07 2010 Jean-Francois Dockes <jfd@recoll.org> 1.13.01-1
- Update to release 1.13.01
* Thu Dec 10 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.4-1
- Update to release 1.12.4
* Thu Jan 29 2009 Jean-Francois Dockes <jfd@recoll.org> 1.12.0-1
- Update to release 1.12.0
* Mon Oct 13 2008 Jean-Francois Dockes <jfd@recoll.org> 1.11.0-1
- Update to release 1.11.0
* Fri Sep 12 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.6-1
- Update to release 1.10.6
* Thu May 27 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.2-1
- Update to release 1.10.2
* Thu Jan 31 2008 Jean-Francois Dockes <jfd@recoll.org> 1.10.1-1
- Update to release 1.10.1
* Wed Nov 21 2007 Jean-Francois Dockes <jfd@recoll.org> 1.10.0-1
- Update to release 1.10.0
* Tue Sep 11 2007 Jean-Francois Dockes <jfd@recoll.org> 1.9.0-1
- Update to release 1.9.0
* Tue Mar 6 2007 Jean-Francois Dockes <jfd@recoll.org> 1.8.1-1
- Update to release 1.8.1
* Mon Jan 15 2007 Jean-Francois Dockes <jfd@recoll.org> 1.7.5-1
- Update to release 1.7.5
* Mon Jan 08 2007 Jean-Francois Dockes <jfd@recoll.org> 1.7.3-1
- Update to release 1.7.3
* Tue Nov 28 2006 Jean-Francois Dockes <jfd@recoll.org> 1.6.1-1
- Update to release 1.6.0
* Mon Nov 20 2006 Jean-Francois Dockes <jfd@recoll.org> 1.5.11-1
- Update to release 1.5.11
* Mon Oct 2 2006 Jean-Francois Dockes <jfd@recoll.org> 1.5.2-1
- Update to release 1.5.2
* Fri Mar 31 2006 Jean-Francois Dockes <jfd@recoll.org> 1.3.2-1
- Update to release 1.3.1
* Wed Feb 1 2006 Jean-Francois Dockes <jfd@recoll.org> 1.2.0-1
- Initial packaging

View file

@ -1,5 +1,5 @@
%define name recoll %define name recoll
%define version 1.17.0 %define version 1.18.1
%define release %mkrel 1 %define release %mkrel 1
Name: %{name} Name: %{name}
@ -13,7 +13,10 @@ Group: Applications/Databases
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
License: GPL License: GPL
Requires: xapian-core BuildRequires: libqt4-devel
BuildRequires: libqtwebkit2.2-devel
BuildRequires: libpython-devel
BuildRequires: libxapian-devel
%description %description
Recoll is a personal full text search package for Linux, FreeBSD and Recoll is a personal full text search package for Linux, FreeBSD and
@ -55,12 +58,16 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/%{name} %{_datadir}/%{name}
%{_mandir}/man1/recoll* %{_mandir}/man1/recoll*
%{_mandir}/man5/recoll* %{_mandir}/man5/recoll*
%{python_sitearch}/Recoll*.egg-info
%{python_sitearch}/recoll.so
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
%changelog %changelog
* Sun Mar 18 2012 Jean-Francois Dockes <jfd@recoll.org> 1.17.0-1 * Mon Nov 05 2012 Jean-Francois Dockes <jfd@recoll.org> 1.18.1-1
- Update to release 1.17.0 - Update to release 1.18.1
* Thu May 17 2012 Jean-Francois Dockes <jfd@recoll.org> 1.17.2-1
- Update to release 1.17.2
* Mon Nov 07 2011 Jean-Francois Dockes <jfd@recoll.org> 1.16.2-1 * Mon Nov 07 2011 Jean-Francois Dockes <jfd@recoll.org> 1.16.2-1
- Update to release 1.16.2 - Update to release 1.16.2
* Wed Sep 28 2011 Jean-Francois Dockes <jfd@recoll.org> 1.16.1-1 * Wed Sep 28 2011 Jean-Francois Dockes <jfd@recoll.org> 1.16.1-1

File diff suppressed because it is too large Load diff

654
src/Makefile.am Normal file
View file

@ -0,0 +1,654 @@
CXXFLAGS ?= @CXXFLAGS@
LIBXAPIAN=@LIBXAPIAN@
XAPIANCXXFLAGS=@XAPIANCXXFLAGS@
LIBICONV=@LIBICONV@
INCICONV=@INCICONV@
LIBFAM = @LIBFAM@
RCLLIBVERSION=@RCLLIBVERSION@
X_CFLAGS=@X_CFLAGS@
X_PRE_LIBS=@X_PRE_LIBS@
X_LIBS=@X_LIBS@
X_EXTRA_LIBS=@X_EXTRA_LIBS@
X_LIBX11=@X_LIBX11@
DEFS=@DEFS@
COMMONCPPFLAGS = -I. \
-I$(top_srcdir)/aspell \
-I$(top_srcdir)/bincimapmime \
-I$(top_srcdir)/common \
-I$(top_srcdir)/index \
-I$(top_srcdir)/internfile \
-I$(top_srcdir)/rcldb \
-I$(top_srcdir)/unac \
-I$(top_srcdir)/utils \
-I$(top_srcdir)/xaposix \
-DBUILDING_RECOLL
AM_CPPFLAGS = -Wall -Wno-unused -std=c++11 \
$(COMMONCPPFLAGS) \
$(INCICONV) \
$(XAPIANCXXFLAGS) \
$(X_CFLAGS) \
-DRECOLL_DATADIR=\"${pkgdatadir}\" \
-D_GNU_SOURCE \
$(DEFS)
ACLOCAL_AMFLAGS = -I m4
if NOTHREADS
LIBTHREADS=
else
LIBTHREADS= $(LIBSYSTHREADS)
endif
librcldir = $(libdir)/recoll
librcl_LTLIBRARIES = librecoll.la
librecoll_la_SOURCES = \
aspell/aspell-local.h \
aspell/rclaspell.cpp \
aspell/rclaspell.h \
bincimapmime/config.h \
bincimapmime/convert.cc \
bincimapmime/convert.h \
bincimapmime/mime-inputsource.h \
bincimapmime/mime-parsefull.cc \
bincimapmime/mime-parseonlyheader.cc \
bincimapmime/mime-printbody.cc \
bincimapmime/mime-utils.h \
bincimapmime/mime.cc \
bincimapmime/mime.h \
common/beaglequeuecache.cpp \
common/beaglequeuecache.h \
common/conf_post.h \
common/cstr.cpp \
common/cstr.h \
common/rclconfig.cpp \
common/rclconfig.h \
common/rclinit.cpp \
common/rclinit.h \
common/syngroups.cpp \
common/syngroups.h \
common/textsplit.cpp \
common/textsplit.h \
common/unacpp.cpp \
common/unacpp.h \
common/uproplist.h \
common/utf8fn.cpp \
common/utf8fn.h \
index/beaglequeue.cpp \
index/beaglequeue.h \
index/bglfetcher.cpp \
index/bglfetcher.h \
index/checkretryfailed.cpp \
index/checkretryfailed.h \
index/exefetcher.cpp \
index/exefetcher.h \
index/fetcher.cpp \
index/fetcher.h \
index/fsfetcher.cpp \
index/fsfetcher.h \
index/fsindexer.cpp \
index/fsindexer.h \
index/indexer.cpp \
index/indexer.h \
index/mimetype.cpp \
index/mimetype.h \
index/rclmon.h \
index/recollindex.h \
index/subtreelist.cpp \
index/subtreelist.h \
internfile/Filter.h \
internfile/extrameta.cpp \
internfile/extrameta.h \
internfile/htmlparse.cpp \
internfile/htmlparse.h \
internfile/indextext.h \
internfile/internfile.cpp \
internfile/internfile.h \
internfile/mh_exec.cpp \
internfile/mh_exec.h \
internfile/mh_execm.cpp \
internfile/mh_execm.h \
internfile/mh_html.cpp \
internfile/mh_html.h \
internfile/mh_mail.cpp \
internfile/mh_mail.h \
internfile/mh_mbox.cpp \
internfile/mh_mbox.h \
internfile/mh_null.h \
internfile/mh_symlink.h \
internfile/mh_text.cpp \
internfile/mh_text.h \
internfile/mh_unknown.h \
internfile/mimehandler.cpp \
internfile/mimehandler.h \
internfile/myhtmlparse.cpp \
internfile/myhtmlparse.h \
internfile/txtdcode.cpp \
internfile/uncomp.cpp \
internfile/uncomp.h \
query/docseq.cpp \
query/docseq.h \
query/docseqdb.cpp \
query/docseqdb.h \
query/docseqdocs.h \
query/docseqhist.cpp \
query/docseqhist.h \
query/dynconf.cpp \
query/dynconf.h \
query/filtseq.cpp \
query/filtseq.h \
query/plaintorich.cpp \
query/plaintorich.h \
query/recollq.cpp \
query/recollq.h \
query/reslistpager.cpp \
query/reslistpager.h \
query/sortseq.cpp \
query/sortseq.h \
query/wasaparse.ypp \
query/wasaparseaux.cpp \
query/wasaparserdriver.h \
query/wasatorcl.h \
rcldb/daterange.cpp \
rcldb/daterange.h \
rcldb/expansiondbs.cpp \
rcldb/expansiondbs.h \
rcldb/rclabstract.cpp \
rcldb/rcldb.cpp \
rcldb/rcldb.h \
rcldb/rcldb_p.h \
rcldb/rcldoc.cpp \
rcldb/rcldoc.h \
rcldb/rcldups.cpp \
rcldb/rclquery.cpp \
rcldb/rclquery.h \
rcldb/rclquery_p.h \
rcldb/rclterms.cpp \
rcldb/searchdata.cpp \
rcldb/searchdata.h \
rcldb/searchdatatox.cpp \
rcldb/searchdataxml.cpp \
rcldb/stemdb.cpp \
rcldb/stemdb.h \
rcldb/stoplist.cpp \
rcldb/stoplist.h \
rcldb/synfamily.cpp \
rcldb/synfamily.h \
rcldb/termproc.h \
rcldb/xmacros.h \
unac/unac.cpp \
unac/unac.h \
unac/unac_version.h \
utils/appformime.cpp \
utils/appformime.h \
utils/base64.cpp \
utils/base64.h \
utils/cancelcheck.cpp \
utils/cancelcheck.h \
utils/chrono.h \
utils/chrono.cpp \
utils/circache.cpp \
utils/circache.h \
utils/closefrom.cpp \
utils/closefrom.h \
utils/conftree.cpp \
utils/conftree.h \
utils/copyfile.cpp \
utils/copyfile.h \
utils/cpuconf.cpp \
utils/cpuconf.h \
utils/ecrontab.cpp \
utils/ecrontab.h \
utils/execmd.cpp \
utils/execmd.h \
utils/fileudi.cpp \
utils/fileudi.h \
utils/fstreewalk.cpp \
utils/fstreewalk.h \
utils/hldata.h \
utils/hldata.cpp \
utils/idfile.cpp \
utils/idfile.h \
utils/listmem.cpp \
utils/listmem.h \
utils/log.cpp \
utils/log.h \
utils/md5.cpp \
utils/md5.h \
utils/md5ut.cpp \
utils/md5ut.h \
utils/mimeparse.cpp \
utils/mimeparse.h \
utils/netcon.cpp \
utils/netcon.h \
utils/pathut.cpp \
utils/pathut.h \
utils/pxattr.cpp \
utils/pxattr.h \
utils/rclionice.cpp \
utils/rclionice.h \
utils/rclutil.h \
utils/rclutil.cpp \
utils/readfile.cpp \
utils/readfile.h \
utils/refcntr.h \
utils/smallut.cpp \
utils/smallut.h \
utils/strmatcher.cpp \
utils/strmatcher.h \
utils/transcode.cpp \
utils/transcode.h \
utils/utf8iter.h \
utils/wipedir.cpp \
utils/wipedir.h \
utils/workqueue.h \
xaposix/safefcntl.h \
xaposix/safesysstat.h \
xaposix/safesyswait.h \
xaposix/safeunistd.h
BUILT_SOURCES = query/wasaparse.cpp
AM_YFLAGS = -d
# We use -release: the lib is only shared
# between recoll programs from the same release.
# -version-info $(VERSION_INFO)
librecoll_la_LDFLAGS = -release $(VERSION) \
-Wl,--no-undefined -Wl,--warn-unresolved-symbols
librecoll_la_LIBADD = $(LIBXAPIAN) $(LIBICONV) $(LIBTHREADS)
# There is probably a better way to do this. The KIO needs to be linked
# with librecoll, but librecoll is installed into a non-standard place
# (/usr/lib/recoll). Debian packaging has something against setting an
# rpath on the kio (cause it's not the same package as the lib), so I don't
# know how to link it dynamically. The other thing I don't know is how to
# force automake to build a static lib with the PIC objects. So the
# following target, which is only used from the KIO build, deletes any .a
# and .so and rebuilds the .a with the pic objs (the kio build calls
# configured --disable-static).
# Of course this is very uncomfortably close to automake/libtool internals
# and may not work on all systems.
PicStatic: $(librecoll_la_OBJECTS)
rm -f .libs/librecoll.a
rm -f .libs/librecoll.so
libtool --tag=LD --mode=link gcc -g -O -o librecoll.la \
$(librecoll_la_OBJECTS)
bin_PROGRAMS = recollindex
if MAKECMDLINE
bin_PROGRAMS += recollq
endif
if MAKEXADUMP
bin_PROGRAMS += xadump
endif
recollindex_SOURCES = \
index/recollindex.cpp \
index/rclmonprc.cpp \
index/rclmonrcv.cpp \
utils/x11mon.cpp \
utils/x11mon.h
recollindex_LDADD = librecoll.la $(X_LIBX11)
recollq_SOURCES = query/recollqmain.cpp
recollq_LDADD = librecoll.la
xadump_SOURCES = query/xadump.cpp
xadump_LDADD = librecoll.la $(LIBXAPIAN) $(LIBICONV)
# Note: I'd prefer the generated query parser files not to be distributed
# at all, but failed to achieve this
EXTRA_DIST = \
bincimapmime/00README.recoll bincimapmime/AUTHORS bincimapmime/COPYING \
\
desktop/hotrecoll.py \
desktop/recoll.appdata.xml \
desktop/recollindex.desktop \
desktop/recoll_index_on_ac.sh \
desktop/recoll-searchgui.desktop \
desktop/recoll.png desktop/recoll.svg desktop/recoll.xcf \
\
doc/man \
doc/prog \
doc/user/*.html doc/user/*.css doc/user/*.txt doc/user/*.xml doc/user/Makefile \
\
filters \
\
index/rclmon.sh \
\
kde/kioslave/kio_recoll/00README.txt \
kde/kioslave/kio_recoll/CMakeLists.txt \
kde/kioslave/kio_recoll/data/help.html \
kde/kioslave/kio_recoll/data/searchable.html \
kde/kioslave/kio_recoll/data/welcome.html \
kde/kioslave/kio_recoll/dirif.cpp \
kde/kioslave/kio_recoll/htmlif.cpp \
kde/kioslave/kio_recoll/kio_recoll.cpp \
kde/kioslave/kio_recoll/kio_recoll.h \
kde/kioslave/kio_recoll/recollf.protocol \
kde/kioslave/kio_recoll/recollnolist.protocol \
kde/kioslave/kio_recoll/recoll.protocol \
\
query/location.hh query/position.hh query/stack.hh \
\
qtgui/advsearch.ui \
qtgui/advsearch_w.cpp \
qtgui/advsearch_w.h \
qtgui/advshist.cpp \
qtgui/advshist.h \
qtgui/confgui/confgui.cpp \
qtgui/confgui/confgui.h \
qtgui/confgui/confguiindex.cpp \
qtgui/confgui/confguiindex.h \
qtgui/confgui/conflinkrcl.h \
qtgui/confgui/main.cpp \
qtgui/crontool.cpp \
qtgui/crontool.h \
qtgui/crontool.ui \
qtgui/firstidx.h \
qtgui/firstidx.ui \
qtgui/fragbuts.cpp \
qtgui/fragbuts.h \
qtgui/guiutils.cpp \
qtgui/guiutils.h \
qtgui/i18n/recoll_cs.qm qtgui/i18n/recoll_cs.ts \
qtgui/i18n/recoll_da.qm qtgui/i18n/recoll_da.ts \
qtgui/i18n/recoll_de.qm qtgui/i18n/recoll_de.ts \
qtgui/i18n/recoll_el.qm qtgui/i18n/recoll_el.ts \
qtgui/i18n/recoll_es.qm qtgui/i18n/recoll_es.ts \
qtgui/i18n/recoll_fr.qm qtgui/i18n/recoll_fr.ts \
qtgui/i18n/recoll_it.qm qtgui/i18n/recoll_it.ts \
qtgui/i18n/recoll_lt.qm qtgui/i18n/recoll_lt.ts \
qtgui/i18n/recoll_pl.qm qtgui/i18n/recoll_pl.ts \
qtgui/i18n/recoll_ru.qm qtgui/i18n/recoll_ru.ts \
qtgui/i18n/recoll_tr.qm qtgui/i18n/recoll_tr.ts \
qtgui/i18n/recoll_uk.qm qtgui/i18n/recoll_uk.ts \
qtgui/i18n/recoll_xx.qm qtgui/i18n/recoll_xx.ts \
qtgui/i18n/recoll_zh.qm qtgui/i18n/recoll_zh.ts \
qtgui/i18n/recoll_zh_CN.qm qtgui/i18n/recoll_zh_CN.ts \
qtgui/idxsched.h \
qtgui/idxsched.ui \
qtgui/images/asearch.png \
qtgui/images/cancel.png \
qtgui/images/close.png \
qtgui/images/code-block.png \
qtgui/images/down.png \
qtgui/images/firstpage.png \
qtgui/images/history.png \
qtgui/images/nextpage.png \
qtgui/images/prevpage.png \
qtgui/images/recoll.icns \
qtgui/images/recoll.png \
qtgui/images/sortparms.png \
qtgui/images/spell.png \
qtgui/images/table.png \
qtgui/images/up.png \
qtgui/main.cpp \
qtgui/mtpics/License_sidux.txt \
qtgui/mtpics/README \
qtgui/mtpics/aptosid-book.png \
qtgui/mtpics/aptosid-manual-copyright.txt \
qtgui/mtpics/aptosid-manual.png \
qtgui/mtpics/archive.png \
qtgui/mtpics/book.png \
qtgui/mtpics/bookchap.png \
qtgui/mtpics/document.png \
qtgui/mtpics/drawing.png \
qtgui/mtpics/emblem-symbolic-link.png \
qtgui/mtpics/folder.png \
qtgui/mtpics/html.png \
qtgui/mtpics/image.png \
qtgui/mtpics/message.png \
qtgui/mtpics/mozilla_doc.png \
qtgui/mtpics/pdf.png \
qtgui/mtpics/pidgin.png \
qtgui/mtpics/postscript.png \
qtgui/mtpics/presentation.png \
qtgui/mtpics/sidux-book.png \
qtgui/mtpics/soffice.png \
qtgui/mtpics/source.png \
qtgui/mtpics/sownd.png \
qtgui/mtpics/spreadsheet.png \
qtgui/mtpics/text-x-python.png \
qtgui/mtpics/txt.png \
qtgui/mtpics/video.png \
qtgui/mtpics/wordprocessing.png \
qtgui/multisave.cpp \
qtgui/multisave.h \
qtgui/preview_load.cpp \
qtgui/preview_load.h \
qtgui/preview_plaintorich.cpp \
qtgui/preview_plaintorich.h \
qtgui/preview_w.cpp \
qtgui/preview_w.h \
qtgui/ptrans.ui \
qtgui/ptrans_w.cpp \
qtgui/ptrans_w.h \
qtgui/rclhelp.cpp \
qtgui/rclhelp.h \
qtgui/rclm_idx.cpp \
qtgui/rclm_preview.cpp \
qtgui/rclm_saveload.cpp \
qtgui/rclm_view.cpp \
qtgui/rclm_wins.cpp \
qtgui/rclmain.ui \
qtgui/rclmain_w.cpp \
qtgui/rclmain_w.h \
qtgui/rclzg.cpp \
qtgui/rclzg.h \
qtgui/recoll.h \
qtgui/recoll.pro.in \
qtgui/recoll.qrc \
qtgui/reslist.cpp \
qtgui/reslist.h \
qtgui/respopup.cpp \
qtgui/respopup.h \
qtgui/restable.cpp \
qtgui/restable.h \
qtgui/restable.ui \
qtgui/rtitool.cpp \
qtgui/rtitool.h \
qtgui/rtitool.ui \
qtgui/searchclause_w.cpp \
qtgui/searchclause_w.h \
qtgui/snippets.ui \
qtgui/snippets_w.cpp \
qtgui/snippets_w.h \
qtgui/specialindex.h \
qtgui/specialindex.ui \
qtgui/spell.ui \
qtgui/spell_w.cpp \
qtgui/spell_w.h \
qtgui/ssearch_w.cpp \
qtgui/ssearch_w.h \
qtgui/ssearchb.ui \
qtgui/systray.cpp \
qtgui/systray.h \
qtgui/ui_rclmain.h-4.5 \
qtgui/uiprefs.ui \
qtgui/uiprefs_w.cpp \
qtgui/uiprefs_w.h \
qtgui/viewaction.ui \
qtgui/viewaction_w.cpp \
qtgui/viewaction_w.h \
qtgui/webcache.ui \
qtgui/webcache.cpp \
qtgui/webcache.h \
qtgui/widgets/editdialog.h \
qtgui/widgets/editdialog.ui \
qtgui/widgets/listdialog.h \
qtgui/widgets/listdialog.ui \
qtgui/widgets/qxtconfirmationmessage.cpp \
qtgui/widgets/qxtconfirmationmessage.h \
qtgui/widgets/qxtglobal.h \
qtgui/xmltosd.cpp \
qtgui/xmltosd.h \
\
python/README.txt \
python/recoll/Makefile.in \
python/recoll/pyrclextract.cpp \
python/recoll/pyrecoll.cpp \
python/recoll/pyrecoll.h \
python/recoll/recoll/__init__.py \
python/recoll/recoll/rclconfig.py \
python/recoll/setup.py.in \
python/samples/docdups.py \
python/samples/mutt-recoll.py \
python/samples/rcldlkp.py \
python/samples/rclmbox.py \
python/samples/recollgui/Makefile \
python/samples/recollgui/qrecoll.py \
python/samples/recollgui/rclmain.ui \
python/samples/recollq.py \
python/samples/recollqsd.py \
\
\
sampleconf/fields sampleconf/fragbuts.xml sampleconf/mimeconf \
sampleconf/mimemap sampleconf/mimeview sampleconf/mimeview.mac \
sampleconf/recoll.conf sampleconf/recoll.qss \
\
unac/AUTHORS unac/COPYING unac/README unac/README.recoll unac/unac.c \
\
VERSION
# EXTRA_DIST: The Php Code does not build anymore. No need to ship it until
# someone fixes it:
# php/00README.txt php/recoll/config.m4 php/recoll/make.sh
# php/recoll/php_recoll.h php/recoll/recoll.cpp php/sample/shell.php
if MAKEPYTHON
all-local: recollpython
recollpython: librecoll.la
${MAKE} -C python/recoll libdir=$(libdir)
install-exec-local: recollpython-install
recollpython-install:
(cd python/recoll; \
if test -f /etc/debian_version ; then \
OPTSFORPYTHON=--install-layout=deb; \
fi; \
set -x; \
python setup.py install \
--prefix=${prefix} --root=$${DESTDIR:-/} $${OPTSFORPYTHON})
clean-local: recollpython-clean
recollpython-clean:
rm -rf python/recoll/build
endif
if MAKEQT
all-local: recollqt
recollqt: librecoll.la
(cd $(QTGUI); ${QMAKE} PREFIX=${prefix} recoll.pro)
$(MAKE) -C $(QTGUI) LFLAGS="$(LDFLAGS)" prefix=$(prefix) \
exec_prefix=$(exec_prefix) libdir=$(libdir)
clean-local: recollqt-clean
recollqt-clean:
-$(MAKE) -C $(QTGUI) clean
install-exec-local: recollqt-install
recollqt-install:
$(MAKE) -C $(QTGUI) LFLAGS="$(LDFLAGS)" INSTALL_ROOT=$(DESTDIR) \
prefix=$(prefix) exec_prefix=$(exec_prefix) libdir=$(libdir) \
install
endif
defconfdir = $(pkgdatadir)/examples
defconf_DATA = \
desktop/recollindex.desktop \
index/rclmon.sh \
sampleconf/fragbuts.xml \
sampleconf/fields \
sampleconf/recoll.conf \
sampleconf/mimeconf \
sampleconf/recoll.qss \
sampleconf/mimemap \
sampleconf/mimeview
filterdir = $(pkgdatadir)/filters
filter_DATA = \
desktop/hotrecoll.py \
filters/rcl7z \
filters/rclabw \
filters/rclaptosidman \
filters/rclaudio \
filters/rclcheckneedretry.sh \
filters/rclchm \
filters/rcldia \
filters/rcldjvu.py \
filters/rcldoc.py \
filters/rcldvi \
filters/rclepub \
filters/rclepub1 \
filters/rclexec1.py \
filters/rclexecm.py \
filters/rclfb2 \
filters/rclgaim \
filters/rclgnm \
filters/rclics \
filters/rclimg \
filters/rclimg.py \
filters/rclinfo \
filters/rclkar \
filters/rclkwd \
filters/rcllatinclass.py \
filters/rcllatinstops.zip \
filters/rcllyx \
filters/rclman \
filters/rclpdf.py \
filters/rclokulnote \
filters/rclopxml.py \
filters/rclppt.py \
filters/rclps \
filters/rclpurple \
filters/rclpython \
filters/rclrar \
filters/rclrtf.py \
filters/rclscribus \
filters/rclshowinfo \
filters/rclsiduxman \
filters/rclsoff.py \
filters/rclsvg.py \
filters/rcltar \
filters/rcltex \
filters/rcltext.py \
filters/rcluncomp \
filters/rcluncomp.py \
filters/rclwar \
filters/rclwpd \
filters/rclxls.py \
filters/rclxml.py \
filters/rclxmp.py \
filters/rclxslt.py \
filters/rclzip \
filters/ppt-dump.py \
filters/xls-dump.py \
filters/xlsxmltocsv.py \
filters/msodump.zip \
python/recoll/recoll/rclconfig.py
install-data-hook:
(cd $(DESTDIR)/$(filterdir); \
chmod a+x rcl* ppt-dump.py xls-dump.py xlsxmltocsv.py hotrecoll.py; \
chmod 0644 msodump.zip rclexecm.py rcllatinstops.zip rclconfig.py)
if MAKEUSERDOC
rdocdir = $(pkgdatadir)/doc
rdoc_DATA = doc/user/usermanual.html doc/user/docbook-xsl.css
doc/user/usermanual.html: doc/user/usermanual.xml
mkdir -p doc/user
test -f doc/user/Makefile || \
cp -p $(top_srcdir)/doc/user/Makefile doc/user
$(MAKE) -C doc/user VPATH=$(VPATH):$(VPATH)/doc/user usermanual.html
endif
dist_man1_MANS = doc/man/recoll.1 doc/man/recollq.1 doc/man/recollindex.1
dist_man5_MANS = doc/man/recoll.conf.5
dist-hook:
modified=`hg status | grep -v /$(distdir)/|grep -v debianunitysco`; \
if test ! -z "$$modified"; then \
echo Local directory is modified: $$modified ; exit 1; fi
hg tag -f -m "Release $(VERSION) tagged" RECOLL-$(VERSION)

View file

@ -1,81 +0,0 @@
# Copyright (C) 2005 J.F.Dockes
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
datadir = @datadir@
datarootdir = @datarootdir@
mandir = @mandir@
QMAKE = @QMAKE@
QTGUI = @QTGUI@
all: mk/sysconf
${MAKE} -C lib
${MAKE} -C index recollindex
@NOQTMAKE@(cd $(QTGUI); ${QMAKE} recoll.pro)
@NOQTMAKE@${MAKE} -C $(QTGUI) depth=..
@NOPYTHON@${MAKE} -C python/recoll
${MAKE} -C query recollq
mk/sysconf:
@echo "You need to run configure first" ; exit 1
static: mk/sysconf
${MAKE} -C lib
rm -f index/recollindex
${MAKE} -C index BSTATIC=-Wl,-Bstatic BDYNAMIC=-Wl,-Bdynamic \
LIBXAPIANSTATICEXTRA="@LIBXAPIANSTATICEXTRA@" \
recollindex
@NOQTMAKE@(cd $(QTGUI); $(QMAKE) recoll.pro)
@NOQTMAKE@rm -f $(QTGUI)/recoll
@NOQTMAKE@${MAKE} -C $(QTGUI) BSTATIC=-Wl,-Bstatic \
@NOQTMAKE@ BDYNAMIC=-Wl,-Bdynamic depth=.. \
@NOQTMAKE@ LIBXAPIANSTATICEXTRA="@LIBXAPIANSTATICEXTRA@"
clean:
${MAKE} -C common clean
${MAKE} -C index clean
${MAKE} -C internfile clean
${MAKE} -C lib clean
${MAKE} -C query clean
${MAKE} -C utils clean
-${MAKE} -C desktop/unity-lens-recoll clean
-${MAKE} -C python/recoll clean
@NOQTMAKE@@-${MAKE} -C $(QTGUI) clean
rm -f qtgui/Makefile qtgui/confgui/Makefile qtgui/recoll
rm -f filters/rclexecm.pyc
rm -rf qtgui/.moc qtgui/.ui qtgui/confgui/.moc qtgui/confgui/.ui
rm -rf qtgui/.obj qtgui/.moc qtgui/.ui
rm -rf python/recoll/build
rm -rf $(QTGUI)/recoll.app
# Note: we don't remove the top Makefile, to keep the "clean" targets
# available but a "Make" won't work without a configure anyway
distclean: clean
-${MAKE} -C desktop/unity-lens-recoll distclean
-${MAKE} -C python/recoll distclean
rm -f mk/sysconf mk/localdefs sampleconf/recoll.conf \
qtgui/recoll.pro \
config.log config.status \
recollinstall \
lib/*.dep common/autoconfig.h
rm -f common/rclversion.h
rm -f index/alldeps lib/alldeps query/alldeps bincimapmime/alldeps
rm -rf autom4te.cache
maintainer-clean: distclean
rm -f doc/user/*.html* doc/user/*.txt doc/user/HTML.manifest
rm -f qtgui/i18n/*.qm
# recollinstall can be executed by the user and will compute 'normal'
# values for bindir etc., relative to the prefix argument. When executed
# here, we pass a bunch of variables in the environment, the values will
# override the computed defaults.
install: all
DESTDIR=${DESTDIR} bindir=${bindir} datadir=${datadir} \
mandir=${mandir} \
/bin/sh ./recollinstall ${prefix}
.PHONY: all static clean distclean install

3359
src/README

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
1.17.2 1.23.0

View file

@ -1,31 +1,12 @@
depth = ..
include $(depth)/mk/sysconf
PROGS = rclaspell PROGS = rclaspell
SRCS = rclaspell.cpp all: $(PROGS)
all: depend $(BIGLIB) $(PROGS) RCLASPELL_OBJS= trrclaspell.o
RCLASPELL_OBJS= trrclaspell.o $(BIGLIB)
rclaspell : $(RCLASPELL_OBJS) rclaspell : $(RCLASPELL_OBJS)
$(CXX) $(ALL_CXXFLAGS) -o rclaspell $(RCLASPELL_OBJS) \ $(CXX) $(ALL_CXXFLAGS) -o rclaspell $(RCLASPELL_OBJS) \
$(LIBXAPIAN) $(LIBICONV) $(LIBRECOLL)
trrclaspell.o : rclaspell.cpp trrclaspell.o : rclaspell.cpp
$(CXX) $(ALL_CXXFLAGS) -DTEST_RCLASPELL -c -o trrclaspell.o \ $(CXX) $(ALL_CXXFLAGS) -DTEST_RCLASPELL -c -o trrclaspell.o \
rclaspell.cpp rclaspell.cpp
$(BIGLIB): force include ../utils/utmkdefs.mk
cd $(depth)/lib;$(MAKE)
force:
depend: alldeps.stamp
alldeps.stamp : $(SRCS)
$(CXX) -M $(ALL_CXXFLAGS) $(SRCS) > alldeps
touch alldeps.stamp
clean:
cp /dev/null alldeps
rm -f alldeps.stamp
rm -f *.o $(PROGS)
include alldeps

View file

@ -21,20 +21,21 @@
#ifdef RCL_USE_ASPELL #ifdef RCL_USE_ASPELL
#include <mutex>
#include <unistd.h> #include <unistd.h>
#include <dlfcn.h> #include <dlfcn.h>
#include <iostream>
#include <stdlib.h> #include <stdlib.h>
#include <vector>
#include ASPELL_INCLUDE #include ASPELL_INCLUDE
#include "pathut.h" #include "pathut.h"
#include "execmd.h" #include "execmd.h"
#include "rclaspell.h" #include "rclaspell.h"
#include "debuglog.h" #include "log.h"
#include "unacpp.h"
#include "ptmutex.h" using namespace std;
// Just a place where we keep the Aspell library entry points together // Just a place where we keep the Aspell library entry points together
class AspellApi { class AspellApi {
@ -63,7 +64,7 @@ public:
}; };
static AspellApi aapi; static AspellApi aapi;
static PTMutexInit o_aapi_mutex; static std::mutex o_aapi_mutex;
#define NMTOPTR(NM, TP) \ #define NMTOPTR(NM, TP) \
if ((aapi.NM = TP dlsym(m_data->m_handle, #NM)) == 0) { \ if ((aapi.NM = TP dlsym(m_data->m_handle, #NM)) == 0) { \
@ -84,7 +85,7 @@ public:
: m_handle(0), m_speller(0) : m_handle(0), m_speller(0)
{} {}
~AspellData() { ~AspellData() {
LOGDEB2(("~AspellData\n")); LOGDEB2("~AspellData\n" );
if (m_handle) { if (m_handle) {
dlclose(m_handle); dlclose(m_handle);
m_handle = 0; m_handle = 0;
@ -93,7 +94,7 @@ public:
// Dumps core if I do this?? // Dumps core if I do this??
//aapi.delete_aspell_speller(m_speller); //aapi.delete_aspell_speller(m_speller);
m_speller = 0; m_speller = 0;
LOGDEB2(("~AspellData: speller done\n")); LOGDEB2("~AspellData: speller done\n" );
} }
} }
@ -114,7 +115,7 @@ Aspell::~Aspell()
bool Aspell::init(string &reason) bool Aspell::init(string &reason)
{ {
PTMutexLocker locker(o_aapi_mutex); std::unique_lock<std::mutex> locker(o_aapi_mutex);
deleteZ(m_data); deleteZ(m_data);
// Language: we get this from the configuration, else from the NLS // Language: we get this from the configuration, else from the NLS
@ -151,25 +152,8 @@ bool Aspell::init(string &reason)
return false; return false;
} }
// We first look for the aspell library in libdir, and also try to
// be clever with ASPELL_PROG.
vector<string> libdirs;
libdirs.push_back(LIBDIR);
// If not in the standard place, the aspell library has to live
// under the same prefix as the aspell program.
{
string aspellPrefix = path_getfather(path_getfather(m_data->m_exec));
// This would probably require some more tweaking on solaris/irix etc.
string dir = sizeof(long) > 4 ? "lib64" : "lib";
string libaspell = path_cat(aspellPrefix, dir);
if (libaspell != LIBDIR)
libdirs.push_back(libaspell);
}
reason = "Could not open shared library "; reason = "Could not open shared library ";
for (vector<string>::iterator it = libdirs.begin(); string libbase("libaspell");
it != libdirs.end(); it++) {
string libbase = path_cat(*it, "libaspell");
string lib; string lib;
for (unsigned int i = 0; i < nlibsuffs; i++) { for (unsigned int i = 0; i < nlibsuffs; i++) {
lib = libbase + aspell_lib_suffixes[i]; lib = libbase + aspell_lib_suffixes[i];
@ -179,7 +163,6 @@ bool Aspell::init(string &reason)
goto found; goto found;
} }
} }
}
found: found:
if (m_data->m_handle == 0) { if (m_data->m_handle == 0) {
@ -238,8 +221,8 @@ bool Aspell::ok() const
string Aspell::dicPath() string Aspell::dicPath()
{ {
return path_cat(m_config->getConfDir(), string ccdir = m_config->getAspellcacheDir();
string("aspdict.") + m_lang + string(".rws")); return path_cat(ccdir, string("aspdict.") + m_lang + string(".rws"));
} }
@ -258,15 +241,20 @@ public:
{} {}
void newData() { void newData() {
while (m_db.termWalkNext(m_tit, *m_input)) { while (m_db.termWalkNext(m_tit, *m_input)) {
// Prefixed terms are also somewhere else without the suffix, LOGDEB2("Aspell::buildDict: term: [" << (m_input) << "]\n" );
// skip them if (!Rcl::Db::isSpellingCandidate(*m_input)) {
if (m_input->empty() || LOGDEB2("Aspell::buildDict: SKIP\n" );
('A' <= m_input->at(0) && m_input->at(0) <= 'Z'))
continue; continue;
if (!Rcl::Db::isSpellingCandidate(*m_input)) }
if (!o_index_stripchars) {
string lower;
if (!unacmaybefold(*m_input, lower, "UTF-8", UNACOP_FOLD))
continue; continue;
m_input->swap(lower);
}
// Got a non-empty sort-of appropriate term, let's send it to // Got a non-empty sort-of appropriate term, let's send it to
// aspell // aspell
LOGDEB2("Apell::buildDict: SEND\n" );
m_input->append("\n"); m_input->append("\n");
return; return;
} }
@ -281,15 +269,35 @@ bool Aspell::buildDict(Rcl::Db &db, string &reason)
if (!ok()) if (!ok())
return false; return false;
string addCreateParam;
m_config->getConfParam("aspellAddCreateParam", addCreateParam);
// We create the dictionary by executing the aspell command: // We create the dictionary by executing the aspell command:
// aspell --lang=[lang] create master [dictApath] // aspell --lang=[lang] create master [dictApath]
string cmdstring(m_data->m_exec);
ExecCmd aspell; ExecCmd aspell;
list<string> args; vector<string> args;
args.push_back(string("--lang=")+ m_lang); args.push_back(string("--lang=")+ m_lang);
cmdstring += string(" ") + string("--lang=") + m_lang;
args.push_back("--encoding=utf-8"); args.push_back("--encoding=utf-8");
cmdstring += string(" ") + "--encoding=utf-8";
if (!addCreateParam.empty()) {
args.push_back(addCreateParam);
cmdstring += string(" ") + addCreateParam;
}
args.push_back("create"); args.push_back("create");
cmdstring += string(" ") + "create";
args.push_back("master"); args.push_back("master");
cmdstring += string(" ") + "master";
args.push_back(dicPath()); args.push_back(dicPath());
cmdstring += string(" ") + dicPath();
// Have to disable stderr, as numerous messages about bad strings are
// printed. We'd like to keep errors about missing databases though, so
// make it configurable for diags
bool keepStderr = false;
m_config->getConfParam("aspellKeepStderr", &keepStderr);
if (!keepStderr)
aspell.setStderr("/dev/null"); aspell.setStderr("/dev/null");
Rcl::TermIter *tit = db.termWalkOpen(); Rcl::TermIter *tit = db.termWalkOpen();
@ -297,15 +305,36 @@ bool Aspell::buildDict(Rcl::Db &db, string &reason)
reason = "termWalkOpen failed\n"; reason = "termWalkOpen failed\n";
return false; return false;
} }
string termbuf; string termbuf;
AspExecPv pv(&termbuf, tit, db); AspExecPv pv(&termbuf, tit, db);
aspell.setProvide(&pv); aspell.setProvide(&pv);
if (aspell.doexec(m_data->m_exec, args, &termbuf)) { if (aspell.doexec(m_data->m_exec, args, &termbuf)) {
reason = string("aspell dictionary creation command failed.\n" ExecCmd cmd;
args.clear();
args.push_back("dicts");
string dicts;
bool hasdict = false;
if (cmd.doexec(m_data->m_exec, args, 0, &dicts)) {
vector<string> vdicts;
stringToTokens(dicts, vdicts, "\n\r\t ");
if (find(vdicts.begin(), vdicts.end(), m_lang) != vdicts.end()) {
hasdict = true;
}
}
if (hasdict)
reason = string(
"\naspell dictionary creation command [") +
cmdstring + string("] failed. Reason unknown.\n"
"Try to set aspellKeepStderr = 1 in recoll.conf, and execute \n"
"the indexing command in a terminal to see the aspell "
"diagnostic output.\n");
else
reason = string("aspell dictionary creation command failed:\n") +
cmdstring + "\n"
"One possible reason might be missing language " "One possible reason might be missing language "
"data files for lang = ") + m_lang; "data files for lang = " + m_lang +
". Maybe try to execute the command by hand for a better diag.";
return false; return false;
} }
db.termWalkClose(tit); db.termWalkClose(tit);
@ -340,17 +369,27 @@ bool Aspell::make_speller(string& reason)
return true; return true;
} }
bool Aspell::check(Rcl::Db &db, const string &term, string& reason) bool Aspell::check(const string &iterm, string& reason)
{ {
LOGDEB2(("Aspell::check [%s]\n", term.c_str())); LOGDEB2("Aspell::check [" << (iterm) << "]\n" );
string mterm(iterm);
if (!ok() || !make_speller(reason)) if (!ok() || !make_speller(reason))
return false; return false;
if (term.empty()) if (iterm.empty())
return true; //?? return true; //??
if (!o_index_stripchars) {
string lower;
if (!unacmaybefold(mterm, lower, "UTF-8", UNACOP_FOLD)) {
LOGERR("Aspell::check : cant lowercase input\n" );
return false;
}
mterm.swap(lower);
}
int ret = aapi.aspell_speller_check(m_data->m_speller, int ret = aapi.aspell_speller_check(m_data->m_speller,
term.c_str(), term.length()); mterm.c_str(), mterm.length());
reason.clear(); reason.clear();
switch (ret) { switch (ret) {
case 0: return false; case 0: return false;
@ -363,19 +402,29 @@ bool Aspell::check(Rcl::Db &db, const string &term, string& reason)
} }
} }
bool Aspell::suggest(Rcl::Db &db, const string &term, bool Aspell::suggest(Rcl::Db &db, const string &_term,
list<string>& suggestions, string& reason) list<string>& suggestions, string& reason)
{ {
if (!ok() || !make_speller(reason)) if (!ok() || !make_speller(reason))
return false; return false;
if (term.empty()) string mterm(_term);
if (mterm.empty())
return true; //?? return true; //??
if (!o_index_stripchars) {
string lower;
if (!unacmaybefold(mterm, lower, "UTF-8", UNACOP_FOLD)) {
LOGERR("Aspell::check : cant lowercase input\n" );
return false;
}
mterm.swap(lower);
}
AspellCanHaveError *ret; AspellCanHaveError *ret;
const AspellWordList *wl = const AspellWordList *wl =
aapi.aspell_speller_suggest(m_data->m_speller, aapi.aspell_speller_suggest(m_data->m_speller,
term.c_str(), term.length()); mterm.c_str(), mterm.length());
if (wl == 0) { if (wl == 0) {
reason = aapi.aspell_speller_error_message(m_data->m_speller); reason = aapi.aspell_speller_error_message(m_data->m_speller);
return false; return false;
@ -383,14 +432,13 @@ bool Aspell::suggest(Rcl::Db &db, const string &term,
AspellStringEnumeration *els = aapi.aspell_word_list_elements(wl); AspellStringEnumeration *els = aapi.aspell_word_list_elements(wl);
const char *word; const char *word;
while ((word = aapi.aspell_string_enumeration_next(els)) != 0) { while ((word = aapi.aspell_string_enumeration_next(els)) != 0) {
// stemDiffers checks that the word exists (we don't want // Check that the word exists in the index (we don't want
// aspell computed stuff, only exact terms from the dictionary), // aspell computed stuff, only exact terms from the
// and that it stems differently to the base word (else it's not // dictionary). We used to also check that it stems
// useful to expand the search). Or is it ? // differently from the base word but this is complicated
// ******** This should depend if // (stemming on/off + language), so we now leave this to the
// stemming is turned on or not for querying ******* // caller.
string sw(word); if (db.termExists(word))
if (db.termExists(sw) && db.stemDiffers("english", sw, term))
suggestions.push_back(word); suggestions.push_back(word);
} }
aapi.delete_aspell_string_enumeration(els); aapi.delete_aspell_string_enumeration(els);
@ -423,12 +471,12 @@ using namespace std;
static char *thisprog; static char *thisprog;
RclConfig *rclconfig; RclConfig *rclconfig;
Rcl::Db rcldb;
static char usage [] = static char usage [] =
" -b : build dictionary\n" " -b : build dictionary\n"
" -s <term>: suggestions for term\n" " -s <term>: suggestions for term\n"
"\n\n" " -c <term>: check term\n"
"\n"
; ;
static void static void
Usage(void) Usage(void)
@ -441,6 +489,7 @@ static int op_flags;
#define OPT_MOINS 0x1 #define OPT_MOINS 0x1
#define OPT_s 0x2 #define OPT_s 0x2
#define OPT_b 0x4 #define OPT_b 0x4
#define OPT_c 0x8
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
@ -457,6 +506,10 @@ int main(int argc, char **argv)
while (**argv) while (**argv)
switch (*(*argv)++) { switch (*(*argv)++) {
case 'b': op_flags |= OPT_b; break; case 'b': op_flags |= OPT_b; break;
case 'c': op_flags |= OPT_c; if (argc < 2) Usage();
word = *(++argv);
argc--;
goto b1;
case 's': op_flags |= OPT_s; if (argc < 2) Usage(); case 's': op_flags |= OPT_s; if (argc < 2) Usage();
word = *(++argv); word = *(++argv);
argc--; argc--;
@ -482,7 +535,9 @@ int main(int argc, char **argv)
exit(1); exit(1);
} }
if (!rcldb.open(dbdir, Rcl::Db::DbRO, 0)) { Rcl::Db rcldb(rclconfig);
if (!rcldb.open(Rcl::Db::DbRO, 0)) {
fprintf(stderr, "Could not open database in %s\n", dbdir.c_str()); fprintf(stderr, "Could not open database in %s\n", dbdir.c_str());
exit(1); exit(1);
} }
@ -498,6 +553,18 @@ int main(int argc, char **argv)
cerr << "buildDict failed: " << reason << endl; cerr << "buildDict failed: " << reason << endl;
exit(1); exit(1);
} }
} else if (op_flags & OPT_c) {
bool ret = aspell.check(word, reason);
if (!ret && reason.size()) {
cerr << "Aspell error: " << reason << endl;
return 1;
}
cout << word;
if (ret) {
cout << " is in dictionary" << endl;
} else {
cout << " not in dictionary" << endl;
}
} else { } else {
list<string> suggs; list<string> suggs;
if (!aspell.suggest(rcldb, word, suggs, reason)) { if (!aspell.suggest(rcldb, word, suggs, reason)) {
@ -518,3 +585,4 @@ int main(int argc, char **argv)
#endif // RCL_USE_ASPELL #endif // RCL_USE_ASPELL
#endif // TEST_RCLASPELL test driver #endif // TEST_RCLASPELL test driver

View file

@ -37,11 +37,6 @@
#include "rclconfig.h" #include "rclconfig.h"
#include "rcldb.h" #include "rcldb.h"
#ifndef NO_NAMESPACES
using std::string;
using std::list;
#endif // NO_NAMESPACES
class AspellData; class AspellData;
class Aspell { class Aspell {
@ -53,26 +48,31 @@ class Aspell {
bool ok() const; bool ok() const;
/** Find the aspell command and shared library, init function pointers */ /** Find the aspell command and shared library, init function pointers */
bool init(string &reason); bool init(std::string &reason);
/** Build dictionary out of index term list. This is done at the end /** Build dictionary out of index term list. This is done at the end
* of an indexing pass. */ * of an indexing pass. */
bool buildDict(Rcl::Db &db, string &reason); bool buildDict(Rcl::Db &db, std::string &reason);
/** Check that word is in dictionary. ret==false && !reason.empty() => err*/ /** Check that word is in dictionary. Note that this would mean
bool check(Rcl::Db &db, const string& term, string& reason); * that the EXACT word is: aspell just does a lookup, no
* grammatical, case or diacritics magic of any kind
*
* @return true if word in dic, false if not. reason.size() -> error
*/
bool check(const std::string& term, std::string& reason);
/** Return a list of possible expansions for a given word */ /** Return a list of possible expansions for a given word */
bool suggest(Rcl::Db &db, const string& term, list<string> &suggestions, bool suggest(Rcl::Db &db, const std::string& term,
string &reason); std::list<std::string> &suggestions, std::string &reason);
private: private:
string dicPath(); std::string dicPath();
RclConfig *m_config; RclConfig *m_config;
string m_lang; std::string m_lang;
AspellData *m_data; AspellData *m_data;
bool make_speller(string& reason); bool make_speller(std::string& reason);
}; };
#endif /* RCL_USE_ASPELL */ #endif /* RCL_USE_ASPELL */

6
src/autogen.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh
aclocal
libtoolize --copy
automake --add-missing --force-missing --copy
autoconf

View file

@ -1,39 +1,11 @@
# @(#$Id: Makefile,v 1.6 2006-01-19 12:01:42 dockes Exp $ (C) 2005 J.F.Dockes
depth = ..
include $(depth)/mk/sysconf
LIBS = libmime.a
PROGS = trbinc PROGS = trbinc
all: $(PROGS)
all: depend $(LIBS)
SRCS = mime-getpart.cc mime-parsefull.cc mime-parseonlyheader.cc \
mime-printbody.cc mime-printdoc.cc mime-printheader.cc mime.cc \
convert.cc iodevice.cc iofactory.cc
OBJS = mime-getpart.o mime-parsefull.o mime-parseonlyheader.o \
mime-printbody.o mime-printdoc.o mime-printheader.o mime.o \
convert.o iodevice.o iofactory.o
libmime.a : $(OBJS)
$(AR) ru libmime.a $(OBJS)
.cc.o:
$(CXX) $(ALL_CXXFLAGS) -c $<
TRBINCOBJS = trbinc.o TRBINCOBJS = trbinc.o
trbinc: trbinc.o trbinc: trbinc.o
$(CXX) -o trbinc trbinc.o libmime.a $(CXX) -o trbinc trbinc.o $(LIBRECOLL)
depend: alldeps.stamp trbinc.o: trbinc.cc
alldeps.stamp : $(SRCS) $(CXX) $(ALL_CXXFLAGS) -c -o trbinc.o trbinc.cc
$(CXX) -M $(ALL_CXXFLAGS) $(SRCS) > alldeps
touch alldeps.stamp
clean: include ../utils/utmkdefs.mk
cp /dev/null alldeps
rm -f alldeps.stamp
rm -f ${LIBS} ${PROGS} ${OBJS}
include alldeps

View file

@ -1,90 +0,0 @@
/* -*- mode:c++;c-basic-offset:2 -*- */
/* --------------------------------------------------------------------
* Filename:
* address.cc
*
* Description:
* Implementation of the Address class.
* --------------------------------------------------------------------
* Copyright 2002-2005 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "address.h"
#include "convert.h"
#include <string>
#ifndef NO_NAMESPACES
using namespace ::std;
using namespace Binc;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
Address::Address(const string &name, const string &addr)
{
string::size_type pos = addr.find('@');
this->name = name;
if (pos != string::npos) {
this->local = addr.substr(0, pos);
this->host = addr.substr(pos + 1);
} else this->local = addr;
}
//------------------------------------------------------------------------
Address::Address(const string &wholeaddress)
{
string::size_type start = wholeaddress.find('<');
string addr;
if (start != string::npos)
addr = wholeaddress.substr(start + 1);
else
addr = wholeaddress;
trim(addr, "<>");
if (start != string::npos)
name = wholeaddress.substr(0, start);
else
name = string();
trim(name);
trim(name, "\"");
start = addr.find('@');
local = addr.substr(0, start);
host = addr.substr(start + 1);
trim(local);
trim(host);
trim(name);
}
//------------------------------------------------------------------------
string Address::toParenList(void) const
{
string tmp = "(";
tmp += name.empty() ? "NIL" : toImapString(name);
tmp += " NIL ";
tmp += local.empty() ? "\"\"" : toImapString(local);
tmp += " ";
tmp += host.empty() ? "\"\"" : toImapString(host);
tmp += ")";
return tmp;
}

View file

@ -1,52 +0,0 @@
/* -*- mode:c++;c-basic-offset:2 -*- */
/* --------------------------------------------------------------------
* Filename:
* src/mailbox/address.h
*
* Description:
* Declaration of the Address class.
* --------------------------------------------------------------------
* Copyright 2002-2005 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifndef address_h_included
#define address_h_included
#include <string>
namespace Binc {
//------------------------------------------------------------------------
class Address {
public:
std::string name;
std::string local;
std::string host;
//--
std::string toParenList(void) const;
//--
Address(const std::string &name, const std::string &addr);
Address(const std::string &wholeaddr);
};
}
#endif

View file

@ -23,10 +23,6 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "convert.h" #include "convert.h"
#include <string> #include <string>
@ -47,7 +43,7 @@ BincStream::~BincStream(void)
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
string BincStream::popString(unsigned int size) string BincStream::popString(std::string::size_type size)
{ {
if (size > nstr.length()) if (size > nstr.length())
size = nstr.length(); size = nstr.length();

View file

@ -23,25 +23,18 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifndef convert_h_included #ifndef convert_h_included
#define convert_h_included #define convert_h_included
#include <stddef.h>
#include <string> #include <string>
#include <vector> #include <vector>
#include <iomanip> #include <iomanip>
#include <iostream> #include <iostream>
#include <stdio.h> #include <stdio.h>
#include <sys/stat.h>
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
#include "address.h"
//#include "depot.h"
namespace Binc { namespace Binc {
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -101,7 +94,7 @@ namespace Binc {
std::string tmp; std::string tmp;
for (std::string::const_iterator i = s.begin(); for (std::string::const_iterator i = s.begin();
i != s.end() && i + 1 != s.end(); i += 2) { i != s.end() && i + 1 != s.end(); i += 2) {
int n; ptrdiff_t n;
unsigned char c = *i; unsigned char c = *i;
unsigned char d = *(i + 1); unsigned char d = *(i + 1);
@ -130,7 +123,7 @@ namespace Binc {
for (std::string::const_iterator i = s_in.begin(); i != s_in.end(); ++i) { for (std::string::const_iterator i = s_in.begin(); i != s_in.end(); ++i) {
unsigned char c = (unsigned char)*i; unsigned char c = (unsigned char)*i;
if (c <= 31 || c >= 127 || c == '\"' || c == '\\') if (c <= 31 || c >= 127 || c == '\"' || c == '\\')
return "{" + toString(s_in.length()) + "}\r\n" + s_in; return "{" + toString((unsigned long)s_in.length()) + "}\r\n" + s_in;
} }
return "\"" + s_in + "\""; return "\"" + s_in + "\"";
@ -153,7 +146,7 @@ namespace Binc {
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline void chomp(std::string &s_in, const std::string &chars = " \t\r\n") inline void chomp(std::string &s_in, const std::string &chars = " \t\r\n")
{ {
int n = s_in.length(); std::string::size_type n = s_in.length();
while (n > 1 && chars.find(s_in[n - 1]) != std::string::npos) while (n > 1 && chars.find(s_in[n - 1]) != std::string::npos)
s_in.resize(n-- - 1); s_in.resize(n-- - 1);
} }
@ -298,7 +291,7 @@ namespace Binc {
BincStream &operator << (char t); BincStream &operator << (char t);
//-- //--
std::string popString(unsigned int size); std::string popString(std::string::size_type size);
//-- //--
char popChar(void); char popChar(void);

View file

@ -1,322 +0,0 @@
/*-*-mode:c++-*-*/
/* --------------------------------------------------------------------
* Filename:
* src/iodevice.cc
*
* Description:
* Implementation of the IODevice class.
* --------------------------------------------------------------------
* Copyright 2002, 2003 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#include "iodevice.h"
#include "convert.h" // BincStream
//#include "session.h" // getEnv/hasEnv
#include <stdlib.h>
#include <unistd.h>
#ifndef NO_NAMESPACES
using namespace ::std;
using namespace ::Binc;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
IODevice::IODevice(int f) : flags(f | IsEnabled),
maxInputBufferSize(0),
maxOutputBufferSize(0),
timeout(0),
readCount(0), writeCount(0),
outputLevel(ErrorLevel),
outputLevelLimit(ErrorLevel),
error(Unknown), errorString("Unknown error"),
dumpfd(0)
{
}
//------------------------------------------------------------------------
IODevice::~IODevice(void)
{
}
//------------------------------------------------------------------------
IODevice &IODevice::operator <<(ostream &(*source)(ostream &))
{
if (!(flags & IsEnabled) || outputLevel > outputLevelLimit)
return *this;
static std::ostream &(*endl_funcptr)(ostream &) = endl;
if (source != endl_funcptr)
return *this;
outputBuffer << "\r\n";
if (dumpfd)
::write(dumpfd, "\r\n", 2);
if (flags & FlushesOnEndl)
flush();
else if (flags & HasOutputLimit)
if (outputBuffer.getSize() > maxOutputBufferSize)
flush();
return *this;
}
//------------------------------------------------------------------------
bool IODevice::canRead(void) const
{
return false;
}
//------------------------------------------------------------------------
void IODevice::clear()
{
if (!(flags & IsEnabled))
return;
inputBuffer.clear();
outputBuffer.clear();
}
//------------------------------------------------------------------------
bool IODevice::flush()
{
if (!(flags & IsEnabled))
return true;
WriteResult writeResult = WriteWait;
do {
unsigned int s = outputBuffer.getSize();
if (s == 0)
break;
if (!waitForWrite())
return false;
writeResult = write();
if (writeResult == WriteError)
return false;
writeCount += s - outputBuffer.getSize();
} while (outputBuffer.getSize() > 0 && writeResult == WriteWait);
outputBuffer.clear();
return true;
}
//------------------------------------------------------------------------
void IODevice::setFlags(unsigned int f)
{
flags |= f;
}
//------------------------------------------------------------------------
void IODevice::clearFlags(unsigned int f)
{
flags &= ~f;
}
//------------------------------------------------------------------------
void IODevice::setMaxInputBufferSize(unsigned int max)
{
maxInputBufferSize = max;
}
//------------------------------------------------------------------------
void IODevice::setMaxOutputBufferSize(unsigned int max)
{
maxOutputBufferSize = max;
}
//------------------------------------------------------------------------
void IODevice::setTimeout(unsigned int t)
{
timeout = t;
if (t)
flags |= HasTimeout;
else
flags &= ~HasTimeout;
}
//------------------------------------------------------------------------
unsigned int IODevice::getTimeout(void) const
{
return timeout;
}
//------------------------------------------------------------------------
void IODevice::setOutputLevel(LogLevel level)
{
outputLevel = level;
}
//------------------------------------------------------------------------
IODevice::LogLevel IODevice::getOutputLevel(void) const
{
return outputLevel;
}
//------------------------------------------------------------------------
void IODevice::setOutputLevelLimit(LogLevel level)
{
outputLevelLimit = level;
}
//------------------------------------------------------------------------
IODevice::LogLevel IODevice::getOutputLevelLimit(void) const
{
return outputLevelLimit;
}
//------------------------------------------------------------------------
bool IODevice::readStr(string *dest, unsigned int max)
{
// If max is 0, fill the input buffer once only if it's empty.
if (!max && inputBuffer.getSize() == 0 && !fillInputBuffer())
return false;
// If max is != 0, wait until we have max.
while (max && inputBuffer.getSize() < max) {
if (!fillInputBuffer())
return false;
}
unsigned int bytesToRead = max ? max : inputBuffer.getSize();
*dest += inputBuffer.str().substr(0, bytesToRead);
if (dumpfd) {
::write(dumpfd, inputBuffer.str().substr(0, bytesToRead).c_str(),
bytesToRead);
}
inputBuffer.popString(bytesToRead);
readCount += bytesToRead;
return true;
}
//------------------------------------------------------------------------
bool IODevice::readChar(char *dest)
{
if (inputBuffer.getSize() == 0 && !fillInputBuffer())
return false;
char c = inputBuffer.popChar();
if (dest)
*dest = c;
if (dumpfd)
::write(dumpfd, &c, 1);
++readCount;
return true;
}
//------------------------------------------------------------------------
void IODevice::unreadChar(char c)
{
inputBuffer.unpopChar(c);
}
//------------------------------------------------------------------------
void IODevice::unreadStr(const string &s)
{
inputBuffer.unpopStr(s);
}
//------------------------------------------------------------------------
bool IODevice::skipTo(char c)
{
char dest = '\0';
do {
if (!readChar(&dest))
return false;
if (dumpfd)
::write(dumpfd, &dest, 1);
} while (c != dest);
return true;
}
//------------------------------------------------------------------------
string IODevice::service(void) const
{
return "nul";
}
//------------------------------------------------------------------------
bool IODevice::waitForWrite(void) const
{
return false;
}
//------------------------------------------------------------------------
bool IODevice::waitForRead(void) const
{
return false;
}
//------------------------------------------------------------------------
IODevice::WriteResult IODevice::write(void)
{
return WriteError;
}
//------------------------------------------------------------------------
bool IODevice::fillInputBuffer(void)
{
return false;
}
//------------------------------------------------------------------------
IODevice::Error IODevice::getLastError(void) const
{
return error;
}
//------------------------------------------------------------------------
string IODevice::getLastErrorString(void) const
{
return errorString;
}
//------------------------------------------------------------------------
unsigned int IODevice::getReadCount(void) const
{
return readCount;
}
//------------------------------------------------------------------------
unsigned int IODevice::getWriteCount(void) const
{
return writeCount;
}
//------------------------------------------------------------------------
void IODevice::enableProtocolDumping(void)
{
#if 0
BincStream ss;
ss << "/tmp/bincimap-dump-" << (int) time(0) << "-"
<< Session::getInstance().getIP() << "-XXXXXX";
char *safename = strdup(ss.str().c_str());
dumpfd = mkstemp(safename);
if (dumpfd == -1)
dumpfd = 0;
delete safename;
#endif
}

View file

@ -1,401 +0,0 @@
/*-*-mode:c++;c-basic-offset:2-*-*/
/* --------------------------------------------------------------------
* Filename:
* src/iodevice.h
*
* Description:
* Declaration of the IODevice class.
* --------------------------------------------------------------------
* Copyright 2002, 2003 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifndef iodevice_h_included
#define iodevice_h_included
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "convert.h" // BincStream
#include <string>
#include <unistd.h> // ::write
namespace Binc {
/*!
\class IODevice
\brief The IODevice class provides a framework for reading and
writing to device.
Implement new devices by inheriting this class and overloading all
virtual methods.
service() returns the service that the specific device is used
for. Two values are "log" and "client".
\sa IOFactory, MultilogDevice, SyslogDevice, StdIODevice, SSLDevice
*/
class IODevice {
public:
/*!
Standard options for an IODevice.
*/
enum Flags {
None = 0,
FlushesOnEndl = 1 << 0,
HasInputLimit = 1 << 1,
HasOutputLimit = 1 << 2,
IsEnabled = 1 << 3,
HasTimeout = 1 << 4
};
/*!
Errors from when an operation returned false.
*/
enum Error {
Unknown,
Timeout
};
/*!
Constructs an invalid IODevice.
Instances of IODevice perform no operations, and all boolean
functions always return false. This constructor is only useful
if called from a subclass that reimplements all virtual methods.
*/
IODevice(int f = 0);
/*!
Destructs an IODevice; does nothing.
*/
virtual ~IODevice(void);
/*!
Clears all data in the input and output buffers.
*/
void clear(void);
/*!
Sets one or more flags.
\param f A bitwise OR of flags from the Flags enum.
*/
void setFlags(unsigned int f);
/*!
Clears one or more flags.
\param f A bitwise OR of flags from the Flags enum.
*/
void clearFlags(unsigned int f);
/*!
Sets the maximum allowed input buffer size. If this size is
non-zero and exceeded, reading from the device will fail. This
functionality is used to prevent clients from forcing this class
to consume so much memory that the program crashes.
Setting the max input buffer size to 0 disables the input size
limit.
\param max The maximum input buffer size in bytes.
*/
void setMaxInputBufferSize(unsigned int max);
/*!
Sets the maximum allowed output buffer size. If this size is
non-zero and exceeded, flush() is called implicitly.
Setting the max output buffer size to 0 disables the output size
limit. This is generally discouraged.
As a contrast to setMaxInputBufferSize(), this function is used
to bundle up consequent write calls, allowing more efficient use
of the underlying device as larger blocks of data are written at
a time.
\param max The maximum output buffer size in bytes.
*/
void setMaxOutputBufferSize(unsigned int max);
/*!
Sets the device's internal timeout in seconds. This timeout is
used both when waiting for data to read and for waiting for the
ability to write.
If this timeout is exceeded, the read or write function that
triggered the timeout will fail.
Setting the timeout to 0 disables the timeout.
\param t The timeout in seconds.
\sa getTimeout()
*/
void setTimeout(unsigned int t);
/*!
Returns the timeout in seconds, or 0 if there is no timeout.
\sa setTimeout()
*/
unsigned int getTimeout(void) const;
enum LogLevel {
ErrorLevel,
InfoLevel,
WarningLevel,
DebugLevel
};
/*!
Sets the output level for the following write operations on this
device.
The output level is a number which gives the following write
operations a priority. You can use setOutputLevelLimit() to
filter the write operations valid for different operating modes.
This enables you to have certain write operations ignored.
For instance, if the output level is set to 0, then "Hello" is
written, and the output level is set to 1, followed by writing
"Daisy", the output level limit value will decive wether only
"Hello" is written, or if also "Daisy" is written.
A low value of the level gives higher priority, and a high level
will give low priority. The default value is 0, and write
operations that are done with output level 0 are never ignored.
\param level The output level
\sa getOutputLevel(), setOutputLevelLimit()
*/
void setOutputLevel(LogLevel level);
/*!
Returns the current output level.
\sa setOutputLevel()
*/
LogLevel getOutputLevel(void) const;
/*!
Sets the current output level limit. Write operations with a
level higher than the output level limit are ignored.
\param level The output level limit
\sa setOutputLevel()
*/
void setOutputLevelLimit(LogLevel level);
/*!
Returns the current output level limit.
\sa setOutputLevelLimit()
*/
LogLevel getOutputLevelLimit(void) const;
/*!
Returns the number of bytes that have been read from this device
since it was created.
*/
unsigned int getReadCount(void) const;
/*!
Returns the number of bytes that have been written to this
device since it was created.
*/
unsigned int getWriteCount(void) const;
/*!
Calling this function enables the built-in protocol dumping feature in
the device. All input and output to this device will be dumped to a file
in /tmp.
*/
void enableProtocolDumping(void);
/*!
Writes data to the device. Depending on the value of the max
output buffer size, the data may not be written immediately.
\sa setMaxOutputBufferSize()
*/
template <class T> IODevice &operator <<(const T &source);
/*!
Writes data to the device. This function specializes on standard
ostream derivates, such as std::endl.
*/
IODevice &operator <<(std::ostream &(*source)(std::ostream &));
/*!
Returns true if data can be read from the device; otherwise
returns false.
*/
virtual bool canRead(void) const;
/*!
Reads data from the device, and stores this in a string. Returns
true on success; otherwise returns false.
\param dest The incoming data is stored in this string.
\param max No more than this number of bytes is read from the
device.
*/
bool readStr(std::string *dest, unsigned int max = 0);
/*!
Reads exactly one byte from the device and stores this in a
char. Returns true on success; otherwise returns false.
\param dest The incoming byte is stored in this char.
*/
bool readChar(char *dest = 0);
/*!
FIXME: add docs
*/
void unreadChar(char c);
/*!
FIXME: add docs
*/
void unreadStr(const std::string &s);
/*!
Reads characters from the device, until and including one
certain character is found. All read characters are discarded.
This function can be used to skip to the beginning of a line,
with the terminating character being '\n'.
\param The certain character.
*/
bool skipTo(char c);
/*!
Flushes the output buffer. Writes all data in the output buffer
to the device.
*/
bool flush(void);
/*!
Returns the type of error that most recently occurred.
*/
Error getLastError(void) const;
/*!
Returns a human readable description of the error that most
recently occurred. If no known error has occurred, this method
returns "Unknown error".
*/
std::string getLastErrorString(void) const;
/*!
Returns the type of service provided by this device. Two valid
return values are "client" and "log".
*/
virtual std::string service(void) const;
protected:
/*!
Waits until data can be written to the device. If the timeout is
0, this function waits indefinitely. Otherwise, it waits until
the timeout has expired.
If this function returns true, data can be written to the
device; otherwise, getLastError() must be checked to determine
whether a timeout occurred or whether an error with the device
prevents further writing.
*/
virtual bool waitForWrite(void) const;
/*!
Waits until data can be read from the device.
\sa waitForWrite()
*/
virtual bool waitForRead(void) const;
/*!
Types of results from a write.
*/
enum WriteResult {
WriteWait = 0,
WriteDone = 1 << 0,
WriteError = 1 << 1
};
/*!
Writes as much data as possible to the device. If some but not
all data was written, returns WriteWait. If all data was
written, returns WriteDone. If an error occurred, returns
WriteError.
*/
virtual WriteResult write(void);
/*!
Reads data from the device, and stores it in the input buffer.
Returns true on success; otherwise returns false.
This method will fail if there is no more data available, if a
timeout occurred or if an error with the device prevents more
data from being read.
The number of bytes read from the device is undefined.
*/
virtual bool fillInputBuffer(void);
BincStream inputBuffer;
BincStream outputBuffer;
protected:
unsigned int flags;
unsigned int maxInputBufferSize;
unsigned int maxOutputBufferSize;
unsigned int timeout;
unsigned int readCount;
unsigned int writeCount;
LogLevel outputLevel;
LogLevel outputLevelLimit;
mutable Error error;
mutable std::string errorString;
int dumpfd;
};
//----------------------------------------------------------------------
template <class T> IODevice &IODevice::operator <<(const T &source)
{
if ((flags & IsEnabled) && outputLevel <= outputLevelLimit) {
outputBuffer << source;
if (dumpfd) {
BincStream ss;
ss << source;
::write(dumpfd, ss.str().c_str(), ss.getSize());
}
if (flags & HasInputLimit)
if (outputBuffer.getSize() > maxOutputBufferSize)
flush();
}
return *this;
}
}
#endif

View file

@ -1,87 +0,0 @@
/*-*-mode:c++-*-*/
/* --------------------------------------------------------------------
* Filename:
* src/iofactory.cc
*
* Description:
* Implementation of the IOFactory class.
* --------------------------------------------------------------------
* Copyright 2002, 2003 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#include "iofactory.h"
#include "iodevice.h"
#ifndef NO_NAMESPACES
using namespace ::Binc;
using namespace ::std;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
IOFactory::IOFactory(void)
{
}
//------------------------------------------------------------------------
IOFactory::~IOFactory(void)
{
}
//------------------------------------------------------------------------
IOFactory &IOFactory::getInstance(void)
{
static IOFactory ioFactory;
return ioFactory;
}
//------------------------------------------------------------------------
void IOFactory::addDevice(IODevice *dev)
{
IODevice *ioDevice = IOFactory::getInstance().devices[dev->service()];
// FIXME: Delete correct object. Now, only IODevice's destructor is
// called, and only IODevice's memory is freed.
if (ioDevice)
delete ioDevice;
IOFactory::getInstance().devices[dev->service()] = dev;
}
//------------------------------------------------------------------------
IODevice &IOFactory::getClient(void)
{
static IODevice nulDevice;
IOFactory &ioFactory = IOFactory::getInstance();
if (ioFactory.devices.find("client") != ioFactory.devices.end())
return *ioFactory.devices["client"];
return nulDevice;
}
//------------------------------------------------------------------------
IODevice &IOFactory::getLogger(void)
{
static IODevice nulDevice;
IOFactory &ioFactory = IOFactory::getInstance();
if (ioFactory.devices.find("log") != ioFactory.devices.end())
return *ioFactory.devices["log"];
return nulDevice;
}

View file

@ -1,69 +0,0 @@
/*-*-mode:c++-*-*/
/* --------------------------------------------------------------------
* Filename:
* src/iofactory.h
*
* Description:
* Declaration of the IOFactory class.
* --------------------------------------------------------------------
* Copyright 2002, 2003 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifndef IOFACTORY_H_INCLUDED
#define IOFACTORY_H_INCLUDED
#include <map>
#include <string>
#include "iodevice.h"
namespace Binc {
class IOFactory {
public:
~IOFactory(void);
static void addDevice(IODevice *dev);
static IOFactory &getInstance(void);
static IODevice &getClient(void);
static IODevice &getLogger(void);
private:
IOFactory(void);
std::map<std::string, IODevice *> devices;
};
}
#define bincClient \
IOFactory::getClient()
#if !defined (DEBUG)
#define bincError if (false) std::cout
#define bincWarning if (false) std::cout
#define bincDebug if (false) std::cout
#else
#define bincError \
IOFactory::getLogger().setOutputLevel(IODevice::ErrorLevel);IOFactory::getLogger()
#define bincWarning \
IOFactory::getLogger().setOutputLevel(IODevice::WarningLevel);IOFactory::getLogger()
#define bincDebug \
IOFactory::getLogger().setOutputLevel(IODevice::DebugLevel);IOFactory::getLogger()
#endif
#define bincInfo \
IOFactory::getLogger().setOutputLevel(IODevice::InfoLevel);IOFactory::getLogger()
#endif

View file

@ -1,96 +0,0 @@
/* -*- mode:c++;c-basic-offset:2 -*- */
/* --------------------------------------------------------------------
* Filename:
* mime-getpart.cc
*
* Description:
* Implementation of main mime parser components
* --------------------------------------------------------------------
* Copyright 2002-2005 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mime.h"
#include "convert.h"
#include <string>
#include <vector>
#include <map>
#include <exception>
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
#ifndef NO_NAMESPACES
using namespace ::std;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
const Binc::MimePart *Binc::MimePart::getPart(const string &findpart,
string genpart, FetchType fetchType) const
{
if (findpart == genpart)
return this;
if (isMultipart()) {
if (members.size() != 0) {
vector<MimePart>::const_iterator i = members.begin();
int part = 1;
while (i != members.end()) {
BincStream ss;
ss << genpart;
if (genpart != "")
ss << ".";
ss << part;
const MimePart *m;
if ((m = (*i).getPart(findpart, ss.str())) != 0) {
if (fetchType == FetchHeader && m->isMessageRFC822())
m = &m->members[0];
return m;
}
++i;
++part;
}
}
} else if (isMessageRFC822()) {
if (members.size() == 1) {
const MimePart *m = members[0].getPart(findpart, genpart);
return m;
} else {
return 0;
}
} else {
// Singlepart
if (genpart != "")
genpart += ".";
genpart += "1";
if (findpart == genpart)
return this;
}
return 0;
}

View file

@ -25,13 +25,19 @@
*/ */
#ifndef mime_inputsource_h_included #ifndef mime_inputsource_h_included
#define mime_inputsource_h_included #define mime_inputsource_h_included
#include "autoconfig.h"
// Data source for MIME parser
#ifdef HAVE_CONFIG_H // Note about large files: we might want to change the unsigned int
#include <config.h> // used for offsets into an off_t for intellectual satisfaction, but
#endif // in the context of recoll, we could only get into trouble if a
// *single message* exceeded 2GB, which seems rather unlikely. When
// parsing a mailbox files, we read each message in memory and use the
// stream input source (from a memory buffer, no file offsets). When
// parsing a raw message file, it's only one message.
#include <string.h> #include <string.h>
#include <unistd.h> #include "safeunistd.h"
#include <iostream> #include <iostream>
@ -39,10 +45,11 @@ namespace Binc {
class MimeInputSource { class MimeInputSource {
public: public:
// Note that we do NOT take ownership of fd, won't close it on delete
inline MimeInputSource(int fd, unsigned int start = 0); inline MimeInputSource(int fd, unsigned int start = 0);
virtual inline ~MimeInputSource(void); virtual inline ~MimeInputSource(void);
virtual inline size_t fillRaw(char *raw, size_t nbytes); virtual inline ssize_t fillRaw(char *raw, size_t nbytes);
virtual inline void reset(void); virtual inline void reset(void);
virtual inline bool fillInputBuffer(void); virtual inline bool fillInputBuffer(void);
@ -80,7 +87,7 @@ namespace Binc {
{ {
} }
inline size_t MimeInputSource::fillRaw(char *raw, size_t nbytes) inline ssize_t MimeInputSource::fillRaw(char *raw, size_t nbytes)
{ {
return read(fd, raw, nbytes); return read(fd, raw, nbytes);
} }
@ -172,7 +179,7 @@ namespace Binc {
class MimeInputSourceStream : public MimeInputSource { class MimeInputSourceStream : public MimeInputSource {
public: public:
inline MimeInputSourceStream(istream& s, unsigned int start = 0); inline MimeInputSourceStream(istream& s, unsigned int start = 0);
virtual inline size_t fillRaw(char *raw, size_t nb); virtual inline ssize_t fillRaw(char *raw, size_t nb);
virtual inline void reset(void); virtual inline void reset(void);
private: private:
istream& s; istream& s;
@ -184,7 +191,7 @@ namespace Binc {
{ {
} }
inline size_t MimeInputSourceStream::fillRaw(char *raw, size_t nb) inline ssize_t MimeInputSourceStream::fillRaw(char *raw, size_t nb)
{ {
// Why can't streams tell how many characters were actually read // Why can't streams tell how many characters were actually read
// when hitting eof ? // when hitting eof ?
@ -192,16 +199,16 @@ namespace Binc {
s.seekg(0, ios::end); s.seekg(0, ios::end);
std::streampos lst = s.tellg(); std::streampos lst = s.tellg();
s.seekg(st); s.seekg(st);
size_t nbytes = lst - st; size_t nbytes = size_t(lst - st);
if (nbytes > nb) { if (nbytes > nb) {
nbytes = nb; nbytes = nb;
} }
if (nbytes <= 0) { if (nbytes <= 0) {
return (size_t)-1; return (ssize_t)-1;
} }
s.read(raw, nbytes); s.read(raw, nbytes);
return nbytes; return static_cast<ssize_t>(nbytes);
} }
inline void MimeInputSourceStream::reset(void) inline void MimeInputSourceStream::reset(void)
@ -211,6 +218,5 @@ namespace Binc {
} }
} }
extern Binc::MimeInputSource *mimeSource;
#endif #endif

View file

@ -23,32 +23,27 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H #include <string.h>
#include <config.h> #include <ctype.h>
#endif #include <stdio.h>
#include <errno.h>
#include "mime.h"
#include "mime-utils.h"
#include "mime-inputsource.h"
#include "convert.h"
#include <string> #include <string>
#include <vector> #include <vector>
#include <map> #include <map>
#include <exception> #include <exception>
#include <iostream> #include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
Binc::MimeInputSource *mimeSource = 0;
#ifndef NO_NAMESPACES #ifndef NO_NAMESPACES
using namespace ::std; using namespace ::std;
#endif /* NO_NAMESPACES */ #endif /* NO_NAMESPACES */
#undef MPF #include "mime.h"
#include "mime-utils.h"
#include "mime-inputsource.h"
#include "convert.h"
// #define MPF
#ifdef MPF #ifdef MPF
#define MPFDEB(X) fprintf X #define MPFDEB(X) fprintf X
#else #else
@ -56,19 +51,15 @@ using namespace ::std;
#endif #endif
//------------------------------------------------------------------------ //------------------------------------------------------------------------
void Binc::MimeDocument::parseFull(int fd) const void Binc::MimeDocument::parseFull(int fd)
{ {
if (allIsParsed) if (allIsParsed)
return; return;
allIsParsed = true; allIsParsed = true;
if (!mimeSource || mimeSource->getFileDescriptor() != fd) { delete doc_mimeSource;
delete mimeSource; doc_mimeSource = new MimeInputSource(fd);
mimeSource = new MimeInputSource(fd);
} else {
mimeSource->reset();
}
headerstartoffsetcrlf = 0; headerstartoffsetcrlf = 0;
headerlength = 0; headerlength = 0;
@ -80,24 +71,24 @@ void Binc::MimeDocument::parseFull(int fd) const
int bsize = 0; int bsize = 0;
string bound; string bound;
MimePart::parseFull(bound, bsize); doParseFull(doc_mimeSource, bound, bsize);
// eat any trailing junk to get the correct size // eat any trailing junk to get the correct size
char c; char c;
while (mimeSource->getChar(&c)); while (doc_mimeSource->getChar(&c));
size = mimeSource->getOffset(); size = doc_mimeSource->getOffset();
} }
void Binc::MimeDocument::parseFull(istream& s) const void Binc::MimeDocument::parseFull(istream& s)
{ {
if (allIsParsed) if (allIsParsed)
return; return;
allIsParsed = true; allIsParsed = true;
delete mimeSource; delete doc_mimeSource;
mimeSource = new MimeInputSourceStream(s); doc_mimeSource = new MimeInputSourceStream(s);
headerstartoffsetcrlf = 0; headerstartoffsetcrlf = 0;
headerlength = 0; headerlength = 0;
@ -109,17 +100,18 @@ void Binc::MimeDocument::parseFull(istream& s) const
int bsize = 0; int bsize = 0;
string bound; string bound;
MimePart::parseFull(bound, bsize); doParseFull(doc_mimeSource, bound, bsize);
// eat any trailing junk to get the correct size // eat any trailing junk to get the correct size
char c; char c;
while (mimeSource->getChar(&c)); while (doc_mimeSource->getChar(&c));
size = mimeSource->getOffset(); size = doc_mimeSource->getOffset();
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
static bool parseOneHeaderLine(Binc::Header *header, unsigned int *nlines) bool Binc::MimePart::parseOneHeaderLine(Binc::Header *header,
unsigned int *nlines)
{ {
using namespace ::Binc; using namespace ::Binc;
char c; char c;
@ -202,14 +194,14 @@ static bool parseOneHeaderLine(Binc::Header *header, unsigned int *nlines)
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
static void parseHeader(Binc::Header *header, unsigned int *nlines) void Binc::MimePart::parseHeader(Binc::Header *header, unsigned int *nlines)
{ {
while (parseOneHeaderLine(header, nlines)) while (parseOneHeaderLine(header, nlines))
{ } { }
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
static void analyzeHeader(Binc::Header *header, bool *multipart, void Binc::MimePart::analyzeHeader(Binc::Header *header, bool *multipart,
bool *messagerfc822, string *subtype, bool *messagerfc822, string *subtype,
string *boundary) string *boundary)
{ {
@ -267,7 +259,7 @@ static void analyzeHeader(Binc::Header *header, bool *multipart,
} }
} }
static void parseMessageRFC822(vector<Binc::MimePart> *members, void Binc::MimePart::parseMessageRFC822(vector<Binc::MimePart> *members,
bool *foundendofpart, bool *foundendofpart,
unsigned int *bodylength, unsigned int *bodylength,
unsigned int *nbodylines, unsigned int *nbodylines,
@ -286,7 +278,7 @@ static void parseMessageRFC822(vector<Binc::MimePart> *members,
// parsefull returns the number of bytes that need to be removed // parsefull returns the number of bytes that need to be removed
// from the body because of the terminating boundary string. // from the body because of the terminating boundary string.
int bsize = 0; int bsize = 0;
if (m.parseFull(toboundary, bsize)) if (m.doParseFull(mimeSource, toboundary, bsize))
*foundendofpart = true; *foundendofpart = true;
// make sure bodylength doesn't overflow // make sure bodylength doesn't overflow
@ -307,12 +299,12 @@ static void parseMessageRFC822(vector<Binc::MimePart> *members,
members->push_back(m); members->push_back(m);
} }
static bool skipUntilBoundary(const string &delimiter, bool Binc::MimePart::skipUntilBoundary(const string &delimiter,
unsigned int *nlines, bool *eof) unsigned int *nlines, bool *eof)
{ {
int endpos = delimiter.length(); string::size_type endpos = delimiter.length();
char *delimiterqueue = 0; char *delimiterqueue = 0;
int delimiterpos = 0; string::size_type delimiterpos = 0;
const char *delimiterStr = delimiter.c_str(); const char *delimiterStr = delimiter.c_str();
if (delimiter != "") { if (delimiter != "") {
delimiterqueue = new char[endpos]; delimiterqueue = new char[endpos];
@ -344,7 +336,7 @@ static bool skipUntilBoundary(const string &delimiter,
delimiterpos = 0; delimiterpos = 0;
if (compareStringToQueue(delimiterStr, delimiterqueue, if (compareStringToQueue(delimiterStr, delimiterqueue,
delimiterpos, endpos)) { delimiterpos, int(endpos))) {
foundBoundary = true; foundBoundary = true;
break; break;
} }
@ -360,7 +352,7 @@ static bool skipUntilBoundary(const string &delimiter,
// Need to see if this is a final one (with an additional -- at the end), // Need to see if this is a final one (with an additional -- at the end),
// and need to check if it is immediately followed by another boundary // and need to check if it is immediately followed by another boundary
// (in this case, we give up our final CRLF in its favour) // (in this case, we give up our final CRLF in its favour)
static inline void postBoundaryProcessing(bool *eof, inline void Binc::MimePart::postBoundaryProcessing(bool *eof,
unsigned int *nlines, unsigned int *nlines,
int *boundarysize, int *boundarysize,
bool *foundendofpart) bool *foundendofpart)
@ -430,7 +422,7 @@ static inline void postBoundaryProcessing(bool *eof,
} }
} }
static void parseMultipart(const string &boundary, void Binc::MimePart::parseMultipart(const string &boundary,
const string &toboundary, const string &toboundary,
bool *eof, bool *eof,
unsigned int *nlines, unsigned int *nlines,
@ -455,7 +447,7 @@ static void parseMultipart(const string &boundary,
skipUntilBoundary(delimiter, nlines, eof); skipUntilBoundary(delimiter, nlines, eof);
if (!eof) if (!eof)
*boundarysize = delimiter.size(); *boundarysize = int(delimiter.size());
postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart); postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart);
@ -468,7 +460,7 @@ static void parseMultipart(const string &boundary,
// If parseFull returns != 0, then it encountered the multipart's // If parseFull returns != 0, then it encountered the multipart's
// final boundary. // final boundary.
int bsize = 0; int bsize = 0;
if (m.parseFull(boundary, bsize)) { if (m.doParseFull(mimeSource, boundary, bsize)) {
quit = true; quit = true;
*boundarysize = bsize; *boundarysize = bsize;
} }
@ -488,7 +480,7 @@ static void parseMultipart(const string &boundary,
skipUntilBoundary(delimiter, nlines, eof); skipUntilBoundary(delimiter, nlines, eof);
if (!*eof) if (!*eof)
*boundarysize = delimiter.size(); *boundarysize = int(delimiter.size());
postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart); postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart);
} }
@ -508,7 +500,7 @@ static void parseMultipart(const string &boundary,
MPFDEB((stderr, "BINC: ParseMultipart return\n")); MPFDEB((stderr, "BINC: ParseMultipart return\n"));
} }
static void parseSinglePart(const string &toboundary, void Binc::MimePart::parseSinglePart(const string &toboundary,
int *boundarysize, int *boundarysize,
unsigned int *nbodylines, unsigned int *nbodylines,
unsigned int *nlines, unsigned int *nlines,
@ -532,7 +524,7 @@ static void parseSinglePart(const string &toboundary,
// *boundarysize = _toboundary.length(); // *boundarysize = _toboundary.length();
char *boundaryqueue = 0; char *boundaryqueue = 0;
int endpos = _toboundary.length(); size_t endpos = _toboundary.length();
if (toboundary != "") { if (toboundary != "") {
boundaryqueue = new char[endpos]; boundaryqueue = new char[endpos];
memset(boundaryqueue, 0, endpos); memset(boundaryqueue, 0, endpos);
@ -544,7 +536,7 @@ static void parseSinglePart(const string &toboundary,
string line; string line;
bool toboundaryIsEmpty = (toboundary == ""); bool toboundaryIsEmpty = (toboundary == "");
char c; char c;
int boundarypos = 0; string::size_type boundarypos = 0;
while (mimeSource->getChar(&c)) { while (mimeSource->getChar(&c)) {
if (c == '\n') { ++*nbodylines; ++*nlines; } if (c == '\n') { ++*nbodylines; ++*nlines; }
@ -557,8 +549,8 @@ static void parseSinglePart(const string &toboundary,
boundarypos = 0; boundarypos = 0;
if (compareStringToQueue(_toboundaryStr, boundaryqueue, if (compareStringToQueue(_toboundaryStr, boundaryqueue,
boundarypos, endpos)) { boundarypos, int(endpos))) {
*boundarysize = _toboundary.length(); *boundarysize = static_cast<int>(_toboundary.length());
break; break;
} }
} }
@ -591,10 +583,11 @@ static void parseSinglePart(const string &toboundary,
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
int Binc::MimePart::parseFull(const string &toboundary, int Binc::MimePart::doParseFull(MimeInputSource *ms, const string &toboundary,
int &boundarysize) const int &boundarysize)
{ {
MPFDEB((stderr, "BINC: parsefull, toboundary[%s]\n", toboundary.c_str())); MPFDEB((stderr, "BINC: doParsefull, toboundary[%s]\n", toboundary.c_str()));
mimeSource = ms;
headerstartoffsetcrlf = mimeSource->getOffset(); headerstartoffsetcrlf = mimeSource->getOffset();
// Parse the header of this mime part. // Parse the header of this mime part.
@ -604,6 +597,7 @@ int Binc::MimePart::parseFull(const string &toboundary,
// CRLF. // CRLF.
headerlength = mimeSource->getOffset() - headerstartoffsetcrlf; headerlength = mimeSource->getOffset() - headerstartoffsetcrlf;
bodystartoffsetcrlf = mimeSource->getOffset(); bodystartoffsetcrlf = mimeSource->getOffset();
MPFDEB((stderr, "BINC: doParsefull, bodystartoffsetcrlf %d\n", bodystartoffsetcrlf));
bodylength = 0; bodylength = 0;
// Determine the type of mime part by looking at fields in the // Determine the type of mime part by looking at fields in the
@ -626,6 +620,6 @@ int Binc::MimePart::parseFull(const string &toboundary,
&eof, &foundendofpart, &bodylength); &eof, &foundendofpart, &bodylength);
} }
MPFDEB((stderr, "BINC: parsefull ret, toboundary[%s]\n", toboundary.c_str())); MPFDEB((stderr, "BINC: doParsefull ret, toboundary[%s]\n", toboundary.c_str()));
return (eof || foundendofpart) ? 1 : 0; return (eof || foundendofpart) ? 1 : 0;
} }

View file

@ -23,10 +23,6 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mime.h" #include "mime.h"
#include "mime-utils.h" #include "mime-utils.h"
#include "mime-inputsource.h" #include "mime-inputsource.h"
@ -47,20 +43,15 @@ using namespace ::std;
#endif /* NO_NAMESPACES */ #endif /* NO_NAMESPACES */
//------------------------------------------------------------------------ //------------------------------------------------------------------------
void Binc::MimeDocument::parseOnlyHeader(int fd) const void Binc::MimeDocument::parseOnlyHeader(int fd)
{ {
if (allIsParsed || headerIsParsed) if (allIsParsed || headerIsParsed)
return; return;
headerIsParsed = true; headerIsParsed = true;
if (!mimeSource || mimeSource->getFileDescriptor() != fd) { delete doc_mimeSource;
delete mimeSource; doc_mimeSource = new MimeInputSource(fd);
mimeSource = new MimeInputSource(fd);
} else {
mimeSource->reset();
}
headerstartoffsetcrlf = 0; headerstartoffsetcrlf = 0;
headerlength = 0; headerlength = 0;
@ -72,18 +63,18 @@ void Binc::MimeDocument::parseOnlyHeader(int fd) const
nlines = 0; nlines = 0;
nbodylines = 0; nbodylines = 0;
MimePart::parseOnlyHeader(""); doParseOnlyHeader(doc_mimeSource, "");
} }
void Binc::MimeDocument::parseOnlyHeader(istream& s) const void Binc::MimeDocument::parseOnlyHeader(istream& s)
{ {
if (allIsParsed || headerIsParsed) if (allIsParsed || headerIsParsed)
return; return;
headerIsParsed = true; headerIsParsed = true;
delete mimeSource; delete doc_mimeSource;
mimeSource = new MimeInputSourceStream(s); doc_mimeSource = new MimeInputSourceStream(s);
headerstartoffsetcrlf = 0; headerstartoffsetcrlf = 0;
headerlength = 0; headerlength = 0;
@ -95,12 +86,14 @@ void Binc::MimeDocument::parseOnlyHeader(istream& s) const
nlines = 0; nlines = 0;
nbodylines = 0; nbodylines = 0;
MimePart::parseOnlyHeader(""); doParseOnlyHeader(doc_mimeSource, "");
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
int Binc::MimePart::parseOnlyHeader(const string &toboundary) const int Binc::MimePart::doParseOnlyHeader(MimeInputSource *ms,
const string &toboundary)
{ {
mimeSource = ms;
string name; string name;
string content; string content;
char cqueue[4]; char cqueue[4];
@ -122,7 +115,7 @@ int Binc::MimePart::parseOnlyHeader(const string &toboundary) const
if (c == '\n') ++nlines; if (c == '\n') ++nlines;
if (c == ':') break; if (c == ':') break;
if (c == '\n') { if (c == '\n') {
for (int i = name.length() - 1; i >= 0; --i) for (int i = int(name.length()) - 1; i >= 0; --i)
mimeSource->ungetChar(); mimeSource->ungetChar();
quit = true; quit = true;

View file

@ -23,69 +23,14 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mime.h" #include "mime.h"
#include "mime-utils.h" #include "mime-utils.h"
#include "mime-inputsource.h" #include "mime-inputsource.h"
#include "convert.h"
#include "iodevice.h"
#include "iofactory.h"
#include <string> #include <string>
#include <vector>
#include <map>
#include <exception>
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
#ifndef NO_NAMESPACES
using namespace ::std; using namespace ::std;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
void Binc::MimePart::printBody(int fd, IODevice &output,
unsigned int startoffset,
unsigned int length) const
{
if (!mimeSource || mimeSource->getFileDescriptor() != fd) {
delete mimeSource;
mimeSource = new MimeInputSource(fd);
}
mimeSource->reset();
mimeSource->seek(bodystartoffsetcrlf + startoffset);
if (startoffset + length > bodylength)
length = bodylength - startoffset;
char c = '\0';
for (unsigned int i = 0; i < length; ++i) {
if (!mimeSource->getChar(&c))
break;
output << (char)c;
}
}
void Binc::MimePart::getBody(int fd, string &s,
unsigned int startoffset,
unsigned int length) const
{
if (!mimeSource || mimeSource->getFileDescriptor() != fd) {
delete mimeSource;
mimeSource = new MimeInputSource(fd);
}
getBody(s, startoffset, length);
}
void Binc::MimePart::getBody(string &s, void Binc::MimePart::getBody(string &s,
unsigned int startoffset, unsigned int startoffset,

View file

@ -1,72 +0,0 @@
/* -*- mode:c++;c-basic-offset:2 -*- */
/* --------------------------------------------------------------------
* Filename:
* mime-printdoc.cc
*
* Description:
* Implementation of main mime parser components
* --------------------------------------------------------------------
* Copyright 2002-2005 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mime.h"
#include "mime-utils.h"
#include "mime-inputsource.h"
#include "convert.h"
#include "iodevice.h"
#include "iofactory.h"
#include <string>
#include <vector>
#include <map>
#include <exception>
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
#ifndef NO_NAMESPACES
using namespace ::std;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
void Binc::MimePart::printDoc(int fd, IODevice &output,
unsigned int startoffset,
unsigned int length) const
{
if (!mimeSource || mimeSource->getFileDescriptor() != fd) {
delete mimeSource;
mimeSource = new MimeInputSource(fd);
}
mimeSource->reset();
mimeSource->seek(headerstartoffsetcrlf);
char c;
for (unsigned int i = 0; i < length; ++i) {
if (!mimeSource->getChar(&c))
break;
output << (char)c;
}
}

View file

@ -1,200 +0,0 @@
/* -*- mode:c++;c-basic-offset:2 -*- */
/* --------------------------------------------------------------------
* Filename:
* mime-printheader.cc
*
* Description:
* Implementation of main mime parser components
* --------------------------------------------------------------------
* Copyright 2002-2005 Andreas Aardal Hanssen
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* --------------------------------------------------------------------
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mime.h"
#include "mime-utils.h"
#include "mime-inputsource.h"
#include "convert.h"
#include "iodevice.h"
#include "iofactory.h"
#include <string>
#include <vector>
#include <map>
#include <exception>
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <errno.h>
#ifndef NO_NAMESPACES
using namespace ::std;
#endif /* NO_NAMESPACES */
//------------------------------------------------------------------------
void Binc::MimePart::printHeader(int fd, IODevice &output,
vector<string> headers, bool includeheaders,
unsigned int startoffset,
unsigned int length, string &store) const
{
if (!mimeSource || mimeSource->getFileDescriptor() != fd) {
delete mimeSource;
mimeSource = new MimeInputSource(fd);
}
mimeSource->seek(headerstartoffsetcrlf);
string name;
string content;
char cqueue[2];
memset(cqueue, 0, sizeof(cqueue));
bool quit = false;
char c = '\0';
unsigned int wrotebytes = 0;
unsigned int processedbytes = 0;
bool hasHeaderSeparator = false;
while (!quit) {
// read name
while (1) {
// allow EOF to end the header
if (!mimeSource->getChar(&c)) {
quit = true;
break;
}
// assume this character is part of the header name.
name += c;
// break on the first colon
if (c == ':')
break;
// break if a '\n' turned up.
if (c == '\n') {
// end of headers detected
if (name == "\r\n") {
hasHeaderSeparator = true;
quit = true;
break;
}
// put all data back in the buffer to the beginning of this
// line.
for (int i = name.length(); i >= 0; --i)
mimeSource->ungetChar();
// abort printing of header. note that in this case, the
// headers will not end with a seperate \r\n.
quit = true;
name.clear();
break;
}
}
if (quit) break;
// at this point, we have a name, that is - the start of a
// header. we'll read until the end of the header.
while (!quit) {
// allow EOF to end the header.
if (!mimeSource->getChar(&c)) {
quit = true;
break;
}
if (c == '\n') ++nlines;
// make a fifo queue of the last 4 characters.
cqueue[0] = cqueue[1];
cqueue[1] = c;
// print header
if (cqueue[0] == '\n' && cqueue[1] != '\t' && cqueue[1] != ' ') {
// it wasn't a space, so put it back as it is most likely
// the start of a header name. in any case it terminates the
// content part of this header.
mimeSource->ungetChar();
string lowername = name;
lowercase(lowername);
trim(lowername, ": \t");
bool foundMatch = false;
for (vector<string>::const_iterator i = headers.begin();
i != headers.end(); ++i) {
string nametmp = *i;
lowercase(nametmp);
if (nametmp == lowername) {
foundMatch = true;
break;
}
}
if (foundMatch == includeheaders || headers.size() == 0) {
string out = name + content;
for (string::const_iterator i = out.begin(); i != out.end(); ++i)
if (processedbytes >= startoffset && wrotebytes < length) {
if (processedbytes >= startoffset) {
store += *i;
++wrotebytes;
}
} else
++processedbytes;
}
// move on to the next header
content.clear();
name.clear();
break;
}
content += c;
}
}
if (name != "") {
string lowername = name;
lowercase(lowername);
trim(lowername, ": \t");
bool foundMatch = false;
for (vector<string>::const_iterator i = headers.begin();
i != headers.end(); ++i) {
string nametmp = *i;
lowercase(nametmp);
if (nametmp == lowername) {
foundMatch = true;
break;
}
}
if (hasHeaderSeparator || foundMatch == includeheaders || headers.size() == 0) {
string out = name + content;
for (string::const_iterator i = out.begin(); i != out.end(); ++i)
if (processedbytes >= startoffset && wrotebytes < length) {
store += *i;
++wrotebytes;
} else
++processedbytes;
}
}
}

View file

@ -25,11 +25,6 @@
*/ */
#ifndef mime_utils_h_included #ifndef mime_utils_h_included
#define mime_utils_h_included #define mime_utils_h_included
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include <stdio.h> #include <stdio.h>

View file

@ -23,53 +23,57 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mime.h"
#include "convert.h"
#include <string>
#include <vector>
#include <map>
#include <exception>
#include <iostream>
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include <stdio.h> #include <stdio.h>
#include <errno.h> #include <errno.h>
#include <string>
#include <vector>
#include <map>
#include <exception>
#include <iostream>
#ifndef NO_NAMESPACES #ifndef NO_NAMESPACES
using namespace ::std; using namespace ::std;
#endif /* NO_NAMESPACES */ #endif /* NO_NAMESPACES */
#include "mime.h"
#include "convert.h"
#include "mime-inputsource.h"
//------------------------------------------------------------------------ //------------------------------------------------------------------------
Binc::MimeDocument::MimeDocument(void) : MimePart() Binc::MimeDocument::MimeDocument(void)
{ {
allIsParsed = false; allIsParsed = false;
headerIsParsed = false; headerIsParsed = false;
doc_mimeSource = 0;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
Binc::MimeDocument::~MimeDocument(void) Binc::MimeDocument::~MimeDocument(void)
{ {
delete doc_mimeSource;
doc_mimeSource = 0;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
void Binc::MimeDocument::clear(void) const void Binc::MimeDocument::clear(void)
{ {
members.clear(); members.clear();
h.clear(); h.clear();
headerIsParsed = false; headerIsParsed = false;
allIsParsed = false; allIsParsed = false;
delete doc_mimeSource;
doc_mimeSource = 0;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
void Binc::MimePart::clear(void) const void Binc::MimePart::clear(void)
{ {
members.clear(); members.clear();
h.clear(); h.clear();
mimeSource = 0;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
@ -81,6 +85,7 @@ Binc::MimePart::MimePart(void)
nlines = 0; nlines = 0;
nbodylines = 0; nbodylines = 0;
mimeSource = 0;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
@ -147,7 +152,7 @@ bool Binc::Header::getAllHeaders(const string &key, vector<HeaderItem> &dest) co
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
void Binc::Header::clear(void) const void Binc::Header::clear(void)
{ {
content.clear(); content.clear();
} }

View file

@ -23,10 +23,6 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifndef mime_h_included #ifndef mime_h_included
#define mime_h_included #define mime_h_included
#include <string> #include <string>
@ -35,6 +31,10 @@
#include <stdio.h> #include <stdio.h>
namespace Binc { namespace Binc {
class MimeInputSource;
//---------------------------------------------------------------------- //----------------------------------------------------------------------
class HeaderItem { class HeaderItem {
private: private:
@ -59,7 +59,7 @@ namespace Binc {
bool getFirstHeader(const std::string &key, HeaderItem &dest) const; bool getFirstHeader(const std::string &key, HeaderItem &dest) const;
bool getAllHeaders(const std::string &key, std::vector<HeaderItem> &dest) const; bool getAllHeaders(const std::string &key, std::vector<HeaderItem> &dest) const;
void add(const std::string &name, const std::string &content); void add(const std::string &name, const std::string &content);
void clear(void) const; void clear(void);
//-- //--
Header(void); Header(void);
@ -106,40 +106,80 @@ namespace Binc {
inline unsigned int getBodyLength(void) const { return bodylength; } inline unsigned int getBodyLength(void) const { return bodylength; }
inline unsigned int getBodyStartOffset(void) const { return bodystartoffsetcrlf; } inline unsigned int getBodyStartOffset(void) const { return bodystartoffsetcrlf; }
void printBody(int fd, Binc::IODevice &output, unsigned int startoffset, unsigned int length) const; void printBody(Binc::IODevice &output, unsigned int startoffset, unsigned int length) const;
void getBody(int fd, std::string& s, unsigned int startoffset, unsigned int length) const;
void getBody(std::string& s, unsigned int startoffset, unsigned int length) const; void getBody(std::string& s, unsigned int startoffset, unsigned int length) const;
void printHeader(int fd, Binc::IODevice &output, std::vector<std::string> headers, bool includeheaders, unsigned int startoffset, unsigned int length, std::string &storage) const; virtual void clear(void);
void printDoc(int fd, Binc::IODevice &output, unsigned int startoffset, unsigned int length) const;
virtual void clear(void) const;
const MimePart *getPart(const std::string &findpart, std::string genpart, FetchType fetchType = FetchBody) const; virtual int doParseOnlyHeader(MimeInputSource *ms,
virtual int parseOnlyHeader(const std::string &toboundary) const; const std::string &toboundary);
virtual int parseFull(const std::string &toboundary, int &boundarysize) const; virtual int doParseFull(MimeInputSource *ms,
const std::string &toboundary, int &boundarysize);
MimePart(void); MimePart(void);
virtual ~MimePart(void); virtual ~MimePart(void);
private:
MimeInputSource *mimeSource;
bool parseOneHeaderLine(Binc::Header *header, unsigned int *nlines);
bool skipUntilBoundary(const std::string &delimiter,
unsigned int *nlines, bool *eof);
inline void postBoundaryProcessing(bool *eof,
unsigned int *nlines,
int *boundarysize,
bool *foundendofpart);
void parseMultipart(const std::string &boundary,
const std::string &toboundary,
bool *eof,
unsigned int *nlines,
int *boundarysize,
bool *foundendofpart,
unsigned int *bodylength,
std::vector<Binc::MimePart> *members);
void parseSinglePart(const std::string &toboundary,
int *boundarysize,
unsigned int *nbodylines,
unsigned int *nlines,
bool *eof, bool *foundendofpart,
unsigned int *bodylength);
void parseHeader(Binc::Header *header, unsigned int *nlines);
void analyzeHeader(Binc::Header *header, bool *multipart,
bool *messagerfc822, std::string *subtype,
std::string *boundary);
void parseMessageRFC822(std::vector<Binc::MimePart> *members,
bool *foundendofpart,
unsigned int *bodylength,
unsigned int *nbodylines,
const std::string &toboundary);
}; };
//---------------------------------------------------------------------- //----------------------------------------------------------------------
class MimeDocument : public MimePart { class MimeDocument : public MimePart {
private:
mutable bool headerIsParsed;
mutable bool allIsParsed;
public: public:
void parseOnlyHeader(int fd) const;
void parseFull(int fd) const;
void parseOnlyHeader(std::istream& s) const;
void parseFull(std::istream& s) const;
void clear(void) const;
inline bool isHeaderParsed(void) { return headerIsParsed; }
inline bool isAllParsed(void) { return allIsParsed; }
//--
MimeDocument(void); MimeDocument(void);
~MimeDocument(void); ~MimeDocument(void);
void parseOnlyHeader(int fd);
void parseFull(int fd);
void parseOnlyHeader(std::istream& s);
void parseFull(std::istream& s);
void clear(void);
bool isHeaderParsed(void) const
{
return headerIsParsed;
}
bool isAllParsed(void) const
{
return allIsParsed;
}
private:
bool headerIsParsed;
bool allIsParsed;
MimeInputSource *doc_mimeSource;
}; };
}; };

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2006 J.F.Dockes */ /* Copyright (C) 2006 J.F.Dockes
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
@ -17,10 +17,10 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#include <errno.h> #include <errno.h>
#include "safefcntl.h"
#include "safeunistd.h"
#include <string.h> #include <string.h>
#include <fcntl.h>
#include <sstream> #include <sstream>

View file

@ -1,38 +1,33 @@
# @(#$Id: Makefile,v 1.16 2008-12-17 14:26:49 dockes Exp $ (C) 2005 J.F.Dockes
depth = ..
include $(depth)/mk/sysconf
# Only test executables get build in here PROGS = unacpp textsplit rclconfig syngroups
PROGS = unacpp textsplit rclconfig
all: $(BIGLIB) $(PROGS) all: $(PROGS)
$(BIGLIB): force UNACPP_OBJS= trunacpp.o
cd $(depth)/lib;$(MAKE)
force:
UNACPP_OBJS= trunacpp.o $(BIGLIB)
unacpp : $(UNACPP_OBJS) unacpp : $(UNACPP_OBJS)
$(CXX) $(ALL_CXXFLAGS) -o unacpp $(UNACPP_OBJS) \ $(CXX) $(ALL_CXXFLAGS) -o unacpp $(UNACPP_OBJS) $(LIBRECOLL)
$(LIBICONV)
trunacpp.o : unacpp.cpp unacpp.h trunacpp.o : unacpp.cpp unacpp.h
$(CXX) $(ALL_CXXFLAGS) -DTEST_UNACPP -c -o trunacpp.o unacpp.cpp $(CXX) $(ALL_CXXFLAGS) -DTEST_UNACPP -c -o trunacpp.o unacpp.cpp
TEXTSPLIT_OBJS= trtextsplit.o $(BIGLIB) TEXTSPLIT_OBJS= trtextsplit.o
textsplit : $(TEXTSPLIT_OBJS) textsplit : $(TEXTSPLIT_OBJS)
$(CXX) $(ALL_CXXFLAGS) -o textsplit $(TEXTSPLIT_OBJS) $(LIBICONV) $(CXX) $(ALL_CXXFLAGS) -o textsplit $(TEXTSPLIT_OBJS) $(LIBRECOLL)
trtextsplit.o : textsplit.cpp trtextsplit.o : textsplit.cpp
$(CXX) $(ALL_CXXFLAGS) -DTEST_TEXTSPLIT -c -o trtextsplit.o \ $(CXX) $(ALL_CXXFLAGS) -DTEST_TEXTSPLIT -c -o trtextsplit.o \
textsplit.cpp textsplit.cpp
RCLCONFIG_OBJS= trrclconfig.o $(BIGLIB) RCLCONFIG_OBJS= trrclconfig.o
rclconfig : $(RCLCONFIG_OBJS) rclconfig : $(RCLCONFIG_OBJS)
$(CXX) $(ALL_CXXFLAGS) -o rclconfig $(RCLCONFIG_OBJS) \ $(CXX) $(ALL_CXXFLAGS) -o rclconfig $(RCLCONFIG_OBJS) $(LIBRECOLL)
$(LIBICONV) $(LIBSYS)
trrclconfig.o : rclconfig.cpp trrclconfig.o : rclconfig.cpp
$(CXX) $(ALL_CXXFLAGS) -DTEST_RCLCONFIG -c -o trrclconfig.o \ $(CXX) $(ALL_CXXFLAGS) -DTEST_RCLCONFIG -c -o trrclconfig.o \
rclconfig.cpp rclconfig.cpp
clean: SYNGROUPS_OBJS= trsyngroups.o
rm -f *.o $(PROGS) syngroups : $(SYNGROUPS_OBJS)
$(CXX) $(ALL_CXXFLAGS) -o syngroups $(SYNGROUPS_OBJS) $(LIBRECOLL)
trsyngroups.o : syngroups.cpp
$(CXX) $(ALL_CXXFLAGS) -DTEST_SYNGROUPS -c -o trsyngroups.o \
syngroups.cpp
include ../utils/utmkdefs.mk

183
src/common/autoconfig-win.h Normal file
View file

@ -0,0 +1,183 @@
/* Manually edited version of autoconfig.h for windows. Many things are
overriden in the c++ code by ifdefs _WIN32 anyway */
#ifndef _AUTOCONFIG_H_INCLUDED
#define _AUTOCONFIG_H_INCLUDED
/* Define if building universal (internal helper macro) */
/* #undef AC_APPLE_UNIVERSAL_BUILD */
/* Path to the aspell api include file */
/* #undef ASPELL_INCLUDE "aspell-local.h" */
/* Path to the aspell program */
/* #define ASPELL_PROG "/usr/bin/aspell" */
/* No X11 session monitoring support */
#define DISABLE_X11MON
/* Path to the fam api include file */
/* #undef FAM_INCLUDE */
/* Path to the file program */
#define FILE_PROG "/usr/bin/file"
/* "Have C++0x" */
#define HAVE_CXX0X_UNORDERED 1
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the `dl' library (-ldl). */
#define HAVE_LIBDL 1
/* Define to 1 if you have the `z' library (-lz). */
#define HAVE_LIBZ 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mkdtemp' function. */
/* #undef HAVE_MKDTEMP */
/* Define to 1 if you have the `posix_spawn,' function. */
/* #undef HAVE_POSIX_SPAWN_ */
/* Define to 1 if you have the `setrlimit' function. */
#define HAVE_SETRLIMIT 1
/* Has std::shared_ptr */
#define HAVE_SHARED_PTR_STD
/* Has std::tr1::shared_ptr */
/* #undef HAVE_SHARED_PTR_TR1 */
/* Define to 1 if you have the <spawn.h> header file. */
#define HAVE_SPAWN_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/mount.h> header file. */
/* #undef HAVE_SYS_MOUNT_H */
/* Define to 1 if you have the <sys/param.h,> header file. */
/* #undef HAVE_SYS_PARAM_H_ */
/* Define to 1 if you have the <sys/statfs.h> header file. */
/* #undef HAVE_SYS_STATFS_H */
/* Define to 1 if you have the <sys/statvfs.h> header file. */
/* #undef HAVE_SYS_STATVFS_H */
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <sys/vfs.h> header file. */
/* #undef HAVE_SYS_VFS_H */
/* "Have tr1" */
/* #undef HAVE_TR1_UNORDERED */
/* Define to 1 if you have the <unistd.h> header file. */
/* #undef HAVE_UNISTD_H */
/* Use multiple threads for indexing */
#define IDX_THREADS 1
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#define LT_OBJDIR ".libs/"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""
/* Define to the full name of this package. */
#define PACKAGE_NAME "Recoll"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "Recoll 1.23.0-x"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "recoll"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.23.0-x"
/* putenv parameter is const */
/* #undef PUTENV_ARG_CONST */
/* iconv parameter 2 is const char** */
#define RCL_ICONV_INBUF_CONST 1
/* Real time monitoring option */
#undef RCL_MONITOR
/* Split camelCase words */
/* #undef RCL_SPLIT_CAMELCASE */
/* Compile the aspell interface */
/* #undef RCL_USE_ASPELL */
/* Compile the fam interface */
/* #undef RCL_USE_FAM */
/* Compile the inotify interface */
#define RCL_USE_INOTIFY 1
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Use posix_spawn() */
/* #undef USE_POSIX_SPAWN */
/* Enable using the system's 'file' command to id mime if we fail internally
*/
/* #undef USE_SYSTEM_FILE_COMMAND */
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
# define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
/* # undef WORDS_BIGENDIAN */
# endif
#endif
/* Define to 1 if the X Window System is missing or not being used. */
/* #undef X_DISPLAY_MISSING */
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
#define DISABLE_WEB_INDEXER
#include "conf_post.h"
#endif // already included

View file

@ -1,5 +1,8 @@
/* common/autoconfig.h.in. Generated from configure.ac by autoheader. */ /* common/autoconfig.h.in. Generated from configure.ac by autoheader. */
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
/* Path to the aspell api include file */ /* Path to the aspell api include file */
#undef ASPELL_INCLUDE #undef ASPELL_INCLUDE
@ -15,15 +18,45 @@
/* Path to the file program */ /* Path to the file program */
#undef FILE_PROG #undef FILE_PROG
/* "Have C++0x" */
#undef HAVE_CXX0X_UNORDERED
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H #undef HAVE_INTTYPES_H
/* Define to 1 if you have the `dl' library (-ldl). */
#undef HAVE_LIBDL
/* Define to 1 if you have the `pthread' library (-lpthread). */
#undef HAVE_LIBPTHREAD
/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H #undef HAVE_MEMORY_H
/* Define to 1 if you have the `mkdtemp' function. */ /* Define to 1 if you have the `mkdtemp' function. */
#undef HAVE_MKDTEMP #undef HAVE_MKDTEMP
/* Define to 1 if you have the `posix_spawn,' function. */
#undef HAVE_POSIX_SPAWN_
/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT
/* Has std::shared_ptr */
#undef HAVE_SHARED_PTR_STD
/* Has std::tr1::shared_ptr */
#undef HAVE_SHARED_PTR_TR1
/* Define to 1 if you have the <spawn.h> header file. */
#undef HAVE_SPAWN_H
/* Define to 1 if you have the <stdint.h> header file. */ /* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H #undef HAVE_STDINT_H
@ -39,6 +72,9 @@
/* Define to 1 if you have the <sys/mount.h> header file. */ /* Define to 1 if you have the <sys/mount.h> header file. */
#undef HAVE_SYS_MOUNT_H #undef HAVE_SYS_MOUNT_H
/* Define to 1 if you have the <sys/param.h,> header file. */
#undef HAVE_SYS_PARAM_H_
/* Define to 1 if you have the <sys/statfs.h> header file. */ /* Define to 1 if you have the <sys/statfs.h> header file. */
#undef HAVE_SYS_STATFS_H #undef HAVE_SYS_STATFS_H
@ -54,9 +90,18 @@
/* Define to 1 if you have the <sys/vfs.h> header file. */ /* Define to 1 if you have the <sys/vfs.h> header file. */
#undef HAVE_SYS_VFS_H #undef HAVE_SYS_VFS_H
/* "Have tr1" */
#undef HAVE_TR1_UNORDERED
/* Define to 1 if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
/* Use multiple threads for indexing */
#undef IDX_THREADS
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Define to the address where bug reports for this package should be sent. */ /* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT #undef PACKAGE_BUGREPORT
@ -69,6 +114,9 @@
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME #undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */ /* Define to the version of this package. */
#undef PACKAGE_VERSION #undef PACKAGE_VERSION
@ -93,26 +141,40 @@
/* Compile the inotify interface */ /* Compile the inotify interface */
#undef RCL_USE_INOTIFY #undef RCL_USE_INOTIFY
/* Use file extended attributes */
#undef RCL_USE_XATTR
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS #undef STDC_HEADERS
/* Use posix_spawn() */
#undef USE_POSIX_SPAWN
/* Enable using the system's 'file' command to id mime if we fail internally /* Enable using the system's 'file' command to id mime if we fail internally
*/ */
#undef USE_SYSTEM_FILE_COMMAND #undef USE_SYSTEM_FILE_COMMAND
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
# define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
# undef WORDS_BIGENDIAN
# endif
#endif
/* Define to 1 if the X Window System is missing or not being used. */ /* Define to 1 if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING #undef X_DISPLAY_MISSING
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS #undef _FILE_OFFSET_BITS
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES #undef _LARGE_FILES
/* The __FreeBSD_kernel__ thing is for debian/kfreebsd. */ #include "conf_post.h"
#if _FILE_OFFSET_BITS == 64 || defined(__APPLE__) || defined(__OpenBSD__) ||\
defined(__FreeBSD_kernel__)
#define OFFTPC "%lld"
#else
#define OFFTPC "%ld"
#endif

View file

@ -20,7 +20,7 @@
#include "cstr.h" #include "cstr.h"
#include "beaglequeuecache.h" #include "beaglequeuecache.h"
#include "circache.h" #include "circache.h"
#include "debuglog.h" #include "log.h"
#include "rclconfig.h" #include "rclconfig.h"
#include "pathut.h" #include "pathut.h"
#include "rcldoc.h" #include "rcldoc.h"
@ -29,19 +29,20 @@ const string cstr_bgc_mimetype("mimetype");
BeagleQueueCache::BeagleQueueCache(RclConfig *cnf) BeagleQueueCache::BeagleQueueCache(RclConfig *cnf)
{ {
string ccdir; string ccdir = cnf->getWebcacheDir();
cnf->getConfParam("webcachedir", ccdir);
if (ccdir.empty())
ccdir = "webcache";
ccdir = path_tildexpand(ccdir);
// If not an absolute path, compute relative to config dir
if (ccdir.at(0) != '/')
ccdir = path_cat(cnf->getConfDir(), ccdir);
int maxmbs = 40; int maxmbs = 40;
cnf->getConfParam("webcachemaxmbs", &maxmbs); cnf->getConfParam("webcachemaxmbs", &maxmbs);
m_cache = new CirCache(ccdir); if ((m_cache = new CirCache(ccdir)) == 0) {
m_cache->create(off_t(maxmbs)*1000*1024, CirCache::CC_CRUNIQUE); LOGERR("BeagleQueueCache: cant create CirCache object\n" );
return;
}
if (!m_cache->create(off_t(maxmbs)*1000*1024, CirCache::CC_CRUNIQUE)) {
LOGERR("BeagleQueueCache: cache file creation failed: " << (m_cache->getReason()) << "\n" );
delete m_cache;
m_cache = 0;
return;
}
} }
BeagleQueueCache::~BeagleQueueCache() BeagleQueueCache::~BeagleQueueCache()
@ -56,8 +57,14 @@ bool BeagleQueueCache::getFromCache(const string& udi, Rcl::Doc &dotdoc,
{ {
string dict; string dict;
if (!m_cache->get(udi, dict, data)) if (m_cache == 0) {
LOGERR("BeagleQueueCache::getFromCache: cache is null\n" );
return false; return false;
}
if (!m_cache->get(udi, dict, &data)) {
LOGDEB("BeagleQueueCache::getFromCache: get failed\n" );
return false;
}
ConfSimple cf(dict, 1); ConfSimple cf(dict, 1);
@ -70,11 +77,12 @@ bool BeagleQueueCache::getFromCache(const string& udi, Rcl::Doc &dotdoc,
cf.get(cstr_fmtime, dotdoc.fmtime, cstr_null); cf.get(cstr_fmtime, dotdoc.fmtime, cstr_null);
cf.get(cstr_fbytes, dotdoc.pcbytes, cstr_null); cf.get(cstr_fbytes, dotdoc.pcbytes, cstr_null);
dotdoc.sig.clear(); dotdoc.sig.clear();
list<string> names = cf.getNames(cstr_null); vector<string> names = cf.getNames(cstr_null);
for (list<string>::const_iterator it = names.begin(); for (vector<string>::const_iterator it = names.begin();
it != names.end(); it++) { it != names.end(); it++) {
cf.get(*it, dotdoc.meta[*it], cstr_null); cf.get(*it, dotdoc.meta[*it], cstr_null);
} }
dotdoc.meta[Rcl::Doc::keyudi] = udi; dotdoc.meta[Rcl::Doc::keyudi] = udi;
return true; return true;
} }

51
src/common/conf_post.h Normal file
View file

@ -0,0 +1,51 @@
#ifdef _WIN32
#include "safewindows.h"
#ifdef _MSC_VER
// gmtime is supposedly thread-safe on windows
#define gmtime_r(A, B) gmtime(A)
#define localtime_r(A,B) localtime(A)
typedef int mode_t;
#define fseeko _fseeki64
#define ftello (off_t)_ftelli64
#define ftruncate _chsize_s
#define PATH_MAX MAX_PATH
#define RCL_ICONV_INBUF_CONST 1
#define HAVE_STRUCT_TIMESPEC
#define strdup _strdup
#define timegm _mkgmtime
#else // End _MSC_VER -> Gminw
#undef RCL_ICONV_INBUF_CONST
#define timegm portable_timegm
#endif // GMinw only
typedef int pid_t;
inline int readlink(const char *cp, void *buf, int cnt)
{
return -1;
}
#define MAXPATHLEN PATH_MAX
typedef DWORD32 u_int32_t;
typedef DWORD64 u_int64_t;
typedef unsigned __int8 u_int8_t;
typedef int ssize_t;
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
#define chdir _chdir
#define R_OK 4
#define W_OK 2
#ifndef X_OK
#define X_OK 4
#endif
#define S_ISLNK(X) false
#define lstat stat
#endif // _WIN32

View file

@ -41,19 +41,26 @@ using std::string;
#endif #endif
DEF_CSTR(caption, "caption"); DEF_CSTR(caption, "caption");
DEF_CSTR(colon, ":");
DEF_CSTR(dmtime, "dmtime"); DEF_CSTR(dmtime, "dmtime");
DEF_CSTR(dquote, "\""); DEF_CSTR(dquote, "\"");
DEF_CSTR(fbytes, "fbytes"); DEF_CSTR(fbytes, "fbytes");
DEF_CSTR(fileu, "file://"); DEF_CSTR(fileu, "file://");
DEF_CSTR(fmtime, "fmtime"); DEF_CSTR(fmtime, "fmtime");
DEF_CSTR(iso_8859_1, "ISO-8859-1"); DEF_CSTR(iso_8859_1, "ISO-8859-1");
DEF_CSTR(utf8, "UTF-8");
DEF_CSTR(cp1252, "CP1252");
DEF_CSTR(minwilds, "*?["); DEF_CSTR(minwilds, "*?[");
DEF_CSTR(newline, "\n"); DEF_CSTR(newline, "\n");
DEF_CSTR(null, ""); DEF_CSTR(null, "");
DEF_CSTR(plus, "+"); DEF_CSTR(plus, "+");
DEF_CSTR(textplain, "text/plain"); DEF_CSTR(textplain, "text/plain");
DEF_CSTR(url, "url"); DEF_CSTR(url, "url");
// Marker for HTML format fields
DEF_CSTR(fldhtm, "\007");
// Characters that can -begin- a wildcard or regexp expression.
DEF_CSTR(wildSpecStChars, "*?[");
DEF_CSTR(regSpecStChars, "(.[{");
// Values used as keys inside Dijon::Filter::metaData[]. This structure is // Values used as keys inside Dijon::Filter::metaData[]. This structure is
// used to store all data generated by format-translating filters. It is // used to store all data generated by format-translating filters. It is
@ -73,6 +80,6 @@ DEF_CSTR(dj_keycontent, "content");
DEF_CSTR(dj_keyipath, "ipath"); DEF_CSTR(dj_keyipath, "ipath");
DEF_CSTR(dj_keymd5, "md5"); DEF_CSTR(dj_keymd5, "md5");
DEF_CSTR(dj_keymt, "mimetype"); DEF_CSTR(dj_keymt, "mimetype");
DEF_CSTR(dj_keydocsize, "docsize"); DEF_CSTR(dj_keyanc, "rclanc");
#endif /* _CSTR_H_INCLUDED_ */ #endif /* _CSTR_H_INCLUDED_ */

File diff suppressed because it is too large Load diff

View file

@ -16,23 +16,20 @@
*/ */
#ifndef _RCLCONFIG_H_INCLUDED_ #ifndef _RCLCONFIG_H_INCLUDED_
#define _RCLCONFIG_H_INCLUDED_ #define _RCLCONFIG_H_INCLUDED_
#include "autoconfig.h"
#include <list>
#include <string> #include <string>
#include <vector> #include <vector>
#include <set> #include <set>
#include <utility> #include <utility>
#include <map> #include <map>
#include <set> #include <unordered_set>
#ifndef NO_NAMESPACES
using std::list;
using std::string; using std::string;
using std::vector; using std::vector;
using std::pair; using std::pair;
using std::set; using std::set;
using std::map; using std::map;
using std::set;
#endif
#include "conftree.h" #include "conftree.h"
#include "smallut.h" #include "smallut.h"
@ -48,21 +45,31 @@ public:
RclConfig *parent; RclConfig *parent;
ConfNull *conffile; ConfNull *conffile;
string paramname; string paramname;
bool active; // Check at init if config defines name at all
int savedkeydirgen; int savedkeydirgen;
string savedvalue; string savedvalue;
void init(RclConfig *rconf, ConfNull *cnf, const string& nm); ParamStale(RclConfig *rconf, const string& nm);
void init(ConfNull *cnf);
bool needrecompute(); bool needrecompute();
}; };
// Hold the description for an external metadata-gathering command
struct MDReaper {
string fieldname;
vector<string> cmdv;
};
// Data associated to a indexed field name: // Data associated to a indexed field name:
struct FieldTraits { struct FieldTraits {
string pfx; // indexing prefix, string pfx; // indexing prefix,
int wdfinc; // Index time term frequency increment (default 1) int wdfinc; // Index time term frequency increment (default 1)
double boost; // Query time boost (default 1.0) double boost; // Query time boost (default 1.0)
FieldTraits(int i, double f) {wdfinc = i; boost = f;} bool pfxonly; // Suppress prefix-less indexing
FieldTraits() : wdfinc(1), boost(1.0) {} bool noterms; // Don't add term to highlight data (e.g.: rclbes)
FieldTraits(const string& s) : pfx(s), wdfinc(1), boost(1.0) {} FieldTraits()
: wdfinc(1), boost(1.0), pfxonly(false), noterms(false)
{}
}; };
class RclConfig { class RclConfig {
@ -73,6 +80,20 @@ class RclConfig {
// argcnf // argcnf
RclConfig(const string *argcnf = 0); RclConfig(const string *argcnf = 0);
RclConfig(const RclConfig &r)
: m_oldstpsuffstate(this, "recoll_noindex"),
m_stpsuffstate(this, "noContentSuffixes"),
m_skpnstate(this, "skippedNames"),
m_rmtstate(this, "indexedmimetypes"),
m_xmtstate(this, "excludedmimetypes"),
m_mdrstate(this, "metadatacmds") {
initFrom(r);
}
~RclConfig() {
freeAll();
}
// Return a writable clone of the main config. This belongs to the // Return a writable clone of the main config. This belongs to the
// caller (must delete it when done) // caller (must delete it when done)
ConfNull *cloneMainConfig(); ConfNull *cloneMainConfig();
@ -80,53 +101,63 @@ class RclConfig {
/** (re)Read recoll.conf */ /** (re)Read recoll.conf */
bool updateMainConfig(); bool updateMainConfig();
bool ok() {return m_ok;} bool ok() const {return m_ok;}
const string &getReason() {return m_reason;} const string &getReason() const {return m_reason;}
/** Return the directory where this configuration is stored. /** Return the directory where this configuration is stored.
* This was possibly silently created by the rclconfig * This was possibly silently created by the rclconfig
* constructor it it is the default one (~/.recoll) and it did * constructor it it is the default one (~/.recoll) and it did
* not exist yet. */ * not exist yet. */
string getConfDir() {return m_confdir;} string getConfDir() const {return m_confdir;}
string getCacheDir() const;
/** Check if the config files were modified since we read them */ /** Check if the config files were modified since we read them */
bool sourceChanged(); bool sourceChanged() const;
/** Returns true if this is ~/.recoll */ /** Returns true if this is ~/.recoll */
bool isDefaultConfig(); bool isDefaultConfig() const;
/** Get the local value for /usr/local/share/recoll/ */ /** Get the local value for /usr/local/share/recoll/ */
const string& getDatadir() {return m_datadir;} const string& getDatadir() const {return m_datadir;}
/** Set current directory reference, and fetch automatic parameters. */ /** Set current directory reference, and fetch automatic parameters. */
void setKeyDir(const string &dir); void setKeyDir(const string &dir);
string getKeyDir() const {return m_keydir;} string getKeyDir() const {return m_keydir;}
/** Get generic configuration parameter according to current keydir */ /** Get generic configuration parameter according to current keydir */
bool getConfParam(const string &name, string &value) bool getConfParam(const string &name, string &value,
bool shallow=false) const
{ {
if (m_conf == 0) if (m_conf == 0)
return false; return false;
return m_conf->get(name, value, m_keydir); return m_conf->get(name, value, m_keydir, shallow);
} }
/** Variant with autoconversion to int */ /** Variant with autoconversion to int */
bool getConfParam(const string &name, int *value); bool getConfParam(const string &name, int *value, bool shallow=false) const;
/** Variant with autoconversion to bool */ /** Variant with autoconversion to bool */
bool getConfParam(const string &name, bool *value); bool getConfParam(const string &name, bool *value,
/** Variant with conversion to string list/vector bool shallow=false) const;
/** Variant with conversion to vector<string>
* (stringToStrings). Can fail if the string is malformed. */ * (stringToStrings). Can fail if the string is malformed. */
bool getConfParam(const string &name, vector<string> *value); bool getConfParam(const string &name, vector<string> *value,
bool getConfParam(const string &name, list<string> *value); bool shallow=false) const;
/** Variant with conversion to vector<int> */
bool getConfParam(const string &name, vector<int> *value,
bool shallow=false) const;
enum ThrStage {ThrIntern=0, ThrSplit=1, ThrDbWrite=2};
pair<int, int> getThrConf(ThrStage who) const;
/** /**
* Get list of config names under current sk, with possible * Get list of config names under current sk, with possible
* wildcard filtering * wildcard filtering
*/ */
list<string> getConfNames(const char *pattern = 0) { vector<string> getConfNames(const char *pattern = 0) const
{
return m_conf->getNames(m_keydir, pattern); return m_conf->getNames(m_keydir, pattern);
} }
/** Check if name exists anywhere in config */ /** Check if name exists anywhere in config */
bool hasNameAnywhere(const string& nm) bool hasNameAnywhere(const string& nm) const
{ {
return m_conf? m_conf->hasNameAnywhere(nm) : false; return m_conf? m_conf->hasNameAnywhere(nm) : false;
} }
@ -134,33 +165,45 @@ class RclConfig {
/** Get default charset for current keydir (was set during setKeydir) /** Get default charset for current keydir (was set during setKeydir)
* filenames are handled differently */ * filenames are handled differently */
const string &getDefCharset(bool filename = false); const string &getDefCharset(bool filename = false) const;
/** Get list of top directories. This is needed from a number of places /** Get list of top directories. This is needed from a number of places
* and needs some cleaning-up code. An empty list is always an error, no * and needs some cleaning-up code. An empty list is always an error, no
* need for other status */ * need for other status */
list<string> getTopdirs(); vector<string> getTopdirs() const;
/** Get database directory */ string getConfdirPath(const char *varname, const char *dflt) const;
string getDbDir(); string getCachedirPath(const char *varname, const char *dflt) const;
/** Get database and other directories */
string getDbDir() const;
string getWebcacheDir() const;
string getMboxcacheDir() const;
string getAspellcacheDir() const;
/** Get stoplist file name */ /** Get stoplist file name */
string getStopfile(); string getStopfile() const;
/** Get synonym groups file name */
string getSynGroupsFile() const;
/** Get indexing pid file name */ /** Get indexing pid file name */
string getPidfile(); string getPidfile() const;
/** Get indexing status file name */ /** Get indexing status file name */
string getIdxStatusFile(); string getIdxStatusFile() const;
/** Do path translation according to the ptrans table */
void urlrewrite(const string& dbdir, string& url) const;
ConfSimple *getPTrans()
{
return m_ptrans;
}
/** Get Web Queue directory name */
string getWebQueueDir() const;
/** Get list of skipped file names for current keydir */ /** Get list of skipped file names for current keydir */
list<string>& getSkippedNames(); vector<string>& getSkippedNames();
/** Get list of skipped paths patterns. Doesn't depend on the keydir */ /** Get list of skipped paths patterns. Doesn't depend on the keydir */
list<string> getSkippedPaths(); vector<string> getSkippedPaths() const;
/** Get list of skipped paths patterns, daemon version (may add some) /** Get list of skipped paths patterns, daemon version (may add some)
Doesn't depend on the keydir */ Doesn't depend on the keydir */
list<string> getDaemSkippedPaths(); vector<string> getDaemSkippedPaths() const;
/** conf: Add local fields to target dic */
bool addLocalFields(map<string, string> *tgt);
/** /**
* mimemap: Check if file name should be ignored because of suffix * mimemap: Check if file name should be ignored because of suffix
@ -177,14 +220,14 @@ class RclConfig {
* The returned command has substitutable places for input file name * The returned command has substitutable places for input file name
* and temp dir name, and will return output name * and temp dir name, and will return output name
*/ */
bool getUncompressor(const string &mtpe, list<string>& cmd); bool getUncompressor(const string &mtpe, vector<string>& cmd) const;
/** mimemap: compute mimetype */ /** mimemap: compute mimetype */
string getMimeTypeFromSuffix(const string &suffix); string getMimeTypeFromSuffix(const string &suffix) const;
/** mimemap: get a list of all indexable mime types defined */ /** mimemap: get a list of all indexable mime types defined */
list<string> getAllMimeTypes(); vector<string> getAllMimeTypes() const;
/** mimemap: Get appropriate suffix for mime type. This is inefficient */ /** mimemap: Get appropriate suffix for mime type. This is inefficient */
string getSuffixFromMimeType(const string &mt); string getSuffixFromMimeType(const string &mt) const;
/** mimeconf: get input filter for mimetype */ /** mimeconf: get input filter for mimetype */
string getMimeHandlerDef(const string &mimetype, bool filtertypes=false); string getMimeHandlerDef(const string &mimetype, bool filtertypes=false);
@ -193,62 +236,97 @@ class RclConfig {
* Separate the value and store the attributes in a ConfSimple * Separate the value and store the attributes in a ConfSimple
* @param whole the raw value. No way to escape a semi-colon in there. * @param whole the raw value. No way to escape a semi-colon in there.
*/ */
bool valueSplitAttributes(const string& whole, string& value, static bool valueSplitAttributes(const string& whole, string& value,
ConfSimple& attrs) ; ConfSimple& attrs) ;
/** mimeconf: get icon name for mimetype */ /** Return the locale's character set */
string getMimeIconName(const string &mtype, string *path = 0); static const std::string& getLocaleCharset();
/** Return icon path for mime type and tag */
string getMimeIconPath(const string &mt, const string& apptag) const;
/** mimeconf: get list of file categories */ /** mimeconf: get list of file categories */
bool getMimeCategories(list<string>&); bool getMimeCategories(vector<string>&) const;
/** mimeconf: is parameter one of the categories ? */ /** mimeconf: is parameter one of the categories ? */
bool isMimeCategory(string&); bool isMimeCategory(string&) const;
/** mimeconf: get list of mime types for category */ /** mimeconf: get list of mime types for category */
bool getMimeCatTypes(const string& cat, list<string>&); bool getMimeCatTypes(const string& cat, vector<string>&) const;
/** mimeconf: get list of gui filters (doc cats by default */ /** mimeconf: get list of gui filters (doc cats by default */
bool getGuiFilterNames(list<string>&); bool getGuiFilterNames(vector<string>&) const;
/** mimeconf: get query lang frag for named filter */ /** mimeconf: get query lang frag for named filter */
bool getGuiFilter(const string& filtername, string& frag); bool getGuiFilter(const string& filtername, string& frag) const;
/** fields: get field prefix from field name. Use additional query
aliases if isquery is set */
bool getFieldTraits(const string& fldname, const FieldTraits **,
bool isquery = false) const;
const set<string>& getStoredFields() const {return m_storedFields;}
set<string> getIndexedFields() const;
/** fields: get field prefix from field name */
bool getFieldTraits(const string& fldname, const FieldTraits **);
const set<string>& getStoredFields() {return m_storedFields;}
set<string> getIndexedFields();
/** Get canonic name for possible alias */ /** Get canonic name for possible alias */
string fieldCanon(const string& fld); string fieldCanon(const string& fld) const;
/** Get canonic name for possible alias, including query-only aliases */
string fieldQCanon(const string& fld) const;
/** Get xattr name to field names translations */ /** Get xattr name to field names translations */
const map<string, string>& getXattrToField() {return m_xattrtofld;} const map<string, string>& getXattrToField() const {return m_xattrtofld;}
/** Get value of a parameter inside the "fields" file. Only some filters /** Get value of a parameter inside the "fields" file. Only some filters
use this (ie: mh_mail). The information specific to a given filter * use this (ie: mh_mail). The information specific to a given filter
is typically stored in a separate section(ie: [mail]) */ * is typically stored in a separate section(ie: [mail])
list<string> getFieldSectNames(const string &sk, const char* = 0); */
bool getFieldConfParam(const string &name, const string &sk, string &value); vector<string> getFieldSectNames(const string &sk, const char* = 0) const;
bool getFieldConfParam(const string &name, const string &sk, string &value)
const;
/** mimeview: get/set external viewer exec string(s) for mimetype(s) */ /** mimeview: get/set external viewer exec string(s) for mimetype(s) */
string getMimeViewerDef(const string &mimetype, const string& apptag); string getMimeViewerDef(const string &mimetype, const string& apptag,
bool getMimeViewerDefs(vector<pair<string, string> >&); bool useall) const;
string getMimeViewerAllEx() const;
bool setMimeViewerAllEx(const string& allex);
bool getMimeViewerDefs(vector<pair<string, string> >&) const;
bool setMimeViewerDef(const string& mimetype, const string& cmd); bool setMimeViewerDef(const string& mimetype, const string& cmd);
/** Check if mime type is designated as needing no uncompress before view /** Check if mime type is designated as needing no uncompress before view
* (if a file of this type is found compressed). Default is true, * (if a file of this type is found compressed). Default is true,
* exceptions are found in the nouncompforviewmts mimeview list */ * exceptions are found in the nouncompforviewmts mimeview list */
bool mimeViewerNeedsUncomp(const string &mimetype); bool mimeViewerNeedsUncomp(const string &mimetype) const;
/** Retrieve extra metadata-gathering commands */
const vector<MDReaper>& getMDReapers();
/** Store/retrieve missing helpers description string */ /** Store/retrieve missing helpers description string */
string getMissingHelperDesc(); bool getMissingHelperDesc(string&) const;
void storeMissingHelperDesc(const string &s); void storeMissingHelperDesc(const string &s);
/** Find exec file for external filter. cmd is the command name from the /** Find exec file for external filter.
* command string returned by getMimeHandlerDef */ *
string findFilter(const string& cmd); * If the input is an absolute path, we just return it. Else We
* look in $RECOLL_FILTERSDIR, "filtersdir" from the config file,
* $RECOLL_CONFDIR/. If nothing is found, we return the input with
* the assumption that this will be used with a PATH-searching
* exec.
*
* @param cmd is normally the command name from the command string
* returned by getMimeHandlerDef(), but this could be used for any
* command. If cmd begins with a /, we return cmd without
* further processing.
*/
string findFilter(const string& cmd) const;
~RclConfig() { /** Thread config init is not done automatically because not all
freeAll(); programs need it and it uses the debug log so that it's better to
call it after primary init */
void initThrConf();
const string& getOrigCwd()
{
return o_origcwd;
} }
RclConfig(const RclConfig &r) {
initFrom(r);
}
RclConfig& operator=(const RclConfig &r) { RclConfig& operator=(const RclConfig &r) {
if (this != &r) { if (this != &r) {
freeAll(); freeAll();
@ -263,37 +341,62 @@ class RclConfig {
int m_ok; int m_ok;
string m_reason; // Explanation for bad state string m_reason; // Explanation for bad state
string m_confdir; // User directory where the customized files are stored string m_confdir; // User directory where the customized files are stored
// Normally same as confdir. Set to store all bulk data elsewhere.
// Provides defaults top location for dbdir, webcachedir,
// mboxcachedir, aspellDictDir, which can still be used to
// override.
string m_cachedir;
string m_datadir; // Example: /usr/local/share/recoll string m_datadir; // Example: /usr/local/share/recoll
string m_keydir; // Current directory used for parameter fetches. string m_keydir; // Current directory used for parameter fetches.
int m_keydirgen; // To help with knowing when to update computed data. int m_keydirgen; // To help with knowing when to update computed data.
list<string> m_cdirs; // directory stack for the confstacks vector<string> m_cdirs; // directory stack for the confstacks
ConfStack<ConfTree> *m_conf; // Parsed configuration files ConfStack<ConfTree> *m_conf; // Parsed configuration files
ConfStack<ConfTree> *mimemap; // The files don't change with keydir, ConfStack<ConfTree> *mimemap; // The files don't change with keydir,
ConfStack<ConfSimple> *mimeconf; // but their content may depend on it. ConfStack<ConfSimple> *mimeconf; // but their content may depend on it.
ConfStack<ConfSimple> *mimeview; // ConfStack<ConfSimple> *mimeview; //
ConfStack<ConfSimple> *m_fields; ConfStack<ConfSimple> *m_fields;
ConfSimple *m_ptrans; // Paths translations
map<string, FieldTraits> m_fldtotraits; // Field to field params map<string, FieldTraits> m_fldtotraits; // Field to field params
map<string, string> m_aliastocanon; map<string, string> m_aliastocanon;
map<string, string> m_aliastoqcanon;
set<string> m_storedFields; set<string> m_storedFields;
map<string, string> m_xattrtofld; map<string, string> m_xattrtofld;
void *m_stopsuffixes; void *m_stopsuffixes;
unsigned int m_maxsufflen; unsigned int m_maxsufflen;
ParamStale m_oldstpsuffstate; // Values from user mimemap, now obsolete
ParamStale m_stpsuffstate; ParamStale m_stpsuffstate;
ParamStale m_skpnstate; ParamStale m_skpnstate;
list<string> m_skpnlist; vector<string> m_skpnlist;
// Original current working directory. Set once at init before we do any
// chdir'ing and used for converting user args to absolute paths.
static string o_origcwd;
// Parameters auto-fetched on setkeydir // Parameters auto-fetched on setkeydir
string defcharset; string m_defcharset;
static string o_localecharset;
// Limiting set of mime types to be processed. Normally empty. // Limiting set of mime types to be processed. Normally empty.
ParamStale m_rmtstate; ParamStale m_rmtstate;
set<string> m_restrictMTypes; std::unordered_set<string> m_restrictMTypes;
// Exclusion set of mime types. Normally empty
ParamStale m_xmtstate;
std::unordered_set<string> m_excludeMTypes;
vector<pair<int, int> > m_thrConf;
// Same idea with the metadata-gathering external commands,
// (e.g. used to reap tagging info: "tmsu tags %f")
ParamStale m_mdrstate;
vector<MDReaper> m_mdreapers;
/** Create initial user configuration */ /** Create initial user configuration */
bool initUserConfig(); bool initUserConfig();
/** Init all ParamStale members */
void initParamStale(ConfNull *cnf, ConfNull *mimemap);
/** Copy from other */ /** Copy from other */
void initFrom(const RclConfig& r); void initFrom(const RclConfig& r);
/** Init pointers to 0 */ /** Init pointers to 0 */
@ -303,5 +406,17 @@ class RclConfig {
bool readFieldsConfig(const string& errloc); bool readFieldsConfig(const string& errloc);
}; };
// This global variable defines if we are running with an index
// stripped of accents and case or a raw one. Ideally, it should be
// constant, but it needs to be initialized from the configuration, so
// there is no way to do this. It never changes after initialization
// of course. Changing the value on a given index imposes a
// reset. When using multiple indexes, all must have the same value
extern bool o_index_stripchars;
// This global variable defines if we use mtime instead of ctime for
// up-to-date tests. This is mostly incompatible with xattr indexing,
// in addition to other issues. See recoll.conf comments.
extern bool o_uptodate_test_use_mtime;
#endif /* _RCLCONFIG_H_INCLUDED_ */ #endif /* _RCLCONFIG_H_INCLUDED_ */

View file

@ -17,38 +17,63 @@
#include "autoconfig.h" #include "autoconfig.h"
#include <stdio.h> #include <stdio.h>
#ifdef _WIN32
#include "safewindows.h"
#endif
#include <signal.h> #include <signal.h>
#include <locale.h> #include <locale.h>
#include <pthread.h>
#include <cstdlib> #include <cstdlib>
#if !defined(PUTENV_ARG_CONST) #if !defined(PUTENV_ARG_CONST)
#include <string.h> #include <string.h>
#endif #endif
#include "debuglog.h" #include <thread>
#include "log.h"
#include "rclconfig.h" #include "rclconfig.h"
#include "rclinit.h" #include "rclinit.h"
#include "pathut.h" #include "pathut.h"
#include "rclutil.h"
#include "unac.h" #include "unac.h"
#include "smallut.h"
#include "execmd.h"
static const int catchedSigs[] = {SIGHUP, SIGINT, SIGQUIT, SIGTERM, std::thread::id mainthread_id;
SIGUSR1, SIGUSR2};
RclConfig *recollinit(RclInitFlags flags, // Signal etc. processing. We want to be able to properly close the
void (*cleanup)(void), void (*sigcleanup)(int), // index if we are currently writing to it.
string &reason, const string *argcnf) //
// This is active if the sigcleanup parameter to recollinit is set,
// which only recollindex does. We arrange for the handler to be
// called when process termination is requested either by the system
// or a user keyboard intr.
//
// The recollindex handler just sets a global termination flag (plus
// the cancelcheck thing), which are tested in all timeout loops
// etc. When the flag is seen, the main thread processing returns, and
// recollindex calls exit().
//
// The other parameter, to recollinit(), cleanup, is set as an
// atexit() routine, it does the job of actually signalling the
// workers to stop and tidy up. It's automagically called by exit().
#ifndef _WIN32
static void siglogreopen(int)
{ {
if (cleanup) if (recoll_ismainthread())
atexit(cleanup); Logger::getTheLog("")->reopen("");
}
// We would like to block SIGCHLD globally, but we can't because
// QT uses it. Have to block it inside execmd.cpp
static const int catchedSigs[] = {SIGINT, SIGQUIT, SIGTERM, SIGUSR1, SIGUSR2};
void initAsyncSigs(void (*sigcleanup)(int))
{
// We ignore SIGPIPE always. All pieces of code which can write to a pipe // We ignore SIGPIPE always. All pieces of code which can write to a pipe
// must check write() return values. // must check write() return values.
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
// We would like to block SIGCHLD globally, but we can't because // Install app signal handler
// QT uses it. Have to block it inside execmd.cpp
// Install signal handler
if (sigcleanup) { if (sigcleanup) {
struct sigaction action; struct sigaction action;
action.sa_handler = sigcleanup; action.sa_handler = sigcleanup;
@ -62,8 +87,182 @@ RclConfig *recollinit(RclInitFlags flags,
} }
} }
DebugLog::getdbl()->setloglevel(DEBDEB1); // Install log rotate sig handler
DebugLog::setfilename("stderr"); {
struct sigaction action;
action.sa_handler = siglogreopen;
action.sa_flags = 0;
sigemptyset(&action.sa_mask);
if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
if (sigaction(SIGHUP, &action, 0) < 0) {
perror("Sigaction failed");
}
}
}
}
void recoll_exitready()
{
}
#else // _WIN32 ->
// Windows signals etc.
//
// ^C can be caught by the signal() emulation, but not ^Break
// apparently, which is why we use the native approach too
//
// When a keyboard interrupt occurs, windows creates a thread inside
// the process and calls the handler. The process exits when the
// handler returns or after at most 10S
//
// This should also work, with different signals (CTRL_LOGOFF_EVENT,
// CTRL_SHUTDOWN_EVENT) when the user exits or the system shuts down).
//
// Unfortunately, this is not the end of the story. It seems that in
// recent Windows version "some kinds" of apps will not reliably
// receive the signals. "Some kind" is variably defined, for example a
// simple test program works when built with vs 2015, but not
// mingw. See the following discussion thread for tentative
// explanations, it seems that importing or not from user32.dll is the
// determining factor.
// https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/abf09824-4e4c-4f2c-ae1e-5981f06c9c6e/windows-7-console-application-has-no-way-of-trapping-logoffshutdown-event?forum=windowscompatibility
// In any case, it appears that the only reliable way to be advised of
// system shutdown or user exit is to create an "invisible window" and
// process window messages, which we now do.
static void (*l_sigcleanup)(int);
static HANDLE eWorkFinished = INVALID_HANDLE_VALUE;
static BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
{
LOGDEB("CtrlHandler\n" );
if (l_sigcleanup == 0)
return FALSE;
switch(fdwCtrlType) {
case CTRL_C_EVENT:
case CTRL_CLOSE_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
{
l_sigcleanup(SIGINT);
LOGDEB0("CtrlHandler: waiting for exit ready\n" );
DWORD res = WaitForSingleObject(eWorkFinished, INFINITE);
if (res != WAIT_OBJECT_0) {
LOGERR("CtrlHandler: exit ack wait failed\n" );
}
LOGDEB0("CtrlHandler: got exit ready event, exiting\n" );
return TRUE;
}
default:
return FALSE;
}
}
LRESULT CALLBACK MainWndProc(HWND hwnd , UINT msg , WPARAM wParam,
LPARAM lParam)
{
switch (msg) {
case WM_QUERYENDSESSION:
case WM_ENDSESSION:
case WM_DESTROY:
case WM_CLOSE:
{
l_sigcleanup(SIGINT);
LOGDEB("MainWndProc: got end message, waiting for work finished\n" );
DWORD res = WaitForSingleObject(eWorkFinished, INFINITE);
if (res != WAIT_OBJECT_0) {
LOGERR("MainWndProc: exit ack wait failed\n" );
}
LOGDEB("MainWindowProc: got exit ready event, exiting\n" );
return TRUE;
}
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return TRUE;
}
bool CreateInvisibleWindow()
{
HWND hwnd;
WNDCLASS wc = {0};
wc.lpfnWndProc = (WNDPROC)MainWndProc;
wc.hInstance = GetModuleHandle(NULL);
wc.hIcon = LoadIcon(GetModuleHandle(NULL), "TestWClass");
wc.lpszClassName = "TestWClass";
RegisterClass(&wc);
hwnd =
CreateWindowEx(0, "TestWClass", "TestWClass", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, (HWND) NULL, (HMENU) NULL,
GetModuleHandle(NULL), (LPVOID) NULL);
if (!hwnd) {
return FALSE;
}
return TRUE;
}
DWORD WINAPI RunInvisibleWindowThread(LPVOID lpParam)
{
MSG msg;
CreateInvisibleWindow();
while (GetMessage(&msg, (HWND) NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
static const int catchedSigs[] = {SIGINT, SIGTERM};
void initAsyncSigs(void (*sigcleanup)(int))
{
DWORD tid;
// Install app signal handler
if (sigcleanup) {
l_sigcleanup = sigcleanup;
for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++) {
if (signal(catchedSigs[i], SIG_IGN) != SIG_IGN) {
signal(catchedSigs[i], sigcleanup);
}
}
}
HANDLE hInvisiblethread =
CreateThread(NULL, 0, RunInvisibleWindowThread, NULL, 0, &tid);
SetConsoleCtrlHandler((PHANDLER_ROUTINE)CtrlHandler, TRUE);
eWorkFinished = CreateEvent(NULL, TRUE, FALSE, NULL);
if (eWorkFinished == INVALID_HANDLE_VALUE) {
LOGERR("initAsyncSigs: error creating exitready event\n" );
}
}
void recoll_exitready()
{
LOGDEB("recoll_exitready()\n" );
if (!SetEvent(eWorkFinished)) {
LOGERR("recoll_exitready: SetEvent failed\n" );
}
}
#endif
RclConfig *recollinit(RclInitFlags flags,
void (*cleanup)(void), void (*sigcleanup)(int),
string &reason, const string *argcnf)
{
if (cleanup)
atexit(cleanup);
// Make sure the locale is set. This is only for converting file names
// to utf8 for indexing.
setlocale(LC_CTYPE, "");
Logger::getTheLog("")->setLogLevel(Logger::LLDEB1);
initAsyncSigs(sigcleanup);
RclConfig *config = new RclConfig(argcnf); RclConfig *config = new RclConfig(argcnf);
if (!config || !config->ok()) { if (!config || !config->ok()) {
reason = "Configuration could not be built:\n"; reason = "Configuration could not be built:\n";
@ -74,12 +273,19 @@ RclConfig *recollinit(RclInitFlags flags,
return 0; return 0;
} }
// Retrieve the log file name and level // Retrieve the log file name and level. Daemon and batch indexing
// processes may use specific values, else fall back on common
// ones.
string logfilename, loglevel; string logfilename, loglevel;
if (flags & RCLINIT_DAEMON) { if (flags & RCLINIT_DAEMON) {
config->getConfParam(string("daemlogfilename"), logfilename); config->getConfParam(string("daemlogfilename"), logfilename);
config->getConfParam(string("daemloglevel"), loglevel); config->getConfParam(string("daemloglevel"), loglevel);
} }
if ((flags & RCLINIT_IDX) && logfilename.empty())
config->getConfParam(string("idxlogfilename"), logfilename);
if ((flags & RCLINIT_IDX) && loglevel.empty())
config->getConfParam(string("idxloglevel"), loglevel);
if (logfilename.empty()) if (logfilename.empty())
config->getConfParam(string("logfilename"), logfilename); config->getConfParam(string("logfilename"), logfilename);
if (loglevel.empty()) if (loglevel.empty())
@ -89,37 +295,62 @@ RclConfig *recollinit(RclInitFlags flags,
if (!logfilename.empty()) { if (!logfilename.empty()) {
logfilename = path_tildexpand(logfilename); logfilename = path_tildexpand(logfilename);
// If not an absolute path or , compute relative to config dir // If not an absolute path or , compute relative to config dir
if (logfilename.at(0) != '/' && if (!path_isabsolute(logfilename) &&
!DebugLog::DebugLog::isspecialname(logfilename.c_str())) { logfilename.compare("stderr")) {
logfilename = path_cat(config->getConfDir(), logfilename); logfilename = path_cat(config->getConfDir(), logfilename);
} }
DebugLog::setfilename(logfilename.c_str()); Logger::getTheLog("")->reopen(logfilename);
} }
if (!loglevel.empty()) { if (!loglevel.empty()) {
int lev = atoi(loglevel.c_str()); int lev = atoi(loglevel.c_str());
DebugLog::getdbl()->setloglevel(lev); Logger::getTheLog("")->setLogLevel(Logger::LogLevel(lev));
} }
// Make sure the locale is set. This is only for converting file names
// to utf8 for indexing.
setlocale(LC_CTYPE, "");
// Make sure the locale charset is initialized (so that multiple // Make sure the locale charset is initialized (so that multiple
// threads don't try to do it at once). // threads don't try to do it at once).
config->getDefCharset(); config->getDefCharset();
// Init unac locking mainthread_id = std::this_thread::get_id();
unac_init_mt();
// Init smallut and pathut static values
pathut_init_mt();
smallut_init_mt();
rclutil_init_mt();
// Init execmd.h static PATH and PATHELT splitting
{string bogus;
ExecCmd::which("nosuchcmd", bogus);
}
// Init Unac translation exceptions // Init Unac translation exceptions
string unacex; string unacex;
if (config->getConfParam("unac_except_trans", unacex) && !unacex.empty()) if (config->getConfParam("unac_except_trans", unacex) && !unacex.empty())
unac_set_except_translations(unacex.c_str()); unac_set_except_translations(unacex.c_str());
#ifndef IDX_THREADS
ExecCmd::useVfork(true);
#else
// Keep threads init behind log init, but make sure it's done before
// we do the vfork choice ! The latter is not used any more actually,
// we always use vfork except if forbidden by config.
if ((flags & RCLINIT_IDX)) {
config->initThrConf();
}
bool novfork;
config->getConfParam("novfork", &novfork);
if (novfork) {
LOGDEB0("rclinit: will use fork() for starting commands\n" );
ExecCmd::useVfork(false);
} else {
LOGDEB0("rclinit: will use vfork() for starting commands\n" );
ExecCmd::useVfork(true);
}
#endif
int flushmb; int flushmb;
if (config->getConfParam("idxflushmb", &flushmb) && flushmb > 0) { if (config->getConfParam("idxflushmb", &flushmb) && flushmb > 0) {
LOGDEB1(("rclinit: idxflushmb=%d, set XAPIAN_FLUSH_THRESHOLD to 10E6\n", LOGDEB1("rclinit: idxflushmb=" << (flushmb) << ", set XAPIAN_FLUSH_THRESHOLD to 10E6\n" );
flushmb));
static const char *cp = "XAPIAN_FLUSH_THRESHOLD=1000000"; static const char *cp = "XAPIAN_FLUSH_THRESHOLD=1000000";
#ifdef PUTENV_ARG_CONST #ifdef PUTENV_ARG_CONST
::putenv(cp); ::putenv(cp);
@ -131,14 +362,31 @@ RclConfig *recollinit(RclInitFlags flags,
return config; return config;
} }
// Signals are handled by the main thread. All others should call this routine // Signals are handled by the main thread. All others should call this
// to block possible signals // routine to block possible signals
void recoll_threadinit() void recoll_threadinit()
{ {
#ifndef _WIN32
sigset_t sset; sigset_t sset;
sigemptyset(&sset); sigemptyset(&sset);
for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++) for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++)
sigaddset(&sset, catchedSigs[i]); sigaddset(&sset, catchedSigs[i]);
sigaddset(&sset, SIGHUP);
pthread_sigmask(SIG_BLOCK, &sset, 0); pthread_sigmask(SIG_BLOCK, &sset, 0);
#else
// Not sure that this is needed at all or correct under windows.
for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++) {
if (signal(catchedSigs[i], SIG_IGN) != SIG_IGN) {
signal(catchedSigs[i], SIG_IGN);
} }
}
#endif
}
bool recoll_ismainthread()
{
return std::this_thread::get_id() == mainthread_id;
}

View file

@ -18,9 +18,6 @@
#define _RCLINIT_H_INCLUDED_ #define _RCLINIT_H_INCLUDED_
#include <string> #include <string>
#ifndef NO_NAMESPACES
using std::string;
#endif
class RclConfig; class RclConfig;
/** /**
@ -30,7 +27,8 @@ class RclConfig;
* up the global signal handling. other threads must call recoll_threadinit() * up the global signal handling. other threads must call recoll_threadinit()
* when starting. * when starting.
* *
* @param flags misc modifiers * @param flags misc modifiers. These are currently only used to customize
* the log file and verbosity.
* @param cleanup function to call before exiting (atexit) * @param cleanup function to call before exiting (atexit)
* @param sigcleanup function to call on terminal signal (INT/HUP...) This * @param sigcleanup function to call on terminal signal (INT/HUP...) This
* should typically set a flag which tells the program (recoll, * should typically set a flag which tells the program (recoll,
@ -41,12 +39,14 @@ class RclConfig;
* default and environment * default and environment
* @return the parsed configuration. * @return the parsed configuration.
*/ */
enum RclInitFlags {RCLINIT_NONE=0, RCLINIT_DAEMON=1}; enum RclInitFlags {RCLINIT_NONE = 0, RCLINIT_DAEMON = 1, RCLINIT_IDX = 2};
extern RclConfig *recollinit(RclInitFlags flags, extern RclConfig *recollinit(RclInitFlags flags,
void (*cleanup)(void), void (*sigcleanup)(int), void (*cleanup)(void), void (*sigcleanup)(int),
string &reason, const string *argcnf = 0); std::string& reason, const string *argcnf = 0);
inline RclConfig *recollinit(void (*cleanup)(void), void (*sigcleanup)(int), inline RclConfig *recollinit(void (*cleanup)(void), void (*sigcleanup)(int),
string &reason, const string *argcnf = 0) { std::string& reason,
const std::string *argcnf = 0)
{
return recollinit(RCLINIT_NONE, cleanup, sigcleanup, reason, argcnf); return recollinit(RCLINIT_NONE, cleanup, sigcleanup, reason, argcnf);
} }
@ -54,4 +54,12 @@ inline RclConfig *recollinit(void (*cleanup)(void), void (*sigcleanup)(int),
// The main thread handles all signals. // The main thread handles all signals.
extern void recoll_threadinit(); extern void recoll_threadinit();
// Check if main thread
extern bool recoll_ismainthread();
// Should be called while exiting asap when critical cleanup (db
// close) has been performed. Only useful for the indexer (writes to
// the db), and only actually does something on Windows.
extern void recoll_exitready();
#endif /* _RCLINIT_H_INCLUDED_ */ #endif /* _RCLINIT_H_INCLUDED_ */

250
src/common/syngroups.cpp Normal file
View file

@ -0,0 +1,250 @@
/* Copyright (C) 2014 J.F.Dockes
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef TEST_SYNGROUPS
#include "autoconfig.h"
#include "syngroups.h"
#include "log.h"
#include "smallut.h"
#include <errno.h>
#include <unordered_map>
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
// Note that we are storing each term twice. I don't think that the
// size could possibly be a serious issue, but if it was, we could
// reduce the storage a bit by storing (short hash)-> vector<int>
// correspondances in the direct map, and then checking all the
// resulting groups for the input word.
//
// As it is, a word can only index one group (the last it is found
// in). It can be part of several groups though (appear in
// expansions). I really don't know what we should do with multiple
// groups anyway
class SynGroups::Internal {
public:
Internal() : ok(false) {
}
bool ok;
// Term to group num
std::unordered_map<string, unsigned int> terms;
// Group num to group
vector<vector<string> > groups;
};
bool SynGroups::ok()
{
return m && m->ok;
}
SynGroups::~SynGroups()
{
delete m;
}
SynGroups::SynGroups()
: m(new Internal)
{
}
bool SynGroups::setfile(const string& fn)
{
LOGDEB("SynGroups::setfile(" << (fn) << ")\n" );
if (!m) {
m = new Internal;
if (!m) {
LOGERR("SynGroups:setfile:: new Internal failed: no mem ?\n" );
return false;
}
}
if (fn.empty()) {
delete m;
m = 0;
return true;
}
ifstream input;
input.open(fn.c_str(), ios::in);
if (!input.is_open()) {
LOGERR("SynGroups:setfile:: could not open " << (fn) << " errno " << (errno) << "\n" );
return false;
}
string cline;
bool appending = false;
string line;
bool eof = false;
int lnum = 0;
for (;;) {
cline.clear();
getline(input, cline);
if (!input.good()) {
if (input.bad()) {
LOGERR("Syngroup::setfile(" << (fn) << "):Parse: input.bad()\n" );
return false;
}
// Must be eof ? But maybe we have a partial line which
// must be processed. This happens if the last line before
// eof ends with a backslash, or there is no final \n
eof = true;
}
lnum++;
{
string::size_type pos = cline.find_last_not_of("\n\r");
if (pos == string::npos) {
cline.clear();
} else if (pos != cline.length()-1) {
cline.erase(pos+1);
}
}
if (appending)
line += cline;
else
line = cline;
// Note that we trim whitespace before checking for backslash-eol
// This avoids invisible whitespace problems.
trimstring(line);
if (line.empty() || line.at(0) == '#') {
if (eof)
break;
continue;
}
if (line[line.length() - 1] == '\\') {
line.erase(line.length() - 1);
appending = true;
continue;
}
appending = false;
vector<string> words;
if (!stringToStrings(line, words)) {
LOGERR("SynGroups:setfile: " << (fn) << ": bad line " << (lnum) << ": " << (line) << "\n" );
continue;
}
if (words.empty())
continue;
if (words.size() == 1) {
LOGERR("Syngroup::setfile(" << (fn) << "):single term group at line " << (lnum) << " ??\n" );
continue;
}
m->groups.push_back(words);
for (vector<string>::const_iterator it = words.begin();
it != words.end(); it++) {
m->terms[*it] = m->groups.size()-1;
}
LOGDEB1("SynGroups::setfile: group: [" << (stringsToString(m->groups.back())) << "]\n" );
}
m->ok = true;
return true;
}
vector<string> SynGroups::getgroup(const string& term)
{
vector<string> ret;
if (!ok())
return ret;
std::unordered_map<string, unsigned int>::const_iterator it1 =
m->terms.find(term);
if (it1 == m->terms.end()) {
LOGDEB1("SynGroups::getgroup: [" << (term) << "] not found in direct map\n" );
return ret;
}
unsigned int idx = it1->second;
if (idx >= m->groups.size()) {
LOGERR("SynGroups::getgroup: line index higher than line count !\n" );
return ret;
}
return m->groups[idx];
}
#else
#include "syngroups.h"
#include "log.h"
#include <string>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <cstdio>
using namespace std;
static char *thisprog;
static char usage [] =
"syngroups <synfilename> <word>\n"
" \n\n"
;
static void Usage(void)
{
fprintf(stderr, "%s: usage:\n%s", thisprog, usage);
exit(1);
}
static int op_flags;
#define OPT_MOINS 0x1
#define OPT_s 0x2
#define OPT_b 0x4
int main(int argc, char **argv)
{
thisprog = argv[0];
argc--; argv++;
if (argc != 2) {
Usage();
}
string fn = *argv++;argc--;
string word = *argv++;argc--;
DebugLog::getdbl()->setloglevel(DEBDEB1);
DebugLog::setfilename("stderr");
SynGroups syns;
syns.setfile(fn);
if (!syns.ok()) {
cerr << "Initialization failed\n";
return 1;
}
vector<string> group = syns.getgroup(word);
cout << group.size() << " terms in group\n";
for (vector<string>::const_iterator it = group.begin();
it != group.end(); it++) {
cout << "[" << *it << "] ";
}
cout << endl;
return 0;
}
#endif

41
src/common/syngroups.h Normal file
View file

@ -0,0 +1,41 @@
/* Copyright (C) 2015 J.F.Dockes
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _SYNGROUPS_H_INCLUDED_
#define _SYNGROUPS_H_INCLUDED_
#include <string>
#include <vector>
// Manage synonym groups. This is very different from stemming and
// case/diac expansion because there is no reference form: all terms
// in a group are equivalent.
class SynGroups {
public:
SynGroups();
~SynGroups();
bool setfile(const std::string& fname);
std::vector<std::string> getgroup(const std::string& term);
bool ok();
private:
class Internal;
Internal *m;
SynGroups(const SynGroups&);
SynGroups& operator=(const SynGroups&);
};
#endif /* _SYNGROUPS_H_INCLUDED_ */

File diff suppressed because it is too large Load diff

View file

@ -17,13 +17,10 @@
#ifndef _TEXTSPLIT_H_INCLUDED_ #ifndef _TEXTSPLIT_H_INCLUDED_
#define _TEXTSPLIT_H_INCLUDED_ #define _TEXTSPLIT_H_INCLUDED_
#include <string> #include <math.h>
#include <list>
#ifndef NO_NAMESPACES #include <string>
using std::string; #include <vector>
using std::list;
#endif
class Utf8Iter; class Utf8Iter;
@ -55,12 +52,26 @@ public:
o_noNumbers = true; o_noNumbers = true;
} }
enum Flags {TXTS_NONE = 0, // Given [co-worker] as input, do we also generate [coworker] ?
TXTS_ONLYSPANS = 1, // Only return maximum spans (a@b.com) // Set by rclconfig
TXTS_NOSPANS = 2, // Only return atomic words (a, b, com) static bool o_deHyphenate;
TXTS_KEEPWILD = 4 // Handle wildcards as letters static void deHyphenate(bool on) {
}; o_deHyphenate = on;
}
enum Flags {
// Default: will return spans and words (a_b, a, b)
TXTS_NONE = 0,
// Only return maximum spans (a@b.com, not a, b, or com)
TXTS_ONLYSPANS = 1,
// Special: Only return atomic words (a, b, com). This is not
// used for indexing, but for position computation during
// abstract generation,
TXTS_NOSPANS = 2,
// Handle wildcards as letters. This is used with ONLYSPANS
// for parsing a user query (never alone).
TXTS_KEEPWILD = 4
};
TextSplit(Flags flags = Flags(TXTS_NONE)) TextSplit(Flags flags = Flags(TXTS_NONE))
: m_flags(flags), m_maxWordLength(40), m_prevpos(-1) : m_flags(flags), m_maxWordLength(40), m_prevpos(-1)
@ -69,23 +80,29 @@ public:
virtual ~TextSplit() {} virtual ~TextSplit() {}
/** Split text, emit words and positions. */ /** Split text, emit words and positions. */
virtual bool text_to_words(const string &in); virtual bool text_to_words(const std::string &in);
/** Process one output word: to be implemented by the actual user class */ /** Process one output word: to be implemented by the actual user class */
virtual bool takeword(const string& term, virtual bool takeword(const std::string& term,
int pos, // term pos int pos, // term pos
int bts, // byte offset of first char in term int bts, // byte offset of first char in term
int bte // byte offset of first char after term int bte // byte offset of first char after term
) = 0; ) = 0;
/** Called when we encounter formfeed \f 0x0c. Override to use the event.
* Mostly or exclusively used with pdftoxx output. Other filters mostly
* just don't know about pages. */
virtual void newpage(int /*pos*/)
{
}
// Static utility functions: // Static utility functions:
/** Count words in string, as the splitter would generate them */ /** Count words in string, as the splitter would generate them */
static int countWords(const string &in, Flags flgs = TXTS_ONLYSPANS); static int countWords(const std::string &in, Flags flgs = TXTS_ONLYSPANS);
/** Check if this is visibly not a single block of text */ /** Check if this is visibly not a single block of text */
static bool hasVisibleWhite(const string &in); static bool hasVisibleWhite(const std::string &in);
/** Split text span into strings, at white space, allowing for substrings /** Split text span into strings, at white space, allowing for substrings
* quoted with " . Escaping with \ works as usual inside the quoted areas. * quoted with " . Escaping with \ works as usual inside the quoted areas.
@ -94,17 +111,80 @@ public:
* non-utf-8 input (iso-8859 config files work ok). This hopefully * non-utf-8 input (iso-8859 config files work ok). This hopefully
* handles all Unicode whitespace, but needs correct utf-8 input * handles all Unicode whitespace, but needs correct utf-8 input
*/ */
static bool stringToStrings(const string &s, list<string> &tokens); static bool stringToStrings(const std::string &s, std::vector<std::string> &tokens);
/** Is char CJK ? */ /** Is char CJK ? */
static bool isCJK(int c); static bool isCJK(int c);
/** Statistics about word length (average and dispersion) can
* detect bad data like undecoded base64 or other mis-identified
* pieces of data taken as text. In practise, this keeps some junk out
* of the index, but does not decrease the index size much, and is
* probably not worth the trouble in general. Code kept because it
* probably can be useful in special cases. Base64 data does has
* word separators in it (+/) and is characterised by high average
* word length (>10, often close to 20) and high word length
* dispersion (avg/sigma > 0.8). In my tests, most natural
* language text has average word lengths around 5-8 and avg/sigma
* < 0.7
*/
#ifdef TEXTSPLIT_STATS
class Stats {
public:
Stats()
{
reset();
}
void reset()
{
count = 0;
totlen = 0;
sigma_acc = 0;
}
void newsamp(unsigned int len)
{
++count;
totlen += len;
double avglen = double(totlen) / double(count);
sigma_acc += (avglen - len) * (avglen - len);
}
struct Values {
int count;
double avglen;
double sigma;
};
Values get()
{
Values v;
v.count = count;
v.avglen = double(totlen) / double(count);
v.sigma = sqrt(sigma_acc / count);
return v;
}
private:
int count;
int totlen;
double sigma_acc;
};
Stats::Values getStats()
{
return m_stats.get();
}
void resetStats()
{
m_stats.reset();
}
#endif // TEXTSPLIT_STATS
private: private:
Flags m_flags; Flags m_flags;
int m_maxWordLength; int m_maxWordLength;
// Current span. Might be jf.dockes@wanadoo.f // Current span. Might be jf.dockes@wanadoo.f
string m_span; std::string m_span;
std::vector <std::pair<int, int> > m_words_in_span;
// Current word: no punctuation at all in there. Byte offset // Current word: no punctuation at all in there. Byte offset
// relative to the current span and byte length // relative to the current span and byte length
@ -121,14 +201,25 @@ private:
// It may happen that our cleanup would result in emitting the // It may happen that our cleanup would result in emitting the
// same term twice. We try to avoid this // same term twice. We try to avoid this
int m_prevpos; int m_prevpos;
unsigned int m_prevlen; int m_prevlen;
#ifdef TEXTSPLIT_STATS
// Stats counters. These are processed in TextSplit rather than by a
// TermProc so that we can take very long words (not emitted) into
// account.
Stats m_stats;
#endif
// Word length in characters. Declared but not updated if !TEXTSPLIT_STATS
unsigned int m_wordChars;
// This processes cjk text: // This processes cjk text:
bool cjk_to_words(Utf8Iter *it, unsigned int *cp); bool cjk_to_words(Utf8Iter *it, unsigned int *cp);
bool emitterm(bool isspan, string &term, int pos, int bs, int be); bool emitterm(bool isspan, std::string &term, int pos, size_t bs,size_t be);
bool doemit(bool spanerase, int bp, bool spanemit=false); bool doemit(bool spanerase, size_t bp);
void discardspan(); void discardspan();
bool span_is_acronym(std::string *acronym);
bool words_from_span(size_t bp);
}; };
#endif /* _TEXTSPLIT_H_INCLUDED_ */ #endif /* _TEXTSPLIT_H_INCLUDED_ */

View file

@ -24,18 +24,31 @@
#include "unacpp.h" #include "unacpp.h"
#include "unac.h" #include "unac.h"
#include "debuglog.h" #include "log.h"
#include "utf8iter.h" #include "utf8iter.h"
bool unacmaybefold(const string &in, string &out, bool unacmaybefold(const string &in, string &out,
const char *encoding, bool dofold) const char *encoding, UnacOp what)
{ {
char *cout = 0; char *cout = 0;
size_t out_len; size_t out_len;
int status; int status = -1;
status = dofold ?
unacfold_string(encoding, in.c_str(), in.length(), &cout, &out_len) : switch (what) {
unac_string(encoding, in.c_str(), in.length(), &cout, &out_len); case UNACOP_UNAC:
status = unac_string(encoding, in.c_str(), in.length(),
&cout, &out_len);
break;
case UNACOP_UNACFOLD:
status = unacfold_string(encoding, in.c_str(), in.length(),
&cout, &out_len);
break;
case UNACOP_FOLD:
status = fold_string(encoding, in.c_str(), in.length(),
&cout, &out_len);
break;
}
if (status < 0) { if (status < 0) {
if (cout) if (cout)
free(cout); free(cout);
@ -50,26 +63,57 @@ bool unacmaybefold(const string &in, string &out,
return true; return true;
} }
// Functions to determine upper-case or accented status could be implemented
// hugely more efficiently inside the unac c code, but there only used for
// testing user-entered terms, so we don't really care.
bool unaciscapital(const string& in) bool unaciscapital(const string& in)
{ {
LOGDEB2("unaciscapital: [" << (in) << "]\n" );
if (in.empty()) if (in.empty())
return false; return false;
Utf8Iter it(in); Utf8Iter it(in);
string shorter; string shorter;
it.appendchartostring(shorter); it.appendchartostring(shorter);
string noacterm, noaclowterm; string lower;
if (!unacmaybefold(shorter, noacterm, "UTF-8", false)) { if (!unacmaybefold(shorter, lower, "UTF-8", UNACOP_FOLD)) {
LOGINFO(("unaciscapital: unac failed for [%s]\n", in.c_str())); LOGINFO("unaciscapital: unac/fold failed for [" << (in) << "]\n" );
return false; return false;
} }
if (!unacmaybefold(noacterm, noaclowterm, "UTF-8", true)) { Utf8Iter it1(lower);
LOGINFO(("unaciscapital: unacfold failed for [%s]\n", in.c_str())); if (*it != *it1)
return true;
else
return false; return false;
} }
Utf8Iter it1(noacterm); bool unachasuppercase(const string& in)
Utf8Iter it2(noaclowterm); {
if (*it1 != *it2) LOGDEB2("unachasuppercase: [" << (in) << "]\n" );
if (in.empty())
return false;
string lower;
if (!unacmaybefold(in, lower, "UTF-8", UNACOP_FOLD)) {
LOGINFO("unachasuppercase: unac/fold failed for [" << (in) << "]\n" );
return false;
}
if (lower != in)
return true;
else
return false;
}
bool unachasaccents(const string& in)
{
LOGDEB2("unachasaccents: [" << (in) << "]\n" );
if (in.empty())
return false;
string noac;
if (!unacmaybefold(in, noac, "UTF-8", UNACOP_UNAC)) {
LOGINFO("unachasaccents: unac/unac failed for [" << (in) << "]\n" );
return false;
}
if (noac != in)
return true; return true;
else else
return false; return false;
@ -77,6 +121,8 @@ bool unaciscapital(const string& in)
#else // not testing #else // not testing
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#include <errno.h> #include <errno.h>
@ -90,31 +136,94 @@ using namespace std;
#include "readfile.h" #include "readfile.h"
#include "rclinit.h" #include "rclinit.h"
int main(int argc, char **argv) static char *thisprog;
static char usage [] = "\n"
"[-c|-C] <encoding> <infile> <outfile>\n"
" Default : unaccent\n"
" -c : unaccent and casefold\n"
" -C : casefold only\n"
"-t <string> test string as capitalized, upper-case anywhere, accents\n"
" the parameter is supposedly utf-8 so this can only work in an utf-8\n"
" locale\n"
"\n";
;
static void
Usage(void)
{ {
bool dofold = true; fprintf(stderr, "%s: usage: %s\n", thisprog, usage);
if (argc != 4) {
cerr << "Usage: unacpp <encoding> <infile> <outfile>" << endl;
exit(1); exit(1);
} }
const char *encoding = argv[1];
string ifn = argv[2]; static int op_flags;
#define OPT_c 0x2
#define OPT_C 0x4
#define OPT_t 0x8
int main(int argc, char **argv)
{
UnacOp op = UNACOP_UNAC;
thisprog = argv[0];
argc--; argv++;
while (argc > 0 && **argv == '-') {
(*argv)++;
if (!(**argv))
/* Cas du "adb - core" */
Usage();
while (**argv)
switch (*(*argv)++) {
case 'c': op_flags |= OPT_c; break;
case 'C': op_flags |= OPT_C; break;
case 't': op_flags |= OPT_t; break;
default: Usage(); break;
}
argc--; argv++;
}
if (op_flags & OPT_t) {
if (argc != 1)
Usage();
string in = *argv++;argc--;
bool capital, upper, accent;
capital = unaciscapital(in);
upper = unachasuppercase(in);
accent = unachasaccents(in);
cout << "[" << in << "] : " <<
"capitalized: " << (capital ? "Yes. " : "No. ") <<
"has uppercase: " << (upper ? "Yes. " : "No. ") <<
"has accents: " << (accent ? "Yes. " : "No. ") <<
endl;
return 0;
} else {
if (argc != 3)
Usage();
if (op_flags & OPT_c) {
op = UNACOP_UNACFOLD;
} else if (op_flags & OPT_C) {
op = UNACOP_FOLD;
}
const char *encoding = *argv++; argc--;
string ifn = *argv++; argc--;
if (!ifn.compare("stdin")) if (!ifn.compare("stdin"))
ifn.clear(); ifn.clear();
const char *ofn = argv[3]; const char *ofn = *argv++; argc--;
string reason; string reason;
(void)recollinit(RCLINIT_NONE, 0, 0, reason, 0); (void)recollinit(RCLINIT_NONE, 0, 0, reason, 0);
string odata; string odata;
if (!file_to_string(ifn, odata)) { if (!file_to_string(ifn, odata)) {
cerr << "file_to_string: " << odata << endl; cerr << "file_to_string " << ifn << " : " << odata << endl;
exit(1); return 1;
} }
string ndata; string ndata;
if (!unacmaybefold(odata, ndata, encoding, dofold)) { if (!unacmaybefold(odata, ndata, encoding, op)) {
cerr << "unac: " << ndata << endl; cerr << "unac: " << ndata << endl;
exit(1); return 1;
} }
int fd; int fd;
@ -126,14 +235,16 @@ int main(int argc, char **argv)
if (fd < 0) { if (fd < 0) {
cerr << "Open/Create " << ofn << " failed: " << strerror(errno) cerr << "Open/Create " << ofn << " failed: " << strerror(errno)
<< endl; << endl;
exit(1); return 1;
} }
if (write(fd, ndata.c_str(), ndata.length()) != (int)ndata.length()) { if (write(fd, ndata.c_str(), ndata.length()) != (int)ndata.length()) {
cerr << "Write(2) failed: " << strerror(errno) << endl; cerr << "Write(2) failed: " << strerror(errno) << endl;
exit(1); return 1;
} }
close(fd); close(fd);
exit(0); return 0;
}
} }
#endif #endif

View file

@ -24,10 +24,17 @@ using std::string;
#endif /* NO_NAMESPACES */ #endif /* NO_NAMESPACES */
// A small stringified wrapper for unac.c // A small stringified wrapper for unac.c
enum UnacOp {UNACOP_UNAC = 1, UNACOP_FOLD = 2, UNACOP_UNACFOLD = 3};
extern bool unacmaybefold(const string& in, string& out, extern bool unacmaybefold(const string& in, string& out,
const char *encoding, bool dofold); const char *encoding, UnacOp what);
// Utility function to determine if string begins with capital // Utility function to determine if string begins with capital
extern bool unaciscapital(const string& in); extern bool unaciscapital(const string& in);
// Utility function to determine if string has upper-case anywhere
extern bool unachasuppercase(const string& in);
// Utility function to determine if any character is accented. This
// approprialey ignores the characters from unac_except_chars which
// are really separate letters
extern bool unachasaccents(const string& in);
#endif /* _UNACPP_H_INCLUDED_ */ #endif /* _UNACPP_H_INCLUDED_ */

View file

@ -25,170 +25,152 @@
* This is used as a quick fix to the ascii-based code, and is not correct. * This is used as a quick fix to the ascii-based code, and is not correct.
* the correct way would be to do what http://www.unicode.org/reports/tr29/ * the correct way would be to do what http://www.unicode.org/reports/tr29/
* says. * says.
*
* Data from:
# PropList-4.0.1.txt
# Date: 2004-03-02, 02:42:40 GMT [MD]
#
# Unicode Character Database
# Copyright (c) 1991-2004 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see UCD.html
*/ */
static const unsigned int uniign[] = {
0x0021, /* ; Terminal_Punctuation # Po EXCLAMATION MARK*/ // Punctuation chararacters blocks array. Each block is defined by a
0x002C, /* ; Terminal_Punctuation # Po COMMA*/ // starting and ending code point (both included). MUST BE SORTED.
0x002D, /* ; Dash # Pd HYPHEN-MINUS*/ static const unsigned unipuncblocks[] = {
0x002E, /* ; Terminal_Punctuation # Po FULL STOP*/ // Start of latin-1 supplement block, up to capital A grave
0x003A, /* ; Terminal_Punctuation # Po [2] COLON..SEMICOLON*/ 0x0080, 0x00BF,
0x003B, /* ; Terminal_Punctuation # Po [2] COLON..SEMICOLON*/ // General punctuation
0x003F, /* ; Terminal_Punctuation # Po QUESTION MARK*/ 0x2000, 0x206F,
0x0085, /* NEXT LINE NEL;Cc */ // Superscripts and subscripts
0x00A0, /* NO-BREAK SPACE; Zs */ 0x2070, 0x209F,
0x00A1, /* INVERTED EXCLAMATION MARK;Po */ // Currency symbols
0x00A2, /* CENT SIGN;Sc */ 0x20A0, 0x20CF,
0x00A3, /* POUND SIGN;Sc; */ // Letterlike symbols
0x00A4, /* CURRENCY SIGN;Sc; */ 0x2100, 0x214f,
0x00A5, /* YEN SIGN;Sc; */ // Number forms
0x00A6, /* BROKEN BAR;So */ 0x2150, 0x218F,
0x00A7, /* SECTION SIGN;So; */ // Arrows
0x00A9, /* COPYRIGHT SIGN;So */ 0x2190, 0x21FF,
0x00AB, /* ; Quotation_Mark # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK*/ // Mathematical Operators
0x00AC, /* NOT SIGN;Sm */ 0x2200, 0x22FF,
0x00AD, /* ; Hyphen # Cf SOFT HYPHEN*/ // Miscellaneous Technical
0x00AE, /* registered sign */ 0x2300, 0x23FF,
0x00B0, /* DEGREE SIGN;So;0;ET;;;;;N;;;;; */ // Control Pictures
0x00B1, /* PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;*/ 0x2400, 0x243F,
0x00B7, /* MIDDLE DOT;Po;0;ON;;;;;N;;;;;*/ // Optical Character Recognition
0x00BB, /* ; Quotation_Mark # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK*/ 0x2440, 0x245F,
0x00BF, /* INVERTED QUESTION MARK;Po */ // Enclosed Alphanumerics
0x00D7, /* MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; */ 0x2460, 0x24FF,
0x037E, /* ; Terminal_Punctuation # Po GREEK QUESTION MARK*/ // Box Drawing
0x0387, /* ; Terminal_Punctuation # Po GREEK ANO TELEIA*/ 0x2500, 0x257F,
0x055C, /* ; STerm # Po ARMENIAN EXCLAMATION MARK*/ // Block Elements
0x055E, /* ; STerm # Po ARMENIAN QUESTION MARK*/ 0x2580, 0x259F,
0x0589, /* ; STerm # Po ARMENIAN FULL STOP*/ // Geometric Shapes
0x0589, /* ; Terminal_Punctuation # Po ARMENIAN FULL STOP*/ 0x25A0, 0x25FF,
0x058A, /* ; Dash # Pd ARMENIAN HYPHEN*/ // Miscellaneous Symbols
0x058A, /* ; Hyphen # Pd ARMENIAN HYPHEN*/ 0x2600, 0x26FF,
0x05C3, /* ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ*/ // Dingbats
0x060C, /* ; Terminal_Punctuation # Po ARABIC COMMA*/ 0x2700, 0x27BF,
0x061B, /* ; Terminal_Punctuation # Po ARABIC SEMICOLON*/ // Miscellaneous Mathematical Symbols-A
0x061F, /* ; STerm # Po ARABIC QUESTION MARK*/ 0x27C0, 0x27EF,
0x061F, /* ; Terminal_Punctuation # Po ARABIC QUESTION MARK*/ // Supplemental Arrows-A
0x06D4, /* ; STerm # Po ARABIC FULL STOP*/ 0x27F0, 0x27FF,
0x06D4, /* ; Terminal_Punctuation # Po ARABIC FULL STOP*/ // Supplemental Arrows-B
0x166E, /* ; STerm # Po CANADIAN SYLLABICS FULL STOP*/ 0x2900, 0x297F,
0x1680, /* ; White_Space # Zs OGHAM SPACE MARK*/ // Miscellaneous Mathematical Symbols-B
0x16EB, /* RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;*/ 0x2980, 0x29FF,
0x16EC, /* RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;*/ // Supplemental Mathematical Operators
0x16ED, /* RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; */ 0x2A00, 0x2AFF,
0x1803, /* ; STerm # Po MONGOLIAN FULL STOP*/ // Miscellaneous Symbols and Arrows
0x1806, /* ; Hyphen # Pd MONGOLIAN TODO SOFT HYPHEN*/ 0x2B00, 0x2BFF,
0x1809, /* ; STerm # Po MONGOLIAN MANCHU FULL STOP*/ };
0x180E, /* ; White_Space # Zs MONGOLIAN VOWEL SEPARATOR*/
0x2000, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ // Other punctuation characters list. Not all punctuation is in a
0x2001, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ // separate block some is found in the middle of alphanumeric codes.
0x2002, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ static const unsigned int unipunc[] = {
0x2003, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x00D7, /* MULTIPLICATION SIGN */
0x2004, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x00F7, /* DIVISION SIGN */
0x2005, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x037E, /* GREEK QUESTION MARK */
0x2006, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x0387, /* GREEK ANO TELEIA */
0x2007, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x055C, /* ARMENIAN EXCLAMATION MARK */
0x2008, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x055E, /* ARMENIAN QUESTION MARK */
0x2009, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x0589, /* ARMENIAN FULL STOP */
0x200A, /* ; White_Space # Zs [11] EN QUAD..HAIR SPACE*/ 0x058A, /* ARMENIAN HYPHEN */
0x2010, /* ; Hyphen # Pd [2] HYPHEN..NON-BREAKING HYPHEN*/ 0x05C3, /* HEBREW PUNCTUATION SOF PASUQ */
0x2011, /* ; Hyphen # Pd [2] HYPHEN..NON-BREAKING HYPHEN*/ 0x060C, /* ARABIC COMMA */
0x2012, /* ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR*/ 0x061B, /* ARABIC SEMICOLON */
0x2013, /* ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR*/ 0x061F, /* ARABIC QUESTION MARK */
0x2014, /* ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR*/ 0x06D4, /* ARABIC FULL STOP */
0x2015, /* ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR*/ 0x0964, /* DEVANAGARI DANDA */
0x2018, /* ; Quotation_Mark # Pi LEFT SINGLE QUOTATION MARK*/ 0x0965, /* DEVANAGARI DOUBLE DANDA */
0x2019, /* ; Quotation_Mark # Pf RIGHT SINGLE QUOTATION MARK*/ 0x166E, /* CANADIAN SYLLABICS FULL STOP */
0x201A, /* ; Quotation_Mark # Ps SINGLE LOW-9 QUOTATION MARK*/ 0x1680, /* OGHAM SPACE MARK */
0x201B, /* ; Quotation_Mark # Pi SINGLE HIGH-REVERSED-9 QUOTATION MARK*/ 0x16EB, /* RUNIC SINGLE PUNCTUATION */
0x201C, /* ; Quotation_Mark # Pi LEFT DOUBLE QUOTATION MARK*/ 0x16EC, /* RUNIC MULTIPLE PUNCTUATION */
0x201D, /* ; Quotation_Mark # Pf RIGHT DOUBLE QUOTATION MARK*/ 0x16ED, /* RUNIC CROSS PUNCTUATION */
0x201E, /* ; Quotation_Mark # Ps DOUBLE LOW-9 QUOTATION MARK*/ 0x1803, /* MONGOLIAN FULL STOP */
0x201F, /* ; Quotation_Mark # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK*/ 0x1806, /* MONGOLIAN TODO SOFT HYPHEN */
0x2022, /* BULLET;Po;0;ON;;;;;N;;;;; */ 0x1809, /* MONGOLIAN MANCHU FULL STOP */
0x2023, /* TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;*/ 0x180E, /* MONGOLIAN VOWEL SEPARATOR */
0x2024, /* ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;*/
0x2025, /* TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;; */
0x2026, /* HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;; */
0x2028, /* ; White_Space # Zl LINE SEPARATOR*/
0x2029, /* ; White_Space # Zp PARAGRAPH SEPARATOR*/
0x202F, /* ; White_Space # Zs NARROW NO-BREAK SPACE*/
0x2032, /* PRIME;Po;0;ET;;;;;N;;;;;*/
0x2039, /* ; Quotation_Mark # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK*/
0x203A, /* ; Quotation_Mark # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK*/
0x203C, /* ; STerm # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG*/
0x203D, /* ; STerm # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG*/
0x2047, /* ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK*/
0x2048, /* ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK*/
0x2049, /* ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK*/
0x2053, /* ; Dash # Po SWUNG DASH*/
0x205F, /* ; White_Space # Zs MEDIUM MATHEMATICAL SPACE*/
0x207B, /* ; Dash # Sm SUPERSCRIPT MINUS*/
0x208B, /* ; Dash # Sm SUBSCRIPT MINUS*/
0x2117, /* SOUND RECORDING COPYRIGHT;So */
0x2122, /* TRADE MARK SIGN;So; */
0x2192, /* RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;*/
0x2212, /* ; Dash # Sm MINUS SIGN*/
0x2E2E, /* REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; */ 0x2E2E, /* REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; */
0x3000, /* ; White_Space # Zs IDEOGRAPHIC SPACE*/ 0x3000, /* IDEOGRAPHIC SPACE*/
0x3002, /* ; STerm # Po IDEOGRAPHIC FULL STOP*/ 0x3002, /* IDEOGRAPHIC FULL STOP*/
0x300C, /* ; Quotation_Mark # Ps LEFT CORNER BRACKET*/ 0x300C, /* LEFT CORNER BRACKET*/
0x300D, /* ; Quotation_Mark # Pe RIGHT CORNER BRACKET*/ 0x300D, /* RIGHT CORNER BRACKET*/
0x300E, /* ; Quotation_Mark # Ps LEFT WHITE CORNER BRACKET*/ 0x300E, /* LEFT WHITE CORNER BRACKET*/
0x300F, /* ; Quotation_Mark # Pe RIGHT WHITE CORNER BRACKET*/ 0x300F, /* RIGHT WHITE CORNER BRACKET*/
0x301C, /* ; Dash # Pd WAVE DASH*/ 0x301C, /* WAVE DASH*/
0x301D, /* ; Quotation_Mark # Ps REVERSED DOUBLE PRIME QUOTATION MARK*/ 0x301D, /* REVERSED DOUBLE PRIME QUOTATION MARK*/
0x301E, /* ; Quotation_Mark # Pe LOW DOUBLE PRIME QUOTATION MARK*/ 0x301E, /* LOW DOUBLE PRIME QUOTATION MARK*/
0x3030, /* ; Dash # Pd WAVY DASH*/ 0x3030, /* WAVY DASH*/
0x30FB, /* ; Hyphen # Pc KATAKANA MIDDLE DOT*/ 0x30FB, /* KATAKANA MIDDLE DOT*/
0xC2B6, /* PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; */ 0xC2B6, /* PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; */
0xC3B7, /* DIVISION SIGN;Sm;0;ON;;;;;N;;;;; */ 0xC3B7, /* DIVISION SIGN;Sm;0;ON;;;;;N;;;;; */
0xFE31, /* ; Dash # Pd PRESENTATION FORM FOR VERTICAL EM DASH*/ 0xFE31, /* PRESENTATION FORM FOR VERTICAL EM DASH*/
0xFE32, /* ; Dash # Pd PRESENTATION FORM FOR VERTICAL EN DASH*/ 0xFE32, /* PRESENTATION FORM FOR VERTICAL EN DASH*/
0xFE41, /* ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET*/ 0xFE41, /* PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET*/
0xFE42, /* ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET*/ 0xFE42, /* PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET*/
0xFE43, /* ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET*/ 0xFE43, /* PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET*/
0xFE44, /* ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET*/ 0xFE44, /* PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET*/
0xFE50, /* ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP*/ 0xFE50, /* [3] SMALL COMMA..SMALL FULL STOP*/
0xFE51, /* ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP*/ 0xFE51, /* [3] SMALL COMMA..SMALL FULL STOP*/
0xFE52, /* ; STerm # Po SMALL FULL STOP*/ 0xFE52, /* STOP*/
0xFE52, /* ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP*/ 0xFE52, /* [3] SMALL COMMA..SMALL FULL STOP*/
0xFE54, /* ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/ 0xFE54, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
0xFE55, /* ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/ 0xFE55, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
0xFE56, /* ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/ 0xFE56, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
0xFE57, /* ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/ 0xFE57, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
0xFE58, /* ; Dash # Pd SMALL EM DASH*/ 0xFE58, /* SMALL EM DASH */
0xFE63, /* ; Hyphen # Pd SMALL HYPHEN-MINUS*/ 0xFE63, /* SMALL HYPHEN-MINUS */
0xFF01, /* FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;; */ 0xFF01, /* FULLWIDTH EXCLAMATION MARK */
0xFF02, /* FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;; */ 0xFF02, /* FULLWIDTH QUOTATION MARK */
0xFF03, /* FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;; */ 0xFF03, /* FULLWIDTH NUMBER SIGN */
0xFF04, /* FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;; */ 0xFF04, /* FULLWIDTH DOLLAR SIGN */
0xFF05, /* FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;; */ 0xFF05, /* FULLWIDTH PERCENT SIGN */
0xFF06, /* FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;; */ 0xFF06, /* FULLWIDTH AMPERSAND */
0xFF07, /* FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;; */ 0xFF07, /* FULLWIDTH APOSTROPHE */
0xFF08, /* FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENIN*/ 0xFF08, /* FULLWIDTH LEFT PARENTHESIS */
0xFF09, /* FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOS*/ 0xFF09, /* FULLWIDTH RIGHT PARENTHESIS */
0xFF0A, /* FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;; */ 0xFF0A, /* FULLWIDTH ASTERISK */
0xFF0B, /* FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;; */ 0xFF0B, /* FULLWIDTH PLUS SIGN */
0xFF0C, /* FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; */ 0xFF0C, /* FULLWIDTH COMMA */
0xFF0D, /* FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;; */ 0xFF0D, /* FULLWIDTH HYPHEN-MINUS */
0xFF0E, /* FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;; */ 0xFF0E, /* FULLWIDTH FULL STOP */
0xFF0F, /* FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;; */ 0xFF0F, /* FULLWIDTH SOLIDUS */
0xFF1A, /* ; Terminal_Punctuation # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON*/ 0xFF1A, /* [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON*/
0xFF1B, /* ; Terminal_Punctuation # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON*/ 0xFF1B, /* [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON*/
0xFF1F, /* ; Terminal_Punctuation # Po FULLWIDTH QUESTION MARK*/ 0xFF1F, /* FULLWIDTH QUESTION MARK*/
0xFF61, /* ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC FULL STOP*/ 0xFF61, /* HALFWIDTH IDEOGRAPHIC FULL STOP*/
0xFF62, /* ; Quotation_Mark # Ps HALFWIDTH LEFT CORNER BRACKET*/ 0xFF62, /* HALFWIDTH LEFT CORNER BRACKET*/
0xFF63, /* ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET*/ 0xFF63, /* HALFWIDTH RIGHT CORNER BRACKET*/
0xFF64, /* ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA*/ 0xFF64, /* HALFWIDTH IDEOGRAPHIC COMMA*/
0xFF65, /* ; Hyphen # Pc HALFWIDTH KATAKANA MIDDLE DOT*/ 0xFF65, /* HALFWIDTH KATAKANA MIDDLE DOT*/
};
// Characters that should just be discarded. Some of these are in the
// above blocks, but this array is tested first, so it's not worth
// breaking the blocks
static const unsigned int uniskip[] = {
0x00AD, /* SOFT HYPHEN */
0x034F, /* COMBINING GRAPHEME JOINER */
0x2027, /* HYPHENATION POINT */
0x200C, /* ZERO WIDTH NON-JOINER */
0x200D, /* ZERO WIDTH JOINER */
0x2060, /* WORD JOINER . Actually this should not be ignored but used to
* prevent a word break... */
}; };
/* Things that would visibly break a block of text, rendering obvious the need /* Things that would visibly break a block of text, rendering obvious the need

24
src/common/utf8fn.cpp Normal file
View file

@ -0,0 +1,24 @@
#include "utf8fn.h"
#include "rclconfig.h"
#include "transcode.h"
#include "log.h"
using namespace std;
string compute_utf8fn(const RclConfig *config, const string& ifn, bool simple)
{
string charset = config->getDefCharset(true);
string utf8fn;
int ercnt;
string lfn(simple ? path_getsimple(ifn) : ifn);
if (!transcode(lfn, utf8fn, charset, "UTF-8", &ercnt)) {
LOGERR("compute_utf8fn: fn transcode failure from [" << charset <<
"] to UTF-8 for: [" << lfn << "]\n");
} else if (ercnt) {
LOGDEB("compute_utf8fn: " << ercnt << " transcode errors from [" <<
charset << "] to UTF-8 for: [" << lfn << "]\n");
}
LOGDEB1("compute_utf8fn: transcoded from [" << lfn << "] to [" <<
utf8fn << "] (" << charset << "->" << "UTF-8)\n");
return utf8fn;
}

16
src/common/utf8fn.h Normal file
View file

@ -0,0 +1,16 @@
#ifndef _UTF8FN_H_
#define _UTF8FN_H_
#include <string>
class RclConfig;
// Translate file name/path to utf8 for indexing.
//
// @param simple If true we extract and process only the simple file name
// (ignore the path)
std::string compute_utf8fn(const RclConfig *config, const std::string& ifn,
bool simple);
#endif // _UTF8FN_H_

Some files were not shown because too many files have changed in this diff Show more