Ticket #282: xapian-omega-1.0.7a-from-ticket-285-and-cleaned-up-updated.patch

File xapian-omega-1.0.7a-from-ticket-285-and-cleaned-up-updated.patch, 133.7 KB (added by Olly Betts, 15 years ago)

Updated version of newer patch

  • xapian-omega-1.0.7a/ChangeLog

    diff -u  xapian-omega-1.0.7a/ChangeLog.orig
    old new  
    15261526
    15271527        * configure.ac: Check for strftime.
    15281528
     15292006-08-22 09:30:12 Reini Urban <reinhard.urban@avl.com>
     1530
     1531        omega-0.9.6c:
     1532        * omega.m4: New file with macro XO_OMEGA_WITH
     1533        * configure.ac: Cleaner interface via omega.m4: XO_OMEGA_WITH.
     1534        Added HAVE_PDFTOTEXT, HAVE_PDFINFO
     1535        * omindex.cc: Fix wrong timestamp comparison in cache logic
     1536        * scriptindex.cc: Support TEXTCAT for language autodetection.
     1537        Add lastmod and size records and values.
     1538        * configfile.h: Add common VALUE_* keys for indexers and omega
     1539        * ppt2text.in, excel2text.in, outlook2text.in: New scripts
     1540        * scriptindex.1: updated by help2man
     1541
     15422006-08-18 15:13:32 Reini Urban <reinhard.urban@avl.com>
     1543
     1544        omega-0.9.6b:
     1545        * omindex.cc: last_mod as value. Add HAVE_UNRAR, HAVE_MSGCONVERT,
     1546        HAVE_READPST, HAVE_CATDOC checks.
     1547        Add options --verbose, --silent
     1548        * configure.ac: Add HAVE_CATDOC
     1549       
     15502006-08-17 18:06:26 Reini Urban <reinhard.urban@avl.com>
     1551
     1552        omega-0.9.6a:
     1553        * omindex.cc: Added last_mod check, cache_dir, libtextcat,
     1554        cached virtual directories (zip,msg,pst,...).
     1555        New options: -c/--nocleanup, -i/--ignore-time.
     1556        Add MS-Office mimetypes (word, excel, powerpoint, outlook).
     1557        Consistently log stderr to /var/log/omega/omindex-error.log.
     1558        * configure.ac: Add HAVE_TEXTCAT, HAVE_UNRAR, HAVE_MSGCONVERT,
     1559        HAVE_READPST, HAVE_CATDOC
     1560        * commonhelp.cc: Update stemmer help with HAVE_TEXTCAT (lang autodetection)
     1561        * configfile.cc: New cache_dir
     1562        * Makefile.am: Prepare for omindex_test. Link omindex against configfile.
     1563        * langclass, langclass.conf: New file and directory
     1564        * omindex.1: updated by help2man
     1565
    15291566Sun Jul 09 01:40:09 BST 2006  Olly Betts <olly@survex.com>
    15301567
    15311568        * docs/omegascript.txt: Note that (by design) an omegascript template
  • xapian-omega-1.0.7a/Makefile.am

    diff -u  xapian-omega-1.0.7a/Makefile.am.orig
    old new  
    5555        images/score-8.png \
    5656        images/score-9.png \
    5757        xapian-omega.spec
     58        omega.m4 \
     59        \$(wildcard langclass/*.lm) langclass.conf
    5860
    5961AM_CPPFLAGS = -DCONFIGFILE_SYSTEM=\"$(sysconfdir)/omega.conf\"
    6062
    6163pkglibbindir = $(pkglibdir)/bin
    6264pkglibbin_PROGRAMS = omega
    6365bin_PROGRAMS = omindex scriptindex
     66dist_libexec_SCRIPTS = outlook2text ppt2text excel2text mimeexplode msgconvert.pl
    6467dist_bin_SCRIPTS = dbi2omega htdig2omega mbox2omega
    6568
    6669check_PROGRAMS = htmlparsetest md5test utf8converttest
    6770TESTS = htmlparsetest$(EXEEXT) md5test$(EXEEXT) utf8converttest$(EXEEXT)
    6871
     72check: check-am omindex_CHECK
     73
     74omindex_CHECK: omindex$(EXEEXT)
     75        rm -rf $(srcdir)/data
     76        mkdir $(srcdir)/data
     77        ./omindex --verbose -c --db $(srcdir)/data --url / $(srcdir)/test
     78        ./omindex --verbose -p -c --db $(srcdir)/data --url / $(srcdir)/test
     79        delve -d -r 1 $(srcdir)/data
     80        delve -d -r 5 $(srcdir)/data
     81
    6982omegadatadir = $(datadir)/omega
    7083dist_omegadata_DATA = htdig2omega.script mbox2omega.script
    7184
     
    92105        common/safewindows.h\
    93106        common/stringutils.h
    94107
    95 AM_LDFLAGS = $(ICONV_LDFLAGS)
     108AM_LDFLAGS = -no-undefined $(ICONV_LDFLAGS)
    96109
    97110omega_SOURCES = omega.cc query.cc cgiparam.cc utils.cc configfile.cc date.cc\
    98111 cdb_init.cc cdb_find.cc cdb_hash.cc cdb_unpack.cc loadfile.cc\
    99112 utf8convert.cc datematchdecider.cc
    100113omega_LDADD = $(XAPIAN_LIBS) # -lpcre
     
    102115 md5wrap.cc xmlparse.cc metaxmlparse.cc utf8convert.cc sample.cc diritor.cc\
    103  runfilter.cc freemem.cc common/msvc_dirent.cc
     116 runfilter.cc freemem.cc common/msvc_dirent.cc configfile.cc
    104117if NEED_MKDTEMP
    105118omindex_SOURCES += portability/mkdtemp.cc
    106119endif
    107 omindex_LDADD = $(XAPIAN_LIBS)
     120omindex_LDADD = $(XAPIAN_LIBS) $(TEXTCAT_LIB)
    108121
    109122scriptindex_SOURCES = scriptindex.cc myhtmlparse.cc htmlparse.cc\
    110  common/getopt.cc commonhelp.cc utils.cc hashterm.cc loadfile.cc\
     123 common/getopt.cc commonhelp.cc configfile.cc utils.cc hashterm.cc loadfile.cc\
    111124 common/safe.cc common/stringutils.cc utf8convert.cc utf8truncate.cc
    112 scriptindex_LDADD = $(XAPIAN_LIBS)
     125scriptindex_LDADD = $(XAPIAN_LIBS) $(TEXTCAT_LIB)
    113126
    114127htmlparsetest_SOURCES = htmlparsetest.cc myhtmlparse.cc htmlparse.cc\
    115128 utf8convert.cc
     
    127140MAINTAINERCLEANFILES = $(dist_man_MANS)
    128141endif
    129142
     143CLEANFILES = $(dist_libexec_SCRIPTS) $(dist_bin_SCRIPTS)
     144
     145omega.conf: $(srcdir)/omega.conf.in Makefile
     146        cat $(srcdir)/omega.conf.in | \
     147                sed "s,\@localstatedir\@,$(localstatedir),;" > $@
     148ppt2text: $(srcdir)/ppt2text.in Makefile
     149        cat $(srcdir)/ppt2text.in | \
     150                sed "s,\@CATPPT\@,$(CATPPT),;s,\@SED\@,$(SED),;" > $@
     151        chmod 0755 $@
     152outlook2text: $(srcdir)/outlook2text.in mimeexplode Makefile
     153        cat $(srcdir)/outlook2text.in | \
     154                sed "s,\@MSGCONVERT\@,$(MSGCONVERT),;s,\@MIMEEXPLODE\@,$(pkglibbindir)/mimeexplode,;" > $@
     155        chmod 0755 $@
     156excel2text: $(srcdir)/excel2text.in Makefile
     157        cat $(srcdir)/excel2text.in | \
     158                sed "s,\@XLS2CSV\@,$(XLS2CSV),;s,\@SED\@,$(SED),;" > $@
     159        chmod 0755 $@
     160
     161
    130162if DOCUMENTATION_RULES
    131 CLEANFILES = $(dist_man_MANS)
     163CLEANFILES += $(dist_man_MANS)
    132164
    133165omindex.1: omindex$(EXEEXT) makemanpage
    134166        ./makemanpage ./omindex $(srcdir)/omindex.cc omindex.1
  • xapian-omega-1.0.7a/acinclude.m4

    diff -u  xapian-omega-1.0.7a/acinclude.m4.orig
    old new  
     1m4_include(omega.m4)
  • xapian-omega-1.0.7a/configfile.cc

    diff -u  xapian-omega-1.0.7a/configfile.cc.orig
    old new  
    2424
    2525#include <fstream>
    2626#include <iostream>
     27using std::ifstream;
    2728
    2829#include <sys/types.h>
    2930#include "safesysstat.h"
     
    4243string template_dir = "/var/lib/omega/templates/";
    4344string log_dir = "/var/log/omega/";
    4445string cdb_dir = "/var/lib/omega/cdb/";
     46string cache_dir = "/var/lib/omega/cache/";
    4547
    4648/** Return true if the file fname exists.
    4749 */
     
    6466    }
    6567
    6668    while (in) {
    67         char line[1024];
    68         in.getline(line, sizeof(line));
    69 
    70         char *p = line;
    71         while (isspace((unsigned char)*p)) ++p;
    72         if (!*p || *p == '#') continue; // Ignore blank line and comments
    73 
    74         char *q = p;
    75         while (*q && !isspace((unsigned char)*q)) ++q;
    76         string name(p, q - p);
    77 
    78         p = q;
    79         while (isspace((unsigned char)*p)) ++p;
    80         q = p;
    81         while (*q && !isspace((unsigned char)*q)) ++q;
    82         string value(p, q - p);
    83 
    84         while (*q && isspace((unsigned char)*q)) ++q;
    85         if (value.empty() || *q) {
    86             throw string("Bad line in configuration file `") + cfile + "'";
    87         }
    88 
     69        string name, value;
     70        in >> name >> value;
     71        if (value[value.length()-1] != '/') value += "/";
     72        //std::cout << "...read conf: "<<name<<"="<<value << std::endl;
    8973        if (name == "database_dir") {
    90             database_dir = value + "/";
     74            database_dir = value;
    9175        } else if (name == "template_dir") {
    92             template_dir = value + "/";
     76            template_dir = value;
    9377        } else if (name == "log_dir") {
    94             log_dir = value + "/";
     78            log_dir = value;
    9579        } else if (name == "cdb_dir") {
    96             cdb_dir = value + "/";
     80            cdb_dir = value;
     81        } else if (name == "cache_dir") {
     82            cache_dir = value;
    9783        }
    9884    }
    9985
  • xapian-omega-1.0.7a/configfile.h

    diff -u  xapian-omega-1.0.7a/configfile.h.orig
    old new  
    3030extern string template_dir;
    3131extern string log_dir;
    3232extern string cdb_dir;
     33extern string cache_dir;
    3334
    3435void read_config_file();
    3536
  • xapian-omega-1.0.7a/configure.ac

    diff -u  xapian-omega-1.0.7a/configure.ac.orig
    old new  
    11dnl Process this file with autoconf to produce a configure script.
    22
    3 AC_INIT(xapian-omega, 1.0.7)dnl FIXME: bugreport addr as third argument
     3AC_INIT(xapian-omega, 1.0.7a, reinhard.urban@avl.com) dnl bugreport addr as third argument
    44dnl See HACKING document for details of the reasons for required versions.
    55AC_PREREQ([2.59])
    66AM_INIT_AUTOMAKE([1.9 -Wportability tar-ustar])
     
    259259dnl Check processor endianness.
    260260AC_C_BIGENDIAN
    261261
     262dnl hardcode sed path in the pkglibbin_SCRIPTS
     263AC_PATH_PROG([SED], [sed])
     264AC_DEFINE_UNQUOTED([SED],"$SED", [sed path])
     265AC_SUBST([SED])
     266
    262267if test x"$enable_documentation" = xyes; then
    263268  dnl Check for perl. (Needed to make man pages from "--help" output).
    264269  AC_PATH_PROG(PERL, perl, [])
     
    274279  test -z "$RST2HTML" && AC_MSG_ERROR([rst2html is required to build documentation])
    275280fi
    276281
     282AC_ARG_WITH([textcat],
     283[  --without-textcat       don't use libtextcat for automatic language classification])
     284if test xno != x$with_textcat; then
     285  AC_MSG_CHECKING(for libtextcat)
     286  textcat_candidates="$with_textcat $HOME/local/lib* /usr*/local/lib* /usr/lib*"
     287  for lib in $textcat_candidates; do
     288    if test -f $lib/libtextcat.la; then
     289      TEXTCAT_LIB="-L$lib -ltextcat"
     290      break
     291    elif test -f $lib/libtextcat.a; then
     292      TEXTCAT_LIB="$lib/libtextcat.a"
     293      break
     294    fi
     295  done
     296  if test -z "$TEXTCAT_LIB"; then
     297    AC_MSG_RESULT(not found)
     298  else
     299    AC_MSG_RESULT($lib)
     300    AC_DEFINE([HAVE_TEXTCAT],1, [Define to 1 if you have libtextcat for automatic language classification])
     301    AC_SUBST(TEXTCAT_LIB)
     302    have_textcat=yes
     303  fi
     304fi
     305
     306dnl Check for unrar (default: disabled). Pending patent issues.
     307AC_ARG_WITH([unrar],
     308[  --with-unrar            use unrar and extract .rar files],
     309[if test xyes = x$with_unrar; then
     310  AC_PATH_PROG([UNRAR], [unrar])
     311  test -n "$UNRAR" && (
     312    AC_DEFINE([HAVE_UNRAR],1, [Define to 1 if you have unrar to extract .rar archives])
     313    AC_DEFINE_UNQUOTED([UNRAR],"$UNRAR",[unrar path])
     314  )
     315fi])
     316
     317XO_OMEGA_WITH([unzip],[extract .zip archives])
     318
     319AC_ARG_WITH([msgconvert],
     320[  --without-msgconvert    use msgconvert.pl and extract MS-Outlook .msg files])
     321if test xno != x$with_msgconvert; then
     322  AC_PATH_PROGS([MSGCONVERT], [msgconvert msgconvert.pl])
     323  test -n "$MSGCONVERT" && (
     324    AC_DEFINE([HAVE_MSGCONVERT],1, [Use msgconvert.pl and extract MS-Outlook .msg files])
     325    dnl AC_DEFINE_UNQUOTED([MSGCONVERT],"$MSGCONVERT",[msgconvert.pl path])
     326    AC_SUBST([MSGCONVERT])
     327  )
     328fi
     329
     330XO_OMEGA_WITH([readpst],[extract MS-Outlook .pst files])
     331XO_OMEGA_WITH([catdoc], [extract MS-Excel .xls and MS-Powerpoint .ppt files],
     332[
     333  AC_PATH_PROG([CATPPT], [catppt])
     334  AC_SUBST([CATPPT])
     335  AC_PATH_PROG([XLS2CSV], [xls2csv])
     336  AC_SUBST([XLS2CSV])
     337])
     338
     339XO_OMEGA_WITH([pdftotext],[extract Adobe .pdf files],
     340[
     341  AC_PATH_PROG([PDFINFO], [pdfinfo])
     342  AC_DEFINE_UNQUOTED([PDFINFO],"$PDFINFO",[pdfinfo path])
     343])
     344XO_OMEGA_WITH([pstotext], [extract Postscript .ps files])
     345XO_OMEGA_WITH([antiword], [extract MS-Word .doc files])
     346XO_OMEGA_WITH([wpd2text], [extract wordperfect files])
     347XO_OMEGA_WITH([wps2text], [extract MS-works files])
     348XO_OMEGA_WITH([unrtf],    [extract RTF files])
     349XO_OMEGA_WITH([pod2text], [extract from perl scripts])
     350XO_OMEGA_WITH([catdvi],   [extract from TeX dvi])
     351XO_OMEGA_WITH([djvutxt],  [extract from DjVu])
     352
    277353dnl Disabled XML stuff as we don't currently build omindex-config
    278354dnl dnl Check for libxml or libxml2.  We do this by looking for xml-config.
    279355dnl AC_PATH_PROG(XML_CONFIG_PATH, xml2-config)
  • xapian-omega-1.0.7a/excel2text.in

    diff -u  xapian-omega-1.0.7a/excel2text.in.orig
    old new  
     1#! /bin/sh
     2# strip numbers, to stdout
     3@XLS2CSV@ -q0 "$1" | @SED@ -re's/[0123456789.]+,//g'
  • xapian-omega-1.0.7a/langclass.conf

    diff -u  xapian-omega-1.0.7a/langclass.conf.orig
    old new  
     1# A config file for the language models
     2# provided with Gertjan van Noords language guesser
     3# (http://odur.let.rug.nl/~vannoord/TextCat/)
     4#
     5# Notes:
     6# - Putting the most probable languages at the top of the list
     7# improves performance, because this will raise the threshold for
     8# likely candidates more quickly.
     9#
     10/var/lib/omega/langclass/english.lm             english
     11/var/lib/omega/langclass/german.lm              german
     12/var/lib/omega/langclass/french.lm              french
     13/var/lib/omega/langclass/danish.lm              danish
     14/var/lib/omega/langclass/dutch.lm               dutch
     15/var/lib/omega/langclass/finnish.lm             finnish
     16/var/lib/omega/langclass/italian.lm             italian
     17/var/lib/omega/langclass/norwegian.lm           norwegian
     18/var/lib/omega/langclass/portuguese.lm          portuguese
     19/var/lib/omega/langclass/russian-iso8859_5.lm   russian
     20/var/lib/omega/langclass/russian-koi8_r.lm      russian
     21/var/lib/omega/langclass/russian-windows1251.lm russian
     22/var/lib/omega/langclass/spanish.lm             spanish
     23/var/lib/omega/langclass/swedish.lm             swedish
  • xapian-omega-1.0.7a/langclass/danish.lm

    diff -u  xapian-omega-1.0.7a/langclass/danish.lm.orig
    old new  
     1_        21274
     2e        9291
     3r        5307
     4n        4733
     5i        3976
     6t        3948
     7s        3751
     8a        3296
     9l        3063
     10d        3025
     11o        2868
     12g        2471
     13er       2164
     14k        2002
     15m        1680
     16e_       1655
     17en       1613
     18f        1507
     19de       1484
     20r_       1379
     21v        1245
     22u        1176
     23t_       1081
     24n_       1032
     25er_      992
     26b        942
     27.        870
     28ge       868
     29._       831
     30re       816
     31h        816
     32et       813
     33te       813
     34p        806
     35in       788
     36or       775
     37_s       753
     38_a       749
     39en_      712
     40_e       691
     41ti       689
     42an       687
     43,        681
     44,_       677
     45_f       655
     46_d       645
     47el       642
     48ng       635
     49nd       634
     50g_       634
     51se       615
     52le       615
     53st       607
     54s_       601
     55_o       572
     56ne       560
     57li       537
     58et_      524
     59es       521
     60_i       512
     61ri       511
     62sk       510
     63_de      498
     64å        497
     65ar       475
     66ed       473
     67ig       463
     68at       452
     69_m       446
     70is       443
     71fo       441
     72æ        441
     73ve       438
     74_k       434
     75ø        432
     76der      429
     77ke       428
     78ing      427
     79og       426
     80_b       412
     81me       408
     82il       407
     83for      405
     84ns       394
     85y        389
     86_h       380
     87_t       374
     88on       371
     89d_       370
     90al       362
     91be       359
     92_fo      351
     93af       336
     94de_      335
     95_og      333
     96_p       332
     97og_      325
     98om       325
     99_for     324
     100_og_     313
     101l_       308
     102nge      302
     103i_       295
     104_v       294
     105c        289
     106ter      283
     107ll       280
     108ni       278
     109nde      278
     110rs       277
     111_af      277
     112un       275
     113ra       271
     114ko       271
     115den      270
     116_i_      268
     117id       265
     118til      265
     119j        265
     120vi       264
     121D        260
     122ere      256
     123ma       255
     124si       253
     125f_       252
     126af_      238
     127_af_     235
     128ik       235
     129m_       234
     130å_       232
     131_ti      227
     132_D       226
     133_u       226
     134_er      225
     135nt       224
     136_en      224
     137ls       221
     138es_      216
     139lig      216
     140ger      216
     141re_      210
     142ag       210
     143_me      207
     144at_      204
     145lle      200
     146ge_      200
     147_til     200
     148ige      199
     149_er_     199
     150der_     199
     151em       199
     152ds       197
     153r.       195
     154io       195
     155r._      195
     156ud       193
     157_at      192
     158_at_     191
     159ta       190
     160els      190
     161_l       190
     162ha       190
     163il_      189
     164or_      189
     165ke_      186
     166rt       185
     167gen      184
     168ka       183
     169-        180
     170rk       180
     171ning     178
     172ol       178
     173nin      178
     174la       177
     175ld       175
     176De       175
     177it       173
     178ede      172
     179ed_      171
     180_ko      171
     181lse      171
     182ek       168
     183else     167
     184inge     167
     185på       167
     186ng_      167
     187_på      167
     188iv       166
     189ør       166
     190so       165
     191he       165
     192ens      165
     193ske      165
     194ind      164
     195til_     163
     196rn       163
     197ide      162
     198ev       162
     199den_     162
     200to       162
     201sen      160
     202_be      160
     203sa       160
     204bl       158
     205_g       158
     206an_      157
     207det      156
     208om_      156
     209ru       156
     210va       155
     211_til_    155
     212ste      154
     213rd       153
     214_på_     152
     215k_       152
     216på_      152
     217di       152
     218kr       152
     219K        151
     220_De      149
     221for_     148
     222te_      148
     223kon      148
     224ver      147
     225mm       146
     226am       146
     227_en_     145
     228_r       145
     229ne_      144
     230ing_     144
     231tr       143
     232le_      142
     233del      142
     234_in      142
     235gt       140
     236_st      138
     237S        138
     238eg       138
     239gs       138
     240tt       138
     241r,       137
     242ser      137
     243r,_      137
     244er.      137
     245ro       137
     246er._     137
     247_for_    136
     248ent      136
     249kt       136
     250eri      135
     251ur       134
     252lin      134
     253B        133
     254A        133
     255sti      133
     256ner      133
     257da       133
     258ris      132
     259ion      132
     260_K       131
     261ern      131
     262ers      130
     263ist      130
     264ær       130
     265ige_     130
     266_si      130
     267tte      129
     268E        128
     269_n       128
     270nn       127
     271_B       126
     272_ha      126
     273_.       126
     274rne      125
     275H        125
     276_ud      125
     277rin      124
     278na       124
     279und      124
     280ft       124
     281_der     124
     282ku       123
     283_A       122
     284ler      120
     285and      120
     286end      120
     287ns_      120
     288rg       119
     289op       119
     290er,_     119
     291er,      119
     292ar_      118
     293P        118
     294_S       117
     295_H       117
     296_._      116
     297ov       116
     298erne     115
     299tio      115
     300med      115
     301tion     115
     302_E       115
     303_P       115
     304det_     114
     305pr       114
     306e.       113
     307ter_     113
     308:        113
     309kk       113
     310e._      113
     311e,_      113
     312e,       113
     313od       113
     314kke      113
     315ten      113
     316ling     113
     317:_       112
     318mi       112
     319eli      112
     320lo       111
     321som      111
     322_den     111
     323rb       110
     324se_      110
     325ell      110
     326sid      110
     327nne      109
     328fi       108
     329lt       107
     330v_       107
     331_de_     107
     332ark      106
     333lige     106
     334ngen     106
     335ie       105
     336_med     105
     337_der_    105
     338ring     105
     339a_       105
     340_vi      104
     341-_       104
     342ys       103
     343gel      103
     344_so      103
     345ia       103
     346ive      102
     347ej       101
     348ati      101
     349ren      101
     350_det     101
     351side     101
     352ske_     101
     353br       100
     354gi       100
     355F        100
     356M        100
     357ul       99
     358isk      99
     359men      99
     360n,_      99
     361age      99
     362fr       99
     363n,       99
     364tu       98
     365ts       98
     366_ma      98
     367nder     98
     368ot       97
     369dt       97
     370R        97
     371med_     96
     372ho       96
     373ans      95
     374_kon     95
     375pe       95
     376ce       94
     377gr       93
     378mme      92
     379ret      92
     380lige_    92
     381mu       91
     382_med_    91
     383hv       91
     384væ       91
     385Det      91
     386ens_     91
     387kl       91
     388_M       90
     389T        90
     390ingen    90
     391rm       90
     392ill      89
     393elle     89
     394ef       89
     395ene      89
     396nds      89
     397ove      89
     398som_     89
     399C        88
     400_den_    88
  • xapian-omega-1.0.7a/langclass/dutch.lm

    diff -u  xapian-omega-1.0.7a/langclass/dutch.lm.orig
    old new  
     1_        20104
     2e        9848
     3n        5323
     4a        3733
     5t        3683
     6i        3490
     7r        3195
     8d        2876
     9o        2845
     10n_       2443
     11en       2439
     12s        2195
     13e_       1842
     14l        1837
     15g        1522
     16en_      1500
     17de       1489
     18er       1388
     19t_       1377
     20v        1253
     21u        1217
     22k        1204
     23_d       1136
     24h        1102
     25m        1084
     26an       939
     27te       875
     28j        857
     29in       810
     30_v       793
     31r_       751
     32de_      742
     33ee       737
     34p        732
     35et       718
     36ge       716
     37aa       708
     38b        703
     39_e       686
     40st       669
     41z        668
     42ie       662
     43_de      655
     44w        631
     45c        611
     46.        604
     47s_       582
     48_de_     576
     49_h       572
     50el       570
     51ij       564
     52._       554
     53et_      531
     54an_      522
     55he       505
     56_o       497
     57nd       478
     58_i       475
     59ar       459
     60_m       451
     61re       442
     62ve       441
     63'        428
     64or       424
     65ng       421
     66at       418
     67_s       415
     68oo       403
     69_z       401
     70le       395
     71_b       394
     72_a       391
     73_he      386
     74va       385
     75er_      381
     76me       372
     77_w       368
     78f        361
     79on       351
     80_t       351
     81_va      345
     82_g       342
     83di       342
     84nt       340
     85,        335
     86g_       335
     87,_       334
     88van      327
     89ch       326
     90is       326
     91ing      325
     92be       325
     93ni       320
     94it       317
     95een      316
     96_van     315
     97al       310
     98den      309
     99ti       309
     100van_     307
     101oe       302
     102ke       302
     103_van_    299
     104aar      299
     105d_       295
     106we       293
     107da       292
     108tu       290
     109_ee      290
     110ud       287
     111een_     286
     112li       284
     113es       282
     114_st      281
     115ver      281
     116ten      281
     117ri       275
     118nde      275
     119der      274
     120_in      270
     121k_       268
     122vo       267
     123het      266
     124oor      264
     125_het     262
     126het_     262
     127_het_    259
     128_een     258
     129l_       258
     130ze       257
     131_n       254
     132ro       248
     133gen      243
     134_een_    241
     135at_      240
     136op       238
     137n.       238
     138_en      237
     139rs       237
     140_da      235
     141stu      232
     142in_      230
     143_be      229
     144_ge      228
     145_k       226
     146rd       226
     147tud      220
     148_en_     220
     149n._      217
     150te_      209
     151ei       208
     152ent      206
     153_me      203
     154la       202
     155ek       202
     156ed       201
     157ra       200
     158stud     200
     159en.      200
     160ie_      197
     161ste      196
     162_vo      195
     163_in_     193
     164_stu     191
     165zi       191
     166om       189
     167ui       189
     168en._     186
     169ten_     185
     170_stud    185
     171ude      184
     172die      183
     173ns       183
     174_j       181
     175D        179
     176aan      179
     177se       179
     178ma       178
     179_ve      176
     180ne       174
     181_p       174
     182eg       173
     183p_       172
     184ar_      172
     185aar_     171
     186_te      170
     187ng_      169
     188_we      169
     189''       167
     190_D       165
     191ers      164
     192_op      163
     193dat      161
     194dat_     160
     195ig       160
     196ere      159
     197eer      158
     198_zi      158
     199voor     156
     200voo      156
     201nge      155
     202nder     151
     203nte      151
     204or_      150
     205ta       150
     206je       149
     207ing_     148
     208ll       148
     209_ver     147
     210jk       146
     211oor_     146
     212_dat     145
     213ijk      145
     214ren      145
     215is_      145
     216_dat_    144
     217_l       144
     218and      144
     219lij      143
     220ter      143
     221na       142
     222uden     139
     223tude     138
     224_voor    136
     225_voo     136
     226ond      136
     227ken      135
     228cht      135
     229_al      135
     230ht       135
     231wa       134
     232ho       133
     233em       133
     234den_     133
     235pe       132
     236sc       132
     237un       131
     238ur       131
     239_di      130
     240gen_     130
     241zo       129
     242rt       129
     243ev       128
     244mo       128
     245lijk     127
     246_is      126
     247stude    124
     248ha       123
     249to       122
     250el_      121
     251og       121
     252op_      121
     253sch      120
     254ol       120
     255ente     119
     256_u       118
     257pr       118
     258end      118
     259mi       117
     260iet      116
     261_aa      116
     262eli      115
     263dent     115
     264ijn      115
     265jn       115
     266ou       115
     267men      114
     268_'       114
     269tie      113
     270_is_     113
     271nie      113
     272tr       112
     273ak       112
     274id       112
     275udent    111
     276tuden    111
     277uit      110
     278_te_     109
     279aan_     109
     280ld       109
     281S        108
     282_aan     108
     283ede      108
     284ja       107
     285nten     107
     286it_      107
     287je_      107
     288ts       107
     289erd      106
     290est      106
     291E        105
     292_op_     105
     293ad       104
     294al_      104
     295_ze      104
     296_on      104
     297rk       104
     298lle      103
     299ens      103
     300gel      103
     301m_       103
     302len      103
     303_r       102
     304ec       102
     305inge     102
     306met      102
     307_met     101
     308si       100
     309die_     100
     310us       100
     311onde     99
     312_ni      99
     313De       99
     314eu       99
     315dente    99
     316enten    99
     317ic       99
     318_met_    98
     319f_       98
     320met_     98
     321no       97
     322ko       96
     323voor_    96
     324rde      96
     325H        96
     326ngen     95
     327lo       95
     328ot       95
     329as       94
     330zij      93
     331_nie     92
     332vi       92
     333eb       92
     334_De      92
     335_zij     91
     336ep       91
     337wi       91
     338_zo      91
     339kt       91
     340ege      91
     341G        91
     342bi       90
     343j_       90
     344ij_      90
     345ze_      90
     346do       90
     347lan      89
     348ov       89
     349udi      89
     350ord      89
     351onder    89
     352V        88
     353elij     88
     354_wa      88
     355elijk    88
     356ef       88
     357_die     87
     358ag       86
     359erk      86
     360eren     86
     361R        85
     362ik       85
     363_ma      85
     364gr       85
     365am       85
     366_mo      84
     367ul       84
     368nn       83
     369eve      83
     370De_      83
     371maa      83
     372ingen    83
     373wo       83
     374_''      83
     375O        83
     376tudi     82
     377I        82
     378nt_      82
     379tudie    81
     380ven      81
     381udie     81
     382nten_    81
     383_die_    81
     384jaa      80
     385ka       80
     386eke      80
     387ite      80
     388a_       80
     389_je      80
     390ac       80
     391jaar     80
     392_je_     79
     393_H       79
     394_zijn    79
     395zijn     79
     396n,       78
     397nen      78
     398N        78
     399n,_      78
     400ijn_     77
  • xapian-omega-1.0.7a/langclass/english.lm

    diff -u  xapian-omega-1.0.7a/langclass/english.lm.orig
    old new  
     1_        20326
     2e        6617
     3t        4843
     4o        3834
     5n        3653
     6i        3602
     7a        3433
     8s        2945
     9r        2921
     10h        2507
     11e_       2000
     12d        1816
     13_t       1785
     14c        1639
     15l        1635
     16th       1535
     17he       1351
     18_th      1333
     19u        1309
     20f        1253
     21m        1175
     22p        1151
     23_a       1145
     24the      1142
     25_the     1060
     26s_       978
     27er       968
     28_o       967
     29he_      928
     30d_       888
     31t_       885
     32the_     844
     33_the_    843
     34on       842
     35in       817
     36y        783
     37n_       773
     38b        761
     39re       754
     40,        734
     41,_       732
     42an       732
     43g        728
     44w        718
     45_i       707
     46en       676
     47f_       599
     48y_       595
     49of       594
     50_of      592
     51es       589
     52ti       587
     53v        580
     54_of_     575
     55of_      575
     56nd       568
     57at       549
     58r_       540
     59_w       534
     60it       522
     61ed       496
     62_p       494
     63nt       485
     64_c       462
     65o_       457
     66io       450
     67_an      439
     68te       432
     69or       425
     70_b       418
     71nd_      407
     72to       406
     73st       402
     74is       401
     75_s       396
     76_in      389
     77ion      385
     78and      385
     79de       384
     80ve       382
     81ha       375
     82ar       366
     83_m       361
     84and_     360
     85_and     360
     86_and_    358
     87se       353
     88_to      347
     89me       346
     90to_      344
     91ed_      339
     92.        330
     93be       329
     94_f       329
     95._       329
     96_to_     320
     97co       317
     98ic       316
     99ns       308
     100al       307
     101le       304
     102ou       304
     103ce       293
     104ent      279
     105l_       278
     106_co      277
     107tio      275
     108on_      274
     109_d       274
     110tion     268
     111ri       266
     112_e       264
     113ng       253
     114hi       251
     115er_      249
     116ea       246
     117as       245
     118_be      242
     119pe       242
     120h_       234
     121_r       232
     122ec       227
     123ch       223
     124ro       222
     125ct       220
     126_h       219
     127pr       217
     128in_      217
     129ne       214
     130ll       214
     131rt       213
     132s,_      210
     133s,       210
     134li       209
     135ra       208
     136T        207
     137wh       204
     138a_       203
     139ac       201
     140_wh      199
     141_n       196
     142ts       196
     143di       196
     144es_      195
     145si       194
     146re_      193
     147at_      192
     148nc       192
     149ie       190
     150_a_      188
     151_in_     185
     152ing      184
     153us       182
     154_re      182
     155g_       179
     156ng_      178
     157op       178
     158con      177
     159tha      175
     160_l       174
     161_tha     174
     162ver      173
     163ma       173
     164ion_     171
     165_con     171
     166ci       170
     167ons      170
     168_it      170
     169po       169
     170ere      168
     171is_      167
     172ta       167
     173la       166
     174_pr      165
     175fo       164
     176ho       164
     177ir       162
     178ss       161
     179men      160
     180be_      160
     181un       159
     182ty       159
     183_be_     158
     184ing_     157
     185om       156
     186ot       156
     187hat      155
     188ly       155
     189_g       155
     190em       153
     191_T       151
     192rs       150
     193mo       148
     194ch_      148
     195wi       147
     196we       147
     197ad       147
     198ts_      145
     199res      143
     200_wi      143
     201I        143
     202hat_     142
     203ei       141
     204ly_      141
     205ni       140
     206os       140
     207ca       139
     208ur       139
     209A        138
     210ut       138
     211that     138
     212_that    137
     213ati      137
     214_fo      137
     215st_      137
     216il       136
     217or_      136
     218for      136
     219pa       136
     220ul       135
     221ate      135
     222ter      134
     223it_      134
     224nt_      133
     225that_    132
     226_ha      129
     227al_      128
     228el       128
     229as_      127
     230ll_      127
     231_ma      125
     232no       124
     233ment     124
     234an_      124
     235tion_    122
     236su       122
     237bl       122
     238_de      122
     239nce      120
     240pl       120
     241fe       119
     242tr       118
     243so       118
     244int      115
     245ov       114
     246e,       114
     247e,_      114
     248_u       113
     249ent_     113
     250Th       113
     251her      113
     252j        112
     253atio     112
     254ation    112
     255_Th      111
     256le_      110
     257ai       110
     258_it_     110
     259_on      110
     260_for     109
     261ect      109
     262k        109
     263hic      108
     264est      108
     265der      107
     266tu       107
     267na       106
     268_by_     106
     269by_      106
     270E        106
     271by       106
     272_by      106
     273ve_      106
     274_di      106
     275en_      104
     276vi       104
     277m_       103
     278_whi     102
     279iv       102
     280whi      102
     281ns_      102
     282_A       101
     283ich      100
     284ge       100
     285pro      99
     286ess      99
     287_whic    99
     288ers      99
     289hich     99
     290ce_      99
     291which    99
     292whic     99
     293all      98
     294ove      98
     295_is      98
     296ich_     97
     297ee       97
     298hich_    97
     299n,_      96
     300n,       96
     301im       95
     302ir_      94
     303hei      94
     304ions     94
     305sti      94
     306se_      94
     307per      93
     308The      93
     309_pa      93
     310heir     93
     311id       93
     312eir      93
     313eir_     93
     314ig       93
     315heir_    93
     316_no      93
     317ev       93
     318era      92
     319_int     92
     320ted      91
     321_The     91
     322ies      91
     323art      91
     324thei     90
     325_ar      90
     326_thei    90
     327their    90
     328_pro     90
     329et       89
     330_pe      88
     331_mo      88
     332ther     88
     333x        87
     334gh       87
     335S        87
     336_is_     87
     337ol       87
     338ty_      87
     339_I       86
     340nde      86
     341am       86
     342rn       86
     343nte      86
     344mp       85
     345_su      84
     346_we      84
     347par      84
     348_v       84
     349pu       82
     350his      82
     351ow       82
     352mi       82
     353go       81
     354N        81
     355ue       81
     356ple      81
     357ep       80
     358ab       80
     359;_       80
     360;        80
     361ex       80
     362ain      80
     363over     80
     364_un      79
     365q        79
     366qu       79
     367pp       79
     368ith      79
     369ry       79
     370_as      79
     371ber      79
     372ub       78
     373av       78
     374uc       78
     375s._      77
     376s.       77
     377enc      77
     378are      77
     379iti      77
     380gr       76
     381his_     76
     382ua       76
     383part     76
     384ff       75
     385eve      75
     386O        75
     387rea      74
     388ous      74
     389ia       74
     390The_     73
     391ag       73
     392mb       73
     393_go      73
     394fa       72
     395on,_     72
     396ern      72
     397t,_      72
     398on,      72
     399t,       72
     400_me      71
  • xapian-omega-1.0.7a/langclass/finnish.lm

    diff -u  xapian-omega-1.0.7a/langclass/finnish.lm.orig
    old new  
     1_        19984
     2a        9133
     3i        8384
     4t        7797
     5e        6481
     6n        6431
     7s        5897
     8l        4504
     9o        4163
     10u        4106
     11k        4013
     12ä        3354
     13n_       2868
     14m        2569
     15a_       1987
     16v        1905
     17r        1827
     18ta       1580
     19en       1553
     20is       1515
     21h        1508
     22y        1462
     23st       1390
     24in       1375
     25p        1342
     26j        1333
     27an       1139
     28si       1073
     29tt       1030
     30te       1008
     31en_      982
     32_k       980
     33it       974
     34ll       947
     35aa       942
     36ä_       902
     37va       878
     38el       855
     39_t       851
     40ka       846
     41i_       835
     42.        832
     43se       818
     44li       806
     45tä       804
     46oi       767
     47ai       744
     48._       739
     49tu       734
     50_o       719
     51mi       715
     52al       703
     53on       684
     54d        681
     55_v       662
     56et       654
     57_j       641
     58t_       635
     59ti       632
     60_m       628
     61_s       620
     62ja       616
     63ma       596
     64sa       595
     65la       582
     66ist      575
     67_e       565
     68to       565
     69ks       557
     70in_      554
     71es       551
     72il       538
     73an_      536
     74ki       527
     75,        525
     76ku       525
     77,_       524
     78us       520
     79as       514
     80nt       512
     81ri       495
     82ke       494
     83at       491
     84_p       485
     85le       484
     86ik       483
     87ss       477
     88ut       469
     89ö        469
     90sta      460
     91ee       459
     92uu       458
     93ol       457
     94ta_      451
     95ne       445
     96ää       445
     97ei       443
     98uo       436
     99ko       433
     100un       430
     101lu       421
     102ii       420
     103e_       418
     104nn       413
     105_h       412
     106ar       408
     107er       402
     108än       396
     109ja_      386
     110im       381
     111on_      365
     112_va      363
     113aan      354
     114_a       352
     115me       350
     116ak       345
     117ssa      331
     118na       330
     119ie       329
     120pa       327
     121_ja      326
     122ia       325
     123tä_      322
     124_l       319
     125vi       317
     126ise      316
     127tta      315
     128de       314
     129os       312
     130lli      309
     131_ja_     304
     132jo       295
     133vä       290
     134su       289
     135au       287
     136lis      286
     137_on      285
     138sä       284
     139uk       280
     140am       280
     141ot       280
     142ty       275
     143ett      271
     144ttä      270
     145ni       269
     146lä       267
     147ksi      264
     148nk       264
     149ht       263
     150ul       261
     151ell      261
     152sa_      259
     153ha       257
     154sen      257
     155a.       254
     156isi      253
     157ste      253
     158aan_     252
     159_on_     252
     160_ka      252
     161sk       251
     162kk       246
     163itt      245
     164ok       242
     165a._      239
     166all      239
     167yt       239
     168mä       237
     169mu       237
     170av       237
     171_y       236
     172lla      233
     173taa      231
     174ais      231
     175een      230
     176K        230
     177lt       228
     178s_       227
     179ast      227
     180iv       226
     181ssa_     225
     182ra       225
     183-        223
     184kse      223
     185oit      220
     186om       220
     187T        219
     188_ku      218
     189än_      216
     190aa_      214
     191at_      214
     192tel      211
     193ui       210
     194si_      208
     195rk       207
     196sta_     207
     197_jo      203
     198kä       202
     199_K       201
     200est      200
     201em       200
     202he       199
     203_n       199
     204vo       198
     205_ta      196
     206eh       196
     207_ol      196
     208S        196
     209nta      196
     210_ko      194
     211je       194
     212stä      194
     213är       193
     214ust      191
     215mis      191
     216ns       190
     217pu       189
     218nen      188
     219ät       188
     220toi      188
     221iin      187
     222ten      187
     223min      186
     224ista     185
     225hd       184
     226a,       184
     227a,_      184
     228sen_     183
     229E        182
     230lle      181
     231vat      179
     232ill      177
     233no       176
     234pä       176
     235lm       176
     236llis     175
     237n.       175
     238io       172
     239ine      171
     240n._      170
     241pi       169
     242uks      168
     243ava      168
     244ään      166
     245nen_     165
     246ah       165
     247_mu      164
     248tus      163
     249mm       162
     250_to      162
     251ek       160
     252int      159
     253_r       159
     254lin      158
     255oim      158
     256_T       158
     257A        158
     258imi      157
     259tö       157
     260la_      157
     261jä       157
     262aj       156
     263yh       155
     264o_       154
     265lo       154
     266oli      153
     267een_     153
     268le_      153
     269_si      153
     270g        152
     271aik      151
     272vat_     150
     273L        149
     274ur       149
     275ti_      149
     276sia      148
     277ite      147
     278inen     147
     279ain      146
     280sti      146
     281lla_     146
     282ys       145
     283_mi      145
     284val      144
     285stu      144
     286äm       144
     287alli     143
     288pe       143
     289utt      142
     290et_      141
     291_tu      141
     292eri      140
     293_E       140
     294:        140
     295nki      139
     296ir       139
     297llä      138
     298up       138
     299äi       137
     300ama      137
     301_ha      135
     302id       135
     303_se      135
     304po       134
     305inen_    134
     306tte      133
     307nna      133
     308ten_     132
     309or       132
     310ts       131
     311nä       131
     312yk       131
     313äs       131
     314_S       130
     315ses      130
     316ve       130
     317ess      129
     318äl       129
     319ita      129
     320lai      129
     321H        129
     322van      127
     323äk       127
     324kin      127
     325N        127
     326_te      126
     327den      126
     328tee      126
     329P        126
     330kaa      126
     331iin_     125
     332kun      125
     333ois      125
     334sit      125
     335oh       124
     336V        124
     337yö       124
     338äv       124
     339tav      124
     340voi      124
     341ia_      123
     342I        123
     343oll      123
     344maa      122
     345ih       122
     346oj       122
     347rj       121
     348ro       121
     349ikk      120
     350so       120
     351oo       120
     352oimi     120
     353do       120
     354pp       119
     355M        119
     356_ei      118
     357toim     118
     358op       118
     359uut      118
     360tet      118
     361_i       118
     362_ma      117
     363vai      117
     364lä_      116
     365u_       116
     366sy       116
     367kau      116
     368utta     116
     369un_      115
     370eu       115
     371ssä      115
     372tti      115
     373_sa      115
     374mp       114
     375eis      114
     376ka_      112
     377että     112
     378taa_     111
     379_et      111
     380hu       111
     381itu      111
     382suu      111
     383den_     111
     384ksen     110
     385ap       110
     386_ke      110
     387uv       110
     388tam      110
     389yv       109
     390aup      109
     391stä_     109
     392asta     109
     393äy       109
     394kan      108
     395nu       108
     396ukse     108
     397_toi     107
     398ien      107
     399hi       107
     400iss      107
  • xapian-omega-1.0.7a/langclass/french.lm

    diff -u  xapian-omega-1.0.7a/langclass/french.lm.orig
    old new  
     1_        20800
     2e        7258
     3i        4051
     4s        4003
     5a        3972
     6n        3903
     7r        3650
     8t        3590
     9u        2968
     10o        2823
     11l        2723
     12e_       2632
     13d        2241
     14s_       1721
     15_d       1693
     16c        1663
     17p        1528
     18é        1320
     19m        1297
     20es       1164
     21t_       1106
     22_l       1079
     23de       1048
     24on       959
     25_de      940
     26en       939
     27_p       852
     28nt       825
     29le       808
     30es_      791
     31re       777
     32,        721
     33,_       720
     34n_       703
     35de_      685
     36'        670
     37an       667
     38_de_     645
     39v        641
     40_s       610
     41r_       596
     42_c       594
     43er       585
     44ai       575
     45_a       558
     46_e       554
     47ou       554
     48q        549
     49qu       538
     50is       530
     51te       528
     52ti       525
     53ur       519
     54it       514
     55g        498
     56a_       490
     57f        480
     58la       476
     59in       475
     60_le      441
     61me       436
     62nt_      432
     63.        427
     64b        427
     65ra       423
     66io       416
     67ent      415
     68._       404
     69ne       395
     70ns       392
     71ion      383
     72h        381
     73ue       376
     74se       371
     75le_      370
     76ar       370
     77ie       362
     78co       361
     79at       359
     80tr       359
     81et       349
     82pr       342
     83ce       336
     84au       328
     85u_       321
     86il       314
     87_r       313
     88_la      304
     89un       303
     90eu       303
     91st       300
     92re_      296
     93ro       290
     94la_      288
     95on_      287
     96_m       286
     97_la_     283
     98que      281
     99_qu      280
     100_q       280
     101po       275
     102tio      273
     103tion     273
     104pa       273
     105li       271
     106_t       269
     107nc       268
     108si       266
     109_pr      265
     110ri       264
     111al       263
     112ui       262
     113_co      259
     114i_       255
     115ta       255
     116é_       251
     117x        247
     118em       244
     119l_       243
     120et_      238
     121_l'      236
     122l'       236
     123les      233
     124ns_      233
     125ir       232
     126_le_     228
     127ent_     227
     128or       226
     129ré       224
     130_f       224
     131ne_      222
     132à        221
     133ve       220
     134ch       220
     135it_      219
     136di       219
     137oi       217
     138-        216
     139ni       215
     140à_       215
     141les_     215
     142d'       214
     143el       212
     144ss       212
     145_n       212
     146ut       211
     147our      210
     148des      210
     149"        208
     150ur_      207
     151nd       207
     152er_      206
     153ait      206
     154ion_     204
     155rs       202
     156_en      201
     157_et      200
     158j        200
     159_d'      200
     160ll       199
     161_des     198
     162des_     197
     163_pa      197
     164té       196
     165_et_     195
     166_à       195
     167_à_      195
     168om       193
     169ma       192
     170ati      190
     171_des_    189
     172L        188
     173so       187
     174_u       185
     175è        184
     176_"       183
     177sa       182
     178_po      181
     179tre      181
     180dé       181
     181ue_      180
     182pe       179
     183en_      179
     184ont      178
     185_un      178
     186_L       178
     187us       176
     188_les     176
     189_les_    176
     190rt       176
     191is_      173
     192_i       173
     193du       172
     194e,_      171
     195e,       171
     196na       171
     197s,       170
     198s,_      170
     199as       169
     200men      169
     201M        167
     202ait_     167
     203'a       166
     204vi       162
     205ci       159
     206ant      158
     207_au      158
     208da       157
     209_M       157
     210ation    155
     211atio     155
     212con      154
     213que_     153
     214ons      153
     215eur      151
     216est      149
     217me_      149
     218mi       149
     219par      148
     220tion_    148
     221_so      147
     222te_      147
     223res      144
     224lo       144
     225ment     144
     226és       144
     227ans      143
     228_du      142
     229du_      141
     230ux       141
     231un_      140
     232y        138
     233pro      138
     234_du_     136
     235_dé      136
     236ce_      135
     237_se      134
     238_re      134
     239pl       133
     240A        132
     241ge       131
     242ic       131
     243su       130
     244x_       129
     245ien      129
     246nce      129
     247"_       129
     248ac       128
     249il_      128
     250qui      128
     251_pro     127
     252no       127
     253av       126
     254_v       125
     255_o       125
     256rs_      125
     257ans_     124
     258eme      124
     259bl       123
     260emen     122
     261_en_     122
     262iqu      122
     263ct       122
     264iq       122
     265lle      122
     266nn       121
     267ts       121
     268ement    121
     269ét       120
     270_"_      120
     271ér       119
     272té_      119
     273_ce      119
     274mp       119
     275ire      119
     276ui_      119
     277to       118
     278he       117
     279_é       117
     280ca       117
     281_j       116
     282ec       116
     283va       116
     284_par     116
     285ée       115
     286_con     115
     287se_      114
     288tre_     113
     289ique     112
     290dan      111
     291éc       111
     292ha       110
     293une      110
     294P        110
     295lu       110
     296ux_      109
     297_b       108
     298s.       108
     299pou      108
     300_pou     108
     301ier      107
     302C        107
     303ais      106
     304s._      105
     305ain      104
     306_un_     104
     307nte      103
     308'e       103
     309mo       103
     310mm       103
     311ment_    102
     312une_     102
     313com      101
     314_P       101
     315'i       101
     316_ma      100
     317do       99
     318ant_     98
     319anc      98
     320che      97
     321ap       97
     322ont_     97
     323_que     97
     324os       97
     325urs      96
     326_di      96
     327fi       96
     328im       96
     329pour     96
     330_pour    96
     331ê        95
     332ts_      95
     333_g       95
     334our_     94
     335_sa      94
     336ntr      94
     337_da      94
     338_ré      93
     339rai      93
     340rm       93
     341_qui     93
     342e.       92
     343am       92
     344_com     91
     345uv       91
     346_C       91
     347D        91
     348qui_     90
     349e._      90
     350pu       89
     351_qui_    88
     352ia       87
     353_dan     87
     354_dans    87
     355dans     87
     356ter      87
     357fo       87
     358son      87
     359dans_    87
     360id       86
     361ag       86
     362ine      86
     363tu       85
     364ran      85
     365au_      85
     366ol       85
     367oc       84
     368est_     84
     369st_      84
     370enc      84
     371F        82
     372_tr      81
     373'u       81
     374tai      81
     375ell      80
     376R        79
     377_su      79
     378S        79
     379ions     79
     380pré      79
     381sé       78
     382ab       78
     383né       77
     384_que_    77
     385_in      77
     386_av      76
     387pour_    76
     388fa       76
     389rr       76
     390air      75
     391_ch      75
     392_a_      75
     393ba       74
     394_pl      74
     395gr       74
     396tt       74
     397ssi      74
     398rd       73
     399pas      73
     400bi       73
  • xapian-omega-1.0.7a/langclass/german.lm

    diff -u  xapian-omega-1.0.7a/langclass/german.lm.orig
    old new  
     1_        31586
     2e        15008
     3n        9058
     4i        7299
     5r        6830
     6t        5662
     7s        5348
     8a        4618
     9h        4176
     10d        4011
     11er       3415
     12en       3412
     13u        3341
     14l        3266
     15n_       2848
     16c        2636
     17ch       2460
     18g        2407
     19o        2376
     20e_       2208
     21r_       2128
     22m        2077
     23_d       1948
     24de       1831
     25en_      1786
     26ei       1718
     27er_      1570
     28in       1568
     29te       1505
     30ie       1505
     31b        1458
     32t_       1425
     33f        1306
     34k        1176
     35ge       1144
     36s_       1137
     37un       1113
     38,        1104
     39,_       1099
     40w        1099
     41z        1060
     42nd       1039
     43he       1004
     44st       989
     45_s       952
     46_de      949
     47.        909
     48_e       906
     49ne       906
     50der      880
     51._       847
     52be       841
     53es       829
     54ic       796
     55_a       791
     56ie_      779
     57is       769
     58ich      763
     59an       755
     60re       749
     61di       732
     62ein      730
     63se       730
     64"        720
     65ng       709
     66_i       706
     67sc       683
     68sch      681
     69it       673
     70der_     652
     71h_       651
     72ch_      642
     73S        630
     74le       609
     75p        609
     76ä        607
     77ü        603
     78au       603
     79v        602
     80che      599
     81_w       596
     82d_       585
     83die      576
     84_di      572
     85m_       562
     86_die     559
     87el       548
     88_S       540
     89_der     529
     90li       527
     91_der_    523
     92si       515
     93al       514
     94ns       507
     95on       501
     96or       495
     97ti       490
     98ten      487
     99ht       486
     100die_     485
     101_die_    483
     102D        479
     103rt       478
     104nd_      476
     105_u       470
     106nt       468
     107A        466
     108in_      464
     109den      461
     110cht      447
     111und      443
     112me       440
     113_z       429
     114ung      426
     115ll       423
     116_un      421
     117_ei      419
     118_n       415
     119hr       412
     120ine      412
     121_A       408
     122_ein     405
     123ar       404
     124ra       403
     125_v       400
     126_g       400
     127as       395
     128zu       392
     129et       389
     130em       385
     131_D       380
     132eine     376
     133gen      376
     134g_       376
     135da       368
     136we       366
     137K        365
     138lt       360
     139B        354
     140_"       353
     141nde      349
     142ni       347
     143und_     345
     144E        345
     145ur       345
     146_m       342
     147ri       341
     148ha       340
     149eh       339
     150ten_     338
     151es_      336
     152_K       336
     153_und     335
     154ig       335
     155_b       335
     156hen      334
     157_und_    332
     158_au      329
     159_B       327
     160_da      325
     161_zu      324
     162_in      322
     163at       321
     164us       318
     165wi       307
     166n,       305
     167n,_      304
     168nn       304
     169te_      301
     170eit      301
     171_h       300
     172ter      299
     173M        298
     174n.       295
     175ß        294
     176ng_      289
     177sche     289
     178-        283
     179rs       282
     180den_     282
     181_si      280
     182G        280
     183im       278
     184_ge      277
     185chen     276
     186rd       273
     187_E       273
     188n._      270
     189icht     270
     190rn       268
     191uf       267
     192isch     264
     193isc      264
     194nen      263
     195_in_     262
     196_M       260
     197_er      257
     198ich_     255
     199ac       253
     200lic      252
     201_G       252
     202ber      252
     203la       251
     204vo       251
     205eb       250
     206ke       249
     207F        248
     208as_      248
     209hen_     248
     210ach      245
     211en,      244
     212ung_     243
     213lich     243
     214ste      243
     215en,_     243
     216_k       241
     217ben      241
     218_f       241
     219en.      241
     220_be      239
     221it_      239
     222L        238
     223_se      237
     224mi       236
     225ve       236
     226na       236
     227on_      236
     228P        235
     229ss       234
     230ist      234
     231ö        234
     232ht_      233
     233ru       233
     234st_      229
     235_F       229
     236ts       227
     237ab       226
     238W        226
     239ol       225
     240_eine    225
     241hi       225
     242so       224
     243em_      223
     244"_       223
     245ren      222
     246en._     221
     247chen_    221
     248R        221
     249ta       221
     250ere      220
     251ische    219
     252ers      218
     253ert      217
     254_P       217
     255tr       217
     256ed       215
     257ze       215
     258eg       215
     259ens      215
     260ür       213
     261ah       212
     262_vo      212
     263ne_      211
     264cht_     210
     265uc       209
     266_wi      209
     267nge      208
     268lle      208
     269fe       207
     270_L       207
     271ver      206
     272hl       205
     273V        204
     274ma       203
     275wa       203
     276auf      201
     277H        198
     278_W       195
     279T        195
     280nte      193
     281uch      193
     282l_       192
     283sei      192
     284nen_     190
     285u_       189
     286_den     189
     287_al      189
     288_V       188
     289t.       188
     290lte      187
     291ut       186
     292ent      184
     293sich     183
     294sic      183
     295il       183
     296ier      182
     297am       181
     298gen_     180
     299sen      179
     300fü       178
     301um       178
     302t._      177
     303f_       174
     304he_      174
     305ner      174
     306nst      174
     307ls       174
     308_sei     173
     309ro       173
     310ir       173
     311ebe      173
     312mm       173
     313ag       172
     314ern      169
     315t,_      169
     316t,       169
     317eu       169
     318ft       168
     319icht_    167
     320hre      167
     321Be       166
     322nz       165
     323nder     165
     324_T       164
     325_den_    164
     326iche     163
     327tt       163
     328zu_      162
     329and      162
     330J        161
     331rde      160
     332rei      160
     333_we      159
     334_H       159
     335ige      159
     336_Be      158
     337rte      157
     338hei      156
     339das      155
     340aus      155
     341che_     154
     342_das     154
     343_zu_     154
     344tz       154
     345_ni      153
     346das_     153
     347_R       153
     348N        153
     349des      153
     350_ve      153
     351_J       152
     352I        152
     353_das_    152
     354men      151
     355_so      151
     356_ver     151
     357_auf     150
     358ine_     150
     359_ha      150
     360rg       149
     361ind      148
     362eben     148
     363kt       147
     364mit      147
     365_an      147
     366her      146
     367Ge       146
     368Sc       145
     369_sich    145
     370U        145
     371Sch      145
     372_sic     145
     373end      145
     374Di       144
     375abe      143
     376ck       143
     377sse      142
     378ür_      142
     379ell      142
     380ik       141
     381o_       141
     382nic      141
     383nich     141
     384sa       141
     385_fü      140
     386hn       140
     387zi       140
     388no       140
     389nicht    140
     390im_      139
     391von_     139
     392von      139
     393_nic     139
     394_nich    139
     395eine_    139
     396oc       138
     397wei      138
     398io       138
     399schen    138
     400gt       138
  • xapian-omega-1.0.7a/langclass/italian.lm

    diff -u  xapian-omega-1.0.7a/langclass/italian.lm.orig
    old new  
     1_        25028
     2a        7570
     3e        6477
     4i        5481
     5o        5104
     6l        3905
     7n        3866
     8r        3502
     9t        2934
     10c        2862
     11s        2862
     12a_       2504
     13e_       2404
     14d        2004
     15i_       1749
     16o_       1679
     17u        1650
     18v        1611
     19p        1561
     20m        1414
     21_c       1325
     22,        1192
     23,_       1192
     24_s       1190
     25_d       1094
     26g        1067
     27an       925
     28er       915
     29_a       914
     30_p       895
     31la       858
     32_l       830
     33re       799
     34ar       769
     35h        762
     36no       753
     37co       726
     38va       698
     39_e       657
     40n_       656
     41on       656
     42ra       653
     43to       651
     44f        638
     45di       638
     46_i       634
     47ch       634
     48ll       633
     49l_       624
     50la_      598
     51ta       593
     52el       576
     53in       567
     54_m       558
     55en       529
     56b        528
     57ri       525
     58_co      523
     59_n       523
     60_di      522
     61li       513
     62av       507
     63al       501
     64le       494
     65ia       492
     66se       484
     67ol       479
     68_f       477
     69or       477
     70te       469
     71_e_      467
     72ve       454
     73at       449
     74de       447
     75.        443
     76ne       429
     77va_      428
     78ca       426
     79._       422
     80tt       422
     81re_      415
     82nt       415
     83io       411
     84_v       407
     85pe       405
     86z        392
     87to_      391
     88_ch      389
     89na       384
     90si       384
     91'        383
     92he       382
     93no_      379
     94ci       374
     95_la      373
     96ro       371
     97_g       370
     98st       368
     99cc       366
     100he_      362
     101di_      362
     102ma       358
     103ev       354
     104che      354
     105es       352
     106me       352
     107pa       351
     108_t       349
     109ti       348
     110_di_     347
     111ss       345
     112che_     344
     113a,_      337
     114a,       337
     115nd       335
     116o,       333
     117o,_      333
     118ell      330
     119gl       323
     120sa       322
     121il       322
     122gli      321
     123da       318
     124as       318
     125do       314
     126_che     308
     127_che_    306
     128eva      306
     129_la_     300
     130lla      298
     131le_      293
     132un       291
     133_pe      290
     134_de      288
     135q        283
     136qu       283
     137ava      280
     138po       277
     139on_      275
     140r_       273
     141li_      273
     142_b       269
     143_il      268
     144_il_     268
     145il_      268
     146lo       267
     147om       263
     148e,       263
     149e,_      263
     150ni       258
     151tr       258
     152so       255
     153ra_      253
     154os       251
     155_in      249
     156_u       248
     157per      244
     158are      243
     159et       243
     160_se      240
     161ano      239
     162si_      238
     163_ca      238
     164_qu      238
     165lla_     238
     166_q       238
     167_a_      236
     168ac       236
     169_r       234
     170ic       233
     171_no      232
     172ie       227
     173fa       227
     174hi       226
     175del      225
     176ua       222
     177_per     218
     178ce       218
     179_ma      216
     180sc       216
     181_del     215
     182mi       212
     183_un      208
     184chi      206
     185era      205
     186i,       205
     187i,_      205
     188su       203
     189and      202
     190vo       202
     191_fa      201
     192eva_     200
     193ano_     199
     194gli_     197
     195non      196
     196pi       196
     197vi       195
     198er_      195
     199_al      194
     200se_      193
     201_ne      192
     202_non     191
     203am       190
     204is       187
     205ava_     187
     206_non_    186
     207non_     186
     208in_      185
     209ent      185
     210_si      184
     211_pa      184
     212com      183
     213!        182
     214_le      182
     215_su      181
     216uo       181
     217el_      180
     218!_       180
     219l'       178
     220ue       177
     221te_      177
     222_com     177
     223are_     176
     224pr       176
     225_in_     176
     226van      172
     227mo       172
     228ta_      171
     229gn       167
     230ere      166
     231na_      166
     232tto      163
     233it       161
     234_per_    161
     235per_     161
     236é        161
     237all      160
     238ess      159
     239ut       159
     240col      158
     241acc      157
     242gi       155
     243lo_      154
     244oc       154
     245vano     153
     246io_      153
     247_av      151
     248ndo      151
     249é_       151
     250ato      149
     251ave      148
     252_st      147
     253me_      147
     254'a       146
     255ia_      144
     256con      143
     257mp       143
     258fi       142
     259ett      142
     260_si_     141
     261_pi      140
     262era_     140
     263ti_      140
     264ó        140
     265vano_    140
     266_gl      139
     267qua      139
     268ella     139
     269sta      138
     270ome      137
     271S        137
     272_gli     137
     273_S       137
     274ad       136
     275_ve      134
     276ant      134
     277ne_      134
     278ó_       133
     279sp       133
     280do_      133
     281_po      132
     282ro_      132
     283ov       132
     284_le_     131
     285ella_    130
     286sse      129
     287_con     128
     288ir       128
     289_vi      128
     290ig       127
     291_gli_    127
     292_ave     127
     293vev      127
     294un_      126
     295ot       126
     296veva     125
     297dell     125
     298que      125
     299a.       125
     300_o       125
     301a._      124
     302tu       124
     303cia      123
     304za       123
     305_que     123
     306_da      121
     307par      121
     308_pr      120
     309cch      120
     310_dell    120
     311eg       119
     312_sa      119
     313o._      119
     314o.       119
     315_col     118
     316lt       118
     317_un_     118
     318rt       118
     319ur       117
     320_vo      117
     321_me      117
     322ome_     117
     323L        116
     324ap       116
     325_L       116
     326zi       116
     327nto      116
     328og       115
     329_an      115
     330_so      115
     331em       114
     332ag       114
     333be       111
     334ni_      111
     335im       110
     336cchi     110
     337ver      110
     338lle      109
     339nz       109
     340cci      109
     341_ri      109
     342nc       108
     343_er      108
     344come_    107
     345come     107
     346aveva    107
     347ui       107
     348avev     107
     349tto_     107
     350_come    106
     351ed       106
     352P        105
     353man      105
     354_P       105
     355rs       105
     356occ      104
     357ndo_     103
     358ato_     103
     359_qua     103
     360_era     103
     361ari      102
     362ba       100
     363_mo      100
     364nel      100
     365id       99
     366men      98
     367_fi      98
     368_all     98
     369rr       97
     370_do      97
     371_avev    97
     372att      97
     373l'a      96
     374ei       96
     375zz       96
     376;        96
     377vol      95
     378pp       95
     379tra      95
     380;_       95
     381ere_     94
     382lle_     94
     383nda      94
     384utt      94
     385est      93
     386_nel     93
     387ul       92
     388ola      92
     389iv       92
     390ando     90
     391ale      90
     392lu       90
     393rn       90
     394e.       89
     395e._      89
     396ll'      89
     397tta      88
     398nte      87
     399_l'      87
     400uel      87
  • xapian-omega-1.0.7a/langclass/norwegian.lm

    diff -u  xapian-omega-1.0.7a/langclass/norwegian.lm.orig
    old new  
     1_        22970
     2e        6833
     3n        4206
     4r        3516
     5t        3112
     6a        2587
     7s        2440
     8i        2112
     9l        1901
     10o        1900
     11n_       1875
     12r_       1761
     13k        1713
     14g        1630
     15en       1615
     16m        1508
     17e_       1450
     18d        1444
     19er       1436
     20h        1306
     21t_       1300
     22_h       1180
     23_s       1148
     24er_      1105
     25v        982
     26en_      976
     27an       919
     28.        901
     29._       791
     30_.       781
     31et       770
     32g_       762
     33_._      726
     34å        725
     35u        719
     36f        709
     37p        702
     38ha       682
     39_ha      672
     40de       657
     41te       651
     42_e       621
     43et_      614
     44re       581
     45ne       565
     46_o       554
     47an_      544
     48ke       534
     49_,       522
     50,_       522
     51,        522
     52_,_      522
     53_f       519
     54_m       515
     55or       503
     56_d       483
     57_i       480
     58å_       479
     59se       476
     60m_       469
     61nn       454
     62b        449
     63me       441
     64ø        434
     65_a       413
     66st       404
     67_t       398
     68og       380
     69_v       377
     70_og      366
     71ar       364
     72el       364
     73le       361
     74i_       356
     75om       353
     76og_      351
     77_og_     351
     78li       350
     79_k       346
     80_de      339
     81ge       339
     82han      337
     83y        333
     84_han     332
     85ve       330
     86kk       323
     87in       311
     88_b       307
     89fo       301
     90j        301
     91il       298
     92_H       291
     93H        291
     94han_     288
     95_han_    288
     96for      287
     97ik       281
     98l_       278
     99kke      277
     100tt       276
     101ti       270
     102ne_      270
     103d_       269
     104ed       269
     105om_      268
     106nne      266
     107_me      264
     108ng       257
     109_er      257
     110_fo      256
     111eg       256
     112_se      256
     113_g       256
     114un       255
     115ig       255
     116sk       253
     117_er_     252
     118_p       252
     119_for     250
     120ke_      249
     121_n       238
     122_l       233
     123al       232
     124ør       222
     125s_       221
     126ar_      215
     127at       214
     128_en      211
     129he       211
     130pe       209
     131_i_      208
     132am       200
     133es       200
     134si       200
     135enn      197
     136det      195
     137or_      193
     138vi       190
     139ns       189
     140ikk      188
     141det_     185
     142so       185
     143un_      183
     144il_      181
     145nd       181
     146te_      181
     147"_       180
     148"        180
     149_"_      180
     150_"       180
     151em       179
     152_ti      176
     153kke_     176
     154lig      174
     155ten      174
     156Ha       173
     157_Ha      173
     158re_      172
     159ikke     168
     160je       165
     161Han      165
     162ter      165
     163_Han     165
     164eg_      164
     165på       164
     166_på      163
     167_si      163
     168_å       163
     169_Han_    162
     170Han_     162
     171på_      162
     172_på_     161
     173til      160
     174som      160
     175_so      159
     176den      159
     177_det     157
     178ed_      155
     179ll       155
     180_ik      155
     181rt       155
     182som_     153
     183ra       152
     184a_       152
     185har      152
     186nt       152
     187de_      152
     188tr       151
     189v_       151
     190_har     151
     191ka       151
     192ig_      150
     193_som     150
     194for_     150
     195_som_    150
     196_en_     149
     197hu       149
     198_ikk     148
     199_ham     148
     200ham      148
     201ste      148
     202_det_    148
     203_ikke    148
     204enne     148
     205ikke_    148
     206har_     147
     207nge      147
     208D        147
     209_har_    147
     210_D       147
     211am_      147
     212ere      147
     213ham_     146
     214_ham_    146
     215it       145
     216_he      144
     217_til     144
     218av       143
     219va       140
     220men      140
     221år       140
     222_ve      140
     223_hu      139
     224ta       139
     225pen      137
     226sp       137
     227_st      135
     228tte      135
     229la       135
     230_E       133
     231E        133
     232den_     130
     233is       130
     234til_     128
     235_r       128
     236tt_      128
     237år_      127
     238k_       124
     239_å_      124
     240ri       124
     241_til_    124
     242at_      123
     243ene      123
     244seg      123
     245_av      123
     246med      122
     247_vi      122
     248_seg     122
     249seg_     121
     250_seg_    121
     251_for_    120
     252nne_     120
     253ut       120
     254_u       119
     255mm       119
     256mme      119
     257De       118
     258_De      118
     259_at      118
     260_hun     117
     261hun      117
     262ko       117
     263be       116
     264_at_     115
     265ter_     115
     266pen_     114
     267ker      113
     268hun_     113
     269_hun_    113
     270on       111
     271lig_     111
     272..       110
     273hen      107
     274_med     107
     275rs       106
     276ser      106
     277med_     105
     278_men     104
     279_hen     104
     280_sk      104
     281_med_    104
     282ak       103
     283ans      103
     284ker_     102
     285av_      101
     286_ka      101
     287no       100
     288ver      100
     289ler      99
     290J        99
     291spe      99
     292ten_     99
     293_J       99
     294ene_     98
     295ld       98
     296hv       98
     297_av_     98
     298ger      97
     299ni       96
     300gen      96
     301ie       95
     302ser_     94
     303_et      94
     304spen     94
     305_hv      94
     306men_     93
     307Espe     92
     308Es       92
     309_Esp     92
     310_Es      92
     311_Espe    92
     312Esp      92
     313_al      92
     314Espen    92
     315lle      89
     316rem      89
     317id       89
     318fø       89
     319ei       88
     320inn      88
     321rd       88
     322enne_    88
     323_henn    87
     324henne    87
     325henn     87
     326kt       86
     327spen_    86
     328_om      86
     329ler_     86
     330da       86
     331ett      86
     332itt      86
     333bl       85
     334to       85
     335_Je      84
     336ger_     84
     337Je       84
     338æ        84
     339ma       83
     340ing      83
     341ær       83
     342ns_      83
     343eli      82
     344ang      82
     345_be      82
     346så       82
     347_den     82
     348pp       81
     349rk       81
     350dr       81
     351oe       81
     352ss       81
     353_fø      80
     354ek       80
     355le_      79
     356_no      79
     357kj       78
     358elig     78
     359nes      78
     360nn_      77
     361nk       77
     362fr       77
     363sl       77
     364my       77
     365kan      77
     366så_      76
     367as       76
     368_om_     76
     369_kan     75
     370_ko      75
     371_bl      73
     372Hu       73
     373nen      73
     374_Hu      73
     375eng      73
     376gj       73
     377rt_      72
     378ge_      72
     379ba       72
     380lv       71
     381rer      71
     382nde      71
     383ls       70
     384lo       70
     385ga       70
     386_noe     70
     387ro       70
     388_den_    70
     389_ut      70
     390noe      70
     391Hun      69
     392Hun_     69
     393_in      69
     394_Hun     69
     395_Hun_    69
     396ren      68
     397øre      68
     398ør_      68
     399sen      68
     400sa       67
  • xapian-omega-1.0.7a/langclass/portuguese.lm

    diff -u  xapian-omega-1.0.7a/langclass/portuguese.lm.orig
    old new  
     1_        35328
     2a        10423
     3e        10132
     4o        8919
     5s        6795
     6r        6033
     7i        5443
     8n        4588
     9d        4531
     10t        4217
     11m        3476
     12u        3404
     13o_       3240
     14a_       3029
     15e_       2879
     16c        2756
     17s_       2461
     18_d       2379
     19l        2307
     20p        2242
     21_a       1753
     22de       1751
     23,        1660
     24,_       1658
     25_e       1454
     26es       1447
     27os       1412
     28ra       1343
     29_p       1328
     30nt       1302
     31_de      1248
     32do       1215
     33en       1176
     34re       1150
     35as       1123
     36v        1115
     37m_       1113
     38de_      1096
     39er       1082
     40g        1053
     41_c       1047
     42da       1008
     43co       986
     44os_      975
     45te       974
     46ar       950
     47or       943
     48q        938
     49qu       938
     50_s       908
     51ta       902
     52_de_     901
     53_o       858
     54se       841
     55ue       831
     56to       799
     57ad       777
     58.        761
     59que      752
     60em       751
     61an       748
     62f        746
     63r_       745
     64b        732
     65st       718
     66is       716
     67al       712
     68_qu      706
     69_q       706
     70in       701
     71as_      696
     72ã        695
     73do_      685
     74ent      678
     75ão       677
     76_n       671
     77_co      660
     78_a_      654
     79_m       646
     80on       645
     81ç        624
     82ri       623
     83_que     619
     84ma       602
     85po       581
     86ia       580
     87ão_      575
     88._       573
     89na       572
     90me       564
     91ro       554
     92_t       544
     93pa       533
     94da_      528
     95h        523
     96ue_      515
     97ca       511
     98que_     509
     99nte      503
     100no       499
     101tr       498
     102am       496
     103em_      491
     104_que_    487
     105_se      485
     106om       471
     107io       460
     108_do      459
     109ti       448
     110ci       445
     111_da      444
     112nd       442
     113ei       435
     114ra_      435
     115pr       427
     116_r       423
     117_e_      420
     118_f       420
     119ss       412
     120es_      412
     121el       407
     122id       406
     123_o_      399
     124_pa      390
     125um       379
     126pe       378
     127_po      376
     128la       374
     129ir       371
     130á        371
     131ic       362
     132di       362
     133li       359
     134é        359
     135_re      353
     136ve       353
     137mo       350
     138s,       349
     139s,_      349
     140ou       347
     141com      340
     142sa       338
     143si       338
     144men      337
     145rt       331
     146_i       330
     147con      330
     148o,       327
     149_da_     326
     150o,_      326
     151se_      325
     152_com     325
     153ado      323
     154to_      322
     155ai       322
     156it       320
     157A        319
     158ec       316
     159dos      316
     160_em      312
     161ção      310
     162aç       310
     163çã       310
     164ara      305
     165so       299
     166tu       299
     167res      297
     168im       296
     169_pr      295
     170mi       293
     171ua       292
     172nto      291
     173ment     290
     174í        290
     175par      288
     176_do_     287
     177ce       286
     178est      286
     179u_       284
     180ente     284
     181S        278
     182l_       278
     183_u       278
     184"        276
     185ni       276
     186z        274
     187sta      273
     188nc       272
     189_em_     270
     190P        269
     191ção_     267
     192_v       267
     193at       267
     194dos_     266
     195_es      262
     196«        259
     197_«       259
     198te_      258
     199»        257
     200va       255
     201le       252
     202ur       252
     203_um      252
     204vi       251
     205_par     250
     206a,       247
     207a,_      247
     208_con     247
     209ant      242
     210lo       240
     211ia_      240
     212gu       237
     213ar_      235
     214ac       235
     215e,_      234
     216e,       234
     217no_      232
     218eg       232
     219il       232
     220ns       232
     221er_      231
     222_ma      230
     223por      230
     224_in      228
     225_l       226
     226ó        225
     227ont      224
     228_no      223
     229_P       222
     230tra      220
     231E        219
     232ida      218
     233is_      217
     234ol       216
     235açã      215
     236ter      215
     237ação     215
     238_A       211
     239un       211
     240-        210
     241_te      210
     242or_      209
     243ma_      208
     244_pe      208
     245ara_     208
     246C        206
     247ist      202
     248para     202
     249nta      201
     250ais      201
     251ut       198
     252nte_     198
     253j        197
     254dad      196
     255_na      195
     256am_      195
     257ade      193
     258ica      191
     259x        190
     260al_      189
     261O        188
     262des      187
     263_para    187
     264ada      187
     265nh       186
     266_se_     186
     267mp       185
     268ndo      184
     269R        183
     270_por     181
     271ação_    181
     272para_    179
     273eir      177
     274ui       177
     275vo       177
     276ou_      177
     277ta_      177
     278M        176
     279ria      175
     280tos      175
     281rr       174
     282D        174
     283io_      174
     284br       174
     285_di      173
     286õ        173
     287õe       173
     288fo       173
     289I        172
     290ões      172
     291_C       171
     292mo_      171
     293ov       170
     294pro      169
     295_os_     169
     296_os      169
     297das      167
     298iv       166
     299uma      165
     300gr       165
     301su       164
     302fi       164
     303um_      162
     304na_      162
     305ga       162
     306ais_     161
     307_S       161
     308lh       159
     309ort      159
     310cia      158
     311..       157
     312_est     156
     313cont     156
     314ig       155
     315á_       154
     316ran      154
     317ça       154
     318om_      153
     319_en      152
     320dade     152
     321_as      152
     322ho       152
     323ntr      151
     324nto_     151
     325fe       150
     326N        149
     327das_     149
     328uma_     149
     329ess      149
     330é_       148
     331ndo_     147
     332ob       147
     333»_       147
     334ul       146
     335ente_    146
     336go       146
     337ento     144
     338ver      144
     339_des     144
     340gi       144
     341ha       142
     342cu       142
     343idad     142
     344av       141
     345ões_     141
     346_pro     141
     347ura      141
     348ap       139
     349_com_    139
     350_ca      139
     351com_     139
     352ao       139
     353ne       138
     354od       138
     355_"       137
     356_M       137
     357pre      137
     358ras      136
     359_me      136
     360_ao      136
     361_no_     134
     362oc       134
     363str      133
     364tes      133
     365_b       133
     366and      133
     367_g       133
     368ro_      133
     369omo      133
     370_dos     132
     371_fo      132
     372_dos_    132
     373rn       132
     374mento    131
     375ito      131
     376ev       131
     377rio      130
     378ass      130
     379eu       130
     380be       128
     381os,      128
     382os,_     128
     383sp       127
     384_uma     127
     385ep       126
     386tad      125
     387s.       125
     388_uma_    125
     389_E       125
     390idade    124
     391_um_     124
     392nã       124
     393não      124
     394ct       123
     395ram      123
     396ado_     123
     397ela      123
     398omo_     121
     399iz       121
     400_an      121
  • xapian-omega-1.0.7a/langclass/russian-iso8859_5.lm

    diff -u  xapian-omega-1.0.7a/langclass/russian-iso8859_5.lm.orig
    old new  
     1_        76249
     2Þ        19732
     3Õ        16714
     4Р       14389
     5Ø        13942
     6â        13160
     7Ý        12444
     8á        9867
     9à        8461
     10Ò        7895
     11Û        7330
     12Ú        6498
     13Ü        5935
     14.        5725
     15ã        5287
     16Ô        5019
     17ß        4877
     18ï        4083
     19,        3899
     20,_       3878
     21ë        3656
     22ì        3376
     23Ø_       3167
     24_ß       3144
     25Õ_       3135
     26Þ_       3098
     27-        3019
     28×        2983
     29_Ò       2952
     30._       2930
     31_á       2919
     32ç        2887
     33Ó        2876
     34Ñ        2797
     35áâ       2672
     36_Ý       2631
     37âÞ       2585
     38..       2407
     39_Ø       2316
     40ÝÞ       2300
     41-_       2294
     42Ù        2281
     43Ð_       2249
     44ÝР      2057
     45ï_       2029
     46ÞÒ       1981
     47ÝØ       1950
     48_â       1944
     49å        1874
     50ÕÝ       1856
     51_Þ       1774
     52...      1744
     53àР      1709
     54ÝÕ       1685
     55ßÞ       1636
     56_-       1625
     57ÚÞ       1616
     58âÕ       1595
     59àÞ       1584
     60_Ú       1558
     61_-_      1531
     62Ù_       1521
     63Õâ       1518
     64Ö        1509
     65_Ø_      1454
     66âР      1433
     67ÐÝ       1419
     68Õà       1396
     69Þâ       1389
     70ì_       1381
     71ÓÞ       1375
     72ÐÛ       1370
     73_ßÞ      1364
     74àÕ       1345
     75ÚР      1338
     76ßà       1337
     77ÒР      1329
     78âØ       1306
     79ÛØ       1300
     80_Ô       1297
     81_Ü       1290
     82Õá       1284
     83ÒÞ       1271
     84çÕ       1256
     85Þà       1245
     86....     1232
     87âì       1219
     88Þá       1212
     89è        1192
     90î        1187
     91Ò_       1168
     92.....    1167
     93ÞÝ       1147
     94ÐÚ       1144
     95æ        1109
     96ÞÓ       1101
     97ÛÞ       1099
     98â_       1093
     99àØ       1076
     100Ü_       1074
     101_ßà      1063
     102ÞÛ       1062
     103Ûì       1045
     104_ÝÕ      1034
     105ÕÛ       1029
     106_Ñ       1026
     107ØÝ       1000
     108ÞÔ       998
     109ÞÜ       996
     110ÜÕ       993
     111ë_       975
     112ÒÕ       968
     113áÚ       968
     114_ÝР     966
     115ÔÕ       946
     116Ýë       943
     117_à       931
     118_ç       923
     119Ðâ       913
     120ÕÜ       910
     121ã_       907
     122×Р      898
     123å_       898
     124ÛÕ       889
     125âÞ_      881
     126Øâ       878
     127ÞÙ       875
     128áÕ       862
     129_Ò_      833
     130_×       816
     131ÚØ       816
     132âà       807
     133"        786
     134âì_      769
     135ÕÔ       767
     136ÝÕ_      762
     137áï       754
     138ÛР      748
     139ÞÑ       747
     140ÜÞ       741
     141ÔР      730
     142ÓÞ_      715
     143Ú_       713
     144Øá       711
     145_ã       702
     146ÞÙ_      697
     147ØÛ       694
     148ÜР      692
     149ÝÝ       687
     150ÔÞ       662
     151Ðá       660
     152ÐÜ       656
     153Øï       649
     154ÖÕ       646
     155Ð×       638
     156áÞ       629
     157ÝÐ_      619
     158_Ó       615
     159ÜØ       612
     160_Р      610
     161í        609
     162Òá       608
     163.._      605
     164Òë       604
     165ÞÓÞ      604
     166ØÜ       604
     167_ÚÞ      600
     168ÐÒ       597
     169áÛ       594
     170ØÕ       593
     171_ÝÕ_     589
     172_Õ       587
     173_âÕ      583
     174âã       583
     175Øç       583
     176àã       575
     177Þáâ      571
     178é        571
     179Û_       570
     180_í       569
     181_ï       559
     182°        556
     183ÕÝØ      544
     184Ø×       540
     185ÕÚ       536
     186ÞÒР     533
     187ä        525
     188:        519
     189²        513
     190ÐÝØ      511
     191_Òá      510
     192ØÙ       510
     193½        508
     194_ÚР     508
     195!        503
     196?        501
     197ÔØ       498
     198ÛØ_      489
     199¿        488
     200ßàÞ      486
     201_àР     485
     202áØ       484
     203Øà       484
     204_áâ      484
     205ìÝ       484
     206ÛìÝ      484
     207:_       484
     208áï_      480
     209_×Р     477
     210ÑÞ       470
     211_Û       469
     212..._     465
     213Ñë       464
     214Øå       464
     215¸        462
     216ÕÓ       461
     217âÒ       459
     218ÝØï      458
     219ïâ       454
     220çâ       454
     221íâ       445
     222çÕá      442
     223_âÞ      442
     224Øï_      441
     225ØÚ       440
     226ÒØ       437
     227ÐÚ_      436
     228áâР     436
     229ÞÓÞ_     435
     230_²       434
     231ØçÕ      433
     232æØ       431
     233çâÞ      431
     234ëå       429
     235_íâ      429
     236Á        425
     237_çâ      424
     238_°       424
     239î_       423
     240ßÕ       422
     241Ýï       422
     242_çâÞ     422
     243Ûï       419
     244ÒáÕ      418
     245Ôã       418
     246ÕáÚ      415
     247Ýâ       413
     248ÚÐÚ      411
     249áâÞ      411
     250_Òë      409
     251Ýã       408
     252âá       406
     253Ý_       406
     254_¿       401
     255¼        401
     256ÝÞ_      399
     257_ßàÞ     398
     258_.       397
     259àÞÒ      396
     260æÕ       396
     261Úâ       394
     262Õáâ      394
     263_"       393
     264èÕ       393
     265á_       392
     266_Þâ      392
     267¾        391
     268_ÝÐ_     391
     269àÕÔ      391
     270çÕáÚ     390
     271Þ-       390
     272ÒÐÝ      388
     273Ð,       385
     274ÐÔ       384
     275Ðï       384
     276_ï_      383
     277Ð,_      383
     278âë       383
     279?_       383
     280_ÞÑ      380
     281_ÒáÕ     380
     282_âР     378
     283_ÚÐÚ     376
     284åÞ       375
     285âÐÚ      375
     286ÐÛì      374
     287ÞÖ       373
     288ëå_      372
     289ÞÒÞ      372
     290ØÒ       371
     291_ÒÞ      369
     292Üã       369
     293_½       369
     294ÕÙ       368
     295ßàÕ      368
     296×Ý       366
     297ØçÕá     365
     298ßØ       365
     299ÕÓÞ      362
     300_áÞ      360
     301ÞÕ       360
     302!_       360
     303Ðâì      360
     304áâØ      358
     305Øå_      358
     306âÝ       358
     307ÜÕÝ      358
     308âáï      356
     309ØÕ_      356
     310ØçÕáÚ    354
     311ÑÕ       352
     312_Ñë      352
     313áâà      349
     314Úã       349
     315_ÜÞ      348
     316Õâ_      348
     317        346
     318_ÜÕ      344
     319ÕÒ       344
     320ßàØ      343
     321çØ       342
     322ÜÝ       341
     323ÝØï_     339
     324Ðà       338
     325ÝÝÞ      337
     326ÞÒÐÝ     334
     327Úá       334
     328ãà       328
     329_çÕ      328
     330ÞÛì      328
     331ãâ       327
     332çâÞ_     324
     333ÞÜ_      323
     334Þß       323
     335àÜ       322
     336°_       322
     337_çâÞ_    322
     338íâÞ      322
     339Þç       321
     340Þ,_      320
     341Þ,       320
     342áÚÞ      319
     343ÚÞÝ      319
     344ÛÞÒ      318
     345ëÙ       318
     346ãá       317
     347Þâ_      316
     348ØàÞ      315
     349áâÒ      314
     350Ø,       314
     351ØÙ_      313
     352áá       313
     353Ø,_      313
     354âÞÜ      312
     355ÐÕ       312
     356ÕÝÝ      311
     357Õ×       311
     358ÝÞÙ      311
     359_íâÞ     310
     360º        309
     361áР      309
     362àÐ×      309
     363Õß       309
     364_ÔÞ      308
     365ÞÛÞ      308
     366áâì      308
     367ãÔ       307
     368ÔÕÛ      307
     369_¸       305
     370ÐÑ       305
     371áì       303
     372ÐÛìÝ     302
     373ÞÚ       300
     374áÚØ      300
     375Ýëå      300
     376_ßàØ     298
     377çР      297
     378_Ö       297
     379Õ,       297
     380Õ,_      297
     381_°_      296
     382_ÝØ      296
     383_._      295
     384âáï_     295
     385ØØ       294
     386×ÝР     293
     387ï,       292
     388ï,_      292
     389_ßàÕ     291
     390_Á       290
     391ÝÞÙ_     290
     392Ðï_      288
     393_¾       288
     394ÐÛØ      286
     395ÖÕ_      285
     396áß       285
     397Øáâ      285
     398Ýëå_     285
     399×_       283
     400_¼       283
  • xapian-omega-1.0.7a/langclass/russian-koi8_r.lm

    diff -u  xapian-omega-1.0.7a/langclass/russian-koi8_r.lm.orig
    old new  
     1_        28256
     2Ï        8957
     3Å        7206
     4Á        6230
     5É        5966
     6Ô        5385
     7Π       5338
     8Ó        4464
     9Ò        3984
     10×        3504
     11Ì        3335
     12Ë        2700
     13Í        2441
     14Р       2324
     15Ä        2230
     16Õ        1840
     17Ñ        1562
     18Ù        1540
     19_Р      1505
     20,        1492
     21,_       1492
     22Ø        1437
     23Ï_       1423
     24Å_       1335
     25ÓÔ       1286
     26Ú        1283
     27Ç        1233
     28        1232
     29É_       1193
     30ÔÏ       1175
     31_Ó       1146
     32Þ        1143
     33_×       1118
     34_Π      1062
     35Á_       1032
     36.        999
     37ÎÏ       996
     38ÅΠ      920
     39Ï×       911
     40._       908
     41Ê        907
     42ÎÁ       893
     43ÒÏ       869
     44ÒÁ       851
     45ÎÉ       844
     46Ñ_       808
     47ÐÒ       786
     48ÐÏ       775
     49ËÏ       768
     50Ö        763
     51_Ï       735
     52ÎÅ       730
     53ÏÓ       723
     54_É       721
     55È        696
     56ÒÅ       667
     57_ÐÒ      629
     58_Ë       626
     59×_       621
     60ÔÅ       620
     61Ø_       616
     62×Ï       599
     63Ê_       597
     64_ÐÏ      592
     65ÇÏ       589
     66ÅÒ       584
     67ÌÉ       579
     68ÔÁ       576
     69ÅÔ       566
     70Í_       562
     71ÅÓ       548
     72ÏÒ       545
     73ÅÌ       545
     74ÁÌ       544
     75×Á       535
     76ÔØ       533
     77ÌÅ       528
     78_Ä       522
     79ÏÍ       520
     80ËÁ       520
     81À        518
     82Û        510
     83_Ô       507
     84ÏÔ       502
     85ÏÌ       500
     86ÁΠ      498
     87ÌØ       486
     88ÏÄ       476
     89ÁÔ       475
     90ÔÉ       471
     91ÉÔ       458
     92ÏΠ      457
     93ÏÇ       450
     94à       450
     95ÌÏ       449
     96Ô_       448
     97_ÎÁ      447
     98ÎÙ       443
     99ÄÅ       442
     100_Í       438
     101ÌÁ       431
     102_×_      430
     103ÓË       428
     104_ÎÅ      424
     105ÒÉ       400
     106ÅÍ       396
     107_       392
     108_Þ       388
     109ÞÅ       388
     110ÁË       388
     111_É_      385
     112_Ò       382
     113ÔÏ_      381
     114ÉΠ      380
     115ÍÅ       374
     116ÄÁ       362
     117Ù_       361
     118×Å       350
     119ÔØ_      348
     120ÐÒÏ      347
     121ÏÊ       346
     122ÚÁ       338
     123È_       336
     124ÁÓ       335
     125Ï       328
     126ÓÑ       326
     127ÉÍ       323
     128ÔÒ       321
     129ÎÁ_      321
     130ÓÏ       320
     131ÅÄ       320
     132ÏÓÔ      318
     133ÉÅ       318
     134ÍÏ       317
     135ÎΠ      316
     136ÓÅ       314
     137-        314
     138Á×       309
     139ÖÅ       308
     140Õ_       307
     141ËÉ       306
     142ÎÅ_      305
     143ÇÏ_      302
     144_Ú       300
     145ÉÌ       295
     146_ÐÒÏ     291
     147Ý        289
     148Ô×       288
     149ÉÓ       285
     150_Õ       275
     151_ËÏ      274
     152ÅÎÉ      274
     153Ü        273
     154ÎÏ_      272
     155ÉÒ       271
     156_Ç       271
     157ÁÚ       267
     158ÁÒ       266
     159ÄÉ       265
     160ÏÊ_      264
     161ÏÇÏ      263
     162ÁÍ       260
     163ÐÅ       258
     164×Ù       255
     165ÍÉ       254
     166ÄÏ       254
     167ÓÔ×      247
     168ÉÚ       246
     169ÃÉ       246
     170î        244
     171Æ        240
     172_Ü       239
     173_Á       239
     174Ë_       238
     175ó        237
     176ÅÓÔ      237
     177_ÎÅ_     236
     178ÂÙ       234
     179ÉÑ       234
     180ÒÕ       229
     181ÅË       228
     182ÓÉ       226
     183ÔÅÌ      224
     184ÉË       224
     185ÌÉ_      222
     186ÅÊ       222
     187ÓÑ_      222
     188ÎÔ       220
     189ØΠ      218
     190ÞÔ       216
     191ÌØΠ     216
     192ÏÅ       214
     193ÍÁ       213
     194_ÚÁ      211
     195Ï×Á      211
     196ÂÏ       210
     197_Ì       210
     198ÞÁ       209
     199_î       208
     200ÓÌ       205
     201ÞÔÏ      204
     202_ÞÔ      204
     203ÅÔ_      203
     204_ÞÔÏ     203
     205ÜÔ       202
     206Ó_       202
     207×É       201
     208ÁÑ       199
     209ÅÎΠ     199
     210ÔÏÒ      199
     211_ÎÁ_     199
     212ÓÔÁ      198
     213ÏÖ       198
     214ÉÅ_      197
     215_ó       197
     216_ÓÏ      195
     217ÐÒÉ      194
     218ËÔ       193
     219Ì_       193
     220×Ó       191
     221ÏÍ_      190
     222ÏÇÏ_     187
     223_Ö       187
     224ÅÇ       186
     225_ÔÏ      186
     226ÁÄ       186
     227_ÒÁ      185
     228_ÜÔ      184
     229_ËÁ      184
     230ÓÔÉ      183
     231_Å       182
     232Å×       182
     233ÔÓ       181
     234_ÓÔ      180
     235ÌÑ       180
     236ÔΠ      180
     237ÓР      173
     238ÉÉ       172
     239ÏÞ       172
     240À_       172
     241ÐÒÅ      172
     242ÏË       172
     243ÁÔØ      171
     244ÂÉ       171
     245ÛÅ       170
     246ÁÅ       169
     247á        169
     248ÏÒÏ      168
     249ÙÈ       167
     250Ï×Ï      166
     251ÏÌØ      166
     252ÁÎÉ      165
     253ÞÔÏ_     164
     254_ÞÔÏ_    163
     255÷        163
     256ÁÑ_      163
     257ÉÈ       162
     258Ï,_      160
     259Ï,       160
     260ÓÓ       160
     261ÅÚ       159
     262ÎÉÅ      158
     263ÚΠ      157
     264ÜÔÏ      157
     265ÄΠ      156
     266ÒÏ×      156
     267ð        155
     268Á,       155
     269ÓËÏ      155
     270_×Ï      155
     271Á,_      155
     272_ÂÙ      154
     273ÙÅ       154
     274ÝÅ       154
     275_Ï      154
     276É,_      153
     277É,       153
     278ÎÎÏ      152
     279_ÐÒÉ     151
     280ÔÙ       150
     281ÓÔÏ      150
     282ÉÑ_      150
     283ÍÕ       150
     284É×       150
     285_-       149
     286ÒÅÄ      148
     287ÉÔÅ      147
     288_ÜÔÏ     146
     289ÍÅΠ     146
     290ÏР      146
     291_ÐÒÅ     145
     292€        145
     293ÉÊ       145
     294ÅÌØ      145
     295_÷       144
     296_Ó_      144
     297ÉÞ       144
     298_€_      144
     299_€       144
     300€_       144
     301ÈÏ       143
     302ÅÇÏ      143
     303ÑÔ       142
     304ÔÓÑ      142
     305ÐÅÒ      142
     306ÙÊ       142
     307ÐÁ       141
     308ÏÔÏ      140
     309-_       140
     310ÁР      139
     311ÏÚ       139
     312ÓËÉ      138
     313ÙÈ_      138
     314ï        137
     315ÓÁ       137
     316ÙÅ_      137
     317_ð       136
     318Å,       136
     319Å,_      136
     320ÒÙ       136
     321Î_       135
     322_á       135
     323ÇÉ       134
     324_×Ù      134
     325ÓÔØ      134
     326ÁÓÔ      133
     327ÖÅ_      133
     328ÞÉ       133
     329ÎÉÑ      133
     330ÕÔ       133
     331ÁÌÉ      132
     332_-_      131
     333ËÕ       131
     334ÓØ       131
     335_ÄÏ      129
     336ÄÕ       129
     337ÒÁÚ      129
     338ÖΠ      129
     339ÁÅÔ      129
     340_ÍÏ      127
     341ÖÉ       127
     342_ÄÅ      127
     343ÓÔÒ      127
     344ØÎÏ      126
     345ÔÕ       126
     346_×Ó      126
     347ÌØÎÏ     126
     348ÌÅΠ     125
     349ÁÌØ      125
     350Ï×_      124
     351×Ì       123
     352É       123
     353ÁË_      123
     354_ÐÅ      123
     355ÔÅÌØ     123
     356Ú_       122
     357×Π      122
     358ÁÀ       122
     359ÅÎÔ      121
     360ÐÏÌ      121
     361ÉÈ_      121
     362ÙÊ_      121
     363ÓΠ      121
     364ÎÏÇ      121
     365ÃÅ       120
     366_ÏÔ      120
     367ÅÍ_      119
     368ÉÏ       119
     369_ÔÅ      118
     370ËÁË      118
     371_ÎÏ      117
     372ÉÉ_      117
     373ÉÔØ      117
     374ë        116
     375_ÉÚ      116
     376ÕÓ       116
     377ÎÏÓ      115
     378ÂÅ       115
     379ÕÄ       115
     380ÅÒÅ      114
     381ÂÌ       114
     382ÉÔÅÌ     113
     383ÅÇÏ_     113
     384ÙÍ       113
     385Á       113
     386ÎØ       113
     387ÎÏÊ      112
     388ÎÉÅ_     112
     389_Æ       112
     390ÒÏÓ      111
     391ËÒ       111
     392_ËÁË     111
     393ÛÉ       111
     394Í,       111
     395ÎÏ×      111
     396Í,_      111
     397ÔÏÍ      110
     398ÅÅ       110
     399ÔÏ×      109
     400Ó×       109
  • xapian-omega-1.0.7a/langclass/russian-windows1251.lm

    diff -u  xapian-omega-1.0.7a/langclass/russian-windows1251.lm.orig
    old new  
     1_        21836
     2î        5818
     3à        4506
     4å        4258
     5è        3769
     6ò        3394
     7í        3254
     8ñ        2594
     9ë        2470
     10ð        2346
     11â        2227
     12ê        1798
     13ì        1709
     14ó        1673
     15ä        1638
     16ï        1377
     17,        1187
     18,_       1172
     19î_       1160
     20ÿ        1059
     21ü        1024
     22û        1006
     23å_       966
     24á        945
     25_ï       937
     26ç        910
     27_í       907
     28è_       896
     29òî       878
     30ã        856
     31_ñ       828
     32_â       818
     33à_       801
     34÷        795
     35.        789
     36._       761
     37ñò       655
     38íå       617
     39_è       616
     40íà       575
     41ø        568
     42é        565
     43ïî       549
     44ðà       526
     45íî       524
     46ÿ_       522
     47_ò       521
     48_î       497
     49_ä       496
     50æ        484
     51_ïî      477
     52_ê       477
     53ãî       472
     54àë       470
     55ü_       461
     56íè       456
     57îâ       454
     58êî       452
     59ðî       432
     60êà       431
     61ëè       425
     62õ        413
     63òà       403
     64åí       402
     65_ì       396
     66_á       396
     67âî       395
     68îë       388
     69òî_      384
     70é_       383
     71_íå      378
     72_è_      375
     73îð       369
     74âà       367
     75_íà      365
     76ì_       364
     77îì       363
     78ïð       357
     79ó_       357
     80åë       353
     81åð       352
     82ëà       350
     83èò       344
     84îñ       344
     85ë_       343
     86òü       338
     87äå       337
     88ëî       334
     89ðè       330
     90ðå       328
     91èë       326
     92àê       326
     93îò       323
     94-        322
     95îí       320
     96åò       317
     97þ        312
     98àí       308
     99âå       308
     100â_       302
     101_÷       299
     102ò_       296
     103çà       292
     104íå_      292
     105òå       291
     106äà       291
     107_ç       291
     108îä       286
     109àð       283
     110àò       283
     111_ïð      274
     112åñ       264
     113ìî       263
     114û_       260
     115îã       253
     116_-       245
     117_ó       245
     118ê_       244
     119îá       240
     120ãî_      238
     121ñÿ       235
     122_íå_     235
     123ìå       233
     124ëü       229
     125-_       225
     126ñê       219
     127_â_      217
     128åì       217
     129íû       215
     130îé       215
     131ñå       211
     132áû       211
     133êè       211
     134÷ò       209
     135òü_      209
     136÷å       208
     137_ã       206
     138Í        206
     139äî       205
     140ö        205
     141÷òî      203
     142èí       203
     143àñ       202
     144_-_      202
     145_÷ò      199
     146_÷òî     199
     147òè       197
     148àâ       197
     149íà_      197
     150_å       195
     151åä       192
     152_ð       191
     153æå       190
     154àì       190
     155åã       188
     156àç       188
     157òð       185
     158_òî      184
     159_Í       183
     160èì       182
     161_çà      181
     162äè       175
     163        174
     164_êî      172
     165ëå       170
     166_       169
     167îé_      168
     168!        168
     169÷òî_     165
     170ìó       165
     171íî_      164
     172èñ       164
     173í_       164
     174ìè       163
     175ñòà      163
     176ù        162
     177_÷òî_    162
     178_áû      159
     179ìà       158
     180ðó       157
     181âû       156
     182âè       154
     183âñ       154
     184åãî      153
     185èê       153
     186èç       153
     187ñü       153
     188àø       152
     189ûë       150
     190_íà_     149
     191ñ_       148
     192òâ       148
     193_ñò      146
     194ñÿ_      146
     195ëè_      146
     196_ÿ       144
     197îãî      143
     198øå       141
     199õ_       141
     200àê_      141
     201!_       139
     202ñî       139
     203êó       139
     204áî       137
     205ïðî      136
     206àòü      136
     207åãî_     135
     208_êà      134
     209_ìî      131
     210èå       131
     211îñò      130
     212îì_      129
     213î,       128
     214_ãî      128
     215î,_      127
     216èâ       127
     217ñë       126
     218óò       126
     219_òà      126
     220íí       125
     221àä       125
     222Ñ        124
     223íó       123
     224î÷       122
     225_âû      122
     226_âñ      121
     227_îí      120
     228áûë      120
     229ïà       120
     230óä       120
     231_Ñ       119
     232ïðè      119
     233îâî      119
     234õî       118
     235ý        117
     236_áûë     117
     237è,       115
     238åé       115
     239_äî      115
     240àë_      114
     241_æ       114
     242è,_      114
     243_à       113
     244_ý       113
     245îå       112
     246åñò      112
     247îðî      110
     248çí       110
     249_äå      110
     250øè       109
     251èä       109
     252ñòî      109
     253_ïðî     109
     254_âî      108
     255àëè      108
     256íÿ       107
     257øà       107
     258ýò       107
     259îæ       106
     260à,       106
     261Ï        106
     262ûé       105
     263îëü      105
     264óñ       105
     265_ýò      105
     266_ïðè     104
     267èõ       104
     268ñü_      104
     269ñè       104
     270îï       104
     271Ì        103
     272à,_      103
     273àÿ       103
     274åç       102
     275äåë      102
     276_ðà      102
     277_Ï       101
     278îâà      101
     279óæ       101
     280âàë      101
     281þ_       101
     282êàê      100
     283_ÿ_      100
     284ó,       100
     285æå_      100
     286ñòâ      100
     287äí       100
     288÷è       100
     289òó       100
     290_õ       100
     291_Ì       99
     292ò,       99
     293îê       99
     294èòü      99
     295åò_      99
     296_ñî      99
     297ëÿ       98
     298àå       98
     299_îò      98
     300îãî_     98
     301Ê        97
     302âîð      97
     303òí       97
     304_ë       97
     305ó,_      97
     306äó       96
     307_äà      96
     308ò,_      96
     309áà       96
     310ïå       96
     311ëà_      95
     312áó       95
     313áå       94
     314ìó_      94
     315_ìå      94
     316÷à       94
     317âñå      93
     318òû       93
     319êà_      92
     320_êàê     91
     321ìí       91
     322òñ       90
     323íü       90
     324_îá      90
     325?        90
     326ðàç      89
     327òàê      89
     328_ñ_      89
     329ñà       89
     330å,       89
     331æè       88
     332ô        88
     333_òàê     88
     334èÿ       88
     335è÷       88
     336îí_      87
     337ìåí      87
     338å,_      87
     339ûé_      86
     340ë,       86
     341ë,_      86
     342òîì      86
     343ðàí      86
     344ýòî      86
     345Íó       86
     346È        86
     347öè       85
     348èå_      85
     349âåð      85
     350ñâ       84
     351_îí_     84
     352_âñå     84
     353ðû       84
     354_ýòî     84
     355_È       84
     356ç_       83
     357ïè       83
     358ëó       83
     359À        83
     360åíè      82
     361èë_      82
     362"        82
     363ïîë      82
     364àòü_     81
     365òîð      81
     366èëè      81
     367êð       81
     368ëñ       81
     369òåë      81
     370åíí      81
     371îòî      80
     372äà_      79
     373èòå      79
     374ñòð      79
     375îâîð     79
     376ãîâ      79
     377îðè      79
     378àíè      79
     379_Íó      78
     380ëñÿ      78
     381_íè      78
     382è.       77
     383_ñâ      77
     384è._      76
     385à.       76
     386_èç      76
     387èø       76
     388ùå       76
     389ÿò       76
     390îëî      76
     391ü,       75
     392Π       75
     393êè_      75
     394ü,_      75
     395ëî_      75
     396îç       74
     397_åã      74
     398ëüí      74
     399üí       74
     400ûå       74
  • xapian-omega-1.0.7a/langclass/spanish.lm

    diff -u  xapian-omega-1.0.7a/langclass/spanish.lm.orig
    old new  
     1_        25044
     2e        7830
     3a        7437
     4o        5102
     5s        4394
     6n        4358
     7i        4065
     8r        3998
     9l        3634
     10d        3118
     11c        2931
     12t        2834
     13u        2316
     14a_       2269
     15e_       2211
     16s_       1862
     17de       1679
     18p        1673
     19_d       1644
     20m        1447
     21_de      1443
     22n_       1332
     23o_       1301
     24en       1295
     25_e       1216
     26es       1177
     27_l       1132
     28de_      1080
     29la       1060
     30os       1028
     31_de_     1027
     32_p       963
     33l_       910
     34ci       890
     35_c       866
     36_a       866
     37os_      801
     38ar       777
     39er       775
     40as       768
     41ra       746
     42nt       736
     43_la      727
     44re       726
     45,_       724
     46,        724
     47el       722
     48ta       708
     49ue       701
     50g        678
     51on       674
     52al       670
     53_s       666
     54co       653
     55b        637
     56an       622
     57v        616
     58la_      616
     59or       612
     60te       599
     61st       596
     62el_      580
     63_la_     573
     64y        545
     65to       543
     66r_       517
     67ad       512
     68ó        511
     69do       504
     70ro       504
     71se       488
     72as_      488
     73q        487
     74qu       487
     75.        479
     76._       478
     77en_      475
     78ca       460
     79in       459
     80un       456
     81_co      450
     82es_      449
     83ic       449
     84_en      440
     85ac       440
     86que      439
     87na       439
     88lo       430
     89_m       430
     90f        429
     91ent      428
     92da       412
     93ue_      411
     94po       405
     95le       399
     96_q       399
     97_qu      399
     98que_     393
     99_que     388
     100ie       386
     101h        385
     102pa       382
     103y_       371
     104ti       367
     105_que_    365
     106_en_     365
     107_y       361
     108tr       358
     109_el      353
     110ri       349
     111ia       342
     112_el_     333
     113_se      330
     114ió       330
     115_y_      330
     116io       329
     117pr       320
     118ón       317
     119ec       317
     120no       314
     121id       301
     122í        300
     123mi       299
     124_t       299
     125ión      292
     126nte      292
     127me       286
     128aci      283
     129do_      279
     130li       276
     131con      276
     132nd       273
     133est      272
     134ni       272
     135á        271
     136di       270
     137_es      268
     138_lo      267
     139ció      265
     140ma       265
     141ón_      264
     142_pr      263
     143_r       261
     144ción     255
     145z        254
     146ra_      251
     147si       247
     148ión_     246
     149oc       245
     150nc       244
     151_u       244
     152_po      243
     153los      243
     154or_      242
     155_con     241
     156is       239
     157del      238
     158_del     237
     159ado      236
     160se_      233
     161_i       233
     162los_     231
     163_re      231
     164por      229
     165_del_    228
     166sta      228
     167del_     228
     168al_      228
     169ne       226
     170_h       226
     171cu       225
     172_n       225
     173_a_      224
     174_v       224
     175_un      223
     176ce       222
     177so       220
     178ción_    218
     179res      218
     180vi       217
     181om       216
     182te_      212
     183_pa      211
     184ien      210
     185j        209
     186E        208
     187_los     207
     188_los_    207
     189to_      206
     190ol       204
     191it       203
     192am       202
     193ació     201
     194rt       201
     195ación    201
     196pe       197
     197ha       190
     198_se_     189
     199nto      188
     200_o       184
     201_E       184
     202on_      184
     203sa       183
     204na_      182
     205ta_      181
     206su       180
     207cia      180
     208mo       180
     209ct       178
     210par      178
     211_f       177
     212_por     176
     213eg       172
     214_in      172
     215ur       170
     216L        168
     217ve       166
     218im       164
     219ga       163
     220_est     161
     221ar_      161
     222ab       160
     223_L       159
     224tu       158
     225at       158
     226no_      157
     227s,       157
     228s,_      157
     229_por_    156
     230por_     156
     231las      156
     232ba       154
     233o,_      154
     234o,       154
     235ento     151
     236et       150
     237C        150
     238_ha      149
     239A        149
     240tra      148
     241ient     148
     242_al      147
     243a,_      146
     244ica      146
     245a,       146
     246pro      146
     247ado_     145
     248ici      144
     249_ca      144
     250an_      144
     251las_     143
     252ara      143
     253nci      143
     254ente     142
     255ú        142
     256rr       142
     257ir       142
     258da_      141
     259em       141
     260ll       140
     261il       139
     262ía       138
     263iv       138
     264_su      138
     265_par     136
     266ul       136
     267ant      136
     268_A       135
     269mp       135
     270_las_    134
     271_las     134
     272_C       134
     273_pro     133
     274men      132
     275P        132
     276des      131
     277com      130
     278ion      130
     279era      130
     280ed       129
     281ida      129
     282sp       128
     283gu       127
     284nte_     127
     285ns       127
     286za       126
     287dos      125
     288M        125
     289cio      125
     290les      125
     291_P       124
     292bl       124
     293_com     122
     294s._      122
     295s.       122
     296_M       121
     297ua       120
     298nta      120
     299mu       119
     300_no      118
     301dad      118
     302ñ        117
     303é        116
     304un_      116
     305va       116
     306ist      116
     307nes      116
     308iento    115
     309one      114
     310ara_     113
     311S        113
     312ada      113
     313_un_     113
     314fi       111
     315pre      110
     316tos      110
     317ter      109
     318ot       109
     319esta     108
     320_me      107
     321ido      107
     322ob       107
     323_g       105
     324br       105
     325go       105
     326ea       104
     327nto_     104
     328ona      103
     329pu       103
     330dos_     103
     331tro      103
     332ier      103
     333para     102
     334ment     101
     335ag       101
     336ero      101
     337gr       101
     338rec      101
     339bi       101
     340ia_      100
     341una      100
     342nic      99
     343ncia     99
     344ía_      98
     345a._      98
     346tos_     98
     347a.       98
     348ran      98
     349lo_      97
     350ones     97
     351rm       96
     352lu       96
     353ron      95
     354con_     95
     355ó_       95
     356nes_     95
     357_ci      95
     358ante     94
     359ch       94
     360_con_    94
     361_para    94
     362ntr      93
     363una_     93
     364para_    93
     365mie      92
     366ico      92
     367fe       92
     368les_     92
     369uc       92
     370ip       91
     371sto      91
     372_ma      91
     373ui       91
     374sta_     91
     375_ve      90
     376cion     90
     377"        90
     378op       90
     379cal      89
     380_mu      89
     381_S       89
     382ro_      89
     383_pe      88
     384ste      88
     385ras      88
     386pl       88
     387_una     88
     388_di      87
     389ento_    86
     390ita      86
     391ione     85
     392ect      85
     393_una_    85
     394mien     85
     395tan      85
     396du       84
     397den      84
     398ndo      84
     399per      84
     400eri      84
  • xapian-omega-1.0.7a/langclass/swedish.lm

    diff -u  xapian-omega-1.0.7a/langclass/swedish.lm.orig
    old new  
     1_        33494
     2e        8992
     3n        7900
     4t        7859
     5a        7781
     6r        7251
     7s        6435
     8i        5649
     9l        4541
     10d        4079
     11o        3724
     12m        3203
     13k        3058
     14g        2478
     15en       2403
     16n_       2389
     17t_       2073
     18de       1939
     19r_       1910
     20v        1890
     21h        1789
     22u        1782
     23_s       1768
     24ä        1724
     25er       1709
     26f        1597
     27en_      1537
     28a_       1526
     29an       1357
     30p        1320
     31et       1317
     32ö        1278
     33å        1261
     34st       1236
     35ar       1226
     36c        1191
     37_d       1158
     38e_       1116
     39in       1045
     40_f       1027
     41te       1000
     42b        997
     43_a       978
     44s_       974
     45ra       958
     46.        956
     47tt       935
     48_i       898
     49_m       890
     50._       886
     51ll       870
     52ta       844
     53_o       842
     54_e       839
     55nd       820
     56ti       804
     57sk       798
     58re       779
     59at       769
     60_de      754
     61om       743
     62m_       739
     63ör       720
     64,        697
     65,_       695
     66ng       686
     67li       673
     68ka       666
     69oc       662
     70_h       654
     71on       652
     72et_      647
     73ch       645
     74ns       643
     75is       642
     76er_      630
     77är       625
     78_v       614
     79_t       614
     80ni       611
     81i_       609
     82_oc      592
     83tt_      587
     84na       586
     85y        586
     86la       579
     87_b       579
     88h_       577
     89kt       575
     90ch_      568
     91ig       564
     92fö       563
     93och      555
     94or       555
     95_och     554
     96och_     554
     97_och_    553
     98me       548
     99den      548
     100om_      535
     101_i_      531
     102d_       530
     103j        529
     104ik       520
     105de_      520
     106för      518
     107ge       498
     108ad       497
     109_k       491
     110_fö      487
     111ri       484
     112el       482
     113il       481
     114so       480
     115al       474
     116g_       469
     117le       464
     118an_      461
     119_för     447
     120si       437
     121ar_      437
     122att      435
     123_p       434
     124es       420
     125ing      413
     126se       407
     127to       404
     128_u       403
     129_en      403
     130and      398
     131den_     395
     132nde      393
     133nn       393
     134_l       391
     135å_       391
     136D        385
     137än       383
     138nt       382
     139l_       381
     140tr       378
     141_D       372
     142va       370
     143am       369
     144sa       367
     145_so      365
     146ga       364
     147_en_     361
     148är_      358
     149ck       357
     150av       354
     151v_       351
     152ed       347
     153ma       346
     154da       346
     155som      346
     156rs       344
     157som_     344
     158ve       342
     159ter      341
     160att_     341
     161ha       338
     162ne       337
     163ut       335
     164as       332
     165ska      329
     166_at      327
     167_att     326
     168_som     324
     169_att_    324
     170_som_    323
     171vi       322
     172ikt      317
     173_av      316
     174det      316
     175_den     315
     176he       315
     177ss       314
     178un       307
     179ke       304
     180_g       303
     181us       302
     182di       302
     183_st      300
     184rn       297
     185_me      296
     186_ä       295
     187ade      294
     188"        290
     189_ha      290
     190av_      289
     191ill      288
     192_n       286
     193_in      279
     194io       275
     195_r       275
     196der      275
     197it       274
     198_av_     274
     199sta      274
     200gen      272
     201isk      270
     202_ti      269
     203id       265
     204na_      265
     205ns_      264
     206ko       262
     207_den_    261
     208ag       258
     209det_     257
     210lig      257
     211era      256
     212ll_      255
     213_det     252
     214_är      251
     215be       249
     216_är_     248
     217ra_      247
     218ion      244
     219-        241
     220pr       240
     221oni      233
     222til      231
     223ten      228
     224_si      225
     225k_       222
     226på       222
     227fr       221
     228ro       219
     229till     219
     230iv       216
     231ls       216
     232ande     215
     233ör_      214
     234_det_    213
     235äl       212
     236_på      211
     237ts       210
     238ens      209
     239med      209
     240mm       208
     241rt       208
     242_till    208
     243_til     208
     244_va      207
     245_fr      205
     246_sk      205
     247var      205
     248nin      204
     249ning     203
     250ol       201
     251ka_      200
     252lle      198
     253ett      198
     254rd       197
     255em       196
     256på_      195
     257x        195
     258rk       194
     259_ut      194
     260ste      194
     261ds       193
     262_vi      192
     263år       192
     264S        192
     265nde_     191
     266are      191
     267ver      190
     268_på_     190
     269nis      189
     270kr       189
     271_med     188
     272all      188
     273ån       187
     274nge      185
     275mo       184
     276os       183
     277ld       182
     278ade_     181
     279_S       181
     280ed_      180
     281rä       176
     282De       175
     283_-       175
     284kan      174
     285ta_      173
     286ng_      172
     287vä       171
     288för_     170
     289ill_     170
     290han      170
     291_De      170
     292pp       169
     293lt       169
     294sam      168
     295nte      167
     296ans      167
     297ton      166
     298ur       165
     299mi       165
     300ess      165
     301kl       164
     302ig_      164
     303ks       164
     304as_      163
     305und      163
     306men      162
     307med_     161
     308_med_    161
     309ak       161
     310Di       160
     311ot       159
     312rna      159
     313ul       159
     314_var     159
     315te_      158
     316gen_     158
     317het      157
     318kto      157
     319str      156
     320_Di      155
     321tad      155
     322lan      154
     323ga_      154
     324iska     154
     325fa       154
     326fi       154
     327så       154
     328Dikt     153
     329Dik      153
     330pe       153
     331ska_     152
     332ja       152
     333H        151
     334res      151
     335ku       151
     336iu       150
     337ande_    150
     338till_    150
     339t.       150
     340ern      150
     341rm       149
     342_Dikt    149
     343_Dik     149
     344ie       149
     345bl       148
     346-_       147
     347od       147
     348_H       147
     349n.       147
     350ist      147
     351_di      146
     352ius      146
     353_"       145
     354la_      145
     355sl       145
     356man      145
     357ren      145
     358_för_    145
     359toni     144
     360kton     144
     361n._      144
     362ktoni    144
     363ikton    144
     364I        144
     365ikto     144
     366nius     143
     367ten_     143
     368onius    143
     369oniu     143
     370toniu    143
     371ing_     143
     372Dikto    143
     373niu      143
     374_ko      143
     375ic       142
     376_sa      142
     377_han     142
     378ett_     142
     379sm       141
     380ba       141
     381M        141
     382gr       140
     383lä       140
     384ex       138
     385t._      138
     386sp       137
     387lla      137
     388_et      137
     389_M       137
     390dr       137
     391rö       136
     392rad      136
     393ek       136
     394_be      135
     395tar      135
     396_-_      135
     397_om      134
     398rl       134
     399E        134
     400mä       133
  • xapian-omega-1.0.7a/mimeexplode

    diff -u  xapian-omega-1.0.7a/mimeexplode.orig
    old new  
     1#!/usr/bin/perl -w
     2
     3=head1 NAME
     4
     5mimeexplode - explode one or more MIME messages
     6
     7=head1 SYNOPSIS
     8
     9    mimeexplode [-d <dir>] <mime-msg-file> <mime-msg-file> ...
     10
     11    someprocess | mimeexplode -
     12
     13=head1 DESCRIPTION
     14
     15Takes one or more files from the command line that contain MIME
     16messages, and explodes their contents out into subdirectories
     17of the current working directory.  The subdirectories are
     18just called C<msg0>, C<msg1>, C<msg2>, etc.  Existing directories are
     19skipped over.
     20
     21The message information is output to the stdout, like this:
     22
     23    Message: msg3 (inputfile1.msg)
     24        Part: msg3/filename-1.dat (text/plain)
     25        Part: msg3/filename-2.dat (text/plain)
     26    Message: msg5 (input-file2.msg)
     27        Part: msg5/dir.gif (image/gif)
     28        Part: msg5/face.jpg (image/jpeg)
     29    Message: msg6 (infile3)
     30        Part: msg6/filename-1.dat (text/plain)
     31
     32This was written as an example of the MIME:: modules in the
     33MIME-parser package I wrote.  It may prove useful as a quick-and-dirty
     34way of splitting a MIME message if you need to decode something, and
     35you don't have a MIME mail reader on hand.
     36
     37=head1 COMMAND LINE OPTIONS
     38
     39-d outdir
     40
     41=head1 AUTHOR
     42
     43Eryq C<eryq@zeegee.com>, in a big hurry...
     44Reini Urban C<rurban@x-ray.at>: -d option to always explode into the same dir
     45
     46=cut
     47
     48#BEGIN { unshift @INC, ".." }    # to test MIME:: stuff before installing it!
     49
     50require 5.001;
     51
     52use strict;
     53use vars;
     54
     55use MIME::Parser;
     56use Getopt::Std;
     57my %opts;
     58my $outbase = '';
     59my $postfix = '';
     60
     61#------------------------------------------------------------
     62# make_msg - make and return the name of a msgXXX directory
     63#------------------------------------------------------------
     64
     65#ignored
     66#sub make_msg {
     67#    while (-d "msg$Msgno") {
     68#       ++$Msgno;
     69#       die "self-imposed limit reached" if $Msgno == 256;
     70#    }
     71#   mkdir "msg$Msgno",0755 or die "couldn't make msg$Msgno: $!";
     72#    "msg$Msgno";
     73#}
     74
     75#------------------------------------------------------------
     76# dump_entity - dump an entity's file info
     77#------------------------------------------------------------
     78sub dump_entity {
     79    my $ent = shift;
     80    my @parts = $ent->parts;
     81
     82    if (@parts) {        # multipart...
     83        map { dump_entity($_) } @parts;
     84    }
     85    else {               # single part...
     86        print "    Part: ", $ent->bodyhandle->path,
     87              " (", scalar($ent->head->mime_type), ")\n";
     88    }
     89}
     90
     91#------------------------------------------------------------
     92# main
     93#------------------------------------------------------------
     94sub main {
     95    my $file;
     96    my $entity;
     97
     98    # make sure the same message gets exploded into the same dir
     99    getopts('d:', \%opts);
     100    $outbase = $opts{d} ? $opts{d} : "msg0";
     101    my $outdir = $outbase;
     102
     103    # Go through messages:
     104    @ARGV or unshift @ARGV, "-";
     105    while (defined($file = shift @ARGV)) {
     106
     107      # Sanity:
     108      (-d $outdir) or mkdir "$outdir",0755;
     109      (-w "$outdir") or die "cwd $outdir not writable!";
     110      #my $msgdir = make_msg();
     111      #print "Message: $msgdir ($file)\n";
     112
     113      # Create a new parser object:
     114      my $parser = new MIME::Parser;
     115      ### $parser->parse_nested_messages('REPLACE');
     116
     117      # Optional: set up parameters that will affect how it extracts
     118      #   documents from the input stream:
     119      $parser->output_dir($outdir);
     120
     121      # Parse an input stream:
     122      open FILE, $file or die "couldn't open $file";
     123      $entity = $parser->read(\*FILE) or
     124        print STDERR "Couldn't parse MIME in $file; continuing...\n";
     125      close FILE;
     126
     127      # Congratulations: you now have a (possibly multipart) MIME entity!
     128      dump_entity($entity) if $entity;
     129      ### $entity->dump_skeleton if $entity;
     130
     131      $postfix++;
     132      $outdir = $outbase.$postfix;
     133    }
     134    1;
     135}
     136
     137exit (&main ? 0 : -1);
     138#------------------------------------------------------------
     1391;
     140
  • xapian-omega-1.0.7a/msgconvert.pl

    diff -u  xapian-omega-1.0.7a/msgconvert.pl.orig
    old new  
     1#!/usr/bin/perl -w
     2#
     3# msgconvert.pl:
     4#
     5# Convert .MSG files (made by Outlook (Express)) to multipart MIME messages.
     6#
     7# Copyright 2002, 2004, 2006 Matijs van Zuijlen
     8#
     9# This program is free software; you can redistribute it and/or modify it
     10# under the terms of the GNU General Public License as published by the
     11# Free Software Foundation; either version 2 of the License, or (at your
     12# option) any later version.
     13#
     14# This program is distributed in the hope that it will be useful, but
     15# WITHOUT ANY WARRANTY; without even the implied warranty of
     16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
     17# Public License for more details.
     18#
     19# CHANGES:
     20# 20020715  Recognize new items 'Cc', mime type of attachment, long
     21#           filename of attachment, and full headers. Attachments turn out
     22#           to be numbered, so a regexp is now used to recognize label of
     23#           items that are attachments.
     24# 20020831  long file name will definitely be used if present. Full headers
     25#           and mime type information are used when present. Created
     26#           generic system for specifying known items to be skipped.
     27#           Unexpected contents is never reason to bail out anymore. Added
     28#           support for usage message and option processing (--verbose).
     29# 20040104  Handle address data slightly better, make From line less fake,
     30#           make $verbose and $skippable_entries global vars, handle HTML
     31#           variant of body text if present (though not optimally).
     32# 20040214  Fix typos and incorrect comments.
     33# 20040307  - Complete rewrite: All functional parts are now in the package
     34#             MSGParser;
     35#           - Creation of MIME::Entity object is delayed until the output
     36#             routines, which means all data is known; This means I can
     37#             create a multipart/alternative body.
     38#           - Item names are parsed (thanks to bfrederi@alumni.sfu.ca for
     39#             the information).
     40# 20040514  Check if $self->{HEAD} actually exists before trying to add its
     41#           contents to the output Mime object's header data.
     42#           (Bug reported by Thomas Ng).
     43#           Don't produce multipart messages if not needed.
     44#           (Bug reported by Justin B. Scout).
     45# 20040529  Correctly format OLEDATE.
     46# 20040530  - Extract date from property 0047 (thanks, Marc Goodman).
     47#           - Use address data to make To: and Cc: lines complete
     48#           - Use the in-reply-to property
     49#           - More unknown properties named.
     50#           - Found another property containing an SMTP address.
     51#           - Put non-SMTP type addresses back in output.
     52# 20040825  Replace 'our' to declare globals with 'use vars'. This means
     53#           the globals our now properly scoped inside the package and not
     54#           the file.
     55#           This also fixes the bug that this program did not work on perl
     56#           versions below 5.6. (Bug reported by Tim Gustafson)
     57# 20060218  More sensible encoding warnings.
     58# 20060219  Move OLE parsing to main program.
     59#           Parse nested MSG files (Bug reported by Christof Lukas).
     60# 20060225  Simplify code.
     61#
     62
     63#
     64# Import modules.
     65#
     66package MSGParser;
     67use strict;
     68use OLE::Storage_Lite;
     69use MIME::Entity;
     70use MIME::Parser;
     71use Date::Format;
     72use POSIX qw(mktime);
     73use constant DIR_TYPE => 1;
     74use constant FILE_TYPE => 2;
     75
     76use vars qw($skipproperties $skipheaders);
     77#
     78# Descriptions partially based on mapitags.h
     79#
     80$skipproperties = {
     81  # Envelope properties
     82  '000B' => "Conversation key?",
     83  '001A' => "Type of message",
     84  '003B' => "Sender address variant",
     85  '003D' => "Contains 'Re: '",
     86  '003F' => "'recieved by' id",
     87  '0040' => "'recieved by' name",
     88  '0041' => "Sender variant address id",
     89  '0042' => "Sender variant name",
     90  '0043' => "'recieved representing' id",
     91  '0044' => "'recieved representing' name",
     92  '0046' => "Read receipt address id",
     93  '0051' => "'recieved by' search key",
     94  '0052' => "'recieved representing' search key",
     95  '0053' => "Read receipt search key",
     96  '0064' => "Sender variant address type",
     97  '0065' => "Sender variant address",
     98  '0070' => "Conversation topic",
     99  '0071' => "Conversation index",
     100  '0075' => "'recieved by' address type",
     101  '0076' => "'recieved by' email address",
     102  '0077' => "'recieved representing' address type",
     103  '0078' => "'recieved representing' email address",
     104  '007F' => "something like a message id",
     105  # Recipient properties
     106  '0C19' => "Reply address variant",
     107  '0C1D' => "Reply address variant",
     108  '0C1E' => "Reply address type",
     109  # Non-transmittable properties
     110  '0E02' => "?Should BCC be displayed",
     111  '0E0A' => "sent mail id",
     112  '0E1D' => "Subject w/o Re",
     113  '0E27' => "64 bytes: Unknown",
     114  '0FF6' => "Index",
     115  '0FF9' => "Index",
     116  '0FFF' => "Address variant",
     117  # Content properties
     118  '1008' => "Summary or something",
     119  '1009' => "RTF Compressed",
     120  # 'Common property'
     121  '3001' => "Display name",
     122  '3002' => "Address Type",
     123  '300B' => "'Search key'",
     124  # Attachment properties
     125  '3702' => "Attachment encoding",
     126  '3703' => "Attachment extension",
     127  '3709' => "'Attachment rendering'", # Maybe an icon or something?
     128  '3713' => "Icon URL?",
     129  # 'Mail user'
     130  '3A20' => "Address variant",
     131  # 3900 -- 39FF: 'Address book'
     132  '39FF' => "7 bit display name",
     133  # 'Display table properties'
     134  '3FF8' => "Routing data?",
     135  '3FF9' => "Routing data?",
     136  '3FFA' => "Routing data?",
     137  '3FFB' => "Routing data?",
     138  # 'Transport-defined envelope property'
     139  '4029' => "Sender variant address type",
     140  '402A' => "Sender variant address",
     141  '402B' => "Sender variant name",
     142  '5FF6' => "Recipient name",
     143  '5FF7' => "Recipient address variant",
     144  # 'Provider-defined internal non-transmittable property'
     145  '6740' => "Unknown, binary data",
     146  # User defined id's
     147  '8000' => "Content Class",
     148  '8002' => "Unknown, binary data",
     149};
     150
     151$skipheaders = {
     152  "MIME-Version" => 1,
     153  "Content-Type" => 1,
     154  "Content-Transfer-Encoding" => 1,
     155  "X-Mailer" => 1,
     156  "X-Msgconvert" => 1,
     157  "X-MS-Tnef-Correlator" => 1,
     158  "X-MS-Has-Attach" => 1,
     159};
     160
     161use constant ENCODING_UNICODE => '001F';
     162use constant KNOWN_ENCODINGS => {
     163    '000D' => 'Directory',
     164    '001F' => 'Unicode',
     165    '001E' => 'Ascii?',
     166    '0102' => 'Binary',
     167};
     168
     169use constant MAP_ATTACHMENT_FILE => {
     170  '3701' => ["DATA",        0], # Data
     171  '3704' => ["SHORTNAME",   1], # Short file name
     172  '3707' => ["LONGNAME",    1], # Long file name
     173  '370E' => ["MIMETYPE",    1], # mime type
     174  '3716' => ["DISPOSITION", 1], # disposition
     175};
     176
     177use constant MAP_SUBITEM_FILE => {
     178  '1000' => ["BODY_PLAIN",      0], # Body
     179  '1013' => ["BODY_HTML",       0], # HTML Version of body
     180  '0037' => ["SUBJECT",         1], # Subject
     181  '0047' => ["SUBMISSION_ID",   1], # Seems to contain the date
     182  '007D' => ["HEAD",            1], # Full headers
     183  '0C1A' => ["FROM",            1], # Reply-To: Name
     184  '0C1E' => ["FROM_ADDR_TYPE",  1], # From: Address type
     185  '0C1F' => ["FROM_ADDR",       1], # Reply-To: Address
     186  '0E04' => ["TO",              1], # To: Names
     187  '0E03' => ["CC",              1], # Cc: Names
     188  '1035' => ["MESSAGEID",       1], # Message-Id
     189  '1042' => ["INREPLYTO",       1], # In reply to Message-Id
     190};
     191
     192use constant MAP_ADDRESSITEM_FILE => {
     193  '3001' => ["NAME",            1], # Real name
     194  '3002' => ["TYPE",            1], # Address type
     195  '403D' => ["TYPE",            1], # Address type
     196  '3003' => ["ADDRESS",         1], # Address
     197  '403E' => ["ADDRESS",         1], # Address
     198  '39FE' => ["SMTPADDRESS",     1], # SMTP Address variant
     199};
     200
     201#
     202# Main body of module
     203#
     204
     205sub new {
     206  my $that = shift;
     207  my $class = ref $that || $that;
     208
     209  my $self = {
     210    ATTACHMENTS => [],
     211    ADDRESSES => [],
     212    VERBOSE => 0,
     213    HAS_UNICODE => 0,
     214    FROM_ADDR_TYPE => "",
     215  };
     216  bless $self, $class;
     217}
     218
     219#
     220# Main sub: parse the PPS tree, and return
     221#
     222sub parse {
     223  my $self = shift;
     224  my $PPS = shift or die "Internal error: No PPS tree";
     225  $self->_RootDir($PPS);
     226}
     227
     228sub mime_object {
     229  my $self = shift;
     230
     231  my $bodymime;
     232  my $mime;
     233
     234  if ($self->_IsMultiPart) {
     235    # Construct a multipart message object
     236
     237    $mime = MIME::Entity->build(Type => "multipart/mixed");
     238
     239    # Set the entity that we'll save the body parts to. If there's more than
     240    # one part, it's a new entity, otherwise, it's the main $mime object.
     241    if ($self->{BODY_HTML} and $self->{BODY_PLAIN}) {
     242      $bodymime = MIME::Entity->build(
     243        Type => "multipart/alternative",
     244        Encoding => "8bit",
     245      );
     246      $mime->add_part($bodymime);
     247    } else {
     248      $bodymime = $mime;
     249    }
     250    if ($self->{BODY_PLAIN}) {
     251      $self->_SaveAttachment($bodymime, {
     252        MIMETYPE => 'text/plain; charset=ISO-8859-1',
     253        ENCODING => '8bit',
     254        DATA => $self->{BODY_PLAIN},
     255        DISPOSITION => 'inline',
     256      });
     257    }
     258    if ($self->{BODY_HTML}) {
     259      $self->_SaveAttachment($bodymime, {
     260        MIMETYPE => 'text/html',
     261        ENCODING => '8bit',
     262        DATA => $self->{BODY_HTML},
     263        DISPOSITION => 'inline',
     264      });
     265    }
     266    foreach my $att (@{$self->{ATTACHMENTS}}) {
     267      $self->_SaveAttachment($mime, $att);
     268    }
     269  } elsif ($self->{BODY_PLAIN}) {
     270    # Construct a single part message object with a plain text body
     271    $mime = MIME::Entity->build(
     272      Type => "text/plain",
     273      Data => $self->{BODY_PLAIN}
     274    );
     275  } elsif ($self->{BODY_HTML}) {
     276    # Construct a single part message object with an HTML body
     277    $mime = MIME::Entity->build(
     278      Type => "text/html",
     279      Data => $self->{BODY_HTML}
     280    );
     281  }
     282
     283  $self->_CopyHeaderData($mime);
     284
     285  $self->_SetHeaderFields($mime);
     286
     287  return $mime;
     288}
     289
     290# Actually output the message in mbox format
     291sub print {
     292  my $self = shift;
     293
     294  my $mime = $self->mime_object;
     295
     296  # Construct From line from whatever we know.
     297  my $string = "";
     298  $string = (
     299    $self->{FROM_ADDR_TYPE} eq "SMTP" ?
     300    $self->{FROM_ADDR} :
     301    'someone@somewhere'
     302  );
     303  $string =~ s/\n//g;
     304
     305  # The date used here is not really important.
     306  print "From ", $string, " ", scalar localtime, "\n";
     307  $mime->print(\*STDOUT);
     308  print "\n";
     309}
     310
     311sub set_verbosity {
     312  my ($self, $verbosity) = @_;
     313  defined $verbosity or die "Internal error: no verbosity level";
     314  $self->{VERBOSE} = $verbosity;
     315}
     316
     317#
     318# Below are functions that walk the PPS tree. The *Dir functions handle
     319# processing the directory nodes of the tree (mainly, iterating over the
     320# children), whereas the *Item functions handle processing the items in the
     321# directory (if such an item is itself a directory, it will in turn be
     322# processed by the relevant *Dir function).
     323#
     324
     325#
     326# RootItem: Check Root Entry, parse sub-entries.
     327# The OLE file consists of a single entry called Root Entry, which has
     328# several children. These children are parsed in the sub SubItem.
     329#
     330sub _RootDir {
     331  my ($self, $PPS) = @_;
     332
     333  foreach my $child (@{$PPS->{Child}}) {
     334    $self->_SubItem($child);
     335  }
     336}
     337
     338sub _SubItem {
     339  my ($self, $PPS) = @_;
     340 
     341  if ($PPS->{Type} == DIR_TYPE) {
     342    $self->_SubItemDir($PPS);
     343  } elsif ($PPS->{Type} == FILE_TYPE) {
     344    $self->_SubItemFile($PPS);
     345  } else {
     346    warn "Unknown entry type: $PPS->{Type}";
     347  }
     348}
     349
     350sub _SubItemDir {
     351  my ($self, $PPS) = @_;
     352
     353  $self->_GetOLEDate($PPS);
     354
     355  my $name = $self->_GetName($PPS);
     356
     357  if ($name =~ /__recip_version1 0_ /) { # Address of one recipient
     358    $self->_AddressDir($PPS);
     359  } elsif ($name =~ '__attach_version1 0_ ') { # Attachment
     360    $self->_AttachmentDir($PPS);
     361  } else {
     362    $self->_UnknownDir($self->_GetName($PPS));
     363  }
     364}
     365
     366sub _SubItemFile {
     367  my ($self, $PPS) = @_;
     368
     369  my $name = $self->_GetName($PPS);
     370  my ($property, $encoding) = $self->_ParseItemName($name);
     371
     372  $self->_MapProperty($self, $PPS->{Data}, $property,
     373    MAP_SUBITEM_FILE) or $self->_UnknownFile($name);
     374}
     375
     376sub _AddressDir {
     377  my ($self, $PPS) = @_;
     378
     379  my $address = {
     380    NAME        => undef,
     381    ADDRESS     => undef,
     382    TYPE        => "",
     383  };
     384  foreach my $child (@{$PPS->{Child}}) {
     385    $self->_AddressItem($child, $address);
     386  }
     387  push @{$self->{ADDRESSES}}, $address;
     388}
     389
     390sub _AddressItem {
     391  my ($self, $PPS, $addr_info) = @_;
     392
     393  my $name = $self->_GetName($PPS);
     394
     395  # DIR Entries: There should be none.
     396  if ($PPS->{Type} == DIR_TYPE) {
     397    $self->_UnknownDir($name);
     398  } elsif ($PPS->{Type} == FILE_TYPE) {
     399    my ($property, $encoding) = $self->_ParseItemName($name);
     400    $self->_MapProperty($addr_info, $PPS->{Data}, $property,
     401      MAP_ADDRESSITEM_FILE) or $self->_UnknownFile($name);
     402  } else {
     403    warn "Unknown entry type: $PPS->{Type}";
     404  }
     405}
     406
     407sub _AttachmentDir {
     408  my ($self, $PPS) = @_;
     409
     410  my $attachment = {
     411    SHORTNAME   => undef,
     412    LONGNAME    => undef,
     413    MIMETYPE    => 'application/octet-stream',
     414    ENCODING    => 'base64',
     415    DISPOSITION => 'attachment',
     416    DATA        => undef
     417  };
     418  foreach my $child (@{$PPS->{Child}}) {
     419    $self->_AttachmentItem($child, $attachment);
     420  }
     421  push @{$self->{ATTACHMENTS}}, $attachment;
     422}
     423
     424sub _AttachmentItem {
     425  my ($self, $PPS, $att_info) = @_;
     426
     427  my $name = $self->_GetName($PPS);
     428
     429  my ($property, $encoding) = $self->_ParseItemName($name);
     430
     431  if ($PPS->{Type} == DIR_TYPE) {
     432
     433    if ($property eq '3701') {  # Nested MSG file
     434      my $msgp = new MSGParser();
     435      $msgp->parse($PPS);
     436      my $data = $msgp->mime_object->as_string;
     437      $att_info->{DATA} = $data;
     438      $att_info->{MIMETYPE} = 'message/rfc822';
     439      $att_info->{ENCODING} = '8bit';
     440    } else {
     441      $self->_UnknownDir($name);
     442    }
     443
     444  } elsif ($PPS->{Type} == FILE_TYPE) {
     445    $self->_MapProperty($att_info, $PPS->{Data}, $property,
     446      MAP_ATTACHMENT_FILE) or $self->_UnknownFile($name);
     447  } else {
     448    warn "Unknown entry type: $PPS->{Type}";
     449  }
     450}
     451
     452sub _MapProperty {
     453  my ($self, $hash, $data, $property, $map) = @_;
     454
     455  defined $property or return 0;
     456  my $arr = $map->{$property} or return 0;
     457
     458  $arr->[1] and $data =~ s/\000//g;
     459  $hash->{$arr->[0]} = $data;
     460
     461  return 1;
     462}
     463
     464sub _UnknownDir {
     465  my ($self, $name) = @_;
     466
     467  if ($name eq '__nameid_version1 0') {
     468    $self->{VERBOSE}
     469      and warn "Skipping DIR entry $name (Introductory stuff)\n";
     470    return;
     471  }
     472  warn "Unknown DIR entry $name\n";
     473}
     474
     475sub _UnknownFile {
     476  my ($self, $name) = @_;
     477
     478  if ($name eq '__properties_version1 0') {
     479    $self->{VERBOSE}
     480      and warn "Skipping FILE entry $name (Properties)\n";
     481    return;
     482  }
     483
     484  my ($property, $encoding) = $self->_ParseItemName($name);
     485  unless (defined $property) {
     486    warn "Unknown FILE entry $name\n";
     487    return;
     488  }
     489  if ($skipproperties->{$property}) {
     490    $self->{VERBOSE}
     491      and warn "Skipping property $property ($skipproperties->{$property})\n";
     492    return;
     493  } elsif ($property =~ /^80/) {
     494    $self->{VERBOSE}
     495      and warn "Skipping property $property (user-defined property)\n";
     496    return;
     497  } else {
     498    warn "Unknown property $property\n";
     499    return;
     500  }
     501}
     502
     503#
     504# Helper functions
     505#
     506
     507sub _GetName {
     508  my ($self, $PPS) = @_;
     509  return $self->_NormalizeWhiteSpace(OLE::Storage_Lite::Ucs2Asc($PPS->{Name}));
     510}
     511
     512sub _NormalizeWhiteSpace {
     513  my ($self, $name) = @_;
     514  $name =~ s/\W/ /g;
     515  return $name;
     516}
     517
     518sub _GetOLEDate {
     519  my ($self, $PPS) = @_;
     520  unless (defined ($self->{OLEDATE})) {
     521    # Make Date
     522    my $datearr;
     523    $datearr = $PPS->{Time2nd};
     524    $datearr = $PPS->{Time1st} unless($datearr);
     525    $self->{OLEDATE} = $self->_FormatDate($datearr) if $datearr;
     526  }
     527}
     528
     529sub _FormatDate {
     530  my ($self, $datearr) = @_;
     531
     532  # TODO: This is a little convoluted. Directly using strftime didn't seem
     533  # to work.
     534  my $datetime = mktime(@$datearr);
     535  return time2str("%a, %d %h %Y %X %z", $datetime);
     536}
     537
     538# If we didn't get the date from the original header data, we may be able
     539# to get it from the SUBMISSION_ID:
     540# It seems to have the format of a semicolon-separated list of key=value
     541# pairs. The key l has a value with the format:
     542# <SERVER>-<DATETIME>Z-<NUMBER>, where DATETIME is the date and time in
     543# the format YYMMDDHHMMSS.
     544sub _SubmissionIdDate {
     545  my $self = shift;
     546
     547  my $submission_id = $self->{SUBMISSION_ID} or return undef;
     548  $submission_id =~ m/l=.*-(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)Z-.*/
     549    or return undef;
     550  my $year = $1;
     551  $year += 100 if $year < 20;
     552  return $self->_FormatDate([$6,$5,$4,$3,$2-1,$year]);
     553}
     554
     555sub _ParseItemName {
     556  my ($self, $name) = @_;
     557
     558  if ($name =~ /^__substg1 0_(....)(....)$/) {
     559    my ($property, $encoding) = ($1, $2);
     560    if ($encoding eq ENCODING_UNICODE and not ($self->{HAS_UNICODE})) {
     561      warn "This MSG file contains Unicode fields."
     562        . " This is currently unsupported.\n";
     563      $self->{HAS_UNICODE} = 1;
     564    } elsif (not (KNOWN_ENCODINGS()->{$encoding})) {
     565      warn "Unknown encoding $encoding. Results may be strange or wrong.\n";
     566    }
     567    return ($property, $encoding);
     568  } else {
     569    return (undef, undef);
     570  }
     571}
     572
     573sub _SaveAttachment {
     574  my ($self, $mime, $att) = @_;
     575
     576  my $ent = $mime->attach(
     577    Type => $att->{MIMETYPE},
     578    Encoding => $att->{ENCODING},
     579    Data => [],
     580    Filename => ($att->{LONGNAME} ? $att->{LONGNAME} : $att->{SHORTNAME}),
     581    Disposition => $att->{DISPOSITION}
     582  );
     583
     584  my $handle;
     585  if ($handle = $ent->open("w")) {
     586    $handle->print($att->{DATA});
     587    $handle->close;
     588  } else {
     589    warn "Could not write data!";
     590  }
     591}
     592
     593sub _SetAddressPart {
     594  my ($self, $adrname, $partname, $data) = @_;
     595
     596  my $address = $self->{ADDRESSES}->{$adrname};
     597  $data =~ s/\000//g;
     598  #warn "Processing address data part $partname : $data\n";
     599  if (defined ($address->{$partname})) {
     600    if ($address->{$partname} eq $data) {
     601      warn "Skipping duplicate but identical address information for"
     602      . " $partname\n" if $self->{VERBOSE};
     603    } else {
     604      warn "Address information $partname inconsistent:\n";
     605      warn "    Original data: $address->{$partname}\n";
     606      warn "    New data: $data\n";
     607    }
     608  } else {
     609    $address->{$partname} = $data;
     610  }
     611}
     612
     613# Set header fields
     614sub _AddHeaderField {
     615  my ($self, $mime, $fieldname, $value) = @_;
     616
     617  my $oldvalue = $mime->head->get($fieldname);
     618  return if $oldvalue;
     619  $mime->head->add($fieldname, $value) if $value;
     620}
     621
     622sub _Address {
     623  my ($self, $tag) = @_;
     624  my $name = $self->{$tag} || "";
     625  my $address = $self->{$tag . "_ADDR"} || "";
     626  return "$name <$address>";
     627}
     628
     629# Find SMTP addresses for the given list of names
     630sub _ExpandAddressList {
     631  my ($self, $names) = @_;
     632
     633  my $addresspool = $self->{ADDRESSES};
     634  my @namelist = split /; */, $names;
     635  my @result;
     636  name: foreach my $name (@namelist) {
     637    foreach my $address (@$addresspool) {
     638      if ($name eq $address->{NAME}) {
     639        my $addresstext = $address->{NAME} . " <";
     640        if (defined ($address->{SMTPADDRESS})) {
     641          $addresstext .= $address->{SMTPADDRESS};
     642        } elsif ($address->{TYPE} eq "SMTP") {
     643          $addresstext .= $address->{ADDRESS};
     644        }
     645        $addresstext .= ">";
     646        push @result, $addresstext;
     647        next name;
     648      }
     649    }
     650    push @result, $name;
     651  }
     652  return join ", ", @result;
     653}
     654
     655sub _ParseHead {
     656  my ($self, $data) = @_;
     657  defined $data or return undef;
     658  # Parse full header date if we got that.
     659  my $parser = new MIME::Parser();
     660  $parser->output_to_core(1);
     661  $parser->decode_headers(1);
     662  $data =~ s/^Microsoft Mail.*$/X-MSGConvert: yes/m;
     663  my $entity = $parser->parse_data($data)
     664    or warn "Couldn't parse full headers!";
     665  my $head = $entity->head;
     666  $head->unfold;
     667  return $head;
     668}
     669
     670# Find out if we need to construct a multipart message
     671sub _IsMultiPart {
     672  my $self = shift;
     673
     674  return (
     675    ($self->{BODY_HTML} and $self->{BODY_PLAIN})
     676      or @{$self->{ATTACHMENTS}}>0
     677  );
     678}
     679
     680# Copy original header data.
     681# Note: This should contain the Date: header.
     682sub _CopyHeaderData {
     683  my ($self, $mime) = @_;
     684
     685  my $head = $self->_ParseHead($self->{HEAD}) or return;
     686
     687  foreach my $tag (grep {!$skipheaders->{$_}} $head->tags) {
     688    foreach my $value ($head->get_all($tag)) {
     689      $mime->head->add($tag, $value);
     690    }
     691  }
     692}
     693
     694# Set header fields
     695sub _SetHeaderFields {
     696  my ($self, $mime) = @_;
     697
     698  # If we didn't get the date from the original header data, we may be able
     699  # to get it from the SUBMISSION_ID:
     700  $self->_AddHeaderField($mime, 'Date', $self->_SubmissionIdDate());
     701
     702  # Third and last chance to set the Date: header; this uses the date the
     703  # MSG file was saved.
     704  $self->_AddHeaderField($mime, 'Date', $self->{OLEDATE});
     705  $self->_AddHeaderField($mime, 'Subject', $self->{SUBJECT});
     706  $self->_AddHeaderField($mime, 'From', $self->_Address("FROM"));
     707  #$self->_AddHeaderField($mime, 'Reply-To', $self->_Address("REPLYTO"));
     708  $self->_AddHeaderField($mime, 'To', $self->_ExpandAddressList($self->{TO}));
     709  $self->_AddHeaderField($mime, 'Cc', $self->_ExpandAddressList($self->{CC}));
     710  $self->_AddHeaderField($mime, 'Message-Id', $self->{MESSAGEID});
     711  $self->_AddHeaderField($mime, 'In-Reply-To', $self->{INREPLYTO});
     712}
     713
     714package main;
     715use Getopt::Long;
     716use Pod::Usage;
     717
     718# Setup command line processing.
     719my $verbose = '';
     720my $help = '';      # Print help message and exit.
     721GetOptions('verbose' => \$verbose, 'help|?' => \$help) or pod2usage(2);
     722pod2usage(1) if $help;
     723
     724# Get file name
     725my $file = $ARGV[0];
     726defined $file or pod2usage(2);
     727warn "Will parse file: $file\n" if $verbose;
     728
     729# Load and parse MSG file (is OLE)
     730my $Msg = OLE::Storage_Lite->new($file);
     731my $PPS = $Msg->getPpsTree(1);
     732$PPS or die "$file must be an OLE file";
     733
     734# parse PPS tree
     735my $parser = new MSGParser();
     736$parser->set_verbosity(1) if $verbose;
     737$parser->parse($PPS);
     738$parser->print();
     739
     740#
     741# Usage info follows.
     742#
     743__END__
     744
     745=head1 NAME
     746
     747msgconvert.pl - Convert Outlook .msg files to mbox format
     748
     749=head1 SYNOPSIS
     750
     751msgconvert.pl [options] <file.msg>
     752
     753  Options:
     754    --verbose   be verbose
     755    --help      help message
     756
     757=head1 OPTIONS
     758
     759=over 8
     760
     761=item B<--verbose>
     762
     763    Print information about skipped parts of the .msg file.
     764
     765=item B<--help>
     766
     767    Print a brief help message.
     768
     769=head1 DESCRIPTION
     770
     771This program will output the message contained in file.msg in mbox format
     772on stdout. It will complain about unrecognized OLE parts on
     773stderr.
     774
     775=head1 BUGS
     776
     777Not all data that's in the .MSG file is converted. There simply are some
     778parts whose meaning escapes me. One of these must contain the date the
     779message was sent, for example. Formatting of text messages will also be
     780lost. YMMV.
     781
     782=cut
  • xapian-omega-1.0.7a/omega.cc

    diff -u  xapian-omega-1.0.7a/omega.cc.orig
    old new  
    172172        const string & v = val->second;
    173173        if (v == "AND" || v == "and")
    174174            default_op = Xapian::Query::OP_AND;
     175        else if (v == "OR" || v == "or")
     176            default_op = Xapian::Query::OP_OR;
     177    } else {
     178        default_op = Xapian::Query::OP_AND;
    175179    }
    176180
    177181    val = cgi_params.find("FMT");
     
    264268        }
    265269    }
    266270
     271    // filter by URL substring
     272    val = cgi_params.find("U");
     273    if (val != cgi_params.end()) {
     274        string url = val->second;
     275        if (!url.empty()) {
     276            filters += ("U" + url + "*");
     277            filters += filter_sep;
     278        }
     279    }
     280
    267281    // date range filters
    268282    val = cgi_params.find("START");
    269283    if (val != cgi_params.end()) date_start = val->second;
  • xapian-omega-1.0.7a/omega.conf.in

    diff -u  xapian-omega-1.0.7a/omega.conf.in.orig
    old new  
     1# Directory containing Xapian databases:
     2database_dir @localstatedir@/omega/data
     3
     4# Directory containing OmegaScript templates:
     5template_dir @localstatedir@/omega/templates
     6
     7# Directory to write Omega logs to:
     8log_dir      /var/log/omega
     9
     10# Directory containing any cdb files for the $lookup OmegaScript command:
     11cdb_dir      @localstatedir@/omega/cdb
     12
     13# Directory containing extracted archives:
     14cache_dir    @localstatedir@/omega/cache
  • xapian-omega-1.0.7a/omega.m4

    diff -u  xapian-omega-1.0.7a/omega.m4.orig
    old new  
     1# macro to check for omindex helpers
     2# serial 1
     3
     4# XO_OMEGA_WITH(package, description, [action-if-with-and-found])
     5# --------------------------------------------------------
     6# AC_ARG_WITH(package, --without-package           description)
     7# AC_PATH_PROG(PACKAGE, package)
     8#  AC_DEFINE(HAVE_PACKAGE,[], "Define to 1 if you have " description)
     9#  AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE",package " path")
     10# The progname to search for is the same as the package.
     11#
     12# action-if-with-and-found is executed when --without-package is
     13# not given and the program is found in the path. For additional AC_SUBST
     14#
     15# This simplifies the omindex prerequisite definition.
     16AC_DEFUN([XO_OMEGA_WITH],
     17[
     18AC_ARG_WITH([$1],[  --without-$1         use $1 to $2])
     19define([$1NAME],[translit([$1],[a-z], [A-Z])])
     20if test xno != x$with_$1; then
     21  AC_PATH_PROG([$1NAME],[$1])
     22  test -n "$[]$1NAME" && (
     23    AC_DEFINE([HAVE_]$1NAME, 1, [Define to 1 if you have $1 to $2])
     24    AC_DEFINE_UNQUOTED($1NAME,"$[]$1NAME",[path to $1])
     25  )
     26  $3
     27fi
     28undefine([$1NAME])
     29])
     30
     31# XO_OMEGA_WITH_PROGS(package, progs, description, [action-if-with-and-found])
     32# --------------------------------------------------------
     33# AC_ARG_WITH(package, --without-package           description)
     34# AC_PATH_PROGS(PACKAGE, progs)
     35#  AC_DEFINE(HAVE_PACKAGE,[], "Define to 1 if you have " description)
     36#  AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE",package " path")
     37# The progname to search for is the same as the package.
     38#
     39# action-if-with-and-found is executed when --without-package is
     40# not given and the program is found in the path. For additional AC_SUBST
     41#
     42# This simplifies the omindex prerequisite definition.
     43AC_DEFUN([XO_OMEGA_WITH_PROGS],
     44[
     45AC_ARG_WITH([$1],[  --without-$1         use $1 to $3])
     46define([$1NAME],[translit([$1],[a-z], [A-Z])])
     47if test xno != x$with_$1; then
     48  AC_PATH_PROGS([$1NAME],$2)
     49  test -n "$[]$1NAME" && (
     50    AC_DEFINE([HAVE_]$1NAME, 1, [Define to 1 if you have $1 to $3])
     51    AC_DEFINE_UNQUOTED($1NAME,"$[]$1NAME",[path to $1])
     52  )
     53  $4
     54fi
     55undefine([$1NAME])
     56])
  • xapian-omega-1.0.7a/omindex.cc

    diff -u  xapian-omega-1.0.7a/omindex.cc.orig
    old new  
    44 * Copyright 2001,2005 James Aylett
    55 * Copyright 2001,2002 Ananova Ltd
    66 * Copyright 2002,2003,2004,2005,2006,2007,2008 Olly Betts
     7 * Copyright 2006,2007,2008 AVL List GesmbH
    78 *
    89 * This program is free software; you can redistribute it and/or
    910 * modify it under the terms of the GNU General Public License as
     
    2324
    2425#include <config.h>
    2526
     27#ifdef HAVE_POSIX_FADVISE
     28# ifdef __linux__
     29#  define _POSIX_C_SOURCE 200112L // for posix_fadvise from fcntl.h
     30#  define _BSD_SOURCE 1 // Need this to get lstat() as well
     31# endif
     32#endif
    2633#include <algorithm>
    2734#include <fstream>
    2835#include <iostream>
     
    4249#include <xapian.h>
    4350
    4451#include "commonhelp.h"
     52#include "configfile.h"
    4553#include "diritor.h"
    4654#include "hashterm.h"
    4755#include "loadfile.h"
     
    6270extern char * mkdtemp(char *);
    6371#endif
    6472
     73#ifdef HAVE_TEXTCAT
     74# include "textcat.h"
     75# ifndef LANGCLASS_CONF
     76#  define LANGCLASS_CONF "/var/lib/omega/langclass/langclass.conf"
     77# endif
     78#endif
     79#ifndef LIBEXECDIR
     80// must have ending slash
     81//# define LIBEXECDIR "/usr/lib/omega/bin/"
     82# define LIBEXECDIR ""
     83#endif
     84#ifndef PKGDATADIR
     85// must have ending slash
     86# define PKGDATADIR "/usr/share/omega/"
     87#endif
     88
    6589using namespace std;
    6690
    6791#define TITLE_SIZE 128
     
    6993
    7094#define PROG_NAME "omindex"
    7195#define PROG_DESC "Index static website data via the filesystem"
     96
     97/* used in runfilter.cc */
     98bool verbose = false;
     99string error_log;
    72100
    73101static bool skip_duplicates = false;
    74102static bool follow_symlinks = false;
     103static bool nocleanup = false;
     104static bool silent = false;
    75105static string dbpath;
    76106static string root;
    77107static string indexroot;
     
    129159static vector<bool> updated;
    130160static string tmpdir;
    131161
     162#ifdef HAVE_TEXTCAT
     163static void *textcat;
     164#endif
     165
     166static void
     167index_cached_directory(size_t depth_limit,
     168                       const string &file,
     169                       const string &url,
     170                       const string &ext,
     171                       const string &cmd,
     172                       map<string, string>& mime_map);
     173static
     174int mkdir_p(const string &path, mode_t mode);
     175
    132176inline static bool
    133177p_notalnum(unsigned int c)
    134178{
     
    179223{
    180224    string file = root + url;
    181225    string title, sample, keywords, dump;
     226    string language;
    182227
    183     cout << "Indexing \"" << url << "\" as " << mimetype << " ... " << flush;
     228    if (!silent)
     229        cout << "Indexing \"" << url.substr(1) << "\" as " << mimetype << " ... " << flush;
    184230
    185231    string urlterm("U");
    186232    urlterm += baseurl;
     
    217263            // indexing is disallowed
    218264        }
    219265        if (!p.indexing_allowed) {
    220             cout << "indexing disallowed by meta tag - skipping" << endl;
     266            if (!silent)
     267                cout << "indexing disallowed by meta tag - skipping" << endl;
    221268            return;
    222269        }
    223270        dump = p.dump;
     
    245292            return;
    246293        }
    247294        md5_string(dump, md5);
     295#if 0 // FIXME: this won't work as omindex will have the database locked...
     296    } else if (mimetype == "message/rfc822") { // // => mbox2script
     297        //for stemmer lang, parse stemmer.get_description => Xapian::Stem(bla)
     298        string cmd = LIBEXECDIR"mbox2omega " + shell_protect(file) + error_log+"| "
     299            "scriptindex " + shell_protect(dbpath) + " "PKGDATADIR"mbox2script.script";
     300        try {
     301            dump = stdout_to_string(cmd);
     302        } catch (ReadError) {
     303            cout << "\"" << cmd << "\" failed - skipping" << endl;
     304            return;
     305        }
     306#endif
    248307    } else if (mimetype == "application/pdf") {
    249308        string safefile = shell_protect(file);
     
    383442    } else if (mimetype == "text/rtf") {
    384443        // The --text option unhelpfully converts all non-ASCII characters to
    385444        // "?" so we use --html instead, which produces HTML entities.
    386         string cmd = "unrtf --nopict --html 2>/dev/null " + shell_protect(file);
     445        string cmd = "unrtf --nopict --html 2>/dev/null " + shell_protect(file) + error_log+
     446            "|"SED" '/^### .*/d'";
    387447        MyHtmlParser p;
    388448        try {
    389449            p.parse_html(stdout_to_string(cmd));
     
    466526
    467527    // Put the data in the document
    468528    Xapian::Document newdocument;
    469     string record = "url=" + baseurl + url + "\nsample=" + sample;
     529    string record = "url=" + baseurl + url;
     530    record += "\nsample=" + sample;
     531#ifdef HAVE_TEXTCAT
     532    char * lang;
     533    lang = textcat_Classify( textcat, sample.c_str(), sample.length()+1 );
     534    language = string(lang);
     535    if ((language != _TEXTCAT_RESULT_UNKOWN) // unknown language
     536        && (language != _TEXTCAT_RESULT_SHORT)) // too little information
     537    {
     538        if (language[0] == '[') {
     539            int pos = language.find(']',0);
     540            language = language.substr(1,pos-1);
     541        }
     542        record += "\nlanguage=" + language;
     543        if (language != curr_lang)  {
     544            cout << "curr_lang=" << language << ", ";
     545            stemmer = Xapian::Stem(language);
     546            curr_lang = language;
     547        }
     548    }
     549#endif
    470550    if (!title.empty()) {
    471551        record += "\ncaption=" + generate_sample(title, TITLE_SIZE);
    472552    }
     
    529609    // Add MD5 as a value to allow duplicate documents to be collapsed together.
    530610    newdocument.add_value(VALUE_MD5, md5);
    531611
     612    // filesize also to sort by size
     613    newdocument.add_value(VALUE_FILESIZE, int_to_binary_string((uint32_t)size));
     614
    532615    if (!skip_duplicates) {
    533616        // If this document has already been indexed, update the existing
    534617        // entry.
     
    536619            Xapian::docid did = db.replace_document(urlterm, newdocument);
    537620            if (did < updated.size()) {
    538621                updated[did] = true;
     622                if (!silent)
    539623                cout << "updated." << endl;
    540624            } else {
     625                if (!silent)
    541626                cout << "added." << endl;
    542627            }
    543628        } catch (...) {
    544629            // FIXME: is this ever actually needed?
    545630            db.add_document(newdocument);
     631            if (!silent)
    546632            cout << "added (failed re-seek for duplicate)." << endl;
    547633        }
    548634    } else {
    549635        // If this were a duplicate, we'd have skipped it above.
    550636        db.add_document(newdocument);
     637        if (!silent)
    551638        cout << "added." << endl;
    552639    }
    553640}
    554641
     642/* Note: switched to cache_dir as root for virtual directories,
     643   because /srcdir/.zip might not be creatable. */
    555644static void
    556645index_directory(size_t depth_limit, const string &dir,
    557646                map<string, string>& mime_map)
    558647{
    559648    string path = root + indexroot + dir;
    560649
    561     cout << "[Entering directory " << dir << "]" << endl;
     650    if (!silent)
     651        cout << "[Entering directory " << dir.substr(1) << "]" << endl;
    562652
    563653    DirectoryIterator d(follow_symlinks);
    564654    try {
    565         d.start(path);
    566         while (d.next()) try {
    567             string url = dir;
    568             if (!url.empty() && url[url.size() - 1] != '/') url += '/';
    569             url += d.leafname();
    570             string file = root + indexroot + url;
    571             switch (d.get_type()) {
    572                 case DirectoryIterator::DIRECTORY:
    573                     if (depth_limit == 1) continue;
    574                     try {
    575                         size_t new_limit = depth_limit;
    576                         if (new_limit) --new_limit;
    577                         index_directory(new_limit, url, mime_map);
    578                     } catch (...) {
    579                         cout << "Caught unknown exception in index_directory, rethrowing" << endl;
    580                         throw;
     655        d.start(root + indexroot + dir);
     656    } catch (const std::string & error) {
     657        cout << error << " - skipping" << endl;
     658        return;
     659    }
     660    while (d.next()) try {
     661        struct stat statbuf;
     662        string url = dir;
     663        if (!url.empty() && url[url.size() - 1] != '/') url += '/';
     664        url += d.leafname();
     665        string file = root + indexroot + url;
     666        switch (d.get_type()) {
     667            case DirectoryIterator::DIRECTORY:
     668                if (depth_limit == 1) continue;
     669                try {
     670                    size_t new_limit = depth_limit;
     671                    if (new_limit) --new_limit;
     672                    index_directory(new_limit, url, mime_map);
     673                } catch (...) {
     674                    cout << "Caught unknown exception in index_directory, rethrowing" << endl;
     675                    throw;
     676                }
     677                continue;
     678            case DirectoryIterator::REGULAR_FILE: {
     679                string ext;
     680                string::size_type dot = url.find_last_of('.');
     681                if (dot != string::npos) ext = url.substr(dot + 1);
     682                if (!ext.empty()) {
     683                    ext = string(ext); // lowercase ext
     684                    for (unsigned int i=0; i<ext.length(); i++) {
     685                        ext[i] = tolower(ext[i]);
    581686                    }
    582                 case DirectoryIterator::REGULAR_FILE: {
    583                     string ext;
    584                     string::size_type dot = url.find_last_of('.');
    585                     if (dot != string::npos) ext = url.substr(dot + 1);
    586 
    587                     map<string,string>::iterator mt = mime_map.find(ext);
    588                     if (mt == mime_map.end()) {
    589                         // If the extension isn't found, see if the lower-cased
    590                         // version (if different) is found.
    591                         bool changed = false;
    592                         string::iterator i;
    593                         for (i = ext.begin(); i != ext.end(); ++i) {
    594                             if (*i >= 'A' && *i <= 'Z') {
    595                                 *i = tolower(*i);
    596                                 changed = true;
    597                             }
     687                }
     688
     689                if (strcmp(d.leafname(), "mbox") == 0) {
     690                    // Special filename.
     691                    off_t size = d.get_size();
     692                    time_t mtime = d.get_mtime();
     693                    index_file(indexroot + url, "message/rfc822", mtime, size);
     694                    continue;
     695                }
     696
     697                map<string,string>::iterator mt = mime_map.find(ext);
     698                if (mt == mime_map.end()) {
     699                    // If the extension isn't found, see if the lower-cased
     700                    // version (if different) is found.
     701                    bool changed = false;
     702                    string::iterator i;
     703                    for (i = ext.begin(); i != ext.end(); ++i) {
     704                        if (*i >= 'A' && *i <= 'Z') {
     705                            *i = tolower(*i);
     706                            changed = true;
     707                        }
     708                    }
     709                    if (changed) mt = mime_map.find(ext);
     710                }
     711                if (mt != mime_map.end()) {
     712                    string oldroot = root;
     713                    // Only check the file size if we recognise the
     714                    // extension to avoid a call to stat()/lstat() for
     715                    // files we can't handle when readdir() tells us the
     716                    // file type.
     717                    off_t size = d.get_size();
     718                    if (size == 0) {
     719                        cout << "Skipping empty file: \"" << file << "\""
     720                             << endl;
     721                        continue;
     722                    }
     723
     724#ifndef _MSC_VER
     725                    // NOTE: unpacking does not work on MSWin32 this way!
     726                    // we'd really have to pull in utils.cc:rmdir from xapian-core
     727                    if (ext == "zip") {
     728                        if (depth_limit == 1) {
     729                            cout << "Recursion limit reached for \""<< url << "\" - skipping " << endl;
     730                            continue;
     731                        }
     732#ifdef HAVE_UNZIP
     733                        // overwrite
     734                        string cmd = UNZIP" -u -P. -o " +shell_protect(file) + " -d " +shell_protect(cache_dir+"/.zip"+indexroot+url+"/");
     735                        try {
     736                            size_t new_limit = depth_limit;
     737                            if (new_limit) --new_limit;
     738                            index_cached_directory(new_limit, file, url, ext, cmd, mime_map);
     739                        } catch (ReadError) {
     740                            cout << "failed " << cmd << " << in index_cached_directory" << endl;
     741                            root = oldroot;
     742                        } catch (...) {
     743                            cout << "Caught unknown exception in index_cached_directory, rethrowing" << endl;
     744                            root = oldroot;
     745                            throw;
    598746                        }
    599                         if (changed) mt = mime_map.find(ext);
     747                        continue;
     748#endif
    600749                    }
    601                     if (mt != mime_map.end()) {
    602                         // Only check the file size if we recognise the
    603                         // extension to avoid a call to stat()/lstat() for
    604                         // files we can't handle when readdir() tells us the
    605                         // file type.
    606                         off_t size = d.get_size();
    607                         if (size == 0) {
    608                             cout << "Skipping empty file: \"" << file << "\""
    609                                  << endl;
     750#ifdef HAVE_UNRAR
     751                    else if (ext == "rar") {
     752                        if (depth_limit == 1) {
     753                            cout << "Recursion limit reached for \""<< url << "\" - skipping " << endl;
    610754                            continue;
    611755                        }
    612 
    613                         // It's in our MIME map so we know how to index it.
    614                         const string & mimetype = mt->second;
     756                        // overwrite
     757                        string cmd = UNRAR" x -o+ " +shell_protect(file) + " "
     758                            + shell_protect(cache_dir+"/.rar"+indexroot+url+"/");
     759                        try {
     760                            size_t new_limit = depth_limit;
     761                            if (new_limit) --new_limit;
     762                            index_cached_directory(new_limit, file, url, ext, cmd, mime_map);
     763                        } catch (ReadError) {
     764                            cout << "failed " << cmd << " << in index_cached_directory" << endl;
     765                            root = oldroot;
     766                        } catch (...) {
     767                            cout << "Caught unknown exception in index_cached_directory, rethrowing" << endl;
     768                            root = oldroot;
     769                            throw;
     770                        }
     771                        continue;
     772                    }
     773#endif
     774#ifdef HAVE_MSGCONVERT
     775                    else if (ext == "msg") {
     776                        struct stat statcache;
     777                        char olddir[256];
     778                       
     779                        if (depth_limit == 1) {
     780                            cout << "Recursion limit reached for \""<< url << "\" - skipping " << endl;
     781                            continue;
     782                        }
     783                        string cmd = LIBEXECDIR"outlook2text "+shell_protect(file);
     784                        // unpack multiparts and attachments. so we have to chdir first
     785                        string fulldir = cache_dir+"/.msg"+indexroot+url;
     786                        getcwd(olddir,256);
     787#ifdef HAVE_LSTAT
     788                        lstat(fulldir.c_str(), &statcache);
     789#else
     790                        stat(fulldir.c_str(), &statcache);
     791#endif
     792                        if (!S_ISDIR(statcache.st_mode)) {
     793                            mkdir_p(fulldir, 0755);
     794                        }
    615795                        try {
    616                             time_t mtime = d.get_mtime();
    617                             index_file(indexroot + url, mimetype, mtime, size);
    618                         } catch (NoSuchFilter) {
    619                             // FIXME: we ought to ignore by mime-type not
    620                             // extension.
    621                             cout << "Filter for \"" << mimetype
    622                                  << "\" not installed - ignoring extension \""
    623                                  << ext << "\"" << endl;
    624                             mime_map.erase(mt);
    625                         }
    626                     } else {
    627                         cout << "Unknown extension: \"" << file
    628                              << "\" - skipping" << endl;
     796                            chdir (fulldir.c_str());
     797                            size_t new_limit = depth_limit;
     798                            if (new_limit) --new_limit;
     799                            index_cached_directory(new_limit, file, url, ext, cmd, mime_map);
     800                            chdir (olddir);
     801                        } catch (ReadError) {
     802                            cout << "failed " << cmd << " << in index_cached_directory" << endl;
     803                            chdir (olddir);
     804                            root = oldroot;
     805                        } catch (...) {
     806                            cout << "Caught unknown exception in index_cached_directory, rethrowing" << endl;
     807                            chdir (olddir);
     808                            root = oldroot;
     809                            throw;
     810                        }
     811                        continue;
    629812                    }
    630                     continue;
    631                 }
    632                 default:
    633                     cout << "Not a regular file \"" << file
     813#endif
     814#ifdef HAVE_READPST
     815                    else if (ext == "pst") {
     816                        if (depth_limit == 1) {
     817                            cout << "Recursion limit reached for \""<< url << "\" - skipping " << endl;
     818                            continue;
     819                        }
     820                        // unpack attachments also, together with mbox files
     821                        string cmd = READPST" -r -cv -w -o "
     822                            + shell_protect(cache_dir+"/.pst"+indexroot+url+"/")+" "+shell_protect(file);
     823                        try {
     824                            size_t new_limit = depth_limit;
     825                            if (new_limit) --new_limit;
     826                            index_cached_directory(new_limit, file, url, ext, cmd, mime_map);
     827                        } catch (ReadError) {
     828                            root = oldroot;
     829                            cout << "failed " << cmd << " << in index_cached_directory" << endl;
     830                        } catch (...) {
     831                            root = oldroot;
     832                            cout << "Caught unknown exception in index_cached_directory, rethrowing" << endl;
     833                            throw;
     834                        }
     835                        continue;
     836                    }
     837#endif
     838#endif
     839                    // It's in our MIME map so we know how to index it.
     840                    const string & mimetype = mt->second;
     841                    try {
     842                        time_t mtime = d.get_mtime();
     843                        index_file(indexroot + url, mimetype, mtime, size);
     844                    } catch (NoSuchFilter) {
     845                        // FIXME: we ought to ignore by mime-type not
     846                        // extension.
     847                        cout << "Filter for \"" << mimetype
     848                             << "\" not installed - ignoring extension \""
     849                             << ext << "\"" << endl;
     850                        mime_map.erase(mt);
     851                    }
     852                } else {
     853                    cout << "Unknown extension: \"" << file
    634854                         << "\" - skipping" << endl;
     855                }
     856                continue;
    635857            }
    636         } catch (const std::string & error) {
    637             cout << error << " - skipping" << endl;
    638             continue;
     858            default:
     859                cout << "Not a regular file \"" << file
     860                     << "\" - skipping" << endl;
    639861        }
    640862    } catch (const std::string & error) {
    641         cout << error << " - skipping directory" << endl;
    642         return;
     863        cout << error << " - skipping" << endl;
     864        continue;
     865    }
     866}
     867
     868static
     869int mkdir_p(const string &path, mode_t mode) {
     870#ifdef __WIN32__
     871    stdout_to_string("mkdir \""+shell_protect(path)+"\"");
     872#else
     873    stdout_to_string("mkdir -p "+shell_protect(path));
     874#endif
     875    return 0;
     876}
     877
     878/*
     879 * unpack .msg/.pst/.rar/.zip into local cache dir and recurse there
     880 */
     881static void
     882index_cached_directory(size_t depth_limit,
     883                       const string &file,
     884                       const string &url,
     885                       const string &ext,
     886                       const string &cmd,
     887                       map<string, string>& mime_map)
     888{
     889    string oldroot = root;
     890    root = cache_dir;
     891    string cache = root+"/."+ext+indexroot;
     892    string cachedir = cache+url;
     893    struct stat statfile, statcache;
     894    bool extract_cache;
     895#ifdef HAVE_LSTAT
     896    lstat(file.c_str(), &statfile);
     897    lstat(cachedir.c_str(), &statcache);
     898#else
     899    stat(file.c_str(), &statfile);
     900    stat(cachedir.c_str(), &statcache);
     901#endif
     902    extract_cache = true;
     903    // if cachedir exists and if file is older as cachedir and if cachedir existed 5 secs ago,
     904    // then it was already extracted.
     905    if (S_ISDIR(statcache.st_mode)
     906        && S_ISREG(statfile.st_mode)
     907        && (statfile.st_mtime < statcache.st_mtime)
     908        && (statcache.st_mtime < (time_t)(time(NULL)-500))) // not created by nested mkdir call
     909    {
     910        // but is it in the database also? prevent from deleting skipped files
     911        if (!silent)
     912            cout << "Unchanged cache \"" << cachedir << "\" - \"" << file << "\" - skip extraction "
     913                 // << statfile.st_mtime << " < " << statcache.st_mtime
     914                 << endl;
     915        extract_cache = false;
     916    }
     917    if (S_ISDIR(statcache.st_mode) && S_ISREG(statfile.st_mode) )
     918    {
     919        // check database timestamp for cached container, esp. for cleaned up caches.
     920        // if already in db we need not to extract again
     921        string urlterm("U");
     922        urlterm += baseurl;
     923        urlterm += "/."+ext+indexroot+url;
     924        if (urlterm.length() > MAX_SAFE_TERM_LENGTH)
     925            urlterm = hash_long_term(urlterm, MAX_SAFE_TERM_LENGTH);
     926       
     927        {
     928            // at first find the docid with the beginning urlterm and check its timestamp
     929            Xapian::docid docid = 0;
     930            Xapian::PostingIterator p = db.postlist_begin(urlterm);
     931            if (p != db.postlist_end(urlterm)) {
     932                docid = *p;
     933            }
     934            if (docid && !ignore_time) {
     935                // new: first search value (1)
     936                Xapian::Document doc = db.get_document(docid);
     937                string lastmod;
     938                if (doc.values_count())
     939                    lastmod = doc.get_value(VALUE_LASTMOD);
     940                if (!lastmod.empty()) {
     941                    if (string_to_int(lastmod) >= statfile.st_mtime) {
     942                        if (!silent)
     943                            cout << "Cache "<< "."+ext+indexroot+url << " not newer. Ignored." << endl;
     944                        if (docid < updated.size()) {
     945                            updated[docid] = true;
     946                            root = oldroot;
     947                            return;
     948                        }
     949                    }
     950                }
     951            }
     952        }
     953    }
     954
     955    if (extract_cache) {
     956        if (!silent)
     957            cout << "[EXTRACT into cache " << shell_protect(cachedir) << "]" << endl;
     958        if (verbose && S_ISDIR(statcache.st_mode) && S_ISREG(statfile.st_mode))
     959            cout << " ...changed cache \"" << cachedir << "\" - \"" << file << "\" "
     960                 << statfile.st_mtime << " < " << statcache.st_mtime << " time: " << time(NULL)
     961                 << endl;
     962        if (!S_ISDIR(statcache.st_mode))
     963            mkdir_p(cachedir, 0755);
     964        //stdout_to_string("mkdir -p "+shell_protect(cachedir));
     965        stdout_to_string(cmd);
     966#ifndef __WIN32__
     967        stdout_to_string("chmod -R u+rwx " + shell_protect(cachedir));
     968#endif
     969#ifdef HAVE_LSTAT
     970        lstat(cachedir.c_str(), &statcache);
     971#else
     972        stat(cachedir.c_str(), &statcache);
     973#endif
     974    }
     975
     976    if (S_ISDIR(statcache.st_mode)) {
     977        if (depth_limit == 1) {
     978            cout << "Recursion limit reached for \""<< url << "\" - skipping " << endl;
     979        } else {
     980            // max loop 5, magic start: /.ext+file
     981            index_directory(depth_limit+5, "/."+ext+url, mime_map);
     982            if (!nocleanup) {
     983                if (!silent)
     984                    cout << "[CLEANUP " << "rm -rf " << shell_protect(cachedir) << "]" << endl;
     985                rmdir(cachedir);
     986            }
     987        }
     988    }
     989    else { // no -p would be fatal here
     990        cout << "cachedir " << shell_protect(cachedir) << " does not exist - skipped" << endl;
    643991    }
     992    root = oldroot;
    644993}
    645994
    646995int
     
    6531002    static const struct option longopts[] = {
    6541003        { "help",       no_argument,            NULL, 'h' },
    6551004        { "version",    no_argument,            NULL, 'v' },
     1005        { "verbose",    no_argument,            NULL, 'V' },
     1006        { "silent",     no_argument,            NULL, 'S' },
    6561007        { "overwrite",  no_argument,            NULL, 'o' },
    6571008        { "duplicates", required_argument,      NULL, 'd' },
    6581009        { "preserve-nonduplicates",     no_argument,    NULL, 'p' },
     
    6671018        { "depth-limit",required_argument,      NULL, 'l' },
    6681019        { "follow",     no_argument,            NULL, 'f' },
    6691020        { "stemmer",    required_argument,      NULL, 's' },
     1021        { "nocleanup",  no_argument,            NULL, 'c' },
     1022        { "cachedir",   required_argument,      NULL, 'C' },
    6701023        { 0, 0, NULL, 0 }
    6711024    };
    6721025
     
    7171070    mime_map["xlt"] = "application/vnd.ms-excel"; // Excel template
    7181071    mime_map["ppt"] = "application/vnd.ms-powerpoint";
    7191072    mime_map["pps"] = "application/vnd.ms-powerpoint"; // Powerpoint slideshow
     1073#ifdef HAVE_READPST
     1074    //  Outlook messager folder
     1075    mime_map["pst"] = "application/vnd.ms-outlook-pst"; // readpst | uudeview (libpst)
     1076#endif
     1077#ifdef HAVE_MSGCONVERT
     1078    mime_map["msg"] = "application/vnd.ms-outlook";     // outlook2text via msgconvert.pl
     1079#endif
     1080    mime_map["mbox"] = "message/rfc822";                // => mbox2omega
    7201081    // Perl:
    7211082    mime_map["pl"] = "text/x-perl";
    7221083    mime_map["pm"] = "text/x-perl";
     
    7271088    // DjVu:
    7281089    mime_map["djv"] = "image/vnd.djvu";
    7291090    mime_map["djvu"] = "image/vnd.djvu";
     1091#ifndef _MSC_VER
     1092    mime_map["zip"] = "application/x-zip"; // recursive scanning
     1093#  ifdef HAVE_UNRAR
     1094    mime_map["rar"] = "application/x-rar"; // recursive scanning
     1095#  endif
     1096#endif
     1097
     1098    read_config_file();
     1099
     1100#ifdef HAVE_TEXTCAT
     1101    textcat = textcat_Init( LANGCLASS_CONF );
     1102#endif
    7301103
    731     while ((getopt_ret = gnu_getopt_long(argc, argv, "hvd:D:U:M:lpf", longopts, NULL)) != -1) {
     1104    while ((getopt_ret = gnu_getopt_long(argc, argv, "hvd:D:U:M:C:lpfc", longopts, NULL))!=EOF) {
    7321105        switch (getopt_ret) {
    7331106        case 'h': {
    7341107            cout << PROG_NAME" - "PROG_DESC"\n\n"
     
    7531126"                                duplicate replace mode\n"
    7541127"  -D, --db                 path to database to use\n"
    7551128"  -U, --url                base url DIRECTORY represents (default: /)\n"
     1129"  -C, --cachedir           path to local cache to use (default from omega.conf)\n"
    7561130"  -M, --mime-type          additional MIME mapping ext:type\n"
    7571131"  -l, --depth-limit=LIMIT  set recursion limit (0 = unlimited)\n"
    7581132"  -f, --follow             follow symbolic links\n"
     1133"  -c, --nocleanup          keep cache, don't delete temporary .zip,.rar,.pst,.msg cache folders\n"
    7591134"      --overwrite          create the database anew (the default is to update\n"
    760 "                           if the database already exists)" << endl;
     1135"                           if the database already exists)"
     1136"      --verbose            Print commands also\n"
     1137"      --silent             Print only errors\n";
    7611138            print_stemmer_help("     ");
    7621139            print_help_and_version_help("     ");
    7631140            return 0;
     
    7851162        case 'p': // don't delete unupdated documents
    7861163            preserve_unupdated = true;
    7871164            break;
     1165        case 'V':
     1166            verbose = true;
     1167            break;
     1168        case 'c':
     1169            nocleanup = true;
     1170            break;
    7881171        case 'l': { // Set recursion limit
    7891172            int arg = atoi(optarg);
    7901173            if (arg < 0) arg = 0;
     
    8171200        case 'U':
    8181201            baseurl = optarg;
    8191202            break;
     1203        case 'C':
     1204            cache_dir = optarg;
     1205            break;
    8201206        case 'o': // --overwrite
    8211207            overwrite = true;
    8221208            break;
     
    8441230    if (baseurl.empty()) {
    8451231        cerr << PROG_NAME": --url not specified, assuming `/'.\n";
    8461232    }
     1233    error_log = " 2>>"+log_dir+"omindex-error.log";
    8471234    // baseurl mustn't end '/' or you end up with the wrong URL
    8481235    // (//thing is different to /thing). We could probably make this
    8491236    // safe a different way, by ensuring that we don't put a leading '/'
     
    8691256    } else {
    8701257        indexroot = ""; // index the whole of root
    8711258    }
     1259    // add the db basename to cache_dir
     1260    {
     1261        const char *p = strrchr(dbpath.c_str(), '/');
     1262        // on windows only
     1263        if (!p) p = strrchr(dbpath.c_str(), '\\');
     1264        if (p) { p++; } else { p = dbpath.c_str(); }
     1265        cache_dir += p;
     1266    }
    8721267
    8731268    int exitcode = 1;
    8741269    try {
     
    9051300        cout << "Exception: " << s << endl;
    9061301    } catch (const char *s) {
    9071302        cout << "Exception: " << s << endl;
     1303        if (!tmpdir.empty()) rmdir(tmpdir.c_str());
     1304        return exitcode;
    9081305    } catch (...) {
    9091306        cout << "Caught unknown exception" << endl;
    9101307    }
     
    9121309    // If we created a temporary directory then delete it.
    9131310    if (!tmpdir.empty()) rmdir(tmpdir.c_str());
    9141311
     1312#ifdef HAVE_TEXTCAT
     1313    textcat_Done(textcat);
     1314#endif
    9151315    return exitcode;
    9161316}
  • xapian-omega-1.0.7a/outlook2text.in

    diff -u  xapian-omega-1.0.7a/outlook2text.in.orig
    old new  
     1#! /bin/sh
     2# converts msg to mbox and extract attachments
     3# either be in the cache dir, or accept it as 2nd arg
     4if [ -n $2 ]; then
     5  @MSGCONVERT@ "$1" | @MIMEEXPLODE@ -d "$2"
     6else
     7  # already is in the cache dir
     8  base=`basename "$1" .msg`
     9  @MSGCONVERT@ "$1" | @MIMEEXPLODE@ -d "${base}"
     10fi
  • xapian-omega-1.0.7a/ppt2text.in

    diff -u  xapian-omega-1.0.7a/ppt2text.in.orig
    old new  
     1#! /bin/sh
     2# strip numbers, to stdout
     3@CATPPT@ "$1" | @SED@ -re's/[0123456789.]+,//g'
  • xapian-omega-1.0.7a/query.cc

    diff -u  xapian-omega-1.0.7a/query.cc.orig
    old new  
    107107
    108108static Xapian::Query query;
    109109//static string url_query_string;
    110 Xapian::Query::op default_op = Xapian::Query::OP_OR; // default matching mode
     110Xapian::Query::op default_op = Xapian::Query::OP_AND; // default matching mode
    111111
    112112static Xapian::QueryParser qp;
    113113static Xapian::Stem *stemmer = NULL;
     
    141141        switch (t[0]) {
    142142            case 'a':
    143143                return (t == "a" || t == "about" || t == "an" || t == "and" ||
    144                         t == "are" || t == "as" || t == "at");
     144                    t == "are" || t == "as" || t == "at" || t == "according" ||
     145                    t == "again"  || t == "against"  || t == "ah"  || t == "all" ||
     146                    t == "although"  || t == "always" || t == "anyone" || t == "after" ||
     147                    t == "also"  || t == "any");
    145148            case 'b':
    146149                return (t == "be" || t == "by");
    147150            case 'e':
     
    236239    }
    237240
    238241    try {
    239         query = qp.parse_query(query_string);
     242        //query = qp.parse_query(query_string); // simple query
     243        query = qp.parse_query(query_string, qp.FLAG_WILDCARD);
    240244    } catch (Xapian::QueryParserError &e) {
    241245        error_msg = e.get_msg();
    242246        return BAD_QUERY;
  • xapian-omega-1.0.7a/runfilter.cc

    diff -u  xapian-omega-1.0.7a/runfilter.cc.orig
    old new  
    6060
    6161using namespace std;
    6262
     63extern string error_log;
     64extern bool verbose;
     65
    6366string
    6467stdout_to_string(const string &cmd)
    6568{
     
    97100            setrlimit(RLIMIT_AS, &ram_limit);
    98101        }
    99102
    100         execl("/bin/sh", "/bin/sh", "-c", cmd.c_str(), (void*)NULL);
     103        string tmp;
     104        tmp = cmd + error_log;
     105        if (verbose) {
     106            cout << " Executing '" << tmp << "'..." << endl;
     107        }
     108
     109        execl("/bin/sh", "/bin/sh", "-c", tmp.c_str(), (void*)NULL);
    101110        _exit(-1);
    102111    }
    103112
     
    134143        throw ReadError();
    135144    }
    136145#else
    137     FILE * fh = popen(cmd.c_str(), "r");
     146    string tmp;
     147    tmp = cmd + error_log;
     148    if (verbose) {
     149        cout << " Executing '" << tmp << "'..." << endl;
     150    }
     151    FILE * fh = popen(tmp.c_str(), "r");
    138152    if (fh == NULL) throw ReadError();
    139153    while (!feof(fh)) {
    140154        char buf[4096];
  • xapian-omega-1.0.7a/scriptindex.cc

    diff -u  xapian-omega-1.0.7a/scriptindex.cc.orig
    old new  
    44 * Copyright 2001 Sam Liddicott
    55 * Copyright 2001,2002 Ananova Ltd
    66 * Copyright 2002,2003,2004,2005,2006,2007 Olly Betts
     7 * Copyright 2006,2007 AVL List GesmbH
    78 *
    89 * This program is free software; you can redistribute it and/or
    910 * modify it under the terms of the GNU General Public License as
     
    3839#include <stdio.h>
    3940#include <time.h>
    4041#include "safeunistd.h"
     42#include <sys/stat.h>
    4143
    4244#include "commonhelp.h"
     45#include "configfile.h"
    4346#include "hashterm.h"
    4447#include "loadfile.h"
    4548#include "myhtmlparse.h"
    4649#include "stringutils.h"
    4750#include "utf8truncate.h"
    4851#include "utils.h"
     52#include "values.h"
    4953
    5054#include "gnu_getopt.h"
    5155
     56#ifdef HAVE_TEXTCAT
     57# include "textcat.h"
     58# ifndef LANGCLASS_CONF
     59#  define LANGCLASS_CONF "/var/lib/omega/langclass/langclass.conf"
     60# endif
     61#endif
     62
    5263using namespace std;
    5364
    5465#define PROG_NAME "scriptindex"
     
    5869static int addcount;
    5970static int repcount;
    6071static int delcount;
     72static string curr_lang = "english";
     73#ifdef HAVE_TEXTCAT
     74static void *textcat;
     75#endif
    6176
    6277inline static bool
    6378p_space(unsigned int c)
     
    422437{
    423438    string line;
    424439    size_t line_no = 0;
     440    time_t last_mod = 0;
     441    long   file_size = 0;
     442    string language;
     443
     444    if (strcmp(fname,"<stdin>") != 0) {
     445        struct stat statbuf;
     446        stat(fname, &statbuf);
     447        if (! statbuf.st_size) {
     448            cout << "Empty \"" << string(fname) << "\" - skipping\n";
     449            return false;
     450        }
     451        file_size = statbuf.st_size;
     452        last_mod = statbuf.st_mtime;
     453    }
    425454    while (!stream.eof() && getline(stream, line)) {
    426455        ++line_no;
    427456        Xapian::Document doc;
     
    459488                value += line;
    460489            }
    461490
     491#ifdef HAVE_TEXTCAT
     492            char * lang;
     493            lang = textcat_Classify( textcat, value.c_str(), value.length()+1 );
     494            language = string(lang);
     495            if ((language != _TEXTCAT_RESULT_UNKOWN) // unknown language
     496                && (language != _TEXTCAT_RESULT_SHORT)) // too little information
     497            {
     498                if (language[0] == '[') {
     499                    int pos = language.find(']',0);
     500                    language = language.substr(1,pos-1);
     501                }
     502                // cache language. may be overridden by the script
     503                if (language != curr_lang)  {
     504                    cout << "new language " << curr_lang << " => " << language << " ";
     505                    indexer.set_stemmer(Xapian::Stem(language));
     506                    curr_lang = language;
     507                }
     508            } else {
     509                language = "";
     510            }
     511#endif
     512
    462513            const vector<Action> &v = index_spec[field];
    463514            string old_value = value;
    464515            vector<Action>::const_iterator i;
     
    638689            for (i = fields.begin(); i != fields.end(); ++i) {
    639690                list<string>::const_iterator j;
    640691                for (j = i->second.begin(); j != i->second.end(); j++) {
     692                    if (i->first == "language") language = string();
     693                    if (i->first == "lastmod")  last_mod = 0;
     694                    if (i->first == "size")     file_size = 0;
    641695                    data += i->first;
    642696                    data += '=';
    643697                    data += *j;
    644698                    data += '\n';
    645699                }
    646700            }
     701            // provide some extra fields if not already provided by the script
     702#ifdef HAVE_TEXTCAT
     703            if (!language.empty()) // autodetected language
     704                data += "language="+language+'\n';
     705#endif
     706            if (last_mod) {        // if indexed per filename
     707                data += "lastmod="+int_to_string(last_mod)+'\n';
     708                doc.add_value(VALUE_LASTMOD, int_to_string(last_mod));
     709            }
     710            if (file_size) {        // if indexed per filename
     711                data += "size="+int_to_string(file_size)+'\n';
     712                doc.add_value(VALUE_FILESIZE, int_to_string(file_size));
     713            }
    647714
    648715            // Put the data in the document
    649716            doc.set_data(data);
     
    682749    // If the database already exists, default to updating not overwriting.
    683750    int database_mode = Xapian::DB_CREATE_OR_OPEN;
    684751    verbose = false;
    685     Xapian::Stem stemmer("english");
     752    int exit_code = 0;
     753    Xapian::Stem stemmer(curr_lang);
    686754
    687755    static const struct option longopts[] = {
    688756        { "help",       no_argument,    NULL, 'h' },
     
    742810        exit(show_help ? 0 : 1);
    743811    }
    744812
     813#ifdef HAVE_TEXTCAT
     814    textcat = textcat_Init( LANGCLASS_CONF );
     815#endif
     816
    745817    parse_index_script(argv[1]);
    746818
    747819    // Catch any Xapian::Error exceptions thrown.
     
    785857
    786858        cout << "records (added, replaced, deleted) = (" << addcount <<
    787859                ", " << repcount << ", " << delcount << ")" << endl;
    788     } catch (const Xapian::Error &error) {
    789         cout << "Exception: " << error.get_msg() << endl;
    790         exit(1);
     860    } catch (const Xapian::Error &e) {
     861        cout << "Exception: XapianError:\"" << e.get_msg()
     862             << "\" Type:" << e.get_type() << " Context:" << e.get_context()
     863             << " Errno:" << e.get_error_string() << endl;
     864        exit_code = 1;
    791865    } catch (const std::bad_alloc &) {
    792866        cout << "Exception: std::bad_alloc" << endl;
    793         exit(1);
     867        exit_code = 1;
    794868    } catch (...) {
    795869        cout << "Unknown Exception" << endl;
    796         exit(1);
     870        exit_code = 1;
    797871    }
     872#ifdef HAVE_TEXTCAT
     873    textcat_Done(textcat);
     874#endif
     875    return exit_code;
    798876}
  • xapian-omega-1.0.7a/utils.cc

    diff -u  xapian-omega-1.0.7a/utils.cc.orig
    old new  
    2222#include <config.h>
    2323
    2424#include "utils.h"
     25#include "common/stringutils.h"
    2526
    2627#include <stdio.h> // for sprintf/snprintf
    2728#include <stdlib.h>
     
    3031
    3132using namespace std;
    3233
     34#ifdef __WIN32__
     35#include "safewindows.h"
     36#endif
     37
    3338// This ought to be enough for any of the conversions below.
    3439#define BUFSIZE 100
    3540
     41/// Remove a directory and contents.
     42void
     43rmdir(const string &filename)
     44{
     45    // Check filename exists and is actually a directory
     46    struct stat sb;
     47    if (stat(filename, &sb) != 0 || !S_ISDIR(sb.st_mode)) return;
     48
     49    string safefile = shell_protect(filename);
     50#ifdef __WIN32__
     51# if 1
     52    static int win95 = -1;
     53    if (win95 == -1) {
     54        OSVERSIONINFO info;
     55        memset(&info, 0, sizeof(OSVERSIONINFO));
     56        info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
     57        if (GetVersionEx(&info)) {
     58            win95 = (info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS);
     59        }
     60    }
     61
     62    if (win95) {
     63        // for 95 like systems:
     64        system("deltree /y \"" + safefile + "\"");
     65    } else {
     66        // for NT like systems:
     67        system("rd /s /q \"" + safefile + "\"");
     68    }
     69# else
     70    safefile.append("\0", 2);
     71    SHFILEOPSTRUCT shfo;
     72    memset((void*)&shfo, 0, sizeof(shfo));
     73    shfo.hwnd = 0;
     74    shfo.wFunc = FO_DELETE;
     75    shfo.pFrom = safefile.data();
     76    shfo.fFlags = FOF_NOCONFIRMATION|FOF_NOERRORUI|FOF_SILENT;
     77    (void)SHFileOperation(&shfo);
     78# endif
     79#else
     80    system("rm -rf " + safefile);
     81#endif
     82}
  • xapian-omega-1.0.7a/utils.h

    diff -u  xapian-omega-1.0.7a/utils.h.orig
    old new  
    2222
    2323#include <string>
    2424
     25#include <stdlib.h>
     26#include <sys/stat.h>
     27#include <sys/types.h>
     28#ifdef _MSC_VER
     29# include <direct.h>
     30# include <io.h>
     31#else
     32# include <unistd.h>
     33#endif
     34#include <ctype.h>
     35#include <fcntl.h>
     36
     37
    2538/** Converts year, month, day into an 8 character string like: "20061031". */
    2639std::string date_to_string(int year, int month, int day);
    2740
     
    3750/** Converts a string to an int. */
    3851int string_to_int(const std::string & s);
    3952
     53/* AVL */
     54using namespace std;
     55
     56void rmdir(const string &filename);
     57
     58/// Allow mkdir to work directly on C++ strings.
     59#ifdef __WIN32__
     60inline int mkdir(const string &filename, int /*mode*/) {
     61    return _mkdir(filename.c_str());
     62}
     63#else
     64inline int mkdir(const string &filename, mode_t mode) {
     65    return mkdir(filename.c_str(), mode);
     66}
     67#endif
     68
     69/// Allow stat to work directly on C++ strings.
     70inline int stat(const string &filename, struct stat *buf) {
     71    return stat(filename.c_str(), buf);
     72}
     73
     74/// Allow unlink to work directly on C++ strings.
     75inline int unlink(const string &filename) { return unlink(filename.c_str()); }
     76
     77/// Allow system to work directly on C++ strings.
     78inline int system(const string &command) { return system(command.c_str()); }
     79
    4080#endif
  • xapian-omega-1.0.7a/values.h

    diff -u  xapian-omega-1.0.7a/values.h.orig
    old new  
    4444enum value_slot {
    4545    VALUE_LASTMOD = 0,  // 4 byte big endian value - seconds since 1970.
    4646    VALUE_MD5 = 1       // 16 byte MD5 checksum of original document.
     47    VALUE_FILESIZE = 2  // filesize in bytes
    4748};
    4849
    4950inline uint32_t binary_string_to_int(const std::string &s)
  • xapian-omega-1.0.7a/xapian-omega.spec.in

    diff -u  xapian-omega-1.0.7a/xapian-omega.spec.in.orig
    old new  
    4545# Create /var directories
    4646mkdir -p %{buildroot}%{contentdir}/omega/data
    4747mkdir -p %{buildroot}%{contentdir}/omega/cdb
     48mkdir -p %{buildroot}%{contentdir}/omega/cache
    4849mkdir -p %{buildroot}%{logdir}/omega
    4950# Default templates
    5051mkdir -p %{buildroot}%{contentdir}/omega/templates
     
    7778/var/www/icons/omega
    7879%{_datadir}/%{name}
    7980%config(noreplace) /etc/omega.conf
    80 %doc %{_datadir}/doc/%{name}-%{version}
     81%docdir /usr/share/doc/%{name}-%{version}
     82%doc AUTHORS ChangeLog COPYING NEWS README TODO
    8183# man pages may be gzipped, hence the trailing wildcard.
    8284%{_mandir}/man1/omindex.1*
    8385%{_mandir}/man1/scriptindex.1*