summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartyn James Russell <mr@src.gnome.org>2008-09-26 10:41:53 +0000
committerMartyn James Russell <mr@src.gnome.org>2008-09-26 10:41:53 +0000
commitcaa9320c8ae7800acf2160701eb9284ac05e4eb9 (patch)
tree4e898755353a5326d40178bd3487508634a75b38
parent71721feab041175ea2b132ad4f1777a5c069abf5 (diff)
downloadtracker-caa9320c8ae7800acf2160701eb9284ac05e4eb9.tar.gz
Removed everything in preparation for bringing in new files
svn path=/trunk/; revision=2274
-rw-r--r--AUTHORS34
-rw-r--r--COPYING340
-rw-r--r--ChangeLog3353
-rw-r--r--INSTALL236
-rw-r--r--Makefile.am35
-rw-r--r--NEWS335
-rw-r--r--README467
-rw-r--r--TODO26
-rw-r--r--acinclude.m492
-rwxr-xr-xautogen.sh21
-rw-r--r--configure.ac872
-rw-r--r--data/Makefile.am26
-rw-r--r--data/english/Makefile.am5
-rw-r--r--data/english/errmsg.sysbin26026 -> 0 bytes
-rw-r--r--data/english/errmsg.txt5623
-rw-r--r--data/icons/16x16/Makefile.am4
-rw-r--r--data/icons/16x16/tracker.pngbin997 -> 0 bytes
-rw-r--r--data/icons/22x22/Makefile.am4
-rw-r--r--data/icons/22x22/tracker.pngbin1334 -> 0 bytes
-rw-r--r--data/icons/24x24/Makefile.am4
-rw-r--r--data/icons/24x24/tracker.pngbin1484 -> 0 bytes
-rw-r--r--data/icons/32x32/Makefile.am4
-rw-r--r--data/icons/32x32/tracker.pngbin2242 -> 0 bytes
-rw-r--r--data/icons/48x48/Makefile.am4
-rw-r--r--data/icons/48x48/tracker.pngbin4145 -> 0 bytes
-rw-r--r--data/icons/Makefile.am14
-rw-r--r--data/icons/scalable/Makefile.am4
-rw-r--r--data/icons/scalable/tracker.svg1347
-rw-r--r--data/languages/Makefile.am19
-rw-r--r--data/languages/stopwords.da101
-rw-r--r--data/languages/stopwords.de129
-rw-r--r--data/languages/stopwords.en743
-rw-r--r--data/languages/stopwords.es178
-rw-r--r--data/languages/stopwords.fi68
-rw-r--r--data/languages/stopwords.fr145
-rw-r--r--data/languages/stopwords.hu403
-rw-r--r--data/languages/stopwords.it134
-rw-r--r--data/languages/stopwords.nb117
-rw-r--r--data/languages/stopwords.nl48
-rw-r--r--data/languages/stopwords.pt147
-rw-r--r--data/languages/stopwords.ru126
-rw-r--r--data/languages/stopwords.sv104
-rw-r--r--data/services/Makefile.am13
-rw-r--r--data/services/application.metadata56
-rw-r--r--data/services/audio.metadata173
-rw-r--r--data/services/default.metadata113
-rw-r--r--data/services/default.service288
-rw-r--r--data/services/document.metadata63
-rw-r--r--data/services/email.metadata64
-rw-r--r--data/services/file.metadata95
-rw-r--r--data/services/image.metadata138
-rw-r--r--data/services/video.metadata51
-rw-r--r--data/sqlite-cache.sql69
-rw-r--r--data/sqlite-email.sql28
-rw-r--r--data/sqlite-metadata.sql64
-rw-r--r--data/sqlite-service-stored-procs.sql27
-rw-r--r--data/sqlite-service-triggers.sql13
-rw-r--r--data/sqlite-service-types.sql122
-rw-r--r--data/sqlite-service.sql99
-rw-r--r--data/sqlite-stored-procs.sql189
-rw-r--r--data/sqlite-tracker-triggers.sql9
-rw-r--r--data/sqlite-tracker.sql85
-rw-r--r--data/sqlite-triggers.sql0
-rw-r--r--data/sqlite-user-data.sql24
-rw-r--r--data/tracker-introspect.xml550
-rw-r--r--data/tracker-stop-words.txt109
-rw-r--r--data/tracker.cfg10
-rw-r--r--data/tracker.service.in3
-rw-r--r--docs/Makefile.am16
-rw-r--r--docs/tracker-applet.121
-rw-r--r--docs/tracker-extract.116
-rw-r--r--docs/tracker-files.131
-rw-r--r--docs/tracker-meta-folder.115
-rw-r--r--docs/tracker-preferences.117
-rw-r--r--docs/tracker-query.136
-rw-r--r--docs/tracker-search-tool.158
-rw-r--r--docs/tracker-search.139
-rw-r--r--docs/tracker-services.760
-rw-r--r--docs/tracker-stats.124
-rw-r--r--docs/tracker-status.117
-rw-r--r--docs/tracker-tag.145
-rw-r--r--docs/tracker-thumbnailer.148
-rw-r--r--docs/tracker.cfg.5206
-rw-r--r--docs/trackerd.1112
-rw-r--r--extensions/firefox-extension/Makefile53
-rw-r--r--extensions/firefox-extension/README34
-rw-r--r--extensions/firefox-extension/chrome.manifest6
-rwxr-xr-xextensions/firefox-extension/chrome/content/beagleAddFilter.js11
-rwxr-xr-xextensions/firefox-extension/chrome/content/beagleAddFilter.xul45
-rw-r--r--extensions/firefox-extension/chrome/content/beagleOverlay.js709
-rw-r--r--extensions/firefox-extension/chrome/content/beagleOverlay.xul125
-rw-r--r--extensions/firefox-extension/chrome/content/beaglePrefs.js324
-rw-r--r--extensions/firefox-extension/chrome/content/beaglePrefs.xul141
-rw-r--r--extensions/firefox-extension/chrome/content/contents.rdf34
-rw-r--r--extensions/firefox-extension/chrome/content/i18n.js54
-rw-r--r--extensions/firefox-extension/chrome/content/indexBookmark.js207
-rw-r--r--extensions/firefox-extension/chrome/content/indexLink.js338
-rwxr-xr-xextensions/firefox-extension/chrome/content/indexLink.xul35
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/debug/debug.js156
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/io/dir.js231
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/io/dirUtils.js185
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/io/file.js771
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/io/fileUtils.js598
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/io/filesystem.js648
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/jslib.js264
-rw-r--r--extensions/firefox-extension/chrome/content/jslib/modules.js74
-rw-r--r--extensions/firefox-extension/chrome/content/json.js287
-rw-r--r--extensions/firefox-extension/chrome/content/md5.js256
-rwxr-xr-xextensions/firefox-extension/chrome/content/utils.js51
-rw-r--r--extensions/firefox-extension/chrome/locale/en-US/beagle.dtd38
-rw-r--r--extensions/firefox-extension/chrome/locale/en-US/beagle.properties22
-rw-r--r--extensions/firefox-extension/chrome/locale/en-US/contents.rdf26
-rw-r--r--extensions/firefox-extension/chrome/skin/classic/beagle-big.pngbin1527 -> 0 bytes
-rw-r--r--extensions/firefox-extension/chrome/skin/classic/beagle-disabled.pngbin642 -> 0 bytes
-rw-r--r--extensions/firefox-extension/chrome/skin/classic/beagle-error.pngbin611 -> 0 bytes
-rw-r--r--extensions/firefox-extension/chrome/skin/classic/beagle.pngbin650 -> 0 bytes
-rw-r--r--extensions/firefox-extension/chrome/skin/classic/contents.rdf17
-rwxr-xr-xextensions/firefox-extension/chrome/skin/classic/overlay.css28
-rw-r--r--extensions/firefox-extension/firefox-extension-xesam.xpibin57382 -> 0 bytes
-rw-r--r--extensions/firefox-extension/install.rdf31
-rw-r--r--extensions/thunderbird-extension/Makefile48
-rw-r--r--extensions/thunderbird-extension/chrome.manifest5
-rw-r--r--extensions/thunderbird-extension/components/TrackerCommandLine.js186
-rw-r--r--extensions/thunderbird-extension/components/TrackerIndexer.js97
-rw-r--r--extensions/thunderbird-extension/components/TrackerQueue.js97
-rw-r--r--extensions/thunderbird-extension/components/TrackerSettings.js97
-rw-r--r--extensions/thunderbird-extension/content/contents.rdf34
-rw-r--r--extensions/thunderbird-extension/content/tracker.css12
-rw-r--r--extensions/thunderbird-extension/content/tracker.js122
-rw-r--r--extensions/thunderbird-extension/content/tracker.xul60
-rw-r--r--extensions/thunderbird-extension/content/trackerIndexer.js452
-rw-r--r--extensions/thunderbird-extension/content/trackerMailWindow.xul397
-rw-r--r--extensions/thunderbird-extension/content/trackerMessenger.xul187
-rw-r--r--extensions/thunderbird-extension/content/trackerPrefs.xul332
-rw-r--r--extensions/thunderbird-extension/content/trackerQueue.js256
-rw-r--r--extensions/thunderbird-extension/content/trackerService.js521
-rw-r--r--extensions/thunderbird-extension/content/trackerSettings.js207
-rw-r--r--extensions/thunderbird-extension/content/trackerUnindex.js394
-rw-r--r--extensions/thunderbird-extension/content/trackerUnindex.xul77
-rw-r--r--extensions/thunderbird-extension/content/trackerUtils.js32
-rw-r--r--extensions/thunderbird-extension/defaults/preferences/default.js11
-rw-r--r--extensions/thunderbird-extension/install.rdf36
-rw-r--r--extensions/thunderbird-extension/locale/en-US/contents.rdf23
-rw-r--r--extensions/thunderbird-extension/locale/en-US/strings.properties16
-rw-r--r--extensions/thunderbird-extension/locale/en-US/tracker.dtd50
-rw-r--r--extensions/thunderbird-extension/skin/classic/contents.rdf17
-rw-r--r--extensions/thunderbird-extension/skin/classic/overlay.css0
-rw-r--r--extensions/thunderbird-extension/skin/classic/tracker-disabled.pngbin1166 -> 0 bytes
-rw-r--r--extensions/thunderbird-extension/skin/classic/tracker-error.pngbin1166 -> 0 bytes
-rw-r--r--extensions/thunderbird-extension/skin/classic/tracker.pngbin1166 -> 0 bytes
-rw-r--r--extensions/thunderbird-extension/tracker.xpibin42433 -> 0 bytes
-rw-r--r--filters/Makefile.am1
-rw-r--r--filters/application/Makefile.am25
-rwxr-xr-xfilters/application/csv_filter23
-rwxr-xr-xfilters/application/msword_filter20
-rwxr-xr-xfilters/application/pdf_filter3
-rwxr-xr-xfilters/application/tab-separated-values_filter23
-rwxr-xr-xfilters/application/vnd.ms-excel_filter23
-rwxr-xr-xfilters/application/vnd.oasis.opendocument.presentation-template_filter3
-rwxr-xr-xfilters/application/vnd.oasis.opendocument.presentation_filter3
-rwxr-xr-xfilters/application/vnd.oasis.opendocument.spreadsheet-template_filter3
-rwxr-xr-xfilters/application/vnd.oasis.opendocument.spreadsheet_filter3
-rwxr-xr-xfilters/application/vnd.oasis.opendocument.text-template_filter3
-rwxr-xr-xfilters/application/vnd.oasis.opendocument.text_filter3
-rwxr-xr-xfilters/application/vnd.stardivision.writer_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.calc.template_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.calc_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.draw_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.impress.template_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.impress_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.writer.template_filter3
-rwxr-xr-xfilters/application/vnd.sun.xml.writer_filter3
-rwxr-xr-xfilters/application/x-abiword_filter17
-rwxr-xr-xfilters/application/x-gnumeric_filter23
-rw-r--r--filters/text/Makefile.am13
-rwxr-xr-xfilters/text/csv_filter23
-rwxr-xr-xfilters/text/djvu_filter3
-rwxr-xr-xfilters/text/html_filter15
-rwxr-xr-xfilters/text/spreadsheet_filter23
-rwxr-xr-xfilters/text/tab-separated-values_filter23
-rwxr-xr-xfilters/text/x-comma-separated-values_filter23
-rwxr-xr-xfilters/text/x-tex_filter5
-rwxr-xr-xfilters/text/xml_filter17
-rw-r--r--libtracker-gtk.pc.in12
-rw-r--r--po/ChangeLog928
-rw-r--r--po/LINGUAS38
-rw-r--r--po/POTFILES.in25
-rw-r--r--po/POTFILES.skip7
-rw-r--r--po/ar.po1496
-rw-r--r--po/be.po1431
-rw-r--r--po/be@latin.po1546
-rw-r--r--po/ca.po1612
-rw-r--r--po/cs.po1483
-rw-r--r--po/de.po1444
-rw-r--r--po/dz.po1035
-rw-r--r--po/el.po1934
-rw-r--r--po/en_GB.po1569
-rw-r--r--po/es.po1495
-rw-r--r--po/et.po978
-rw-r--r--po/fi.po1600
-rw-r--r--po/fr.po1506
-rw-r--r--po/gl.po997
-rw-r--r--po/he.po1438
-rw-r--r--po/hu.po1464
-rw-r--r--po/it.po1470
-rw-r--r--po/ja.po1427
-rw-r--r--po/ko.po1343
-rw-r--r--po/lt.po1494
-rw-r--r--po/mk.po1046
-rw-r--r--po/nb.po1430
-rw-r--r--po/nl.po1588
-rw-r--r--po/oc.po1428
-rw-r--r--po/pl.po1482
-rw-r--r--po/pt.po1506
-rw-r--r--po/pt_BR.po1555
-rw-r--r--po/ru.po1031
-rw-r--r--po/sk.po1537
-rw-r--r--po/sl.po1008
-rw-r--r--po/sv.po1569
-rw-r--r--po/th.po1455
-rw-r--r--po/zh_CN.po1487
-rw-r--r--python/FUSE/trackerfs.py279
-rw-r--r--python/Makefile.am2
-rw-r--r--python/SearchTool/COPYING340
-rw-r--r--python/SearchTool/README19
-rw-r--r--python/SearchTool/mainform.py191
-rwxr-xr-xpython/SearchTool/trackergui.py163
-rwxr-xr-xpython/applet/applet.py131
-rw-r--r--python/applet/applet.svg453
-rw-r--r--python/deskbar-handler/Makefile.am16
-rw-r--r--python/deskbar-handler/README0
-rw-r--r--python/deskbar-handler/tracker-handler-static.py71
-rw-r--r--python/deskbar-handler/tracker-handler.py402
-rw-r--r--python/deskbar-handler/tracker-module.py492
-rw-r--r--python/music/lyrics.py70
-rw-r--r--python/nautilus/README15
-rw-r--r--python/nautilus/tracker-tags-tab.py192
-rw-r--r--rdf-query-examples/80s-music.rdf15
-rw-r--r--rdf-query-examples/90s-music.rdf15
-rw-r--r--rdf-query-examples/all-documents.rdf8
-rw-r--r--rdf-query-examples/big-documents.rdf15
-rw-r--r--rdf-query-examples/wallpapers.rdf16
-rw-r--r--src/Makefile.am22
-rw-r--r--src/libstemmer/Copyright12
-rw-r--r--src/libstemmer/Makefile.am40
-rw-r--r--src/libstemmer/include/libstemmer.h93
-rw-r--r--src/libstemmer/libstemmer/libstemmer.c105
-rw-r--r--src/libstemmer/libstemmer/modules.h122
-rw-r--r--src/libstemmer/runtime/api.c82
-rw-r--r--src/libstemmer/runtime/api.h40
-rw-r--r--src/libstemmer/runtime/header.h71
-rw-r--r--src/libstemmer/runtime/utilities.c459
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_danish.c357
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_danish.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_dutch.c666
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_dutch.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_english.c1189
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_english.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_finnish.c821
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_finnish.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_french.c1309
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_french.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_german.c539
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_german.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_hungarian.c1239
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_hungarian.h16
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_italian.c1126
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_italian.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_norwegian.c315
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_norwegian.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_porter.c807
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_porter.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_portuguese.c1068
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_portuguese.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_russian.c722
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_russian.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_spanish.c1150
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_spanish.h29
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_swedish.c326
-rw-r--r--src/libstemmer/src_c/stem_UTF_8_swedish.h29
-rw-r--r--src/libtracker-common/Makefile.am19
-rw-r--r--src/libtracker-common/tracker-config.c2318
-rw-r--r--src/libtracker-common/tracker-config.h153
-rw-r--r--src/libtracker-common/tracker-configuration.c487
-rw-r--r--src/libtracker-common/tracker-configuration.h78
-rw-r--r--src/libtracker-common/tracker-language.c314
-rw-r--r--src/libtracker-common/tracker-language.h41
-rw-r--r--src/libtracker-common/tracker-log.c220
-rw-r--r--src/libtracker-common/tracker-log.h44
-rw-r--r--src/libtracker-gtk/Makefile.am31
-rw-r--r--src/libtracker-gtk/tracker-gtk.h33
-rw-r--r--src/libtracker-gtk/tracker-keyword-store.c256
-rw-r--r--src/libtracker-gtk/tracker-keyword-store.h86
-rw-r--r--src/libtracker-gtk/tracker-metadata-tile.c1484
-rw-r--r--src/libtracker-gtk/tracker-metadata-tile.h59
-rw-r--r--src/libtracker-gtk/tracker-tag-bar.c432
-rw-r--r--src/libtracker-gtk/tracker-tag-bar.h66
-rw-r--r--src/libtracker-gtk/tracker-ui.c64
-rw-r--r--src/libtracker-gtk/tracker-ui.h45
-rw-r--r--src/libtracker-gtk/tracker-utils.c114
-rw-r--r--src/libtracker-gtk/tracker-utils.h37
-rw-r--r--src/libtracker/COPYING.LIB510
-rw-r--r--src/libtracker/Makefile.am82
-rw-r--r--src/libtracker/tracker-files.c137
-rw-r--r--src/libtracker/tracker-get-meta-for-folder.c115
-rw-r--r--src/libtracker/tracker-query.c213
-rw-r--r--src/libtracker/tracker-search.c205
-rw-r--r--src/libtracker/tracker-stats.c124
-rw-r--r--src/libtracker/tracker-status.c68
-rw-r--r--src/libtracker/tracker-tag.c287
-rw-r--r--src/libtracker/tracker-unique.c187
-rw-r--r--src/libtracker/tracker.c1561
-rw-r--r--src/libtracker/tracker.h227
-rw-r--r--src/qdbm/Makefile.am20
-rw-r--r--src/qdbm/depot.c2226
-rw-r--r--src/qdbm/depot.h492
-rw-r--r--src/qdbm/myconf.c1113
-rw-r--r--src/qdbm/myconf.h593
-rw-r--r--src/text-filters/Makefile.am1
-rw-r--r--src/text-filters/ooo_converter/ChangeLog32
-rw-r--r--src/text-filters/ooo_converter/Makefile.am4
-rw-r--r--src/text-filters/ooo_converter/copying340
-rw-r--r--src/text-filters/ooo_converter/install19
-rw-r--r--src/text-filters/ooo_converter/main.c50
-rw-r--r--src/text-filters/ooo_converter/o3read.144
-rw-r--r--src/text-filters/ooo_converter/o3read.c435
-rw-r--r--src/text-filters/ooo_converter/o3read.h36
-rw-r--r--src/text-filters/ooo_converter/o3tohtml.11
-rw-r--r--src/text-filters/ooo_converter/o3tohtml.c357
-rw-r--r--src/text-filters/ooo_converter/o3totxt.11
-rw-r--r--src/text-filters/ooo_converter/o3totxt.c156
-rw-r--r--src/text-filters/ooo_converter/readme15
-rw-r--r--src/text-filters/ooo_converter/todo5
-rw-r--r--src/text-filters/ooo_converter/utf8tolatin1.132
-rw-r--r--src/text-filters/ooo_converter/utf8tolatin1.c152
-rw-r--r--src/text-filters/ooo_converter/xMakefile86
-rw-r--r--src/tracker-applet/Makefile.am40
-rw-r--r--src/tracker-applet/tracker-applet-default.pngbin1210 -> 0 bytes
-rw-r--r--src/tracker-applet/tracker-applet-indexing1.pngbin1130 -> 0 bytes
-rw-r--r--src/tracker-applet/tracker-applet-indexing2.pngbin1153 -> 0 bytes
-rw-r--r--src/tracker-applet/tracker-applet-marshallers.c141
-rw-r--r--src/tracker-applet/tracker-applet-marshallers.h31
-rw-r--r--src/tracker-applet/tracker-applet-paused.pngbin1098 -> 0 bytes
-rw-r--r--src/tracker-applet/tracker-applet-prefs.glade231
-rw-r--r--src/tracker-applet/tracker-applet.c2048
-rw-r--r--src/tracker-applet/tracker-applet.desktop.in.in16
-rw-r--r--src/tracker-applet/tracker-applet.h61
-rw-r--r--src/tracker-extract/Makefile.am133
-rw-r--r--src/tracker-extract/tracker-extract-abw.c108
-rw-r--r--src/tracker-extract/tracker-extract-exif.c170
-rw-r--r--src/tracker-extract/tracker-extract-gstreamer.c737
-rw-r--r--src/tracker-extract/tracker-extract-html.c207
-rw-r--r--src/tracker-extract/tracker-extract-imagemagick.c100
-rw-r--r--src/tracker-extract/tracker-extract-libxine.c255
-rw-r--r--src/tracker-extract/tracker-extract-mp3.c1094
-rw-r--r--src/tracker-extract/tracker-extract-mplayer.c243
-rw-r--r--src/tracker-extract/tracker-extract-msoffice.c203
-rw-r--r--src/tracker-extract/tracker-extract-oasis.c216
-rw-r--r--src/tracker-extract/tracker-extract-pdf.c114
-rw-r--r--src/tracker-extract/tracker-extract-png.c176
-rw-r--r--src/tracker-extract/tracker-extract-ps.c329
-rw-r--r--src/tracker-extract/tracker-extract-totem.c87
-rw-r--r--src/tracker-extract/tracker-extract-vorbis.c204
-rw-r--r--src/tracker-extract/tracker-extract-xmp.c50
-rw-r--r--src/tracker-extract/tracker-extract.c385
-rw-r--r--src/tracker-extract/tracker-extract.h42
-rw-r--r--src/tracker-extract/tracker-xmp.c234
-rw-r--r--src/tracker-extract/tracker-xmp.h27
-rw-r--r--src/tracker-preferences/Makefile.am41
-rw-r--r--src/tracker-preferences/tracker-preferences-dialogs.c85
-rw-r--r--src/tracker-preferences/tracker-preferences-dialogs.h31
-rw-r--r--src/tracker-preferences/tracker-preferences-main.c45
-rw-r--r--src/tracker-preferences/tracker-preferences-utils.c137
-rw-r--r--src/tracker-preferences/tracker-preferences-utils.h48
-rw-r--r--src/tracker-preferences/tracker-preferences.c1173
-rw-r--r--src/tracker-preferences/tracker-preferences.desktop.in.in14
-rw-r--r--src/tracker-preferences/tracker-preferences.glade1431
-rw-r--r--src/tracker-preferences/tracker-preferences.h50
-rw-r--r--src/tracker-search-tool/Makefile.am51
-rw-r--r--src/tracker-search-tool/sexy-icon-entry.c969
-rw-r--r--src/tracker-search-tool/sexy-icon-entry.h101
-rw-r--r--src/tracker-search-tool/thumbnail_frame.pngbin908 -> 0 bytes
-rw-r--r--src/tracker-search-tool/tracker-search-tool-callbacks.c1844
-rw-r--r--src/tracker-search-tool/tracker-search-tool-callbacks.h211
-rw-r--r--src/tracker-search-tool/tracker-search-tool-support.c1579
-rw-r--r--src/tracker-search-tool/tracker-search-tool-support.h186
-rw-r--r--src/tracker-search-tool/tracker-search-tool.c2279
-rw-r--r--src/tracker-search-tool/tracker-search-tool.desktop.in.in15
-rw-r--r--src/tracker-search-tool/tracker-search-tool.h309
-rw-r--r--src/tracker-thumbnailer/Makefile.am15
-rw-r--r--src/tracker-thumbnailer/md5.c393
-rw-r--r--src/tracker-thumbnailer/md5.h94
-rw-r--r--src/tracker-thumbnailer/tracker-thumbnailer.c286
-rw-r--r--src/trackerd/Makefile.am159
-rw-r--r--src/trackerd/linux-inotify-syscalls.h184
-rw-r--r--src/trackerd/mingw-compat.h109
-rw-r--r--src/trackerd/tracker-apps.c203
-rw-r--r--src/trackerd/tracker-apps.h33
-rw-r--r--src/trackerd/tracker-cache.c421
-rw-r--r--src/trackerd/tracker-cache.h32
-rw-r--r--src/trackerd/tracker-convert-file.c133
-rw-r--r--src/trackerd/tracker-db-email.c798
-rw-r--r--src/trackerd/tracker-db-email.h68
-rw-r--r--src/trackerd/tracker-db-interface-sqlite.c600
-rw-r--r--src/trackerd/tracker-db-interface-sqlite.h70
-rw-r--r--src/trackerd/tracker-db-interface.c626
-rw-r--r--src/trackerd/tracker-db-interface.h141
-rw-r--r--src/trackerd/tracker-db-sqlite.c5315
-rw-r--r--src/trackerd/tracker-db-sqlite.h229
-rw-r--r--src/trackerd/tracker-db.c1254
-rw-r--r--src/trackerd/tracker-db.h55
-rw-r--r--src/trackerd/tracker-dbus-files.c1136
-rw-r--r--src/trackerd/tracker-dbus-files.h43
-rw-r--r--src/trackerd/tracker-dbus-keywords.c659
-rw-r--r--src/trackerd/tracker-dbus-keywords.h34
-rw-r--r--src/trackerd/tracker-dbus-metadata.c766
-rw-r--r--src/trackerd/tracker-dbus-metadata.h38
-rw-r--r--src/trackerd/tracker-dbus-methods.c592
-rw-r--r--src/trackerd/tracker-dbus-methods.h58
-rw-r--r--src/trackerd/tracker-dbus-search.c923
-rw-r--r--src/trackerd/tracker-dbus-search.h36
-rw-r--r--src/trackerd/tracker-dbus.c678
-rw-r--r--src/trackerd/tracker-dbus.h191
-rw-r--r--src/trackerd/tracker-email-evolution.c2812
-rw-r--r--src/trackerd/tracker-email-kmail.c1134
-rw-r--r--src/trackerd/tracker-email-modest.c1920
-rw-r--r--src/trackerd/tracker-email-modest.h1
-rw-r--r--src/trackerd/tracker-email-thunderbird.c441
-rw-r--r--src/trackerd/tracker-email-utils.c1082
-rw-r--r--src/trackerd/tracker-email-utils.h178
-rw-r--r--src/trackerd/tracker-email.c142
-rw-r--r--src/trackerd/tracker-email.h45
-rw-r--r--src/trackerd/tracker-fam.c398
-rw-r--r--src/trackerd/tracker-hal.c906
-rw-r--r--src/trackerd/tracker-hal.h61
-rw-r--r--src/trackerd/tracker-indexer.c1318
-rw-r--r--src/trackerd/tracker-indexer.h97
-rw-r--r--src/trackerd/tracker-inotify.c658
-rw-r--r--src/trackerd/tracker-ioprio.c148
-rw-r--r--src/trackerd/tracker-ioprio.h28
-rw-r--r--src/trackerd/tracker-metadata.c255
-rw-r--r--src/trackerd/tracker-metadata.h37
-rw-r--r--src/trackerd/tracker-os-dependant-unix.c167
-rw-r--r--src/trackerd/tracker-os-dependant-win.c118
-rw-r--r--src/trackerd/tracker-os-dependant.h32
-rw-r--r--src/trackerd/tracker-parser.c632
-rw-r--r--src/trackerd/tracker-parser.h49
-rw-r--r--src/trackerd/tracker-poll.c34
-rw-r--r--src/trackerd/tracker-process-files.c1900
-rw-r--r--src/trackerd/tracker-process-files.h51
-rw-r--r--src/trackerd/tracker-process-requests.c407
-rw-r--r--src/trackerd/tracker-process-requests.h25
-rw-r--r--src/trackerd/tracker-query-tree.c810
-rw-r--r--src/trackerd/tracker-query-tree.h90
-rw-r--r--src/trackerd/tracker-rdf-query.c1309
-rw-r--r--src/trackerd/tracker-rdf-query.h33
-rw-r--r--src/trackerd/tracker-service-manager.c433
-rw-r--r--src/trackerd/tracker-service-manager.h58
-rw-r--r--src/trackerd/tracker-service.c787
-rw-r--r--src/trackerd/tracker-service.h111
-rw-r--r--src/trackerd/tracker-utils.c2639
-rw-r--r--src/trackerd/tracker-utils.h544
-rw-r--r--src/trackerd/tracker-watch.h38
-rw-r--r--src/trackerd/tracker-win-fs-changes.c260
-rw-r--r--src/trackerd/trackerd.c1092
-rw-r--r--src/xdgmime/Makefile.am26
-rw-r--r--src/xdgmime/fnmatch.c223
-rw-r--r--src/xdgmime/fnmatch.h63
-rw-r--r--src/xdgmime/safe-ctype.c163
-rw-r--r--src/xdgmime/safe-ctype.h100
-rw-r--r--src/xdgmime/xdgmime.c854
-rw-r--r--src/xdgmime/xdgmime.h111
-rw-r--r--src/xdgmime/xdgmimealias.c184
-rw-r--r--src/xdgmime/xdgmimealias.h50
-rw-r--r--src/xdgmime/xdgmimecache.c900
-rw-r--r--src/xdgmime/xdgmimecache.h63
-rw-r--r--src/xdgmime/xdgmimeglob.c547
-rw-r--r--src/xdgmime/xdgmimeglob.h67
-rw-r--r--src/xdgmime/xdgmimeint.c154
-rw-r--r--src/xdgmime/xdgmimeint.h73
-rw-r--r--src/xdgmime/xdgmimemagic.c810
-rw-r--r--src/xdgmime/xdgmimemagic.h56
-rw-r--r--src/xdgmime/xdgmimeparent.c219
-rw-r--r--src/xdgmime/xdgmimeparent.h50
-rw-r--r--thumbnailers/Makefile.am1
-rw-r--r--thumbnailers/application/Makefile.am9
-rwxr-xr-xthumbnailers/application/pdf_thumbnailer4
-rwxr-xr-xthumbnailers/application/vnd.oasis.opendocument.graphics_thumbnailer3
-rwxr-xr-xthumbnailers/application/vnd.oasis.opendocument.presentation_thumbnailer3
-rwxr-xr-xthumbnailers/application/vnd.oasis.opendocument.spreadsheet_thumbnailer3
-rwxr-xr-xthumbnailers/application/vnd.oasis.opendocument.text_thumbnailer3
-rw-r--r--thumbnailers/image/Makefile.am5
-rwxr-xr-xthumbnailers/image/gif_thumbnailer3
-rwxr-xr-xthumbnailers/image/jpeg_thumbnailer3
-rwxr-xr-xthumbnailers/image/png_thumbnailer3
-rwxr-xr-xthumbnailers/image/tiff_thumbnailer3
-rw-r--r--tracker.pc.in12
-rw-r--r--tracker.spec121
-rw-r--r--trackerd.desktop.in.in20
499 files changed, 0 insertions, 171459 deletions
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 14b4b4542..000000000
--- a/AUTHORS
+++ /dev/null
@@ -1,34 +0,0 @@
-Jamie McCracken <jamiemcc at gnome.org>
-Laurent Aguerreche <laurent.aguerreche at free fr>
-Luca Ferretti <elle.uca@libero.it>
-Eugenio <me at eugesoftware com>
-Jerry Tan < jerry.tan at sun.com>
-Halton huo <halton.huo at sun.com>
-Michael Biebl <mbiebl at gmail com>
-Edward Duffy <eduffy at gmail com>
-Gergan Penkov <gergan at gmail com>
-Deji Akingunola <dakingun gmail com>
-Julien <julienc psychologie-fr org>
-Tom <tpgww@onepost.net>
-Samuel Cormier-Iijima <sciyoshi at gmail com>
-Eskil Bylund <eskil at letterboxes org>
-Ulrik Mikaelsson <ulrik mikaelsson gmail com>
-tobutaz <tobutaz gmail com>
-Mikkel Kamstrup Erlandsen <mikkel kamstrup gmail com>
-Baptiste Mille-Mathias <baptiste.millemathias gmail com>
-Richard Quirk <quirky@zoom.co.uk>
-Marcus Fritzsch <fritschy at googlemail com>
-Jedy Wang <Jedy Wang at Sun COM>
-Anders Aagaard <aagaande at gmail com>
-Fabien VALLON <fabien at sonappart net>
-Jaime Frutos Morales <acidborg at gmail com>
-Christoph Laimburg <christoph laimburg at rolmail net>
-Dan Nicolaescu <dann at ics uci edu>
-Nate Nielsen <nielsen at memberwewbs com>
-Saleem Abdulrasool <compnerd at gentoo org>
-Tshepang Lekhonkhobe <tshepang@gmail.com>
-John Stowers <john.stowers@gmail.com>
-Neil Patel <njpatel@gmail.com>
-Anders Rune Jensen <anders@iola.dk>
-Michal Pryc <Michal.Pryc at Sun.Com>
-Halton Huo <Halton Huo at sun com>
diff --git a/COPYING b/COPYING
deleted file mode 100644
index d60c31a97..000000000
--- a/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 1f22e889c..000000000
--- a/ChangeLog
+++ /dev/null
@@ -1,3353 +0,0 @@
-2008-09-26 Martyn Russell <martyn@imendio.com>
-
- * Pre-merge with indexer-split marker.
-
-2008-05-27 Mikael Ottela <mikael.ottela@ixonos.com>
-
- * src/trackerd/tracker-rdf-query.c
-
- A bug fix that removes a potential double free from the rdf query.
-
-2008-05-26 Ivan Frade <ivan.frade@nokia.com>
-
- Patch from Mikael Ottela <mikael.ottela@ixonos.com>
-
- * src/trackerd/tracker-dbus-search.c
- * src/trackerd/tracker-dbus.c
- * src/trackerd/tracker-dbus-metadata.c
- * src/trackerd/tracker-rdf-query.c
- * src/trackerd/tracker-rdf-query.h
- * src/trackerd/tracker-db-sqlite.c
- * src/libtracker/tracker.h
- * src/libtracker/Makefile.am
- * src/libtracker/tracker.c
- * data/sqlite-stored-procs.sql
- * data/tracker-introspect.xml: Updating GetUniqueValues method.
- Now a RDF Query can be used to filter the results.
-
-2008-05-26 Philip Van Hoof <pvanhoof@gnome.org>
-
- * src/trackerd/tracker-process-files.c: Fixed the build for
- --disable-hal (trivial patch)
-
-2008-05-08 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * src/trackerd/trackerd.c
- * src/trackerd/tracker-process-files.[ch]
- * src/trackerd/tracker-db.c
-
- Added tracker_process_files_free_temp_black_list to not free anywhere
- memory obtained with tracker_process_files_get_temp_black_list. Also
- fixed random crashes with tracker_process_files_set_temp_black_list.
-
-
-2008-04-28 Patch from Iago Toral Quiroga <itoral@igalia.com> (reviewed by Jamie)
-
- * src/trackerd/tracker-process-requests.c
- * src/trackerd/tracker-dbus.c
- * src/trackerd/tracker-dbus.h
- * src/trackerd/tracker-dbus-metadata.c
- * src/trackerd/tracker-dbus-metadata.h
- * src/trackerd/tracker-db-sqlite.c
- * src/trackerd/tracker-db-sqlite.h
- * src/libtracker/tracker.h
- * src/libtracker/tracker.c
-
- Added GetUniqueValues dbus method
-
-
-2008-04-23 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/tracker-preferences/tracker-preferences.c:
- (tracker_preferences_init):
- * src/tracker-preferences/tracker-preferences.glade:
- Set alignment of buttons in glade rather than in code
-
-
-2008-04-23 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/libtracker-common/tracker-config.c:
- (config_create_with_defaults):
- * src/libtracker-common/tracker-configuration.c:
- (write_default_config), (string_replace),
- (tracker_configuration_load):
- Fix spelling of 'Portuguese'. Fixes bug #467151.
-
-
-2008-04-23 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
- * README and TODO updates
-
-
-2008-04-23 Patch from Marcin Banasiak
-
- * src/tracker-preferences/tracker-preferences.c
- Use strcmp instead of strcasecmp when comparing file names
-
-
-
-2008-04-23 Patch from Joshua Gerrish
-
- * src/libtracker-common/tracker-configuration.c
- Config var initialised + fix string_replace funtion
-
- * src/trackerd/trackerd.c
- correct config/command line usage of verbosity
-
-
-2008-04-21 Carlos Garnacho <carlos@imendio.com>
-
- Implement a database abstraction interface, with a sqlite
- implementation. Queries/procedures return a TrackerDBResultSet object,
- which simplifies result data extraction. Fixes bug #528051.
-
- * src/trackerd/tracker-db-interface.[ch]: Added. Interface to access
- databases.
-
- * src/trackerd/tracker-db-interface-sqlite.[ch]: Added. Sqlite
- implementation.
-
- * src/trackerd/Makefile.am: add these files.
-
- * src/trackerd/tracker-db-email.[ch], tracker-db-sqlite.[ch],
- tracker-db.c, tracker-dbus-files.c, tracker-dbus-keywords.c,
- tracker-dbus-metadata.c, tracker-dbus-search.c,
- tracker-email-evolution.c, tracker-email-modest.c, tracker-inotify.c,
- tracker-process-files.c, tracker-process-requests.c, trackerd.c: Use
- the new API.
-
- * src/trackerd/tracker-dbus-methods.[ch]: Modify to build a
- DBusMessage from a TrackerDBResultSet.
-
- * src/trackerd/tracker-email.c: Report the error in case the mail
- client module can't be loaded.
-
-
-
-
-
-
-2008-04-17 Philip Van Hoof <pvanhoof@gnome.org>
-
- * src/trackerd/tracker-email-modest.c
- * src/trackerd/tracker-utils.c
- * src/trackerd/tracker-utils.h
- * src/trackerd/trackerd.c
- * src/trackerd/tracker-email-evolution.c
- * src/trackerd/tracker-process-files.c
- * src/trackerd/tracker-indexer.c
-
- Introduced tracker_set_status
-
-2008-04-16 Patch from Szilveszter Farkas <szilveszter.farkas@gmail.com>
-
- * src/libstemmer/src_c/stem_UTF_8_hungarian.c
- * src/libstemmer/src_c/stem_UTF_8_hungarian.h
- * src/libstemmer/Makefile.am
- * src/libtracker-common/tracker-language.c
- * src/tracker-preferences/tracker-preferences.glade
- * data/languages/stopwords.hu
- * data/languages/Makefile.am
-
- Added hungarian stemmer and stopword list
-
-2008-04-11 Martyn Russell <martyn@imendio.com>
-
- * configure.ac:
- * src/libtracker-common/tracker-config.[ch]: Added options
- "index-mounted-directories" and "index-removable-devices".
-
- * src/trackerd/Makefile.am:
- * src/trackerd/tracker-hal.[ch]: Added to do all things HAL.
-
- * src/trackerd/tracker-db.c:
- * src/trackerd/tracker-dbus-methods.c:
- * src/trackerd/tracker-email-kmail.c:
- * src/trackerd/tracker-fam.c:
- * src/trackerd/tracker-indexer.c:
- * src/trackerd/tracker-inotify.c:
- * src/trackerd/tracker-process-files.[ch]:
- * src/trackerd/tracker-utils.[ch]:
- * src/trackerd/trackerd.c: Moved a LOT of code out of
- tracker-utils.[ch] and into tracker-process-files.[ch] since
- that's the only place they were used. Moved HAL code out to new
- module. Fixes bug #503725.
-
-2008-04-11 Philip Van Hoof <pvanhoof@gnome.org>
-
- * src/trackerd/tracker-email-modest.c
- * src/trackerd/tracker-utils.c
- * src/trackerd/tracker-utils.h
- * src/trackerd/tracker-email-utils.c
- * src/trackerd/tracker-email-utils.h
- * src/trackerd/trackerd.c: Added stopping watching E-mail service
- paths. Also fixes a potential memory leak with the Hashtable
- service_directory_table
-
-2008-04-10 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-email.c (tracker_email_index_file): Revert last
- change, it was already fixed in r1261.
-
-2008-04-10 Carlos Garnacho <carlos@imendio.com>
-
- Add a query extension tree, at the moment supports And and Or
- operations. Fixes #509607.
-
- * src/trackerd/tracker-query-tree.[ch]: New files, implement the
- expression tree, and return a hit list based on the evaluation of the
- search terms with the logical expressions.
- * src/trackerd/Makefile.am: Added these files.
- * src/trackerd/tracker-indexer.[ch]: Remove SearchQuery related code,
- implemented now by TrackerQueryTree.
- * src/trackerd/tracker-db-sqlite.c:
- * src/trackerd/tracker-dbus-search.c: Use new TrackerQueryTree API.
-
-2008-04-10 Philip Van Hoof <pvanhoof@gnome.org>
-
- * python/deskbar-handler/tracker-module.py
- * python/deskbar-handler/tracker-handler.py
- * src/trackerd/tracker-db-email.c
- * src/trackerd/tracker-db-email.h
- * src/trackerd/tracker-email-thunderbird.c
- * src/trackerd/tracker-dbus-search.c
- * src/trackerd/tracker-email-modest.c
- * src/trackerd/tracker-email-modest.h
- * src/trackerd/tracker-email-utils.c
- * src/trackerd/tracker-email.c
- * src/trackerd/tracker-email-utils.h
- * src/trackerd/tracker-email-evolution.c
- * src/trackerd/tracker-email-kmail.c
- * src/trackerd/Makefile.am
- * src/libtracker-common/tracker-configuration.c
- * src/tracker-search-tool/tracker-search-tool-callbacks.c
- * src/tracker-preferences/tracker-preferences.glade
- * src/tracker-preferences/tracker-preferences.c
- * docs/tracker.cfg.5
- * data/services/default.service: Added support for the mobile
- E-mail client Modest
-
-2008-04-09 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-process-files.c (process_index_entity): Use the
- correct database when indexing mail archives.
-
-2008-04-08 Ivan Frade <ivan.frade@nokia.com>
-
- * data/sqlite-stored-procs.sql: Fixed names in stored proc.
-
-2008-04-08 Claude Paroz <claude@2xlibre.net>
-
- * src/tracker-applet/tracker-applet-prefs.glade: Removed translatable
- property from stock label.
-
-2008-04-08 Ivan Frade <ivan.frade@nokia.com>
-
- Hide indexer struct to improve modularity. Bug #525403
-
- * src/trackerd/tracker-utils.h: WordDetails moved to the indexer.
-
- * src/trackerd/tracker-dbus-search.c: Levenshtein algorythm moved
- to the indexer.
-
- * src/trackerd/tracker-cache.c:
- * src/trackerd/trackerd.c: Updated to new functions
-
- * src/trackerd/tracker-indexer.[ch]: Hide indexer struct
- implementation. Added Levenshtein code and WordDetails struct.
-
-
-2008-04-08 Ivan Frade <ivan.frade@nokia.com>
-
- * src/trackerd/tracker-service.h
- * src/trackerd/tracker-service-manager.c
- * src/trackerd/tracker-service-manager.h
- * src/trackerd/tracker-service.c: Added files missing in previous
- commit.
-
-2008-04-08 Ivan Frade <ivan.frade@nokia.com>
-
- Service type information encapsulated in TrackerService GObject.
- Service-type/mime/mime prefixes relations in tracker_service_manager.
- Bug #523200
-
- * data/services/default.service: Add HasFulltext, HasMetadata,
- HasThumbs properties with proper values.
-
- * data/sqlite-stored-procs.sql: Add method to obtain service
- type related mimes.
-
- * src/trackerd/Makefile.am: Add new files for compilation.
-
- * src/trackerd/tracker-process-files.c:
- * src/trackerd/trackerd.c:
- * src/trackerd/tracker-dbus-keywords.c
- * src/trackerd/tracker-dbus-search.c
- * src/trackerd/tracker-dbus-files.c:
- * src/trackerd/tracker-dbus-metadata.c
- * src/trackerd/tracker-dbus-methods.c:
- * src/trackerd/tracker-rdf-query.c
- * src/trackerd/tracker-db-sqlite.h
- * src/trackerd/tracker-db.c
- * src/trackerd/tracker-db-email.c: Use new methods.
-
- * src/trackerd/tracker-db-sqlite.c: Use new methods.
- (tracker_db_mime_query): New helper function to obtain mime and mime
- prefixes for a service type.
- (tracker_db_get_mimes_for_service_id):
- (tracker_db_get_mime_prefixes_for_service_id): New wrapper functions to
- tracker_db_mime_query.
- (db_row_to_service): Convert a service type row in the database to
- a new TrackerService object.
-
- * src/tracker-preferences/tracker-preferences.c:
- * src/trackerd/tracker-dbus.[ch]: renamed TRACKER_SERVICE to
- TRACKER_DBUS_SERVICE
-
- * src/trackerd/tracker-indexer.c: Reformatted code.
-
- * src/trackerd/tracker-metadata.c: Removed hardcoded mimes and
- logic to solve mime->service_type
-
- * src/trackerd/tracker-service-manager.[ch]: Code handling service
- types, mimes and mime prefixes.
-
- * src/trackerd/tracker-service.[ch]: GObject representing a
- service type
-
- * src/trackerd/tracker-utils.[ch]: Removed ServiceDef struct and
- related methods.
-
-2008-04-08 Michael Biebl <mbiebl@gmail.com>
-
- * NEWS: Revamp the NEWS file. Patch by Tshepang Lekhonkhobe.
- * README: Update the documentation about compilation, runtime
- requirements, configuration and usage. Patch by Tshepang Lekhonkhobe.
-
-2008-04-07 Ivan Frade <ivan.frade@nokia.com>
-
- Using standard C functions to parse dates. Bug #526727
- Replaced iso8160 with iso8601
-
- * tracker-extract.[ch]: Replaced tracker_generic_data_extractor
- and his auxiliar functions with tracker_generic_date_to_iso8601,
- strftime and strptime.
-
- * tracker-extract-ps.c:
- * tracker-extract-png.c:
- * tracker-extract-exif.c: Updated to use the new function.
-
-2008-04-07 Carlos Garnacho <carlos@imendio.com>
-
- Make Mail indexing modular. Bug #526761.
-
- * src/libtracker-common/tracker-config.[ch]: Add a string
- configuration parameter instead of a boolean value for each mail
- client.
-
- * src/trackerd/Makefile.am: Build mail client dependent code in
- separate modules
-
- * src/trackerd/tracker-email-evolution.c:
- * src/trackerd/tracker-email-kmail.c:
- * src/trackerd/tracker-email-thunderbird.c: Modified to run as a
- module.
-
- * src/trackerd/tracker-email-evolution.h:
- * src/trackerd/tracker-email-kmail.h:
- * src/trackerd/tracker-email-thunderbird.h: Removed, no longer
- necessary. The three modules share now the same public interface,
- and these are called through GModule.
-
- * src/trackerd/tracker-email.[ch]: Use GModule to load the selected
- mail client code and call the module methods.
-
- * src/trackerd/tracker-email-utils.c:
- * src/trackerd/tracker-process-files.c:
- * src/trackerd/trackerd.c:
- * src/trackerd/tracker-dbus-methods: Change to work with modular mail
- indexing.
-
-2008-03-29 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * src/tracker-preferences/tracker-preferences.c:
- avoid tracker-preference crashes when configuration file does not
- have a "/Indexing/Language" entry.
-
-2008-03-28 Jerry Tan <jerry.tan@sun.com>
-
- * src/libtracker-common/tracker-configuration.c:
- to make it build on solaris with sunstudio.
-
-2008-03-27 Martyn Russell <martyn@imendio.com>
-
- * src/trackerd/tracker-parser.c: Fix compiler warning.
-
-2008-03-27 Martyn Russell <martyn@imendio.com>
-
- * data/sqlite-stored-procs.sql:
- * src/trackerd/tracker-dbus-files.c:
- (tracker_dbus_method_files_get_text_contents): Implemented the
- GetTextContents method. This fixes bug #514553.
-
-2008-03-26 Martyn Russell <martyn@imendio.com>
-
- * src/trackerd/Makefile.am:
- * src/trackerd/tracker-process-files.[ch]:
- * src/trackerd/tracker-process-requests.[ch]:
- * src/trackerd/trackerd.c: Added these files to split out the
- indexing functionality which was in trackerd.c. Fixes bug #521803.
-
- * src/trackerd/tracker-utils.h: Removed two members of the Tracker
- struct which are not used globally.
-
-2008-03-17 Martyn Russell <martyn@imendio.com>
-
- * src/libtracker-common/tracker-log.c:
- (tracker_log_init): Safe guard initialising the tracker log more
- than once. Patch by Ivan Frade.
-
-2008-03-10 Martyn Russell <martyn@imendio.com>
-
- * src/libtracker-common/tracker-configuration.c: (string_replace):
- * src/libtracker-gtk/tracker-keyword-store.c:
- (tracker_keyword_store_drag_data_get):
- * src/libtracker-gtk/tracker-metadata-tile.c: (_int_to_label):
- * src/qdbm/myconf.c: (_qdbm_mmap):
- * src/text-filters/ooo_converter/ChangeLog:
- * src/text-filters/ooo_converter/o3read.c:
- * src/tracker-applet/tracker-applet.c: (reindex):
- * src/tracker-search-tool/tracker-search-tool.c:
- * src/trackerd/tracker-email-thunderbird.c:
- * src/trackerd/tracker-indexer.c:
- * src/trackerd/trackerd.c: (get_update_count): Fixed all warnings
- generated when building the tracker project with the exception of
- xdgmime which is imported. This fixes bug #520789.
-
-2008-03-10 Martyn Russell <martyn@imendio.com>
-
- * src/trackerd/tracker-cache.c:
- * src/trackerd/tracker-db-sqlite.c:
- * src/trackerd/tracker-db.c:
- * src/trackerd/tracker-dbus-methods.c:
- * src/trackerd/tracker-dbus-search.c:
- * src/trackerd/tracker-dbus.c:
- * src/trackerd/tracker-email-evolution.c:
- * src/trackerd/tracker-email-thunderbird.c:
- * src/trackerd/tracker-email-utils.c:
- * src/trackerd/tracker-utils.h: Fix missing
- libtracker-common/tracker-config.h and
- libtracker-common/tracker-log.h dependencies which requires it.
-
-2008-03-10 Martyn Russell <martyn@imendio.com>
-
- * src/libtracker-common/tracker-log.c: (tracker_log_term):
- * src/libtracker-common/tracker-log.h:
- * src/trackerd/trackerd.c: Remove the dependency on tracker-config
- by the tracker-log module.
-
-2008-03-07 Jamie McCracken <jamiemcc at gnome org>
-
- * Fix for possible email crasher
-
-
-2008-03-06 Martyn Russell <martyn@imendio.com>
-
- * src/libtracker-common/tracker-configuration.c:
- * src/qdbm/myconf.c:
- * src/text-filters/ooo_converter/o3read.c:
- * src/tracker-applet/tracker-applet.c: Fixed compiler warnings.
-
- * src/libtracker-gtk/tracker-keyword-store.c:
- (tracker_keyword_store_drag_data_get): Change
- gtk_selection_data_set() to gtk_selection_data_set_text() instead,
- saves us casting to a guchar pointer.
-
- * src/libtracker-gtk/tracker-metadata-tile.c: Removed unused
- date_to_str() function.
-
- * src/tracker-search-tool/tracker-search-tool.c: Removed unused
- tracker_search_select_service_type_by_string() function.
-
- * src/trackerd/tracker-email-thunderbird.c: Remove unused
- get_boolean_from_string() function.
-
- * src/trackerd/tracker-indexer.c: Include ISO definitions before
- including math.h so we don't get warnings about lrintf() usage.
-
- * src/trackerd/trackerd.c: Removed unused set_update_count()
- function.
-
-2008-03-06 Martyn Russell <martyn@imendio.com>
-
- * src/libtracker-common/Makefile.am:
- * src/libtracker-common/tracker-config.[ch]:
- * src/libtracker-common/tracker-language.[ch]: Moved these files
- here from src/trackerd so the API can be shared by all components.
-
- * src/libtracker-common/tracker-log.[ch]: Created by taking these
- functions from the src/trackerd/tracker-utils.c log functions.
- This is based on a patch from Ivan Frade.
-
- * src/trackerd/Makefile.am:
- * src/trackerd/tracker-apps.c:
- * src/trackerd/tracker-cache.c:
- * src/trackerd/tracker-db-email.c:
- * src/trackerd/tracker-db-sqlite.c:
- * src/trackerd/tracker-db.c:
- * src/trackerd/tracker-dbus-files.c:
- * src/trackerd/tracker-dbus-keywords.c:
- * src/trackerd/tracker-dbus-metadata.c:
- * src/trackerd/tracker-dbus-methods.c:
- * src/trackerd/tracker-dbus-search.c:
- * src/trackerd/tracker-dbus.c:
- * src/trackerd/tracker-email-evolution.c:
- * src/trackerd/tracker-email-kmail.c:
- * src/trackerd/tracker-email-thunderbird.c:
- * src/trackerd/tracker-email-utils.c:
- * src/trackerd/tracker-email.c:
- * src/trackerd/tracker-indexer.c:
- * src/trackerd/tracker-inotify.c:
- * src/trackerd/tracker-ioprio.c:
- * src/trackerd/tracker-metadata.c:
- * src/trackerd/tracker-parser.c:
- * src/trackerd/tracker-rdf-query.c:
- * src/trackerd/tracker-utils.c:
- * src/trackerd/trackerd.c: Update the include statments in most of
- these files to use libtracker-common's config/log headers.
-
-2008-03-05 Martyn Russell <martyn@imendio.com>
-
- * src/trackerd/tracker-config.[ch]: Added.
- * src/trackerd/tracker-language.[ch]: Added.
- * src/trackerd/tracker-stemmer.[ch]: Removed.
-
- * src/trackerd/Makefile.am:
- * src/trackerd/tracker-cache.c:
- * src/trackerd/tracker-db-sqlite.c:
- * src/trackerd/tracker-db.c:
- * src/trackerd/tracker-dbus-methods.c:
- * src/trackerd/tracker-dbus-search.c:
- * src/trackerd/tracker-dbus.c:
- * src/trackerd/tracker-email-evolution.c:
- * src/trackerd/tracker-email-thunderbird.c:
- * src/trackerd/tracker-email-utils.c:
- * src/trackerd/tracker-email.c:
- * src/trackerd/tracker-indexer.c:
- * src/trackerd/tracker-parser.c:
- * src/trackerd/tracker-utils.[ch]:
- * src/trackerd/trackerd.c: Moved all configuration options to
- their own module for type and limit checking combined with
- property notification and signalling. This fixes bug #513486.
-
-2008-03-04 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/libtracker-common/Makefile.am:
- libtracker-common is really a private library, dont install it to the
- system. Thanks to Michael Biebl <mbiebl at gmail dot com> for noticing.
-
-2008-03-04 Martyn Russell <martyn@imendio.com>
-
- * autogen.sh:
- * configure.ac: Make build work for Maemo platform, changes
- autoconf prereq to 2.59 not 2.59c and uses 1.9 instead of 1.7.
- This fixes bug #511752.
-
-2008-03-03 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * configure.ac:
- * src/Makefile.am:
- * src/libtracker-common/Makefile.am:
- * src/libtracker-common/tracker-configuration.c:
- (get_default_language_code), (write_default_config),
- (string_replace), (tracker_configuration_load),
- (tracker_configuration_save), (tracker_configuration_free),
- (tracker_configuration_get_string_list),
- (tracker_configuration_set_string_list),
- (tracker_configuration_get_list), (tracker_configuration_set_list):
- * src/libtracker-common/tracker-configuration.h:
- * src/tracker-preferences/Makefile.am:
- * src/tracker-preferences/tracker-configuration.c:
- * src/tracker-preferences/tracker-configuration.h:
- * src/tracker-preferences/tracker-preferences.c:
- (tracker_preferences_init), (tracker_preferences_finalize),
- (set_bool_option), (set_int_option), (setup_page_general),
- (setup_page_performance), (setup_page_files),
- (setup_page_ignored_files), (setup_page_emails),
- (name_owner_changed), (restart_tracker),
- (tracker_preferences_cmd_apply), (tracker_preferences_cmd_cancel):
- Beginings of libtracker-common. Migrate tracker-preferences to it.
-
-2008-03-02 Jamie McCracken <jamiemcc at gnome org>
-
- * Lots of minor tweaks
- * make aplet prefs more hig compliant
-
-
-2008-02-27 Jamie McCracken <jamiemcc at gnome org>
-
- * stopped applet respawn of trackerd (via dbus activation unpause method) when killed whilst smart paused
- * Made progress/animation of email indexing in step
- * Added index merging progress to tooltip
- * Fixed clean exiting of trackerd when paused and in index merge state
- * Fixed final index replacing main index at startup if no tmp merge indexes exist
-
-
-2008-02-27 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed applet
- * added pref screen for applet
- * aded reindex option to applet
- * fixed bugs in blacklists
-
-2008-02-26 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-db-sqlite.c (sqlite3_get_service_name):
- * src/trackerd/tracker-dbus-metadata.c
- (tracker_dbus_method_metadata_set) (tracker_dbus_method_metadata_get):
- * src/trackerd/tracker-dbus-search.c
- (tracker_dbus_method_search_get_hit_count_all)
- (tracker_dbus_method_search_text_detailed): Plug some leaks. Fixes
- #518882.
-
-2008-02-25 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-db-sqlite.c (tracker_exec_proc)
- (tracker_exec_proc_ignore_nulls): Plug 2 memleaks introduced
- by the switch to GPtrArray.
-
-2008-02-25 Jerry Tan <jerry.tan@sun.com>
- * add firefox extension for web history indexing
-
-2008-02-24 Jamie McCracken <jamiemcc at gnome org>
-
- * added tmp black list of frequently changing files
-
-2007-02-24 patches from Jerry Tan <jerry.tan@sun.com>
-
- * added web history
-
-
-2008-02-22 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-applet/tracker-applet.c: (set_status_hint),
- (create_context_menu):
- More strings for translation and fix capitalization.
-
-
-2008-02-21 Jamie McCracken <jamiemcc at gnome org>
-
- * Updated applet
- * removed popup window and replaced with tooltip to indicate status/progress
- * added smart pause by tracking X events for mouse and keyboard
- * added more options to not show animation and hide icon
-
-2008-02-17 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/tracker-applet/tracker-applet.c: (set_progress),
- (index_finished), (index_state_changed), (tray_icon_show_message),
- (main):
- Inline translatable strings and fix some whitespace issues
-
-2008-02-16 Jaap Haitsma <jaap@haitsma.org>
-
- * src/tracker-applet/tracker-applet.c: (create_context_menu),
- (statistics_menu_activated), (open_uri), (about_url_hook),
- (about_email_hook), (about_menu_activated), (main):
- Add about dialog to applet. Fixes bug #507339
-
-2008-02-14 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-metadata.c (tracker_metadata_get_embedded):
- Rewrite function so it's less indented, and copies a bit less memory
- around. Bug #513688.
-
-2008-02-14 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-db-sqlite.c (tracker_exec_proc): Store directly
- results in a GPtrArray. Bug #513691.
-
-2008-02-14 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-db-sqlite.h:
- * src/trackerd/tracker-utils.h: Pack booleans in guints to make most
- used structs smaller. Bug #513692.
-
-2008-02-08 Rich Burridge <rich.burridge@sun.com>
-
- * src/libtracker-gtk/tracker-utils.h:
- src/libtracker-gtk/tracker-utils.c:
- src/libtracker-gtk/tracker-tag-bar.c:
- Fix for bug #494892 - Label for/labeled by relation missing for
- add tag button.
-
- * src/libtracker-gtk/tracker-metadata-tile.c:
- From Wendy Hu <Huiwe.Hu@sun.com>
- Fix for bug #494907 – Labels should be set as focusable.
-
- * src/tracker-search-tool/tracker-search-tool.c:
- From Patrick Wade <patrick.wade@sun.com>
- Fix for bug #495205 – Warning message label should be accessible
- to at-tools.
-
- * src/tracker-search-tool/tracker-search-tool-support.c:
- src/tracker-search-tool/tracker-search-tool-support.h:
- src/tracker-search-tool/tracker-search-tool.c:
- Fix for bug #494878 – Search hit number can not be reported by Orca.
-
-2008-02-05 Rich Burridge <rich.burridge@sun.com>
-
- * src/tracker-preferences/tracker-preferences.glade:
- Fix for bug #503215 – The time unit is not reported by default.
-
-2008-02-03 Patch from Carlos Garnacho <carlos@imendio.com>
-
- * GNOME Bug #509601: make tracker-extract more modular using dynamically loaded libraries
-
-2008-01-30 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-preferences/tracker-preferences.c:
- (tracker_preferences_cmd_apply):
- Fix my bad English, courtesy of A. Walton and Michael Biebl.
-
-2008-01-30 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-preferences/tracker-preferences.c:
- (tracker_preferences_cmd_apply):
- HIGfication of reindex/restart alerts.
-
-2008-01-29 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-db-sqlite.c (tracker_db_search_text): Avoid
- doing too many relocations of data in memory. Bug #511781.
- * src/trackerd/tracker-utils.c (array_to_list): Same here.
-
-2008-01-28 Carlos Garnacho <carlos@imendio.com>
-
- * src/trackerd/tracker-db-sqlite.c (tracker_exec_proc_ignore_nulls):
- Store directly results in a GPtrArray. Bug #511788
-
-2008-01-27 Patches from from Thiago Marcos P. Santos <tmpsantos@gmail.com>
-
- * Fixed missing gobject ldadd in libtracker
- * Made thread stack size configurable
-
-2008-01-23 Halton Huo <Halton.Huo@Sun.COM>
-
- Implement explicit apply for t-p.
- * src/tracker-preferences/tracker-preferences.c:
- * src/tracker-preferences/tracker-preferences.glade:
-
-2008-01-21 Halton Huo <Halton.Huo@Sun.COM>
-
- * src/trackerd/trackerd.c: (process_files_thread):
- Refresh index when deleting files
-
-2008-01-17 Michal Pryc <michal dot pryc at sun dot com>
-
- * Patch from Mathieu Dimanche <mdimanche at free dot fr>
- Fixed character encoding problems between Thunderbird
- and trackerd, a.k.a. UTF-8 encoded TMS files
-
-2008-01-11 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * Patch from Dan Bryant <dan.bryant at jhuapl edu>
- Implements access to imap accounts with MD5-DIGEST authentication
-
-
-2008-01-05 Jaap Haitsma <jaap@haitsma.org>
-
- * src/tracker-preferences/tracker-preferences.c:
- Change CamelCase function name to lowercase seperated by _
-
-
-2008-01-05 Jaap Haitsma <jaap@haitsma.org>
-
- * src/tracker-applet/tracker-applet.c:
- * src/tracker-applet/tracker-applet.h:
- Add license file to top of file
-
-
-2008-01-05 Jaap Haitsma <jaap@haitsma.org>
-
- * src/tracker-applet/Makefile.am:
- * src/tracker-applet/tracker-applet-private.h:
- * src/tracker-applet/tracker-applet.c:
- * src/tracker-preferences/Makefile.am:
- * src/tracker-preferences/tracker-configuration-private.h:
- * src/tracker-preferences/tracker-configuration.c:
- * src/tracker-preferences/tracker-preferences-private.h:
- * src/tracker-preferences/tracker-preferences.c:
- Remove *-private.h files. Just put these declarations in the
- respective *.c files
-
-
-2007-12-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed issue with log file being null
- * Fixed typo of metadata name Audio:PeakTrackGain in the gstreamer extractor
- * fix for crasher where index name is null during merging
- * make initial indexing on battery off by default
- * Fixed prevention of multiple instances of trackerd causing infinite loop and 100% cpu
- * Fixed reentrant signals to prevent loops by dying quickly
-
-
-2007-12-09 Jamie McCracken <jamiemcc at gnome org>
-
- * Increased startup sleep for applet to prevent race condition
- * Made applet handle trackerd being stopped gracefully
- * Fixed GetHitCount service type
- * updated hit counts when duds are present in TST
-
-
-
-2007-12-09 Jamie McCracken <jamiemcc at gnome org>
-
- * Strengthed indeing of emails (utf-8 check on addresses)
- * Stop indexing if index or db is too large (>2GB)
- * Fixed notification of tag delete so index is updated
- * set low disk space to 1% by default
- * added kill timeout if not shutdown cleanly within 20 secs
-
-
-2007-12-03 Marcus Fritzsch <m at fritschy dot de>
-
- * python/deskbar-handler/tracer-module.py
- Even more defensively programmed add_all_actions () to get
- around *older* deskbar releases (prior rev 1701). Another
- fix to gnome bug #474131
-
-
-2007-11-30 Jerry Tan <jerry.tan@sun.com>
- fix gnome bug 495528, disable Save Result As when search type like email, applications
- * src/tracker-search-tool/tracker-search-tool.c
-
-
-2007-11-28 Jerry Tan <jerry.tan@sun.com>
- implement the feature to set ignore filename pattern.
- * src/trackerd/tracker-utils.h
- * src/trackerd/tracker-utils.c
- * src/trackerd/trackerd.c
-
-
-2007-11-26 Marcus Fritzsch <m at fritschy dot de>
-
- * pause on low disk space support
- * unified pause call: tracker_pause ()
- * added config option LowDiskSpaceLimit=int - set to < zero to
- disable, default is 5 (for default cfg) and as default value
- if not in cfg.
-
-
-2007-11-25 Halton Huo <Halton.Huo@Sun.COM>
-
- Fix several problems for trackerd reload when changing preferences
- through t-p:
- 1. Check/uncheck evolution email(maybe more) does not make
- trackerd restart
- 2. Trackerd restart will report another trackerd is running.
- 3. Key for BatteryIndex BatteryIndexInitial and FastMerges does
- not initialized t-p GUI.
- * src/tracker-preferences/Makefile.am: Add TRACKER_BINDIR
- * src/tracker-preferences/tracker-preferences.c:
- (spin_value_changed_cb), (check_toggled_cb), (setup_page_general),
- (setup_page_performance), (setup_page_files), (name_owner_changed),
- (cmdClose_Clicked):
- * src/trackerd/tracker-dbus-methods.c:
- (tracker_dbus_method_set_bool_option): Add some bool option here.
- (tracker_dbus_method_set_int_option): Add some int option here.
-
-
-2007-11-24 Michael Biebl <mbiebl at gmail com>
-
- * filters/*/*_filter:
- Fix the shell scripts for the external filters
- - Use mktemp to create safe temp files.
- - Make all scripts respect the TMPDIR environment variable.
- - Remove unnecessary output to stdout.
- - Change the working directory of the msword filter before calling
- wvText to avoid creating temporary files in $HOME.
-
-
-2007-11-23 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/tracker-preferences/tracker-preferences.glade:
- Add accessibility tags for lists in tracker-preferences (bug #495201). Patch
- from Patrick Wade. Also add accessibility tags for throttling (bug #195188),
- patch again by Patrick Wade.
-
-
-2007-11-19 Marcus Fritzsch <m at fritschy dot de>
-
- * python/deskbar-handler/tracker-{handler,module}.py
- Fixed KMail identifier to the correct value
- * Updated docs/trackerd.1 and docs/tracker.cfg.5
-
-
-2007-11-18 Jamie McCracken <jamiemcc at gnome org>
-
- * Added Get Hit Count call to libtracker
- * Fixed GetServices call
- * Added KeywordAdded and KeywordRemoved signals
-
-
-2007-11-18 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * Read some keys from tracker.cfg file:
- - BatteryIndexInitial, BatteryIndexInitial,
- - MaxBucketCount, MinBucketCount, BucketRatio, Divisions
- - Padding (but not used anywhere in tracker's code...)
-
-
-2007-11-17 Jamie McCracken <jamiemcc at gnome org>
-
- * implemented power management options
- * fixed bug with embedded Auth in IMAP URI
-
-
-2007-11-16 Marcus Fritzsch <m at fritschy dot de>
-
- * python/deskbar-handler/tracker-module.py
- fixed URI quoting issues reported as bug #495512
- * src/trackerd/tracker-dbus-search.c
- additional error check, fixes bug #495810
-
-
-2007-11-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Added confirmation dialog to prefs when it needs to be restarted or reindexed
- * fixed error msg when stopwords are passed for searching
-
-
-2007-11-11 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * updated README file
- * fix for configure.ac (libglade not needed for tst)
-
-
-2007-11-11 Patch from Wendy Hu <Huiwe.Hu@Sun.COM>
-
- * extract keywords from html
- * fix metadata child relationships
-
-
-2007-11-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Added more widgets to tracker-preferences for power management and fast index merges
- * Made throttle and most of the checkboxes change settings in trackerd in real time (without needing to restart trackerd)
- * Fixed deletion of entries
-
-
-2007-11-09 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/tracker-preferences/tracker-configuration.c:
- (_g_utf8_make_valid), (g_key_file_parse_value_as_double),
- (g_key_file_get_double), (g_key_file_set_double),
- (g_key_file_get_double_list), (g_key_file_set_double_list),
- (get_default_language_code), (create_config_file),
- (tracker_configuration_init), (tracker_configuration_get_list),
- (string_replace), (_write), (_set_string), (_get_string_list),
- (_set_string_list):
- * src/tracker-preferences/tracker-configuration.h:
- * src/tracker-preferences/tracker-preferences-main.c: (main):
- * src/tracker-preferences/tracker-preferences-utils.h:
- * src/tracker-preferences/tracker-preferences.c:
- (tracker_preferences_init), (setup_page_general),
- (setup_page_performance), (setup_page_files), (setup_page_emails),
- (name_owner_changed), (if_trackerd_start), (cmdClose_Clicked),
- (cmdAddCrawledPath_Clicked), (cmdAddIndexPath_Clicked),
- (append_item_to_list), (treeview_get_values), (populate_list):
- * src/tracker-preferences/tracker-preferences.glade:
- * src/tracker-preferences/tracker-preferences.h:
-
- Run indent on the configuration tool, and fix the init to hide the help
- button properly. Edit the preferences layout slightly to arrange the
- tabs in order of usefulness and simplify the email tab.
-
-
-2007-11-06 Saleem Abdulrasool <compnerd@compnerd.org>
-
- * src/tracker-applet/tracker-applet-private.h:
- * src/tracker-applet/tracker-applet.c: (tray_icon_class_init),
- (tray_icon_set_tooltip):
- * src/tracker-applet/tracker-applet.h:
-
- Drop set_tooltip, there is no reason for this to be a virtual function.
-
-
-2007-11-05 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * Fix infinite loops while indexing in directories containing a single quote in their name
- * Fix "merging of indexes" messages which appear again, and again, and again, etc.
-
-
-2007-11-04 Patch from Halton Huo <Halton.Huo@Sun.COM>
-
- * Added shutdown and restart of trackerd to refresh config settings to tracker-preferences
-
-
-2007-11-03 Jamie McCracken <jamiemcc at gnome org>
-
- * made corruption scan active only if trackerd was not cleanly shutdown
- * also repair qdbm index files
- * mutex safeguards around cache
- * allow readonly mode for trackerd when another process is present but on another machine (NFS)
- * bomb out trackerd if not primary owner of tracker dbus name
- * made use of sqlite3_free where needed to by sqlite 3.5
-
-
-2007-10-31 Saleem Abdulrasool <compnerd@compnerd.org>
- Patch from Bruce Cowan <bugs@bcowan.fastmail.co.uk>
- Fix spelling error 'occured' -> 'occurred'. Bug #481651.
-
- * src/libtracker/tracker-files.c: (main):
- * src/libtracker/tracker-get-meta-for-folder.c: (main):
- * src/libtracker/tracker-query.c: (main):
- * src/libtracker/tracker-stats.c: (main):
- * src/tracker-search-tool/tracker-search-tool.c:
- (display_error_dialog):
-
-
-2007-10-31 Michael Biebl <mbiebl at gmail com>
-
- * Merge tracker-inotify.h, tracker-fam.h and tracker-win-fs-changes.h
- into a single file called tracker-watch.h.
- * Remove redundant declarations of the tracker watch functions from
- tracker-db-sqlite.h.
- * Extract the poll implementation of the watch functions from
- trackerd.c into a new file called tracker-poll.c.
- * Update files to #include "tracker-watch.h".
- * Update Makefile.am to build the correct file monitoring backend.
- Drop removed files like tracker-inotify.h, tracker-fam.h,
- tracker-win-fs-changes.h and add tracker-watch.h to trackerd_SOURCES.
-
-
-2007-10-31 Michal Pryc <michal dot pryc at sun dot com>
-
- * extensions/thunderbird-extension/content/trackerMailWindow.xul:
- Fixes opening proper mail within Thunderbird.
- * extensions/thunderbird-extension/tracker.xpi: new xpi with the applied patch.
-
-
-2007-10-31 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * updated README file
-
-
-2007-10-31 Patch from Thiago Marcos P. Santos <tmpsantos@gmail.com>
-
- * escape string in sql fix
-
-
-2007-10-29 Jamie McCracken <jamiemcc at gnome org>
-
- * Check sqlite dbs for corruption on startup and force reindex if necessary
- * mem leak fix
- * improve debug of index creation failure
- * Fixed emails not being indexed if index has been stopped prior to completion of first run
- * reduce inotify max watch count by 500 to leave some spare for other apps
- * made sure only regular files get indexed
- * check dir is not watched before attmpting to watch it again
- * fixed hang when a directory is moved or renamed while indexing is going on
-
-
-2007-10-20 Marcus Fritzsch <m at fritschy dot de>
-
- * tracker-extract, added support for application/x-gzpostscript files
-
-2007-10-19 Marcus Fritzsch <m at fritschy dot de>
-
- * deskbar handlers, Fixed gnome bugs #487444, #486733
- * added some more exception catchers, in general where actions
- are executed
-
-2007-10-15 Patch from Halton Huo <Halton.Huo@Sun.COM>
-
- * fixed crasher on solaris
-
-2007-10-09 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-applet/tracker-applet.c: (create_context_menu):
- Mark strings in rigth click menu translatable and fix
- capitalization and ellipsizing as per GNOME HIG.
-
-2007-10-09 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed deletions of words from index
-
-
-2007-10-08 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed applet so that progress and pause options work
- * Implemented fast_merges option
- * Fixes to remove dud hits so a research corrects wrong hit counts
- * Cause tracker to die and delete indexes when corruption is detected
- * Check for overlapping watch dirs
- * Correct email folders count in applet progress
- * TST - display warning when searching while indexing
- * TST - ellipsize first column in search results
-
-
-2007-10-07 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-preferences/tracker-preferences.desktop.in.in:
- Change the name of capplet launcher, to remove "Preferences"
-
-2007-10-06 Jamie McCracken <jamiemcc at gnome org>
-
- * Renamed and rephrased tracker-applet source
- * Removed unneeded stuff and merged source files in the applet
- * Made the applet statistics window live and self updating every 2 seconds
- * Integrated signal handlers for state changed, progress and IndexFinsihed into applet
- * Made more translatable strings in applet
-
-
-2007-10-04 Jamie McCracken <jamiemcc at gnome org>
-
- * Added in_merge to StateChangeSignal
- * Fixed crasher when merging indexes
-
-
-2007-10-01 Jamie McCracken <jamiemcc at gnome org>
-
- * Made battery and pause checks tickless
- * Added signals for index progress ans state changes
- * added dbus methods for setting options and shutdown/reindex
- * renamed tracker-monitor to tracker-applet
-
-
-2007-10-01 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * Make index statistic window a little bit sexier
-
-
-2007-09-30 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * Cleanups for KMail and Thunderbird code
- * KMail emails are indexed but not removed when user move one to trash
-
-
-2007-09-29 Patch from Wendy Hu
-
- * Fixed missing category from tst search
-
-
-2007-09-27 Mikkel Kamstrup Erlandsen <mikkel.kamstrup@gmail.com>
-
- * Richer display of hits in deskbar module
- This was intended all along, but broke with DBA 2.20.
-
-
-2007-09-27 Jamie McCracken <jamiemcc at gnome org>
-
- * Added intial tracker-monitor notification applet
- * fixed excessive busy count issue
-
-
-2007-09-25 Patch from Halton Huo <Halton.Huo@Sun.COM>
-
- * Enable search of words beginning with a number
-
-
-2007-09-24 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * KMail emails are not indexed twice anymore because date of indexing is now checked...
- * Some work need to be done to update infos of a maildir email when needed
- * In tracker.h, prefer G_BEGIN_DECLS/G_END_DECLS than direct use of extern "C"
- * Remove some warnings in libtracker-gtk
-
-
-2007-09-23 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed memory leaks
- * Optomised index merging
- * Fixed and tuned battery checking
- * Fixed bug on file read where partial utf-8 crept through
- * Fixed CJK check
- * Replaced GSList based cache with byteArray
-
-2007-09-22 Jamie McCracken <jamiemcc at gnome org>
-
- * Added index merging
- * Fixed disk IO issues
- * Restored Qdbm as the main index
- * Fixed File move crasher
-
-
-2007-09-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Added automatic index pause on battery
- * Check files exist before including in search results
- * Fixed disabling of indexing option
- * Fixed bug where could not open files when O_NOATIME is not supported
-
-
-2007-09-12 Jamie McCracken <jamiemcc at gnome org>
-
- * Added basic support for index merging
-
-
-2007-09-12 Patch from Michal Pryc <Michal.Pryc@Sun.COM>
-
- * added initial thunderbird support (experimental and requires separate thunderbird-extension)
- * added solaris build fixes
-
-
-2007-09-11 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Split legacy deskbar handler into two files, static and live.
- * Don't show static tracker search option when only live search is enabled
- This fixes Gnome #474660.
-
- * Introduce support for MUAs Thunderbird and KMail in both
- legacy and new deskbar handlers
-
- * Check that t-s-t is installed before showing static handler as available
- extension. This closes Debian #441889.
-
- It should be noted that recent deskbar work has closed Gnome #474131 as well.
-
- Commited and approved by kamstrup.
-
-
-2007-09-11 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Do not assume that gint32 or guint32 are gint or guint in tracker-db-sqlite.c
-
-
-2007-09-10 Christian Persch <chpe@gnome.org>
-
- * src/tracker-preferences/tracker-preferences.glade: Use the right
- capitalisations, and add/change some mnemonics. Bug #474339.
-
-
-2007-09-10 Patch from Marko Anastasov <marko@marko.anastasov.name>
-
- * Made tracker.h c++ friendly
-
-
-2007-09-09 Jamie McCracken <jamiemcc at gnome org>
-
- * Improved memory usage
- * Optimised text filter reading io using posix_fadvise and O_NOATIME
- * Print out memory usage (linux only) when flushing words
-
-
-2007-09-08 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Try to use O_NOATIME everywhere is possible in tracker-extract
- * Use O_NOATIME to open Evolution's summary files
-
-
-2007-09-08 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Use O_NOATIME mode to read emails with GMime
-
-
-2007-09-07 Patch from Christian Persch
-
- * Fixed HIG violations in tracker-preferences
-
-
-2007-09-07 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Remove some useless calls to g_slist_length()
- * Use g_slice_new/free() for SearchQuery and SearchWord
- * Split things like g_return_if_fail(item1 && item2) into:
- g_return_if_fail(item1);
- g_return_if_fail(item2);
- in tracker-indexer.c and tracker-dbus-search.c
-
-
-2007-09-06 Jamie McCracken <jamiemcc at gnome org>
-
- * Added initial support for index merging
- * Made sure stats no longer reset
- * Fixed runaway memory usage of sqlite in indexer
-
-
-2007-09-04 Jamie McCracken <jamiemcc at gnome org>
-
- * removed qdbm completly
- * replaced with sqlite indexer
- * split up files/emails into separate dbs (meta, content and index)
- * tuned caching
- * tuned indexer to pause when non-tracker disk activity is detected
- * made email indexing 5x faster and lessened iowait times
- * Improved parser
- * Fixed restore of user metadata on reindex (keywords are auto-restored)
- * added source code reserved words to english stopwords
- * added english stopwords on top of non-english stopword lists
-
-
-2007-09-03 Mikkel Kamstrup Erlandsen <mikkel.kamstrup@mail.com>
-
- * python/deskbar-handler/tracker-module.py
- Add additional standard actions
-
-2007-09-03 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Work on KMail support
- * Support of MBox files seems to work well. So indexing works when MBox
- storage is used with local emails (= sent + POP3 emails) and IMAP emails
- (but not cached-IMAP emails since they are always stored in a maildir
- hierarchy)
- * Still issues with mails in maildir directories (trackerd try to index those
- emails twice!)
- * Indexing of KMail emails is still turned off
-
-
-2007-09-03 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Make TST able to open KMail emails
-
-
-2007-08-19 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Added option to skip mounted directories when indexing
- * added safeguards to html and imagemagick extractors to prevent crashers
- * added safeguard to app indexing
-
-
-2007-08-19 Michael Biebl <mbiebl at gmail com>
-
- * Fixed gettext support in deskbar-applet plugin
- * Update autofoo to automatically install the correct version of the
- deskbar-applet plugin.
- Can be overriden with --enable-deskbar-applet=(handler|module)
- "handler" is for deskbar-applet < 2.19
- "module" is for deskbar-applet >= 2.19
-
-
-2007-08-19 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Reorganization of tracker-handler.py
- * Added support for GaimConversations and Applications
- * Fixed gnome bugs: #403752, #359307
- * Fixed ubuntu bugs: #131247, #130889
- * New deskbar-applet 2.19 module tracker-module.py, fixes ubuntu bug #132921
- * Fixed emails categorization
- * Better display of GaimConversations hits
-
-
-2007-08-13 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Fix bug #131842 from Ubuntu
-
-
-2007-08-13 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Replace "g_slist_length(list)>0" with "list!=NULL" to check
- whether a list is empty or not in trackerd.c
- * Cosmetic changes in trackerd.c
-
-
-2007-08-12 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Escape filenames containing character "'" to make xdg_open()
- working with them
-
-
-2007-08-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Put back alarm call to tracker spawn as safeguard
-
-
-2007-08-10 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Fixed bug #465176 (IMAP e-mail indexing does not work after first
- crawl)
- * Code cleanups in tracker-db-email.{h,c}
-
-
-2007-08-09 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Remove an error message while loading file sqlite-stored-procs.sql
- due to bad checking of returned value of fgets()
-
-
-2007-08-09 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Close feature request #397210 (Desensitize Find button when search
- entry is empty)
- * Remove warnings at building time in TST
- * Code cleanups in TST
-
-
-2007-08-09 Michael Biebl <mbiebl at gmail com>
-
- * Add missing function prototype definitions
-
-
-2007-08-07 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed memory leaks
- * Fixed crasher due to non valid utf-8 creeping through emails
-
-
-2007-08-07 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Remove some warnings at building of tracker-extract
- * Adds more recognized date formats for Postscript files in
- tracker-extract
- * Code cleanups in tracker-extract
-
-
-2007-08-07 Michael Biebl <mbiebl at gmail com>
-
- * Generate the D-Bus client-side bindings automatically from the
- introspection XML file
-
-
-2007-08-06 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Adds copyright headers in tracker-preferences' files
- * Remove some code duplications in tracker-configuration.c
- * Code cleanups in tracker-preferences
-
-
-2007-08-05 Marko Anastasov <marko@marko.anastasov.name>
-
- * Implemented tracker_dbus_method_search_get_hit_count.
-
-
-2007-08-04 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * fixed crasher in email indexing when parsing mimes
- * updated applet
- * added tracker-preferences man page
-
-
-2007-08-04 Patch from Anders Rune Jensen <anders@iola.dk>
-
- * Made tracker compilable on windows
-
-
-2007-08-02 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Made generic error display window
- * fixed crasher in tsts - added check for error when calculating hit count
-
-
-2007-07-29 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Makes tracker-extract to export dates only in ISO-8601 format
- * Fixed dates for emails
- * cosmetic changes
-
-
-2007-07-29 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Removed small chunk of whitespace from being parsed into indexer
-
-
-2007-07-26 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Fixed printing of date for audio files in TST
-
-
-2007-07-25 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * updated applet to 0.6.0 settings
- * fixed crasher and made read tags case insensitive for html extractor
-
-
-2007-07-25 Jamie McCracken <jamiemcc at gnome org>
-
- * Based on patch by Marcus Fritzsch <fritschy@googlemail.com>
- * Fixed crawled directory indexing when they are not a subset of watched directories
- * Removed forced indexing of home dir when no watch dirs specified (home is default in cfg file)
-
-
-2007-07-24 Michael Biebl <mbiebl at gmail com>
-
- * Include the deskbar-applet plugin on make dist
- * Show if deskbar-applet support is enabled in the ./configure summary
-
-
-2007-07-18 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Fixed command line tracker-tag
-
-
-2007-07-23 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed metadata dates display
- * Revamped tracker-preferences
- * added missing prefs
- * fixed bug with additional growing lines
-
-
-2007-07-22 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * fixed service names on command line tools
- * updated man pages
-
-
-2007-07-22 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Fixed potential crasher in tracker_set_language() function
- * Cosmetic changes
-
-
-2007-07-22 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed deleting of no watch dirs from index
- * Fixed date formats
- * Added Crawl directory support (indexing without watching)
- * Added missing filters for csv, excel, spreadsheets (requires ssindex/gnumeric) and oo draw
-
-
-2007-07-22 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Not-named email attachments are not ignored anymore
- * Fixed removing of saved email attachments from spam emails in Tracker's TMP dir
- * Fixed message "saved email attachment..."
- * Added "tracker->email_attachements_dir" variable
- * Added email_make_tmp_name_for_mail_attachment() function
- * Added tracker_is_empty_string() function
- * Fixed SEGFAULT when SIGTERM is sent to Tracker while emails are being indexed
- * Fixed heuristics to detect a text file
- * Fixed calls to pango_get_log_attrs()
- * Unified error messages formats
-
-
-2007-07-21 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * updated man pages
-
-
-2007-07-21 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed origin of initial sleep in tracker-prefs - based on patch by Tshepang Lekhonkhobe
- * Fixed resetting icon in metatile
- * Always made sure an icon is available in tst
- * Fixed launch of applications (filtered out %U)
-
-
-2007-07-18 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed crasher in tst
- * Fixed tagging
- * created config file if not present when running tracker-prefs
-
-
-2007-07-18 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Added initial sleep to tracker-prefs
- * fixed email setting too
-
-
-2007-07-17 Patch from Alexandre Rostovtsev <tetromino@gmail.com>
-
- * Fixed poppler extractor
- * Fix for AMD64 setrlimit
-
-
-2007-07-17 Patch from Andreas Eckstein <andreas.eckstein@gmx.net>
-
- * Made tracker.h more c++ compatible
-
-
-2007-07-17 Jamie McCracken <jamiemcc at gnome org>
-
- * Queued snippets for generation to prevent delays
- * Made all tracker calls async
- * Gconf settings for separator position
- * Fixed bug in tagbar where instruction text would be saved as keywords
-
-
-2007-07-17 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Fixed build of TST
- * Some cleanups in libtracker-gtk
-
-
-2007-07-17 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * updated README
- * fixed xdg-open order
-
-
-2007-07-17 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Added MaxTextWords limit to config
- * small compiler warning fixes
-
-
-2007-07-17 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed metadata tile to display for all cats
- * Fixed TST to display all cats
- * Fixed various bugs for the above
-
-
-
-2007-07-15 Patch from Marcus Fritzsch <fritschy at googlemail com>
-
- * Fixed mem leak and some cleanups
- * added initial sleep config variable
-
-
-2007-07-13 Patch from Luca Ferretti <elle.uca@libero.it>
-
- * cosmetic changes to tst
-
-
-2007-07-13 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Fixed build for Sun compiler
-
-
-2007-07-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Replaced tabs in GUI with a sidebar
- * Fixed update of metadata tile when navigating with keys instead of mouse
- * Used theme text colours for snippets
-
-
-2007-07-12 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Added NULL to terminate some string arrays in tracker-metadata-tile.c
-
-
-2007-07-10 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Added GetStatus Dbus nmethod and tracker-status app
-
-
-2007-07-10 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-search-tool/tracker-search-tool.c: (do_search):
- show GtkNotebook labels translated
-
-
-2007-07-09 Patch from Halton Huo <Halton.Huo@Sun.COM>
-
- * Fixed various crashers (solaris specific only)
-
-
-2007-07-09 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-search-tool/tracker-search-tool.desktop.in.in:
- mark Name and Comment as translatable
-
- * trackerd.desktop.in.in: update Comment
-
-
-2007-07-09 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Fixed crasher on solaris for null mimes
-
-
-2007-07-09 Patch from Michael Biebl <mbiebl at gmail com>
-
- * Removed test-tracker-indexer
- * small fix to Makefile
-
-2007-07-09 Luca Ferretti <elle.uca@libero.it>
-
- * src/trackerd/trackerd.c: (main): inizialize g_thread earlier
-
-2007-07-09 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * README: updates
- * Low Memory mode added to config file
- * Deskbar handler README
-
-
-2007-07-09 Jamie McCracken <jamiemcc at gnome org>
-
- * Optimized tracker_debug and related logging funcs
- * Made use of Setrlimit for limiting memory specific to i386 arch (its buggy on amd64)
- * updated to latest gtk xdgmime
- * modded patch from Halton Huo to fix free problem in tracker_get_vfs_name
- * bug fixes for email indeixng on solaris
- * Fixed saving of key metadata so they show up in search tool and UI
-
-
-2007-07-09 Patch from Jason Kivlighn <jkivlighn@gmail.com>
-
- * Added XMP sidecar support
- * Added XMP support to extractors
-
-
-2007-07-07 Jamie McCracken <jamiemcc at gnome org>
-
- * Added tracker_unlink that converts to filesystem locale before unlinking
- * fixed crasher in email attachment indexing by using locale encoding for attachemnt files
-
-
-
-2007-07-04 Jamie McCracken <jamiemcc at gnome org>
-
- * removed calls to g_mime_stream_close as they appear to be crashing tracker
-
-
-2007-07-03 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-preferences/tracker-preferences.desktop.in.in:
- Add X-GNOME-Bugzilla-* stuff, remove .png from Icon key, set
- StartupNotify to true.
-
- NOTE: I can't access to bugzilla.gnome.org (??), so
- "X-GNOME-Bugzilla-Component=general" could be wrong.
-
-2007-07-03 Luca Ferretti <elle.uca@libero.it>
-
- * Makefile.am: really remove tracked.desktop on make clean
- and include trackerd.desktop.in on make dist
-
-2007-07-03 Luca Ferretti <elle.uca@libero.it>
-
- * configure.ac:
- * src/tracker-preferences/Makefile.am:
- * src/tracker-preferences/tracker-preferences.desktop.in:
- * src/tracker-preferences/tracker-preferences.desktop.in.in:
- * src/tracker-search-tool/tracker-search-tool.desktop.in:
- * src/tracker-search-tool/tracker-search-tool.desktop.in.in:
-
- Cleanup .desktop files generation for tracker-search-tool and
- tracker-preferences, just like trackerd. Now, configure generates
- .desktop.in from .desktop.in.in replacing @VERSION@ variable, then
- make generate .desktop from .desktop.in adding translations for
- Name and Comment keys.
-
- Besides, make clean remove .desktop files and make dist includes
- .desktop.in in released packages. Or, at least, this is the
- desider behavior...
-
-2007-07-03 Luca Ferretti <elle.uca@libero.it>
-
- * Makefile.am: add CLEANFILE to remove tracked.desktop
- on "clean" rule
-
-2007-07-02 Luca Ferretti <elle.uca@libero.it>
-
- * data/icons/Makefile.am: run gtk-update-icon-cache on
- install-hook and uninstall-hook.
- See http://live.gnome.org/GnomeGoals/AppIcon
-
-2007-07-02 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-preferences/Makefile.am:
- Add -DTRACKER_LOCALEDIR in INCLUDES
-
- * src/tracker-preferences/tracker-preferences-main.c: (main):
- Enable localization at runtime.
-
-2007-07-02 Luca Ferretti <elle.uca@libero.it>
-
- * Makefile.am:
- * configure.ac:
- Enable localization for trackerd.desktop file. It's useful for
- gnome-session-properties 2.19/2.20. I'm not sure 'make dist'
- will include the right files :-(
-
- * trackerd.desktop.in: moved...
- * trackerd.desktop.in.in: ...here, plus changes to
- enable translations and removal of spurious fr translation.
-
-2007-06-30 Patch from Jason Kivlighn <jkivlighn@gmail.com>
-
- * Added initial XMP support for images to tracker-extract
-
-
-
-2007-06-30 Patch from Michael Biebl <mbiebl at gmail com>
-
- * fixed typo and removed redundant stuff from configure.ac
- * moved qdbm into private lib and added option to use system version
-
-
-2007-06-30 Patch from Eric Lesh <eclesh@ucla.edu>
-
- * Fixed date display when date is missing in the metadata tile
-
-
-2007-06-30 Patch from Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * Evolution mail fixes
- * fix bad parsing of summary file
- * used g_slice
- * fixed mime type of attachments
-
-
-2007-06-30 Patch from B Berteh <berteh@hotmail.com>
-
- * Downgraded gtk and glade requirements
- * Added missing functions for those with gtk 2.10
-
-
-2007-06-30 Patch from Marcus Fritzsch <fritschy@googlemail.com>
-
- * Fixed invalid double free in tracker-extract
- * made sure time elapsed returns floating point value
-
-
-2007-06-30 Patch from Jerry Tan <Jerry.Tan@Sun.COM>
-
- * Fixed crasher in image extractor
- * fixed coredump in ps extractor on solaris
-
-
-2007-06-30 Patch from asubedi <asubedi@gmail.com>
-
- * Added djvu filter
-
-
-2007-06-30 Patch from Deji Akingunola <dakingun@gmail.com>
-
- * Added OnlyShowIn to desktop file
- * Added missing config var in configure.ac
-2007-04-28 Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * src/trackerd/trackerd.c:
- * src/trackerd/trackerd-utils.c: Fix verbosity code
- * README: added a note on how to change inotify limits
-
-2007-06-30 Patch from Anders Rune Jensen <anders@iola.dk>
-
- * Fixed crasher when getting metadata
-
-
-2007-06-30 Patch from Luca Bellonda <lbellonda@gmail.com>
-
- * added use of ~ and realpath for all config filename based variables
-
-2007-06-30 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * updated README and ToDo
-
-
-2007-06-06 Jamie McCracken <jamiemcc at gnome org>
-
- * Reworked ranking and hit selection
- * Added support for And/Or
- * Added IDF (inverse document frequency) ranking for multiple word searches
- * added preliminary support for wildcards (not fully operational yet)
-
-
-2007-06-06 Mikkel Kamstrup Erlandsen <mikkel.kamstrup@gmail.com>
-
- * python/deskbar-handler/tracker-handler.py:
- Fix bug 430252, crash on conversion to ascii.
-
-2007-05-26 Claude Paroz <claude@2xlibre.net>
-
- * src/tracker-preferences/tracker-preferences.glade: Corrected typo.
-
-2007-05-07 Jamie McCracken <jamiemcc at gnome org>
-
- * bug fix for crashers in gaim indexing
- * fixed get metadata method to return original data
-
-2007-05-05 Jamie McCracken <jamiemcc at gnome org>
-
- *Added application and gaim log indexing
- * application indexing based on patch by Marcus Rosell
-
-2007-04-30 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed reset of stats on reindex
- * removed libmagic from build
-
-2007-05-01 patch from Michael Biebl <mbiebl at gmail com>
-
- * updated po/linguas
-
-2007-05-01 Patch from Bjoern Gruening <bjoern at gruenings eu>
-
- * updated tracker-preferences to use XDG config location
-
-
-2007-04-30 Jamie McCracken <jamiemcc at gnome org>
-
- * Reverted to using multiple db connections over one virtual (virtual is 3x slower)
- * Got stats working
- * renabled backup of user defined metadata
- * fixed crashers in email indexing
- * fixed too many open file descriptors by closing them
-
-
-2007-04-28 Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * src/trackerd/trackerd.c:
- * src/trackerd/trackerd-utils.c: Fix verbosity code
- * README: added a note on how to change inotify limits
-
-2007-04-27 Jamie McCracken <jamiemcc at gnome org>
-
- * Restructured Database to be more extensible
- * Made use of triggers in sqlite
- * Cleaned and restructured code to be more extensible and make use of new DB structure
- * Moved Metadata and Services to desktop files
- * Backed all user defined data so that they can be restored on reindex
- * Added --reindex param to trackerd
- * Moved all database files to XDG dirs
- * Separated expendable embedded data (in $Home/.cache) from user defined ones (in $HOME/.local/share/tracker/data)
- * Imporved stat collation
- * make process thread do the watching for fast startup
- * added 5 second delay prior to watch/index so as not to slow down boot time
- * Removed libmagic support
- * Fixed file move issues
- * Default Verbosity is to output almost nothing so as not to pollute xsession-errors
- * Fixed bugs in Dbus interfaces
- * Fixed bugs/crashes during indexing
- * Fixed bug whereby directories exceeding the max number of watches would not be indexed (also fixed/applicable to NFS mounts)
- * Fixed email attachment indexing
- * Improved text parsing
-
-
-
-2007-04-05 Edward Duffy <eduffy@gmail.com>
-
- * src/tracker-search-tool/tracker-search-tool.c:
- "xalign" property given an int, instead of float.
- Thanks to Jay Langseth for point this out.
-
-2007-03-23 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- reviewed by: Jamie McCracken
-
- * src/tracker-search-tool/tracker-search-tool-callbacks.c:
- (show_file_selector_cb):
-
- Default to $HOME for saved searches. Fixes bug #421535.
-
-2007-03-15 Pema Geyleg <pema.geyleg@gmail.com>
-
- * configure.ac: Added 'dz' to ALL_LINGUAS
-
-2007-03-11 Edward Duffy <eduffy@gmail.com>
-
- * src/tracker-extract/tracker-extract-imagemagick.c:
- Don't send '-ping' to GIMP xcf files (#416905)
-
-2007-03-08 Jamie McCracken <jamiemcc at gnome org>
-
- * Revamped parsing of text
- * Now uses pango automatically for CJK texts
- * Added optional accent stripper
-
-2007-03-08 patch from Michael Biebl <mbiebl at gmail com>
-
- * Added new icons
- * Removed old and installed in correct places for themes
-
-2007-03-07 Edward Duffy <eduffy@gmail.com>
-
- * src/tracker-extract/tracker-extract-imagemagick.c:
- Check exit code of 'identify'
-
-2007-03-07 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * configure.ac: Added "ca" to ALL_LINGUAS.
-
-
-2007-03-06 Mikkel Kamstrup Erlandsen <kamstrup@cvs.gnome.org>
-
- * python/deskbar-handler/tracker-handler.py:
- Check that Tracker is available via dbus activation or don't mark the handler
- as available.
-
-2007-03-05 Edward Duffy <eduffy@gmail.com>
-
- * src/trackerd/tracker-dbus-search.c:
- * src/tracker-search-tool/tracker-search-tool.c:
- Added tracker_dbus_method_search_suggest and support in the GUI
-
-2007-03-04 Jamie McCracken <jamiemcc at gnome org>
-
- * Removed polling functionality
- * Startup checks now include test for deletions in dirs that have changed
- * Index directories bottom up so indexing resumes from where it left off if stopped
- * made sure tmp dir and /proc and /dev are not indexed
-
-
-2007-03-04 Mikkel Kamstrup Erlandsen <kamstrup@cvs.gnome.org>
-
- * python/deskbar-handler/tracker-handler.py:
- Work around dependency for deskbar 2.18. We can do with 2.16 now (hopefully).
-
-2007-03-03 Edward Duffy <eduffy@gmail.com>
-
- * src/tracker-search-tool/tracker-search-tool.c:
- Preserve search terms when switching tabs (#399022)
-
-2007-03-03 Edward Duffy <eduffy@gmail.com>
-
- * configure.ac:
- * trackerd.desktop.in:
- * src/tracker-search-tool.desktop.in:
- Add X-GNOME-Bugzilla-* keys to the .desktop files (#407348)
-
-2007-03-03 Edward Duffy <eduffy@gmail.com>
-
- * src/trackerd/tracker-db-sqlite.c:
- Fix tracker_db_get_files_by_mime (#409729)
-
-2007-03-03 Patch from jerry tan <jerry.tan at sun com>
-
- * Replaced stdout with tmp_stdout so it compiles under solaris
-
-
-2007-03-03 Patch from Neil Patel <njpatel at gmail com>
-
- * Fixed drag and drop of an email create a desktop file
- * Fixed crasher with tile
-
-2007-03-03 Edward Duffy <eduffy@gmail.com>
-
- * src/tracker--search-tool/tracker-search-tool.c:
- Update metadata tile when tabs change.
- Closes #413971
-
- * inotify limit now uses system setting
-
-
-2007-03-03 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-search-tool/tracker-search-tool.c:
- (update_page_count_label):
- Fix some HIG, i18n and icon issue in Tracker search too.
- See bug #412255 for details.
-
-2007-03-02 Mikkel Kamstrup Erlandsen <kamstrup at cvs gnome org>
-
- * Add email support to deskbar handler
-
-2007-03-01 Patch from Neil Patel <njpatel at gmail com>
-
- * Made drag and drop of an email create a desktop file
- * desktop file launches evolution with correct uri.
- * made thumbs bigger in tile
-
-2007-03-01 Jamie McCracken <jamiemcc at gnome org>
-
- * Made configure auto build stuff like libtracker-gtk if dependencies are met
- * changed --enable-preferences to --disable-preferences
-
-
-2007-03-01 patch from Michael Biebl <mbiebl at gmail com>
-
- * Cleaned up libtracker-gtk with John Stowers
- * removed optional dependency on libtracker-gtk for tst
- * added localisation
-
-2007-03-01 patch from John Stowers <john.stowers@gmail.com>
-
- * Add libtracker-gtk
-
-
-2007-02-28 Jamie McCracken <jamiemcc at gnome org>
-
- * Removed superflous subfolders from imap uri
-
-
-2007-02-28 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * Patch for README file
-
-
-2007-02-28 Patch from Anders Rune Jensen <anders@iola.dk>
-
- * Fix mem leak in Fam handler
-
-
-2007-02-28 Patch from Michael Biebl <mbiebl at gmail com>
-
- * added realpath support to thumbnailer
-
-
-2007-02-26 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed email issues
- * Now handles deleted and junk emails (these are removed when trackerd is next started)
- * Fixed bugs with text Files not being detected
-
-
-2007-02-26 Luca Ferretti <elle.uca@libero.it>
-
- * src/trackerd/trackerd.c:
- Use "VALUE" not "value" in --help for -t and -v explanation
- as any other option
-
-2007-02-18 Jamie McCracken <jamiemcc at gnome org>
-
- * made sure we call gmime_stream_close before unreffing to release file descriptors
- * a few memory leaks plugged
-
-2007-02-13 Patch from Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * tracker.cfg: replaced the unused EnableDebugLogging entry with Verbosity
- * remove unnecessary checks for tracker->verbosity
- * some spelling corrections and other minor changes
- * lowered tracker-preferences' GTK+2.0 version requirement from 2.10 to 2.8
- * README fixes
-
-2007-02-12 Patch from Gergan Penkov <gergan at gmail com>
-
- * Added missing function prototype
-
-
-2007-02-12 Jamie McCracken <jamiemcc at gnome org>
-
- * lots of bug fixes to get imap email support functional
-
-
-2007-02-11 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-preferences/tracker-preferences.c:
- (tracker_preferences_init):
- Fix the glade name of buttonbox area.
-
-2007-02-10 Jamie McCracken <jamiemcc at gnome org>
-
- * finished adding evolution email support
- * added revamped tab interface to tracker-search-tool
- * added email searching support to tst
- * added new methods to get hit counts by service
- * added cropping to tst display
- * split up sql scripts
- * added evolution display of emails in tst
-
-
-2007-02-10 Patch from Saleem Abdulrasool <compnerd at gentoo org>
-
- * Added preferences capplet
-
-
-2007-01-29 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed bug for service types
- * fixed mplayer bug with audio/video.Duration
-
-
-2007-01-28 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed bug where moving a file would not update index of the new filename
- * made some of the db data static
-
-
-2007-01-28 Patch from Michael Biebl <mbiebl at gmail com>
-
- * removed python header from deskbar module
- * changed Max results to 10
-
-
-2007-01-28 Patch from Laurent Aguerreche <laurent aguerreche at free fr>
-
- * email fixes
- * improved imap4 support
- * memory leak fix in indexer
-
-2007-01-27 Patch from Saleem Abdulrasool <compnerd at gentoo org>
-
- * Made deskbar-handler installation optional
-
-2007-01-27 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
-
- * configure.ac: added ru to ALL_LINGUAS.
-
-2007-01-25 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed update of embedded keywords
- * added deskbar handler to tarball and installation
- * updated man page for trackerd
-
-2007-01-24 Patch from Michael Biebl <mbiebl at gmail com>
-
- * converted xdgmime to private lib
-
-2007-01-24 Jamie McCracken <jamiemcc at gnome org>
-
- * Added magic.h to check_headers in configure.ac
- * Created tracker_info and tracker_debug and replaced all the g_log functions that were polluting xsession-errors
-
-
-2007-01-23 Jamie McCracken <jamiemcc at gnome org>
-
- * Improved message display
- * Made sure all external stuff is fully protected from excessive memory/cpu
- * Repaired mplayer backend and make it used when gstreamer returns nothing
- * Added libmagic for extra mime checks
-
-
-2007-01-22 Patch from Michael Biebl <mbiebl at gmail com>
-
- * Fix to get test suite built
-
-
-2007-01-22 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-stats.c:
-
- Port tracker-stats to GOption and mark translatable strings.
- Fix bug 397940.
-
-2007-01-21 Patch from Daniel Fullmer <cgibreak at gmail com>
-
- * fix for parallel make
-
-2007-01-21 Patch from Michael Biebl <mbiebl at gmail com>
-
- * Updated License info
- * added LGPL Copying.Lib to libtracker
-
-
-2007-01-21 Jamie McCracken <jamiemcc at gnome org>
-
- * Completed optimisation of indexing
- * Added a verbosity command line param
- * Made sure all indeixng occurs under a single transaction
- * removed superflous code
-
-
-2007-01-21 Kjartan Maraas <kmaraas@gnome.org>
-
- * configure.ac: Added nb to ALL_LINGUAS.
-
-
-2007-01-19 Jamie McCracken <jamiemcc at gnome org>
-
- * changed mmap back to shared as optimisation would destroy the index
- * made indexing super fast
- * smoothed out indexing so that it (virtually) never slows the system down
- * made default full throttle (turbo)
- * Added new high speed index flusher
- * Improved word descriminator
-
-
-2007-01-14 Jamie McCracken <jamiemcc at gnome org>
-
- * added throttling param to control speed of indexing (--throttle)
- * adjusted default throttling so that cpu ~50% during heavy indexin
- * throttled tracker daemon at strategic points
- * removed erroneous cache word deletion when delete_directry
- * removed problem statement that was somehow deleting the cache db
- * Improved word breaker and fixed index roots not being indexed
- * changed shared mmap to private for qdbm to work on FUSE
-
-
-2007-01-12 Patch from Michael Biebl <mbiebl at gmail com>
-
- * Fixed make distcheck
- * added bzip2 build
- * fix for configure.in -> configure.ac move
-
-
-2007-01-12 Jamie McCracken <jamiemcc at gnome org>
-
- * Sped up word breaker and made it use less memory
- * Fixed bug where root dirs were not getting indexed properly
- * Added some sleeping to reduce stress on machine when heavily indexing
-
-
-2007-01-11 Patch from Saleem Abdulrasool <compnerd at gentoo org>
-
- * Detect dbus service directory
-
-2007-01-11 Patch from Michael Biebl <mbiebl at gmail com>
-
- * based on patch from Saleem Abdulrasool <compnerd at gentoo org>
- * removed mysql files
- * cleaned up build for sqlite
-
-2007-01-10 B Berteh <berteh at hotmail com>
-
- * added README for deskbar handler and nautilus tags
- * remove temporary included image files left by wvText
-
-2007-01-10 Jamie McCracken <jamiemcc at gnome org>
-
- * Merged all extraction into one thread to lessen queueing overhead
- * disabled some code in the emails section
- * added some more email db support routines
- * improved support for email attachments indexing
-
-2007-01-10 Patch from Saleem Abdulrasool <compnerd at gentoo org>
-
- * Build fixes
- * fixed build of test suite
- * fixed --enable-debug-code configure arg
- * made libpng a mandatory dependency
- * added check for thumbnail directory and create it if necessary
-
-2007-01-09 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * configure.in: Added 'gl' to ALL_LINGUAS.
-
-2007-01-07 Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * README: Ensured all lines over 79 colums were reduced for readability
- * README: Added xdg-utils, libpng, libexif, and libgsf as dependencies
- * t-s-t: Added xdg-open to 'Open Folder' with a fallback to gnome-open
-
-2007-01-07 Priit Laes <plaes@svn.gnome.org>
-
- * configure.in: Added 'et' (Estonian) to LINGUAS.
-
-
-2007-01-03 Tshepang Lekhonkhobe <tshepang@gmail.com>
-
- * Added a note on the reason why SQLite is statically-linked
-
-2007-01-03 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * improved email support
- * added imap support
- * linked in db email support
-
-2007-01-02 Jamie McCracken <jamiemcc at gnome org>
-
- * Added new crawler to speed up indexing
-
-
-2007-01-02 Matic Zgur <mr.zgur@gmail.com>
-
- * configure.in: Added sl to ALL_LINGUAS.
-
-
-2007-01-01 Patch from Bjoern Gruening <bjoern at gruenings eu>
-
- * Added tex filter support
-
-2007-01-01 Jamie McCracken <jamiemcc at gnome org>
-
- * Added db support for emails
- * added indexing support for emails
- * optimised metadata insertion
-
-2007-01-01 David Lodge <dave@cirt.net>
-
- * configure.in: Added en_GB
-
-2006-12-23 Jamie McCracken <jamiemcc at gnome org>
-
- * Added debug compile option
- * fixed memory leaks during indexing
- * Made Database changes to support new Metadata engine
- * Changed metadata to reflect RDF style (using colon instead of fullstop for class/metadata)
- * Added Dublin Core metadata
- * modified code to use new metadata names and also Dublin Core
- * added support for metadata relationships
- * made metadata support more than one value per item
- * made keywords use the new metadata engine.
- * changed keyword metadata to "DC:Keywords"
- * Applied some Dublin Core relationships to existing metadata
- * Made RDF QUery function with new metadata engine and also metadata relationships
- * Used file command to check to see if files are plain text or not
- * split filenames by hyphen and underscore so individual parts will show up in searches
- * index meaningful numbers (IE all numbers at least 5 digits long so searchers can now be done for things like telephone no.s, bank accounts, ISBN etc)
- * modified snippet to start/end on a word break if possible
-
-2006-12-19 Francisco Javier F. Serrador <serrador@openshine.com>
-
- * configure.in: Added 'es' to ALL_LINGUAS
-
-2006-12-16 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-search-tool/tracker-search-tool.desktop.in:
-
- Update launcher description to match GNOME HIG.
-
-2006-12-16 Luca Ferretti <elle.uca@libero.it>
-
- * src/tracker-search-tool/tracker-search-tool.c:
- (update_search_counts), (update_constraint_info),
- (get_desktop_item_name):
-
- Comment out some unused strings from gnome-search-tool and
- change other "Search for Files" window title strings to
- "Tracker Search Tool". But those should be unused too.
-
- Now all strings marked as translatable should really appears
- in the GUI.
-
-2006-12-14 Ilkka Tuohela <hile@iki.fi>
-
- * configure.in: Added 'fi' and 'sv' to ALL_LINGUAS
-
-2006-12-03 Eugenio <me at eugesoftware com>
-
- * added a QT based search tool to python directory
-
-2006-11-30 Luca Ferretti <elle.uca@libero.it>
-
- * src/trackerd/trackerd.c:
- Add a missing : in --help message to match other tools.
-
-2006-11-30 Luca Ferretti <elle.uca@libero.it>
-
- * src/trackerd/trackerd.c:
- Change command line options and enable i18n. Fore more info
- about changes, see http://mail.gnome.org/archives/tracker-list/2006-November/msg00382.html
-
-2006-11-29 Patch from Michael Biebl <mbiebl at gmail com>
-
- * cleaned up makefiles for debian compliance
- * removed debian subfolder from cvs
- * fixed make dist
-
-2006-11-29 Jamie McCracken <jamiemcc at gnome org>
-
- * Cleaned up Makefiles
- * set executable scripts to libdir and not datadir
- * added missing license/copyright info to files
-
-
-2006-11-27 Edward Duffy <eduffy at gmail com>
-
- * made thumbnailing fdo compliant
-
-2006-11-27 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed crasher in snippet generator and made it more utf-8 friendly
-
-2006-11-26 Eugenio <me at eugesoftware com>
-
- * updated fuse based trackerdfs
- * omplete support for move/copy/create dir/file
-
-2006-11-26 Gergan Penkov <gergan at gmail com>
-
- * Updated configure.in to support more distro firendly options
-
-2006-11-21 Deji Akingunola <dakingun gmail com>
-
- * removed extra trackerd.desktop file
- * fixed t-s-t desktop file
-
-
-2006-11-21 Luca Ferretti <elle.uca@libero.it>
-
- * python/FUSE/trackerfs.py:
- Updated by Eugenio Cutolo.
-
-2006-11-21 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-search-tool.c:
- Reduce the number of translable messages using C style comment
- blocks to exclude unused functions and remove _() macros from
- unused strings.
- Change the window title to match the launcher label.
-
-2006-11-21 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-tag.c:
- * src/libtracker/tracker-search.c:
- Fix a couple of typos in translatable messages.
-
-2006-11-21 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-tag.c:
- * src/libtracker/tracker-search.c:
- Standardized error messages.
-
-2006-11-20 Luca Ferretti <elle.uca@libero.i>
-
- * configure.in: Add a check for glib >= 2.12.0 and
- define HAVE_RECENT_GLIB.
-
- * src/libtracker/tracker-tag.c: Use g_option_context_set_summary
- only if HAVE_RECENT_GLIB is defined.
-
-2006-11-20 Jamie McCracken <jamiemcc at gnome org>
-
- * updateded desktop files
- * fixed t-s-t to let back/forward buttons to remain sensitive if applicable
- * fixed resizing of columns in t-s-t
- * improved snippet generation
- * made snippet call async in t-s-t
- * made use of tracker's mime instead of slower Gnome-vfs mime detection in t-s-t
-
-2006-11-19 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed snippets so that multiple terms are highlighted
- * used a copied version of function g_utf8_strcasestr from gtksourceview to provide caseless utf-8 searching
- * used utf-8 casefold and normalization in parser
- * tidied up t-s-t
- * made font colour of snippet much clearer
- * made snippets wrap around when resizing t-s-t
- * added icon to both t-s-t and desktop file
- * reduced sqlite cache usage
-
-
-2006-11-18 Jamie McCracken <jamiemcc at gnome org>
-
- * Limited tracker-extracts memory usage using setrlimit
- * prevents unreasonable memory usage (especially mistaken treatment of large binary files as video files)
- * fixed rdf bug where a search term without a query could not be executed
-
-2006-11-18 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * added more tmeplate filters
- * improved use of tmp directory for temporary stuff
-
-
-2006-11-16 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * added missing OOO templates to our filters
-
-
-2006-11-16 Eugenio <me at eugesoftware com>
-
- * added fuse based trackerdfs to our python tools
-
-
-2006-11-16 Edward Duffy <eduffy at gmail com>
-
- * added timeout to all external processes used by tracker
-
-
-2006-11-16 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-tag.c:
- Add l10n/i18n support, changing some messages for a better
- translation experience.
-
-2006-11-15 Edward Duffy <eduffy at gmail com>
-
- * added xdg-open to t-s-t with fallback to gnome-open
-
-2006-11-15 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * added desktop files to debs
-
-2006-11-15 Luca Ferretti <elle.uca@libero.it>
-
- * */.cvsignore: Add cvs ingore files.
-
-2006-11-12 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * changed html filter to use w3m
-
-2006-11-12 Gergan Penkov <gergan at gmail com>
-
- * fixed dbus warning
-
-2006-11-12 Edward Duffy <eduffy at gmail com>
-
- * added abiword and xml text filters
-
-2006-11-12 Deji Akingunola <dakingun gmail com>
-
- * added tracker.spec file
- * added trackerd.desktop file
-
-2006-11-12 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed fam backend
-
-2006-11-11 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed bug in rdf query so that non file objects are supported by default
- * fixed gstreamer extractor to time out after a few seconds (this prevents it hanging with some movie files)
-
-
-2006-11-10 Edward Duffy <eduffy at gmail com>
-
- * Downgraded libpoppler requirements
-
-
-2006-11-10 Deji Akingunola <dakingun gmail com>
-
- * added .desktop file for tracker-search-tool
-
-2006-11-10 Luca Ferretti <elle.uca@libero.it>
-
- * configure.in:
- Replace AM_GLIB_DEFINE_LOCALEDIR with a custom test and AC_DEFINE
- due to the bug #343825 (glib vs. autoconf >= 2.60). See also
- http://lists.debian.org/debian-gtk-gnome/2006/06/msg00001.html
- (from Laurent Aguerreche)
-
-2006-11-10 Luca Ferretti <elle.uca@libero.it>
-
- * debian/tracker-dev.docs:
- * debian/tracker-dev.install:
- Removed from cvs (from Laurent Aguerreche)
-
-2006-11-09 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-search.c:
- Restore #include <locale.h> (maybe needed on some systems) and
- move setlocale() before *textdomain() (from Laurent Aguerreche)
-
-2006-11-09 Luca Ferretti <elle.uca@libero.it>
-
- * Makefile.am:
- * debian/tracker-utils.manpages:
- * dedian/tracker.manpages:
- Add missing manpages for deb packages which have to be
- distributed by "make dist" (patch by Laurent Aguerreche)
-
-2006-11-09 Hendrik Richter <hendrikr@gnome.org>
-
- * configure.in: Added "de" to ALL_LINGUAS
-
-2006-11-09 Luca Ferretti <elle.uca@libero.it>
-
- * src/libtracker/tracker-search.c:
- Restore "setlocale" call. Now localization should work at runtime
- for this tool (by Laurent Aguerreche)
-
-2006-11-09 Luca Ferretti <elle uca libero it>
-
- * fixed "make dist" for intltool-* stuff (by Laurent Aguerreche)
-
-2006-11-07 Luca Ferretti <elle uca libero it>
-
- * added internationlisation support to tracker and t-s-t
-
-2006-11-07 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * fixed bad comment tag in mplayer extractor
-
-
-2006-11-07 Julien <julienc psychologie-fr org>
-
- * fixed bug in tracker-query so that service types are enabled
-
-
-
-2006-11-07 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed bug in plain text sniffer
-
-
-
-2006-11-05 <tpgww@onepost.net>
-
- * cleanups to remove compiler warnings
-
-2006-11-05 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * improved use of tmp directory
- * added gstreamer based extractor for audio and video tags
- * cleaned up other extractors
-
-
-2006-11-01 Jamie McCracken <jamiemcc at gnome org>
-
- * emebedded sqlite with threadsafe mode enabled
- * inlined sqlite code and made it a prvate non-installable lib which is statically linked in
- * fixed initilaisations of vars in mp3-extract to prevent segfaults
-
-
-2006-11-01 Luca Ferretti <elle uca at libero it>
-
- * fixed build (Makefile, not MakeFile)
-
-2006-10-30 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * fixed and cleaned debian build
- * fixed build of man pages
-
-
-2006-10-30 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * created python based notification applet for tracker
-
-
-2006-10-29 Bastien Nocera <hadess hadess net>
-
- * totem parsing speedup
-
-
-2006-10-29 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Updated debian build
- * cleaned up process
- * added new package for tracker-search-tool
-
-
-2006-10-29 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed tag error when setting a new tag on a file
-
-
-2006-10-29 Eskil Bylund <eskil at letterboxes org>
-
- * fixed window sizing of tracker-search-tool
- * added buttonbox for prev/next buttons in t-s-t
-
-2006-10-29 Ulrik Mikaelsson <ulrik mikaelsson gmail com>
-
- * fixed leak in GetMetadataForFilesInFolder
- * fixed field checking in GetMetadataForFilesInFolder
- * added dbus argument error handling
- * fixed issue with tracker-tag not reporting file not found
- * added comamnd line args to t-s-t
-
-
-2006-10-29 tobutaz <tobutaz gmail com>
-
- * imporved ioprio detection and operation
-
-
-2006-10-29 Mikkel Kamstrup Erlandsen <mikkel kamstrup gmail com>
-
- * added grey lettering for snippet
-
-
-2006-10-29 Baptiste Mille-Mathias <baptiste.millemathias gmail com>
-
- * added initial manpages for the tracker command line tools
-
-
-2006-10-22 Richard Quirk <quirky@zoom.co.uk>
-
- * fixed potential crasher in tracker_db_search_text
-
-2006-10-22 Jamie McCracken <jamiemcc at gnome org>
-
- * updated debian folder and files to build debs
- * fixed tracker.pc to use libtrackerclient
- * fixed bug where data flushing to qdbm could end up in an infinite loop
-
-
-2006-10-22 Eskil Bylund <eskil at letterboxes org>
-
- * build fix for make dist
- * fix for tracker-search-tool's handling of filenames by escaping them
-
-
-2006-10-16 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed gui
- * added buttons
- * cleaned up code
- * created dbus methods to get snippets
-
-
-2006-10-17 Edward Duffy <eduffy at gmail com>
-
- * Made a totem extractor
- * Fix for pdf extractor
-
-
-
-2006-10-16 Jamie McCracken <jamiemcc at gnome org>
-
- * Added optional periodic fsync and fast mode to make tracker more background friendly
- * Added intermediate temp storage of words so that most common words are applied at the end to prevent fragmentation
- * Added sheduling
- * Made sure tracker daemon is now really smooth
- * fixed a few leaks
-
-2006-10-16 Edward Duffy <eduffy at gmail com>
-
- * Made an mplayer extractor
- * Fix for potential crasher in tracker-extract
- * Fix for autotools
-
-
-2006-10-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed crasher by applying a mutex to guard non-threadsafe stemmer
-
-
-2006-10-12 Marcus Fritzsch <fritschy at googlemail com>
-
- * Patch to make sure ignore dirs argument is treated as an array
-
-
-2006-10-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Created command line options for trackerd
- * Created more extensive options for tuning performance/memory and disk space usage - new config file format
- * Removed LibExtractor dependency
- * created new mp3 extractor for id3 id3v21, id3v22, id3v23 and id3v24
- * added snowball stemmers (as a static library)
- * added multi language stopword files
- * added support for determining which language to use by default based on locale
- * made sure only lstat is used to prevent symlink directories from being followed
-
-2006-10-11 Jedy Wang <Jedy Wang at Sun COM>
-
- * Patch to improve compilation on Solaris
-
-
-2006-10-08 Jamie McCracken <jamiemcc at gnome org>
-
- * Created tracker-search-tool (based on gnome-search-tool)
- * Bug fix for handling uri's without a leading backslash in indexing
- * tuned indexer
-
-
-
-2006-10-07 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Made Thunderbird backend aware of vfolders
-
-
-2006-10-05 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Email uri fixes
-
-
-2006-10-05 Jamie McCracken <jamiemcc at gnome org>
-
- * blocked extraction of non-regular files
-
-
-2006-10-05 Marcus Fritzsch <fritschy at googlemail com>
-
- * Patch to make sure NULL is returned if no date is available in tracker_db_get_field_def
-
-
-2006-10-03 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Cleaned up tracker-db-sqlite source
- * Fixed potential crasher where g_free was being used on a g_lice allocation
-
-2006-10-03 Jamie McCracken <jamiemcc at gnome org>
-
- * fixed retrieval of metadata types
- * fixed Metadata.Get method
- * fixed Files.GetByMimeType
- * added python stuff to repository
- * added lyrics.py ripped from rhythmbox and modded by Samuel Cormier-Iijima
- * added nautilus tag tabs written by Edward Duffy
-
-
-2006-10-03 Edward Duffy <eduffy at gmail com>
-
- * added libgsf extractor for ms office files
- * added open document thumbnailers
- * fix for sqlite sql
- * fixed auto tagging
-
-
-2006-10-03 Anders Aagaard <aagaande at gmail com>
-
- * added ionice support
-
-
-2006-10-02 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Force email body to return plain text instead of html
- * Fixed signedness warnings in xdgmime
-
-
-2006-10-02 Jamie McCracken <jamiemcc at gnome org>
-
- * restructured database for email support
- * Fixed RDF Query to work with sqlite
- * Added sqlite sql functions (display of dates)
- * Added keywords support to rdf query
- * Changed most of the a{sv} dbus methods to aas
- * Modified command line tools to use aas
- * removed redundant dbus methods and parameters
-
-
-2006-10-01 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Added Kmail email support
- * Added fixes for sqlite
-
-
-2006-10-01 Jamie McCracken <jamiemcc at gnome org>
-
- * restructured database
- * Used Curia instead of Depot for inverted index as its more scalable
- * Fixed issues with new indexer
- * Fixed keywords to update indexer properly
- * Fixed keyword search and list methods
- * Added auto tag support for Doc.Keywords and Image.Keywords (based on patch by Edward Duffy)
- * Auto optimize index after first run and automatically after user settable no of updates
-
-
-2006-09-27 Edward Duffy <eduffy at gmail com>
-
- * made internal extractors external and intgrated into tracker-extract
- * added extractors for images
-
-2006-09-27 Jamie McCracken <jamiemcc at gnome org>
-
- * fix bug with search text (correct no of results now returned)
- * got search mime , search location and search mime location working
- * replaced bzip compression with zlib
-
-
-
-2006-09-26 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Added #ifdefs to make libpoppler usage optional
-
-
-2006-09-26 Jamie McCracken <jamiemcc at gnome org>
-
- * fix bug with get_metadata routine expecting metadata name and not metadata id
-
-
-2006-09-25 Jamie McCracken <jamiemcc at gnome org>
-
- * Integrated new indexer and parser into tracker/sqlite
- * Added support for insert, update and delete
- * performs differential indexing for updates
- * got tracker-search to function with it
-
-2006-09-25 Edward Duffy <eduffy at gmail com>
-
- * added internal extractors for pdf, OpenDocument, Abiword and Postscript
-
-2006-09-25 Fabien VALLON <fabien at sonappart net>
-
- * Did an initial ogg extractor
-
-2006-09-25 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Added thunderbird email support
- * Added fixes for detecting deleted and junk emails in Evolution mail parser
-
-2006-09-21 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Added detection of deleted and junk messages to email indexing
-
-
-2006-09-21 Edward Duffy <eduffy at gmail com>
-
- * added jpeg and png thumbnailers
-
-
-2006-09-21 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Inotify patch to clean up code
- * Also made sure inotify timeout for file move detection is removed when no moved files are pending (this prevents tracker from peridoically waking up)
- * added g_message support for logging messages
-
-2006-09-21 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Added initial email indexing support
- * Added indexing of evolution emails
- * Added indexing of email attachments
-
-
-2006-09-21 Jamie McCracken <jamiemcc at gnome org>
-
- * Created Test suite for new indexer
- * fixed bugs in indexer
-
-
-2006-09-19 Jamie McCracken <jamiemcc at gnome org>
-
- * Finished tracker's new indexer
-
-
-2006-09-19 Fabien VALLON <fabien at sonappart net>
-
- * Added retrieval of tracke number to tracker-extract
-
-
-2006-09-18 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Added search by service option to tracker-search
-
-
-2006-09-17 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Added Goption and limit option to tracker-search
-
-
-2006-09-16 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed erroneous rdf query where returned values were null
-
-
-2006-09-16 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Patch to fix sqlite sql
- * Patch to fix race condition in request thread
-
-
-2006-09-16 Jamie McCracken <jamiemcc at gnome org>
-
- * More work on tracker-indexer
-
-
-
-2006-09-12 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Patch to fix segfault when retrieveing metadata
- * Patch to use g_slice_new0 instead of g_slice_new
-
-
-
-2006-09-11 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Patch to fix sending of null values on Dbus
- * Also fix for erroneous g_free on a g_slice allocation
-
-
-2006-09-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Tidied up tracker-GUI
- * Inline libsexy widget
- * extended parser to support line by line indexing
- * added more functionality to new indexer
-
-
-2006-09-13 Edward Duffy <eduffy at gmail com>
-
- * Enhanced tracker GUI
- * fixed display of sexy icon entry
-
-
-2006-09-13 Jaime Frutos Morales <acidborg at gmail com>
-
- * Patch to add skeleton for tracker GUI
-
-
-2006-09-11 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Patch to add Goption support for tracker-tag
-
-
-2006-09-11 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Added option to disable thumbnail generation
-
-
-2006-09-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Added bug fixes to sqlite functionality
-
-
-
-2006-09-10 Jamie McCracken <jamiemcc at gnome org>
-
- * Added rough sqlite support
-
-
-2006-09-10 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Fixed symlink problem
- * More code cleanup
-
-
-2006-09-07 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Handled Dbus Connection shutdown gracefully
- * tracker deamon now shuts down smoothly when dbus session bus is stopped
- * Big code cleanup
-
-
-2006-09-06 Jamie McCracken <jamiemcc at gnome org>
-
- * Finishsed db abstractions
- * Added initial sqlite support
-
-
-2006-09-02 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Fix for Rdf-query parser to allow "contains" function to be called more easily
-
-
-2006-09-02 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Added locale handling for non utf-8 files
- * Made sure all filenames passed to posix system calls are translated to user's locale
- * made sure all results are displayed in user's locale
- * cleaned up code
-
-
-2006-09-02 Jamie McCracken <jamiemcc at gnome org>
-
- * Added more abstractions for db calls
-
-2006-08-25 Jamie McCracken <jamiemcc at gnome org>
-
- * Improved thread synchronisation speed
- * Fixed potential deadlock as pointed out by Laurent Aguerreche <laurent aguerreche at free fr>
- * Improved exiting
-
-2006-08-21 Gergan Penkov <gergan at gmail com>
-
- * Fix sql for an SP
-
-2006-08-21 Jamie McCracken <jamiemcc at gnome org>
-
- * Improved thread synchronisation using G_COND and g_cond_signal and g_cond_wait
- * Eliminated redundant mutexes (file available/metadata available)
- * Restructured threads to be more efficient
- * Added two phase program halt so that stuff ends gracefully and all threads are exited smoothly
-
-
-2006-08-21 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Patch to fix signal handling amongst threads
- * Jamie McCracken heavily modified this patch to make sure it avoids deadlocks and race conditions
-
-
-2006-08-19 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Patch to fix debain build
- * split up tracker into several debs
- * Fixed make dist in autofoo
-
-
-2006-08-19 Jamie McCracken <jamiemcc at gnome org>
-
- * Abstracted all mysql specific stuff into tracker-db-mysql
- * Paved the way to support alternative backends like sqlite/qdbm
-
-
-2006-08-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Added new tracker-file-convert to convert text file into list of unique words with associated counts
- * Added support for stemming
- * Added new parsing word breaker
- * Added experimental (but currently disabled) qdbm indexing (tracker-indexer c)
-
-
-2006-08-13 Marcus Fritzsch <fritschy at googlemail com>
-
- * Patch to make sure a dbus reply is sent if the rdf query string is NULL or erroneous
-
-
-2006-08-03 Marcus Fritzsch <fritschy at googlemail com>
-
- * Patch to make sure query is not null in tracker_exec_sql
-
-
-2006-08-03 Jamie McCracken <jamiemcc at gnome org>
-
- * Added new Dbus methods for File Exists and File GetServiceType
-
-
-2006-08-02 Jamie McCracken <jamiemcc at gnome org>
-
- * Added new command line tool tracker-files
-
-
-2006-08-02 Edward Duffy <eduffy at gmail com>
-
- * Patch for small fix to XdgMime
-
-
-
-2006-08-02 Jedy Wang <Jedy Wang at Sun COM>
-
- * Patch to add build instructions for Solaris to README file
-
-
-
-2006-08-02 Laurent Aguerreche <laurent aguerreche at free fr>
-
- * Patch to fix sql
-
-
-2006-08-01 Jamie McCracken <jamiemcc at gnome org>
-
- * Added offset parameter to search methods
-
-
-
-2006-07-31 Jedy Wang <Jedy Wang at Sun COM>
-
- * Patch to improve compilation on Solaris
-
-
-
-2006-07-31 Jamie McCracken <jamiemcc at gnome org>
-
- * Added realpath for file parameters in command line tools
- * Improved search terms to *and* them by default
- * added support for OR in search terms
- * added support for excluding a search term
- * added bugfixed XDGMIME from Beagle to prevent crashes
-
-
-2006-07-30 Marcus Fritzsch <fritschy at googlemail com>
-
- * Patch to make build more debian friendly
-
-
-2006-07-30 Jedy Wang <Jedy Wang at Sun COM>
-
- * Patch to fix crasher on solaris
-
-
-
-2006-07-30 Christoph Laimburg <christoph laimburg at rolmail net>
-
- * Patch to replace deprecated dbus call (dbus_connection_disconnect)
-
-
-2006-07-30 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Patch to add RegExp rdf query extension support
-
-
-2006-07-30 Samuel Cormier-Iijima <sciyoshi at gmail com>
-
- * Modified patch to make no watch directories parameter functional
-
-
-
-2006-07-30 Jamie McCracken <jamiemcc at gnome org>
-
- * Added new command line tools (tracker-tag)
- * Fixed bugs in tracker-search methods
- * Fixed bugs in tracker-query
-
-
-2006-07-25 Jamie McCracken <jamiemcc at gnome org>
-
- * Sorted out libtracker
- * updated to reflect new dbus interfaces
- * Added new command line tools
-
-
-2006-07-22 Jamie McCracken <jamiemcc at gnome org>
-
- * Created new dbus interface for Search and Files
- * Added new methods to create richer dbus functionality
- * Ported over existing metadata methods to new interface
-
-
-2006-07-18 Jamie McCracken <jamiemcc at gnome org>
-
- * Created new dbus interface for Keywords
- * Added new methods for adding, removing and searching keywords
-
-
-2006-07-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Created new dbus interface for Metadata
- * Added new methods for registering and querying metadata types
- * Ported over existing metadata methods to new interface
-
-
-
-2006-06-30 Jamie McCracken <jamiemcc at gnome org>
-
- * Added New Dbus Interface Methods
- * Added GetStats, GetServices and GetVersion
-
-
-
-2006-06-12 Jamie McCracken <jamiemcc at gnome org>
-
- * Reworked rdf query functionality
- * Optimised it for performamce
- * Added new extensions for Contains and StartsWith
-
-
-
-2006-05-17 Gergan Penkov <gpp666_999 at yahoo de>
-
- * Fix for conifgure in (added ssl linking due to bug in mysql)
-
-
-2006-05-14 Jamie McCracken <jamiemcc at gnome org>
-
- * Improved metadata support for Exif fields
- * Created new stats for indexed files
- * Created new file orientated services
-
-2006-05-07 Jamie McCracken <jamiemcc at gnome org>
-
- * Fixed crasher in date parser
- * Improved UTF-8 conversion of metadata
- * Improved Inotify header checks (now looks for sys/inotify h as well as linux/inotify h)
- * Fixed build issues on FC5
-
-
-2006-05-05 Jamie McCracken <jamiemcc at gnome org>
-
- * Hugely optimised indexing when many files are waiting to be indexed
- * Mass queueing of files no longer blocks the main thread
- * Fixed minor memory leak in new date parser
-
-
-2006-05-01 Jamie McCracken <jamiemcc at gnome org>
-
- * Migrated embedded database to mysql 5
- * Removed all parameterized queries and replaced with stored procedures
- * New stored procedures to encapsulate DB functionality and remove most DB logic from application
- * Simplified C code when interfacing with DB
- * Added support for parsing dates in various formats including conversion to/from ISO 8601 format
- * Fixed MsWord filter to prevent looping (WvText causes inotify to report file write change causing endless looping)
- * Redesigned DB structure to be more generic and service orientated
- * Added support for service types (first class objects) to DB
- * Renamed tables to be more service orientated
- * Added DB versioning data to DB so future DB changes can be implemented painlessly (and without requiring a rebuild of all indexed data)
-
-
-2006-04-22 Dan Nicolaescu <dann at ics uci edu>
-
- * Patch to fix correct use of argv
- * Ensure correct message printed if wrong no of arguments supplied
-
-
-2006-04-22 Dan Nicolaescu <dann at ics uci edu>
-
- * Patch to fix build for Fedora Core 5
-
-
-2006-04-22 Nate Nielsen <nielsen at memberwewbs com>
-
- * Fix compile warnings, crasher
-
-
-2006-03-28 Jamie McCracken <jamiemcc at gnome org>
-
- * Redesigned Dbus Interface to be more generic and cleaned up code
- * Corrected search results of hyphenated search terms
- * Added support for maximum hit count to search queries
- * Added optional support for sorting search results by relevance score
-
-2006-03-12 Jamie McCracken <jamiemcc at gnome org>
-
- * Updated to latest XDGMime
- * Fixed bugs with filename metadata type not being updated in a file move operation
- * Improved speed of some intoify operations
-
-
-
-2006-02-27 Jamie McCracken <jamiemcc at gnome org>
-
- * Added inotify support
- * Optimised inotify move support
- * Improved Build system
- * Can use an external libextractor if found during compilation
- * Fixed some leaks
- * Fixed threading issues with new inotify backend
-
-
-2006-01-14 Jamie McCracken <jamiemcc at gnome org>
-
- * Updated libtracker to be more usable especially for Nautilus search
-
-
-2006-01-11 Jamie McCracken <jamiemcc at gnome org>
-
- * Improved file change handling by creating a pending file
- queue and a pending File Database table This allows changes
- awaiting processing by the tracker daemon to be handled much
- more efficiently with respect to memory usage
-
-
-2006-01-06 Jamie McCracken <jamiemcc at gnome org>
-
- * Added fallback polling mechanism to trackerd c This kicks
- in if iNotify/FAM is not available (IE if home directory
- is on an NFS mount) or if iNotify/FAM watch limits have
- been exceeded
-
-
-2005-12-13 Jamie McCracken <jamiemcc at gnome org>
-
- * Imported initial version of Tracker into CVS
-
-
-2005-09-15 Jamie McCracken <jamiemcc at gnome org>
-
- * Tracker Project started
-
-
-
-
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 23e5f25d0..000000000
--- a/INSTALL
+++ /dev/null
@@ -1,236 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script). Here is a another example:
-
- /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
-configuration-related scripts to be executed by `/bin/bash'.
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 804da5d0d..000000000
--- a/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-SUBDIRS = data src filters thumbnailers docs po python
-
-autostartdir = $(sysconfdir)/xdg/autostart
-autostart_in_files = trackerd.desktop.in
-autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
-
-@INTLTOOL_DESKTOP_RULE@
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = tracker.pc
-
-if ENABLE_LIBTRACKERGTK
-pkgconfig_DATA += libtracker-gtk.pc
-endif
-
-EXTRA_DIST = \
- rdf-query-examples/80s-music.rdf \
- rdf-query-examples/90s-music.rdf \
- rdf-query-examples/all-documents.rdf \
- rdf-query-examples/big-documents.rdf \
- rdf-query-examples/wallpapers.rdf \
- intltool-extract.in \
- intltool-merge.in \
- intltool-update.in
-
-CLEANFILES = $(autostart_DATA)
-
-DISTCLEANFILES = \
- intltool-extract \
- intltool-merge \
- intltool-update
-
-DISTCHECK_CONFIGURE_FLAGS = \
- --with-session-bus-services-dir="\$(datadir)"/dbus-1/services \
- --disable-deskbar-applet
diff --git a/NEWS b/NEWS
deleted file mode 100644
index 03dd131b2..000000000
--- a/NEWS
+++ /dev/null
@@ -1,335 +0,0 @@
-Tracker 0.6.6
-============= (03 Mar 2008)
-
- Applet
- * HIG fix for preference window.
- * Progress for index merges added.
-
- Tracker daemon
- * Fixed shutdown of daemon when paused to prevent hangs.
- * Fixed an unfinished final index merge step when next restarted.
-
-
-
-Tracker 0.6.5
-============= (27 Feb 2008)
-
- Applet
- * Removed popup window and replaced with tooltip displaying status
- and progress.
- * New Applet preferences to turn off animation/hide icon/set
- smart pause.
- * Smart pause feature which can auto-pause the Tracker daemon
- whenever the user presses a key or moves the mouse, thereby
- improving system responsiveness during indexing.
- * Annoying merge messages have now been removed.
- * Reindex option added.
- * About box added.
- * Now hidden if indexing is disabled.
- * Bugs with constant animation fixed.
- * Animation rate slowed right down so as to be less annoying.
-
- Tracker daemon
- * Temporary blacklisting of frequently changing files (they are
- indexed after one hour or on next restart of Tracker daemon).
- This prevents constant indexing from downloads and torrents.
- * More blacklisting of common tmp formats and vmware files.
- * Memory leak fixes.
- * Removed CPU-heavy corruption scan which can last long time and
- occurs on battery too at startup when tracker daemon was not
- previously shut down properly. Instead we now use bigger
- transactions with fsync on to prevent corruption in the first
- place (only slightly more disk IO is used during indexing as a
- result).
- * Fixed crashers.
- * Fixed D-Bus shutdown/reindex call.
-
-
-
-Tracker 0.6.4
-============= (11 Dec 2007)
-
- * Made indexing more robust by pausing if disk space is low or
- index grows too big.
- * Limit log file size to 10MB.
- * New Tracker Applet - animates when indexing, provides ability to
- pause indexing as well as viewing status and progress feedback
- from indexer, statistics, and notification warnings; it can
- also launch Tracker Preferences and Tracker Search Tool.
- * New power management options enable much better customization.
- * Ignored files fixes.
- * Deskbar/tracker integration fixes.
- * Made most prefs live and affect Tracker in real time; others
- will prompt for restart and/or reindex where necessary.
- * Shell script fixes
- * Fixed Imap bug with embedded Auth in URI.
- * Built-in corruption check and scan when Tracker is not shut down
- cleanly - prevents infinite looping.
- * Fix index deletions.
- * Many more bug fixes and stability improvements.
-
-
-
-Tracker 0.6.3
-============= (25 Sep 2007)
-
- * Fixed memory leaks.
- * New index merging which allows for much better performance and
- much less disk hogging I/O.
- * Battery throttling - Tracker now stops indexing when on battery.
- * Many more optimisations - transactions, use of O_NOATIME and
- posix_fadvise everywhere.
- * Check files exist before including in search results.
- * Fixed disabling of indexing option in tracker-preferences.
- * HIG fixes to tracker-preferences screen.
- * Fixed resetting of stats.
-
- note:
- This version will cause your hard drive to be re-indexed so
- that stats are fixed (previous version broke them).
-
-
-
-Tracker 0.6.2
-============= (25 Sep 2007)
-
- * New Sqlite-based indexer which utilises the new incremental blob
- I/O in sqlite 3.4.
- * Highly-optimised email indexing (up to 5x faster).
- * Dramatically reduced disk access and disk contention.
- * Indexer now pauses for a grace period when non-Tracker processes
- write to disk (providing changed files are being watched by
- Tracker) - minimises slowdowns when compiling or checking out
- source code.
- * Makes use of idle class disk IO scheduling if available.
- * Makes preliminary use of NO_ATIME (some disk access still uses
- fopen).
- * Fixed restore of user metadata on re-index (keywords are
- auto-restored).
- * Added increased number of (junk) files to automatically ignore.
- * Improved stopwords.
- * New Deskbar handler that uses the new Deskbar api (2.19+).
- * Fixed old Deskbar handler to remove race condition causing
- crashes.
- * Fixed a number of annoying bugs in email indexing and Tracker
- Preferences.
-
- note:
- This version will cause your hard drive to be re-indexed due to
- the new Sqlite indexer backend.
-
-
-Tracker 0.6.1
-============= (08 Aug 2007)
-
- * translations and bugfixes
-
-
-Tracker 0.6.0 "better late than never"
-============= (24 Jul 2007)
-
- * Evolution Emails (mbox/pop/imap) now indexed.
- * Gaim/Pidgin chat logs now indexed.
- * Applications now indexed.
- * New files indexed - all spreadsheets, csv (these require
- Gnumeric to be installed) and oo draw.
- * Vastly improved and new search UI using a sidebar for categories
- and a new metadata tile.
- * Tagging support in the UI.
- * New tracker-preferences UI for easy setting of prefs.
- * Added libtracker-gtk widget toolkit.
- * Now uses XDG directories.
- * Optimised triple store.
- * Handles multiple triple stores (files, emails and user data are
- all separate dbs).
- * New IDF based ranking algorithm.
- * XMP metadata support added.
- * Made use of async calls in tracker-search-tool to prevent it
- from freezing.
- * Added a 60 second delay before indexing to prevent slowdowns on
- desktop start-up.
- * Added support for crawling directories without watching overhead
- (useful for indexing source code without causing slowdowns when
- compiling).
-
-
-Tracker 0.5.4 "Speed Daemon"
-============= (26 Jan 2007)
-
- * Indexing at ludicrous speed - massively optimised indexing so
- its now 10x faster than previous version. Indexing speeds are
- now around 100 text files per second (which is about the
- maximum possible considering the I/O time to read 100 files from
- a hard drive).
- * Index while you work - now scheduled even better so it should
- never slow the system down whilst allowing users to work without
- being affected by or even noticing it.
- * Also provides additional --throttle command line parameter to
- customise throttling even further so no need to endure noisy
- fans or hot laptops while indexing.
- * New verbosity param to control how much data is shown on screen
- and in log.
- * Fixed MPlayer backend which is now used if gstreamer backend
- returns no metadata
- * Improved reaping of all spawned apps - no more zombies!
- * Improved mime and text file detection.
- * Added improved deskbar-handler.
- * Got Tracker to run nicely on FUSE based filesystems.
-
-
-Tracker 0.5.3
-============= (24 Dec 2006)
-
- * Fixed memory leaks when indexing (typical mem usage should now
- be ~6MB RSS when indexing large numbers of files).
- * New improved metadata engine now sports multiple values per
- metadata item and rdf style recursive metadata relationships.
- * Support for Dublin Core types (especially for metadata
- relationships).
- * Changed command line options for trackerd to be similiar to
- other programs.
- * Metadata names now to reflect rdf style syntax (Eg DC:Keywords).
- * Improved indexing of numeric data so that only meaningful
- numbers are indexed (IE must contain 5 or more consecutive
- numbers to be indexable).
- * Improved indexing of filenames so that hyphens and underscores
- are used as word breaks to create a delimited filename in
- addition to the full filename.
- * Improved snippet generator to start/end on a word break if
- possible.
-
-
-Tracker 0.5.2
-============= (21 Nov 2006)
-
- * Now has l10n/i18n support.
- * Added timeout to all external processes and metadata extractors
- used by Tracker.
- * Added missing OpenOffice templates to our filters.
- * Fixed filters to use different packages like w3m for indexing
- html.
- * Fixed Debian build and added new packages for data files and
- translations.
- * Imporved t-s-t and made snippets wordwrap, made snippets async,
- used Tracker's mime facility, improved highlighting and fixed
- crasher.
- * Limited tracker-extract's memory usage using setrlimit.
- * Added desktop files for tracker-search-tool.
-
-
-Tracker 0.5.1
-============= (07 Nov 2006)
-
- * Inlined a threadsafe version of sqlite to prevent common errors
- like content not being indexed. This can be overriden for those
- with a threadsafe version of SQlite.
- * New Gstreamer-based audio/video extractor on by default.
- * Made extractors more robust.
- * Fixed a number of compiler warnings.
- * Tidied up the tracker-search-tool to have buttons more evenly-sized
- * Fixed a few leaks and made the D-Bus interface more robust.
- * Imporved IOprio detection.
-
-
-Tracker 0.5.0
-============= (25 Oct 2006)
-
- * Completely new backend that has been moved from Mysql to the
- nimble Sqlite database and QDBM inverted word index.
- * New tracker-search-tool GUI which allows you to search for your
- files in a google-like fashion with results depicted with
- google-style search snippets.
- * Revamped Rdf Query engine.
- * New lighter design with big dependencies like libextractor
- having been dropped in favour of lighter and optional metadata
- extractors.
- * Added new extractors that can use Totem or MPlayer.
- * New options to tune Tracker for your system. We now have a
- --enable-low-memory setting for use with computers with less
- RAM and a --turbo mode for those who want indexing to take
- place as fast as possible.
- * New snowball stemmers have been integrated into Tracker to
- provide some of the highest quality open source stemming around.
- * New language-specific stopword lists to prevent indexng of
- common words (which are of little value).
- * Can optionally make use of Pango word breaking for full
- internationalisation support.
-
-
-Tracker 0.0.4 "Now indexing at Warp speed"
-============= (16 May 2006)
-
- * Hugely optimised indexing when many files are waiting to be
- indexed (especially when you first run trackerd).
- * Mass queueing of files no longer blocks the main thread, meaning
- super fast searches can still be performed during heavy indexing.
- * Eliminated CPU bottlenecks and improved thread synchronisations
- so Tracker now hits the ground running when indexing (approx
- 500+ files indexed per minute on inotify-enabled systems).
- * Extended metadata support for more Exif fields.
- * Added more service types.
- * Imporved build and support for FC5 (includes RPMs).
- * Redesigned Database around version 5 of the *embedded*
- in-process MySQL database library.
- * Now uses the auto-repair facility provided by MySQL to
- automatically repair damaged database files so you need never
- worry about losing your precious data.
- * Moved virtually all DB logic into stored procedures which
- provides a clean seperation of DB logic and application logic.
- * Added support for parsing dates in various formats including
- conversion to/from ISO 8601 format
- * Fixed MSWord filter to prevent looping (WvText causes inotify to
- report file write change causing endless looping).
- * Redesigned DB structure to be more generic and service orientated
- * Added support for service types (first class objects) to DB.
- * Cleaned up code warnings and fixed potential crasher.
- * Fixed issues with argv handling.
- * Fixed build issue for Fedora Core 5.
-
-
-Tracker 0.0.3
-============= (29 Mar 2006)
-
- * Made D-Bus interface more generic
- * Corrected search results of hyphenated search terms.
- * Added support for limiting no. of hits for searches.
- * Added optional support for sorting search results by relevance
- score.
- * A few minor bug fixes (Updating file name metadata correctly
- during move, correcting use of hyphenated search terms).
- * Streamlined the inlined version of libextractor and improved
- build system and fixed bug in previous version which prevented
- compilation of the inlined version.
-
-
-Tracker 0.0.2
-============= (27 Feb 2006)
-
- * Full inotify support (only compatible with Linux kernels 2.6.13
- or higher) with optimisations for detected moves.
- * Fallback to FAM/GAMIN and manual polling for non-Linux and/or
- non-inotify systems.
- * Improved build system which allows you to specify which file
- monitoring backend to use.
- * Valgrind'ed to remove all leaks.
-
-
-16 Jan 2006
- * Added support for Tracker as a Nautilus Search Backend.
-
-
-05 Jan 2006
- * Added polling mechanism to watch files in absence of FAM/iNotify
- or when FAM/iNotify watch limits have been exceeded.
-
-13 Dec 2005
- * Imported Tracker into GNOME CVS.
-
-
-08 Dec 2005
- * Pre-release of Tracker launched.
-
-15 Sep 2005
- * Tracker project started.
-
-
diff --git a/README b/README
deleted file mode 100644
index 667a12ce1..000000000
--- a/README
+++ /dev/null
@@ -1,467 +0,0 @@
-Table of Contents
-
- 1 Introduction
- 2 Use Cases
- 3 Features
- 4 Minimum dependencies
- 4.1 Run-time dependencies (also needed for build)
- 4.2 Additional recommended dependencies
- 4.3 For building Tracker's Deskbar-applet backend
- 4.4 Optional run-time dependency
- 5 Compilation
- 5.1 Notes on Solaris
- 5.2 Compile Options
- 6 Running Tracker
- 6.1 Usage
- 6.2 Setting Inotify Watch Limit
- 6.3 Tracker files
- 7 Tracker & Nautilus Search
- 8 Tracker & Deskbar applet
- 9 Tracker tools
-
-
-
-1 Introduction
-
- Tracker is a powerful desktop-neutral first class object
- database, tag/metadata database, search tool and indexer.
-
- Tracker is also extremely fast and very memory-efficient
- when compared with some other competing frameworks and has by
- far the fastest and most memory-efficient Nautilus search and
- Deskbar backends currently available.
-
- It consists of a common object database that allows entities to
- have an almost infinte number of properties, metadata (both
- embedded/harvested as well as user definable), a comprehensive
- database of keywords/tags and links to other entities.
-
- It provides additional features for file-based objects
- including context linking and audit trails for a file object.
-
- It has the ability to index, store, harvest metadata, retrieve
- and search all types of files and other first class objects.
-
- Supported first class objects include:
-
- * Files, Documents, Music, Images, Videos, Applications, Emails,
- Conversations, History
-
- Planned support:
-
- * Appointments, Contacts, Projects, Tasks, Bookmarks, Playlists,
- Notes
-
- All discussion related to tracker happens on the Tracker
- mailing list
- (http://mail.gnome.org/mailman/listinfo/tracker-list) and/or
- IRC channel #tracker on irc.gimp.net
-
- Bugs should be filed at http://bugzilla.gnome.org.
-
- More infomation on Tracker can be found at
- http://tracker-project.org.
-
-
-
-2 Use Cases
-
- Tracker is the most powerful open source metadata database and
- indexer framework currently available and because it is built
- around a combination indexer and sql database and not a
- dedicated indexer, it has much more powerful use cases:
-
- * Provide search and indexing facilities similiar to those on
- other systems (Windows Vista and Mac OS X).
-
- * Common database storage for all first class objects (EG a
- common music/photo/contacts/email/bookmarks/history database)
- complete with additional metadata and tags/keywords.
-
- * Comprehensive one stop solution for all applications needing
- an object database, powerful search (via RDF Query), first class
- methods, related metadata and user-definable metadata/tags.
-
- * Can provide a full semantic desktop with metadata everywhere.
-
- * Can provide powerful criteria-based searching suitable for
- creating smart file dialogs and vfolder systems.
-
- * Can provide a more intelligent desktop using statistical
- metadata.
-
-
-
-3 Features
-
- * Desktop-neutral design (it's a freedesktop product built
- around other freedesktop technologies like D-Bus and XDGMime
- but contains no GNOME-specific dependencies besides GLib).
-
- * Very memory efficient and non-leaking (typical RAM usage 4 - 30
- MB). Unlike some other indexers, Tracker is designed and built
- to run well on systems with lower memory (256MB or less). It
- should even be efficient enough to use on some mobile devices.
-
- * Non-bloated and written in C for maximum efficiency.
-
- * Small size and minimal dependencies makes it easy to bundle
- into various distros, including live cds.
-
- * Fast indexing and unobtrusive - no need to index stuff
- overnight. Tracker runs at nice+10 so it should have a minimal
- impact on your system. With the addition of detection of mouse
- and keyboard events via tracker-applet (described below), there
- is an option to auto-pause indexing in order to improve
- responsiveness. This is in addition to Tracker's built-in check
- if there's heavy disk I/O in order to auto-pause, so not to
- slow other processes.
-
- * Provides option to disable indexing when running on battery.
-
- * Provides option to index removable devices.
-
- * Implements the freedesktop specification for metadata
- (http://freedesktop.org/wiki/Standards/shared-filemetadata-spec).
-
- * Extracts embedded File, Image, Document and Audio type
- metadata from files.
-
- * Supports the WC3's RDF Query syntax for querying metadata
-
- * Provides support for both free text search (like Beagle/Google)
- as well as structured searches using RDF Query.
-
- * Responds in real time to file system changes to keep its
- metadata database up to date and in sync.
-
- * Fully extensible with custom metadata - you can store,
- retrieve, register and search via RDF Query all your own custom
- metadata.
-
- * Can extract a file's contents as plain text and index them.
-
- * Provides text filters for PDF, MS Office, OpenOffice (all
- versions), HTML and PS files.
-
- * Can provide thumbnailing on the fly.
-
- * It auto-pauses indexing when running low on diskspace.
-
-
-
-4 Minimum dependencies
-
-
-4.1 Run-time dependencies (also needed for build)
-
- * SQLite 3.4
- * libdbus 0.60
- * dbus-glib bindings 0.60
- * GLib 2.14
- * zlib
- * intltool 0.3.5
- * GMime
-
-
-4.2 Additional recommended dependencies
-
- * GStreamer 0.10 + plugins for audio/video file indexing
- * xsltproc
- * w3m
- * wv 1.0.2
- * poppler (pdftotext)
- * libvorbis
- * libpng
- * libexif
- * libgsf
- * GTK and GNOME stack (for GUI tools)
- * libglade 2.5
- * unac (accent stripper)
- * exempi
- * libxml2 (for extracting html/xml content)
- * hal 0.5 (for detection of removable devices, mounted
- directories, as well as whether the computer is running on
- battery)
-
-
-4.3 For building Tracker's Deskbar-applet backend
-
- * python-dev 2.3
- * python-gtk2-dev 2.3
- * deskbar-applet 2.16
-
-
-4.4 Optional run-time dependency
-
- * xdg-utils (provides some functionality needed by
- tracker-search-tool when in a non-GNOME environment)
-
-
-
-5 Compilation
-
- To compile and install Tracker, use the following commands :
-
- ./configure --prefix=/usr --sysconfdir=/etc
- make
- sudo make install
-
- If you install using any other prefix, you might have problems
- with files not being installed correctly. (You may need to copy
- and amend the dbus service file to the correct directory and/or
- might need to update ld_conf if you install into non-standard
- directories.)
-
-
-5.1 Notes on Solaris
-
- To compile Tracker with GCC on Solaris uses the following
- commands :
-
- ./configure --prefix=/usr --sysconfdir=/etc --with-pic \
- CFLAGS=-D_POSIX_PTHREAD_SEMANTICS
- make
- sudo make install
-
- To compile Tracker with SUN Studio on Solaris uses the
- following commands, because there are some problems to compile
- exiv2 using SUN C++ compiler :
-
- ./configure --prefix=/usr --sysconfdir=/etc --with-pic \
- --disable-warnings \
- --disable-exiv2 CFLAGS=-D_POSIX_PTHREAD_SEMANTICS
- make
- sudo make install
-
-
-5.2 Compile Options
-
- Tracker has several compiler options to enable/disable certain
- features. The following is a (hopefully complete) listing of
- what's available:
-
- --enable-debug-code : build with debug symbols
-
- --enable-video-extractor=(gstreamer, xine, external, auto)
-
- --enable-file-monitoring=(inotify, fam, polling, auto)
-
- --disable-preferences : disables tracker-preferences capplet
-
- --enable-deskbar-applet=(auto, handler, module) : enables
- Deskbar-applet support; 'auto' should do since it automatically
- chooses whether to install the 'handler' (for Deskbar-applet
- >=2.16) or the 'module' (for Deskbar-applet >=2.19)
-
- --with-deskbar-applet-dir=(directory where Deskbar-applet
- should find tracker-handler; this should be automatically
- detected, perhaps in
- /usr/lib/deskbar-applet/{handlers,modules-2.20-compatible})
-
- --disable-gui : disables tracker-search-tool build
-
- --disable-pdf : disables the PDF data extractor
-
- --disable-exif : disables the exif data extractor
-
- --disable-libtrackergtk : disables libtracker-gtk build
-
- --disable-gsf : disables the GSF data extractor
-
- --disable-warnings : disables GCC warnings
-
- --disable-unac : disables accent stripping
-
- --disable-libxml2 : disables HTML/XML extractors (full-text
- will still be available)
-
- --disable-xmp : disables XMP extraction
-
- --with-session-bus-services-dir=(path to D-Bus services
- directory): this should be automatically detected
-
- --enable-external-qdbm : use system qdbm instead of one included
- in Tracker
-
- --disable-hal : disables HAL support, which is for detecting
- whether the computer is running on battery (for EG, determining
- whether to run the indexer in such a case), whether a removable
- device has been attached (for EG, determining whether to index
- its contents), and for detecting mounted directories (for EG,
- determining whether to index such)
-
- --disable-trackerapplet : disables Tracker's notification applet
-
-
-
-6 Running Tracker
-
-
-6.1 Usage
-
- To run Tracker, you need to manually start the Tracker daemon,
- trackerd. By default trackerd will index your entire home
- directory.
-
- You can also pass a directory root to be indexed as a command
- line parameter if you dont want your entire home directory
- indexed. EG "trackerd -i /home/jamie/Documents" (if you want
- your home directory indexed when explicily specifying index
- directory roots then you must add your home directory to the
- arguments: EG trackerd -i /home/jamie -i /mnt/share)
-
- You can disable indexing by passing "--no-indexing"
-
- You can enable a low memory usage mode (recommended for
- machines with less than 256MB of RAM) by passing
- "--enable-low-memory"
-
- You can artificially throttle indexing by passing
- "--throttle=VALUE" where VALUE is in the range 0-20 (with 0,
- the default, being fastest and 20 being slowest). Default is
- 0. You should only change this value if you want to prevent
- noisy fans or hot laptops arising from cpu intensive indexing.
- Tracker should have a negligible impact on the system (as it
- is scheduled) so you can safely work with it on full throttle
- without experiencing slow downs.
-
- You can specify directory roots to be excluded from being
- watched or indexed by passing "--exclude=DIRECTORY" for each
- directory root.
-
- You can specify logging verbosity by passing "--verbosity". Valid
- values are from 0 to 3, ranging from least to most verbose
- respectively.
-
- Yet another option is "--language" which allows for specifying
- the language to use for stemmer and stop-words list.
-
- All the above options (and more) can be set by editing Tracker
- config file "~/.config/tracker/tracker.cfg" which is created
- with specific defaults when non-existent (EG when trackerd is
- ran for the first time). Ensure that you restart trackerd for
- the changes to take effect. "tracker.cfg" also provides options
- that allows Tracker to only index a subset of your home
- directory as well as other folders not in your home directory
- by setting WatchDirectoryRoots to a semicolon-delimited list of
- directories (full path required!)
-
- EG:
-
- "WatchDirectoryRoots=directory1;directory2;directory3""
-
- An additional option is "--reindex" which indexes user data from
- scratch, removing the need to delete Tracker's database manually.
- Keywords and metadata definitions are preserved however.
-
- On the first run, Tracker will automatically create a new
- database and start populating it with metadata by browsing
- through the user's home directory and/or the root folder(s)
- specified.
-
- On subsequent runs, Tracker will start up much much faster and
- will only ever incrementally index files (IE files that have
- changed since last index).
-
- If installed correctly, the Tracker daemon (trackerd) can also
- be started automatically via Dbus activation (EG by running
- tracker-search SEARCHTERM)
-
-
-6.2 Setting Inotify Watch Limit
-
- When watching large numbers of folders, its ppossible to exceed
- the default number of inotify watches. In order to get real time
- updates when this value is exceeded it is necessary to increase
- the number of allowed watches. This can be done as follows:
-
- 1. Add this line to /etc/sysctl.conf:
- "fs.inotify.max_user_watches = (number of folders to be
- watched; default is 8192)"
-
- 2. Reboot the system OR (on a Debian-like system) run
- "sudo /etc/init.d/procps restart"
-
-
-6.3 Tracker files
-
- Here is some of the files that Tracker uses during its operation,
- apart from "~/.config/tracker" which is stated above, in Sec 6.1:
-
- * "~/.local/share/tracker" is used for non-expendable content,
- like keywords and metadata definitions.
-
- * "~/.cache/tracker" is used for the expendable indexes and
- expendable metadata that can be rebuilt if deleted (this is the
- purpose of the ".cache" - its more a permanent tmp directory than
- sys tmp but can be deleted if more disk space is needed).
-
- * The system tmp ("/var/tmp" and "/tmp") is used for short-lived
- session data.
-
-
-
-7 Tracker & Nautilus Search
-
- Once you have installed Tracker and have some indexed contents,
- you should now compile Nautilus (ver 2.13.4 or higher) which
- should auto-detect that Tracker is installed and automatically
- compile in Tracker support. You are now ready to appreciate a
- powerful and super efficient C-based indexer in all its
- glory... happy hunting!
-
- To make sure trackerd always starts when you login to GNOME,
- you will need to add it to gnome-session (select sessions from
- preferences menu, select startup program tab and then add
- /usr/bin/trackerd). For non-GNOME installations, see the
- desktop docs for how to achieve similar.
-
-
-
-8 Tracker & Deskbar applet
-
- Tracker is also integrated in GNOME's deskbar applet. See
- Compile Options above on how to get it built.
-
-
-
-9 Tracker tools
-
- Tracker comes with a number of utilities that you can use:
-
- * "tracker-applet" - notification applet which has various
- utilities like displaying Tracker status, indexing progress,
- and live statistics, pausing indexing, and launching both
- tracker-search-tool and tracker-preferences
-
- * "tracker-extract FILE" - this extracts embedded metadata from
- FILE and prints to stdout
-
- * "tracker-files" - returns files filtered by the mime type or
- their category (see the manpage)
-
- * "tracker-meta-folder" - return list of files indexed by Tracker
- for a folder
-
- * "tracker-preferences" - GUI tool to set Tracker preferences
-
- * "tracker-query" - this reads an RDF Query that specifies the
- search criteria for various fields. It prints to STDOUT all
- matching files. You can see some example queries in the
- RDF-Query-examples folder. You can run the examples as
- "tracker-query < RDFFILE"
-
- * "tracker-search SEARCHTERM" - this perfoms a google like search
- using SEARCHTERM to retrieve all matching files where
- SEARCHTERM appears in any searchable metadata
-
- * "tracker-search-tool SEARCHTERM" - GUI search utility
-
- * "tracker-stats" - this displays the current number of indexed
- items by category
-
- * "tracker-status" - queries status of trackerd
-
- * "tracker-tag" - used for setting and searching tags/keywords
-
diff --git a/TODO b/TODO
deleted file mode 100644
index 2c138c374..000000000
--- a/TODO
+++ /dev/null
@@ -1,26 +0,0 @@
-general:
-* XESAM integration
-* indexer backend independence (not just rely on SQLite)
-* .desktop file indexing
-* automatic language detection
-* DocBook indexing
-* manpage indexing
-
-application support:
-* Balsa mboxes
-* Brasero integration
-* Epiphany integration (bookmarks and history)
-* Rhythmbox integration
-* Tomboy notes indexing
-
-search:
-* search filtering (EG search within specific folders)
-* search results that update in real time
-* search within archives
-* "exact phrase" search
-* wildcard search
-
-needing GLib 2.16:
-* addition of unit tests
-* (maybe) drop in-lined xdgmime
-* (maybe) drop in-house file monitoring
diff --git a/acinclude.m4 b/acinclude.m4
deleted file mode 100644
index 7f322dc4a..000000000
--- a/acinclude.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-dnl #########################################################################
-AC_DEFUN([AX_COMPARE_VERSION], [
- # Used to indicate true or false condition
- ax_compare_version=false
-
- # Convert the two version strings to be compared into a format that
- # allows a simple string comparison. The end result is that a version
- # string of the form 1.12.5-r617 will be converted to the form
- # 0001001200050617. In other words, each number is zero padded to four
- # digits, and non digits are removed.
- AS_VAR_PUSHDEF([A],[ax_compare_version_A])
- A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
- -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/[[^0-9]]//g'`
-
- AS_VAR_PUSHDEF([B],[ax_compare_version_B])
- B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
- -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/[[^0-9]]//g'`
-
- dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary
- dnl # then the first line is used to determine if the condition is true.
- dnl # The sed right after the echo is to remove any indented white space.
- m4_case(m4_tolower($2),
- [lt],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"`
- ],
- [gt],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"`
- ],
- [le],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"`
- ],
- [ge],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"`
- ],[
- dnl Split the operator from the subversion count if present.
- m4_bmatch(m4_substr($2,2),
- [0],[
- # A count of zero means use the length of the shorter version.
- # Determine the number of characters in A and B.
- ax_compare_version_len_A=`echo "$A" | awk '{print(length)}'`
- ax_compare_version_len_B=`echo "$B" | awk '{print(length)}'`
-
- # Set A to no more than B's length and B to no more than A's length.
- A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"`
- B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"`
- ],
- [[0-9]+],[
- # A count greater than zero means use only that many subversions
- A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
- B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
- ],
- [.+],[
- AC_WARNING(
- [illegal OP numeric parameter: $2])
- ],[])
-
- # Pad zeros at end of numbers to make same length.
- ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`"
- B="$B`echo $A | sed 's/./0/g'`"
- A="$ax_compare_version_tmp_A"
-
- # Check for equality or inequality as necessary.
- m4_case(m4_tolower(m4_substr($2,0,2)),
- [eq],[
- test "x$A" = "x$B" && ax_compare_version=true
- ],
- [ne],[
- test "x$A" != "x$B" && ax_compare_version=true
- ],[
- AC_WARNING([illegal OP parameter: $2])
- ])
- ])
-
- AS_VAR_POPDEF([A])dnl
- AS_VAR_POPDEF([B])dnl
-
- dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE.
- if test "$ax_compare_version" = "true" ; then
- m4_ifvaln([$4],[$4],[:])dnl
- m4_ifvaln([$5],[else $5])dnl
- fi
-]) dnl AX_COMPARE_VERSION
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 1a738c020..000000000
--- a/autogen.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-PKG_NAME="tracker"
-REQUIRED_AUTOMAKE_VERSION=1.9
-
-(test -f $srcdir/configure.ac \
- && test -f $srcdir/README) || {
- echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
- echo " top-level $PKG_NAME directory"
- exit 1
-}
-
-which gnome-autogen.sh || {
- echo "You need to install gnome-common from the GNOME CVS"
- exit 1
-}
-. gnome-autogen.sh
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index b718a0530..000000000
--- a/configure.ac
+++ /dev/null
@@ -1,872 +0,0 @@
-# -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-# This file is part of Tracker.
-
-AC_PREREQ(2.59)
-AC_INIT([tracker],[0.6.6],[tracker-list@gnome.org])
-
-AC_CONFIG_SRCDIR([src/trackerd/trackerd.c])
-AM_INIT_AUTOMAKE([dist-bzip2])
-
-AC_SUBST(PACKAGE_URL, [http://www.tracker-project.org])
-
-CFLAGS="$CFLAGS"
-
-# Checks for programs.
-AC_PROG_CC
-AC_PROG_LN_S
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-AC_PROG_LIBTOOL
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h sitdlib.h string.h sys/time.h unistd.h linux/unistd.h])
-
-AC_CHECK_HEADER([zlib.h], [], [AC_MSG_ERROR([You must have zlib.h and zlib installed])])
-
-dnl can posix_fadvise be used
-AC_CHECK_DECLS(posix_fadvise, [], [], [
-#define _XOPEN_SOURCE 600
-#include <fcntl.h>])
-
-# Checks for functions
-AC_CHECK_FUNCS([posix_fadvise])
-AC_CHECK_FUNCS([getline])
-
-dnl Library Checks
-DBUS_REQUIRED=0.60
-GLIB_REQUIRED=2.14.0
-PANGO_REQUIRED=1.0.0
-GMIME_REQUIRED=2.1.0
-
-PKG_CHECK_MODULES(GLIB2, [ glib-2.0 >= $GLIB_REQUIRED ])
-AC_SUBST(GLIB2_CFLAGS)
-AC_SUBST(GLIB2_LIBS)
-
-# Check for gthread 2.0
-PKG_CHECK_MODULES(GTHREAD, [ gthread-2.0 >= $GLIB_REQUIRED ])
-AC_SUBST(GTHREAD_CFLAGS)
-AC_SUBST(GTHREAD_LIBS)
-
-# Check for gobject 2.0
-PKG_CHECK_MODULES(GOBJECT, [ gobject-2.0 >= $GLIB_REQUIRED ])
-AC_SUBST(GOBJECT_CFLAGS)
-AC_SUBST(GOBJECT_LIBS)
-
-# Check for gmodule 2.0
-PKG_CHECK_MODULES(GMODULE, [ gmodule-2.0 >= $GLIB_REQUIRED ])
-AC_SUBST(GMODULE_CFLAGS)
-AC_SUBST(GMODULE_LIBS)
-
-#Check for pango
-PKG_CHECK_MODULES(PANGO, [ pango >= $PANGO_REQUIRED ])
-AC_SUBST(PANGO_CFLAGS)
-AC_SUBST(PANGO_LIBS)
-
-# Check for GMime
-PKG_CHECK_MODULES(GMIME, [ gmime-2.0 >= $GMIME_REQUIRED ])
-AC_SUBST(GMIME_CFLAGS)
-AC_SUBST(GMIME_LIBS)
-
-# Check for Dbus 0.50 or higher
-PKG_CHECK_MODULES(DBUS, [ dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED ])
-AC_SUBST(DBUS_CFLAGS)
-AC_SUBST(DBUS_LIBS)
-
-# Check for libpng 1.2 or higher
-PKG_CHECK_MODULES(LIBPNG, [ libpng >= 1.2 ])
-AC_SUBST(LIBPNG_CFLAGS)
-AC_SUBST(LIBPNG_LIBS)
-
-####################################################################
-# DBus Service
-####################################################################
-
-dnl DBus services dir
-AC_ARG_WITH([session_bus_services_dir],
- AS_HELP_STRING([--with-session-bus-services-dir], [Path to DBus services directory]))
-
-if test "x$with_session_bus_services_dir" = "x" ; then
- services_dir="`pkg-config --variable session_bus_services_dir dbus-1`"
-else
- services_dir="$with_session_bus_services_dir"
-fi
-
-DBUS_SERVICES_DIR="$services_dir"
-AC_SUBST(DBUS_SERVICES_DIR)
-
-
-####################################################################
-# Deskbar Applet Handler/Module
-####################################################################
-
-AC_ARG_ENABLE([deskbar_applet],
- AS_HELP_STRING([--enable-deskbar-applet=ARG], [Enable support for deskbar applet (handler, module, auto)]),,
- [enable_deskbar_applet=auto])
-
-if test "x$enable_deskbar_applet" = "xauto" ; then
- if pkg-config --atleast-version=2.19 deskbar-applet ; then
- enable_deskbar_applet="module"
- elif pkg-config --atleast-version=2.16 deskbar-applet ; then
- enable_deskbar_applet="handler"
- else
- enable_deskbar_applet="no"
- fi
-fi
-
-AM_CONDITIONAL(USING_DESKBAR_HANDLER, test "x$enable_deskbar_applet" = "xhandler")
-AM_CONDITIONAL(USING_DESKBAR_MODULE, test "x$enable_deskbar_applet" = "xmodule")
-
-AC_ARG_WITH([deskbar_applet_dir],
- AS_HELP_STRING([--with-deskbar-applet-dir], [Path to Deskbar handler/module directory]))
-
-if test "x$enable_deskbar_applet" = "xhandler" ; then
- if test "x$with_deskbar_applet_dir" = "x" ; then
- handler_dir="`pkg-config --variable handlersdir deskbar-applet`"
- else
- handler_dir="$with_deskbar_applet_dir"
- fi
- if test "x$handler_dir" = "x" ; then
- handler_dir="\$(exec_prefix)/lib/deskbar-applet/handlers"
- fi
-fi
-
-DESKBAR_HANDLER_DIR="$handler_dir"
-AC_SUBST(DESKBAR_HANDLER_DIR)
-
-if test "x$enable_deskbar_applet" = "xmodule" ; then
- if test "x$with_deskbar_applet_dir" = "x" ; then
- module_dir="`pkg-config --variable modulesdir deskbar-applet`"
- else
- module_dir="$with_deskbar_applet_dir"
- fi
- if test "x$module_dir" = "x" ; then
- module_dir="\$(exec_prefix)/lib/deskbar-applet/modules-2.20-compatible"
- fi
-fi
-
-DESKBAR_MODULE_DIR="$module_dir"
-AC_SUBST(DESKBAR_MODULE_DIR)
-
-####################################################################
-# Compiler warning checks
-####################################################################
-AC_ARG_ENABLE(warnings,
- AS_HELP_STRING([--disable-warnings], [disable GCC warnings]),,
- [enable_warnings=yes])
-
-dnl Only use -Wall if we have gcc
-if test "x$GCC" = "xyes"; then
- if test "x$enable_warnings" = "xyes"; then
- CFLAGS="\
- -Wall \
- -Wchar-subscripts \
- -Wnested-externs \
- -Wpointer-arith \
- -Wsign-compare \
- $CFLAGS"
- fi
-fi
-
-####################################################################
-# Compiler generate debug code
-####################################################################
-
-
-AC_ARG_ENABLE([debug_code],
- AS_HELP_STRING([--enable-debug-code], [build with debug symbols]),,
- [enable_debug_code=no])
-
-if test "x$enable_debug_code" = "xyes"; then
- CFLAGS="-g $CFLAGS"
-fi
-
-####################################################################
-# gettext/intltool support
-####################################################################
-
-GETTEXT_PACKAGE=AC_PACKAGE_NAME
-AC_SUBST(GETTEXT_PACKAGE)
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
- [The gettext translation domain])
-
-AM_GLIB_GNU_GETTEXT
-IT_PROG_INTLTOOL([0.35.0])
-
-####################################################################
-# check for newer glib (>= 2.12.0) for g_option_context_set_summary ()
-# availability
-# used as well in tracker-configuration.c and tracker-metadata-tile.c
-# for other methods availability
-####################################################################
-RECENT_GLIB=2.12.0
-
-PKG_CHECK_MODULES(glib2, [ glib-2.0 >= $RECENT_GLIB ],
- [have_recent_glib=yes], [have_recent_glib=no])
-
-if test "$have_recent_glib" = "yes" ; then
- AC_DEFINE(HAVE_RECENT_GLIB, 1, [Define if we have recent glib])
-fi
-
-AM_CONDITIONAL(HAVE_RECENT_GLIB, test "$have_recent_glib" = "yes")
-
-
-
-####################################################################
-# External QDBM check
-####################################################################
-
-QDBM_REQUIRED=1.8
-
-AC_ARG_ENABLE(external_qdbm,
- AS_HELP_STRING(
- [--enable-external-qdbm],
- [build using system's qdbm]),,
- [enable_external_qdbm=no])
-
-if test "x$enable_external_qdbm" = "xyes"; then
- PKG_CHECK_MODULES(QDBM, [ qdbm >= $QDBM_REQUIRED ])
- AM_CONDITIONAL(USING_EXTERNAL_QDBM, true)
-else
- QDBM_CFLAGS="-I\$(top_srcdir)/src/qdbm"
- QDBM_LIBS="\$(top_builddir)/src/qdbm/libqdbm-private.la"
- AM_CONDITIONAL(USING_EXTERNAL_QDBM, false)
-fi
-
-AC_SUBST(QDBM_CFLAGS)
-AC_SUBST(QDBM_LIBS)
-
-
-
-##################################################################
-# check for libxml2
-##################################################################
-
-LIBXML2_REQUIRED=0.6
-
-AC_ARG_ENABLE(libxml2, AS_HELP_STRING([--disable-libxml2],[Disable HTML/XML extractors (full-text will still be available)]),,[enable_libxml2=yes])
-if test "x$enable_libxml2" = "xyes"; then
- PKG_CHECK_MODULES(LIBXML2, [
- libxml-2.0 >= $LIBXML2_REQUIRED],
- [have_libxml2=yes] , [have_libxml2=no])
- AC_SUBST(LIBXML2_CFLAGS)
- AC_SUBST(LIBXML2_LIBS)
-else
- have_libxml2="no (disabled)"
-fi
-
-if test "x$have_libxml2" = "xyes"; then
- AC_DEFINE(HAVE_LIBXML2, [], [Define if we have libxml2])
-fi
-
-AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes")
-
-##################################################################
-# check for HAL
-##################################################################
-
-AC_ARG_ENABLE(hal, AS_HELP_STRING([--disable-hal],[Disable HAL support for ac power detection]),,[enable_hal=yes])
-if test "x$enable_hal" = "xyes"; then
- PKG_CHECK_MODULES(HAL, [hal >= 0.5 hal-storage], [have_hal=yes] , [have_hal=no])
- AC_SUBST(HAL_CFLAGS)
- AC_SUBST(HAL_LIBS)
-else
- have_hal="no (disabled)"
-fi
-
-if test "x$have_hal" = "xyes"; then
- AC_DEFINE(HAVE_HAL, [], [Define if we have HAL])
-fi
-
-AM_CONDITIONAL(HAVE_HAL, test "x$have_hal" = "xyes")
-
-####################################################################
-# check for GStreamer or Xine. Otherwise, call an external video
-# player (Totem or MPlayer).
-####################################################################
-
-AC_ARG_ENABLE(video-extractor,
- AS_HELP_STRING(
- [--enable-video-extractor=ARG],
- [enables one of the (gstreamer, xine, external, auto) video extractor backends]),,
- [enable_video_extractor=auto])
-
-PKG_CHECK_MODULES(GSTREAMER,
- [gstreamer-0.10 >= 0.10.0],
- [have_libgstreamer=yes] , [have_libgstreamer=no])
-AC_SUBST(GSTREAMER_CFLAGS)
-AC_SUBST(GSTREAMER_LIBS)
-
-PKG_CHECK_MODULES(XINE,
- [libxine >= 1.0],
- [have_libxine=yes] , [have_libxine=no])
-AC_SUBST(XINE_CFLAGS)
-AC_SUBST(XINE_LIBS)
-
-
-if test "x$enable_video_extractor" = "xauto"; then
- if test "$have_libgstreamer" = "yes"; then
- videos_handler="GStreamer"
- videos_are_handled="yes"
- elif test "$have_libxine" = "yes"; then
- videos_handler="Xine"
- videos_are_handled="yes"
- else
- videos_are_handled="?"
- videos_handler="An external video player will be called"
- fi
-elif test "x$enable_video_extractor" = "xgstreamer"; then
- if test "$have_libgstreamer" = "yes"; then
- videos_handler="GStreamer"
- videos_are_handled="yes"
- else
- AC_MSG_ERROR([***Gstreamer requested but not found - exiting!])
- fi
-elif test "x$enable_video_extractor" = "xxine"; then
- if test "$have_libxine" = "yes"; then
- videos_handler="Xine"
- videos_are_handled="yes"
- else
- AC_MSG_ERROR([***libxine requested but not found - exiting!])
- fi
-else
- videos_are_handled="?"
- videos_handler="An external video player will be called"
-fi
-if test "$videos_handler" = "GStreamer"; then
- AC_DEFINE(HAVE_GSTREAMER, [], [Define if we have GStreamer])
- AM_CONDITIONAL(HAVE_GSTREAMER, true)
- AM_CONDITIONAL(HAVE_LIBXINE, false)
- AM_CONDITIONAL(USING_EXTERNAL_VIDEO_PLAYER, false)
-elif test "$videos_handler" = "Xine"; then
- AC_DEFINE(HAVE_LIBXINE, [], [Define if we have Libxine])
- AM_CONDITIONAL(HAVE_LIBXINE, true)
- AM_CONDITIONAL(HAVE_GSTREAMER, false)
- AM_CONDITIONAL(USING_EXTERNAL_VIDEO_PLAYER, false)
-else
- AC_DEFINE(USING_EXTERNAL_VIDEO_PLAYER, [], [Define that Tracker will try to use external video players])
- AM_CONDITIONAL(USING_EXTERNAL_VIDEO_PLAYER, true)
- AM_CONDITIONAL(HAVE_GSTREAMER, false)
- AM_CONDITIONAL(HAVE_LIBXINE, false)
-fi
-
-
-####################################################################
-# Windows check
-####################################################################
-
-AC_MSG_CHECKING(for WIN32)
-AC_TRY_COMPILE(,
- [
- #ifndef WIN32
- #error
- #endif
- ],
- native_win32=yes; AC_MSG_RESULT(yes),
- native_win32=no; AC_MSG_RESULT(no),
-)
-
-AM_CONDITIONAL(OS_WIN32, test "$native_win32" = "yes")
-
-if test "$native_win32" = "yes" ; then
- AC_DEFINE(OS_WIN32, 1, [Define if we are on win32])
-fi
-
-####################################################################
-# SQLite check
-####################################################################
-
-SQLITE_REQUIRED=3.4
-
-PKG_CHECK_MODULES(SQLITE3, [ sqlite3 >= $SQLITE_REQUIRED ])
-
-AC_SUBST(SQLITE3_CFLAGS)
-AC_SUBST(SQLITE3_LIBS)
-
-
-
-###############################################################################
-# Check for file monitor backends
-###############################################################################
-
-FAM_LIBS=
-inotify_support=no
-inotify_linux=no
-inotify_header=none
-fam_support=no
-fam_type=none
-
-AM_CONDITIONAL(HAVE_INOTIFY, false)
-AM_CONDITIONAL(HAVE_INOTIFY_LINUX, false)
-AM_CONDITIONAL(HAVE_FAM, false)
-
-AC_ARG_ENABLE(file-monitoring,
- AS_HELP_STRING(
- [--enable-file-monitoring=ARG],
- [enables one of the (inotify, fam, polling, auto) file monitoring backends]),,
- enable_file_monitoring=auto)
-
-
-AC_CHECK_HEADERS([sys/inotify.h],
- [
- inotify_support=yes
- inotify_linux=no
- ])
-
-AC_CHECK_HEADERS([linux/inotify.h],
- [
- inotify_linux=yes
- inotify_support=yes
- ])
-
-AC_CHECK_LIB(fam, FAMOpen,
- [AC_CHECK_HEADERS(fam.h,
- [
- fam_support=yes
- fam_type=fam
- ],[fam_support=no])],
- [fam_support=no])
-
-PKG_CHECK_MODULES(GAMIN,
- gamin,
- [
- fam_support=yes
- fam_type=gamin
- ],
- [
- fam_support=no
- ])
-
-if test "x$enable_file_monitoring" = "xauto"; then
- if test "$inotify_support" = "yes"; then
- primary_backend="inotify"
- if test "$inotify_linux" = "yes"; then
- inotify_header="linux/inotify.h"
- else
- inotify_header="sys/inotify.h"
- fi
-
- elif test "$fam_support" = "yes"; then
- if test "$fam_type" = "gamin"; then
- primary_backend="gamin"
- else
- primary_backend="fam"
- fi
- else
- if test "$native_win32" = "yes"; then
- primary_backend="win32"
- else
- primary_backend="polling only"
- fi
- fi
-elif test "x$enable_file_monitoring" = "xinotify"; then
- if test "$inotify_support" = "no"; then
- AC_MSG_ERROR([***inotify requested but not found - exiting!])
- else
- primary_backend="inotify"
- if test "$inotify_linux" = "yes"; then
- inotify_header="linux/inotify.h"
- else
- inotify_header="sys/inotify.h"
- fi
- fi
-elif test "x$enable_file_monitoring" = "xfam"; then
- if test "$fam_support" = "no"; then
- AC_MSG_ERROR([***fam requested but not found - exiting!])
- else
- if test "$fam_type" = "gamin"; then
- primary_backend="gamin"
- else
- primary_backend="fam"
- fi
- fi
-else
- if test "$native_win32" = "yes"; then
- primary_backend="win32"
- else
- primary_backend="polling only"
- fi
-fi
-
-if test "$primary_backend" = "inotify"; then
- AC_DEFINE(HAVE_INOTIFY, [], [Define if we have inotify])
- AM_CONDITIONAL(HAVE_INOTIFY, true)
- if test "$inotify_linux" = "yes"; then
- AC_DEFINE(HAVE_INOTIFY_LINUX, [],
- [
- Define if we have inotify and header is linux/inotify.h
- ])
- AM_CONDITIONAL(HAVE_INOTIFY_LINUX, true)
- fi
-elif test "$primary_backend" = "gamin"; then
- AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
- AM_CONDITIONAL(HAVE_FAM, true)
- FAM_LIBS="-lgamin-1"
- AC_SUBST(FAM_LIBS)
-elif test "$primary_backend" = "fam"; then
- AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
- AM_CONDITIONAL(HAVE_FAM, true)
- FAM_LIBS="-lfam"
- AC_SUBST(FAM_LIBS)
-fi
-
-
-##################################################################
-# Enable building libtracker-gtk?
-##################################################################
-LIBTRACKERGTK_GTK_REQUIRED=2.8.20
-
-
-AC_ARG_ENABLE([libtrackergtk], AS_HELP_STRING([--disable-libtrackergtk], [Disable libtrackergtk]),,[enable_libtrackergtk=yes])
-if test "x$enable_libtrackergtk" != "xno" ; then
-
- libtrackergtk_modules="\
- glib-2.0 >= $GLIB_REQUIRED, \
- gtk+-2.0 >= $LIBTRACKERGTK_GTK_REQUIRED, \
- dbus-1 >= $DBUS_REQUIRED, \
- dbus-glib-1 >= $DBUS_REQUIRED"
-
- PKG_CHECK_MODULES(LIBTRACKERGTK, [$libtrackergtk_modules],[enable_libtrackergtk=yes] , [enable_libtrackergtk=no])
-
- AC_SUBST([LIBTRACKERGTK_CFLAGS])
- AC_SUBST([LIBTRACKERGTK_LIBS])
-
-
-else
- enable_libtrackergtk="no (disabled)"
-fi
-
-AM_CONDITIONAL(ENABLE_LIBTRACKERGTK, test "$enable_libtrackergtk" = "yes")
-
-
-##################################################################
-# Enable building tracker-applet notification icon?
-##################################################################
-LIBNOTIFY_GTK2_REQUIRED=2.10
-LIBNOTIFY_GLIB_REQUIRED=2.10
-LIBNOTIFY_REQUIRED=0.4.3
-
-AC_ARG_ENABLE([trackerapplet], AS_HELP_STRING([--disable-trackerapplet], [Disable trackerapplet]),,[enable_trackerapplet=yes])
-if test "x$enable_trackerapplet" != "xno" ; then
-
- trackerapplet_modules="\
- glib-2.0 >= $LIBNOTIFY_GLIB_REQUIRED, \
- gtk+-2.0 >= $LIBNOTIFY_GTK2_REQUIRED, \
- dbus-1 >= $DBUS_REQUIRED, \
- dbus-glib-1 >= $DBUS_REQUIRED, \
- libnotify >= $LIBNOTIFY_REQUIRED"
-
- PKG_CHECK_MODULES(TRACKERAPPLET, [$trackerapplet_modules],[enable_trackerapplet=yes] , [enable_trackerapplet=no])
-
- AC_SUBST([TRACKERAPPLET_CFLAGS])
- AC_SUBST([TRACKERAPPLET_LIBS])
-
-
-else
- enable_trackerapplet="no (disabled)"
-fi
-
-AM_CONDITIONAL(ENABLE_TRACKERAPPLET, test "$enable_trackerapplet" = "yes")
-
-
-##################################################################
-# Enable UNAC support?
-##################################################################
-
-
-AC_ARG_ENABLE([unac], AS_HELP_STRING([--disable-unac], [Disable unac accent stripper support]),,[enable_unac=yes])
-
-if test "x$enable_unac" != "xno" ; then
-
- PKG_CHECK_MODULES(UNAC, [unac >= 1.0.0],[enable_unac=yes] , [enable_unac=no])
-
- AC_SUBST([UNAC_CFLAGS])
- AC_SUBST([UNAC_LIBS])
-
-else
- enable_unac="no (disabled)"
-fi
-
-if test "$enable_unac" = "yes"; then
- AC_DEFINE(HAVE_UNAC, [], [Define if we have unac lib])
-fi
-AM_CONDITIONAL(ENABLE_UNAC, test "$enable_unac" = "yes")
-
-
-
-
-##################################################################
-# check for GNOME/GTK dependencies to build tracker search tool (Gnome client)
-##################################################################
-
-GTK_REQUIRED=2.8.0
-LIBGNOME_DESKTOP_REQUIRED=2.9.91
-LIBGNOME_REQUIRED=2.13.2
-LIBGNOMEUI_REQUIRED=2.13.7
-GNOMEVFS_REQUIRED=2.8.4
-
-AC_ARG_ENABLE(gui, AS_HELP_STRING([--disable-gui], [Disable building of the tracker-search-tool]),,[enable_gui=yes])
-if test "x$enable_gui" = "xyes"; then
- PKG_CHECK_MODULES(GNOME_UTILS, [
- gtk+-2.0 >= $GTK_REQUIRED
- libgnome-2.0 >= $LIBGNOME_REQUIRED
- libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED],
- [have_gnome=yes] , [have_gnome=no])
- #there is the slight possibility to have gnome-vfs and not libgnome for example
- #so we should check and not overwrite have_gnome
- if test "$have_gnome" = "yes"; then
- PKG_CHECK_MODULES(GNOMEVFS, [
- gnome-vfs-2.0 >= $GNOMEVFS_REQUIRED
- gnome-vfs-module-2.0 >= $GNOMEVFS_REQUIRED],
- [have_gnome=yes] , [have_gnome=no])
- fi
- if test "$have_gnome" = "yes"; then
- PKG_CHECK_MODULES(GNOMEDESKTOP, [
- gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED],
- [have_gnome=yes] , [have_gnome=no])
- fi
- AC_SUBST(GNOME_UTILS_CFLAGS)
- AC_SUBST(GNOME_UTILS_LIBS)
- AC_SUBST(GNOMEVFS_CFLAGS)
- AC_SUBST(GNOMEVFS_LIBS)
- AC_SUBST(GNOMEDESKTOP_CFLAGS)
- AC_SUBST(GNOMEDESKTOP_LIBS)
-else
- have_gnome="no (disabled)"
-fi
-
-
-# do not build if libtracker-gtk is not being built
-if test "x$enable_libtrackergtk" != "xyes"; then
- have_gnome="no (disabled as libtracker-gtk is not being built)"
-fi
-
-AM_CONDITIONAL(HAVE_GNOME, test "$have_gnome" = "yes")
-if test "$have_gnome" = "yes"; then
- GNOME_COMMON_INIT
-fi
-
-
-##################################################################
-# Checks for tracker-preferences
-##################################################################
-
-PREFERENCES_GLADE_REQUIRED=2.5
-PREFERENCES_GTK_REQUIRED=2.8.0
-
-AC_ARG_ENABLE([preferences],
- AS_HELP_STRING([--disable-preferences], [Disable the preferences dialog]),,
- [enable_preferences=yes])
-
-if test "x$enable_preferences" != "xno" ; then
-
- PKG_CHECK_MODULES(GLIB2, [ glib-2.0 >= $PREFERENCES_GLIB_REQUIRED ],[enable_preference=yes] , [enable_preference=no])
- AC_SUBST([GLIB2_CFLAGS])
- AC_SUBST([GLIB2_LIBS])
-
- if test "$enable_preferences" = "yes"; then
- PKG_CHECK_MODULES(GTK2, [ gtk+-2.0 >= $PREFERENCES_GTK_REQUIRED ],[enable_preference=yes] , [enable_preference=no])
- AC_SUBST([GTK2_CFLAGS])
- AC_SUBST([GTK2_LIBS])
- fi
-
- if test "$enable_preferences" = "yes"; then
-
- PKG_CHECK_MODULES(LIBGLADE, [ libglade-2.0 >= $PREFERENCES_GLADE_REQUIRED ], [enable_preferences=yes], [enable_preferences=no])
- AC_SUBST([LIBGLADE_CFLAGS])
- AC_SUBST([LIBGLADE_LIBS])
- fi
-else
- enable_preferences="no (disabled)"
-fi
-
-AM_CONDITIONAL(ENABLE_PREFERENCES, test "$enable_preferences" = "yes")
-
-##################################################################
-# check for poppler's glib bingings
-##################################################################
-
-POPPLER_GLIB_REQUIRED=0.4.5
-CAIRO_REQUIRED=1.0
-GDK_REQUIRED=1.0
-
-AC_ARG_ENABLE(pdf, AS_HELP_STRING([--disable-pdf], [Disable PDF data extractor]),,[enable_pdf=yes])
-if test "x$enable_pdf" = "xyes"; then
- PKG_CHECK_MODULES(POPPLER_GLIB, [
- poppler-glib >= $POPPLER_GLIB_REQUIRED
- cairo >= $CAIRO_REQUIRED
- gdk-2.0 >= $GDK_REQUIRED],
- [have_poppler=yes] , [have_poppler=no])
- AC_SUBST(POPPLER_GLIB_CFLAGS)
- AC_SUBST(POPPLER_GLIB_LIBS)
-else
- have_poppler="no (disabled)"
-fi
-AM_CONDITIONAL(HAVE_POPPLER_GLIB, test "$have_poppler" = "yes")
-test "$have_poppler" = "yes" && AC_DEFINE(HAVE_POPPLER, [], [Define if we have poppler])
-
-##################################################################
-# check for libexif
-##################################################################
-
-LIBEXIF_REQUIRED=0.6
-
-AC_ARG_ENABLE(exif, AS_HELP_STRING([--disable-exif],[Disable exif data extractor]),,[enable_exif=yes])
-if test "x$enable_exif" = "xyes"; then
- PKG_CHECK_MODULES(LIBEXIF, [
- libexif >= $LIBEXIF_REQUIRED],
- [have_libexif=yes] , [have_libexif=no])
- AC_SUBST(LIBEXIF_CFLAGS)
- AC_SUBST(LIBEXIF_LIBS)
-else
- have_libexif="no (disabled)"
-fi
-AM_CONDITIONAL(HAVE_LIBEXIF, test "$have_libexif" = "yes")
-test "$have_libexif" = "yes" && AC_DEFINE(HAVE_LIBEXIF, [], [Define if we have libexif])
-
-##################################################################
-# check for libgsf
-##################################################################
-
-LIBGSF_REQUIRED=1.13
-
-AC_ARG_ENABLE(gsf, AS_HELP_STRING([--disable-gsf], [Disable GSF data extractor]),,[enable_gsf=yes])
-if test "x$enable_gsf" = "xyes"; then
- PKG_CHECK_MODULES(LIBGSF,[
- libgsf-1 >= $LIBGSF_REQUIRED],
- [have_libgsf=yes] , [have_libgsf=no])
- AC_SUBST(LIBGSF_CFLAGS)
- AC_SUBST(LIBGSF_LIBS)
-else
- have_libgsf="no (disabled)"
-fi
-AM_CONDITIONAL(HAVE_LIBGSF, test "$have_libgsf" = "yes")
-test "$have_libgsf" = "yes" && AC_DEFINE(HAVE_LIBGSF, [], [Define if we have libgsf])
-
-####################################################################
-# Check ioprio support
-####################################################################
-
-AC_MSG_CHECKING([[checking ioprio support]])
-ioprio_support=no
-AC_RUN_IFELSE([ AC_LANG_PROGRAM([[
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/syscall.h>
-#include <unistd.h>
-inline int ioprio_get (int which, int who)
-{
- return syscall (__NR_ioprio_get, which, who);
-}
- ]], [[
-exit(ioprio_get(1,0));
- ]]) ],
- [ AC_DEFINE(IOPRIO_SUPPORT,[],[Define ioprio support]) ioprio_support=yes ])
-AC_MSG_RESULT([$ioprio_support])
-
-#####################################################
-
-##################################################################
-# check for exempi
-##################################################################
-
-EXEMPI_REQUIRED=1.99.2
-
-AC_ARG_ENABLE(xmp, AS_HELP_STRING([--disable-xmp], [Disable XMP extraction]),,[enable_xmp=yes])
-if test "x$enable_xmp" = "xyes"; then
- PKG_CHECK_MODULES(EXEMPI,[
- exempi-2.0 >= $EXEMPI_REQUIRED],
- [have_exempi=yes] , [have_exempi=no])
- AC_SUBST(EXEMPI_CFLAGS)
- AC_SUBST(EXEMPI_LIBS)
-else
- have_exempi="no (disabled)"
-fi
-AM_CONDITIONAL(HAVE_EXEMPI, test "$have_exempi" = "yes")
-test "$have_exempi" = "yes" && AC_DEFINE(HAVE_EXEMPI, [], [Define if we have exempi])
-
-AC_CONFIG_FILES([
- Makefile
- tracker.pc
- trackerd.desktop.in
- libtracker-gtk.pc
- docs/Makefile
- data/Makefile
- data/languages/Makefile
- data/icons/Makefile
- data/icons/16x16/Makefile
- data/icons/22x22/Makefile
- data/icons/24x24/Makefile
- data/icons/32x32/Makefile
- data/icons/48x48/Makefile
- data/icons/scalable/Makefile
- data/services/Makefile
- filters/Makefile
- filters/application/Makefile
- filters/text/Makefile
- thumbnailers/Makefile
- thumbnailers/application/Makefile
- thumbnailers/image/Makefile
- src/Makefile
- src/libstemmer/Makefile
- src/qdbm/Makefile
- src/text-filters/Makefile
- src/text-filters/ooo_converter/Makefile
- src/tracker-extract/Makefile
- src/tracker-thumbnailer/Makefile
- src/libtracker-common/Makefile
- src/trackerd/Makefile
- src/libtracker/Makefile
- src/libtracker-gtk/Makefile
- src/tracker-applet/Makefile
- src/tracker-applet/tracker-applet.desktop.in
- src/tracker-search-tool/Makefile
- src/tracker-search-tool/tracker-search-tool.desktop.in
- src/tracker-preferences/Makefile
- src/tracker-preferences/tracker-preferences.desktop.in
- src/xdgmime/Makefile
- po/Makefile.in
- python/Makefile
- python/deskbar-handler/Makefile
-])
-
-AC_CONFIG_HEADERS([config.h])
-
-AC_OUTPUT
-
-echo "
-Tracker-$VERSION:
-
- prefix: ${prefix}
- source code location: ${srcdir}
- compiler: ${CC}
- enable gcc warnings: $enable_warnings
- build with debug symbols: $enable_debug_code
- file monitor backend to be used: $primary_backend
- inotify header location: $inotify_header
- ioprio support: $ioprio_support
- Win32: $native_win32
- HAL support: $have_hal
- unac accent stripper support: $enable_unac
- deskbar-applet support: $enable_deskbar_applet
- build search tool (GNOME): $have_gnome
- build preferences ui: $enable_preferences
- build libtracker-gtk: $enable_libtrackergtk
- tracker applet notification icon: $enable_trackerapplet
-
-Metadata extractors:
-
- pdf: $have_poppler
- png: yes
- exif (jpeg): $have_libexif
- ms and openoffice (gsf): $have_libgsf
- video files: $videos_are_handled ($videos_handler)
- xml/html formats: $have_libxml2
- embedded/sidecar xmp: $have_exempi
-
-"
-
-echo "
-****WARNING**** : You must make sure a version of SQLite compiled with --enable-threadsafe is available otherwise expect pain!
-"
diff --git a/data/Makefile.am b/data/Makefile.am
deleted file mode 100644
index e2ccc048a..000000000
--- a/data/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-SUBDIRS = languages icons services
-
-configdir = $(datadir)/tracker
-
-config_DATA = tracker-introspect.xml \
- sqlite-tracker.sql \
- sqlite-cache.sql \
- sqlite-email.sql \
- sqlite-service-stored-procs.sql \
- sqlite-service-triggers.sql \
- sqlite-tracker-triggers.sql \
- sqlite-user-data.sql \
- sqlite-stored-procs.sql \
- sqlite-service.sql \
- sqlite-service-types.sql \
- sqlite-metadata.sql
-
-servicedir = $(DBUS_SERVICES_DIR)
-service_in_files = tracker.service.in
-service_DATA = tracker.service
-
-CLEANFILES = $(service_DATA)
-EXTRA_DIST = $(config_DATA) $(service_in_files)
-
-%.service: %.service.in
- @sed -e "s|\@bindir\@|$(bindir)|" $< > $@
diff --git a/data/english/Makefile.am b/data/english/Makefile.am
deleted file mode 100644
index 9fe0c33b2..000000000
--- a/data/english/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-englishdir = $(datadir)/tracker/english
-
-english_DATA = errmsg.sys errmsg.txt
-
-EXTRA_DIST = $(english_DATA)
diff --git a/data/english/errmsg.sys b/data/english/errmsg.sys
deleted file mode 100644
index be85989dd..000000000
--- a/data/english/errmsg.sys
+++ /dev/null
Binary files differ
diff --git a/data/english/errmsg.txt b/data/english/errmsg.txt
deleted file mode 100644
index 9b20c37ec..000000000
--- a/data/english/errmsg.txt
+++ /dev/null
@@ -1,5623 +0,0 @@
-languages czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, japanese-sjis=jps sjis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u;
-
-default-language eng
-
-start-error-number 1000
-
-ER_HASHCHK
- eng "hashchk"
-ER_NISAMCHK
- eng "isamchk"
-ER_NO
- cze "NE"
- dan "NEJ"
- nla "NEE"
- eng "NO"
- est "EI"
- fre "NON"
- ger "Nein"
- greek "Ï×É"
- hun "NEM"
- kor "¾Æ´Ï¿À"
- nor "NEI"
- norwegian-ny "NEI"
- pol "NIE"
- por "NÃO"
- rum "NU"
- rus "îåô"
- serbian "NE"
- slo "NIE"
- ukr "î¶"
-ER_YES
- cze "ANO"
- dan "JA"
- nla "JA"
- eng "YES"
- est "JAH"
- fre "OUI"
- ger "Ja"
- greek "ÍÁÉ"
- hun "IGEN"
- ita "SI"
- kor "¿¹"
- nor "JA"
- norwegian-ny "JA"
- pol "TAK"
- por "SIM"
- rum "DA"
- rus "äá"
- serbian "DA"
- slo "Áno"
- spa "SI"
- ukr "ôáë"
-ER_CANT_CREATE_FILE
- cze "Nemohu vytvo-Bøit soubor '%-.64s' (chybový kód: %d)"
- dan "Kan ikke oprette filen '%-.64s' (Fejlkode: %d)"
- nla "Kan file '%-.64s' niet aanmaken (Errcode: %d)"
- eng "Can't create file '%-.64s' (errno: %d)"
- est "Ei suuda luua faili '%-.64s' (veakood: %d)"
- fre "Ne peut créer le fichier '%-.64s' (Errcode: %d)"
- ger "Kann Datei '%-.64s' nicht erzeugen (Fehler: %d)"
- greek "Áäýíáôç ç äçìéïõñãßá ôïõ áñ÷åßïõ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "A '%-.64s' file nem hozhato letre (hibakod: %d)"
- ita "Impossibile creare il file '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Õ¥¡¥¤¥ë¤¬ºî¤ì¤Þ¤»¤ó (errno: %d)"
- kor "È­ÀÏ '%-.64s'¸¦ ¸¸µéÁö ¸øÇß½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke opprette fila '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje opprette fila '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na stworzyæ pliku '%-.64s' (Kod b³êdu: %d)"
- por "Não pode criar o arquivo '%-.64s' (erro no. %d)"
- rum "Nu pot sa creez fisierul '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da kreiram file '%-.64s' (errno: %d)"
- slo "Nemô¾em vytvori» súbor '%-.64s' (chybový kód: %d)"
- spa "No puedo crear archivo '%-.64s' (Error: %d)"
- swe "Kan inte skapa filen '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÆÁÊÌ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_CREATE_TABLE
- cze "Nemohu vytvo-Bøit tabulku '%-.64s' (chybový kód: %d)"
- dan "Kan ikke oprette tabellen '%-.64s' (Fejlkode: %d)"
- nla "Kan tabel '%-.64s' niet aanmaken (Errcode: %d)"
- eng "Can't create table '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒe[ƒuƒ‹‚ªì‚ê‚Ü‚¹‚ñ.(errno: %d)",
- est "Ei suuda luua tabelit '%-.64s' (veakood: %d)"
- fre "Ne peut créer la table '%-.64s' (Errcode: %d)"
- ger "Kann Tabelle '%-.64s' nicht erzeugen (Fehler: %d)"
- greek "Áäýíáôç ç äçìéïõñãßá ôïõ ðßíáêá '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "A '%-.64s' tabla nem hozhato letre (hibakod: %d)"
- ita "Impossibile creare la tabella '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Æ¡¼¥Ö¥ë¤¬ºî¤ì¤Þ¤»¤ó.(errno: %d)"
- kor "Å×À̺í '%-.64s'¸¦ ¸¸µéÁö ¸øÇß½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke opprette tabellen '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje opprette tabellen '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na stworzyæ tabeli '%-.64s' (Kod b³êdu: %d)"
- por "Não pode criar a tabela '%-.64s' (erro no. %d)"
- rum "Nu pot sa creez tabla '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÔÁÂÌÉÃÕ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da kreiram tabelu '%-.64s' (errno: %d)"
- slo "Nemô¾em vytvori» tabuµku '%-.64s' (chybový kód: %d)"
- spa "No puedo crear tabla '%-.64s' (Error: %d)"
- swe "Kan inte skapa tabellen '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÔÁÂÌÉÃÀ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_CREATE_DB
- cze "Nemohu vytvo-Bøit databázi '%-.64s' (chybový kód: %d)"
- dan "Kan ikke oprette databasen '%-.64s' (Fejlkode: %d)"
- nla "Kan database '%-.64s' niet aanmaken (Errcode: %d)"
- eng "Can't create database '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒf[ƒ^ƒx[ƒX‚ªì‚ê‚Ü‚¹‚ñ (errno: %d)",
- est "Ei suuda luua andmebaasi '%-.64s' (veakood: %d)"
- fre "Ne peut créer la base '%-.64s' (Erreur %d)"
- ger "Kann Datenbank '%-.64s' nicht erzeugen (Fehler: %d)"
- greek "Áäýíáôç ç äçìéïõñãßá ôçò âÜóçò äåäïìÝíùí '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Az '%-.64s' adatbazis nem hozhato letre (hibakod: %d)"
- ita "Impossibile creare il database '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬ºî¤ì¤Þ¤»¤ó (errno: %d)"
- kor "µ¥ÀÌŸº£À̽º '%-.64s'¸¦ ¸¸µéÁö ¸øÇß½À´Ï´Ù.. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke opprette databasen '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje opprette databasen '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na stworzyæ bazy danych '%-.64s' (Kod b³êdu: %d)"
- por "Não pode criar o banco de dados '%-.64s' (erro no. %d)"
- rum "Nu pot sa creez baza de date '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÂÁÚÕ ÄÁÎÎÙÈ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da kreiram bazu '%-.64s' (errno: %d)"
- slo "Nemô¾em vytvori» databázu '%-.64s' (chybový kód: %d)"
- spa "No puedo crear base de datos '%-.64s' (Error: %d)"
- swe "Kan inte skapa databasen '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_DB_CREATE_EXISTS
- cze "Nemohu vytvo-Bøit databázi '%-.64s'; databáze ji¾ existuje"
- dan "Kan ikke oprette databasen '%-.64s'; databasen eksisterer"
- nla "Kan database '%-.64s' niet aanmaken; database bestaat reeds"
- eng "Can't create database '%-.64s'; database exists"
- jps "'%-.64s' ƒf[ƒ^ƒx[ƒX‚ªì‚ê‚Ü‚¹‚ñ.Šù‚É‚»‚̃f[ƒ^ƒx[ƒX‚ª‘¶Ý‚µ‚Ü‚·",
- est "Ei suuda luua andmebaasi '%-.64s': andmebaas juba eksisteerib"
- fre "Ne peut créer la base '%-.64s'; elle existe déjà"
- ger "Kann Datenbank '%-.64s' nicht erzeugen. Datenbank existiert bereits"
- greek "Áäýíáôç ç äçìéïõñãßá ôçò âÜóçò äåäïìÝíùí '%-.64s'; Ç âÜóç äåäïìÝíùí õðÜñ÷åé Þäç"
- hun "Az '%-.64s' adatbazis nem hozhato letre Az adatbazis mar letezik"
- ita "Impossibile creare il database '%-.64s'; il database esiste"
- jpn "'%-.64s' ¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬ºî¤ì¤Þ¤»¤ó.´û¤Ë¤½¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬Â¸ºß¤·¤Þ¤¹"
- kor "µ¥ÀÌŸº£À̽º '%-.64s'¸¦ ¸¸µéÁö ¸øÇß½À´Ï´Ù.. µ¥ÀÌŸº£À̽º°¡ Á¸ÀçÇÔ"
- nor "Kan ikke opprette databasen '%-.64s'; databasen eksisterer"
- norwegian-ny "Kan ikkje opprette databasen '%-.64s'; databasen eksisterer"
- pol "Nie mo¿na stworzyæ bazy danych '%-.64s'; baza danych ju¿ istnieje"
- por "Não pode criar o banco de dados '%-.64s'; este banco de dados já existe"
- rum "Nu pot sa creez baza de date '%-.64s'; baza de date exista deja"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÂÁÚÕ ÄÁÎÎÙÈ '%-.64s'. âÁÚÁ ÄÁÎÎÙÈ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "Ne mogu da kreiram bazu '%-.64s'; baza veæ postoji."
- slo "Nemô¾em vytvori» databázu '%-.64s'; databáza existuje"
- spa "No puedo crear base de datos '%-.64s'; la base de datos ya existe"
- swe "Databasen '%-.64s' existerar redan"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ '%-.64s'. âÁÚÁ ÄÁÎÎÉÈ ¦ÓÎÕ¤"
-ER_DB_DROP_EXISTS
- cze "Nemohu zru-B¹it databázi '%-.64s', databáze neexistuje"
- dan "Kan ikke slette (droppe) '%-.64s'; databasen eksisterer ikke"
- nla "Kan database '%-.64s' niet verwijderen; database bestaat niet"
- eng "Can't drop database '%-.64s'; database doesn't exist"
- jps "'%-.64s' ƒf[ƒ^ƒx[ƒX‚ð”jŠü‚Å‚«‚Ü‚¹‚ñ. ‚»‚̃f[ƒ^ƒx[ƒX‚ª‚È‚¢‚Ì‚Å‚·.",
- est "Ei suuda kustutada andmebaasi '%-.64s': andmebaasi ei eksisteeri"
- fre "Ne peut effacer la base '%-.64s'; elle n'existe pas"
- ger "Kann Datenbank '%-.64s' nicht löschen; Datenbank nicht vorhanden"
- greek "Áäýíáôç ç äéáãñáöÞ ôçò âÜóçò äåäïìÝíùí '%-.64s'. Ç âÜóç äåäïìÝíùí äåí õðÜñ÷åé"
- hun "A(z) '%-.64s' adatbazis nem szuntetheto meg. Az adatbazis nem letezik"
- ita "Impossibile cancellare '%-.64s'; il database non esiste"
- jpn "'%-.64s' ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÇË´þ¤Ç¤­¤Þ¤»¤ó. ¤½¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬¤Ê¤¤¤Î¤Ç¤¹."
- kor "µ¥ÀÌŸº£À̽º '%-.64s'¸¦ Á¦°ÅÇÏÁö ¸øÇß½À´Ï´Ù. µ¥ÀÌŸº£À̽º°¡ Á¸ÀçÇÏÁö ¾ÊÀ½ "
- nor "Kan ikke fjerne (drop) '%-.64s'; databasen eksisterer ikke"
- norwegian-ny "Kan ikkje fjerne (drop) '%-.64s'; databasen eksisterer ikkje"
- pol "Nie mo¿na usun?æ bazy danych '%-.64s'; baza danych nie istnieje"
- por "Não pode eliminar o banco de dados '%-.64s'; este banco de dados não existe"
- rum "Nu pot sa drop baza de date '%-.64s'; baza da date este inexistenta"
- rus "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÂÁÚÕ ÄÁÎÎÙÈ '%-.64s'. ôÁËÏÊ ÂÁÚÙ ÄÁÎÎÙÈ ÎÅÔ"
- serbian "Ne mogu da izbrišem bazu '%-.64s'; baza ne postoji."
- slo "Nemô¾em zmaza» databázu '%-.64s'; databáza neexistuje"
- spa "No puedo eliminar base de datos '%-.64s'; la base de datos no existe"
- swe "Kan inte radera databasen '%-.64s'; databasen finns inte"
- ukr "îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ '%-.64s'. âÁÚÁ ÄÁÎÎÉÈ ÎÅ ¦ÓÎÕ¤"
-ER_DB_DROP_DELETE
- cze "Chyba p-Bøi ru¹ení databáze (nemohu vymazat '%-.64s', chyba %d)"
- dan "Fejl ved sletning (drop) af databasen (kan ikke slette '%-.64s', Fejlkode %d)"
- nla "Fout bij verwijderen database (kan '%-.64s' niet verwijderen, Errcode: %d)"
- eng "Error dropping database (can't delete '%-.64s', errno: %d)"
- jps "ƒf[ƒ^ƒx[ƒX”jŠüƒGƒ‰[ ('%-.64s' ‚ð휂ł«‚Ü‚¹‚ñ, errno: %d)",
- est "Viga andmebaasi kustutamisel (ei suuda kustutada faili '%-.64s', veakood: %d)"
- fre "Ne peut effacer la base '%-.64s' (erreur %d)"
- ger "Fehler beim Löschen der Datenbank ('%-.64s' kann nicht gelöscht werden, Fehler: %d)"
- greek "ÐáñïõóéÜóôçêå ðñüâëçìá êáôÜ ôç äéáãñáöÞ ôçò âÜóçò äåäïìÝíùí (áäýíáôç ç äéáãñáöÞ '%-.64s', êùäéêüò ëÜèïõò: %d)"
- hun "Adatbazis megszuntetesi hiba ('%-.64s' nem torolheto, hibakod: %d)"
- ita "Errore durante la cancellazione del database (impossibile cancellare '%-.64s', errno: %d)"
- jpn "¥Ç¡¼¥¿¥Ù¡¼¥¹ÇË´þ¥¨¥é¡¼ ('%-.64s' ¤òºï½ü¤Ç¤­¤Þ¤»¤ó, errno: %d)"
- kor "µ¥ÀÌŸº£À̽º Á¦°Å ¿¡·¯('%-.64s'¸¦ »èÁ¦ÇÒ ¼ö ¾øÀ¾´Ï´Ù, ¿¡·¯¹øÈ£: %d)"
- nor "Feil ved fjerning (drop) av databasen (kan ikke slette '%-.64s', feil %d)"
- norwegian-ny "Feil ved fjerning (drop) av databasen (kan ikkje slette '%-.64s', feil %d)"
- pol "B³?d podczas usuwania bazy danych (nie mo¿na usun?æ '%-.64s', b³?d %d)"
- por "Erro ao eliminar banco de dados (não pode eliminar '%-.64s' - erro no. %d)"
- rum "Eroare dropuind baza de date (nu pot sa sterg '%-.64s', Eroare: %d)"
- rus "ïÛÉÂËÁ ÐÒÉ ÕÄÁÌÅÎÉÉ ÂÁÚÙ ÄÁÎÎÙÈ (ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ '%-.64s', ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da izbrišem bazu (ne mogu da izbrišem '%-.64s', errno: %d)"
- slo "Chyba pri mazaní databázy (nemô¾em zmaza» '%-.64s', chybový kód: %d)"
- spa "Error eliminando la base de datos(no puedo borrar '%-.64s', error %d)"
- swe "Fel vid radering av databasen (Kan inte radera '%-.64s'. Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ (îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ '%-.64s', ÐÏÍÉÌËÁ: %d)"
-ER_DB_DROP_RMDIR
- cze "Chyba p-Bøi ru¹ení databáze (nemohu vymazat adresáø '%-.64s', chyba %d)"
- dan "Fejl ved sletting af database (kan ikke slette folderen '%-.64s', Fejlkode %d)"
- nla "Fout bij verwijderen database (kan rmdir '%-.64s' niet uitvoeren, Errcode: %d)"
- eng "Error dropping database (can't rmdir '%-.64s', errno: %d)"
- jps "ƒf[ƒ^ƒx[ƒX”jŠüƒGƒ‰[ ('%-.64s' ‚ð rmdir ‚Å‚«‚Ü‚¹‚ñ, errno: %d)",
- est "Viga andmebaasi kustutamisel (ei suuda kustutada kataloogi '%-.64s', veakood: %d)"
- fre "Erreur en effaçant la base (rmdir '%-.64s', erreur %d)"
- ger "Fehler beim Löschen der Datenbank (Verzeichnis '%-.64s' kann nicht gelöscht werden, Fehler: %d)"
- greek "ÐáñïõóéÜóôçêå ðñüâëçìá êáôÜ ôç äéáãñáöÞ ôçò âÜóçò äåäïìÝíùí (áäýíáôç ç äéáãñáöÞ ôïõ öáêÝëëïõ '%-.64s', êùäéêüò ëÜèïõò: %d)"
- hun "Adatbazis megszuntetesi hiba ('%-.64s' nem szuntetheto meg, hibakod: %d)"
- ita "Errore durante la cancellazione del database (impossibile rmdir '%-.64s', errno: %d)"
- jpn "¥Ç¡¼¥¿¥Ù¡¼¥¹ÇË´þ¥¨¥é¡¼ ('%-.64s' ¤ò rmdir ¤Ç¤­¤Þ¤»¤ó, errno: %d)"
- kor "µ¥ÀÌŸº£À̽º Á¦°Å ¿¡·¯(rmdir '%-.64s'¸¦ ÇÒ ¼ö ¾øÀ¾´Ï´Ù, ¿¡·¯¹øÈ£: %d)"
- nor "Feil ved sletting av database (kan ikke slette katalogen '%-.64s', feil %d)"
- norwegian-ny "Feil ved sletting av database (kan ikkje slette katalogen '%-.64s', feil %d)"
- pol "B³?d podczas usuwania bazy danych (nie mo¿na wykonaæ rmdir '%-.64s', b³?d %d)"
- por "Erro ao eliminar banco de dados (não pode remover diretório '%-.64s' - erro no. %d)"
- rum "Eroare dropuind baza de date (nu pot sa rmdir '%-.64s', Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÂÁÚÕ ÄÁÎÎÙÈ (ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ËÁÔÁÌÏÇ '%-.64s', ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da izbrišem bazu (ne mogu da izbrišem direktorijum '%-.64s', errno: %d)"
- slo "Chyba pri mazaní databázy (nemô¾em vymaza» adresár '%-.64s', chybový kód: %d)"
- spa "Error eliminando la base de datos (No puedo borrar directorio '%-.64s', error %d)"
- swe "Fel vid radering av databasen (Kan inte radera biblioteket '%-.64s'. Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ (îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ ÔÅËÕ '%-.64s', ÐÏÍÉÌËÁ: %d)"
-ER_CANT_DELETE_FILE
- cze "Chyba p-Bøi výmazu '%-.64s' (chybový kód: %d)"
- dan "Fejl ved sletning af '%-.64s' (Fejlkode: %d)"
- nla "Fout bij het verwijderen van '%-.64s' (Errcode: %d)"
- eng "Error on delete of '%-.64s' (errno: %d)"
- jps "'%-.64s' ‚Ì휂ªƒGƒ‰[ (errno: %d)",
- est "Viga '%-.64s' kustutamisel (veakood: %d)"
- fre "Erreur en effaçant '%-.64s' (Errcode: %d)"
- ger "Fehler beim Löschen von '%-.64s' (Fehler: %d)"
- greek "ÐáñïõóéÜóôçêå ðñüâëçìá êáôÜ ôç äéáãñáöÞ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Torlesi hiba: '%-.64s' (hibakod: %d)"
- ita "Errore durante la cancellazione di '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¤Îºï½ü¤¬¥¨¥é¡¼ (errno: %d)"
- kor "'%-.64s' »èÁ¦ Áß ¿¡·¯ (¿¡·¯¹øÈ£: %d)"
- nor "Feil ved sletting av '%-.64s' (Feilkode: %d)"
- norwegian-ny "Feil ved sletting av '%-.64s' (Feilkode: %d)"
- pol "B³?d podczas usuwania '%-.64s' (Kod b³êdu: %d)"
- por "Erro na remoção de '%-.64s' (erro no. %d)"
- rum "Eroare incercind sa delete '%-.64s' (Eroare: %d)"
- rus "ïÛÉÂËÁ ÐÒÉ ÕÄÁÌÅÎÉÉ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Greška pri brisanju '%-.64s' (errno: %d)"
- slo "Chyba pri mazaní '%-.64s' (chybový kód: %d)"
- spa "Error en el borrado de '%-.64s' (Error: %d)"
- swe "Kan inte radera filen '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_FIND_SYSTEM_REC
- cze "Nemohu -Bèíst záznam v systémové tabulce"
- dan "Kan ikke læse posten i systemfolderen"
- nla "Kan record niet lezen in de systeem tabel"
- eng "Can't read record in system table"
- jps "system table ‚̃ŒƒR[ƒh‚ð“Ç‚ÞŽ–‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½",
- est "Ei suuda lugeda kirjet süsteemsest tabelist"
- fre "Ne peut lire un enregistrement de la table 'system'"
- ger "Datensatz in der Systemtabelle nicht lesbar"
- greek "Áäýíáôç ç áíÜãíùóç åããñáöÞò áðü ðßíáêá ôïõ óõóôÞìáôïò"
- hun "Nem olvashato rekord a rendszertablaban"
- ita "Impossibile leggere il record dalla tabella di sistema"
- jpn "system table ¤Î¥ì¥³¡¼¥É¤òÆɤà»ö¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
- kor "system Å×ÀÌºí¿¡¼­ ·¹Äڵ带 ÀÐÀ» ¼ö ¾ø½À´Ï´Ù."
- nor "Kan ikke lese posten i systemkatalogen"
- norwegian-ny "Kan ikkje lese posten i systemkatalogen"
- pol "Nie mo¿na odczytaæ rekordu z tabeli systemowej"
- por "Não pode ler um registro numa tabela do sistema"
- rum "Nu pot sa citesc cimpurile in tabla de system (system table)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÚÁÐÉÓØ × ÓÉÓÔÅÍÎÏÊ ÔÁÂÌÉÃÅ"
- serbian "Ne mogu da proèitam slog iz sistemske tabele"
- slo "Nemô¾em èíta» záznam v systémovej tabuµke"
- spa "No puedo leer el registro en la tabla del sistema"
- swe "Hittar inte posten i systemregistret"
- ukr "îÅ ÍÏÖÕ ÚÞÉÔÁÔÉ ÚÁÐÉÓ Ú ÓÉÓÔÅÍÎϧ ÔÁÂÌÉæ"
-ER_CANT_GET_STAT
- cze "Nemohu z-Bískat stav '%-.64s' (chybový kód: %d)"
- dan "Kan ikke læse status af '%-.64s' (Fejlkode: %d)"
- nla "Kan de status niet krijgen van '%-.64s' (Errcode: %d)"
- eng "Can't get status of '%-.64s' (errno: %d)"
- jps "'%-.64s' ‚̃XƒeƒCƒ^ƒX‚ª“¾‚ç‚ê‚Ü‚¹‚ñ. (errno: %d)",
- est "Ei suuda lugeda '%-.64s' olekut (veakood: %d)"
- fre "Ne peut obtenir le status de '%-.64s' (Errcode: %d)"
- ger "Kann Status von '%-.64s' nicht ermitteln (Fehler: %d)"
- greek "Áäýíáôç ç ëÞøç ðëçñïöïñéþí ãéá ôçí êáôÜóôáóç ôïõ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "A(z) '%-.64s' statusza nem allapithato meg (hibakod: %d)"
- ita "Impossibile leggere lo stato di '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¤Î¥¹¥Æ¥¤¥¿¥¹¤¬ÆÀ¤é¤ì¤Þ¤»¤ó. (errno: %d)"
- kor "'%-.64s'ÀÇ »óŸ¦ ¾òÁö ¸øÇß½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke lese statusen til '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje lese statusen til '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na otrzymaæ statusu '%-.64s' (Kod b³êdu: %d)"
- por "Não pode obter o status de '%-.64s' (erro no. %d)"
- rum "Nu pot sa obtin statusul lui '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÔÁÔÕÓÎÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da dobijem stanje file-a '%-.64s' (errno: %d)"
- slo "Nemô¾em zisti» stav '%-.64s' (chybový kód: %d)"
- spa "No puedo obtener el estado de '%-.64s' (Error: %d)"
- swe "Kan inte läsa filinformationen (stat) från '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÏÔÒÉÍÁÔÉ ÓÔÁÔÕÓ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_GET_WD
- cze "Chyba p-Bøi zji¹»ování pracovní adresáø (chybový kód: %d)"
- dan "Kan ikke læse aktive folder (Fejlkode: %d)"
- nla "Kan de werkdirectory niet krijgen (Errcode: %d)"
- eng "Can't get working directory (errno: %d)"
- jps "working directory ‚𓾂鎖‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½ (errno: %d)",
- est "Ei suuda identifitseerida jooksvat kataloogi (veakood: %d)"
- fre "Ne peut obtenir le répertoire de travail (Errcode: %d)"
- ger "Kann Arbeitsverzeichnis nicht ermitteln (Fehler: %d)"
- greek "Ï öÜêåëëïò åñãáóßáò äåí âñÝèçêå (êùäéêüò ëÜèïõò: %d)"
- hun "A munkakonyvtar nem allapithato meg (hibakod: %d)"
- ita "Impossibile leggere la directory di lavoro (errno: %d)"
- jpn "working directory ¤òÆÀ¤ë»ö¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿ (errno: %d)"
- kor "¼öÇà µð·ºÅ丮¸¦ ãÁö ¸øÇß½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke lese aktiv katalog(Feilkode: %d)"
- norwegian-ny "Kan ikkje lese aktiv katalog(Feilkode: %d)"
- pol "Nie mo¿na rozpoznaæ aktualnego katalogu (Kod b³êdu: %d)"
- por "Não pode obter o diretório corrente (erro no. %d)"
- rum "Nu pot sa obtin directorul current (working directory) (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da dobijem trenutni direktorijum (errno: %d)"
- slo "Nemô¾em zisti» pracovný adresár (chybový kód: %d)"
- spa "No puedo acceder al directorio (Error: %d)"
- swe "Kan inte inte läsa aktivt bibliotek. (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ÒÏÂÏÞÕ ÔÅËÕ (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_LOCK
- cze "Nemohu uzamknout soubor (chybov-Bý kód: %d)"
- dan "Kan ikke låse fil (Fejlkode: %d)"
- nla "Kan de file niet blokeren (Errcode: %d)"
- eng "Can't lock file (errno: %d)"
- jps "ƒtƒ@ƒCƒ‹‚ðƒƒbƒN‚Å‚«‚Ü‚¹‚ñ (errno: %d)",
- est "Ei suuda lukustada faili (veakood: %d)"
- fre "Ne peut verrouiller le fichier (Errcode: %d)"
- ger "Datei kann nicht gesperrt werden (Fehler: %d)"
- greek "Ôï áñ÷åßï äåí ìðïñåß íá êëåéäùèåß (êùäéêüò ëÜèïõò: %d)"
- hun "A file nem zarolhato. (hibakod: %d)"
- ita "Impossibile il locking il file (errno: %d)"
- jpn "¥Õ¥¡¥¤¥ë¤ò¥í¥Ã¥¯¤Ç¤­¤Þ¤»¤ó (errno: %d)"
- kor "È­ÀÏÀ» Àá±×Áö(lock) ¸øÇß½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke låse fila (Feilkode: %d)"
- norwegian-ny "Kan ikkje låse fila (Feilkode: %d)"
- pol "Nie mo¿na zablokowaæ pliku (Kod b³êdu: %d)"
- por "Não pode travar o arquivo (erro no. %d)"
- rum "Nu pot sa lock fisierul (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÏÓÔÁ×ÉÔØ ÂÌÏËÉÒÏ×ËÕ ÎÁ ÆÁÊÌÅ (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da zakljuèam file (errno: %d)"
- slo "Nemô¾em zamknú» súbor (chybový kód: %d)"
- spa "No puedo bloquear archivo: (Error: %d)"
- swe "Kan inte låsa filen. (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÚÁÂÌÏËÕ×ÁÔÉ ÆÁÊÌ (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_OPEN_FILE
- cze "Nemohu otev-Bøít soubor '%-.64s' (chybový kód: %d)"
- dan "Kan ikke åbne fil: '%-.64s' (Fejlkode: %d)"
- nla "Kan de file '%-.64s' niet openen (Errcode: %d)"
- eng "Can't open file: '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ðŠJ‚­Ž–‚ª‚Å‚«‚Ü‚¹‚ñ (errno: %d)",
- est "Ei suuda avada faili '%-.64s' (veakood: %d)"
- fre "Ne peut ouvrir le fichier: '%-.64s' (Errcode: %d)"
- ger "Kann Datei '%-.64s' nicht öffnen (Fehler: %d)"
- greek "Äåí åßíáé äõíáôü íá áíïé÷ôåß ôï áñ÷åßï: '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "A '%-.64s' file nem nyithato meg (hibakod: %d)"
- ita "Impossibile aprire il file: '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Õ¥¡¥¤¥ë¤ò³«¤¯»ö¤¬¤Ç¤­¤Þ¤»¤ó (errno: %d)"
- kor "È­ÀÏÀ» ¿­Áö ¸øÇß½À´Ï´Ù.: '%-.64s' (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke åpne fila: '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje åpne fila: '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na otworzyæ pliku: '%-.64s' (Kod b³êdu: %d)"
- por "Não pode abrir o arquivo '%-.64s' (erro no. %d)"
- rum "Nu pot sa deschid fisierul: '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ: '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da otvorim file: '%-.64s' (errno: %d)"
- slo "Nemô¾em otvori» súbor: '%-.64s' (chybový kód: %d)"
- spa "No puedo abrir archivo: '%-.64s' (Error: %d)"
- swe "Kan inte använda '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ: '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_FILE_NOT_FOUND
- cze "Nemohu naj-Bít soubor '%-.64s' (chybový kód: %d)"
- dan "Kan ikke finde fila: '%-.64s' (Fejlkode: %d)"
- nla "Kan de file: '%-.64s' niet vinden (Errcode: %d)"
- eng "Can't find file: '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ðŒ©•t‚¯‚鎖‚ª‚Å‚«‚Ü‚¹‚ñ.(errno: %d)",
- est "Ei suuda leida faili '%-.64s' (veakood: %d)"
- fre "Ne peut trouver le fichier: '%-.64s' (Errcode: %d)"
- ger "Kann Datei '%-.64s' nicht finden (Fehler: %d)"
- greek "Äåí âñÝèçêå ôï áñ÷åßï: '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "A(z) '%-.64s' file nem talalhato (hibakod: %d)"
- ita "Impossibile trovare il file: '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Õ¥¡¥¤¥ë¤ò¸«ÉÕ¤±¤ë»ö¤¬¤Ç¤­¤Þ¤»¤ó.(errno: %d)"
- kor "È­ÀÏÀ» ãÁö ¸øÇß½À´Ï´Ù.: '%-.64s' (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke finne fila: '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje finne fila: '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na znale¥æ pliku: '%-.64s' (Kod b³êdu: %d)"
- por "Não pode encontrar o arquivo '%-.64s' (erro no. %d)"
- rum "Nu pot sa gasesc fisierul: '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÆÁÊÌ: '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da pronaðem file: '%-.64s' (errno: %d)"
- slo "Nemô¾em nájs» súbor: '%-.64s' (chybový kód: %d)"
- spa "No puedo encontrar archivo: '%-.64s' (Error: %d)"
- swe "Hittar inte filen '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÚÎÁÊÔÉ ÆÁÊÌ: '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_READ_DIR
- cze "Nemohu -Bèíst adresáø '%-.64s' (chybový kód: %d)"
- dan "Kan ikke læse folder '%-.64s' (Fejlkode: %d)"
- nla "Kan de directory niet lezen van '%-.64s' (Errcode: %d)"
- eng "Can't read dir of '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒfƒBƒŒƒNƒgƒŠ‚ª“Ç‚ß‚Ü‚¹‚ñ.(errno: %d)",
- est "Ei suuda lugeda kataloogi '%-.64s' (veakood: %d)"
- fre "Ne peut lire le répertoire de '%-.64s' (Errcode: %d)"
- ger "Verzeichnis von '%-.64s' nicht lesbar (Fehler: %d)"
- greek "Äåí åßíáé äõíáôü íá äéáâáóôåß ï öÜêåëëïò ôïõ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "A(z) '%-.64s' konyvtar nem olvashato. (hibakod: %d)"
- ita "Impossibile leggere la directory di '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Ç¥£¥ì¥¯¥È¥ê¤¬Æɤá¤Þ¤»¤ó.(errno: %d)"
- kor "'%-.64s'µð·ºÅ丮¸¦ ÀÐÁö ¸øÇß½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke lese katalogen '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje lese katalogen '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na odczytaæ katalogu '%-.64s' (Kod b³êdu: %d)"
- por "Não pode ler o diretório de '%-.64s' (erro no. %d)"
- rum "Nu pot sa citesc directorul '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ËÁÔÁÌÏÇ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da proèitam direktorijum '%-.64s' (errno: %d)"
- slo "Nemô¾em èíta» adresár '%-.64s' (chybový kód: %d)"
- spa "No puedo leer el directorio de '%-.64s' (Error: %d)"
- swe "Kan inte läsa från bibliotek '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÐÒÏÞÉÔÁÔÉ ÔÅËÕ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CANT_SET_WD
- cze "Nemohu zm-Bìnit adresáø na '%-.64s' (chybový kód: %d)"
- dan "Kan ikke skifte folder til '%-.64s' (Fejlkode: %d)"
- nla "Kan de directory niet veranderen naar '%-.64s' (Errcode: %d)"
- eng "Can't change dir to '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒfƒBƒŒƒNƒgƒŠ‚É chdir ‚Å‚«‚Ü‚¹‚ñ.(errno: %d)",
- est "Ei suuda siseneda kataloogi '%-.64s' (veakood: %d)"
- fre "Ne peut changer le répertoire pour '%-.64s' (Errcode: %d)"
- ger "Kann nicht in das Verzeichnis '%-.64s' wechseln (Fehler: %d)"
- greek "Áäýíáôç ç áëëáãÞ ôïõ ôñÝ÷ïíôïò êáôáëüãïõ óå '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Konyvtarvaltas nem lehetseges a(z) '%-.64s'-ba. (hibakod: %d)"
- ita "Impossibile cambiare la directory in '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Ç¥£¥ì¥¯¥È¥ê¤Ë chdir ¤Ç¤­¤Þ¤»¤ó.(errno: %d)"
- kor "'%-.64s'µð·ºÅ丮·Î À̵¿ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù. (¿¡·¯¹øÈ£: %d)"
- nor "Kan ikke skifte katalog til '%-.64s' (Feilkode: %d)"
- norwegian-ny "Kan ikkje skifte katalog til '%-.64s' (Feilkode: %d)"
- pol "Nie mo¿na zmieniæ katalogu na '%-.64s' (Kod b³êdu: %d)"
- por "Não pode mudar para o diretório '%-.64s' (erro no. %d)"
- rum "Nu pot sa schimb directorul '%-.64s' (Eroare: %d)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ËÁÔÁÌÏÇ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Ne mogu da promenim direktorijum na '%-.64s' (errno: %d)"
- slo "Nemô¾em vojs» do adresára '%-.64s' (chybový kód: %d)"
- spa "No puedo cambiar al directorio de '%-.64s' (Error: %d)"
- swe "Kan inte byta till '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÐÅÒÅÊÔÉ Õ ÔÅËÕ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CHECKREAD
- cze "Z-Báznam byl zmìnìn od posledního ètení v tabulce '%-.64s'"
- dan "Posten er ændret siden sidste læsning '%-.64s'"
- nla "Record is veranderd sinds de laatste lees activiteit in de tabel '%-.64s'"
- eng "Record has changed since last read in table '%-.64s'"
- est "Kirje tabelis '%-.64s' on muutunud viimasest lugemisest saadik"
- fre "Enregistrement modifié depuis sa dernière lecture dans la table '%-.64s'"
- ger "Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert"
- greek "Ç åããñáöÞ Ý÷åé áëëÜîåé áðü ôçí ôåëåõôáßá öïñÜ ðïõ áíáóýñèçêå áðü ôïí ðßíáêá '%-.64s'"
- hun "A(z) '%-.64s' tablaban talalhato rekord megvaltozott az utolso olvasas ota"
- ita "Il record e` cambiato dall'ultima lettura della tabella '%-.64s'"
- kor "Å×À̺í '%-.64s'¿¡¼­ ¸¶Áö¸·À¸·Î ÀÐÀº ÈÄ Record°¡ º¯°æµÇ¾ú½À´Ï´Ù."
- nor "Posten har blitt endret siden den ble lest '%-.64s'"
- norwegian-ny "Posten har vorte endra sidan den sist vart lesen '%-.64s'"
- pol "Rekord zosta³ zmieniony od ostaniego odczytania z tabeli '%-.64s'"
- por "Registro alterado desde a última leitura da tabela '%-.64s'"
- rum "Cimpul a fost schimbat de la ultima citire a tabelei '%-.64s'"
- rus "úÁÐÉÓØ ÉÚÍÅÎÉÌÁÓØ Ó ÍÏÍÅÎÔÁ ÐÏÓÌÅÄÎÅÊ ×ÙÂÏÒËÉ × ÔÁÂÌÉÃÅ '%-.64s'"
- serbian "Slog je promenjen od zadnjeg èitanja tabele '%-.64s'"
- slo "Záznam bol zmenený od posledného èítania v tabuµke '%-.64s'"
- spa "El registro ha cambiado desde la ultima lectura de la tabla '%-.64s'"
- swe "Posten har förändrats sedan den lästes i register '%-.64s'"
- ukr "úÁÐÉÓ ÂÕÌÏ ÚͦÎÅÎÏ Ú ÞÁÓÕ ÏÓÔÁÎÎØÏÇÏ ÞÉÔÁÎÎÑ Ú ÔÁÂÌÉæ '%-.64s'"
-ER_DISK_FULL
- cze "Disk je pln-Bý (%s), èekám na uvolnìní nìjakého místa ..."
- dan "Ikke mere diskplads (%s). Venter på at få frigjort plads..."
- nla "Schijf vol (%s). Aan het wachten totdat er ruimte vrij wordt gemaakt..."
- eng "Disk full (%s); waiting for someone to free some space..."
- jps "Disk full (%s). ’N‚©‚ª‰½‚©‚ðŒ¸‚ç‚·‚Ü‚Å‚Ü‚Á‚Ä‚­‚¾‚³‚¢...",
- est "Ketas täis (%s). Ootame kuni tekib vaba ruumi..."
- fre "Disque plein (%s). J'attend que quelqu'un libère de l'espace..."
- ger "Festplatte voll (%-.64s). Warte, bis jemand Platz schafft ..."
- greek "Äåí õðÜñ÷åé ÷þñïò óôï äßóêï (%s). Ðáñáêáëþ, ðåñéìÝíåôå íá åëåõèåñùèåß ÷þñïò..."
- hun "A lemez megtelt (%s)."
- ita "Disco pieno (%s). In attesa che qualcuno liberi un po' di spazio..."
- jpn "Disk full (%s). 狼¤¬²¿¤«¤ò¸º¤é¤¹¤Þ¤Ç¤Þ¤Ã¤Æ¤¯¤À¤µ¤¤..."
- kor "Disk full (%s). ´Ù¸¥ »ç¶÷ÀÌ Áö¿ï¶§±îÁö ±â´Ù¸³´Ï´Ù..."
- nor "Ikke mer diskplass (%s). Venter på å få frigjort plass..."
- norwegian-ny "Ikkje meir diskplass (%s). Ventar på å få frigjort plass..."
- pol "Dysk pe³ny (%s). Oczekiwanie na zwolnienie miejsca..."
- por "Disco cheio (%s). Aguardando alguém liberar algum espaço..."
- rum "Hard-disk-ul este plin (%s). Astept sa se elibereze ceva spatiu..."
- rus "äÉÓË ÚÁÐÏÌÎÅÎ. (%s). ïÖÉÄÁÅÍ, ÐÏËÁ ËÔÏ-ÔÏ ÎÅ ÕÂÅÒÅÔ ÐÏÓÌÅ ÓÅÂÑ ÍÕÓÏÒ..."
- serbian "Disk je pun (%s). Èekam nekoga da doðe i oslobodi nešto mesta..."
- slo "Disk je plný (%s), èakám na uvoµnenie miesta..."
- spa "Disco lleno (%s). Esperando para que se libere algo de espacio..."
- swe "Disken är full (%s). Väntar tills det finns ledigt utrymme..."
- ukr "äÉÓË ÚÁÐÏ×ÎÅÎÉÊ (%s). ÷ÉÞÉËÕÀ, ÄÏËÉ ÚצÌØÎÉÔØÓÑ ÔÒÏÈÉ Í¦ÓÃÑ..."
-ER_DUP_KEY 23000
- cze "Nemohu zapsat, zdvojen-Bý klíè v tabulce '%-.64s'"
- dan "Kan ikke skrive, flere ens nøgler i tabellen '%-.64s'"
- nla "Kan niet schrijven, dubbele zoeksleutel in tabel '%-.64s'"
- eng "Can't write; duplicate key in table '%-.64s'"
- jps "table '%-.64s' ‚É key ‚ªd•¡‚µ‚Ä‚¢‚Ä‘‚«‚±‚ß‚Ü‚¹‚ñ",
- est "Ei saa kirjutada, korduv võti tabelis '%-.64s'"
- fre "Ecriture impossible, doublon dans une clé de la table '%-.64s'"
- ger "Kann nicht speichern, Grund: doppelter Schlüssel in Tabelle '%-.64s'"
- greek "Äåí åßíáé äõíáôÞ ç êáôá÷þñçóç, ç ôéìÞ õðÜñ÷åé Þäç óôïí ðßíáêá '%-.64s'"
- hun "Irasi hiba, duplikalt kulcs a '%-.64s' tablaban."
- ita "Scrittura impossibile: chiave duplicata nella tabella '%-.64s'"
- jpn "table '%-.64s' ¤Ë key ¤¬½ÅÊ£¤·¤Æ¤¤¤Æ½ñ¤­¤³¤á¤Þ¤»¤ó"
- kor "±â·ÏÇÒ ¼ö ¾øÀ¾´Ï´Ù., Å×À̺í '%-.64s'¿¡¼­ Áߺ¹ Å°"
- nor "Kan ikke skrive, flere like nøkler i tabellen '%-.64s'"
- norwegian-ny "Kan ikkje skrive, flere like nyklar i tabellen '%-.64s'"
- pol "Nie mo¿na zapisaæ, powtórzone klucze w tabeli '%-.64s'"
- por "Não pode gravar. Chave duplicada na tabela '%-.64s'"
- rum "Nu pot sa scriu (can't write), cheie duplicata in tabela '%-.64s'"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÚ×ÅÓÔÉ ÚÁÐÉÓØ, ÄÕÂÌÉÒÕÀÝÉÊÓÑ ËÌÀÞ × ÔÁÂÌÉÃÅ '%-.64s'"
- serbian "Ne mogu da pišem pošto postoji duplirani kljuè u tabeli '%-.64s'"
- slo "Nemô¾em zapísa», duplikát kµúèa v tabuµke '%-.64s'"
- spa "No puedo escribir, clave duplicada en la tabla '%-.64s'"
- swe "Kan inte skriva, dubbel söknyckel i register '%-.64s'"
- ukr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ, ÄÕÂÌÀÀÞÉÊÓÑ ËÌÀÞ × ÔÁÂÌÉæ '%-.64s'"
-ER_ERROR_ON_CLOSE
- cze "Chyba p-Bøi zavírání '%-.64s' (chybový kód: %d)"
- dan "Fejl ved lukning af '%-.64s' (Fejlkode: %d)"
- nla "Fout bij het sluiten van '%-.64s' (Errcode: %d)"
- eng "Error on close of '%-.64s' (errno: %d)"
- est "Viga faili '%-.64s' sulgemisel (veakood: %d)"
- fre "Erreur a la fermeture de '%-.64s' (Errcode: %d)"
- ger "Fehler beim Schließen von '%-.64s' (Fehler: %d)"
- greek "ÐáñïõóéÜóôçêå ðñüâëçìá êëåßíïíôáò ôï '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Hiba a(z) '%-.64s' zarasakor. (hibakod: %d)"
- ita "Errore durante la chiusura di '%-.64s' (errno: %d)"
- kor "'%-.64s'´Ý´Â Áß ¿¡·¯ (¿¡·¯¹øÈ£: %d)"
- nor "Feil ved lukking av '%-.64s' (Feilkode: %d)"
- norwegian-ny "Feil ved lukking av '%-.64s' (Feilkode: %d)"
- pol "B³?d podczas zamykania '%-.64s' (Kod b³êdu: %d)"
- por "Erro ao fechar '%-.64s' (erro no. %d)"
- rum "Eroare inchizind '%-.64s' (errno: %d)"
- rus "ïÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Greška pri zatvaranju '%-.64s' (errno: %d)"
- slo "Chyba pri zatváraní '%-.64s' (chybový kód: %d)"
- spa "Error en el cierre de '%-.64s' (Error: %d)"
- swe "Fick fel vid stängning av '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÚÁËÒÉÔÉ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_ERROR_ON_READ
- cze "Chyba p-Bøi ètení souboru '%-.64s' (chybový kód: %d)"
- dan "Fejl ved læsning af '%-.64s' (Fejlkode: %d)"
- nla "Fout bij het lezen van file '%-.64s' (Errcode: %d)"
- eng "Error reading file '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒtƒ@ƒCƒ‹‚Ì“Ç‚Ýž‚݃Gƒ‰[ (errno: %d)",
- est "Viga faili '%-.64s' lugemisel (veakood: %d)"
- fre "Erreur en lecture du fichier '%-.64s' (Errcode: %d)"
- ger "Fehler beim Lesen der Datei '%-.64s' (Fehler: %d)"
- greek "Ðñüâëçìá êáôÜ ôçí áíÜãíùóç ôïõ áñ÷åßïõ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Hiba a '%-.64s'file olvasasakor. (hibakod: %d)"
- ita "Errore durante la lettura del file '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¥¨¥é¡¼ (errno: %d)"
- kor "'%-.64s'È­ÀÏ Àб⠿¡·¯ (¿¡·¯¹øÈ£: %d)"
- nor "Feil ved lesing av '%-.64s' (Feilkode: %d)"
- norwegian-ny "Feil ved lesing av '%-.64s' (Feilkode: %d)"
- pol "B³?d podczas odczytu pliku '%-.64s' (Kod b³êdu: %d)"
- por "Erro ao ler arquivo '%-.64s' (erro no. %d)"
- rum "Eroare citind fisierul '%-.64s' (errno: %d)"
- rus "ïÛÉÂËÁ ÞÔÅÎÉÑ ÆÁÊÌÁ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Greška pri èitanju file-a '%-.64s' (errno: %d)"
- slo "Chyba pri èítaní súboru '%-.64s' (chybový kód: %d)"
- spa "Error leyendo el fichero '%-.64s' (Error: %d)"
- swe "Fick fel vid läsning av '%-.64s' (Felkod %d)"
- ukr "îÅ ÍÏÖÕ ÐÒÏÞÉÔÁÔÉ ÆÁÊÌ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_ERROR_ON_RENAME
- cze "Chyba p-Bøi pøejmenování '%-.64s' na '%-.64s' (chybový kód: %d)"
- dan "Fejl ved omdøbning af '%-.64s' til '%-.64s' (Fejlkode: %d)"
- nla "Fout bij het hernoemen van '%-.64s' naar '%-.64s' (Errcode: %d)"
- eng "Error on rename of '%-.64s' to '%-.64s' (errno: %d)"
- jps "'%-.64s' ‚ð '%-.64s' ‚É rename ‚Å‚«‚Ü‚¹‚ñ (errno: %d)",
- est "Viga faili '%-.64s' ümbernimetamisel '%-.64s'-ks (veakood: %d)"
- fre "Erreur en renommant '%-.64s' en '%-.64s' (Errcode: %d)"
- ger "Fehler beim Umbenennen von '%-.64s' in '%-.64s' (Fehler: %d)"
- greek "Ðñüâëçìá êáôÜ ôçí ìåôïíïìáóßá ôïõ áñ÷åßïõ '%-.64s' to '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Hiba a '%-.64s' file atnevezesekor. (hibakod: %d)"
- ita "Errore durante la rinominazione da '%-.64s' a '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¤ò '%-.64s' ¤Ë rename ¤Ç¤­¤Þ¤»¤ó (errno: %d)"
- kor "'%-.64s'¸¦ '%-.64s'·Î À̸§ º¯°æÁß ¿¡·¯ (¿¡·¯¹øÈ£: %d)"
- nor "Feil ved omdøping av '%-.64s' til '%-.64s' (Feilkode: %d)"
- norwegian-ny "Feil ved omdøyping av '%-.64s' til '%-.64s' (Feilkode: %d)"
- pol "B³?d podczas zmieniania nazwy '%-.64s' na '%-.64s' (Kod b³êdu: %d)"
- por "Erro ao renomear '%-.64s' para '%-.64s' (erro no. %d)"
- rum "Eroare incercind sa renumesc '%-.64s' in '%-.64s' (errno: %d)"
- rus "ïÛÉÂËÁ ÐÒÉ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÉ '%-.64s' × '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Greška pri promeni imena '%-.64s' na '%-.64s' (errno: %d)"
- slo "Chyba pri premenovávaní '%-.64s' na '%-.64s' (chybový kód: %d)"
- spa "Error en el renombrado de '%-.64s' a '%-.64s' (Error: %d)"
- swe "Kan inte byta namn från '%-.64s' till '%-.64s' (Felkod: %d)"
- ukr "îÅ ÍÏÖÕ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ '%-.64s' Õ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_ERROR_ON_WRITE
- cze "Chyba p-Bøi zápisu do souboru '%-.64s' (chybový kód: %d)"
- dan "Fejl ved skriving av filen '%-.64s' (Fejlkode: %d)"
- nla "Fout bij het wegschrijven van file '%-.64s' (Errcode: %d)"
- eng "Error writing file '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ð‘‚­Ž–‚ª‚Å‚«‚Ü‚¹‚ñ (errno: %d)",
- est "Viga faili '%-.64s' kirjutamisel (veakood: %d)"
- fre "Erreur d'écriture du fichier '%-.64s' (Errcode: %d)"
- ger "Fehler beim Speichern der Datei '%-.64s' (Fehler: %d)"
- greek "Ðñüâëçìá êáôÜ ôçí áðïèÞêåõóç ôïõ áñ÷åßïõ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Hiba a '%-.64s' file irasakor. (hibakod: %d)"
- ita "Errore durante la scrittura del file '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Õ¥¡¥¤¥ë¤ò½ñ¤¯»ö¤¬¤Ç¤­¤Þ¤»¤ó (errno: %d)"
- kor "'%-.64s'È­ÀÏ ±â·Ï Áß ¿¡·¯ (¿¡·¯¹øÈ£: %d)"
- nor "Feil ved skriving av fila '%-.64s' (Feilkode: %d)"
- norwegian-ny "Feil ved skriving av fila '%-.64s' (Feilkode: %d)"
- pol "B³?d podczas zapisywania pliku '%-.64s' (Kod b³êdu: %d)"
- por "Erro ao gravar arquivo '%-.64s' (erro no. %d)"
- rum "Eroare scriind fisierul '%-.64s' (errno: %d)"
- rus "ïÛÉÂËÁ ÚÁÐÉÓÉ × ÆÁÊÌ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Greška pri upisu '%-.64s' (errno: %d)"
- slo "Chyba pri zápise do súboru '%-.64s' (chybový kód: %d)"
- spa "Error escribiendo el archivo '%-.64s' (Error: %d)"
- swe "Fick fel vid skrivning till '%-.64s' (Felkod %d)"
- ukr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_FILE_USED
- cze "'%-.64s' je zam-Bèen proti zmìnám"
- dan "'%-.64s' er låst mod opdateringer"
- nla "'%-.64s' is geblokeerd tegen veranderingen"
- eng "'%-.64s' is locked against change"
- jps "'%-.64s' ‚̓ƒbƒN‚³‚ê‚Ä‚¢‚Ü‚·",
- est "'%-.64s' on lukustatud muudatuste vastu"
- fre "'%-.64s' est verrouillé contre les modifications"
- ger "'%-.64s' ist für Änderungen gesperrt"
- greek "'%-.64s' äåí åðéôñÝðïíôáé áëëáãÝò"
- hun "'%-.64s' a valtoztatas ellen zarolva"
- ita "'%-.64s' e` soggetto a lock contro i cambiamenti"
- jpn "'%-.64s' ¤Ï¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹"
- kor "'%-.64s'°¡ º¯°æÇÒ ¼ö ¾øµµ·Ï Àá°ÜÀÖÀ¾´Ï´Ù."
- nor "'%-.64s' er låst mot oppdateringer"
- norwegian-ny "'%-.64s' er låst mot oppdateringar"
- pol "'%-.64s' jest zablokowany na wypadek zmian"
- por "'%-.64s' está com travamento contra alterações"
- rum "'%-.64s' este blocat pentry schimbari (loccked against change)"
- rus "'%-.64s' ÚÁÂÌÏËÉÒÏ×ÁÎ ÄÌÑ ÉÚÍÅÎÅÎÉÊ"
- serbian "'%-.64s' je zakljuèan za upis"
- slo "'%-.64s' je zamknutý proti zmenám"
- spa "'%-.64s' esta bloqueado contra cambios"
- swe "'%-.64s' är låst mot användning"
- ukr "'%-.64s' ÚÁÂÌÏËÏ×ÁÎÉÊ ÎÁ ×ÎÅÓÅÎÎÑ ÚͦÎ"
-ER_FILSORT_ABORT
- cze "T-Bøídìní pøeru¹eno"
- dan "Sortering afbrudt"
- nla "Sorteren afgebroken"
- eng "Sort aborted"
- jps "Sort ’†’f",
- est "Sorteerimine katkestatud"
- fre "Tri alphabétique abandonné"
- ger "Sortiervorgang abgebrochen"
- greek "Ç äéáäéêáóßá ôáîéíüìéóçò áêõñþèçêå"
- hun "Sikertelen rendezes"
- ita "Operazione di ordinamento abbandonata"
- jpn "Sort ̾̂"
- kor "¼ÒÆ®°¡ ÁߴܵǾú½À´Ï´Ù."
- nor "Sortering avbrutt"
- norwegian-ny "Sortering avbrote"
- pol "Sortowanie przerwane"
- por "Ordenação abortada"
- rum "Sortare intrerupta"
- rus "óÏÒÔÉÒÏ×ËÁ ÐÒÅÒ×ÁÎÁ"
- serbian "Sortiranje je prekinuto"
- slo "Triedenie preru¹ené"
- spa "Ordeancion cancelada"
- swe "Sorteringen avbruten"
- ukr "óÏÒÔÕ×ÁÎÎÑ ÐÅÒÅÒ×ÁÎÏ"
-ER_FORM_NOT_FOUND
- cze "Pohled '%-.64s' pro '%-.64s' neexistuje"
- dan "View '%-.64s' eksisterer ikke for '%-.64s'"
- nla "View '%-.64s' bestaat niet voor '%-.64s'"
- eng "View '%-.64s' doesn't exist for '%-.64s'"
- jps "View '%-.64s' ‚ª '%-.64s' ‚É’è‹`‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "Vaade '%-.64s' ei eksisteeri '%-.64s' jaoks"
- fre "La vue (View) '%-.64s' n'existe pas pour '%-.64s'"
- ger "View '%-.64s' existiert für '%-.64s' nicht"
- greek "Ôï View '%-.64s' äåí õðÜñ÷åé ãéá '%-.64s'"
- hun "A(z) '%-.64s' nezet nem letezik a(z) '%-.64s'-hoz"
- ita "La view '%-.64s' non esiste per '%-.64s'"
- jpn "View '%-.64s' ¤¬ '%-.64s' ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "ºä '%-.64s'°¡ '%-.64s'¿¡¼­´Â Á¸ÀçÇÏÁö ¾ÊÀ¾´Ï´Ù."
- nor "View '%-.64s' eksisterer ikke for '%-.64s'"
- norwegian-ny "View '%-.64s' eksisterar ikkje for '%-.64s'"
- pol "Widok '%-.64s' nie istnieje dla '%-.64s'"
- por "Visão '%-.64s' não existe para '%-.64s'"
- rum "View '%-.64s' nu exista pentru '%-.64s'"
- rus "ðÒÅÄÓÔÁ×ÌÅÎÉÅ '%-.64s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÄÌÑ '%-.64s'"
- serbian "View '%-.64s' ne postoji za '%-.64s'"
- slo "Pohµad '%-.64s' neexistuje pre '%-.64s'"
- spa "La vista '%-.64s' no existe para '%-.64s'"
- swe "Formulär '%-.64s' finns inte i '%-.64s'"
- ukr "÷ÉÇÌÑÄ '%-.64s' ÎÅ ¦ÓÎÕ¤ ÄÌÑ '%-.64s'"
-ER_GET_ERRNO
- cze "Obsluha tabulky vr-Bátila chybu %d"
- dan "Modtog fejl %d fra tabel håndteringen"
- nla "Fout %d van tabel handler"
- eng "Got error %d from storage engine"
- est "Tabeli handler tagastas vea %d"
- fre "Reçu l'erreur %d du handler de la table"
- ger "Fehler %d (Speicher-Engine)"
- greek "ÅëÞöèç ìÞíõìá ëÜèïõò %d áðü ôïí ÷åéñéóôÞ ðßíáêá (table handler)"
- hun "%d hibajelzes a tablakezelotol"
- ita "Rilevato l'errore %d dal gestore delle tabelle"
- jpn "Got error %d from table handler"
- kor "Å×À̺í handler¿¡¼­ %d ¿¡·¯°¡ ¹ß»ý ÇÏ¿´½À´Ï´Ù."
- nor "Mottok feil %d fra tabell håndterer"
- norwegian-ny "Mottok feil %d fra tabell handterar"
- pol "Otrzymano b³?d %d z obs³ugi tabeli"
- por "Obteve erro %d no manipulador de tabelas"
- rum "Eroarea %d obtinuta din handlerul tabelei"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ %d ÏÔ ÏÂÒÁÂÏÔÞÉËÁ ÔÁÂÌÉÃ"
- serbian "Handler tabela je vratio grešku %d"
- slo "Obsluha tabuµky vrátila chybu %d"
- spa "Error %d desde el manejador de la tabla"
- swe "Fick felkod %d från databashanteraren"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ %d ×¦Ä ÄÅÓËÒÉÐÔÏÒÁ ÔÁÂÌÉæ"
-ER_ILLEGAL_HA
- cze "Obsluha tabulky '%-.64s' nem-Bá tento parametr"
- dan "Denne mulighed eksisterer ikke for tabeltypen '%-.64s'"
- nla "Tabel handler voor '%-.64s' heeft deze optie niet"
- eng "Table storage engine for '%-.64s' doesn't have this option"
- est "Tabeli '%-.64s' handler ei toeta antud operatsiooni"
- fre "Le handler de la table '%-.64s' n'a pas cette option"
- ger "Diese Option gibt es nicht (Speicher-Engine für '%-.64s')"
- greek "Ï ÷åéñéóôÞò ðßíáêá (table handler) ãéá '%-.64s' äåí äéáèÝôåé áõôÞ ôçí åðéëïãÞ"
- hun "A(z) '%-.64s' tablakezelonek nincs ilyen opcioja"
- ita "Il gestore delle tabelle per '%-.64s' non ha questa opzione"
- jpn "Table handler for '%-.64s' doesn't have this option"
- kor "'%-.64s'ÀÇ Å×À̺í handler´Â ÀÌ·¯ÇÑ ¿É¼ÇÀ» Á¦°øÇÏÁö ¾ÊÀ¾´Ï´Ù."
- nor "Tabell håndtereren for '%-.64s' har ikke denne muligheten"
- norwegian-ny "Tabell håndteraren for '%-.64s' har ikkje denne moglegheita"
- pol "Obs³uga tabeli '%-.64s' nie posiada tej opcji"
- por "Manipulador de tabela para '%-.64s' não tem esta opção"
- rum "Handlerul tabelei pentru '%-.64s' nu are aceasta optiune"
- rus "ïÂÒÁÂÏÔÞÉË ÔÁÂÌÉÃÙ '%-.64s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÜÔÕ ×ÏÚÍÏÖÎÏÓÔØ"
- serbian "Handler tabela za '%-.64s' nema ovu opciju"
- slo "Obsluha tabuµky '%-.64s' nemá tento parameter"
- spa "El manejador de la tabla de '%-.64s' no tiene esta opcion"
- swe "Registrets databas har inte denna facilitet"
- ukr "äÅÓËÒÉÐÔÏÒ ÔÁÂÌÉæ '%-.64s' ÎÅ ÍÁ¤ 椧 ×ÌÁÓÔÉ×ÏÓÔ¦"
-ER_KEY_NOT_FOUND
- cze "Nemohu naj-Bít záznam v '%-.64s'"
- dan "Kan ikke finde posten i '%-.64s'"
- nla "Kan record niet vinden in '%-.64s'"
- eng "Can't find record in '%-.64s'"
- jps "'%-.64s'‚Ì‚È‚©‚ɃŒƒR[ƒh‚ªŒ©•t‚©‚è‚Ü‚¹‚ñ",
- est "Ei suuda leida kirjet '%-.64s'-s"
- fre "Ne peut trouver l'enregistrement dans '%-.64s'"
- ger "Kann Datensatz in '%-.64s' nicht finden"
- greek "Áäýíáôç ç áíåýñåóç åããñáöÞò óôï '%-.64s'"
- hun "Nem talalhato a rekord '%-.64s'-ben"
- ita "Impossibile trovare il record in '%-.64s'"
- jpn "'%-.64s'¤Î¤Ê¤«¤Ë¥ì¥³¡¼¥É¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó"
- kor "'%-.64s'¿¡¼­ ·¹Äڵ带 ãÀ» ¼ö ¾øÀ¾´Ï´Ù."
- nor "Kan ikke finne posten i '%-.64s'"
- norwegian-ny "Kan ikkje finne posten i '%-.64s'"
- pol "Nie mo¿na znale¥æ rekordu w '%-.64s'"
- por "Não pode encontrar registro em '%-.64s'"
- rum "Nu pot sa gasesc recordul in '%-.64s'"
- rus "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÚÁÐÉÓØ × '%-.64s'"
- serbian "Ne mogu da pronaðem slog u '%-.64s'"
- slo "Nemô¾em nájs» záznam v '%-.64s'"
- spa "No puedo encontrar el registro en '%-.64s'"
- swe "Hittar inte posten"
- ukr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ Õ '%-.64s'"
-ER_NOT_FORM_FILE
- cze "Nespr-Bávná informace v souboru '%-.64s'"
- dan "Forkert indhold i: '%-.64s'"
- nla "Verkeerde info in file: '%-.64s'"
- eng "Incorrect information in file: '%-.64s'"
- jps "ƒtƒ@ƒCƒ‹ '%-.64s' ‚Ì info ‚ªŠÔˆá‚Á‚Ä‚¢‚é‚悤‚Å‚·",
- est "Vigane informatsioon failis '%-.64s'"
- fre "Information erronnée dans le fichier: '%-.64s'"
- ger "Falsche Information in Datei '%-.64s'"
- greek "ËÜèïò ðëçñïöïñßåò óôï áñ÷åßï: '%-.64s'"
- hun "Ervenytelen info a file-ban: '%-.64s'"
- ita "Informazione errata nel file: '%-.64s'"
- jpn "¥Õ¥¡¥¤¥ë '%-.64s' ¤Î info ¤¬´Ö°ã¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤¹"
- kor "È­ÀÏÀÇ ºÎÁ¤È®ÇÑ Á¤º¸: '%-.64s'"
- nor "Feil informasjon i filen: '%-.64s'"
- norwegian-ny "Feil informasjon i fila: '%-.64s'"
- pol "Niew³a?ciwa informacja w pliku: '%-.64s'"
- por "Informação incorreta no arquivo '%-.64s'"
- rum "Informatie incorecta in fisierul: '%-.64s'"
- rus "îÅËÏÒÒÅËÔÎÁÑ ÉÎÆÏÒÍÁÃÉÑ × ÆÁÊÌÅ '%-.64s'"
- serbian "Pogrešna informacija u file-u: '%-.64s'"
- slo "Nesprávna informácia v súbore: '%-.64s'"
- spa "Informacion erronea en el archivo: '%-.64s'"
- swe "Felaktig fil: '%-.64s'"
- ukr "èÉÂÎÁ ¦ÎÆÏÒÍÁÃ¦Ñ Õ ÆÁÊ̦: '%-.64s'"
-ER_NOT_KEYFILE
- cze "Nespr-Bávný klíè pro tabulku '%-.64s'; pokuste se ho opravit"
- dan "Fejl i indeksfilen til tabellen '%-.64s'; prøv at reparere den"
- nla "Verkeerde zoeksleutel file voor tabel: '%-.64s'; probeer het te repareren"
- eng "Incorrect key file for table '%-.64s'; try to repair it"
- jps "'%-.64s' ƒe[ƒuƒ‹‚Ì key file ‚ªŠÔˆá‚Á‚Ä‚¢‚é‚悤‚Å‚·. C•œ‚ð‚µ‚Ä‚­‚¾‚³‚¢",
- est "Tabeli '%-.64s' võtmefail on vigane; proovi seda parandada"
- fre "Index corrompu dans la table: '%-.64s'; essayez de le réparer"
- ger "Fehlerhafte Index-Datei für Tabelle '%-.64s'; versuche zu reparieren"
- greek "ËÜèïò áñ÷åßï ôáîéíüìéóçò (key file) ãéá ôïí ðßíáêá: '%-.64s'; Ðáñáêáëþ, äéïñèþóôå ôï!"
- hun "Ervenytelen kulcsfile a tablahoz: '%-.64s'; probalja kijavitani!"
- ita "File chiave errato per la tabella : '%-.64s'; prova a riparalo"
- jpn "'%-.64s' ¥Æ¡¼¥Ö¥ë¤Î key file ¤¬´Ö°ã¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤¹. ½¤Éü¤ò¤·¤Æ¤¯¤À¤µ¤¤"
- kor "'%-.64s' Å×À̺íÀÇ ºÎÁ¤È®ÇÑ Å° Á¸Àç. ¼öÁ¤ÇϽÿÀ!"
- nor "Tabellen '%-.64s' har feil i nøkkelfilen; forsøk å reparer den"
- norwegian-ny "Tabellen '%-.64s' har feil i nykkelfila; prøv å reparere den"
- pol "Niew³a?ciwy plik kluczy dla tabeli: '%-.64s'; spróbuj go naprawiæ"
- por "Arquivo de índice incorreto para tabela '%-.64s'; tente repará-lo"
- rum "Cheia fisierului incorecta pentru tabela: '%-.64s'; incearca s-o repari"
- rus "îÅËÏÒÒÅËÔÎÙÊ ÉÎÄÅËÓÎÙÊ ÆÁÊÌ ÄÌÑ ÔÁÂÌÉÃÙ: '%-.64s'. ðÏÐÒÏÂÕÊÔÅ ×ÏÓÓÔÁÎÏ×ÉÔØ ÅÇÏ"
- serbian "Pogrešan key file za tabelu: '%-.64s'; probajte da ga ispravite"
- slo "Nesprávny kµúè pre tabuµku '%-.64s'; pokúste sa ho opravi»"
- spa "Clave de archivo erronea para la tabla: '%-.64s'; intente repararlo"
- swe "Fatalt fel vid hantering av register '%-.64s'; kör en reparation"
- ukr "èÉÂÎÉÊ ÆÁÊÌ ËÌÀÞÅÊ ÄÌÑ ÔÁÂÌÉæ: '%-.64s'; óÐÒÏÂÕÊÔÅ ÊÏÇÏ ×¦ÄÎÏ×ÉÔÉ"
-ER_OLD_KEYFILE
- cze "Star-Bý klíèový soubor pro '%-.64s'; opravte ho."
- dan "Gammel indeksfil for tabellen '%-.64s'; reparer den"
- nla "Oude zoeksleutel file voor tabel '%-.64s'; repareer het!"
- eng "Old key file for table '%-.64s'; repair it!"
- jps "'%-.64s' ƒe[ƒuƒ‹‚͌¢Œ`Ž®‚Ì key file ‚̂悤‚Å‚·; C•œ‚ð‚µ‚Ä‚­‚¾‚³‚¢",
- est "Tabeli '%-.64s' võtmefail on aegunud; paranda see!"
- fre "Vieux fichier d'index pour la table '%-.64s'; réparez le!"
- ger "Alte Index-Datei für Tabelle '%-.64s'. Bitte reparieren"
- greek "Ðáëáéü áñ÷åßï ôáîéíüìéóçò (key file) ãéá ôïí ðßíáêá '%-.64s'; Ðáñáêáëþ, äéïñèþóôå ôï!"
- hun "Regi kulcsfile a '%-.64s'tablahoz; probalja kijavitani!"
- ita "File chiave vecchio per la tabella '%-.64s'; riparalo!"
- jpn "'%-.64s' ¥Æ¡¼¥Ö¥ë¤Ï¸Å¤¤·Á¼°¤Î key file ¤Î¤è¤¦¤Ç¤¹; ½¤Éü¤ò¤·¤Æ¤¯¤À¤µ¤¤"
- kor "'%-.64s' Å×À̺íÀÇ ÀÌÀü¹öÁ¯ÀÇ Å° Á¸Àç. ¼öÁ¤ÇϽÿÀ!"
- nor "Gammel nøkkelfil for tabellen '%-.64s'; reparer den!"
- norwegian-ny "Gammel nykkelfil for tabellen '%-.64s'; reparer den!"
- pol "Plik kluczy dla tabeli '%-.64s' jest starego typu; napraw go!"
- por "Arquivo de índice desatualizado para tabela '%-.64s'; repare-o!"
- rum "Cheia fisierului e veche pentru tabela '%-.64s'; repar-o!"
- rus "óÔÁÒÙÊ ÉÎÄÅËÓÎÙÊ ÆÁÊÌ ÄÌÑ ÔÁÂÌÉÃÙ '%-.64s'; ÏÔÒÅÍÏÎÔÉÒÕÊÔÅ ÅÇÏ!"
- serbian "Zastareo key file za tabelu '%-.64s'; ispravite ga"
- slo "Starý kµúèový súbor pre '%-.64s'; opravte ho!"
- spa "Clave de archivo antigua para la tabla '%-.64s'; reparelo!"
- swe "Gammal nyckelfil '%-.64s'; reparera registret"
- ukr "óÔÁÒÉÊ ÆÁÊÌ ËÌÀÞÅÊ ÄÌÑ ÔÁÂÌÉæ '%-.64s'; ÷¦ÄÎÏצÔØ ÊÏÇÏ!"
-ER_OPEN_AS_READONLY
- cze "'%-.64s' je jen pro -Bètení"
- dan "'%-.64s' er skrivebeskyttet"
- nla "'%-.64s' is alleen leesbaar"
- eng "Table '%-.64s' is read only"
- jps "'%-.64s' ‚Í“Ç‚Ýž‚Ýê—p‚Å‚·",
- est "Tabel '%-.64s' on ainult lugemiseks"
- fre "'%-.64s' est en lecture seulement"
- ger "Tabelle '%-.64s' ist nur lesbar"
- greek "'%-.64s' åðéôñÝðåôáé ìüíï ç áíÜãíùóç"
- hun "'%-.64s' irasvedett"
- ita "'%-.64s' e` di sola lettura"
- jpn "'%-.64s' ¤ÏÆɤ߹þ¤ßÀìÍѤǤ¹"
- kor "Å×À̺í '%-.64s'´Â ÀбâÀü¿ë ÀÔ´Ï´Ù."
- nor "'%-.64s' er skrivebeskyttet"
- norwegian-ny "'%-.64s' er skrivetryggja"
- pol "'%-.64s' jest tylko do odczytu"
- por "Tabela '%-.64s' é somente para leitura"
- rum "Tabela '%-.64s' e read-only"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÐÒÅÄÎÁÚÎÁÞÅÎÁ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ"
- serbian "Tabelu '%-.64s' je dozvoljeno samo èitati"
- slo "'%-.64s' is èíta» only"
- spa "'%-.64s' es de solo lectura"
- swe "'%-.64s' är skyddad mot förändring"
- ukr "ôÁÂÌÉÃÑ '%-.64s' Ô¦ÌØËÉ ÄÌÑ ÞÉÔÁÎÎÑ"
-ER_OUTOFMEMORY HY001 S1001
- cze "M-Bálo pamìti. Pøestartujte daemona a zkuste znovu (je potøeba %d bytù)"
- dan "Ikke mere hukommelse. Genstart serveren og prøv igen (mangler %d bytes)"
- nla "Geen geheugen meer. Herstart server en probeer opnieuw (%d bytes nodig)"
- eng "Out of memory; restart server and try again (needed %d bytes)"
- jps "Out of memory. ƒf[ƒ‚ƒ“‚ðƒŠƒXƒ^[ƒg‚µ‚Ä‚Ý‚Ä‚­‚¾‚³‚¢ (%d bytes •K—v)",
- est "Mälu sai otsa. Proovi MySQL uuesti käivitada (puudu jäi %d baiti)"
- fre "Manque de mémoire. Redémarrez le démon et ré-essayez (%d octets nécessaires)"
- ger "Kein Speicher vorhanden (%d Bytes benötigt). Bitte Server neu starten"
- greek "Äåí õðÜñ÷åé äéáèÝóéìç ìíÞìç. ÐñïóðáèÞóôå ðÜëé, åðáíåêéíþíôáò ôç äéáäéêáóßá (demon) (÷ñåéÜæïíôáé %d bytes)"
- hun "Nincs eleg memoria. Inditsa ujra a demont, es probalja ismet. (%d byte szukseges.)"
- ita "Memoria esaurita. Fai ripartire il demone e riprova (richiesti %d bytes)"
- jpn "Out of memory. ¥Ç¡¼¥â¥ó¤ò¥ê¥¹¥¿¡¼¥È¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤ (%d bytes ɬÍ×)"
- kor "Out of memory. µ¥¸óÀ» Àç ½ÇÇà ÈÄ ´Ù½Ã ½ÃÀÛÇϽÿÀ (needed %d bytes)"
- nor "Ikke mer minne. Star på nytt tjenesten og prøv igjen (trengte %d byter)"
- norwegian-ny "Ikkje meir minne. Start på nytt tenesten og prøv igjen (trengte %d bytar)"
- pol "Zbyt ma³o pamiêci. Uruchom ponownie demona i spróbuj ponownie (potrzeba %d bajtów)"
- por "Sem memória. Reinicie o programa e tente novamente (necessita de %d bytes)"
- rum "Out of memory. Porneste daemon-ul din nou si incearca inca o data (e nevoie de %d bytes)"
- rus "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ. ðÅÒÅÚÁÐÕÓÔÉÔÅ ÓÅÒ×ÅÒ É ÐÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ (ÎÕÖÎÏ %d ÂÁÊÔ)"
- serbian "Nema memorije. Restartujte MySQL server i probajte ponovo (potrebno je %d byte-ova)"
- slo "Málo pamäti. Re¹tartujte daemona a skúste znova (je potrebných %d bytov)"
- spa "Memoria insuficiente. Reinicie el demonio e intentelo otra vez (necesita %d bytes)"
- swe "Oväntat slut på minnet, starta om programmet och försök på nytt (Behövde %d bytes)"
- ukr "âÒÁË ÐÁÍ'ÑÔ¦. òÅÓÔÁÒÔÕÊÔÅ ÓÅÒ×ÅÒ ÔÁ ÓÐÒÏÂÕÊÔÅ ÚÎÏ×Õ (ÐÏÔÒ¦ÂÎÏ %d ÂÁÊÔ¦×)"
-ER_OUT_OF_SORTMEMORY HY001 S1001
- cze "M-Bálo pamìti pro tøídìní. Zvy¹te velikost tøídícího bufferu"
- dan "Ikke mere sorteringshukommelse. Øg sorteringshukommelse (sort buffer size) for serveren"
- nla "Geen geheugen om te sorteren. Verhoog de server sort buffer size"
- eng "Out of sort memory; increase server sort buffer size"
- jps "Out of sort memory. sort buffer size ‚ª‘«‚è‚È‚¢‚悤‚Å‚·.",
- est "Mälu sai sorteerimisel otsa. Suurenda MySQL-i sorteerimispuhvrit"
- fre "Manque de mémoire pour le tri. Augmentez-la."
- ger "Kein Speicher zum Sortieren vorhanden. sort_buffer_size sollte im Server erhöht werden"
- greek "Äåí õðÜñ÷åé äéáèÝóéìç ìíÞìç ãéá ôáîéíüìéóç. ÁõîÞóôå ôï sort buffer size ãéá ôç äéáäéêáóßá (demon)"
- hun "Nincs eleg memoria a rendezeshez. Novelje a rendezo demon puffermeretet"
- ita "Memoria per gli ordinamenti esaurita. Incrementare il 'sort_buffer' al demone"
- jpn "Out of sort memory. sort buffer size ¤¬Â­¤ê¤Ê¤¤¤è¤¦¤Ç¤¹."
- kor "Out of sort memory. daemon sort bufferÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°¼¼¿ä"
- nor "Ikke mer sorteringsminne. Øk sorteringsminnet (sort buffer size) for tjenesten"
- norwegian-ny "Ikkje meir sorteringsminne. Auk sorteringsminnet (sorteringsbffer storleik) for tenesten"
- pol "Zbyt ma³o pamiêci dla sortowania. Zwiêksz wielko?æ bufora demona dla sortowania"
- por "Sem memória para ordenação. Aumente tamanho do 'buffer' de ordenação"
- rum "Out of memory pentru sortare. Largeste marimea buffer-ului pentru sortare in daemon (sort buffer size)"
- rus "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÓÏÒÔÉÒÏ×ËÉ. õ×ÅÌÉÞØÔÅ ÒÁÚÍÅÒ ÂÕÆÅÒÁ ÓÏÒÔÉÒÏ×ËÉ ÎÁ ÓÅÒ×ÅÒÅ"
- serbian "Nema memorije za sortiranje. Poveæajte velièinu sort buffer-a MySQL server-u"
- slo "Málo pamäti pre triedenie, zvý¹te veµkos» triediaceho bufferu"
- spa "Memoria de ordenacion insuficiente. Incremente el tamano del buffer de ordenacion"
- swe "Sorteringsbufferten räcker inte till. Kontrollera startparametrarna"
- ukr "âÒÁË ÐÁÍ'ÑÔ¦ ÄÌÑ ÓÏÒÔÕ×ÁÎÎÑ. ôÒÅÂÁ Ú¦ÌØÛÉÔÉ ÒÏÚÍ¦Ò ÂÕÆÅÒÁ ÓÏÒÔÕ×ÁÎÎÑ Õ ÓÅÒ×ÅÒÁ"
-ER_UNEXPECTED_EOF
- cze "Neo-Bèekávaný konec souboru pøi ètení '%-.64s' (chybový kód: %d)"
- dan "Uventet afslutning på fil (eof) ved læsning af filen '%-.64s' (Fejlkode: %d)"
- nla "Onverwachte eof gevonden tijdens het lezen van file '%-.64s' (Errcode: %d)"
- eng "Unexpected EOF found when reading file '%-.64s' (errno: %d)"
- jps "'%-.64s' ƒtƒ@ƒCƒ‹‚ð“Ç‚Ýž‚Ý’†‚É EOF ‚ª—\Šú‚¹‚ÊŠ‚ÅŒ»‚ê‚Ü‚µ‚½. (errno: %d)",
- est "Ootamatu faililõpumärgend faili '%-.64s' lugemisel (veakood: %d)"
- fre "Fin de fichier inattendue en lisant '%-.64s' (Errcode: %d)"
- ger "Unerwartetes Ende beim Lesen der Datei '%-.64s' (Fehler: %d)"
- greek "ÊáôÜ ôç äéÜñêåéá ôçò áíÜãíùóçò, âñÝèçêå áðñïóäüêçôá ôï ôÝëïò ôïõ áñ÷åßïõ '%-.64s' (êùäéêüò ëÜèïõò: %d)"
- hun "Varatlan filevege-jel a '%-.64s'olvasasakor. (hibakod: %d)"
- ita "Fine del file inaspettata durante la lettura del file '%-.64s' (errno: %d)"
- jpn "'%-.64s' ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ßÃæ¤Ë EOF ¤¬Í½´ü¤»¤Ì½ê¤Ç¸½¤ì¤Þ¤·¤¿. (errno: %d)"
- kor "'%-.64s' È­ÀÏÀ» Àд µµÁß À߸øµÈ eofÀ» ¹ß°ß (¿¡·¯¹øÈ£: %d)"
- nor "Uventet slutt på fil (eof) ved lesing av filen '%-.64s' (Feilkode: %d)"
- norwegian-ny "Uventa slutt på fil (eof) ved lesing av fila '%-.64s' (Feilkode: %d)"
- pol "Nieoczekiwany 'eof' napotkany podczas czytania z pliku '%-.64s' (Kod b³êdu: %d)"
- por "Encontrado fim de arquivo inesperado ao ler arquivo '%-.64s' (erro no. %d)"
- rum "Sfirsit de fisier neasteptat in citirea fisierului '%-.64s' (errno: %d)"
- rus "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ '%-.64s' (ÏÛÉÂËÁ: %d)"
- serbian "Neoèekivani kraj pri èitanju file-a '%-.64s' (errno: %d)"
- slo "Neoèakávaný koniec súboru pri èítaní '%-.64s' (chybový kód: %d)"
- spa "Inesperado fin de ficheroU mientras leiamos el archivo '%-.64s' (Error: %d)"
- swe "Oväntat filslut vid läsning från '%-.64s' (Felkod: %d)"
- ukr "èÉÂÎÉÊ Ë¦ÎÅÃØ ÆÁÊÌÕ '%-.64s' (ÐÏÍÉÌËÁ: %d)"
-ER_CON_COUNT_ERROR 08004
- cze "P-Bøíli¹ mnoho spojení"
- dan "For mange forbindelser (connections)"
- nla "Te veel verbindingen"
- eng "Too many connections"
- jps "Ú‘±‚ª‘½‚·‚¬‚Ü‚·",
- est "Liiga palju samaaegseid ühendusi"
- fre "Trop de connections"
- ger "Zu viele Verbindungen"
- greek "ÕðÜñ÷ïõí ðïëëÝò óõíäÝóåéò..."
- hun "Tul sok kapcsolat"
- ita "Troppe connessioni"
- jpn "Àܳ¤¬Â¿¤¹¤®¤Þ¤¹"
- kor "³Ê¹« ¸¹Àº ¿¬°á... max_connectionÀ» Áõ°¡ ½ÃÅ°½Ã¿À..."
- nor "For mange tilkoblinger (connections)"
- norwegian-ny "For mange tilkoplingar (connections)"
- pol "Zbyt wiele po³?czeñ"
- por "Excesso de conexões"
- rum "Prea multe conectiuni"
- rus "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÅÄÉÎÅÎÉÊ"
- serbian "Previše konekcija"
- slo "Príli¹ mnoho spojení"
- spa "Demasiadas conexiones"
- swe "För många anslutningar"
- ukr "úÁÂÁÇÁÔÏ Ú'¤ÄÎÁÎØ"
-ER_OUT_OF_RESOURCES
- cze "M-Bálo prostoru/pamìti pro thread"
- dan "Udgået for tråde/hukommelse"
- nla "Geen thread geheugen meer; controleer of mysqld of andere processen al het beschikbare geheugen gebruikt. Zo niet, dan moet u wellicht 'ulimit' gebruiken om mysqld toe te laten meer geheugen te benutten, of u kunt extra swap ruimte toevoegen"
- eng "Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space"
- jps "Out of memory; mysqld ‚©‚»‚Ì‘¼‚̃vƒƒZƒX‚ªƒƒ‚ƒŠ[‚ð‘S‚ÄŽg‚Á‚Ä‚¢‚é‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢. ƒƒ‚ƒŠ[‚ðŽg‚¢Ø‚Á‚Ä‚¢‚È‚¢ê‡A'ulimit' ‚ðݒ肵‚Ä mysqld ‚̃ƒ‚ƒŠ[Žg—pŒÀŠE—ʂ𑽂­‚·‚é‚©Aswap space ‚ð‘‚₵‚Ä‚Ý‚Ä‚­‚¾‚³‚¢",
- est "Mälu sai otsa. Võimalik, et aitab swap-i lisamine või käsu 'ulimit' abil MySQL-le rohkema mälu kasutamise lubamine"
- fre "Manque de 'threads'/mémoire"
- ger "Kein Speicher mehr vorhanden. Prüfen Sie, ob mysqld oder ein anderer Prozess den gesamten Speicher verbraucht. Wenn nicht, sollten Sie mit 'ulimit' dafür sorgen, dass mysqld mehr Speicher benutzen darf, oder mehr Swap-Speicher einrichten"
- greek "Ðñüâëçìá ìå ôç äéáèÝóéìç ìíÞìç (Out of thread space/memory)"
- hun "Elfogyott a thread-memoria"
- ita "Fine dello spazio/memoria per i thread"
- jpn "Out of memory; mysqld ¤«¤½¤Î¾¤Î¥×¥í¥»¥¹¤¬¥á¥â¥ê¡¼¤òÁ´¤Æ»È¤Ã¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤. ¥á¥â¥ê¡¼¤ò»È¤¤ÀڤäƤ¤¤Ê¤¤¾ì¹ç¡¢'ulimit' ¤òÀßÄꤷ¤Æ mysqld ¤Î¥á¥â¥ê¡¼»ÈÍѸ³¦Î̤ò¿¤¯¤¹¤ë¤«¡¢swap space ¤òÁý¤ä¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤"
- kor "Out of memory; mysqld³ª ¶Ç´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ »ç¿ë°¡´ÉÇÑ ¸Þ¸ð¸®¸¦ »ç¿ëÇÑÁö äũÇϽÿÀ. ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é ulimit ¸í·ÉÀ» ÀÌ¿¿ëÇÏ¿© ´õ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϰųª ½º¿Ò ½ºÆÐÀ̽º¸¦ Áõ°¡½ÃÅ°½Ã¿À"
- nor "Tomt for tråd plass/minne"
- norwegian-ny "Tomt for tråd plass/minne"
- pol "Zbyt ma³o miejsca/pamiêci dla w?tku"
- por "Sem memória. Verifique se o mysqld ou algum outro processo está usando toda memória disponível. Se não, você pode ter que usar 'ulimit' para permitir ao mysqld usar mais memória ou você pode adicionar mais área de 'swap'"
- rum "Out of memory; Verifica daca mysqld sau vreun alt proces foloseste toate memoria disponbila. Altfel, trebuie sa folosesi 'ulimit' ca sa permiti lui memoria disponbila. Altfel, trebuie sa folosesi 'ulimit' ca sa permiti lui mysqld sa foloseasca mai multa memorie ori adauga mai mult spatiu pentru swap (swap space)"
- rus "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ; ÕÄÏÓÔÏ×ÅÒØÔÅÓØ, ÞÔÏ mysqld ÉÌÉ ËÁËÏÊ-ÌÉÂÏ ÄÒÕÇÏÊ ÐÒÏÃÅÓÓ ÎÅ ÚÁÎÉÍÁÅÔ ×ÓÀ ÄÏÓÔÕÐÎÕÀ ÐÁÍÑÔØ. åÓÌÉ ÎÅÔ, ÔÏ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ulimit, ÞÔÏÂÙ ×ÙÄÅÌÉÔØ ÄÌÑ mysqld ÂÏÌØÛÅ ÐÁÍÑÔÉ, ÉÌÉ Õ×ÅÌÉÞÉÔØ ÏÂßÅÍ ÆÁÊÌÁ ÐÏÄËÁÞËÉ"
- serbian "Nema memorije; Proverite da li MySQL server ili neki drugi proces koristi svu slobodnu memoriju. (UNIX: Ako ne, probajte da upotrebite 'ulimit' komandu da biste dozvolili daemon-u da koristi više memorije ili probajte da dodate više swap memorije)"
- slo "Málo miesta-pamäti pre vlákno"
- spa "Memoria/espacio de tranpaso insuficiente"
- swe "Fick slut på minnet. Kontrollera om mysqld eller någon annan process använder allt tillgängligt minne. Om inte, försök använda 'ulimit' eller allokera mera swap"
- ukr "âÒÁË ÐÁÍ'ÑÔ¦; ðÅÒÅצÒÔÅ ÞÉ mysqld ÁÂÏ Ñ˦ÓØ ¦ÎÛ¦ ÐÒÏÃÅÓÉ ×ÉËÏÒÉÓÔÏ×ÕÀÔØ ÕÓÀ ÄÏÓÔÕÐÎÕ ÐÁÍ'ÑÔØ. ñË Î¦, ÔÏ ×É ÍÏÖÅÔÅ ÓËÏÒÉÓÔÁÔÉÓÑ 'ulimit', ÁÂÉ ÄÏÚ×ÏÌÉÔÉ mysqld ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Â¦ÌØÛÅ ÐÁÍ'ÑÔ¦ ÁÂÏ ×É ÍÏÖÅÔÅ ÄÏÄÁÔÉ Â¦ÌØÛŠͦÓÃÑ Ð¦Ä Ó×ÁÐ"
-ER_BAD_HOST_ERROR 08S01
- cze "Nemohu zjistit jm-Béno stroje pro Va¹i adresu"
- dan "Kan ikke få værtsnavn for din adresse"
- nla "Kan de hostname niet krijgen van uw adres"
- eng "Can't get hostname for your address"
- jps "‚»‚Ì address ‚Ì hostname ‚ªˆø‚¯‚Ü‚¹‚ñ.",
- est "Ei suuda lahendada IP aadressi masina nimeks"
- fre "Ne peut obtenir de hostname pour votre adresse"
- ger "Kann Hostnamen für diese Adresse nicht erhalten"
- greek "Äåí Ýãéíå ãíùóôü ôï hostname ãéá ôçí address óáò"
- hun "A gepnev nem allapithato meg a cimbol"
- ita "Impossibile risalire al nome dell'host dall'indirizzo (risoluzione inversa)"
- jpn "¤½¤Î address ¤Î hostname ¤¬°ú¤±¤Þ¤»¤ó."
- kor "´ç½ÅÀÇ ÄÄÇ»ÅÍÀÇ È£½ºÆ®À̸§À» ¾òÀ» ¼ö ¾øÀ¾´Ï´Ù."
- nor "Kan ikke få tak i vertsnavn for din adresse"
- norwegian-ny "Kan ikkje få tak i vertsnavn for di adresse"
- pol "Nie mo¿na otrzymaæ nazwy hosta dla twojego adresu"
- por "Não pode obter nome do 'host' para seu endereço"
- rum "Nu pot sa obtin hostname-ul adresei tale"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÉÍÑ ÈÏÓÔÁ ÄÌÑ ×ÁÛÅÇÏ ÁÄÒÅÓÁ"
- serbian "Ne mogu da dobijem ime host-a za vašu IP adresu"
- slo "Nemô¾em zisti» meno hostiteµa pre va¹u adresu"
- spa "No puedo obtener el nombre de maquina de tu direccion"
- swe "Kan inte hitta 'hostname' för din adress"
- ukr "îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ¦Í'Ñ ÈÏÓÔÕ ÄÌÑ ×ÁÛϧ ÁÄÒÅÓÉ"
-ER_HANDSHAKE_ERROR 08S01
- cze "Chyba p-Bøi ustavování spojení"
- dan "Forkert håndtryk (handshake)"
- nla "Verkeerde handshake"
- eng "Bad handshake"
- est "Väär handshake"
- fre "Mauvais 'handshake'"
- ger "Ungültiger Handshake"
- greek "Ç áíáãíþñéóç (handshake) äåí Ýãéíå óùóôÜ"
- hun "A kapcsolatfelvetel nem sikerult (Bad handshake)"
- ita "Negoziazione impossibile"
- nor "Feil håndtrykk (handshake)"
- norwegian-ny "Feil handtrykk (handshake)"
- pol "Z³y uchwyt(handshake)"
- por "Negociação de acesso falhou"
- rum "Prost inceput de conectie (bad handshake)"
- rus "îÅËÏÒÒÅËÔÎÏÅ ÐÒÉ×ÅÔÓÔ×ÉÅ"
- serbian "Loš poèetak komunikacije (handshake)"
- slo "Chyba pri nadväzovaní spojenia"
- spa "Protocolo erroneo"
- swe "Fel vid initiering av kommunikationen med klienten"
- ukr "îÅצÒÎÁ ÕÓÔÁÎÏ×ËÁ Ú×'ÑÚËÕ"
-ER_DBACCESS_DENIED_ERROR 42000
- cze "P-Bøístup pro u¾ivatele '%-.32s'@'%-.64s' k databázi '%-.64s' není povolen"
- dan "Adgang nægtet bruger: '%-.32s'@'%-.64s' til databasen '%-.64s'"
- nla "Toegang geweigerd voor gebruiker: '%-.32s'@'%-.64s' naar database '%-.64s'"
- eng "Access denied for user '%-.32s'@'%-.64s' to database '%-.64s'"
- jps "ƒ†[ƒU[ '%-.32s'@'%-.64s' ‚Ì '%-.64s' ƒf[ƒ^ƒx[ƒX‚ւ̃AƒNƒZƒX‚ð‹‘”Û‚µ‚Ü‚·",
- est "Ligipääs keelatud kasutajale '%-.32s'@'%-.64s' andmebaasile '%-.64s'"
- fre "Accès refusé pour l'utilisateur: '%-.32s'@'@%-.64s'. Base '%-.64s'"
- ger "Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung für Datenbank '%-.64s'"
- greek "Äåí åðéôÝñåôáé ç ðñüóâáóç óôï ÷ñÞóôç: '%-.32s'@'%-.64s' óôç âÜóç äåäïìÝíùí '%-.64s'"
- hun "A(z) '%-.32s'@'%-.64s' felhasznalo szamara tiltott eleres az '%-.64s' adabazishoz."
- ita "Accesso non consentito per l'utente: '%-.32s'@'%-.64s' al database '%-.64s'"
- jpn "¥æ¡¼¥¶¡¼ '%-.32s'@'%-.64s' ¤Î '%-.64s' ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ø¤Î¥¢¥¯¥»¥¹¤òµñÈݤ·¤Þ¤¹"
- kor "'%-.32s'@'%-.64s' »ç¿ëÀÚ´Â '%-.64s' µ¥ÀÌŸº£À̽º¿¡ Á¢±ÙÀÌ °ÅºÎ µÇ¾ú½À´Ï´Ù."
- nor "Tilgang nektet for bruker: '%-.32s'@'%-.64s' til databasen '%-.64s' nektet"
- norwegian-ny "Tilgang ikkje tillate for brukar: '%-.32s'@'%-.64s' til databasen '%-.64s' nekta"
- por "Acesso negado para o usuário '%-.32s'@'%-.64s' ao banco de dados '%-.64s'"
- rum "Acces interzis pentru utilizatorul: '%-.32s'@'%-.64s' la baza de date '%-.64s'"
- rus "äÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ '%-.32s'@'%-.64s' ÄÏÓÔÕÐ Ë ÂÁÚÅ ÄÁÎÎÙÈ '%-.64s' ÚÁËÒÙÔ"
- serbian "Pristup je zabranjen korisniku '%-.32s'@'%-.64s' za bazu '%-.64s'"
- slo "Zakázaný prístup pre u¾ívateµa: '%-.32s'@'%-.64s' k databázi '%-.64s'"
- spa "Acceso negado para usuario: '%-.32s'@'%-.64s' para la base de datos '%-.64s'"
- swe "Användare '%-.32s'@'%-.64s' är ej berättigad att använda databasen %-.64s"
- ukr "äÏÓÔÕÐ ÚÁÂÏÒÏÎÅÎÏ ÄÌÑ ËÏÒÉÓÔÕ×ÁÞÁ: '%-.32s'@'%-.64s' ÄÏ ÂÁÚÉ ÄÁÎÎÉÈ '%-.64s'"
-ER_ACCESS_DENIED_ERROR 28000
- cze "P-Bøístup pro u¾ivatele '%-.32s'@'%-.64s' (s heslem %s)"
- dan "Adgang nægtet bruger: '%-.32s'@'%-.64s' (Bruger adgangskode: %s)"
- nla "Toegang geweigerd voor gebruiker: '%-.32s'@'%-.64s' (Wachtwoord gebruikt: %s)"
- eng "Access denied for user '%-.32s'@'%-.64s' (using password: %s)"
- jps "ƒ†[ƒU[ '%-.32s'@'%-.64s' ‚ð‹‘”Û‚µ‚Ü‚·.uUsing password: %s)",
- est "Ligipääs keelatud kasutajale '%-.32s'@'%-.64s' (kasutab parooli: %s)"
- fre "Accès refusé pour l'utilisateur: '%-.32s'@'@%-.64s' (mot de passe: %s)"
- ger "Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung (verwendetes Passwort: %-.64s)"
- greek "Äåí åðéôÝñåôáé ç ðñüóâáóç óôï ÷ñÞóôç: '%-.32s'@'%-.64s' (÷ñÞóç password: %s)"
- hun "A(z) '%-.32s'@'%-.64s' felhasznalo szamara tiltott eleres. (Hasznalja a jelszot: %s)"
- ita "Accesso non consentito per l'utente: '%-.32s'@'%-.64s' (Password: %s)"
- jpn "¥æ¡¼¥¶¡¼ '%-.32s'@'%-.64s' ¤òµñÈݤ·¤Þ¤¹.uUsing password: %s)"
- kor "'%-.32s'@'%-.64s' »ç¿ëÀÚ´Â Á¢±ÙÀÌ °ÅºÎ µÇ¾ú½À´Ï´Ù. (using password: %s)"
- nor "Tilgang nektet for bruker: '%-.32s'@'%-.64s' (Bruker passord: %s)"
- norwegian-ny "Tilgang ikke tillate for brukar: '%-.32s'@'%-.64s' (Brukar passord: %s)"
- por "Acesso negado para o usuário '%-.32s'@'%-.64s' (senha usada: %s)"
- rum "Acces interzis pentru utilizatorul: '%-.32s'@'%-.64s' (Folosind parola: %s)"
- rus "äÏÓÔÕÐ ÚÁËÒÙÔ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ '%-.32s'@'%-.64s' (ÂÙÌ ÉÓÐÏÌØÚÏ×ÁÎ ÐÁÒÏÌØ: %s)"
- serbian "Pristup je zabranjen korisniku '%-.32s'@'%-.64s' (koristi lozinku: '%s')"
- slo "Zakázaný prístup pre u¾ívateµa: '%-.32s'@'%-.64s' (pou¾itie hesla: %s)"
- spa "Acceso negado para usuario: '%-.32s'@'%-.64s' (Usando clave: %s)"
- swe "Användare '%-.32s'@'%-.64s' är ej berättigad att logga in (Använder lösen: %s)"
- ukr "äÏÓÔÕÐ ÚÁÂÏÒÏÎÅÎÏ ÄÌÑ ËÏÒÉÓÔÕ×ÁÞÁ: '%-.32s'@'%-.64s' (÷ÉËÏÒÉÓÔÁÎÏ ÐÁÒÏÌØ: %s)"
-ER_NO_DB_ERROR 3D000
- cze "Nebyla vybr-Bána ¾ádná databáze"
- dan "Ingen database valgt"
- nla "Geen database geselecteerd"
- eng "No database selected"
- jps "ƒf[ƒ^ƒx[ƒX‚ª‘I‘ð‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ.",
- est "Andmebaasi ei ole valitud"
- fre "Aucune base n'a été sélectionnée"
- ger "Keine Datenbank ausgewählt"
- greek "Äåí åðéëÝ÷èçêå âÜóç äåäïìÝíùí"
- hun "Nincs kivalasztott adatbazis"
- ita "Nessun database selezionato"
- jpn "¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Þ¤»¤ó."
- kor "¼±ÅÃµÈ µ¥ÀÌŸº£À̽º°¡ ¾ø½À´Ï´Ù."
- nor "Ingen database valgt"
- norwegian-ny "Ingen database vald"
- pol "Nie wybrano ¿adnej bazy danych"
- por "Nenhum banco de dados foi selecionado"
- rum "Nici o baza de data nu a fost selectata inca"
- rus "âÁÚÁ ÄÁÎÎÙÈ ÎÅ ×ÙÂÒÁÎÁ"
- serbian "Ni jedna baza nije selektovana"
- slo "Nebola vybraná databáza"
- spa "Base de datos no seleccionada"
- swe "Ingen databas i användning"
- ukr "âÁÚÕ ÄÁÎÎÉÈ ÎÅ ×ÉÂÒÁÎÏ"
-ER_UNKNOWN_COM_ERROR 08S01
- cze "Nezn-Bámý pøíkaz"
- dan "Ukendt kommando"
- nla "Onbekend commando"
- eng "Unknown command"
- jps "‚»‚̃Rƒ}ƒ“ƒh‚͉½H",
- est "Tundmatu käsk"
- fre "Commande inconnue"
- ger "Unbekannter Befehl"
- greek "Áãíùóôç åíôïëÞ"
- hun "Ervenytelen parancs"
- ita "Comando sconosciuto"
- jpn "¤½¤Î¥³¥Þ¥ó¥É¤Ï²¿¡©"
- kor "¸í·É¾î°¡ ¹ºÁö ¸ð¸£°Ú¾î¿ä..."
- nor "Ukjent kommando"
- norwegian-ny "Ukjent kommando"
- pol "Nieznana komenda"
- por "Comando desconhecido"
- rum "Comanda invalida"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ËÏÍÁÎÄÁ ËÏÍÍÕÎÉËÁÃÉÏÎÎÏÇÏ ÐÒÏÔÏËÏÌÁ"
- serbian "Nepoznata komanda"
- slo "Neznámy príkaz"
- spa "Comando desconocido"
- swe "Okänt commando"
- ukr "îÅצÄÏÍÁ ËÏÍÁÎÄÁ"
-ER_BAD_NULL_ERROR 23000
- cze "Sloupec '%-.64s' nem-Bù¾e být null"
- dan "Kolonne '%-.64s' kan ikke være NULL"
- nla "Kolom '%-.64s' kan niet null zijn"
- eng "Column '%-.64s' cannot be null"
- jps "Column '%-.64s' ‚Í null ‚É‚Í‚Å‚«‚È‚¢‚Ì‚Å‚·",
- est "Tulp '%-.64s' ei saa omada nullväärtust"
- fre "Le champ '%-.64s' ne peut être vide (null)"
- ger "Feld '%-.64s' darf nicht NULL sein"
- greek "Ôï ðåäßï '%-.64s' äåí ìðïñåß íá åßíáé êåíü (null)"
- hun "A(z) '%-.64s' oszlop erteke nem lehet nulla"
- ita "La colonna '%-.64s' non puo` essere nulla"
- jpn "Column '%-.64s' ¤Ï null ¤Ë¤Ï¤Ç¤­¤Ê¤¤¤Î¤Ç¤¹"
- kor "Ä®·³ '%-.64s'´Â ³Î(Null)ÀÌ µÇ¸é ¾ÈµË´Ï´Ù. "
- nor "Kolonne '%-.64s' kan ikke vere null"
- norwegian-ny "Kolonne '%-.64s' kan ikkje vere null"
- pol "Kolumna '%-.64s' nie mo¿e byæ null"
- por "Coluna '%-.64s' não pode ser vazia"
- rum "Coloana '%-.64s' nu poate sa fie null"
- rus "óÔÏÌÂÅà '%-.64s' ÎÅ ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ×ÅÌÉÞÉÎÕ NULL"
- serbian "Kolona '%-.64s' ne može biti NULL"
- slo "Pole '%-.64s' nemô¾e by» null"
- spa "La columna '%-.64s' no puede ser nula"
- swe "Kolumn '%-.64s' får inte vara NULL"
- ukr "óÔÏ×ÂÅÃØ '%-.64s' ÎÅ ÍÏÖÅ ÂÕÔÉ ÎÕÌØÏ×ÉÍ"
-ER_BAD_DB_ERROR 42000
- cze "Nezn-Bámá databáze '%-.64s'"
- dan "Ukendt database '%-.64s'"
- nla "Onbekende database '%-.64s'"
- eng "Unknown database '%-.64s'"
- jps "'%-.64s' ‚È‚ñ‚ăf[ƒ^ƒx[ƒX‚Í’m‚è‚Ü‚¹‚ñ.",
- est "Tundmatu andmebaas '%-.64s'"
- fre "Base '%-.64s' inconnue"
- ger "Unbekannte Datenbank '%-.64s'"
- greek "Áãíùóôç âÜóç äåäïìÝíùí '%-.64s'"
- hun "Ervenytelen adatbazis: '%-.64s'"
- ita "Database '%-.64s' sconosciuto"
- jpn "'%-.64s' ¤Ê¤ó¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÏÃΤê¤Þ¤»¤ó."
- kor "µ¥ÀÌŸº£À̽º '%-.64s'´Â ¾Ë¼ö ¾øÀ½"
- nor "Ukjent database '%-.64s'"
- norwegian-ny "Ukjent database '%-.64s'"
- pol "Nieznana baza danych '%-.64s'"
- por "Banco de dados '%-.64s' desconhecido"
- rum "Baza de data invalida '%-.64s'"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ÂÁÚÁ ÄÁÎÎÙÈ '%-.64s'"
- serbian "Nepoznata baza '%-.64s'"
- slo "Neznáma databáza '%-.64s'"
- spa "Base de datos desconocida '%-.64s'"
- swe "Okänd databas: '%-.64s'"
- ukr "îÅצÄÏÍÁ ÂÁÚÁ ÄÁÎÎÉÈ '%-.64s'"
-ER_TABLE_EXISTS_ERROR 42S01
- cze "Tabulka '%-.64s' ji-B¾ existuje"
- dan "Tabellen '%-.64s' findes allerede"
- nla "Tabel '%-.64s' bestaat al"
- eng "Table '%-.64s' already exists"
- jps "Table '%-.64s' ‚ÍŠù‚É‚ ‚è‚Ü‚·",
- est "Tabel '%-.64s' juba eksisteerib"
- fre "La table '%-.64s' existe déjà"
- ger "Tabelle '%-.64s' bereits vorhanden"
- greek "Ï ðßíáêáò '%-.64s' õðÜñ÷åé Þäç"
- hun "A(z) '%-.64s' tabla mar letezik"
- ita "La tabella '%-.64s' esiste gia`"
- jpn "Table '%-.64s' ¤Ï´û¤Ë¤¢¤ê¤Þ¤¹"
- kor "Å×À̺í '%-.64s'´Â ÀÌ¹Ì Á¸ÀçÇÔ"
- nor "Tabellen '%-.64s' eksisterer allerede"
- norwegian-ny "Tabellen '%-.64s' eksisterar allereide"
- pol "Tabela '%-.64s' ju¿ istnieje"
- por "Tabela '%-.64s' já existe"
- rum "Tabela '%-.64s' exista deja"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "Tabela '%-.64s' veæ postoji"
- slo "Tabuµka '%-.64s' u¾ existuje"
- spa "La tabla '%-.64s' ya existe"
- swe "Tabellen '%-.64s' finns redan"
- ukr "ôÁÂÌÉÃÑ '%-.64s' ×ÖÅ ¦ÓÎÕ¤"
-ER_BAD_TABLE_ERROR 42S02
- cze "Nezn-Bámá tabulka '%-.100s'"
- dan "Ukendt tabel '%-.100s'"
- nla "Onbekende tabel '%-.100s'"
- eng "Unknown table '%-.100s'"
- jps "table '%-.100s' ‚Í‚ ‚è‚Ü‚¹‚ñ.",
- est "Tundmatu tabel '%-.100s'"
- fre "Table '%-.100s' inconnue"
- ger "Unbekannte Tabelle '%-.100s'"
- greek "Áãíùóôïò ðßíáêáò '%-.100s'"
- hun "Ervenytelen tabla: '%-.100s'"
- ita "Tabella '%-.100s' sconosciuta"
- jpn "table '%-.100s' ¤Ï¤¢¤ê¤Þ¤»¤ó."
- kor "Å×À̺í '%-.100s'´Â ¾Ë¼ö ¾øÀ½"
- nor "Ukjent tabell '%-.100s'"
- norwegian-ny "Ukjent tabell '%-.100s'"
- pol "Nieznana tabela '%-.100s'"
- por "Tabela '%-.100s' desconhecida"
- rum "Tabela '%-.100s' este invalida"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ÔÁÂÌÉÃÁ '%-.100s'"
- serbian "Nepoznata tabela '%-.100s'"
- slo "Neznáma tabuµka '%-.100s'"
- spa "Tabla '%-.100s' desconocida"
- swe "Okänd tabell '%-.100s'"
- ukr "îÅצÄÏÍÁ ÔÁÂÌÉÃÑ '%-.100s'"
-ER_NON_UNIQ_ERROR 23000
- cze "Sloupec '%-.64s' v %s nen-Bí zcela jasný"
- dan "Felt: '%-.64s' i tabel %s er ikke entydigt"
- nla "Kolom: '%-.64s' in %s is niet eenduidig"
- eng "Column '%-.64s' in %-.64s is ambiguous"
- est "Väli '%-.64s' %-.64s-s ei ole ühene"
- fre "Champ: '%-.64s' dans %s est ambigu"
- ger "Feld '%-.64s' in %-.64s ist nicht eindeutig"
- greek "Ôï ðåäßï: '%-.64s' óå %-.64s äåí Ý÷åé êáèïñéóôåß"
- hun "A(z) '%-.64s' oszlop %-.64s-ben ketertelmu"
- ita "Colonna: '%-.64s' di %-.64s e` ambigua"
- jpn "Column: '%-.64s' in %-.64s is ambiguous"
- kor "Ä®·³: '%-.64s' in '%-.64s' ÀÌ ¸ðÈ£ÇÔ"
- nor "Felt: '%-.64s' i tabell %s er ikke entydig"
- norwegian-ny "Kolonne: '%-.64s' i tabell %s er ikkje eintydig"
- pol "Kolumna: '%-.64s' w %s jest dwuznaczna"
- por "Coluna '%-.64s' em '%-.64s' é ambígua"
- rum "Coloana: '%-.64s' in %-.64s este ambigua"
- rus "óÔÏÌÂÅÃ '%-.64s' × %-.64s ÚÁÄÁÎ ÎÅÏÄÎÏÚÎÁÞÎÏ"
- serbian "Kolona '%-.64s' u %-.64s nije jedinstvena u kontekstu"
- slo "Pole: '%-.64s' v %-.64s je nejasné"
- spa "La columna: '%-.64s' en %s es ambigua"
- swe "Kolumn '%-.64s' i %s är inte unik"
- ukr "óÔÏ×ÂÅÃØ '%-.64s' Õ %-.64s ×ÉÚÎÁÞÅÎÉÊ ÎÅÏÄÎÏÚÎÁÞÎÏ"
-ER_SERVER_SHUTDOWN 08S01
- cze "Prob-Bíhá ukonèování práce serveru"
- dan "Database nedlukning er i gang"
- nla "Bezig met het stoppen van de server"
- eng "Server shutdown in progress"
- jps "Server ‚ð shutdown ’†...",
- est "Serveri seiskamine käib"
- fre "Arrêt du serveur en cours"
- ger "Der Server wird heruntergefahren"
- greek "Åíáñîç äéáäéêáóßáò áðïóýíäåóçò ôïõ åîõðçñåôçôÞ (server shutdown)"
- hun "A szerver leallitasa folyamatban"
- ita "Shutdown del server in corso"
- jpn "Server ¤ò shutdown Ãæ..."
- kor "Server°¡ ¼Ë´Ù¿î ÁßÀÔ´Ï´Ù."
- nor "Database nedkobling er i gang"
- norwegian-ny "Tenar nedkopling er i gang"
- pol "Trwa koñczenie dzia³ania serwera"
- por "'Shutdown' do servidor em andamento"
- rum "Terminarea serverului este in desfasurare"
- rus "óÅÒ×ÅÒ ÎÁÈÏÄÉÔÓÑ × ÐÒÏÃÅÓÓÅ ÏÓÔÁÎÏ×ËÉ"
- serbian "Gašenje servera je u toku"
- slo "Prebieha ukonèovanie práce servera"
- spa "Desconexion de servidor en proceso"
- swe "Servern går nu ned"
- ukr "úÁ×ÅÒÛÕ¤ÔØÓÑ ÒÁÂÏÔÁ ÓÅÒ×ÅÒÁ"
-ER_BAD_FIELD_ERROR 42S22 S0022
- cze "Nezn-Bámý sloupec '%-.64s' v %s"
- dan "Ukendt kolonne '%-.64s' i tabel %s"
- nla "Onbekende kolom '%-.64s' in %s"
- eng "Unknown column '%-.64s' in '%-.64s'"
- jps "'%-.64s' column ‚Í '%-.64s' ‚É‚Í‚ ‚è‚Ü‚¹‚ñ.",
- est "Tundmatu tulp '%-.64s' '%-.64s'-s"
- fre "Champ '%-.64s' inconnu dans %s"
- ger "Unbekanntes Tabellenfeld '%-.64s' in %-.64s"
- greek "Áãíùóôï ðåäßï '%-.64s' óå '%-.64s'"
- hun "A(z) '%-.64s' oszlop ervenytelen '%-.64s'-ben"
- ita "Colonna sconosciuta '%-.64s' in '%-.64s'"
- jpn "'%-.64s' column ¤Ï '%-.64s' ¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó."
- kor "Unknown Ä®·³ '%-.64s' in '%-.64s'"
- nor "Ukjent kolonne '%-.64s' i tabell %s"
- norwegian-ny "Ukjent felt '%-.64s' i tabell %s"
- pol "Nieznana kolumna '%-.64s' w %s"
- por "Coluna '%-.64s' desconhecida em '%-.64s'"
- rum "Coloana invalida '%-.64s' in '%-.64s'"
- rus "îÅÉÚ×ÅÓÔÎÙÊ ÓÔÏÌÂÅà '%-.64s' × '%-.64s'"
- serbian "Nepoznata kolona '%-.64s' u '%-.64s'"
- slo "Neznáme pole '%-.64s' v '%-.64s'"
- spa "La columna '%-.64s' en %s es desconocida"
- swe "Okänd kolumn '%-.64s' i %s"
- ukr "îÅצÄÏÍÉÊ ÓÔÏ×ÂÅÃØ '%-.64s' Õ '%-.64s'"
-ER_WRONG_FIELD_WITH_GROUP 42000 S1009
- cze "Pou-B¾ité '%-.64s' nebylo v group by"
- dan "Brugte '%-.64s' som ikke var i group by"
- nla "Opdracht gebruikt '%-.64s' dat niet in de GROUP BY voorkomt"
- eng "'%-.64s' isn't in GROUP BY"
- jps "'%-.64s' isn't in GROUP BY",
- est "'%-.64s' puudub GROUP BY klauslis"
- fre "'%-.64s' n'est pas dans 'group by'"
- ger "'%-.64s' ist nicht in GROUP BY vorhanden"
- greek "×ñçóéìïðïéÞèçêå '%-.64s' ðïõ äåí õðÞñ÷å óôï group by"
- hun "Used '%-.64s' with wasn't in group by"
- ita "Usato '%-.64s' che non e` nel GROUP BY"
- kor "'%-.64s'Àº GROUP BY¼Ó¿¡ ¾øÀ½"
- nor "Brukte '%-.64s' som ikke var i group by"
- norwegian-ny "Brukte '%-.64s' som ikkje var i group by"
- pol "U¿yto '%-.64s' bez umieszczenia w group by"
- por "'%-.64s' não está em 'GROUP BY'"
- rum "'%-.64s' nu exista in clauza GROUP BY"
- rus "'%-.64s' ÎÅ ÐÒÉÓÕÔÓÔ×ÕÅÔ × GROUP BY"
- serbian "Entitet '%-.64s' nije naveden u komandi 'GROUP BY'"
- slo "Pou¾ité '%-.64s' nebolo v 'group by'"
- spa "Usado '%-.64s' el cual no esta group by"
- swe "'%-.64s' finns inte i GROUP BY"
- ukr "'%-.64s' ÎÅ ¤ Õ GROUP BY"
-ER_WRONG_GROUP_FIELD 42000 S1009
- cze "Nemohu pou-B¾ít group na '%-.64s'"
- dan "Kan ikke gruppere på '%-.64s'"
- nla "Kan '%-.64s' niet groeperen"
- eng "Can't group on '%-.64s'"
- est "Ei saa grupeerida '%-.64s' järgi"
- fre "Ne peut regrouper '%-.64s'"
- ger "Gruppierung über '%-.64s' nicht möglich"
- greek "Áäýíáôç ç ïìáäïðïßçóç (group on) '%-.64s'"
- hun "A group nem hasznalhato: '%-.64s'"
- ita "Impossibile raggruppare per '%-.64s'"
- kor "'%-.64s'¸¦ ±×·ìÇÒ ¼ö ¾øÀ½"
- nor "Kan ikke gruppere på '%-.64s'"
- norwegian-ny "Kan ikkje gruppere på '%-.64s'"
- pol "Nie mo¿na grupowaæ po '%-.64s'"
- por "Não pode agrupar em '%-.64s'"
- rum "Nu pot sa grupez pe (group on) '%-.64s'"
- rus "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÚ×ÅÓÔÉ ÇÒÕÐÐÉÒÏ×ËÕ ÐÏ '%-.64s'"
- serbian "Ne mogu da grupišem po '%-.64s'"
- slo "Nemô¾em pou¾i» 'group' na '%-.64s'"
- spa "No puedo agrupar por '%-.64s'"
- swe "Kan inte använda GROUP BY med '%-.64s'"
- ukr "îÅ ÍÏÖÕ ÇÒÕÐÕ×ÁÔÉ ÐÏ '%-.64s'"
-ER_WRONG_SUM_SELECT 42000 S1009
- cze "P-Bøíkaz obsahuje zároveò funkci sum a sloupce"
- dan "Udtrykket har summer (sum) funktioner og kolonner i samme udtryk"
- nla "Opdracht heeft totaliseer functies en kolommen in dezelfde opdracht"
- eng "Statement has sum functions and columns in same statement"
- est "Lauses on korraga nii tulbad kui summeerimisfunktsioonid"
- fre "Vous demandez la fonction sum() et des champs dans la même commande"
- ger "Die Verwendung von Summierungsfunktionen und Spalten im selben Befehl ist nicht erlaubt"
- greek "Ç äéáôýðùóç ðåñéÝ÷åé sum functions êáé columns óôçí ßäéá äéáôýðùóç"
- ita "Il comando ha una funzione SUM e una colonna non specificata nella GROUP BY"
- kor "Statement °¡ sum±â´ÉÀ» µ¿ÀÛÁßÀÌ°í Ä®·³µµ µ¿ÀÏÇÑ statementÀÔ´Ï´Ù."
- nor "Uttrykket har summer (sum) funksjoner og kolonner i samme uttrykk"
- norwegian-ny "Uttrykket har summer (sum) funksjoner og kolonner i same uttrykk"
- pol "Zapytanie ma funkcje sumuj?ce i kolumny w tym samym zapytaniu"
- por "Cláusula contém funções de soma e colunas juntas"
- rum "Comanda are functii suma si coloane in aceeasi comanda"
- rus "÷ÙÒÁÖÅÎÉÅ ÓÏÄÅÒÖÉÔ ÇÒÕÐÐÏ×ÙÅ ÆÕÎËÃÉÉ É ÓÔÏÌÂÃÙ, ÎÏ ÎÅ ×ËÌÀÞÁÅÔ GROUP BY. á ËÁË ×Ù ÕÍÕÄÒÉÌÉÓØ ÐÏÌÕÞÉÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ?"
- serbian "Izraz ima 'SUM' agregatnu funkciju i kolone u isto vreme"
- slo "Príkaz obsahuje zároveò funkciu 'sum' a poµa"
- spa "El estamento tiene funciones de suma y columnas en el mismo estamento"
- swe "Kommandot har både sum functions och enkla funktioner"
- ukr "õ ×ÉÒÁÚ¦ ×ÉËÏÒÉÓÔÁÎÏ Ð¦ÄÓÕÍÏ×ÕÀÞ¦ ÆÕÎËæ§ ÐÏÒÑÄ Ú ¦ÍÅÎÁÍÉ ÓÔÏ×Âæ×"
-ER_WRONG_VALUE_COUNT 21S01
- cze "Po-Bèet sloupcù neodpovídá zadané hodnotì"
- dan "Kolonne tæller stemmer ikke med antallet af værdier"
- nla "Het aantal kolommen komt niet overeen met het aantal opgegeven waardes"
- eng "Column count doesn't match value count"
- est "Tulpade arv erineb väärtuste arvust"
- ger "Die Anzahl der Spalten entspricht nicht der Anzahl der Werte"
- greek "Ôï Column count äåí ôáéñéÜæåé ìå ôï value count"
- hun "Az oszlopban levo ertek nem egyezik meg a szamitott ertekkel"
- ita "Il numero delle colonne non e` uguale al numero dei valori"
- kor "Ä®·³ÀÇ Ä«¿îÆ®°¡ °ªÀÇ Ä«¿îÆ®¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù."
- nor "Felt telling stemmer verdi telling"
- norwegian-ny "Kolonne telling stemmer verdi telling"
- pol "Liczba kolumn nie odpowiada liczbie warto?ci"
- por "Contagem de colunas não confere com a contagem de valores"
- rum "Numarul de coloane nu este acelasi cu numarul valoarei"
- rus "ëÏÌÉÞÅÓÔ×Ï ÓÔÏÌÂÃÏ× ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ËÏÌÉÞÅÓÔ×ÏÍ ÚÎÁÞÅÎÉÊ"
- serbian "Broj kolona ne odgovara broju vrednosti"
- slo "Poèet polí nezodpovedá zadanej hodnote"
- spa "La columna con count no tiene valores para contar"
- swe "Antalet kolumner motsvarar inte antalet värden"
- ukr "ë¦ÌØ˦ÓÔØ ÓÔÏ×ÂÃ¦× ÎÅ ÓЦ×ÐÁÄÁ¤ Ú Ë¦ÌØ˦ÓÔÀ ÚÎÁÞÅÎØ"
-ER_TOO_LONG_IDENT 42000 S1009
- cze "Jm-Béno identifikátoru '%-.64s' je pøíli¹ dlouhé"
- dan "Navnet '%-.64s' er for langt"
- nla "Naam voor herkenning '%-.64s' is te lang"
- eng "Identifier name '%-.100s' is too long"
- jps "Identifier name '%-.100s' ‚Í’·‚·‚¬‚Ü‚·",
- est "Identifikaatori '%-.100s' nimi on liiga pikk"
- fre "Le nom de l'identificateur '%-.64s' est trop long"
- ger "Name des Bezeichners '%-.100s' ist zu lang"
- greek "Ôï identifier name '%-.100s' åßíáé ðïëý ìåãÜëï"
- hun "A(z) '%-.100s' azonositonev tul hosszu."
- ita "Il nome dell'identificatore '%-.100s' e` troppo lungo"
- jpn "Identifier name '%-.100s' ¤ÏŤ¹¤®¤Þ¤¹"
- kor "Identifier '%-.100s'´Â ³Ê¹« ±æ±º¿ä."
- nor "Identifikator '%-.64s' er for lang"
- norwegian-ny "Identifikator '%-.64s' er for lang"
- pol "Nazwa identyfikatora '%-.64s' jest zbyt d³uga"
- por "Nome identificador '%-.100s' é longo demais"
- rum "Numele indentificatorului '%-.100s' este prea lung"
- rus "óÌÉÛËÏÍ ÄÌÉÎÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ '%-.100s'"
- serbian "Ime '%-.100s' je predugaèko"
- slo "Meno identifikátora '%-.100s' je príli¹ dlhé"
- spa "El nombre del identificador '%-.64s' es demasiado grande"
- swe "Kolumnnamn '%-.64s' är för långt"
- ukr "¶Í'Ñ ¦ÄÅÎÔÉƦËÁÔÏÒÁ '%-.100s' ÚÁÄÏ×ÇÅ"
-ER_DUP_FIELDNAME 42S21 S1009
- cze "Zdvojen-Bé jméno sloupce '%-.64s'"
- dan "Feltnavnet '%-.64s' findes allerede"
- nla "Dubbele kolom naam '%-.64s'"
- eng "Duplicate column name '%-.64s'"
- jps "'%-.64s' ‚Æ‚¢‚¤ column –¼‚Íd•¡‚µ‚Ä‚Ü‚·",
- est "Kattuv tulba nimi '%-.64s'"
- fre "Nom du champ '%-.64s' déjà utilisé"
- ger "Doppelter Spaltenname: '%-.64s'"
- greek "ÅðáíÜëçøç column name '%-.64s'"
- hun "Duplikalt oszlopazonosito: '%-.64s'"
- ita "Nome colonna duplicato '%-.64s'"
- jpn "'%-.64s' ¤È¤¤¤¦ column ̾¤Ï½ÅÊ£¤·¤Æ¤Þ¤¹"
- kor "Áߺ¹µÈ Ä®·³ À̸§: '%-.64s'"
- nor "Feltnavnet '%-.64s' eksisterte fra før"
- norwegian-ny "Feltnamnet '%-.64s' eksisterte frå før"
- pol "Powtórzona nazwa kolumny '%-.64s'"
- por "Nome da coluna '%-.64s' duplicado"
- rum "Numele coloanei '%-.64s' e duplicat"
- rus "äÕÂÌÉÒÕÀÝÅÅÓÑ ÉÍÑ ÓÔÏÌÂÃÁ '%-.64s'"
- serbian "Duplirano ime kolone '%-.64s'"
- slo "Opakované meno poµa '%-.64s'"
- spa "Nombre de columna duplicado '%-.64s'"
- swe "Kolumnnamn '%-.64s finns flera gånger"
- ukr "äÕÂÌÀÀÞÅ ¦Í'Ñ ÓÔÏ×ÂÃÑ '%-.64s'"
-ER_DUP_KEYNAME 42000 S1009
- cze "Zdvojen-Bé jméno klíèe '%-.64s'"
- dan "Indeksnavnet '%-.64s' findes allerede"
- nla "Dubbele zoeksleutel naam '%-.64s'"
- eng "Duplicate key name '%-.64s'"
- jps "'%-.64s' ‚Æ‚¢‚¤ key ‚Ì–¼‘O‚Íd•¡‚µ‚Ä‚¢‚Ü‚·",
- est "Kattuv võtme nimi '%-.64s'"
- fre "Nom de clef '%-.64s' déjà utilisé"
- ger "Doppelter Name für Schlüssel vorhanden: '%-.64s'"
- greek "ÅðáíÜëçøç key name '%-.64s'"
- hun "Duplikalt kulcsazonosito: '%-.64s'"
- ita "Nome chiave duplicato '%-.64s'"
- jpn "'%-.64s' ¤È¤¤¤¦ key ¤Î̾Á°¤Ï½ÅÊ£¤·¤Æ¤¤¤Þ¤¹"
- kor "Áߺ¹µÈ Å° À̸§ : '%-.64s'"
- nor "Nøkkelnavnet '%-.64s' eksisterte fra før"
- norwegian-ny "Nøkkelnamnet '%-.64s' eksisterte frå før"
- pol "Powtórzony nazwa klucza '%-.64s'"
- por "Nome da chave '%-.64s' duplicado"
- rum "Numele cheiei '%-.64s' e duplicat"
- rus "äÕÂÌÉÒÕÀÝÅÅÓÑ ÉÍÑ ËÌÀÞÁ '%-.64s'"
- serbian "Duplirano ime kljuèa '%-.64s'"
- slo "Opakované meno kµúèa '%-.64s'"
- spa "Nombre de clave duplicado '%-.64s'"
- swe "Nyckelnamn '%-.64s' finns flera gånger"
- ukr "äÕÂÌÀÀÞÅ ¦Í'Ñ ËÌÀÞÁ '%-.64s'"
-ER_DUP_ENTRY 23000 S1009
- cze "Zvojen-Bý klíè '%-.64s' (èíslo klíèe %d)"
- dan "Ens værdier '%-.64s' for indeks %d"
- nla "Dubbele ingang '%-.64s' voor zoeksleutel %d"
- eng "Duplicate entry '%-.64s' for key %d"
- jps "'%-.64s' ‚Í key %d ‚É‚¨‚¢‚Äd•¡‚µ‚Ä‚¢‚Ü‚·",
- est "Kattuv väärtus '%-.64s' võtmele %d"
- fre "Duplicata du champ '%-.64s' pour la clef %d"
- ger "Doppelter Eintrag '%-.64s' für Schlüssel %d"
- greek "ÄéðëÞ åããñáöÞ '%-.64s' ãéá ôï êëåéäß %d"
- hun "Duplikalt bejegyzes '%-.64s' a %d kulcs szerint."
- ita "Valore duplicato '%-.64s' per la chiave %d"
- jpn "'%-.64s' ¤Ï key %d ¤Ë¤ª¤¤¤Æ½ÅÊ£¤·¤Æ¤¤¤Þ¤¹"
- kor "Áߺ¹µÈ ÀÔ·Â °ª '%-.64s': key %d"
- nor "Like verdier '%-.64s' for nøkkel %d"
- norwegian-ny "Like verdiar '%-.64s' for nykkel %d"
- pol "Powtórzone wyst?pienie '%-.64s' dla klucza %d"
- por "Entrada '%-.64s' duplicada para a chave %d"
- rum "Cimpul '%-.64s' e duplicat pentru cheia %d"
- rus "äÕÂÌÉÒÕÀÝÁÑÓÑ ÚÁÐÉÓØ '%-.64s' ÐÏ ËÌÀÞÕ %d"
- serbian "Dupliran unos '%-.64s' za kljuè '%d'"
- slo "Opakovaný kµúè '%-.64s' (èíslo kµúèa %d)"
- spa "Entrada duplicada '%-.64s' para la clave %d"
- swe "Dubbel nyckel '%-.64s' för nyckel %d"
- ukr "äÕÂÌÀÀÞÉÊ ÚÁÐÉÓ '%-.64s' ÄÌÑ ËÌÀÞÁ %d"
-ER_WRONG_FIELD_SPEC 42000 S1009
- cze "Chybn-Bá specifikace sloupce '%-.64s'"
- dan "Forkert kolonnespecifikaton for felt '%-.64s'"
- nla "Verkeerde kolom specificatie voor kolom '%-.64s'"
- eng "Incorrect column specifier for column '%-.64s'"
- est "Vigane tulba kirjeldus tulbale '%-.64s'"
- fre "Mauvais paramètre de champ pour le champ '%-.64s'"
- ger "Falsche Spezifikation für Feld '%-.64s'"
- greek "ÅóöáëìÝíï column specifier ãéá ôï ðåäßï '%-.64s'"
- hun "Rossz oszlopazonosito: '%-.64s'"
- ita "Specifica errata per la colonna '%-.64s'"
- kor "Ä®·³ '%-.64s'ÀÇ ºÎÁ¤È®ÇÑ Ä®·³ Á¤ÀÇÀÚ"
- nor "Feil kolonne spesifikator for felt '%-.64s'"
- norwegian-ny "Feil kolonne spesifikator for kolonne '%-.64s'"
- pol "B³êdna specyfikacja kolumny dla kolumny '%-.64s'"
- por "Especificador de coluna incorreto para a coluna '%-.64s'"
- rum "Specificandul coloanei '%-.64s' este incorect"
- rus "îÅËÏÒÒÅËÔÎÙÊ ÏÐÒÅÄÅÌÉÔÅÌØ ÓÔÏÌÂÃÁ ÄÌÑ ÓÔÏÌÂÃÁ '%-.64s'"
- serbian "Pogrešan naziv kolone za kolonu '%-.64s'"
- slo "Chyba v ¹pecifikácii poµa '%-.64s'"
- spa "Especificador de columna erroneo para la columna '%-.64s'"
- swe "Felaktigt kolumntyp för kolumn '%-.64s'"
- ukr "îÅצÒÎÉÊ ÓÐÅÃÉƦËÁÔÏÒ ÓÔÏ×ÂÃÑ '%-.64s'"
-ER_PARSE_ERROR 42000
- cze "%s bl-Bízko '%-.64s' na øádku %d"
- dan "%s nær '%-.64s' på linje %d"
- nla "%s bij '%-.64s' in regel %d"
- eng "%s near '%-.80s' at line %d"
- jps "%s : '%-.80s' •t‹ß : %d s–Ú",
- est "%s '%-.80s' ligidal real %d"
- fre "%s près de '%-.64s' à la ligne %d"
- ger "%s bei '%-.80s' in Zeile %d"
- greek "%s ðëçóßïí '%-.80s' óôç ãñáììÞ %d"
- hun "A %s a '%-.80s'-hez kozeli a %d sorban"
- ita "%s vicino a '%-.80s' linea %d"
- jpn "%s : '%-.80s' ÉÕ¶á : %d ¹ÔÌÜ"
- kor "'%-.64s' ¿¡·¯ °°À¾´Ï´Ù. ('%-.80s' ¸í·É¾î ¶óÀÎ %d)"
- nor "%s nær '%-.64s' på linje %d"
- norwegian-ny "%s attmed '%-.64s' på line %d"
- pol "%s obok '%-.64s' w linii %d"
- por "%s próximo a '%-.80s' na linha %d"
- rum "%s linga '%-.80s' pe linia %d"
- rus "%s ÏËÏÌÏ '%-.80s' ÎÁ ÓÔÒÏËÅ %d"
- serbian "'%s' u iskazu '%-.80s' na liniji %d"
- slo "%s blízko '%-.80s' na riadku %d"
- spa "%s cerca '%-.64s' en la linea %d"
- swe "%s nära '%-.64s' på rad %d"
- ukr "%s ¦ÌÑ '%-.80s' × ÓÔÒÏæ %d"
-ER_EMPTY_QUERY 42000
- cze "V-Býsledek dotazu je prázdný"
- dan "Forespørgsel var tom"
- nla "Query was leeg"
- eng "Query was empty"
- jps "Query ‚ª‹ó‚Å‚·.",
- est "Tühi päring"
- fre "Query est vide"
- ger "Leere Abfrage"
- greek "Ôï åñþôçìá (query) ðïõ èÝóáôå Þôáí êåíü"
- hun "Ures lekerdezes."
- ita "La query e` vuota"
- jpn "Query ¤¬¶õ¤Ç¤¹."
- kor "Äõ¸®°á°ú°¡ ¾ø½À´Ï´Ù."
- nor "Forespørsel var tom"
- norwegian-ny "Førespurnad var tom"
- pol "Zapytanie by³o puste"
- por "Consulta (query) estava vazia"
- rum "Query-ul a fost gol"
- rus "úÁÐÒÏÓ ÏËÁÚÁÌÓÑ ÐÕÓÔÙÍ"
- serbian "Upit je bio prazan"
- slo "Výsledok po¾iadavky bol prázdny"
- spa "La query estaba vacia"
- swe "Frågan var tom"
- ukr "ðÕÓÔÉÊ ÚÁÐÉÔ"
-ER_NONUNIQ_TABLE 42000 S1009
- cze "Nejednozna-Bèná tabulka/alias: '%-.64s'"
- dan "Tabellen/aliaset: '%-.64s' er ikke unikt"
- nla "Niet unieke waarde tabel/alias: '%-.64s'"
- eng "Not unique table/alias: '%-.64s'"
- jps "'%-.64s' ‚͈êˆÓ‚Ì table/alias –¼‚Å‚Í‚ ‚è‚Ü‚¹‚ñ",
- est "Ei ole unikaalne tabel/alias '%-.64s'"
- fre "Table/alias: '%-.64s' non unique"
- ger "Tabellenname/Alias '%-.64s' nicht eindeutig"
- greek "Áäýíáôç ç áíåýñåóç unique table/alias: '%-.64s'"
- hun "Nem egyedi tabla/alias: '%-.64s'"
- ita "Tabella/alias non unico: '%-.64s'"
- jpn "'%-.64s' ¤Ï°ì°Õ¤Î table/alias ̾¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
- kor "Unique ÇÏÁö ¾ÊÀº Å×À̺í/alias: '%-.64s'"
- nor "Ikke unikt tabell/alias: '%-.64s'"
- norwegian-ny "Ikkje unikt tabell/alias: '%-.64s'"
- pol "Tabela/alias nie s? unikalne: '%-.64s'"
- por "Tabela/alias '%-.64s' não única"
- rum "Tabela/alias: '%-.64s' nu este unic"
- rus "ðÏ×ÔÏÒÑÀÝÁÑÓÑ ÔÁÂÌÉÃÁ/ÐÓÅ×ÄÏÎÉÍ '%-.64s'"
- serbian "Tabela ili alias nisu bili jedinstveni: '%-.64s'"
- slo "Nie jednoznaèná tabuµka/alias: '%-.64s'"
- spa "Tabla/alias: '%-.64s' es no unica"
- swe "Icke unikt tabell/alias: '%-.64s'"
- ukr "îÅÕΦËÁÌØÎÁ ÔÁÂÌÉÃÑ/ÐÓÅ×ÄÏΦÍ: '%-.64s'"
-ER_INVALID_DEFAULT 42000 S1009
- cze "Chybn-Bá defaultní hodnota pro '%-.64s'"
- dan "Ugyldig standardværdi for '%-.64s'"
- nla "Foutieve standaard waarde voor '%-.64s'"
- eng "Invalid default value for '%-.64s'"
- est "Vigane vaikeväärtus '%-.64s' jaoks"
- fre "Valeur par défaut invalide pour '%-.64s'"
- ger "Fehlerhafter Vorgabewert (DEFAULT) für '%-.64s'"
- greek "ÅóöáëìÝíç ðñïêáèïñéóìÝíç ôéìÞ (default value) ãéá '%-.64s'"
- hun "Ervenytelen ertek: '%-.64s'"
- ita "Valore di default non valido per '%-.64s'"
- kor "'%-.64s'ÀÇ À¯È¿ÇÏÁö ¸øÇÑ µðÆúÆ® °ªÀ» »ç¿ëÇϼ̽À´Ï´Ù."
- nor "Ugyldig standardverdi for '%-.64s'"
- norwegian-ny "Ugyldig standardverdi for '%-.64s'"
- pol "Niew³a?ciwa warto?æ domy?lna dla '%-.64s'"
- por "Valor padrão (default) inválido para '%-.64s'"
- rum "Valoarea de default este invalida pentru '%-.64s'"
- rus "îÅËÏÒÒÅËÔÎÏÅ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ '%-.64s'"
- serbian "Loša default vrednost za '%-.64s'"
- slo "Chybná implicitná hodnota pre '%-.64s'"
- spa "Valor por defecto invalido para '%-.64s'"
- swe "Ogiltigt DEFAULT värde för '%-.64s'"
- ukr "îÅצÒÎÅ ÚÎÁÞÅÎÎÑ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ ÄÌÑ '%-.64s'"
-ER_MULTIPLE_PRI_KEY 42000 S1009
- cze "Definov-Báno více primárních klíèù"
- dan "Flere primærnøgler specificeret"
- nla "Meerdere primaire zoeksleutels gedefinieerd"
- eng "Multiple primary key defined"
- jps "•¡”‚Ì primary key ‚ª’è‹`‚³‚ê‚Ü‚µ‚½",
- est "Mitut primaarset võtit ei saa olla"
- fre "Plusieurs clefs primaires définies"
- ger "Mehrere Primärschlüssel (PRIMARY KEY) definiert"
- greek "Ðåñéóóüôåñá áðü Ýíá primary key ïñßóôçêáí"
- hun "Tobbszoros elsodleges kulcs definialas."
- ita "Definite piu` chiave primarie"
- jpn "Ê£¿ô¤Î primary key ¤¬ÄêµÁ¤µ¤ì¤Þ¤·¤¿"
- kor "Multiple primary key°¡ Á¤ÀǵǾî ÀÖ½¿"
- nor "Fleire primærnøkle spesifisert"
- norwegian-ny "Fleire primærnyklar spesifisert"
- pol "Zdefiniowano wiele kluczy podstawowych"
- por "Definida mais de uma chave primária"
- rum "Chei primare definite de mai multe ori"
- rus "õËÁÚÁÎÏ ÎÅÓËÏÌØËÏ ÐÅÒ×ÉÞÎÙÈ ËÌÀÞÅÊ"
- serbian "Definisani višestruki primarni kljuèevi"
- slo "Zadefinovaných viac primárnych kµúèov"
- spa "Multiples claves primarias definidas"
- swe "Flera PRIMARY KEY använda"
- ukr "ðÅÒ×ÉÎÎÏÇÏ ËÌÀÞÁ ×ÉÚÎÁÞÅÎÏ ÎÅÏÄÎÏÒÁÚÏ×Ï"
-ER_TOO_MANY_KEYS 42000 S1009
- cze "Zad-Báno pøíli¹ mnoho klíèù, je povoleno nejvíce %d klíèù"
- dan "For mange nøgler specificeret. Kun %d nøgler må bruges"
- nla "Teveel zoeksleutels gedefinieerd. Maximaal zijn %d zoeksleutels toegestaan"
- eng "Too many keys specified; max %d keys allowed"
- jps "key ‚ÌŽw’肪‘½‚·‚¬‚Ü‚·. key ‚ÍÅ‘å %d ‚Ü‚Å‚Å‚·",
- est "Liiga palju võtmeid. Maksimaalselt võib olla %d võtit"
- fre "Trop de clefs sont définies. Maximum de %d clefs alloué"
- ger "Zu viele Schlüssel definiert. Maximal %d Schlüssel erlaubt"
- greek "ÐÜñá ðïëëÜ key ïñßóèçêáí. Ôï ðïëý %d åðéôñÝðïíôáé"
- hun "Tul sok kulcs. Maximum %d kulcs engedelyezett."
- ita "Troppe chiavi. Sono ammesse max %d chiavi"
- jpn "key ¤Î»ØÄ꤬¿¤¹¤®¤Þ¤¹. key ¤ÏºÇÂç %d ¤Þ¤Ç¤Ç¤¹"
- kor "³Ê¹« ¸¹Àº Å°°¡ Á¤ÀǵǾî ÀÖÀ¾´Ï´Ù.. ÃÖ´ë %dÀÇ Å°°¡ °¡´ÉÇÔ"
- nor "For mange nøkler spesifisert. Maks %d nøkler tillatt"
- norwegian-ny "For mange nykler spesifisert. Maks %d nyklar tillatt"
- pol "Okre?lono zbyt wiele kluczy. Dostêpnych jest maksymalnie %d kluczy"
- por "Especificadas chaves demais. O máximo permitido são %d chaves"
- rum "Prea multe chei. Numarul de chei maxim este %d"
- rus "õËÁÚÁÎÏ ÓÌÉÛËÏÍ ÍÎÏÇÏ ËÌÀÞÅÊ. òÁÚÒÅÛÁÅÔÓÑ ÕËÁÚÙ×ÁÔØ ÎÅ ÂÏÌÅÅ %d ËÌÀÞÅÊ"
- serbian "Navedeno je previše kljuèeva. Maksimum %d kljuèeva je dozvoljeno"
- slo "Zadaných ríli¹ veµa kµúèov. Najviac %d kµúèov je povolených"
- spa "Demasiadas claves primarias declaradas. Un maximo de %d claves son permitidas"
- swe "För många nycklar använda. Man får ha högst %d nycklar"
- ukr "úÁÂÁÇÁÔÏ ËÌÀÞ¦× ÚÁÚÎÁÞÅÎÏ. äÏÚ×ÏÌÅÎÏ ÎŠ¦ÌØÛÅ %d ËÌÀÞ¦×"
-ER_TOO_MANY_KEY_PARTS 42000 S1009
- cze "Zad-Báno pøíli¹ mnoho èást klíèù, je povoleno nejvíce %d èástí"
- dan "For mange nøgledele specificeret. Kun %d dele må bruges"
- nla "Teveel zoeksleutel onderdelen gespecificeerd. Maximaal %d onderdelen toegestaan"
- eng "Too many key parts specified; max %d parts allowed"
- est "Võti koosneb liiga paljudest osadest. Maksimaalselt võib olla %d osa"
- fre "Trop de parties specifiées dans la clef. Maximum de %d parties"
- ger "Zu viele Teilschlüssel definiert. Maximal %d Teilschlüssel erlaubt"
- greek "ÐÜñá ðïëëÜ key parts ïñßóèçêáí. Ôï ðïëý %d åðéôñÝðïíôáé"
- hun "Tul sok kulcsdarabot definialt. Maximum %d resz engedelyezett"
- ita "Troppe parti di chiave specificate. Sono ammesse max %d parti"
- kor "³Ê¹« ¸¹Àº Å° ºÎºÐ(parts)µéÀÌ Á¤ÀǵǾî ÀÖÀ¾´Ï´Ù.. ÃÖ´ë %d ºÎºÐÀÌ °¡´ÉÇÔ"
- nor "For mange nøkkeldeler spesifisert. Maks %d deler tillatt"
- norwegian-ny "For mange nykkeldelar spesifisert. Maks %d delar tillatt"
- pol "Okre?lono zbyt wiele czê?ci klucza. Dostêpnych jest maksymalnie %d czê?ci"
- por "Especificadas partes de chave demais. O máximo permitido são %d partes"
- rum "Prea multe chei. Numarul de chei maxim este %d"
- rus "õËÁÚÁÎÏ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÞÁÓÔÅÊ ÓÏÓÔÁ×ÎÏÇÏ ËÌÀÞÁ. òÁÚÒÅÛÁÅÔÓÑ ÕËÁÚÙ×ÁÔØ ÎÅ ÂÏÌÅÅ %d ÞÁÓÔÅÊ"
- serbian "Navedeno je previše delova kljuèa. Maksimum %d delova je dozvoljeno"
- slo "Zadaných ríli¹ veµa èastí kµúèov. Je povolených najviac %d èastí"
- spa "Demasiadas partes de clave declaradas. Un maximo de %d partes son permitidas"
- swe "För många nyckeldelar använda. Man får ha högst %d nyckeldelar"
- ukr "úÁÂÁÇÁÔÏ ÞÁÓÔÉÎ ËÌÀÞÁ ÚÁÚÎÁÞÅÎÏ. äÏÚ×ÏÌÅÎÏ ÎŠ¦ÌØÛÅ %d ÞÁÓÔÉÎ"
-ER_TOO_LONG_KEY 42000 S1009
- cze "Zadan-Bý klíè byl pøíli¹ dlouhý, nejvìt¹í délka klíèe je %d"
- dan "Specificeret nøgle var for lang. Maksimal nøglelængde er %d"
- nla "Gespecificeerde zoeksleutel was te lang. De maximale lengte is %d"
- eng "Specified key was too long; max key length is %d bytes"
- jps "key ‚ª’·‚·‚¬‚Ü‚·. key ‚Ì’·‚³‚ÍÅ‘å %d ‚Å‚·",
- est "Võti on liiga pikk. Maksimaalne võtmepikkus on %d"
- fre "La clé est trop longue. Longueur maximale: %d"
- ger "Schlüssel ist zu lang. Die maximale Schlüssellänge beträgt %d"
- greek "Ôï êëåéäß ðïõ ïñßóèçêå åßíáé ðïëý ìåãÜëï. Ôï ìÝãéóôï ìÞêïò åßíáé %d"
- hun "A megadott kulcs tul hosszu. Maximalis kulcshosszusag: %d"
- ita "La chiave specificata e` troppo lunga. La max lunghezza della chiave e` %d"
- jpn "key ¤¬Ä¹¤¹¤®¤Þ¤¹. key ¤ÎŤµ¤ÏºÇÂç %d ¤Ç¤¹"
- kor "Á¤ÀÇµÈ Å°°¡ ³Ê¹« ±é´Ï´Ù. ÃÖ´ë Å°ÀÇ ±æÀÌ´Â %dÀÔ´Ï´Ù."
- nor "Spesifisert nøkkel var for lang. Maks nøkkellengde er is %d"
- norwegian-ny "Spesifisert nykkel var for lang. Maks nykkellengde er %d"
- pol "Zdefinowany klucz jest zbyt d³ugi. Maksymaln? d³ugo?ci? klucza jest %d"
- por "Chave especificada longa demais. O comprimento de chave máximo permitido é %d"
- rum "Cheia specificata este prea lunga. Marimea maxima a unei chei este de %d"
- rus "õËÁÚÁÎ ÓÌÉÛËÏÍ ÄÌÉÎÎÙÊ ËÌÀÞ. íÁËÓÉÍÁÌØÎÁÑ ÄÌÉÎÁ ËÌÀÞÁ ÓÏÓÔÁ×ÌÑÅÔ %d ÂÁÊÔ"
- serbian "Navedeni kljuè je predug. Maksimalna dužina kljuèa je %d"
- slo "Zadaný kµúè je príli¹ dlhý, najväè¹ia då¾ka kµúèa je %d"
- spa "Declaracion de clave demasiado larga. La maxima longitud de clave es %d"
- swe "För lång nyckel. Högsta tillåtna nyckellängd är %d"
- ukr "úÁÚÎÁÞÅÎÉÊ ËÌÀÞ ÚÁÄÏ×ÇÉÊ. îÁʦÌØÛÁ ÄÏ×ÖÉÎÁ ËÌÀÞÁ %d ÂÁÊÔ¦×"
-ER_KEY_COLUMN_DOES_NOT_EXITS 42000 S1009
- cze "Kl-Bíèový sloupec '%-.64s' v tabulce neexistuje"
- dan "Nøglefeltet '%-.64s' eksisterer ikke i tabellen"
- nla "Zoeksleutel kolom '%-.64s' bestaat niet in tabel"
- eng "Key column '%-.64s' doesn't exist in table"
- jps "Key column '%-.64s' ‚ªƒe[ƒuƒ‹‚É‚ ‚è‚Ü‚¹‚ñ.",
- est "Võtme tulp '%-.64s' puudub tabelis"
- fre "La clé '%-.64s' n'existe pas dans la table"
- ger "In der Tabelle gibt es kein Schlüsselfeld '%-.64s'"
- greek "Ôï ðåäßï êëåéäß '%-.64s' äåí õðÜñ÷åé óôïí ðßíáêá"
- hun "A(z) '%-.64s'kulcsoszlop nem letezik a tablaban"
- ita "La colonna chiave '%-.64s' non esiste nella tabella"
- jpn "Key column '%-.64s' ¤¬¥Æ¡¼¥Ö¥ë¤Ë¤¢¤ê¤Þ¤»¤ó."
- kor "Key Ä®·³ '%-.64s'´Â Å×ÀÌºí¿¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."
- nor "Nøkkel felt '%-.64s' eksiterer ikke i tabellen"
- norwegian-ny "Nykkel kolonne '%-.64s' eksiterar ikkje i tabellen"
- pol "Kolumna '%-.64s' zdefiniowana w kluczu nie istnieje w tabeli"
- por "Coluna chave '%-.64s' não existe na tabela"
- rum "Coloana cheie '%-.64s' nu exista in tabela"
- rus "ëÌÀÞÅ×ÏÊ ÓÔÏÌÂÅà '%-.64s' × ÔÁÂÌÉÃÅ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "Kljuèna kolona '%-.64s' ne postoji u tabeli"
- slo "Kµúèový ståpec '%-.64s' v tabuµke neexistuje"
- spa "La columna clave '%-.64s' no existe en la tabla"
- swe "Nyckelkolumn '%-.64s' finns inte"
- ukr "ëÌÀÞÏ×ÉÊ ÓÔÏ×ÂÅÃØ '%-.64s' ÎÅ ¦ÓÎÕ¤ Õ ÔÁÂÌÉæ"
-ER_BLOB_USED_AS_KEY 42000 S1009
- cze "Blob sloupec '%-.64s' nem-Bù¾e být pou¾it jako klíè"
- dan "BLOB feltet '%-.64s' kan ikke bruges ved specifikation af indeks"
- nla "BLOB kolom '%-.64s' kan niet gebruikt worden bij zoeksleutel specificatie"
- eng "BLOB column '%-.64s' can't be used in key specification with the used table type"
- est "BLOB-tüüpi tulpa '%-.64s' ei saa kasutada võtmena"
- fre "Champ BLOB '%-.64s' ne peut être utilisé dans une clé"
- ger "BLOB-Feld '%-.64s' kann beim verwendeten Tabellentyp nicht als Schlüssel verwendet werden"
- greek "Ðåäßï ôýðïõ Blob '%-.64s' äåí ìðïñåß íá ÷ñçóéìïðïéçèåß óôïí ïñéóìü åíüò êëåéäéïý (key specification)"
- hun "Blob objektum '%-.64s' nem hasznalhato kulcskent"
- ita "La colonna BLOB '%-.64s' non puo` essere usata nella specifica della chiave"
- kor "BLOB Ä®·³ '%-.64s'´Â Å° Á¤ÀÇ¿¡¼­ »ç¿ëµÉ ¼ö ¾ø½À´Ï´Ù."
- nor "Blob felt '%-.64s' kan ikke brukes ved spesifikasjon av nøkler"
- norwegian-ny "Blob kolonne '%-.64s' kan ikkje brukast ved spesifikasjon av nyklar"
- pol "Kolumna typu Blob '%-.64s' nie mo¿e byæ u¿yta w specyfikacji klucza"
- por "Coluna BLOB '%-.64s' não pode ser utilizada na especificação de chave para o tipo de tabela usado"
- rum "Coloana de tip BLOB '%-.64s' nu poate fi folosita in specificarea cheii cu tipul de tabla folosit"
- rus "óÔÏÌÂÅà ÔÉÐÁ BLOB '%-.64s' ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ËÁË ÚÎÁÞÅÎÉÅ ËÌÀÞÁ × ÔÁÂÌÉÃÅ ÔÁËÏÇÏ ÔÉÐÁ"
- serbian "BLOB kolona '%-.64s' ne može biti upotrebljena za navoðenje kljuèa sa tipom tabele koji se trenutno koristi"
- slo "Blob pole '%-.64s' nemô¾e by» pou¾ité ako kµúè"
- spa "La columna Blob '%-.64s' no puede ser usada en una declaracion de clave"
- swe "En BLOB '%-.64s' kan inte vara nyckel med den använda tabelltypen"
- ukr "BLOB ÓÔÏ×ÂÅÃØ '%-.64s' ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÏÒÉÓÔÁÎÉÊ Õ ×ÉÚÎÁÞÅÎΦ ËÌÀÞÁ × ÃØÏÍÕ ÔÉЦ ÔÁÂÌÉæ"
-ER_TOO_BIG_FIELDLENGTH 42000 S1009
- cze "P-Bøíli¹ velká délka sloupce '%-.64s' (nejvíce %d). Pou¾ijte BLOB"
- dan "For stor feltlængde for kolonne '%-.64s' (maks = %d). Brug BLOB i stedet"
- nla "Te grote kolomlengte voor '%-.64s' (max = %d). Maak hiervoor gebruik van het type BLOB"
- eng "Column length too big for column '%-.64s' (max = %d); use BLOB or TEXT instead"
- jps "column '%-.64s' ‚Í,Šm•Û‚·‚é column ‚Ì‘å‚«‚³‚ª‘½‚·‚¬‚Ü‚·. (Å‘å %d ‚Ü‚Å). BLOB ‚ð‚©‚í‚è‚ÉŽg—p‚µ‚Ä‚­‚¾‚³‚¢.",
- est "Tulba '%-.64s' pikkus on liiga pikk (maksimaalne pikkus: %d). Kasuta BLOB väljatüüpi"
- fre "Champ '%-.64s' trop long (max = %d). Utilisez un BLOB"
- ger "Feldlänge für Feld '%-.64s' zu groß (maximal %d). BLOB- oder TEXT-Spaltentyp verwenden!"
- greek "Ðïëý ìåãÜëï ìÞêïò ãéá ôï ðåäßï '%-.64s' (max = %d). Ðáñáêáëþ ÷ñçóéìïðïéåßóôå ôïí ôýðï BLOB"
- hun "A(z) '%-.64s' oszlop tul hosszu. (maximum = %d). Hasznaljon BLOB tipust inkabb."
- ita "La colonna '%-.64s' e` troppo grande (max=%d). Utilizza un BLOB."
- jpn "column '%-.64s' ¤Ï,³ÎÊݤ¹¤ë column ¤ÎÂ礭¤µ¤¬Â¿¤¹¤®¤Þ¤¹. (ºÇÂç %d ¤Þ¤Ç). BLOB ¤ò¤«¤ï¤ê¤Ë»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤."
- kor "Ä®·³ '%-.64s'ÀÇ Ä®·³ ±æÀÌ°¡ ³Ê¹« ±é´Ï´Ù (ÃÖ´ë = %d). ´ë½Å¿¡ BLOB¸¦ »ç¿ëÇϼ¼¿ä."
- nor "For stor nøkkellengde for kolonne '%-.64s' (maks = %d). Bruk BLOB istedenfor"
- norwegian-ny "For stor nykkellengde for felt '%-.64s' (maks = %d). Bruk BLOB istadenfor"
- pol "Zbyt du¿a d³ugo?æ kolumny '%-.64s' (maks. = %d). W zamian u¿yj typu BLOB"
- por "Comprimento da coluna '%-.64s' grande demais (max = %d); use BLOB em seu lugar"
- rum "Lungimea coloanei '%-.64s' este prea lunga (maximum = %d). Foloseste BLOB mai bine"
- rus "óÌÉÛËÏÍ ÂÏÌØÛÁÑ ÄÌÉÎÁ ÓÔÏÌÂÃÁ '%-.64s' (ÍÁËÓÉÍÕÍ = %d). éÓÐÏÌØÚÕÊÔÅ ÔÉÐ BLOB ÉÌÉ TEXT ×ÍÅÓÔÏ ÔÅËÕÝÅÇÏ"
- serbian "Previše podataka za kolonu '%-.64s' (maksimum je %d). Upotrebite BLOB polje"
- slo "Príli¹ veµká då¾ka pre pole '%-.64s' (maximum = %d). Pou¾ite BLOB"
- spa "Longitud de columna demasiado grande para la columna '%-.64s' (maximo = %d).Usar BLOB en su lugar"
- swe "För stor kolumnlängd angiven för '%-.64s' (max= %d). Använd en BLOB instället"
- ukr "úÁÄÏ×ÇÁ ÄÏ×ÖÉÎÁ ÓÔÏ×ÂÃÑ '%-.64s' (max = %d). ÷ÉËÏÒÉÓÔÁÊÔÅ ÔÉÐ BLOB"
-ER_WRONG_AUTO_KEY 42000 S1009
- cze "M-Bù¾ete mít pouze jedno AUTO pole a to musí být definováno jako klíè"
- dan "Der kan kun specificeres eet AUTO_INCREMENT-felt, og det skal være indekseret"
- nla "Er kan slechts 1 autofield zijn en deze moet als zoeksleutel worden gedefinieerd."
- eng "Incorrect table definition; there can be only one auto column and it must be defined as a key"
- jps "ƒe[ƒuƒ‹‚Ì’è‹`‚ªˆá‚¢‚Ü‚·; there can be only one auto column and it must be defined as a key",
- est "Vigane tabelikirjeldus; Tabelis tohib olla üks auto_increment tüüpi tulp ning see peab olema defineeritud võtmena"
- fre "Un seul champ automatique est permis et il doit être indexé"
- ger "Falsche Tabellendefinition. Es darf nur eine AUTO_INCREMENT-Spalte geben, und diese muss als Schlüssel definiert werden"
- greek "Ìðïñåß íá õðÜñ÷åé ìüíï Ýíá auto field êáé ðñÝðåé íá Ý÷åé ïñéóèåß óáí key"
- hun "Csak egy auto mezo lehetseges, es azt kulcskent kell definialni."
- ita "Puo` esserci solo un campo AUTO e deve essere definito come chiave"
- jpn "¥Æ¡¼¥Ö¥ë¤ÎÄêµÁ¤¬°ã¤¤¤Þ¤¹; there can be only one auto column and it must be defined as a key"
- kor "ºÎÁ¤È®ÇÑ Å×À̺í Á¤ÀÇ; Å×À̺íÀº ÇϳªÀÇ auto Ä®·³ÀÌ Á¸ÀçÇÏ°í Å°·Î Á¤ÀǵǾîÁ®¾ß ÇÕ´Ï´Ù."
- nor "Bare ett auto felt kan være definert som nøkkel."
- norwegian-ny "Bare eitt auto felt kan være definert som nøkkel."
- pol "W tabeli mo¿e byæ tylko jedno pole auto i musi ono byæ zdefiniowane jako klucz"
- por "Definição incorreta de tabela. Somente é permitido um único campo auto-incrementado e ele tem que ser definido como chave"
- rum "Definitia tabelei este incorecta; Nu pot fi mai mult de o singura coloana de tip auto si aceasta trebuie definita ca cheie"
- rus "îÅËÏÒÒÅËÔÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÔÁÂÌÉÃÙ: ÍÏÖÅÔ ÓÕÝÅÓÔ×Ï×ÁÔØ ÔÏÌØËÏ ÏÄÉÎ Á×ÔÏÉÎËÒÅÍÅÎÔÎÙÊ ÓÔÏÌÂÅÃ, É ÏÎ ÄÏÌÖÅÎ ÂÙÔØ ÏÐÒÅÄÅÌÅÎ ËÁË ËÌÀÞ"
- serbian "Pogrešna definicija tabele; U tabeli može postojati samo jedna 'AUTO' kolona i ona mora biti istovremeno definisana kao kolona kljuèa"
- slo "Mô¾ete ma» iba jedno AUTO pole a to musí by» definované ako kµúè"
- spa "Puede ser solamente un campo automatico y este debe ser definido como una clave"
- swe "Det får finnas endast ett AUTO_INCREMENT-fält och detta måste vara en nyckel"
- ukr "îÅצÒÎÅ ×ÉÚÎÁÞÅÎÎÑ ÔÁÂÌÉæ; íÏÖÅ ÂÕÔÉ ÌÉÛÅ ÏÄÉÎ Á×ÔÏÍÁÔÉÞÎÉÊ ÓÔÏ×ÂÅÃØ, ÝÏ ÐÏ×ÉÎÅÎ ÂÕÔÉ ×ÉÚÎÁÞÅÎÉÊ ÑË ËÌÀÞ"
-ER_READY
- cze "%s: p-Bøipraven na spojení"
- dan "%s: klar til tilslutninger"
- nla "%s: klaar voor verbindingen"
- eng "%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d"
- jps "%s: €”õŠ®—¹",
- est "%s: ootab ühendusi"
- fre "%s: Prêt pour des connections"
- ger "%-.64s: Bereit für Verbindungen.\nVersion: '%2' Socket: '%s' Port: %d"
- greek "%s: óå áíáìïíÞ óõíäÝóåùí"
- hun "%s: kapcsolatra kesz"
- ita "%s: Pronto per le connessioni\n"
- jpn "%s: ½àÈ÷´°Î»"
- kor "%s: ¿¬°á ÁغñÁßÀÔ´Ï´Ù"
- nor "%s: klar for tilkoblinger"
- norwegian-ny "%s: klar for tilkoblingar"
- pol "%s: gotowe do po³?czenia"
- por "%s: Pronto para conexões"
- rum "%s: sint gata pentru conectii"
- rus "%s: çÏÔÏ× ÐÒÉÎÉÍÁÔØ ÓÏÅÄÉÎÅÎÉÑ.\n÷ÅÒÓÉÑ: '%s' ÓÏËÅÔ: '%s' ÐÏÒÔ: %d %s"
- serbian "%s: Spreman za konekcije\n"
- slo "%s: pripravený na spojenie"
- spa "%s: preparado para conexiones"
- swe "%s: klar att ta emot klienter"
- ukr "%s: çÏÔÏ×ÉÊ ÄÌÑ Ú'¤ÄÎÁÎØ!"
-ER_NORMAL_SHUTDOWN
- cze "%s: norm-Bální ukonèení\n"
- dan "%s: Normal nedlukning\n"
- nla "%s: Normaal afgesloten \n"
- eng "%s: Normal shutdown\n"
- est "%s: MySQL lõpetas\n"
- fre "%s: Arrêt normal du serveur\n"
- ger "%-.64s: Normal heruntergefahren\n"
- greek "%s: ÖõóéïëïãéêÞ äéáäéêáóßá shutdown\n"
- hun "%s: Normal leallitas\n"
- ita "%s: Shutdown normale\n"
- kor "%s: Á¤»óÀûÀÎ shutdown\n"
- nor "%s: Normal avslutning\n"
- norwegian-ny "%s: Normal nedkopling\n"
- pol "%s: Standardowe zakoñczenie dzia³ania\n"
- por "%s: 'Shutdown' normal\n"
- rum "%s: Terminare normala\n"
- rus "%s: ëÏÒÒÅËÔÎÁÑ ÏÓÔÁÎÏ×ËÁ\n"
- serbian "%s: Normalno gašenje\n"
- slo "%s: normálne ukonèenie\n"
- spa "%s: Apagado normal\n"
- swe "%s: Normal avslutning\n"
- ukr "%s: îÏÒÍÁÌØÎÅ ÚÁ×ÅÒÛÅÎÎÑ\n"
-ER_GOT_SIGNAL
- cze "%s: p-Bøijat signal %d, konèím\n"
- dan "%s: Fangede signal %d. Afslutter!!\n"
- nla "%s: Signaal %d. Systeem breekt af!\n"
- eng "%s: Got signal %d. Aborting!\n"
- jps "%s: Got signal %d. ’†’f!\n",
- est "%s: sain signaali %d. Lõpetan!\n"
- fre "%s: Reçu le signal %d. Abandonne!\n"
- ger "%-.64s: Signal %d erhalten. Abbruch!\n"
- greek "%s: ÅëÞöèç ôï ìÞíõìá %d. Ç äéáäéêáóßá åãêáôáëåßðåôáé!\n"
- hun "%s: %d jelzes. Megszakitva!\n"
- ita "%s: Ricevuto segnale %d. Interruzione!\n"
- jpn "%s: Got signal %d. ̾̂!\n"
- kor "%s: %d ½ÅÈ£°¡ µé¾î¿ÔÀ½. ÁßÁö!\n"
- nor "%s: Oppdaget signal %d. Avslutter!\n"
- norwegian-ny "%s: Oppdaga signal %d. Avsluttar!\n"
- pol "%s: Otrzymano sygna³ %d. Koñczenie dzia³ania!\n"
- por "%s: Obteve sinal %d. Abortando!\n"
- rum "%s: Semnal %d obtinut. Aborting!\n"
- rus "%s: ðÏÌÕÞÅÎ ÓÉÇÎÁÌ %d. ðÒÅËÒÁÝÁÅÍ!\n"
- serbian "%s: Dobio signal %d. Prekidam!\n"
- slo "%s: prijatý signál %d, ukonèenie (Abort)!\n"
- spa "%s: Recibiendo signal %d. Abortando!\n"
- swe "%s: Fick signal %d. Avslutar!\n"
- ukr "%s: ïÔÒÉÍÁÎÏ ÓÉÇÎÁÌ %d. ðÅÒÅÒÉ×ÁÀÓØ!\n"
-ER_SHUTDOWN_COMPLETE
- cze "%s: ukon-Bèení práce hotovo\n"
- dan "%s: Server lukket\n"
- nla "%s: Afsluiten afgerond\n"
- eng "%s: Shutdown complete\n"
- jps "%s: Shutdown Š®—¹\n",
- est "%s: Lõpp\n"
- fre "%s: Arrêt du serveur terminé\n"
- ger "%-.64s: Herunterfahren beendet\n"
- greek "%s: Ç äéáäéêáóßá Shutdown ïëïêëçñþèçêå\n"
- hun "%s: A leallitas kesz\n"
- ita "%s: Shutdown completato\n"
- jpn "%s: Shutdown ´°Î»\n"
- kor "%s: Shutdown ÀÌ ¿Ï·áµÊ!\n"
- nor "%s: Avslutning komplett\n"
- norwegian-ny "%s: Nedkopling komplett\n"
- pol "%s: Zakoñczenie dzia³ania wykonane\n"
- por "%s: 'Shutdown' completo\n"
- rum "%s: Terminare completa\n"
- rus "%s: ïÓÔÁÎÏ×ËÁ ÚÁ×ÅÒÛÅÎÁ\n"
- serbian "%s: Gašenje završeno\n"
- slo "%s: práca ukonèená\n"
- spa "%s: Apagado completado\n"
- swe "%s: Avslutning klar\n"
- ukr "%s: òÏÂÏÔÕ ÚÁ×ÅÒÛÅÎÏ\n"
-ER_FORCING_CLOSE 08S01
- cze "%s: n-Básilné uzavøení threadu %ld u¾ivatele '%-.64s'\n"
- dan "%s: Forceret nedlukning af tråd: %ld bruger: '%-.64s'\n"
- nla "%s: Afsluiten afgedwongen van thread %ld gebruiker: '%-.64s'\n"
- eng "%s: Forcing close of thread %ld user: '%-.32s'\n"
- jps "%s: ƒXƒŒƒbƒh %ld ‹­§I—¹ user: '%-.64s'\n",
- est "%s: Sulgen jõuga lõime %ld kasutaja: '%-.32s'\n"
- fre "%s: Arrêt forcé de la tâche (thread) %ld utilisateur: '%-.64s'\n"
- ger "%s: Thread %ld zwangsweise beendet. Benutzer: '%-.32s'\n"
- greek "%s: Ôï thread èá êëåßóåé %ld user: '%-.64s'\n"
- hun "%s: A(z) %ld thread kenyszeritett zarasa. Felhasznalo: '%-.64s'\n"
- ita "%s: Forzata la chiusura del thread %ld utente: '%-.64s'\n"
- jpn "%s: ¥¹¥ì¥Ã¥É %ld ¶¯À©½ªÎ» user: '%-.64s'\n"
- kor "%s: thread %ldÀÇ °­Á¦ Á¾·á user: '%-.64s'\n"
- nor "%s: Påtvinget avslutning av tråd %ld bruker: '%-.64s'\n"
- norwegian-ny "%s: Påtvinga avslutning av tråd %ld brukar: '%-.64s'\n"
- pol "%s: Wymuszenie zamkniêcia w?tku %ld u¿ytkownik: '%-.64s'\n"
- por "%s: Forçando finalização da 'thread' %ld - usuário '%-.32s'\n"
- rum "%s: Terminare fortata a thread-ului %ld utilizatorului: '%-.32s'\n"
- rus "%s: ðÒÉÎÕÄÉÔÅÌØÎÏ ÚÁËÒÙ×ÁÅÍ ÐÏÔÏË %ld ÐÏÌØÚÏ×ÁÔÅÌÑ: '%-.32s'\n"
- serbian "%s: Usiljeno gašenje thread-a %ld koji pripada korisniku: '%-.32s'\n"
- slo "%s: násilné ukonèenie vlákna %ld u¾ívateµa '%-.64s'\n"
- spa "%s: Forzando a cerrar el thread %ld usuario: '%-.64s'\n"
- swe "%s: Stänger av tråd %ld; användare: '%-.64s'\n"
- ukr "%s: ðÒÉÓËÏÒÀÀ ÚÁËÒÉÔÔÑ Ç¦ÌËÉ %ld ËÏÒÉÓÔÕ×ÁÞÁ: '%-.32s'\n"
-ER_IPSOCK_ERROR 08S01
- cze "Nemohu vytvo-Bøit IP socket"
- dan "Kan ikke oprette IP socket"
- nla "Kan IP-socket niet openen"
- eng "Can't create IP socket"
- jps "IP socket ‚ªì‚ê‚Ü‚¹‚ñ",
- est "Ei suuda luua IP socketit"
- fre "Ne peut créer la connection IP (socket)"
- ger "Kann IP-Socket nicht erzeugen"
- greek "Äåí åßíáé äõíáôÞ ç äçìéïõñãßá IP socket"
- hun "Az IP socket nem hozhato letre"
- ita "Impossibile creare il socket IP"
- jpn "IP socket ¤¬ºî¤ì¤Þ¤»¤ó"
- kor "IP ¼ÒÄÏÀ» ¸¸µéÁö ¸øÇß½À´Ï´Ù."
- nor "Kan ikke opprette IP socket"
- norwegian-ny "Kan ikkje opprette IP socket"
- pol "Nie mo¿na stworzyæ socket'u IP"
- por "Não pode criar o soquete IP"
- rum "Nu pot crea IP socket"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ IP-ÓÏËÅÔ"
- serbian "Ne mogu da kreiram IP socket"
- slo "Nemô¾em vytvori» IP socket"
- spa "No puedo crear IP socket"
- swe "Kan inte skapa IP-socket"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ IP ÒÏÚ'¤Í"
-ER_NO_SUCH_INDEX 42S12 S1009
- cze "Tabulka '%-.64s' nem-Bá index odpovídající CREATE INDEX. Vytvoøte tabulku znovu"
- dan "Tabellen '%-.64s' har ikke den nøgle, som blev brugt i CREATE INDEX. Genopret tabellen"
- nla "Tabel '%-.64s' heeft geen INDEX zoals deze gemaakt worden met CREATE INDEX. Maak de tabel opnieuw"
- eng "Table '%-.64s' has no index like the one used in CREATE INDEX; recreate the table"
- jps "Table '%-.64s' ‚Í‚»‚̂悤‚È index ‚ðŽ‚Á‚Ä‚¢‚Ü‚¹‚ñ(CREATE INDEX ŽÀsŽž‚ÉŽw’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ). ƒe[ƒuƒ‹‚ðì‚è’¼‚µ‚Ä‚­‚¾‚³‚¢",
- est "Tabelil '%-.64s' puuduvad võtmed. Loo tabel uuesti"
- fre "La table '%-.64s' n'a pas d'index comme celle utilisée dans CREATE INDEX. Recréez la table"
- ger "Tabelle '%-.64s' besitzt keinen wie den in CREATE INDEX verwendeten Index. Tabelle neu anlegen"
- greek "Ï ðßíáêáò '%-.64s' äåí Ý÷åé åõñåôÞñéï (index) óáí áõôü ðïõ ÷ñçóéìïðïéåßôå óôçí CREATE INDEX. Ðáñáêáëþ, îáíáäçìéïõñãÞóôå ôïí ðßíáêá"
- hun "A(z) '%-.64s' tablahoz nincs meg a CREATE INDEX altal hasznalt index. Alakitsa at a tablat"
- ita "La tabella '%-.64s' non ha nessun indice come quello specificatato dalla CREATE INDEX. Ricrea la tabella"
- jpn "Table '%-.64s' ¤Ï¤½¤Î¤è¤¦¤Ê index ¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó(CREATE INDEX ¼Â¹Ô»þ¤Ë»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó). ¥Æ¡¼¥Ö¥ë¤òºî¤êľ¤·¤Æ¤¯¤À¤µ¤¤"
- kor "Å×À̺í '%-.64s'´Â À妽º¸¦ ¸¸µéÁö ¾Ê¾Ò½À´Ï´Ù. alter Å×À̺í¸í·ÉÀ» ÀÌ¿ëÇÏ¿© Å×À̺íÀ» ¼öÁ¤Çϼ¼¿ä..."
- nor "Tabellen '%-.64s' har ingen index som den som er brukt i CREATE INDEX. Gjenopprett tabellen"
- norwegian-ny "Tabellen '%-.64s' har ingen index som den som er brukt i CREATE INDEX. Oprett tabellen på nytt"
- pol "Tabela '%-.64s' nie ma indeksu takiego jak w CREATE INDEX. Stwórz tabelê"
- por "Tabela '%-.64s' não possui um índice como o usado em CREATE INDEX. Recrie a tabela"
- rum "Tabela '%-.64s' nu are un index ca acela folosit in CREATE INDEX. Re-creeaza tabela"
- rus "÷ ÔÁÂÌÉÃÅ '%-.64s' ÎÅÔ ÔÁËÏÇÏ ÉÎÄÅËÓÁ, ËÁË × CREATE INDEX. óÏÚÄÁÊÔÅ ÔÁÂÌÉÃÕ ÚÁÎÏ×Ï"
- serbian "Tabela '%-.64s' nema isti indeks kao onaj upotrebljen pri komandi 'CREATE INDEX'. Napravite tabelu ponovo"
- slo "Tabuµka '%-.64s' nemá index zodpovedajúci CREATE INDEX. Vytvorte tabulku znova"
- spa "La tabla '%-.64s' no tiene indice como el usado en CREATE INDEX. Crea de nuevo la tabla"
- swe "Tabellen '%-.64s' har inget index som motsvarar det angivna i CREATE INDEX. Skapa om tabellen"
- ukr "ôÁÂÌÉÃÑ '%-.64s' ÍÁ¤ ¦ÎÄÅËÓ, ÝÏ ÎÅ ÓЦ×ÐÁÄÁ¤ Ú ×ËÁÚÁÎÎÉÍ Õ CREATE INDEX. óÔ×ÏÒ¦ÔØ ÔÁÂÌÉÃÀ ÚÎÏ×Õ"
-ER_WRONG_FIELD_TERMINATORS 42000 S1009
- cze "Argument separ-Bátoru polo¾ek nebyl oèekáván. Pøeètìte si manuál"
- dan "Felt adskiller er ikke som forventet, se dokumentationen"
- nla "De argumenten om velden te scheiden zijn anders dan verwacht. Raadpleeg de handleiding"
- eng "Field separator argument is not what is expected; check the manual"
- est "Väljade eraldaja erineb oodatust. Tutvu kasutajajuhendiga"
- fre "Séparateur de champs inconnu. Vérifiez dans le manuel"
- ger "Feldbegrenzer-Argument ist nicht in der erwarteten Form. Bitte im Handbuch nachlesen"
- greek "Ï äéá÷ùñéóôÞò ðåäßùí äåí åßíáé áõôüò ðïõ áíáìåíüôáí. Ðáñáêáëþ áíáôñÝîôå óôï manual"
- hun "A mezoelvalaszto argumentumok nem egyeznek meg a varttal. Nezze meg a kezikonyvben!"
- ita "L'argomento 'Field separator' non e` quello atteso. Controlla il manuale"
- kor "ÇÊµå ±¸ºÐÀÚ ÀμöµéÀÌ ¿ÏÀüÇÏÁö ¾Ê½À´Ï´Ù. ¸Þ´º¾óÀ» ã¾Æ º¸¼¼¿ä."
- nor "Felt skiller argumentene er ikke som forventet, se dokumentasjonen"
- norwegian-ny "Felt skiljer argumenta er ikkje som venta, sjå dokumentasjonen"
- pol "Nie oczekiwano separatora. Sprawd¥ podrêcznik"
- por "Argumento separador de campos não é o esperado. Cheque o manual"
- rum "Argumentul pentru separatorul de cimpuri este diferit de ce ma asteptam. Verifica manualul"
- rus "áÒÇÕÍÅÎÔ ÒÁÚÄÅÌÉÔÅÌÑ ÐÏÌÅÊ - ÎÅ ÔÏÔ, ËÏÔÏÒÙÊ ÏÖÉÄÁÌÓÑ. ïÂÒÁÝÁÊÔÅÓØ Ë ÄÏËÕÍÅÎÔÁÃÉÉ"
- serbian "Argument separatora polja nije ono što se oèekivalo. Proverite uputstvo MySQL server-a"
- slo "Argument oddeµovaè polí nezodpovedá po¾iadavkám. Skontrolujte v manuáli"
- spa "Los separadores de argumentos del campo no son los especificados. Comprueba el manual"
- swe "Fältseparatorerna är vad som förväntades. Kontrollera mot manualen"
- ukr "èÉÂÎÉÊ ÒÏÚĦÌÀ×ÁÞ ÐÏ̦×. ðÏÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁæÀ"
-ER_BLOBS_AND_NO_TERMINATED 42000 S1009
- cze "Nen-Bí mo¾né pou¾ít pevný rowlength s BLOBem. Pou¾ijte 'fields terminated by'."
- dan "Man kan ikke bruge faste feltlængder med BLOB. Brug i stedet 'fields terminated by'."
- nla "Bij het gebruik van BLOBs is het niet mogelijk om vaste rijlengte te gebruiken. Maak s.v.p. gebruik van 'fields terminated by'."
- eng "You can't use fixed rowlength with BLOBs; please use 'fields terminated by'"
- est "BLOB-tüüpi väljade olemasolul ei saa kasutada fikseeritud väljapikkust. Vajalik 'fields terminated by' määrang."
- fre "Vous ne pouvez utiliser des lignes de longueur fixe avec des BLOBs. Utiliser 'fields terminated by'."
- ger "Eine feste Zeilenlänge kann für BLOB-Felder nicht verwendet werden. Bitte 'fields terminated by' verwenden"
- greek "Äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå fixed rowlength óå BLOBs. Ðáñáêáëþ ÷ñçóéìïðïéåßóôå 'fields terminated by'."
- hun "Fix hosszusagu BLOB-ok nem hasznalhatok. Hasznalja a 'mezoelvalaszto jelet' ."
- ita "Non possono essere usate righe a lunghezza fissa con i BLOB. Usa 'FIELDS TERMINATED BY'."
- jpn "You can't use fixed rowlength with BLOBs; please use 'fields terminated by'."
- kor "BLOB·Î´Â °íÁ¤±æÀÌÀÇ lowlength¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. 'fields terminated by'¸¦ »ç¿ëÇϼ¼¿ä."
- nor "En kan ikke bruke faste feltlengder med BLOB. Vennlisgt bruk 'fields terminated by'."
- norwegian-ny "Ein kan ikkje bruke faste feltlengder med BLOB. Vennlisgt bruk 'fields terminated by'."
- pol "Nie mo¿na u¿yæ sta³ej d³ugo?ci wiersza z polami typu BLOB. U¿yj 'fields terminated by'."
- por "Você não pode usar comprimento de linha fixo com BLOBs. Por favor, use campos com comprimento limitado."
- rum "Nu poti folosi lungime de cimp fix pentru BLOB-uri. Foloseste 'fields terminated by'."
- rus "æÉËÓÉÒÏ×ÁÎÎÙÊ ÒÁÚÍÅÒ ÚÁÐÉÓÉ Ó ÐÏÌÑÍÉ ÔÉÐÁ BLOB ÉÓÐÏÌØÚÏ×ÁÔØ ÎÅÌØÚÑ, ÐÒÉÍÅÎÑÊÔÅ 'fields terminated by'"
- serbian "Ne možete koristiti fiksnu velièinu sloga kada imate BLOB polja. Molim koristite 'fields terminated by' opciju."
- slo "Nie je mo¾né pou¾i» fixnú då¾ku s BLOBom. Pou¾ite 'fields terminated by'."
- spa "No puedes usar longitudes de filas fijos con BLOBs. Por favor usa 'campos terminados por '."
- swe "Man kan inte använda fast radlängd med blobs. Använd 'fields terminated by'"
- ukr "îÅ ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÓÔÁÌÕ ÄÏ×ÖÉÎÕ ÓÔÒÏËÉ Ú BLOB. úËÏÒÉÓÔÁÊÔÅÓÑ 'fields terminated by'"
-ER_TEXTFILE_NOT_READABLE
- cze "Soubor '%-.64s' mus-Bí být v adresáøi databáze nebo èitelný pro v¹echny"
- dan "Filen '%-.64s' skal være i database-folderen og kunne læses af alle"
- nla "Het bestand '%-.64s' dient in de database directory voor the komen of leesbaar voor iedereen te zijn."
- eng "The file '%-.64s' must be in the database directory or be readable by all"
- jps "ƒtƒ@ƒCƒ‹ '%-.64s' ‚Í databse ‚Ì directory ‚É‚ ‚é‚©‘S‚Ẵ†[ƒU[‚ª“Ç‚ß‚é‚悤‚É‹–‰Â‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ.",
- est "Fail '%-.64s' peab asuma andmebaasi kataloogis või olema kõigile loetav"
- fre "Le fichier '%-.64s' doit être dans le répertoire de la base et lisible par tous"
- ger "Datei '%-.64s' muss im Datenbank-Verzeichnis vorhanden oder lesbar für alle sein"
- greek "Ôï áñ÷åßï '%-.64s' ðñÝðåé íá õðÜñ÷åé óôï database directory Þ íá ìðïñåß íá äéáâáóôåß áðü üëïõò"
- hun "A(z) '%-.64s'-nak az adatbazis konyvtarban kell lennie, vagy mindenki szamara olvashatonak"
- ita "Il file '%-.64s' deve essere nella directory del database e deve essere leggibile da tutti"
- jpn "¥Õ¥¡¥¤¥ë '%-.64s' ¤Ï databse ¤Î directory ¤Ë¤¢¤ë¤«Á´¤Æ¤Î¥æ¡¼¥¶¡¼¤¬Æɤá¤ë¤è¤¦¤Ëµö²Ä¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó."
- kor "'%-.64s' È­ÀÏ´Â µ¥ÀÌŸº£À̽º µð·ºÅ丮¿¡ Á¸ÀçÇϰųª ¸ðµÎ¿¡°Ô Àб⠰¡´ÉÇÏ¿©¾ß ÇÕ´Ï´Ù."
- nor "Filen '%-.64s' må være i database-katalogen for å være lesbar for alle"
- norwegian-ny "Filen '%-.64s' må være i database-katalogen for å være lesbar for alle"
- pol "Plik '%-.64s' musi znajdowaæ sie w katalogu bazy danych lub mieæ prawa czytania przez wszystkich"
- por "Arquivo '%-.64s' tem que estar no diretório do banco de dados ou ter leitura possível para todos"
- rum "Fisierul '%-.64s' trebuie sa fie in directorul bazei de data sau trebuie sa poata sa fie citit de catre toata lumea (verifica permisiile)"
- rus "æÁÊÌ '%-.64s' ÄÏÌÖÅÎ ÎÁÈÏÄÉÔØÓÑ × ÔÏÍ ÖÅ ËÁÔÁÌÏÇÅ, ÞÔÏ É ÂÁÚÁ ÄÁÎÎÙÈ, ÉÌÉ ÂÙÔØ ÏÂÝÅÄÏÓÔÕÐÎÙÍ ÄÌÑ ÞÔÅÎÉÑ"
- serbian "File '%-.64s' mora biti u direktorijumu gde su file-ovi baze i mora imati odgovarajuæa prava pristupa"
- slo "Súbor '%-.64s' musí by» v adresári databázy, alebo èitateµný pre v¹etkých"
- spa "El archivo '%-.64s' debe estar en el directorio de la base de datos o ser de lectura por todos"
- swe "Textfilen '%.64s' måste finnas i databasbiblioteket eller vara läsbar för alla"
- ukr "æÁÊÌ '%-.64s' ÐÏ×ÉÎÅÎ ÂÕÔÉ Õ ÔÅæ ÂÁÚÉ ÄÁÎÎÉÈ ÁÂÏ ÍÁÔÉ ×ÓÔÁÎÏ×ÌÅÎÅ ÐÒÁ×Ï ÎÁ ÞÉÔÁÎÎÑ ÄÌÑ ÕÓ¦È"
-ER_FILE_EXISTS_ERROR
- cze "Soubor '%-.64s' ji-B¾ existuje"
- dan "Filen '%-.64s' eksisterer allerede"
- nla "Het bestand '%-.64s' bestaat reeds"
- eng "File '%-.80s' already exists"
- jps "File '%-.64s' ‚ÍŠù‚É‘¶Ý‚µ‚Ü‚·",
- est "Fail '%-.80s' juba eksisteerib"
- fre "Le fichier '%-.64s' existe déjà"
- ger "Datei '%-.80s' bereits vorhanden"
- greek "Ôï áñ÷åßï '%-.64s' õðÜñ÷åé Þäç"
- hun "A '%-.64s' file mar letezik."
- ita "Il file '%-.64s' esiste gia`"
- jpn "File '%-.64s' ¤Ï´û¤Ë¸ºß¤·¤Þ¤¹"
- kor "'%-.64s' È­ÀÏÀº ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù."
- nor "Filen '%-.64s' eksisterte allerede"
- norwegian-ny "Filen '%-.64s' eksisterte allereide"
- pol "Plik '%-.64s' ju¿ istnieje"
- por "Arquivo '%-.80s' já existe"
- rum "Fisierul '%-.80s' exista deja"
- rus "æÁÊÌ '%-.80s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "File '%-.80s' veæ postoji"
- slo "Súbor '%-.64s' u¾ existuje"
- spa "El archivo '%-.64s' ya existe"
- swe "Filen '%-.64s' existerar redan"
- ukr "æÁÊÌ '%-.80s' ×ÖÅ ¦ÓÎÕ¤"
-ER_LOAD_INFO
- cze "Z-Báznamù: %ld Vymazáno: %ld Pøeskoèeno: %ld Varování: %ld"
- dan "Poster: %ld Fjernet: %ld Sprunget over: %ld Advarsler: %ld"
- nla "Records: %ld Verwijderd: %ld Overgeslagen: %ld Waarschuwingen: %ld"
- eng "Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld"
- jps "ƒŒƒR[ƒh”: %ld íœ: %ld Skipped: %ld Warnings: %ld",
- est "Kirjeid: %ld Kustutatud: %ld Vahele jäetud: %ld Hoiatusi: %ld"
- fre "Enregistrements: %ld Effacés: %ld Non traités: %ld Avertissements: %ld"
- ger "Datensätze: %ld Gelöscht: %ld Ausgelassen: %ld Warnungen: %ld"
- greek "ÅããñáöÝò: %ld ÄéáãñáöÝò: %ld ÐáñåêÜìöèçóáí: %ld ÐñïåéäïðïéÞóåéò: %ld"
- hun "Rekordok: %ld Torolve: %ld Skipped: %ld Warnings: %ld"
- ita "Records: %ld Cancellati: %ld Saltati: %ld Avvertimenti: %ld"
- jpn "¥ì¥³¡¼¥É¿ô: %ld ºï½ü: %ld Skipped: %ld Warnings: %ld"
- kor "·¹ÄÚµå: %ld°³ »èÁ¦: %ld°³ ½ºÅµ: %ld°³ °æ°í: %ld°³"
- nor "Poster: %ld Fjernet: %ld Hoppet over: %ld Advarsler: %ld"
- norwegian-ny "Poster: %ld Fjerna: %ld Hoppa over: %ld Åtvaringar: %ld"
- pol "Recordów: %ld Usuniêtych: %ld Pominiêtych: %ld Ostrze¿eñ: %ld"
- por "Registros: %ld - Deletados: %ld - Ignorados: %ld - Avisos: %ld"
- rum "Recorduri: %ld Sterse: %ld Sarite (skipped): %ld Atentionari (warnings): %ld"
- rus "úÁÐÉÓÅÊ: %ld õÄÁÌÅÎÏ: %ld ðÒÏÐÕÝÅÎÏ: %ld ðÒÅÄÕÐÒÅÖÄÅÎÉÊ: %ld"
- serbian "Slogova: %ld Izbrisano: %ld Preskoèeno: %ld Upozorenja: %ld"
- slo "Záznamov: %ld Zmazaných: %ld Preskoèených: %ld Varovania: %ld"
- spa "Registros: %ld Borrados: %ld Saltados: %ld Peligros: %ld"
- swe "Rader: %ld Bortagna: %ld Dubletter: %ld Varningar: %ld"
- ukr "úÁÐÉÓ¦×: %ld ÷ÉÄÁÌÅÎÏ: %ld ðÒÏÐÕÝÅÎÏ: %ld úÁÓÔÅÒÅÖÅÎØ: %ld"
-ER_ALTER_INFO
- cze "Z-Báznamù: %ld Zdvojených: %ld"
- dan "Poster: %ld Ens: %ld"
- nla "Records: %ld Dubbel: %ld"
- eng "Records: %ld Duplicates: %ld"
- jps "ƒŒƒR[ƒh”: %ld d•¡: %ld",
- est "Kirjeid: %ld Kattuvaid: %ld"
- fre "Enregistrements: %ld Doublons: %ld"
- ger "Datensätze: %ld Duplikate: %ld"
- greek "ÅããñáöÝò: %ld ÅðáíáëÞøåéò: %ld"
- hun "Rekordok: %ld Duplikalva: %ld"
- ita "Records: %ld Duplicati: %ld"
- jpn "¥ì¥³¡¼¥É¿ô: %ld ½ÅÊ£: %ld"
- kor "·¹ÄÚµå: %ld°³ Áߺ¹: %ld°³"
- nor "Poster: %ld Like: %ld"
- norwegian-ny "Poster: %ld Like: %ld"
- pol "Rekordów: %ld Duplikatów: %ld"
- por "Registros: %ld - Duplicados: %ld"
- rum "Recorduri: %ld Duplicate: %ld"
- rus "úÁÐÉÓÅÊ: %ld äÕÂÌÉËÁÔÏ×: %ld"
- serbian "Slogova: %ld Duplikata: %ld"
- slo "Záznamov: %ld Opakovaných: %ld"
- spa "Registros: %ld Duplicados: %ld"
- swe "Rader: %ld Dubletter: %ld"
- ukr "úÁÐÉÓ¦×: %ld äÕÂ̦ËÁÔ¦×: %ld"
-ER_WRONG_SUB_KEY
- cze "Chybn-Bá podèást klíèe -- není to øetìzec nebo je del¹í ne¾ délka èásti klíèe"
- dan "Forkert indeksdel. Den anvendte nøgledel er ikke en streng eller længden er større end nøglelængden"
- nla "Foutief sub-gedeelte van de zoeksleutel. De gebruikte zoeksleutel is geen onderdeel van een string of of de gebruikte lengte is langer dan de zoeksleutel"
- eng "Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys"
- est "Vigane võtme osa. Kasutatud võtmeosa ei ole string tüüpi, määratud pikkus on pikem kui võtmeosa või tabelihandler ei toeta seda tüüpi võtmeid"
- fre "Mauvaise sous-clef. Ce n'est pas un 'string' ou la longueur dépasse celle définie dans la clef"
- ger "Falscher Unterteilschlüssel. Der verwendete Schlüsselteil ist entweder kein String, die verwendete Länge ist länger als der Teilschlüssel oder die Speicher-Engine unterstützt keine Unterteilschlüssel"
- greek "ÅóöáëìÝíï sub part key. Ôï ÷ñçóéìïðïéïýìåíï key part äåí åßíáé string Þ ôï ìÞêïò ôïõ åßíáé ìåãáëýôåñï"
- hun "Rossz alkulcs. A hasznalt kulcsresz nem karaktersorozat vagy hosszabb, mint a kulcsresz"
- ita "Sotto-parte della chiave errata. La parte di chiave utilizzata non e` una stringa o la lunghezza e` maggiore della parte di chiave."
- jpn "Incorrect sub part key; the used key part isn't a string or the used length is longer than the key part"
- kor "ºÎÁ¤È®ÇÑ ¼­¹ö ÆÄÆ® Å°. »ç¿ëµÈ Å° ÆÄÆ®°¡ ½ºÆ®¸µÀÌ ¾Æ´Ï°Å³ª Å° ÆÄÆ®ÀÇ ±æÀÌ°¡ ³Ê¹« ±é´Ï´Ù."
- nor "Feil delnøkkel. Den brukte delnøkkelen er ikke en streng eller den oppgitte lengde er lengre enn nøkkel lengden"
- norwegian-ny "Feil delnykkel. Den brukte delnykkelen er ikkje ein streng eller den oppgitte lengda er lengre enn nykkellengden"
- pol "B³êdna podczê?æ klucza. U¿yta czê?æ klucza nie jest ³añcuchem lub u¿yta d³ugo?æ jest wiêksza ni¿ czê?æ klucza"
- por "Sub parte da chave incorreta. A parte da chave usada não é uma 'string' ou o comprimento usado é maior que parte da chave ou o manipulador de tabelas não suporta sub chaves únicas"
- rum "Componentul cheii este incorrect. Componentul folosit al cheii nu este un sir sau lungimea folosita este mai lunga decit lungimea cheii"
- rus "îÅËÏÒÒÅËÔÎÁÑ ÞÁÓÔØ ËÌÀÞÁ. éÓÐÏÌØÚÕÅÍÁÑ ÞÁÓÔØ ËÌÀÞÁ ÎÅ Ñ×ÌÑÅÔÓÑ ÓÔÒÏËÏÊ, ÕËÁÚÁÎÎÁÑ ÄÌÉÎÁ ÂÏÌØÛÅ, ÞÅÍ ÄÌÉÎÁ ÞÁÓÔÉ ËÌÀÞÁ, ÉÌÉ ÏÂÒÁÂÏÔÞÉË ÔÁÂÌÉÃÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÕÎÉËÁÌØÎÙÅ ÞÁÓÔÉ ËÌÀÞÁ"
- serbian "Pogrešan pod-kljuè dela kljuèa. Upotrebljeni deo kljuèa nije string, upotrebljena dužina je veæa od dela kljuèa ili handler tabela ne podržava jedinstvene pod-kljuèeve"
- slo "Incorrect sub part key; the used key part isn't a string or the used length is longer than the key part"
- spa "Parte de la clave es erronea. Una parte de la clave no es una cadena o la longitud usada es tan grande como la parte de la clave"
- swe "Felaktig delnyckel. Nyckeldelen är inte en sträng eller den angivna längden är längre än kolumnlängden"
- ukr "îÅצÒÎÁ ÞÁÓÔÉÎÁ ËÌÀÞÁ. ÷ÉËÏÒÉÓÔÁÎÁ ÞÁÓÔÉÎÁ ËÌÀÞÁ ÎÅ ¤ ÓÔÒÏËÏÀ, ÚÁÄÏ×ÇÁ ÁÂÏ ×ËÁÚ¦×ÎÉË ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕ¤ ÕΦËÁÌØÎÉÈ ÞÁÓÔÉÎ ËÌÀÞÅÊ"
-ER_CANT_REMOVE_ALL_FIELDS 42000
- cze "Nen-Bí mo¾né vymazat v¹echny polo¾ky s ALTER TABLE. Pou¾ijte DROP TABLE"
- dan "Man kan ikke slette alle felter med ALTER TABLE. Brug DROP TABLE i stedet."
- nla "Het is niet mogelijk alle velden te verwijderen met ALTER TABLE. Gebruik a.u.b. DROP TABLE hiervoor!"
- eng "You can't delete all columns with ALTER TABLE; use DROP TABLE instead"
- jps "ALTER TABLE ‚Å‘S‚Ä‚Ì column ‚Í휂ł«‚Ü‚¹‚ñ. DROP TABLE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢",
- est "ALTER TABLE kasutades ei saa kustutada kõiki tulpasid. Kustuta tabel DROP TABLE abil"
- fre "Vous ne pouvez effacer tous les champs avec ALTER TABLE. Utilisez DROP TABLE"
- ger "Mit ALTER TABLE können nicht alle Felder auf einmal gelöscht werden. Dafür DROP TABLE verwenden"
- greek "Äåí åßíáé äõíáôÞ ç äéáãñáöÞ üëùí ôùí ðåäßùí ìå ALTER TABLE. Ðáñáêáëþ ÷ñçóéìïðïéåßóôå DROP TABLE"
- hun "Az osszes mezo nem torolheto az ALTER TABLE-lel. Hasznalja a DROP TABLE-t helyette"
- ita "Non si possono cancellare tutti i campi con una ALTER TABLE. Utilizzare DROP TABLE"
- jpn "ALTER TABLE ¤ÇÁ´¤Æ¤Î column ¤Ïºï½ü¤Ç¤­¤Þ¤»¤ó. DROP TABLE ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤"
- kor "ALTER TABLE ¸í·ÉÀ¸·Î´Â ¸ðµç Ä®·³À» Áö¿ï ¼ö ¾ø½À´Ï´Ù. DROP TABLE ¸í·ÉÀ» ÀÌ¿ëÇϼ¼¿ä."
- nor "En kan ikke slette alle felt med ALTER TABLE. Bruk DROP TABLE isteden."
- norwegian-ny "Ein kan ikkje slette alle felt med ALTER TABLE. Bruk DROP TABLE istadenfor."
- pol "Nie mo¿na usun?æ wszystkich pól wykorzystuj?c ALTER TABLE. W zamian u¿yj DROP TABLE"
- por "Você não pode deletar todas as colunas com ALTER TABLE; use DROP TABLE em seu lugar"
- rum "Nu poti sterge toate coloanele cu ALTER TABLE. Foloseste DROP TABLE in schimb"
- rus "îÅÌØÚÑ ÕÄÁÌÉÔØ ×ÓÅ ÓÔÏÌÂÃÙ Ó ÐÏÍÏÝØÀ ALTER TABLE. éÓÐÏÌØÚÕÊÔÅ DROP TABLE"
- serbian "Ne možete da izbrišete sve kolone pomoæu komande 'ALTER TABLE'. Upotrebite komandu 'DROP TABLE' ako želite to da uradite"
- slo "One nemô¾em zmaza» all fields with ALTER TABLE; use DROP TABLE instead"
- spa "No puede borrar todos los campos con ALTER TABLE. Usa DROP TABLE para hacerlo"
- swe "Man kan inte radera alla fält med ALTER TABLE. Använd DROP TABLE istället"
- ukr "îÅ ÍÏÖÌÉ×Ï ×ÉÄÁÌÉÔÉ ×Ó¦ ÓÔÏ×Âæ ÚÁ ÄÏÐÏÍÏÇÏÀ ALTER TABLE. äÌÑ ÃØÏÇÏ ÓËÏÒÉÓÔÁÊÔÅÓÑ DROP TABLE"
-ER_CANT_DROP_FIELD_OR_KEY 42000
- cze "Nemohu zru-B¹it '%-.64s' (provést DROP). Zkontrolujte, zda neexistují záznamy/klíèe"
- dan "Kan ikke udføre DROP '%-.64s'. Undersøg om feltet/nøglen eksisterer."
- nla "Kan '%-.64s' niet weggooien. Controleer of het veld of de zoeksleutel daadwerkelijk bestaat."
- eng "Can't DROP '%-.64s'; check that column/key exists"
- jps "'%-.64s' ‚ð”jŠü‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½; check that column/key exists",
- est "Ei suuda kustutada '%-.64s'. Kontrolli kas tulp/võti eksisteerib"
- fre "Ne peut effacer (DROP) '%-.64s'. Vérifiez s'il existe"
- ger "Kann '%-.64s' nicht löschen. Existiert die Spalte oder der Schlüssel?"
- greek "Áäýíáôç ç äéáãñáöÞ (DROP) '%-.64s'. Ðáñáêáëþ åëÝãîôå áí ôï ðåäßï/êëåéäß õðÜñ÷åé"
- hun "A DROP '%-.64s' nem lehetseges. Ellenorizze, hogy a mezo/kulcs letezik-e"
- ita "Impossibile cancellare '%-.64s'. Controllare che il campo chiave esista"
- jpn "'%-.64s' ¤òÇË´þ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿; check that column/key exists"
- kor "'%-.64s'¸¦ DROPÇÒ ¼ö ¾ø½À´Ï´Ù. Ä®·³À̳ª Å°°¡ Á¸ÀçÇÏ´ÂÁö äũÇϼ¼¿ä."
- nor "Kan ikke DROP '%-.64s'. Undersøk om felt/nøkkel eksisterer."
- norwegian-ny "Kan ikkje DROP '%-.64s'. Undersøk om felt/nøkkel eksisterar."
- pol "Nie mo¿na wykonaæ operacji DROP '%-.64s'. Sprawd¥, czy to pole/klucz istnieje"
- por "Não se pode fazer DROP '%-.64s'. Confira se esta coluna/chave existe"
- rum "Nu pot sa DROP '%-.64s'. Verifica daca coloana/cheia exista"
- rus "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ (DROP) '%-.64s'. õÂÅÄÉÔÅÓØ ÞÔÏ ÓÔÏÌÂÅÃ/ËÌÀÞ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "Ne mogu da izvršim komandu drop 'DROP' na '%-.64s'. Proverite da li ta kolona (odnosno kljuè) postoji"
- slo "Nemô¾em zru¹i» (DROP) '%-.64s'. Skontrolujte, èi neexistujú záznamy/kµúèe"
- spa "No puedo ELIMINAR '%-.64s'. compuebe que el campo/clave existe"
- swe "Kan inte ta bort '%-.64s'. Kontrollera att fältet/nyckel finns"
- ukr "îÅ ÍÏÖÕ DROP '%-.64s'. ðÅÒÅצÒÔÅ, ÞÉ ÃÅÊ ÓÔÏ×ÂÅÃØ/ËÌÀÞ ¦ÓÎÕ¤"
-ER_INSERT_INFO
- cze "Z-Báznamù: %ld Zdvojených: %ld Varování: %ld"
- dan "Poster: %ld Ens: %ld Advarsler: %ld"
- nla "Records: %ld Dubbel: %ld Waarschuwing: %ld"
- eng "Records: %ld Duplicates: %ld Warnings: %ld"
- jps "ƒŒƒR[ƒh”: %ld d•¡”: %ld Warnings: %ld",
- est "Kirjeid: %ld Kattuvaid: %ld Hoiatusi: %ld"
- fre "Enregistrements: %ld Doublons: %ld Avertissements: %ld"
- ger "Datensätze: %ld Duplikate: %ld Warnungen: %ld"
- greek "ÅããñáöÝò: %ld ÅðáíáëÞøåéò: %ld ÐñïåéäïðïéÞóåéò: %ld"
- hun "Rekordok: %ld Duplikalva: %ld Warnings: %ld"
- ita "Records: %ld Duplicati: %ld Avvertimenti: %ld"
- jpn "¥ì¥³¡¼¥É¿ô: %ld ½ÅÊ£¿ô: %ld Warnings: %ld"
- kor "·¹ÄÚµå: %ld°³ Áߺ¹: %ld°³ °æ°í: %ld°³"
- nor "Poster: %ld Like: %ld Advarsler: %ld"
- norwegian-ny "Postar: %ld Like: %ld Åtvaringar: %ld"
- pol "Rekordów: %ld Duplikatów: %ld Ostrze¿eñ: %ld"
- por "Registros: %ld - Duplicados: %ld - Avisos: %ld"
- rum "Recorduri: %ld Duplicate: %ld Atentionari (warnings): %ld"
- rus "úÁÐÉÓÅÊ: %ld äÕÂÌÉËÁÔÏ×: %ld ðÒÅÄÕÐÒÅÖÄÅÎÉÊ: %ld"
- serbian "Slogova: %ld Duplikata: %ld Upozorenja: %ld"
- slo "Záznamov: %ld Opakovaných: %ld Varovania: %ld"
- spa "Registros: %ld Duplicados: %ld Peligros: %ld"
- swe "Rader: %ld Dubletter: %ld Varningar: %ld"
- ukr "úÁÐÉÓ¦×: %ld äÕÂ̦ËÁÔ¦×: %ld úÁÓÔÅÒÅÖÅÎØ: %ld"
-ER_UPDATE_TABLE_USED
- eng "You can't specify target table '%-.64s' for update in FROM clause"
- ger "Die Verwendung der zu aktualisierenden Zieltabelle '%-.64s' ist in der FROM-Klausel nicht zulässig."
- rus "îÅ ÄÏÐÕÓËÁÅÔÓÑ ÕËÁÚÁÎÉÅ ÔÁÂÌÉÃÙ '%-.64s' × ÓÐÉÓËÅ ÔÁÂÌÉà FROM ÄÌÑ ×ÎÅÓÅÎÉÑ × ÎÅÅ ÉÚÍÅÎÅÎÉÊ"
- swe "INSERT-table '%-.64s' får inte finnas i FROM tabell-listan"
- ukr "ôÁÂÌÉÃÑ '%-.64s' ÝÏ ÚͦÎÀ¤ÔØÓÑ ÎÅ ÄÏÚ×ÏÌÅÎÁ Õ ÐÅÒÅ̦ËÕ ÔÁÂÌÉÃØ FROM"
-ER_NO_SUCH_THREAD
- cze "Nezn-Bámá identifikace threadu: %lu"
- dan "Ukendt tråd id: %lu"
- nla "Onbekend thread id: %lu"
- eng "Unknown thread id: %lu"
- jps "thread id: %lu ‚Í‚ ‚è‚Ü‚¹‚ñ",
- est "Tundmatu lõim: %lu"
- fre "Numéro de tâche inconnu: %lu"
- ger "Unbekannte Thread-ID: %lu"
- greek "Áãíùóôï thread id: %lu"
- hun "Ervenytelen szal (thread) id: %lu"
- ita "Thread id: %lu sconosciuto"
- jpn "thread id: %lu ¤Ï¤¢¤ê¤Þ¤»¤ó"
- kor "¾Ë¼ö ¾ø´Â ¾²·¹µå id: %lu"
- nor "Ukjent tråd id: %lu"
- norwegian-ny "Ukjent tråd id: %lu"
- pol "Nieznany identyfikator w?tku: %lu"
- por "'Id' de 'thread' %lu desconhecido"
- rum "Id-ul: %lu thread-ului este necunoscut"
- rus "îÅÉÚ×ÅÓÔÎÙÊ ÎÏÍÅÒ ÐÏÔÏËÁ: %lu"
- serbian "Nepoznat thread identifikator: %lu"
- slo "Neznáma identifikácia vlákna: %lu"
- spa "Identificador del thread: %lu desconocido"
- swe "Finns ingen tråd med id %lu"
- ukr "îÅצÄÏÍÉÊ ¦ÄÅÎÔÉƦËÁÔÏÒ Ç¦ÌËÉ: %lu"
-ER_KILL_DENIED_ERROR
- cze "Nejste vlastn-Bíkem threadu %lu"
- dan "Du er ikke ejer af tråden %lu"
- nla "U bent geen bezitter van thread %lu"
- eng "You are not owner of thread %lu"
- jps "thread %lu ‚̃I[ƒi[‚Å‚Í‚ ‚è‚Ü‚¹‚ñ",
- est "Ei ole lõime %lu omanik"
- fre "Vous n'êtes pas propriétaire de la tâche no: %lu"
- ger "Sie sind nicht Eigentümer von Thread %lu"
- greek "Äåí åßóèå owner ôïõ thread %lu"
- hun "A %lu thread-nek mas a tulajdonosa"
- ita "Utente non proprietario del thread %lu"
- jpn "thread %lu ¤Î¥ª¡¼¥Ê¡¼¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
- kor "¾²·¹µå(Thread) %luÀÇ ¼ÒÀ¯ÀÚ°¡ ¾Æ´Õ´Ï´Ù."
- nor "Du er ikke eier av tråden %lu"
- norwegian-ny "Du er ikkje eigar av tråd %lu"
- pol "Nie jeste? w³a?cicielem w?tku %lu"
- por "Você não é proprietário da 'thread' %lu"
- rum "Nu sinteti proprietarul threadului %lu"
- rus "÷Ù ÎÅ Ñ×ÌÑÅÔÅÓØ ×ÌÁÄÅÌØÃÅÍ ÐÏÔÏËÁ %lu"
- serbian "Vi niste vlasnik thread-a %lu"
- slo "Nie ste vlastníkom vlákna %lu"
- spa "Tu no eres el propietario del thread%lu"
- swe "Du är inte ägare till tråd %lu"
- ukr "÷É ÎÅ ×ÏÌÏÄÁÒ Ç¦ÌËÉ %lu"
-ER_NO_TABLES_USED
- cze "Nejsou pou-B¾ity ¾ádné tabulky"
- dan "Ingen tabeller i brug"
- nla "Geen tabellen gebruikt."
- eng "No tables used"
- est "Ühtegi tabelit pole kasutusel"
- fre "Aucune table utilisée"
- ger "Keine Tabellen verwendet"
- greek "Äåí ÷ñçóéìïðïéÞèçêáí ðßíáêåò"
- hun "Nincs hasznalt tabla"
- ita "Nessuna tabella usata"
- kor "¾î¶² Å×ÀÌºíµµ »ç¿ëµÇÁö ¾Ê¾Ò½À´Ï´Ù."
- nor "Ingen tabeller i bruk"
- norwegian-ny "Ingen tabellar i bruk"
- pol "Nie ma ¿adej u¿ytej tabeli"
- por "Nenhuma tabela usada"
- rum "Nici o tabela folosita"
- rus "îÉËÁËÉÅ ÔÁÂÌÉÃÙ ÎÅ ÉÓÐÏÌØÚÏ×ÁÎÙ"
- serbian "Nema upotrebljenih tabela"
- slo "Nie je pou¾itá ¾iadna tabuµka"
- spa "No ha tablas usadas"
- swe "Inga tabeller angivna"
- ukr "îÅ ×ÉËÏÒÉÓÔÁÎÏ ÔÁÂÌÉÃØ"
-ER_TOO_BIG_SET
- cze "P-Bøíli¹ mnoho øetìzcù pro sloupec %s a SET"
- dan "For mange tekststrenge til specifikationen af SET i kolonne %-.64s"
- nla "Teveel strings voor kolom %s en SET"
- eng "Too many strings for column %-.64s and SET"
- est "Liiga palju string tulbale %-.64s tüübile SET"
- fre "Trop de chaînes dans la colonne %s avec SET"
- ger "Zu viele Strings für Feld %-.64s und SET angegeben"
- greek "ÐÜñá ðïëëÜ strings ãéá ôï ðåäßï %-.64s êáé SET"
- hun "Tul sok karakter: %-.64s es SET"
- ita "Troppe stringhe per la colonna %-.64s e la SET"
- kor "Ä®·³ %-.64s¿Í SET¿¡¼­ ½ºÆ®¸µÀÌ ³Ê¹« ¸¹½À´Ï´Ù."
- nor "For mange tekststrenger kolonne %s og SET"
- norwegian-ny "For mange tekststrengar felt %s og SET"
- pol "Zbyt wiele ³añcuchów dla kolumny %s i polecenia SET"
- por "'Strings' demais para coluna '%-.64s' e SET"
- rum "Prea multe siruri pentru coloana %-.64s si SET"
- rus "óÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞÅÎÉÊ ÄÌÑ ÓÔÏÌÂÃÁ %-.64s × SET"
- serbian "Previše string-ova za kolonu '%-.64s' i komandu 'SET'"
- slo "Príli¹ mnoho re»azcov pre pole %-.64s a SET"
- spa "Muchas strings para columna %s y SET"
- swe "För många alternativ till kolumn %s för SET"
- ukr "úÁÂÁÇÁÔÏ ÓÔÒÏË ÄÌÑ ÓÔÏ×ÂÃÑ %-.64s ÔÁ SET"
-ER_NO_UNIQUE_LOGFILE
- cze "Nemohu vytvo-Bøit jednoznaèné jméno logovacího souboru %s.(1-999)\n"
- dan "Kan ikke lave unikt log-filnavn %s.(1-999)\n"
- nla "Het is niet mogelijk een unieke naam te maken voor de logfile %s.(1-999)\n"
- eng "Can't generate a unique log-filename %-.64s.(1-999)\n"
- est "Ei suuda luua unikaalset logifaili nime %-.64s.(1-999)\n"
- fre "Ne peut générer un unique nom de journal %s.(1-999)\n"
- ger "Kann keinen eindeutigen Dateinamen für die Logdatei %-.64s(1-999) erzeugen\n"
- greek "Áäýíáôç ç äçìéïõñãßá unique log-filename %-.64s.(1-999)\n"
- hun "Egyedi log-filenev nem generalhato: %-.64s.(1-999)\n"
- ita "Impossibile generare un nome del file log unico %-.64s.(1-999)\n"
- kor "Unique ·Î±×È­ÀÏ '%-.64s'¸¦ ¸¸µé¼ö ¾ø½À´Ï´Ù.(1-999)\n"
- nor "Kan ikke lage unikt loggfilnavn %s.(1-999)\n"
- norwegian-ny "Kan ikkje lage unikt loggfilnavn %s.(1-999)\n"
- pol "Nie mo¿na stworzyæ unikalnej nazwy pliku z logiem %s.(1-999)\n"
- por "Não pode gerar um nome de arquivo de 'log' único '%-.64s'.(1-999)\n"
- rum "Nu pot sa generez un nume de log unic %-.64s.(1-999)\n"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÕÎÉËÁÌØÎÏÅ ÉÍÑ ÆÁÊÌÁ ÖÕÒÎÁÌÁ %-.64s.(1-999)\n"
- serbian "Ne mogu da generišem jedinstveno ime log-file-a: '%-.64s.(1-999)'\n"
- slo "Nemô¾em vytvori» unikátne meno log-súboru %-.64s.(1-999)\n"
- spa "No puede crear un unico archivo log %s.(1-999)\n"
- swe "Kan inte generera ett unikt filnamn %s.(1-999)\n"
- ukr "îÅ ÍÏÖÕ ÚÇÅÎÅÒÕ×ÁÔÉ ÕΦËÁÌØÎÅ ¦Í'Ñ log-ÆÁÊÌÕ %-.64s.(1-999)\n"
-ER_TABLE_NOT_LOCKED_FOR_WRITE
- cze "Tabulka '%-.64s' byla zam-Bèena s READ a nemù¾e být zmìnìna"
- dan "Tabellen '%-.64s' var låst med READ lås og kan ikke opdateres"
- nla "Tabel '%-.64s' was gelocked met een lock om te lezen. Derhalve kunnen geen wijzigingen worden opgeslagen."
- eng "Table '%-.64s' was locked with a READ lock and can't be updated"
- jps "Table '%-.64s' ‚Í READ lock ‚É‚È‚Á‚Ä‚¢‚ÄAXV‚Í‚Å‚«‚Ü‚¹‚ñ",
- est "Tabel '%-.64s' on lukustatud READ lukuga ning ei ole muudetav"
- fre "Table '%-.64s' verrouillée lecture (READ): modification impossible"
- ger "Tabelle '%-.64s' ist mit Lesesperre versehen und kann nicht aktualisiert werden"
- greek "Ï ðßíáêáò '%-.64s' Ý÷åé êëåéäùèåß ìå READ lock êáé äåí åðéôñÝðïíôáé áëëáãÝò"
- hun "A(z) '%-.64s' tabla zarolva lett (READ lock) es nem lehet frissiteni"
- ita "La tabella '%-.64s' e` soggetta a lock in lettura e non puo` essere aggiornata"
- jpn "Table '%-.64s' ¤Ï READ lock ¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¹¹¿·¤Ï¤Ç¤­¤Þ¤»¤ó"
- kor "Å×À̺í '%-.64s'´Â READ ¶ôÀÌ Àá°ÜÀ־ °»½ÅÇÒ ¼ö ¾ø½À´Ï´Ù."
- nor "Tabellen '%-.64s' var låst med READ lås og kan ikke oppdateres"
- norwegian-ny "Tabellen '%-.64s' var låst med READ lås og kan ikkje oppdaterast"
- pol "Tabela '%-.64s' zosta³a zablokowana przez READ i nie mo¿e zostaæ zaktualizowana"
- por "Tabela '%-.64s' foi travada com trava de leitura e não pode ser atualizada"
- rum "Tabela '%-.64s' a fost locked cu un READ lock si nu poate fi actualizata"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÚÁÂÌÏËÉÒÏ×ÁÎÁ ÕÒÏ×ÎÅÍ READ lock É ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÚÍÅÎÅÎÁ"
- serbian "Tabela '%-.64s' je zakljuèana READ lock-om; iz nje se može samo èitati ali u nju se ne može pisati"
- slo "Tabuµka '%-.64s' bola zamknutá s READ a nemô¾e by» zmenená"
- spa "Tabla '%-.64s' fue trabada con un READ lock y no puede ser actualizada"
- swe "Tabell '%-.64s' kan inte uppdateras emedan den är låst för läsning"
- ukr "ôÁÂÌÉÃÀ '%-.64s' ÚÁÂÌÏËÏ×ÁÎÏ Ô¦ÌØËÉ ÄÌÑ ÞÉÔÁÎÎÑ, ÔÏÍÕ §§ ÎÅ ÍÏÖÎÁ ÏÎÏ×ÉÔÉ"
-ER_TABLE_NOT_LOCKED
- cze "Tabulka '%-.64s' nebyla zam-Bèena s LOCK TABLES"
- dan "Tabellen '%-.64s' var ikke låst med LOCK TABLES"
- nla "Tabel '%-.64s' was niet gelocked met LOCK TABLES"
- eng "Table '%-.64s' was not locked with LOCK TABLES"
- jps "Table '%-.64s' ‚Í LOCK TABLES ‚É‚æ‚Á‚ăƒbƒN‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "Tabel '%-.64s' ei ole lukustatud käsuga LOCK TABLES"
- fre "Table '%-.64s' non verrouillée: utilisez LOCK TABLES"
- ger "Tabelle '%-.64s' wurde nicht mit LOCK TABLES gesperrt"
- greek "Ï ðßíáêáò '%-.64s' äåí Ý÷åé êëåéäùèåß ìå LOCK TABLES"
- hun "A(z) '%-.64s' tabla nincs zarolva a LOCK TABLES-szel"
- ita "Non e` stato impostato il lock per la tabella '%-.64s' con LOCK TABLES"
- jpn "Table '%-.64s' ¤Ï LOCK TABLES ¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "Å×À̺í '%-.64s'´Â LOCK TABLES ¸í·ÉÀ¸·Î Àá±âÁö ¾Ê¾Ò½À´Ï´Ù."
- nor "Tabellen '%-.64s' var ikke låst med LOCK TABLES"
- norwegian-ny "Tabellen '%-.64s' var ikkje låst med LOCK TABLES"
- pol "Tabela '%-.64s' nie zosta³a zablokowana poleceniem LOCK TABLES"
- por "Tabela '%-.64s' não foi travada com LOCK TABLES"
- rum "Tabela '%-.64s' nu a fost locked cu LOCK TABLES"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÎÅ ÂÙÌÁ ÚÁÂÌÏËÉÒÏ×ÁÎÁ Ó ÐÏÍÏÝØÀ LOCK TABLES"
- serbian "Tabela '%-.64s' nije bila zakljuèana komandom 'LOCK TABLES'"
- slo "Tabuµka '%-.64s' nebola zamknutá s LOCK TABLES"
- spa "Tabla '%-.64s' no fue trabada con LOCK TABLES"
- swe "Tabell '%-.64s' är inte låst med LOCK TABLES"
- ukr "ôÁÂÌÉÃÀ '%-.64s' ÎÅ ÂÕÌÏ ÂÌÏËÏ×ÁÎÏ Ú LOCK TABLES"
-ER_BLOB_CANT_HAVE_DEFAULT 42000
- cze "Blob polo-B¾ka '%-.64s' nemù¾e mít defaultní hodnotu"
- dan "BLOB feltet '%-.64s' kan ikke have en standard værdi"
- nla "Blob veld '%-.64s' can geen standaardwaarde bevatten"
- eng "BLOB/TEXT column '%-.64s' can't have a default value"
- est "BLOB-tüüpi tulp '%-.64s' ei saa omada vaikeväärtust"
- fre "BLOB '%-.64s' ne peut avoir de valeur par défaut"
- ger "BLOB/TEXT-Feld '%-.64s' darf keinen Vorgabewert (DEFAULT) haben"
- greek "Ôá Blob ðåäßá '%-.64s' äåí ìðïñïýí íá Ý÷ïõí ðñïêáèïñéóìÝíåò ôéìÝò (default value)"
- hun "A(z) '%-.64s' blob objektumnak nem lehet alapertelmezett erteke"
- ita "Il campo BLOB '%-.64s' non puo` avere un valore di default"
- jpn "BLOB column '%-.64s' can't have a default value"
- kor "BLOB Ä®·³ '%-.64s' ´Â µðÆúÆ® °ªÀ» °¡Áú ¼ö ¾ø½À´Ï´Ù."
- nor "Blob feltet '%-.64s' kan ikke ha en standard verdi"
- norwegian-ny "Blob feltet '%-.64s' kan ikkje ha ein standard verdi"
- pol "Pole typu blob '%-.64s' nie mo¿e mieæ domy?lnej warto?ci"
- por "Coluna BLOB '%-.64s' não pode ter um valor padrão (default)"
- rum "Coloana BLOB '%-.64s' nu poate avea o valoare default"
- rus "îÅ×ÏÚÍÏÖÎÏ ÕËÁÚÙ×ÁÔØ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÓÔÏÌÂÃÁ BLOB '%-.64s'"
- serbian "BLOB kolona '%-.64s' ne može imati default vrednost"
- slo "Pole BLOB '%-.64s' nemô¾e ma» implicitnú hodnotu"
- spa "Campo Blob '%-.64s' no puede tener valores patron"
- swe "BLOB fält '%-.64s' kan inte ha ett DEFAULT-värde"
- ukr "óÔÏ×ÂÅÃØ BLOB '%-.64s' ÎÅ ÍÏÖÅ ÍÁÔÉ ÚÎÁÞÅÎÎÑ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ"
-ER_WRONG_DB_NAME 42000
- cze "Nep-Bøípustné jméno databáze '%-.64s'"
- dan "Ugyldigt database navn '%-.64s'"
- nla "Databasenaam '%-.64s' is niet getoegestaan"
- eng "Incorrect database name '%-.100s'"
- jps "Žw’肵‚½ database –¼ '%-.100s' ‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·",
- est "Vigane andmebaasi nimi '%-.100s'"
- fre "Nom de base de donnée illégal: '%-.64s'"
- ger "Unerlaubter Datenbankname '%-.100s'"
- greek "ËÜèïò üíïìá âÜóçò äåäïìÝíùí '%-.100s'"
- hun "Hibas adatbazisnev: '%-.100s'"
- ita "Nome database errato '%-.100s'"
- jpn "»ØÄꤷ¤¿ database ̾ '%-.100s' ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
- kor "'%-.100s' µ¥ÀÌŸº£À̽ºÀÇ À̸§ÀÌ ºÎÁ¤È®ÇÕ´Ï´Ù."
- nor "Ugyldig database navn '%-.64s'"
- norwegian-ny "Ugyldig database namn '%-.64s'"
- pol "Niedozwolona nazwa bazy danych '%-.64s'"
- por "Nome de banco de dados '%-.100s' incorreto"
- rum "Numele bazei de date este incorect '%-.100s'"
- rus "îÅËÏÒÒÅËÔÎÏÅ ÉÍÑ ÂÁÚÙ ÄÁÎÎÙÈ '%-.100s'"
- serbian "Pogrešno ime baze '%-.100s'"
- slo "Neprípustné meno databázy '%-.100s'"
- spa "Nombre de base de datos ilegal '%-.64s'"
- swe "Felaktigt databasnamn '%-.64s'"
- ukr "îÅצÒÎÅ ¦Í'Ñ ÂÁÚÉ ÄÁÎÎÉÈ '%-.100s'"
-ER_WRONG_TABLE_NAME 42000
- cze "Nep-Bøípustné jméno tabulky '%-.64s'"
- dan "Ugyldigt tabel navn '%-.64s'"
- nla "Niet toegestane tabelnaam '%-.64s'"
- eng "Incorrect table name '%-.100s'"
- jps "Žw’肵‚½ table –¼ '%-.100s' ‚Í‚Ü‚¿‚ª‚Á‚Ä‚¢‚Ü‚·",
- est "Vigane tabeli nimi '%-.100s'"
- fre "Nom de table illégal: '%-.64s'"
- ger "Unerlaubter Tabellenname '%-.100s'"
- greek "ËÜèïò üíïìá ðßíáêá '%-.100s'"
- hun "Hibas tablanev: '%-.100s'"
- ita "Nome tabella errato '%-.100s'"
- jpn "»ØÄꤷ¤¿ table ̾ '%-.100s' ¤Ï¤Þ¤Á¤¬¤Ã¤Æ¤¤¤Þ¤¹"
- kor "'%-.100s' Å×À̺í À̸§ÀÌ ºÎÁ¤È®ÇÕ´Ï´Ù."
- nor "Ugyldig tabell navn '%-.64s'"
- norwegian-ny "Ugyldig tabell namn '%-.64s'"
- pol "Niedozwolona nazwa tabeli '%-.64s'..."
- por "Nome de tabela '%-.100s' incorreto"
- rum "Numele tabelei este incorect '%-.100s'"
- rus "îÅËÏÒÒÅËÔÎÏÅ ÉÍÑ ÔÁÂÌÉÃÙ '%-.100s'"
- serbian "Pogrešno ime tabele '%-.100s'"
- slo "Neprípustné meno tabuµky '%-.100s'"
- spa "Nombre de tabla ilegal '%-.64s'"
- swe "Felaktigt tabellnamn '%-.64s'"
- ukr "îÅצÒÎÅ ¦Í'Ñ ÔÁÂÌÉæ '%-.100s'"
-ER_TOO_BIG_SELECT 42000
- cze "Zadan-Bý SELECT by procházel pøíli¹ mnoho záznamù a trval velmi dlouho. Zkontrolujte tvar WHERE a je-li SELECT v poøádku, pou¾ijte SET SQL_BIG_SELECTS=1"
- dan "SELECT ville undersøge for mange poster og ville sandsynligvis tage meget lang tid. Undersøg WHERE delen og brug SET SQL_BIG_SELECTS=1 hvis udtrykket er korrekt"
- nla "Het SELECT-statement zou te veel records analyseren en dus veel tijd in beslagnemen. Kijk het WHERE-gedeelte van de query na en kies SET SQL_BIG_SELECTS=1 als het stament in orde is."
- eng "The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay"
- est "SELECT lause peab läbi vaatama suure hulga kirjeid ja võtaks tõenäoliselt liiga kaua aega. Tasub kontrollida WHERE klauslit ja vajadusel kasutada käsku SET SQL_BIG_SELECTS=1"
- fre "SELECT va devoir examiner beaucoup d'enregistrements ce qui va prendre du temps. Vérifiez la clause WHERE et utilisez SET SQL_BIG_SELECTS=1 si SELECT se passe bien"
- ger "Die Ausführung des SELECT würde zu viele Datensätze untersuchen und wahrscheinlich sehr lange dauern. Bitte WHERE-Klausel überprüfen und gegebenenfalls SET SQL_BIG_SELECTS=1 oder SET SQL_MAX_JOIN_SIZE=# verwenden"
- greek "Ôï SELECT èá åîåôÜóåé ìåãÜëï áñéèìü åããñáöþí êáé ðéèáíþò èá êáèõóôåñÞóåé. Ðáñáêáëþ åîåôÜóôå ôéò ðáñáìÝôñïõò ôïõ WHERE êáé ÷ñçóéìïðïéåßóôå SET SQL_BIG_SELECTS=1 áí ôï SELECT åßíáé óùóôü"
- hun "A SELECT tul sok rekordot fog megvizsgalni es nagyon sokaig fog tartani. Ellenorizze a WHERE-t es hasznalja a SET SQL_BIG_SELECTS=1 beallitast, ha a SELECT okay"
- ita "La SELECT dovrebbe esaminare troppi record e usare troppo tempo. Controllare la WHERE e usa SET SQL_BIG_SELECTS=1 se e` tutto a posto."
- kor "SELECT ¸í·É¿¡¼­ ³Ê¹« ¸¹Àº ·¹Äڵ带 ã±â ¶§¹®¿¡ ¸¹Àº ½Ã°£ÀÌ ¼Ò¿äµË´Ï´Ù. µû¶ó¼­ WHERE ¹®À» Á¡°ËÇϰųª, ¸¸¾à SELECT°¡ okµÇ¸é SET SQL_BIG_SELECTS=1 ¿É¼ÇÀ» »ç¿ëÇϼ¼¿ä."
- nor "SELECT ville undersøke for mange poster og ville sannsynligvis ta veldig lang tid. Undersøk WHERE klausulen og bruk SET SQL_BIG_SELECTS=1 om SELECTen er korrekt"
- norwegian-ny "SELECT ville undersøkje for mange postar og ville sannsynligvis ta veldig lang tid. Undersøk WHERE klausulen og bruk SET SQL_BIG_SELECTS=1 om SELECTen er korrekt"
- pol "Operacja SELECT bêdzie dotyczy³a zbyt wielu rekordów i prawdopodobnie zajmie bardzo du¿o czasu. Sprawd¥ warunek WHERE i u¿yj SQL_OPTION BIG_SELECTS=1 je?li operacja SELECT jest poprawna"
- por "O SELECT examinaria registros demais e provavelmente levaria muito tempo. Cheque sua cláusula WHERE e use SET SQL_BIG_SELECTS=1, se o SELECT estiver correto"
- rum "SELECT-ul ar examina prea multe cimpuri si probabil ar lua prea mult timp; verifica clauza WHERE si foloseste SET SQL_BIG_SELECTS=1 daca SELECT-ul e okay"
- rus "äÌÑ ÔÁËÏÊ ×ÙÂÏÒËÉ SELECT ÄÏÌÖÅÎ ÂÕÄÅÔ ÐÒÏÓÍÏÔÒÅÔØ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÐÉÓÅÊ É, ×ÉÄÉÍÏ, ÜÔÏ ÚÁÊÍÅÔ ÏÞÅÎØ ÍÎÏÇÏ ×ÒÅÍÅÎÉ. ðÒÏ×ÅÒØÔÅ ×ÁÛÅ ÕËÁÚÁÎÉÅ WHERE, É, ÅÓÌÉ × ÎÅÍ ×ÓÅ × ÐÏÒÑÄËÅ, ÕËÁÖÉÔÅ SET SQL_BIG_SELECTS=1"
- serbian "Komanda 'SELECT' æe ispitati previše slogova i potrošiti previše vremena. Proverite vaš 'WHERE' filter i upotrebite 'SET OPTION SQL_BIG_SELECTS=1' ako želite baš ovakvu komandu"
- slo "Zadaná po¾iadavka SELECT by prechádzala príli¹ mnoho záznamov a trvala by príli¹ dlho. Skontrolujte tvar WHERE a ak je v poriadku, pou¾ite SET SQL_BIG_SELECTS=1"
- spa "El SELECT puede examinar muchos registros y probablemente con mucho tiempo. Verifique tu WHERE y usa SET SQL_BIG_SELECTS=1 si el SELECT esta correcto"
- swe "Den angivna frågan skulle läsa mer än MAX_JOIN_SIZE rader. Kontrollera din WHERE och använd SET SQL_BIG_SELECTS=1 eller SET MAX_JOIN_SIZE=# ifall du vill hantera stora joins"
- ukr "úÁÐÉÔÕ SELECT ÐÏÔÒ¦ÂÎÏ ÏÂÒÏÂÉÔÉ ÂÁÇÁÔÏ ÚÁÐÉÓ¦×, ÝÏ, ÐÅ×ÎÅ, ÚÁÊÍÅ ÄÕÖÅ ÂÁÇÁÔÏ ÞÁÓÕ. ðÅÒÅצÒÔÅ ×ÁÛÅ WHERE ÔÁ ×ÉËÏÒÉÓÔÏ×ÕÊÔÅ SET SQL_BIG_SELECTS=1, ÑËÝÏ ÃÅÊ ÚÁÐÉÔ SELECT ¤ צÒÎÉÍ"
-ER_UNKNOWN_ERROR
- cze "Nezn-Bámá chyba"
- dan "Ukendt fejl"
- nla "Onbekende Fout"
- eng "Unknown error"
- est "Tundmatu viga"
- fre "Erreur inconnue"
- ger "Unbekannter Fehler"
- greek "ÐñïÝêõøå Üãíùóôï ëÜèïò"
- hun "Ismeretlen hiba"
- ita "Errore sconosciuto"
- kor "¾Ë¼ö ¾ø´Â ¿¡·¯ÀÔ´Ï´Ù."
- nor "Ukjent feil"
- norwegian-ny "Ukjend feil"
- por "Erro desconhecido"
- rum "Eroare unknown"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ"
- serbian "Nepoznata greška"
- slo "Neznámá chyba"
- spa "Error desconocido"
- swe "Oidentifierat fel"
- ukr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ"
-ER_UNKNOWN_PROCEDURE 42000
- cze "Nezn-Bámá procedura %s"
- dan "Ukendt procedure %s"
- nla "Onbekende procedure %s"
- eng "Unknown procedure '%-.64s'"
- est "Tundmatu protseduur '%-.64s'"
- fre "Procédure %s inconnue"
- ger "Unbekannte Prozedur '%-.64s'"
- greek "Áãíùóôç äéáäéêáóßá '%-.64s'"
- hun "Ismeretlen eljaras: '%-.64s'"
- ita "Procedura '%-.64s' sconosciuta"
- kor "¾Ë¼ö ¾ø´Â ¼öÇ๮ : '%-.64s'"
- nor "Ukjent prosedyre %s"
- norwegian-ny "Ukjend prosedyre %s"
- pol "Unkown procedure %s"
- por "'Procedure' '%-.64s' desconhecida"
- rum "Procedura unknown '%-.64s'"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ÐÒÏÃÅÄÕÒÁ '%-.64s'"
- serbian "Nepoznata procedura '%-.64s'"
- slo "Neznámá procedúra '%-.64s'"
- spa "Procedimiento desconocido %s"
- swe "Okänd procedur: %s"
- ukr "îÅצÄÏÍÁ ÐÒÏÃÅÄÕÒÁ '%-.64s'"
-ER_WRONG_PARAMCOUNT_TO_PROCEDURE 42000
- cze "Chybn-Bý poèet parametrù procedury %s"
- dan "Forkert antal parametre til proceduren %s"
- nla "Foutief aantal parameters doorgegeven aan procedure %s"
- eng "Incorrect parameter count to procedure '%-.64s'"
- est "Vale parameetrite hulk protseduurile '%-.64s'"
- fre "Mauvais nombre de paramètres pour la procedure %s"
- ger "Falsche Parameterzahl für Prozedur '%-.64s'"
- greek "ËÜèïò áñéèìüò ðáñáìÝôñùí óôç äéáäéêáóßá '%-.64s'"
- hun "Rossz parameter a(z) '%-.64s'eljaras szamitasanal"
- ita "Numero di parametri errato per la procedura '%-.64s'"
- kor "'%-.64s' ¼öÇ๮¿¡ ´ëÇÑ ºÎÁ¤È®ÇÑ ÆĶó¸ÞÅÍ"
- nor "Feil parameter antall til prosedyren %s"
- norwegian-ny "Feil parameter tal til prosedyra %s"
- pol "Incorrect parameter count to procedure %s"
- por "Número de parâmetros incorreto para a 'procedure' '%-.64s'"
- rum "Procedura '%-.64s' are un numar incorect de parametri"
- rus "îÅËÏÒÒÅËÔÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÐÁÒÁÍÅÔÒÏ× ÄÌÑ ÐÒÏÃÅÄÕÒÙ '%-.64s'"
- serbian "Pogrešan broj parametara za proceduru '%-.64s'"
- slo "Chybný poèet parametrov procedúry '%-.64s'"
- spa "Equivocado parametro count para procedimiento %s"
- swe "Felaktigt antal parametrar till procedur %s"
- ukr "èÉÂÎÁ ˦ÌØ˦ÓÔØ ÐÁÒÁÍÅÔÒ¦× ÐÒÏÃÅÄÕÒÉ '%-.64s'"
-ER_WRONG_PARAMETERS_TO_PROCEDURE
- cze "Chybn-Bé parametry procedury %s"
- dan "Forkert(e) parametre til proceduren %s"
- nla "Foutieve parameters voor procedure %s"
- eng "Incorrect parameters to procedure '%-.64s'"
- est "Vigased parameetrid protseduurile '%-.64s'"
- fre "Paramètre erroné pour la procedure %s"
- ger "Falsche Parameter für Prozedur '%-.64s'"
- greek "ËÜèïò ðáñÜìåôñïé óôçí äéáäéêáóßá '%-.64s'"
- hun "Rossz parameter a(z) '%-.64s' eljarasban"
- ita "Parametri errati per la procedura '%-.64s'"
- kor "'%-.64s' ¼öÇ๮¿¡ ´ëÇÑ ºÎÁ¤È®ÇÑ ÆĶó¸ÞÅÍ"
- nor "Feil parametre til prosedyren %s"
- norwegian-ny "Feil parameter til prosedyra %s"
- pol "Incorrect parameters to procedure %s"
- por "Parâmetros incorretos para a 'procedure' '%-.64s'"
- rum "Procedura '%-.64s' are parametrii incorecti"
- rus "îÅËÏÒÒÅËÔÎÙÅ ÐÁÒÁÍÅÔÒÙ ÄÌÑ ÐÒÏÃÅÄÕÒÙ '%-.64s'"
- serbian "Pogrešni parametri prosleðeni proceduri '%-.64s'"
- slo "Chybné parametre procedúry '%-.64s'"
- spa "Equivocados parametros para procedimiento %s"
- swe "Felaktiga parametrar till procedur %s"
- ukr "èÉÂÎÉÊ ÐÁÒÁÍÅÔÅÒ ÐÒÏÃÅÄÕÒÉ '%-.64s'"
-ER_UNKNOWN_TABLE 42S02
- cze "Nezn-Bámá tabulka '%-.64s' v %s"
- dan "Ukendt tabel '%-.64s' i %s"
- nla "Onbekende tabel '%-.64s' in %s"
- eng "Unknown table '%-.64s' in %-.32s"
- est "Tundmatu tabel '%-.64s' %-.32s-s"
- fre "Table inconnue '%-.64s' dans %s"
- ger "Unbekannte Tabelle '%-.64s' in '%-.64s'"
- greek "Áãíùóôïò ðßíáêáò '%-.64s' óå %s"
- hun "Ismeretlen tabla: '%-.64s' %s-ban"
- ita "Tabella '%-.64s' sconosciuta in %s"
- jpn "Unknown table '%-.64s' in %s"
- kor "¾Ë¼ö ¾ø´Â Å×À̺í '%-.64s' (µ¥ÀÌŸº£À̽º %s)"
- nor "Ukjent tabell '%-.64s' i %s"
- norwegian-ny "Ukjend tabell '%-.64s' i %s"
- pol "Unknown table '%-.64s' in %s"
- por "Tabela '%-.64s' desconhecida em '%-.32s'"
- rum "Tabla '%-.64s' invalida in %-.32s"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ÔÁÂÌÉÃÁ '%-.64s' × %-.32s"
- serbian "Nepoznata tabela '%-.64s' u '%-.32s'"
- slo "Neznáma tabuµka '%-.64s' v %s"
- spa "Tabla desconocida '%-.64s' in %s"
- swe "Okänd tabell '%-.64s' i '%-.64s'"
- ukr "îÅצÄÏÍÁ ÔÁÂÌÉÃÑ '%-.64s' Õ %-.32s"
-ER_FIELD_SPECIFIED_TWICE 42000
- cze "Polo-B¾ka '%-.64s' je zadána dvakrát"
- dan "Feltet '%-.64s' er anvendt to gange"
- nla "Veld '%-.64s' is dubbel gespecificeerd"
- eng "Column '%-.64s' specified twice"
- est "Tulp '%-.64s' on määratletud topelt"
- fre "Champ '%-.64s' spécifié deux fois"
- ger "Feld '%-.64s' wurde zweimal angegeben"
- greek "Ôï ðåäßï '%-.64s' Ý÷åé ïñéóèåß äýï öïñÝò"
- hun "A(z) '%-.64s' mezot ketszer definialta"
- ita "Campo '%-.64s' specificato 2 volte"
- kor "Ä®·³ '%-.64s'´Â µÎ¹ø Á¤ÀǵǾî ÀÖÀ¾´Ï´Ù."
- nor "Feltet '%-.64s' er spesifisert to ganger"
- norwegian-ny "Feltet '%-.64s' er spesifisert to gangar"
- pol "Field '%-.64s' specified twice"
- por "Coluna '%-.64s' especificada duas vezes"
- rum "Coloana '%-.64s' specificata de doua ori"
- rus "óÔÏÌÂÅà '%-.64s' ÕËÁÚÁÎ Ä×ÁÖÄÙ"
- serbian "Kolona '%-.64s' je navedena dva puta"
- slo "Pole '%-.64s' je zadané dvakrát"
- spa "Campo '%-.64s' especificado dos veces"
- swe "Fält '%-.64s' är redan använt"
- ukr "óÔÏ×ÂÅÃØ '%-.64s' ÚÁÚÎÁÞÅÎÏ Äצަ"
-ER_INVALID_GROUP_FUNC_USE
- cze "Nespr-Bávné pou¾ití funkce group"
- dan "Forkert brug af grupperings-funktion"
- nla "Ongeldig gebruik van GROUP-functie"
- eng "Invalid use of group function"
- est "Vigane grupeerimisfunktsiooni kasutus"
- fre "Utilisation invalide de la clause GROUP"
- ger "Falsche Verwendung einer Gruppierungsfunktion"
- greek "ÅóöáëìÝíç ÷ñÞóç ôçò group function"
- hun "A group funkcio ervenytelen hasznalata"
- ita "Uso non valido di una funzione di raggruppamento"
- kor "À߸øµÈ ±×·ì ÇÔ¼ö¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù."
- por "Uso inválido de função de agrupamento (GROUP)"
- rum "Folosire incorecta a functiei group"
- rus "îÅÐÒÁ×ÉÌØÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÇÒÕÐÐÏ×ÙÈ ÆÕÎËÃÉÊ"
- serbian "Pogrešna upotreba 'GROUP' funkcije"
- slo "Nesprávne pou¾itie funkcie GROUP"
- spa "Invalido uso de función en grupo"
- swe "Felaktig användning av SQL grupp function"
- ukr "èÉÂÎÅ ×ÉËÏÒÉÓÔÁÎÎÑ ÆÕÎËæ§ ÇÒÕÐÕ×ÁÎÎÑ"
-ER_UNSUPPORTED_EXTENSION 42000
- cze "Tabulka '%-.64s' pou-B¾ívá roz¹íøení, které v této verzi MySQL není"
- dan "Tabellen '%-.64s' bruger et filtypenavn som ikke findes i denne MySQL version"
- nla "Tabel '%-.64s' gebruikt een extensie, die niet in deze MySQL-versie voorkomt."
- eng "Table '%-.64s' uses an extension that doesn't exist in this MySQL version"
- est "Tabel '%-.64s' kasutab laiendust, mis ei eksisteeri antud MySQL versioonis"
- fre "Table '%-.64s' : utilise une extension invalide pour cette version de MySQL"
- ger "Tabelle '%-.64s' verwendet eine Erweiterung, die in dieser MySQL-Version nicht verfügbar ist"
- greek "Ï ðßíáêò '%-.64s' ÷ñçóéìïðïéåß êÜðïéï extension ðïõ äåí õðÜñ÷åé óôçí Ýêäïóç áõôÞ ôçò MySQL"
- hun "A(z) '%-.64s' tabla olyan bovitest hasznal, amely nem letezik ebben a MySQL versioban."
- ita "La tabella '%-.64s' usa un'estensione che non esiste in questa versione di MySQL"
- kor "Å×À̺í '%-.64s'´Â È®Àå¸í·ÉÀ» ÀÌ¿ëÇÏÁö¸¸ ÇöÀçÀÇ MySQL ¹öÁ¯¿¡¼­´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."
- nor "Table '%-.64s' uses a extension that doesn't exist in this MySQL version"
- norwegian-ny "Table '%-.64s' uses a extension that doesn't exist in this MySQL version"
- pol "Table '%-.64s' uses a extension that doesn't exist in this MySQL version"
- por "Tabela '%-.64s' usa uma extensão que não existe nesta versão do MySQL"
- rum "Tabela '%-.64s' foloseste o extensire inexistenta in versiunea curenta de MySQL"
- rus "÷ ÔÁÂÌÉÃÅ '%-.64s' ÉÓÐÏÌØÚÕÀÔÓÑ ×ÏÚÍÏÖÎÏÓÔÉ, ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ × ÜÔÏÊ ×ÅÒÓÉÉ MySQL"
- serbian "Tabela '%-.64s' koristi ekstenziju koje ne postoji u ovoj verziji MySQL-a"
- slo "Tabuµka '%-.64s' pou¾íva roz¹írenie, ktoré v tejto verzii MySQL nie je"
- spa "Tabla '%-.64s' usa una extensión que no existe en esta MySQL versión"
- swe "Tabell '%-.64s' har en extension som inte finns i denna version av MySQL"
- ukr "ôÁÂÌÉÃÑ '%-.64s' ×ÉËÏÒÉÓÔÏ×Õ¤ ÒÏÚÛÉÒÅÎÎÑ, ÝÏ ÎÅ ¦ÓÎÕ¤ Õ Ã¦Ê ×ÅÒÓ¦§ MySQL"
-ER_TABLE_MUST_HAVE_COLUMNS 42000
- cze "Tabulka mus-Bí mít alespoò jeden sloupec"
- dan "En tabel skal have mindst een kolonne"
- nla "Een tabel moet minstens 1 kolom bevatten"
- eng "A table must have at least 1 column"
- jps "ƒe[ƒuƒ‹‚ÍÅ’á 1 ŒÂ‚Ì column ‚ª•K—v‚Å‚·",
- est "Tabelis peab olema vähemalt üks tulp"
- fre "Une table doit comporter au moins une colonne"
- ger "Eine Tabelle muss mindestens eine Spalte besitzen"
- greek "Åíáò ðßíáêáò ðñÝðåé íá Ý÷åé ôïõëÜ÷éóôïí Ýíá ðåäßï"
- hun "A tablanak legalabb egy oszlopot tartalmazni kell"
- ita "Una tabella deve avere almeno 1 colonna"
- jpn "¥Æ¡¼¥Ö¥ë¤ÏºÇÄã 1 ¸Ä¤Î column ¤¬É¬ÍפǤ¹"
- kor "ÇϳªÀÇ Å×ÀÌºí¿¡¼­´Â Àû¾îµµ ÇϳªÀÇ Ä®·³ÀÌ Á¸ÀçÇÏ¿©¾ß ÇÕ´Ï´Ù."
- por "Uma tabela tem que ter pelo menos uma (1) coluna"
- rum "O tabela trebuie sa aiba cel putin o coloana"
- rus "÷ ÔÁÂÌÉÃÅ ÄÏÌÖÅÎ ÂÙÔØ ËÁË ÍÉÎÉÍÕÍ ÏÄÉÎ ÓÔÏÌÂÅÃ"
- serbian "Tabela mora imati najmanje jednu kolonu"
- slo "Tabuµka musí ma» aspoò 1 pole"
- spa "Una tabla debe tener al menos 1 columna"
- swe "Tabeller måste ha minst 1 kolumn"
- ukr "ôÁÂÌÉÃÑ ÐÏ×ÉÎÎÁ ÍÁÔÉ ÈÏÞÁ ÏÄÉÎ ÓÔÏ×ÂÅÃØ"
-ER_RECORD_FILE_FULL
- cze "Tabulka '%-.64s' je pln-Bá"
- dan "Tabellen '%-.64s' er fuld"
- nla "De tabel '%-.64s' is vol"
- eng "The table '%-.64s' is full"
- jps "table '%-.64s' ‚Í‚¢‚Á‚Ï‚¢‚Å‚·",
- est "Tabel '%-.64s' on täis"
- fre "La table '%-.64s' est pleine"
- ger "Tabelle '%-.64s' ist voll"
- greek "Ï ðßíáêáò '%-.64s' åßíáé ãåìÜôïò"
- hun "A '%-.64s' tabla megtelt"
- ita "La tabella '%-.64s' e` piena"
- jpn "table '%-.64s' ¤Ï¤¤¤Ã¤Ñ¤¤¤Ç¤¹"
- kor "Å×À̺í '%-.64s'°¡ full³µ½À´Ï´Ù. "
- por "Tabela '%-.64s' está cheia"
- rum "Tabela '%-.64s' e plina"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÐÅÒÅÐÏÌÎÅÎÁ"
- serbian "Tabela '%-.64s' je popunjena do kraja"
- slo "Tabuµka '%-.64s' je plná"
- spa "La tabla '%-.64s' está llena"
- swe "Tabellen '%-.64s' är full"
- ukr "ôÁÂÌÉÃÑ '%-.64s' ÚÁÐÏ×ÎÅÎÁ"
-ER_UNKNOWN_CHARACTER_SET 42000
- cze "Nezn-Bámá znaková sada: '%-.64s'"
- dan "Ukendt tegnsæt: '%-.64s'"
- nla "Onbekende character set: '%-.64s'"
- eng "Unknown character set: '%-.64s'"
- jps "character set '%-.64s' ‚̓Tƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ",
- est "Vigane kooditabel '%-.64s'"
- fre "Jeu de caractères inconnu: '%-.64s'"
- ger "Unbekannter Zeichensatz: '%-.64s'"
- greek "Áãíùóôï character set: '%-.64s'"
- hun "Ervenytelen karakterkeszlet: '%-.64s'"
- ita "Set di caratteri '%-.64s' sconosciuto"
- jpn "character set '%-.64s' ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
- kor "¾Ë¼ö¾ø´Â ¾ð¾î Set: '%-.64s'"
- por "Conjunto de caracteres '%-.64s' desconhecido"
- rum "Set de caractere invalid: '%-.64s'"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ËÏÄÉÒÏ×ËÁ '%-.64s'"
- serbian "Nepoznati karakter-set: '%-.64s'"
- slo "Neznáma znaková sada: '%-.64s'"
- spa "Juego de caracteres desconocido: '%-.64s'"
- swe "Okänd teckenuppsättning: '%-.64s'"
- ukr "îÅצÄÏÍÁ ËÏÄÏ×Á ÔÁÂÌÉÃÑ: '%-.64s'"
-ER_TOO_MANY_TABLES
- cze "P-Bøíli¹ mnoho tabulek, MySQL jich mù¾e mít v joinu jen %d"
- dan "For mange tabeller. MySQL kan kun bruge %d tabeller i et join"
- nla "Teveel tabellen. MySQL kan slechts %d tabellen in een join bevatten"
- eng "Too many tables; MySQL can only use %d tables in a join"
- jps "ƒe[ƒuƒ‹‚ª‘½‚·‚¬‚Ü‚·; MySQL can only use %d tables in a join",
- est "Liiga palju tabeleid. MySQL suudab JOINiga ühendada kuni %d tabelit"
- fre "Trop de tables. MySQL ne peut utiliser que %d tables dans un JOIN"
- ger "Zu viele Tabellen. MySQL kann in einem Join maximal %d Tabellen verwenden"
- greek "Ðïëý ìåãÜëïò áñéèìüò ðéíÜêùí. Ç MySQL ìðïñåß íá ÷ñçóéìïðïéÞóåé %d ðßíáêåò óå äéáäéêáóßá join"
- hun "Tul sok tabla. A MySQL csak %d tablat tud kezelni osszefuzeskor"
- ita "Troppe tabelle. MySQL puo` usare solo %d tabelle in una join"
- jpn "¥Æ¡¼¥Ö¥ë¤¬Â¿¤¹¤®¤Þ¤¹; MySQL can only use %d tables in a join"
- kor "³Ê¹« ¸¹Àº Å×À̺íÀÌ JoinµÇ¾ú½À´Ï´Ù. MySQL¿¡¼­´Â JOIN½Ã %d°³ÀÇ Å×ÀÌºí¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù."
- por "Tabelas demais. O MySQL pode usar somente %d tabelas em uma junção (JOIN)"
- rum "Prea multe tabele. MySQL nu poate folosi mai mult de %d tabele intr-un join"
- rus "óÌÉÛËÏÍ ÍÎÏÇÏ ÔÁÂÌÉÃ. MySQL ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ %d ÔÁÂÌÉÃ × ÓÏÅÄÉÎÅÎÉÉ"
- serbian "Previše tabela. MySQL može upotrebiti maksimum %d tabela pri 'JOIN' operaciji"
- slo "Príli¹ mnoho tabuliek. MySQL mô¾e pou¾i» len %d v JOIN-e"
- spa "Muchas tablas. MySQL solamente puede usar %d tablas en un join"
- swe "För många tabeller. MySQL can ha högst %d tabeller i en och samma join"
- ukr "úÁÂÁÇÁÔÏ ÔÁÂÌÉÃØ. MySQL ÍÏÖÅ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÌÉÛÅ %d ÔÁÂÌÉÃØ Õ ÏÂ'¤ÄÎÁÎΦ"
-ER_TOO_MANY_FIELDS
- cze "P-Bøíli¹ mnoho polo¾ek"
- dan "For mange felter"
- nla "Te veel velden"
- eng "Too many columns"
- jps "column ‚ª‘½‚·‚¬‚Ü‚·",
- est "Liiga palju tulpasid"
- fre "Trop de champs"
- ger "Zu viele Felder"
- greek "Ðïëý ìåãÜëïò áñéèìüò ðåäßùí"
- hun "Tul sok mezo"
- ita "Troppi campi"
- jpn "column ¤¬Â¿¤¹¤®¤Þ¤¹"
- kor "Ä®·³ÀÌ ³Ê¹« ¸¹½À´Ï´Ù."
- por "Colunas demais"
- rum "Prea multe coloane"
- rus "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÔÏÌÂÃÏ×"
- serbian "Previše kolona"
- slo "Príli¹ mnoho polí"
- spa "Muchos campos"
- swe "För många fält"
- ukr "úÁÂÁÇÁÔÏ ÓÔÏ×Âæ×"
-ER_TOO_BIG_ROWSIZE 42000
- cze "-BØádek je pøíli¹ velký. Maximální velikost øádku, nepoèítaje polo¾ky blob, je %d. Musíte zmìnit nìkteré polo¾ky na blob"
- dan "For store poster. Max post størrelse, uden BLOB's, er %d. Du må lave nogle felter til BLOB's"
- nla "Rij-grootte is groter dan toegestaan. Maximale rij grootte, blobs niet meegeteld, is %d. U dient sommige velden in blobs te veranderen."
- eng "Row size too large. The maximum row size for the used table type, not counting BLOBs, is %ld. You have to change some columns to TEXT or BLOBs"
- jps "row size ‚ª‘å‚«‚·‚¬‚Ü‚·. BLOB ‚ðŠÜ‚Ü‚È‚¢ê‡‚Ì row size ‚ÌÅ‘å‚Í %d ‚Å‚·. ‚¢‚­‚‚©‚Ì field ‚ð BLOB ‚É•Ï‚¦‚Ä‚­‚¾‚³‚¢.",
- est "Liiga pikk kirje. Kirje maksimumpikkus arvestamata BLOB-tüüpi välju on %d. Muuda mõned väljad BLOB-tüüpi väljadeks"
- fre "Ligne trop grande. Le taille maximale d'une ligne, sauf les BLOBs, est %d. Changez le type de quelques colonnes en BLOB"
- ger "Zeilenlänge zu groß. Die maximale Zeilenlänge für den verwendeten Tabellentyp (ohne BLOB-Felder) beträgt %ld. Einige Felder müssen in BLOB oder TEXT umgewandelt werden"
- greek "Ðïëý ìåãÜëï ìÝãåèïò åããñáöÞò. Ôï ìÝãéóôï ìÝãåèïò åããñáöÞò, ÷ùñßò íá õðïëïãßæïíôáé ôá blobs, åßíáé %d. ÐñÝðåé íá ïñßóåôå êÜðïéá ðåäßá óáí blobs"
- hun "Tul nagy sormeret. A maximalis sormeret (nem szamolva a blob objektumokat) %d. Nehany mezot meg kell valtoztatnia"
- ita "Riga troppo grande. La massima grandezza di una riga, non contando i BLOB, e` %d. Devi cambiare alcuni campi in BLOB"
- jpn "row size ¤¬Â礭¤¹¤®¤Þ¤¹. BLOB ¤ò´Þ¤Þ¤Ê¤¤¾ì¹ç¤Î row size ¤ÎºÇÂç¤Ï %d ¤Ç¤¹. ¤¤¤¯¤Ä¤«¤Î field ¤ò BLOB ¤ËÊѤ¨¤Æ¤¯¤À¤µ¤¤."
- kor "³Ê¹« Å« row »çÀÌÁîÀÔ´Ï´Ù. BLOB¸¦ °è»êÇÏÁö ¾Ê°í ÃÖ´ë row »çÀÌÁî´Â %dÀÔ´Ï´Ù. ¾ó¸¶°£ÀÇ ÇʵåµéÀ» BLOB·Î ¹Ù²Ù¼Å¾ß °Ú±º¿ä.."
- por "Tamanho de linha grande demais. O máximo tamanho de linha, não contando BLOBs, é %d. Você tem que mudar alguns campos para BLOBs"
- rum "Marimea liniei (row) prea mare. Marimea maxima a liniei, excluzind BLOB-urile este de %d. Trebuie sa schimbati unele cimpuri in BLOB-uri"
- rus "óÌÉÛËÏÍ ÂÏÌØÛÏÊ ÒÁÚÍÅÒ ÚÁÐÉÓÉ. íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÓÔÒÏËÉ, ÉÓËÌÀÞÁÑ ÐÏÌÑ BLOB, - %d. ÷ÏÚÍÏÖÎÏ, ×ÁÍ ÓÌÅÄÕÅÔ ÉÚÍÅÎÉÔØ ÔÉÐ ÎÅËÏÔÏÒÙÈ ÐÏÌÅÊ ÎÁ BLOB"
- serbian "Prevelik slog. Maksimalna velièina sloga, ne raèunajuæi BLOB polja, je %d. Trebali bi da promenite tip nekih polja u BLOB"
- slo "Riadok je príli¹ veµký. Maximálna veµkos» riadku, okrem 'BLOB', je %d. Musíte zmeni» niektoré polo¾ky na BLOB"
- spa "Tamaño de línea muy grande. Máximo tamaño de línea, no contando blob, es %d. Tu tienes que cambiar algunos campos para blob"
- swe "För stor total radlängd. Den högst tillåtna radlängden, förutom BLOBs, är %d. Ändra några av dina fält till BLOB"
- ukr "úÁÄÏ×ÇÁ ÓÔÒÏËÁ. îÁʦÌØÛÏÀ ÄÏ×ÖÉÎÏÀ ÓÔÒÏËÉ, ÎÅ ÒÁÈÕÀÞÉ BLOB, ¤ %d. ÷ÁÍ ÐÏÔÒ¦ÂÎÏ ÐÒÉ×ÅÓÔÉ ÄÅÑ˦ ÓÔÏ×Âæ ÄÏ ÔÉÐÕ BLOB"
-ER_STACK_OVERRUN
- cze "P-Bøeteèení zásobníku threadu: pou¾ito %ld z %ld. Pou¾ijte 'mysqld -O thread_stack=#' k zadání vìt¹ího zásobníku"
- dan "Thread stack brugt: Brugt: %ld af en %ld stak. Brug 'mysqld -O thread_stack=#' for at allokere en større stak om nødvendigt"
- nla "Thread stapel overrun: Gebruikte: %ld van een %ld stack. Gebruik 'mysqld -O thread_stack=#' om een grotere stapel te definieren (indien noodzakelijk)."
- eng "Thread stack overrun: Used: %ld of a %ld stack. Use 'mysqld -O thread_stack=#' to specify a bigger stack if needed"
- jps "Thread stack overrun: Used: %ld of a %ld stack. ƒXƒ^ƒbƒN—̈æ‚𑽂­‚Ƃ肽‚¢ê‡A'mysqld -O thread_stack=#' ‚ÆŽw’肵‚Ä‚­‚¾‚³‚¢",
- fre "Débordement de la pile des tâches (Thread stack). Utilisées: %ld pour une pile de %ld. Essayez 'mysqld -O thread_stack=#' pour indiquer une plus grande valeur"
- ger "Thread-Stack-Überlauf. Benutzt: %ld von %ld Stack. 'mysqld -O thread_stack=#' verwenden, um bei Bedarf einen größeren Stack anzulegen"
- greek "Stack overrun óôï thread: Used: %ld of a %ld stack. Ðáñáêáëþ ÷ñçóéìïðïéåßóôå 'mysqld -O thread_stack=#' ãéá íá ïñßóåôå Ýíá ìåãáëýôåñï stack áí ÷ñåéÜæåôáé"
- hun "Thread verem tullepes: Used: %ld of a %ld stack. Hasznalja a 'mysqld -O thread_stack=#' nagyobb verem definialasahoz"
- ita "Thread stack overrun: Usati: %ld di uno stack di %ld. Usa 'mysqld -O thread_stack=#' per specificare uno stack piu` grande."
- jpn "Thread stack overrun: Used: %ld of a %ld stack. ¥¹¥¿¥Ã¥¯Îΰè¤ò¿¤¯¤È¤ê¤¿¤¤¾ì¹ç¡¢'mysqld -O thread_stack=#' ¤È»ØÄꤷ¤Æ¤¯¤À¤µ¤¤"
- kor "¾²·¹µå ½ºÅÃÀÌ ³ÑÃƽÀ´Ï´Ù. »ç¿ë: %ld°³ ½ºÅÃ: %ld°³. ¸¸¾à ÇÊ¿ä½Ã ´õÅ« ½ºÅÃÀ» ¿øÇÒ¶§¿¡´Â 'mysqld -O thread_stack=#' ¸¦ Á¤ÀÇÇϼ¼¿ä"
- por "Estouro da pilha do 'thread'. Usados %ld de uma pilha de %ld. Use 'mysqld -O thread_stack=#' para especificar uma pilha maior, se necessário"
- rum "Stack-ul thread-ului a fost depasit (prea mic): Folositi: %ld intr-un stack de %ld. Folositi 'mysqld -O thread_stack=#' ca sa specifici un stack mai mare"
- rus "óÔÅË ÐÏÔÏËÏ× ÐÅÒÅÐÏÌÎÅÎ: ÉÓÐÏÌØÚÏ×ÁÎÏ: %ld ÉÚ %ld ÓÔÅËÁ. ðÒÉÍÅÎÑÊÔÅ 'mysqld -O thread_stack=#' ÄÌÑ ÕËÁÚÁÎÉÑ ÂÏÌØÛÅÇÏ ÒÁÚÍÅÒÁ ÓÔÅËÁ, ÅÓÌÉ ÎÅÏÂÈÏÄÉÍÏ"
- serbian "Prepisivanje thread stack-a: Upotrebljeno: %ld od %ld stack memorije. Upotrebite 'mysqld -O thread_stack=#' da navedete veæi stack ako je potrebno"
- slo "Preteèenie zásobníku vlákna: pou¾ité: %ld z %ld. Pou¾ite 'mysqld -O thread_stack=#' k zadaniu väè¹ieho zásobníka"
- spa "Sobrecarga de la pila de thread: Usada: %ld de una %ld pila. Use 'mysqld -O thread_stack=#' para especificar una mayor pila si necesario"
- swe "Trådstacken tog slut: Har använt %ld av %ld bytes. Använd 'mysqld -O thread_stack=#' ifall du behöver en större stack"
- ukr "óÔÅË Ç¦ÌÏË ÐÅÒÅÐÏ×ÎÅÎÏ: ÷ÉËÏÒÉÓÔÁÎÏ: %ld Ú %ld. ÷ÉËÏÒÉÓÔÏ×ÕÊÔÅ 'mysqld -O thread_stack=#' ÁÂÉ ÚÁÚÎÁÞÉÔÉ Â¦ÌØÛÉÊ ÓÔÅË, ÑËÝÏ ÎÅÏÂȦÄÎÏ"
-ER_WRONG_OUTER_JOIN 42000
- cze "V OUTER JOIN byl nalezen k-Bøí¾ový odkaz. Provìøte ON podmínky"
- dan "Krydsreferencer fundet i OUTER JOIN; check dine ON conditions"
- nla "Gekruiste afhankelijkheid gevonden in OUTER JOIN. Controleer uw ON-conditions"
- eng "Cross dependency found in OUTER JOIN; examine your ON conditions"
- est "Ristsõltuvus OUTER JOIN klauslis. Kontrolli oma ON tingimusi"
- fre "Dépendance croisée dans une clause OUTER JOIN. Vérifiez la condition ON"
- ger "OUTER JOIN enthält fehlerhafte Abhängigkeiten. In ON verwendete Bedingungen überprüfen"
- greek "Cross dependency âñÝèçêå óå OUTER JOIN. Ðáñáêáëþ åîåôÜóôå ôéò óõíèÞêåò ðïõ èÝóáôå óôï ON"
- hun "Keresztfuggoseg van az OUTER JOIN-ban. Ellenorizze az ON felteteleket"
- ita "Trovata una dipendenza incrociata nella OUTER JOIN. Controlla le condizioni ON"
- por "Dependência cruzada encontrada em junção externa (OUTER JOIN); examine as condições utilizadas nas cláusulas 'ON'"
- rum "Dependinta incrucisata (cross dependency) gasita in OUTER JOIN. Examinati conditiile ON"
- rus "÷ OUTER JOIN ÏÂÎÁÒÕÖÅÎÁ ÐÅÒÅËÒÅÓÔÎÁÑ ÚÁ×ÉÓÉÍÏÓÔØ. ÷ÎÉÍÁÔÅÌØÎÏ ÐÒÏÁÎÁÌÉÚÉÒÕÊÔÅ Ó×ÏÉ ÕÓÌÏ×ÉÑ ON"
- serbian "Unakrsna zavisnost pronaðena u komandi 'OUTER JOIN'. Istražite vaše 'ON' uslove"
- slo "V OUTER JOIN bol nájdený krí¾ový odkaz. Skontrolujte podmienky ON"
- spa "Dependencia cruzada encontrada en OUTER JOIN. Examine su condición ON"
- swe "Felaktigt referens i OUTER JOIN. Kontrollera ON-uttrycket"
- ukr "ðÅÒÅÈÒÅÓÎÁ ÚÁÌÅÖΦÓÔØ Õ OUTER JOIN. ðÅÒÅצÒÔÅ ÕÍÏ×Õ ON"
-ER_NULL_COLUMN_IN_INDEX 42000
- cze "Sloupec '%-.32s' je pou-B¾it s UNIQUE nebo INDEX, ale není definován jako NOT NULL"
- dan "Kolonne '%-.32s' bruges som UNIQUE eller INDEX men er ikke defineret som NOT NULL"
- nla "Kolom '%-.64s' wordt gebruikt met UNIQUE of INDEX maar is niet gedefinieerd als NOT NULL"
- eng "Column '%-.64s' is used with UNIQUE or INDEX but is not defined as NOT NULL"
- jps "Column '%-.64s' ‚ª UNIQUE ‚© INDEX ‚ÅŽg—p‚³‚ê‚Ü‚µ‚½. ‚±‚̃Jƒ‰ƒ€‚Í NOT NULL ‚Æ’è‹`‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ.",
- est "Tulp '%-.64s' on kasutusel indeksina, kuid ei ole määratletud kui NOT NULL"
- fre "La colonne '%-.32s' fait partie d'un index UNIQUE ou INDEX mais n'est pas définie comme NOT NULL"
- ger "Spalte '%-.64s' wurde mit UNIQUE oder INDEX benutzt, ist aber nicht als NOT NULL definiert"
- greek "Ôï ðåäßï '%-.64s' ÷ñçóéìïðïéåßôáé óáí UNIQUE Þ INDEX áëëÜ äåí Ý÷åé ïñéóèåß óáí NOT NULL"
- hun "A(z) '%-.64s' oszlop INDEX vagy UNIQUE (egyedi), de a definicioja szerint nem NOT NULL"
- ita "La colonna '%-.64s' e` usata con UNIQUE o INDEX ma non e` definita come NOT NULL"
- jpn "Column '%-.64s' ¤¬ UNIQUE ¤« INDEX ¤Ç»ÈÍѤµ¤ì¤Þ¤·¤¿. ¤³¤Î¥«¥é¥à¤Ï NOT NULL ¤ÈÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó."
- kor "'%-.64s' Ä®·³ÀÌ UNIQUE³ª INDEX¸¦ »ç¿ëÇÏ¿´Áö¸¸ NOT NULLÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò±º¿ä..."
- nor "Column '%-.32s' is used with UNIQUE or INDEX but is not defined as NOT NULL"
- norwegian-ny "Column '%-.32s' is used with UNIQUE or INDEX but is not defined as NOT NULL"
- pol "Column '%-.32s' is used with UNIQUE or INDEX but is not defined as NOT NULL"
- por "Coluna '%-.64s' é usada com única (UNIQUE) ou índice (INDEX), mas não está definida como não-nula (NOT NULL)"
- rum "Coloana '%-.64s' e folosita cu UNIQUE sau INDEX dar fara sa fie definita ca NOT NULL"
- rus "óÔÏÌÂÅÃ '%-.64s' ÉÓÐÏÌØÚÕÅÔÓÑ × UNIQUE ÉÌÉ × INDEX, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË NOT NULL"
- serbian "Kolona '%-.64s' je upotrebljena kao 'UNIQUE' ili 'INDEX' ali nije definisana kao 'NOT NULL'"
- slo "Pole '%-.64s' je pou¾ité s UNIQUE alebo INDEX, ale nie je zadefinované ako NOT NULL"
- spa "Columna '%-.32s' es usada con UNIQUE o INDEX pero no está definida como NOT NULL"
- swe "Kolumn '%-.32s' är använd med UNIQUE eller INDEX men är inte definerad med NOT NULL"
- ukr "óÔÏ×ÂÅÃØ '%-.64s' ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ Ú UNIQUE ÁÂÏ INDEX, ÁÌÅ ÎÅ ×ÉÚÎÁÞÅÎÉÊ ÑË NOT NULL"
-ER_CANT_FIND_UDF
- cze "Nemohu na-Bèíst funkci '%-.64s'"
- dan "Kan ikke læse funktionen '%-.64s'"
- nla "Kan functie '%-.64s' niet laden"
- eng "Can't load function '%-.64s'"
- jps "function '%-.64s' ‚ð ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ",
- est "Ei suuda avada funktsiooni '%-.64s'"
- fre "Imposible de charger la fonction '%-.64s'"
- ger "Kann Funktion '%-.64s' nicht laden"
- greek "Äåí åßíáé äõíáôÞ ç äéáäéêáóßá load ãéá ôç óõíÜñôçóç '%-.64s'"
- hun "A(z) '%-.64s' fuggveny nem toltheto be"
- ita "Impossibile caricare la funzione '%-.64s'"
- jpn "function '%-.64s' ¤ò ¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó"
- kor "'%-.64s' ÇÔ¼ö¸¦ ·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù."
- por "Não pode carregar a função '%-.64s'"
- rum "Nu pot incarca functia '%-.64s'"
- rus "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÆÕÎËÃÉÀ '%-.64s'"
- serbian "Ne mogu da uèitam funkciju '%-.64s'"
- slo "Nemô¾em naèíta» funkciu '%-.64s'"
- spa "No puedo cargar función '%-.64s'"
- swe "Kan inte ladda funktionen '%-.64s'"
- ukr "îÅ ÍÏÖÕ ÚÁ×ÁÎÔÁÖÉÔÉ ÆÕÎËæÀ '%-.64s'"
-ER_CANT_INITIALIZE_UDF
- cze "Nemohu inicializovat funkci '%-.64s'; %-.80s"
- dan "Kan ikke starte funktionen '%-.64s'; %-.80s"
- nla "Kan functie '%-.64s' niet initialiseren; %-.80s"
- eng "Can't initialize function '%-.64s'; %-.80s"
- jps "function '%-.64s' ‚ð‰Šú‰»‚Å‚«‚Ü‚¹‚ñ; %-.80s",
- est "Ei suuda algväärtustada funktsiooni '%-.64s'; %-.80s"
- fre "Impossible d'initialiser la fonction '%-.64s'; %-.80s"
- ger "Kann Funktion '%-.64s' nicht initialisieren: %-.80s"
- greek "Äåí åßíáé äõíáôÞ ç Ýíáñîç ôçò óõíÜñôçóçò '%-.64s'; %-.80s"
- hun "A(z) '%-.64s' fuggveny nem inicializalhato; %-.80s"
- ita "Impossibile inizializzare la funzione '%-.64s'; %-.80s"
- jpn "function '%-.64s' ¤ò½é´ü²½¤Ç¤­¤Þ¤»¤ó; %-.80s"
- kor "'%-.64s' ÇÔ¼ö¸¦ ÃʱâÈ­ ÇÏÁö ¸øÇß½À´Ï´Ù.; %-.80s"
- por "Não pode inicializar a função '%-.64s' - '%-.80s'"
- rum "Nu pot initializa functia '%-.64s'; %-.80s"
- rus "îÅ×ÏÚÍÏÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÆÕÎËÃÉÀ '%-.64s'; %-.80s"
- serbian "Ne mogu da inicijalizujem funkciju '%-.64s'; %-.80s"
- slo "Nemô¾em inicializova» funkciu '%-.64s'; %-.80s"
- spa "No puedo inicializar función '%-.64s'; %-.80s"
- swe "Kan inte initialisera funktionen '%-.64s'; '%-.80s'"
- ukr "îÅ ÍÏÖÕ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÆÕÎËæÀ '%-.64s'; %-.80s"
-ER_UDF_NO_PATHS
- cze "Pro sd-Bílenou knihovnu nejsou povoleny cesty"
- dan "Angivelse af sti ikke tilladt for delt bibliotek"
- nla "Geen pad toegestaan voor shared library"
- eng "No paths allowed for shared library"
- jps "shared library ‚ւ̃pƒX‚ª’Ê‚Á‚Ä‚¢‚Ü‚¹‚ñ",
- est "Teegi nimes ei tohi olla kataloogi"
- fre "Chemin interdit pour les bibliothèques partagées"
- ger "Keine Pfade gestattet für Shared Library"
- greek "Äåí âñÝèçêáí paths ãéá ôçí shared library"
- hun "Nincs ut a megosztott konyvtarakhoz (shared library)"
- ita "Non sono ammessi path per le librerie condivisa"
- jpn "shared library ¤Ø¤Î¥Ñ¥¹¤¬Ä̤äƤ¤¤Þ¤»¤ó"
- kor "°øÀ¯ ¶óÀ̹ö·¯¸®¸¦ À§ÇÑ Æнº°¡ Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù."
- por "Não há caminhos (paths) permitidos para biblioteca compartilhada"
- rum "Nici un paths nu e permis pentru o librarie shared"
- rus "îÅÄÏÐÕÓÔÉÍÏ ÕËÁÚÙ×ÁÔØ ÐÕÔÉ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË"
- serbian "Ne postoje dozvoljene putanje do share-ovane biblioteke"
- slo "Neprípustné ¾iadne cesty k zdieµanej kni¾nici"
- spa "No pasos permitidos para librarias conjugadas"
- swe "Man får inte ange sökväg för dynamiska bibliotek"
- ukr "îÅ ÄÏÚ×ÏÌÅÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÐÕÔ¦ ÄÌÑ ÒÏÚĦÌÀ×ÁÎÉÈ Â¦Â̦ÏÔÅË"
-ER_UDF_EXISTS
- cze "Funkce '%-.64s' ji-B¾ existuje"
- dan "Funktionen '%-.64s' findes allerede"
- nla "Functie '%-.64s' bestaat reeds"
- eng "Function '%-.64s' already exists"
- jps "Function '%-.64s' ‚ÍŠù‚É’è‹`‚³‚ê‚Ä‚¢‚Ü‚·",
- est "Funktsioon '%-.64s' juba eksisteerib"
- fre "La fonction '%-.64s' existe déjà"
- ger "Funktion '%-.64s' existiert schon"
- greek "Ç óõíÜñôçóç '%-.64s' õðÜñ÷åé Þäç"
- hun "A '%-.64s' fuggveny mar letezik"
- ita "La funzione '%-.64s' esiste gia`"
- jpn "Function '%-.64s' ¤Ï´û¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹"
- kor "'%-.64s' ÇÔ¼ö´Â ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù."
- por "Função '%-.64s' já existe"
- rum "Functia '%-.64s' exista deja"
- rus "æÕÎËÃÉÑ '%-.64s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "Funkcija '%-.64s' veæ postoji"
- slo "Funkcia '%-.64s' u¾ existuje"
- spa "Función '%-.64s' ya existe"
- swe "Funktionen '%-.64s' finns redan"
- ukr "æÕÎËÃ¦Ñ '%-.64s' ×ÖÅ ¦ÓÎÕ¤"
-ER_CANT_OPEN_LIBRARY
- cze "Nemohu otev-Bøít sdílenou knihovnu '%-.64s' (errno: %d %-.128s)"
- dan "Kan ikke åbne delt bibliotek '%-.64s' (errno: %d %-.128s)"
- nla "Kan shared library '%-.64s' niet openen (Errcode: %d %-.128s)"
- eng "Can't open shared library '%-.64s' (errno: %d %-.128s)"
- jps "shared library '%-.64s' ‚ðŠJ‚­Ž–‚ª‚Å‚«‚Ü‚¹‚ñ (errno: %d %-.128s)",
- est "Ei suuda avada jagatud teeki '%-.64s' (veakood: %d %-.128s)"
- fre "Impossible d'ouvrir la bibliothèque partagée '%-.64s' (errno: %d %-.128s)"
- ger "Kann Shared Library '%-.64s' nicht öffnen (Fehler: %d %-.128s)"
- greek "Äåí åßíáé äõíáôÞ ç áíÜãíùóç ôçò shared library '%-.64s' (êùäéêüò ëÜèïõò: %d %-.128s)"
- hun "A(z) '%-.64s' megosztott konyvtar nem hasznalhato (hibakod: %d %-.128s)"
- ita "Impossibile aprire la libreria condivisa '%-.64s' (errno: %d %-.128s)"
- jpn "shared library '%-.64s' ¤ò³«¤¯»ö¤¬¤Ç¤­¤Þ¤»¤ó (errno: %d %-.128s)"
- kor "'%-.64s' °øÀ¯ ¶óÀ̹ö·¯¸®¸¦ ¿­¼ö ¾ø½À´Ï´Ù.(¿¡·¯¹øÈ£: %d %-.128s)"
- nor "Can't open shared library '%-.64s' (errno: %d %-.128s)"
- norwegian-ny "Can't open shared library '%-.64s' (errno: %d %-.128s)"
- pol "Can't open shared library '%-.64s' (errno: %d %-.128s)"
- por "Não pode abrir biblioteca compartilhada '%-.64s' (erro no. '%d' - '%-.128s')"
- rum "Nu pot deschide libraria shared '%-.64s' (Eroare: %d %-.64s)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÄÉÎÁÍÉÞÅÓËÕÀ ÂÉÂÌÉÏÔÅËÕ '%-.64s' (ÏÛÉÂËÁ: %d %-.64s)"
- serbian "Ne mogu da otvorim share-ovanu biblioteku '%-.64s' (errno: %d %-.64s)"
- slo "Nemô¾em otvori» zdieµanú kni¾nicu '%-.64s' (chybový kód: %d %s)"
- spa "No puedo abrir libraria conjugada '%-.64s' (errno: %d %s)"
- swe "Kan inte öppna det dynamiska biblioteket '%-.64s' (Felkod: %d %s)"
- ukr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÒÏÚĦÌÀ×ÁÎÕ Â¦Â̦ÏÔÅËÕ '%-.64s' (ÐÏÍÉÌËÁ: %d %-.64s)"
-ER_CANT_FIND_DL_ENTRY
- cze "Nemohu naj-Bít funkci '%-.128s' v knihovnì"
- dan "Kan ikke finde funktionen '%-.128s' i bibliotek"
- nla "Kan functie '%-.128s' niet in library vinden"
- eng "Can't find function '%-.128s' in library"
- jps "function '%-.128s' ‚ðƒ‰ƒCƒuƒ‰ƒŠ[’†‚ÉŒ©•t‚¯‚鎖‚ª‚Å‚«‚Ü‚¹‚ñ",
- est "Ei leia funktsiooni '%-.128s' antud teegis"
- fre "Impossible de trouver la fonction '%-.128s' dans la bibliothèque"
- ger "Kann Funktion '%-.128s' in der Library nicht finden"
- greek "Äåí åßíáé äõíáôÞ ç áíåýñåóç ôçò óõíÜñôçóçò '%-.128s' óôçí âéâëéïèÞêç"
- hun "A(z) '%-.128s' fuggveny nem talalhato a konyvtarban"
- ita "Impossibile trovare la funzione '%-.128s' nella libreria"
- jpn "function '%-.128s' ¤ò¥é¥¤¥Ö¥é¥ê¡¼Ãæ¤Ë¸«ÉÕ¤±¤ë»ö¤¬¤Ç¤­¤Þ¤»¤ó"
- kor "¶óÀ̹ö·¯¸®¿¡¼­ '%-.128s' ÇÔ¼ö¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù."
- por "Não pode encontrar a função '%-.128s' na biblioteca"
- rum "Nu pot gasi functia '%-.128s' in libraria"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÔÙÓËÁÔØ ÆÕÎËÃÉÀ '%-.128s' × ÂÉÂÌÉÏÔÅËÅ"
- serbian "Ne mogu da pronadjem funkciju '%-.128s' u biblioteci"
- slo "Nemô¾em nájs» funkciu '%-.128s' v kni¾nici"
- spa "No puedo encontrar función '%-.128s' en libraria"
- swe "Hittar inte funktionen '%-.128s' in det dynamiska biblioteket"
- ukr "îÅ ÍÏÖÕ ÚÎÁÊÔÉ ÆÕÎËæÀ '%-.128s' Õ Â¦Â̦ÏÔÅæ"
-ER_FUNCTION_NOT_DEFINED
- cze "Funkce '%-.64s' nen-Bí definována"
- dan "Funktionen '%-.64s' er ikke defineret"
- nla "Functie '%-.64s' is niet gedefinieerd"
- eng "Function '%-.64s' is not defined"
- jps "Function '%-.64s' ‚Í’è‹`‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "Funktsioon '%-.64s' ei ole defineeritud"
- fre "La fonction '%-.64s' n'est pas définie"
- ger "Funktion '%-.64s' ist nicht definiert"
- greek "Ç óõíÜñôçóç '%-.64s' äåí Ý÷åé ïñéóèåß"
- hun "A '%-.64s' fuggveny nem definialt"
- ita "La funzione '%-.64s' non e` definita"
- jpn "Function '%-.64s' ¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "'%-.64s' ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù."
- por "Função '%-.64s' não está definida"
- rum "Functia '%-.64s' nu e definita"
- rus "æÕÎËÃÉÑ '%-.64s' ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
- serbian "Funkcija '%-.64s' nije definisana"
- slo "Funkcia '%-.64s' nie je definovaná"
- spa "Función '%-.64s' no está definida"
- swe "Funktionen '%-.64s' är inte definierad"
- ukr "æÕÎËæÀ '%-.64s' ÎÅ ×ÉÚÎÁÞÅÎÏ"
-ER_HOST_IS_BLOCKED
- cze "Stroj '%-.64s' je zablokov-Bán kvùli mnoha chybám pøi pøipojování. Odblokujete pou¾itím 'mysqladmin flush-hosts'"
- dan "Værten er blokeret på grund af mange fejlforespørgsler. Lås op med 'mysqladmin flush-hosts'"
- nla "Host '%-.64s' is geblokkeeerd vanwege te veel verbindings fouten. Deblokkeer met 'mysqladmin flush-hosts'"
- eng "Host '%-.64s' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
- jps "Host '%-.64s' ‚Í many connection error ‚Ì‚½‚ßA‹‘”Û‚³‚ê‚Ü‚µ‚½. 'mysqladmin flush-hosts' ‚ʼn𜂵‚Ä‚­‚¾‚³‚¢",
- est "Masin '%-.64s' on blokeeritud hulgaliste ühendusvigade tõttu. Blokeeringu saab tühistada 'mysqladmin flush-hosts' käsuga"
- fre "L'hôte '%-.64s' est bloqué à cause d'un trop grand nombre d'erreur de connection. Débloquer le par 'mysqladmin flush-hosts'"
- ger "Host '%-.64s' blockiert wegen zu vieler Verbindungsfehler. Aufheben der Blockierung mit 'mysqladmin flush-hosts'"
- greek "Ï õðïëïãéóôÞò Ý÷åé áðïêëåéóèåß ëüãù ðïëëáðëþí ëáèþí óýíäåóçò. ÐñïóðáèÞóôå íá äéïñþóåôå ìå 'mysqladmin flush-hosts'"
- hun "A '%-.64s' host blokkolodott, tul sok kapcsolodasi hiba miatt. Hasznalja a 'mysqladmin flush-hosts' parancsot"
- ita "Sistema '%-.64s' bloccato a causa di troppi errori di connessione. Per sbloccarlo: 'mysqladmin flush-hosts'"
- jpn "Host '%-.64s' ¤Ï many connection error ¤Î¤¿¤á¡¢µñÈݤµ¤ì¤Þ¤·¤¿. 'mysqladmin flush-hosts' ¤Ç²ò½ü¤·¤Æ¤¯¤À¤µ¤¤"
- kor "³Ê¹« ¸¹Àº ¿¬°á¿À·ù·Î ÀÎÇÏ¿© È£½ºÆ® '%-.64s'´Â ºí¶ôµÇ¾ú½À´Ï´Ù. 'mysqladmin flush-hosts'¸¦ ÀÌ¿ëÇÏ¿© ºí¶ôÀ» ÇØÁ¦Çϼ¼¿ä"
- por "'Host' '%-.64s' está bloqueado devido a muitos erros de conexão. Desbloqueie com 'mysqladmin flush-hosts'"
- rum "Host-ul '%-.64s' e blocat din cauza multelor erori de conectie. Poti deploca folosind 'mysqladmin flush-hosts'"
- rus "èÏÓÔ '%-.64s' ÚÁÂÌÏËÉÒÏ×ÁÎ ÉÚ-ÚÁ ÓÌÉÛËÏÍ ÂÏÌØÛÏÇÏ ËÏÌÉÞÅÓÔ×Á ÏÛÉÂÏË ÓÏÅÄÉÎÅÎÉÑ. òÁÚÂÌÏËÉÒÏ×ÁÔØ ÅÇÏ ÍÏÖÎÏ Ó ÐÏÍÏÝØÀ 'mysqladmin flush-hosts'"
- serbian "Host '%-.64s' je blokiran zbog previše grešaka u konekciji. Možete ga odblokirati pomoæu komande 'mysqladmin flush-hosts'"
- spa "Servidor '%-.64s' está bloqueado por muchos errores de conexión. Desbloquear con 'mysqladmin flush-hosts'"
- swe "Denna dator, '%-.64s', är blockerad pga många felaktig paket. Gör 'mysqladmin flush-hosts' för att ta bort alla blockeringarna"
- ukr "èÏÓÔ '%-.64s' ÚÁÂÌÏËÏ×ÁÎÏ Ú ÐÒÉÞÉÎÉ ×ÅÌÉËϧ ˦ÌØËÏÓÔ¦ ÐÏÍÉÌÏË Ú'¤ÄÎÁÎÎÑ. äÌÑ ÒÏÚÂÌÏËÕ×ÁÎÎÑ ×ÉËÏÒÉÓÔÏ×ÕÊÔÅ 'mysqladmin flush-hosts'"
-ER_HOST_NOT_PRIVILEGED
- cze "Stroj '%-.64s' nem-Bá povoleno se k tomuto MySQL serveru pøipojit"
- dan "Værten '%-.64s' kan ikke tilkoble denne MySQL-server"
- nla "Het is host '%-.64s' is niet toegestaan verbinding te maken met deze MySQL server"
- eng "Host '%-.64s' is not allowed to connect to this MySQL server"
- jps "Host '%-.64s' ‚Í MySQL server ‚ÉÚ‘±‚ð‹–‰Â‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "Masinal '%-.64s' puudub ligipääs sellele MySQL serverile"
- fre "Le hôte '%-.64s' n'est pas authorisé à se connecter à ce serveur MySQL"
- ger "Host '%-.64s' hat keine Berechtigung, sich mit diesem MySQL-Server zu verbinden"
- greek "Ï õðïëïãéóôÞò äåí Ý÷åé äéêáßùìá óýíäåóçò ìå ôïí MySQL server"
- hun "A '%-.64s' host szamara nem engedelyezett a kapcsolodas ehhez a MySQL szerverhez"
- ita "Al sistema '%-.64s' non e` consentita la connessione a questo server MySQL"
- jpn "Host '%-.64s' ¤Ï MySQL server ¤ËÀܳ¤òµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "'%-.64s' È£½ºÆ®´Â ÀÌ MySQL¼­¹ö¿¡ Á¢¼ÓÇÒ Çã°¡¸¦ ¹ÞÁö ¸øÇß½À´Ï´Ù."
- por "'Host' '%-.64s' não tem permissão para se conectar com este servidor MySQL"
- rum "Host-ul '%-.64s' nu este permis a se conecta la aceste server MySQL"
- rus "èÏÓÔÕ '%-.64s' ÎÅ ÒÁÚÒÅÛÁÅÔÓÑ ÐÏÄËÌÀÞÁÔØÓÑ Ë ÜÔÏÍÕ ÓÅÒ×ÅÒÕ MySQL"
- serbian "Host-u '%-.64s' nije dozvoljeno da se konektuje na ovaj MySQL server"
- spa "Servidor '%-.64s' no está permitido para conectar con este servidor MySQL"
- swe "Denna dator, '%-.64s', har inte privileger att använda denna MySQL server"
- ukr "èÏÓÔÕ '%-.64s' ÎÅ ÄÏ×ÏÌÅÎÏ Ú×'ÑÚÕ×ÁÔÉÓØ Ú ÃÉÍ ÓÅÒ×ÅÒÏÍ MySQL"
-ER_PASSWORD_ANONYMOUS_USER 42000
- cze "Pou-B¾íváte MySQL jako anonymní u¾ivatel a anonymní u¾ivatelé nemají povoleno mìnit hesla"
- dan "Du bruger MySQL som anonym bruger. Anonyme brugere må ikke ændre adgangskoder"
- nla "U gebruikt MySQL als anonieme gebruiker en deze mogen geen wachtwoorden wijzigen"
- eng "You are using MySQL as an anonymous user and anonymous users are not allowed to change passwords"
- jps "MySQL ‚ð anonymous users ‚ÅŽg—p‚µ‚Ä‚¢‚éó‘Ô‚Å‚ÍAƒpƒXƒ[ƒh‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ",
- est "Te kasutate MySQL-i anonüümse kasutajana, kelledel pole parooli muutmise õigust"
- fre "Vous utilisez un utilisateur anonyme et les utilisateurs anonymes ne sont pas autorisés à changer les mots de passe"
- ger "Sie benutzen MySQL als anonymer Benutzer und dürfen daher keine Passwörter ändern"
- greek "×ñçóéìïðïéåßôå ôçí MySQL óáí anonymous user êáé Ýôóé äåí ìðïñåßôå íá áëëÜîåôå ôá passwords Üëëùí ÷ñçóôþí"
- hun "Nevtelen (anonymous) felhasznalokent nem negedelyezett a jelszovaltoztatas"
- ita "Impossibile cambiare la password usando MySQL come utente anonimo"
- jpn "MySQL ¤ò anonymous users ¤Ç»ÈÍѤ·¤Æ¤¤¤ë¾õÂ֤Ǥϡ¢¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹¤Ï¤Ç¤­¤Þ¤»¤ó"
- kor "´ç½ÅÀº MySQL¼­¹ö¿¡ À͸íÀÇ »ç¿ëÀÚ·Î Á¢¼ÓÀ» Çϼ̽À´Ï´Ù.À͸íÀÇ »ç¿ëÀÚ´Â ¾ÏÈ£¸¦ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù."
- por "Você está usando o MySQL como usuário anônimo e usuários anônimos não têm permissão para mudar senhas"
- rum "Dumneavoastra folositi MySQL ca un utilizator anonim si utilizatorii anonimi nu au voie sa schime parolele"
- rus "÷Ù ÉÓÐÏÌØÚÕÅÔÅ MySQL ÏÔ ÉÍÅÎÉ ÁÎÏÎÉÍÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ, Á ÁÎÏÎÉÍÎÙÍ ÐÏÌØÚÏ×ÁÔÅÌÑÍ ÎÅ ÒÁÚÒÅÛÁÅÔÓÑ ÍÅÎÑÔØ ÐÁÒÏÌÉ"
- serbian "Vi koristite MySQL kao anonimni korisnik a anonimnim korisnicima nije dozvoljeno da menjaju lozinke"
- spa "Tu estás usando MySQL como un usuario anonimo y usuarios anonimos no tienen permiso para cambiar las claves"
- swe "Du använder MySQL som en anonym användare och som sådan får du inte ändra ditt lösenord"
- ukr "÷É ×ÉËÏÒÉÓÔÏ×Õ¤ÔÅ MySQL ÑË ÁÎÏΦÍÎÉÊ ËÏÒÉÓÔÕ×ÁÞ, ÔÏÍÕ ×ÁÍ ÎÅ ÄÏÚ×ÏÌÅÎÏ ÚͦÎÀ×ÁÔÉ ÐÁÒÏ̦"
-ER_PASSWORD_NOT_ALLOWED 42000
- cze "Na zm-Bìnu hesel ostatním musíte mít právo provést update tabulek v databázi mysql"
- dan "Du skal have tilladelse til at opdatere tabeller i MySQL databasen for at ændre andres adgangskoder"
- nla "U moet tabel update priveleges hebben in de mysql database om wachtwoorden voor anderen te mogen wijzigen"
- eng "You must have privileges to update tables in the mysql database to be able to change passwords for others"
- jps "‘¼‚̃†[ƒU[‚̃pƒXƒ[ƒh‚ð•ÏX‚·‚邽‚ß‚É‚Í, mysql ƒf[ƒ^ƒx[ƒX‚ɑ΂µ‚Ä update ‚Ì‹–‰Â‚ª‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ.",
- est "Teiste paroolide muutmiseks on nõutav tabelite muutmisõigus 'mysql' andmebaasis"
- fre "Vous devez avoir le privilège update sur les tables de la base de donnée mysql pour pouvoir changer les mots de passe des autres"
- ger "Sie benötigen die Berechtigung zum Aktualisieren von Tabellen in der Datenbank 'mysql', um die Passwörter anderer Benutzer ändern zu können"
- greek "ÐñÝðåé íá Ý÷åôå äéêáßùìá äéüñèùóçò ðéíÜêùí (update) óôç âÜóç äåäïìÝíùí mysql ãéá íá ìðïñåßôå íá áëëÜîåôå ôá passwords Üëëùí ÷ñçóôþí"
- hun "Onnek tabla-update joggal kell rendelkeznie a mysql adatbazisban masok jelszavanak megvaltoztatasahoz"
- ita "E` necessario il privilegio di update sulle tabelle del database mysql per cambiare le password per gli altri utenti"
- jpn "¾¤Î¥æ¡¼¥¶¡¼¤Î¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë¤Ï, mysql ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÂФ·¤Æ update ¤Îµö²Ä¤¬¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó."
- kor "´ç½ÅÀº ´Ù¸¥»ç¿ëÀÚµéÀÇ ¾ÏÈ£¸¦ º¯°æÇÒ ¼ö ÀÖµµ·Ï µ¥ÀÌŸº£À̽º º¯°æ±ÇÇÑÀ» °¡Á®¾ß ÇÕ´Ï´Ù."
- por "Você deve ter privilégios para atualizar tabelas no banco de dados mysql para ser capaz de mudar a senha de outros"
- rum "Trebuie sa aveti privilegii sa actualizati tabelele in bazele de date mysql ca sa puteti sa schimati parolele altora"
- rus "äÌÑ ÔÏÇÏ ÞÔÏÂÙ ÉÚÍÅÎÑÔØ ÐÁÒÏÌÉ ÄÒÕÇÉÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, Õ ×ÁÓ ÄÏÌÖÎÙ ÂÙÔØ ÐÒÉ×ÉÌÅÇÉÉ ÎÁ ÉÚÍÅÎÅÎÉÅ ÔÁÂÌÉÃ × ÂÁÚÅ ÄÁÎÎÙÈ mysql"
- serbian "Morate imati privilegije da možete da update-ujete odreðene tabele ako želite da menjate lozinke za druge korisnike"
- spa "Tu debes de tener permiso para actualizar tablas en la base de datos mysql para cambiar las claves para otros"
- swe "För att ändra lösenord för andra måste du ha rättigheter att uppdatera mysql-databasen"
- ukr "÷É ÐÏ×ÉΦ ÍÁÔÉ ÐÒÁ×Ï ÎÁ ÏÎÏ×ÌÅÎÎÑ ÔÁÂÌÉÃØ Õ ÂÁÚ¦ ÄÁÎÎÉÈ mysql, ÁÂÉ ÍÁÔÉ ÍÏÖÌÉצÓÔØ ÚͦÎÀ×ÁÔÉ ÐÁÒÏÌØ ¦ÎÛÉÍ"
-ER_PASSWORD_NO_MATCH 42000
- cze "V tabulce user nen-Bí ¾ádný odpovídající øádek"
- dan "Kan ikke finde nogen tilsvarende poster i bruger tabellen"
- nla "Kan geen enkele passende rij vinden in de gebruikers tabel"
- eng "Can't find any matching row in the user table"
- est "Ei leia vastavat kirjet kasutajate tabelis"
- fre "Impossible de trouver un enregistrement correspondant dans la table user"
- ger "Kann keinen passenden Datensatz in Tabelle 'user' finden"
- greek "Äåí åßíáé äõíáôÞ ç áíåýñåóç ôçò áíôßóôïé÷çò åããñáöÞò óôïí ðßíáêá ôùí ÷ñçóôþí"
- hun "Nincs megegyezo sor a user tablaban"
- ita "Impossibile trovare la riga corrispondente nella tabella user"
- kor "»ç¿ëÀÚ Å×ÀÌºí¿¡¼­ ÀÏÄ¡ÇÏ´Â °ÍÀ» ãÀ» ¼ö ¾øÀ¾´Ï´Ù."
- por "Não pode encontrar nenhuma linha que combine na tabela usuário (user table)"
- rum "Nu pot gasi nici o linie corespunzatoare in tabela utilizatorului"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÔÙÓËÁÔØ ÐÏÄÈÏÄÑÝÕÀ ÚÁÐÉÓØ × ÔÁÂÌÉÃÅ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
- serbian "Ne mogu da pronaðem odgovarajuæi slog u 'user' tabeli"
- spa "No puedo encontrar una línea correponsdiente en la tabla user"
- swe "Hittade inte användaren i 'user'-tabellen"
- ukr "îÅ ÍÏÖÕ ÚÎÁÊÔÉ ×¦ÄÐÏצÄÎÉÈ ÚÁÐÉÓ¦× Õ ÔÁÂÌÉæ ËÏÒÉÓÔÕ×ÁÞÁ"
-ER_UPDATE_INFO
- cze "Nalezen-Bých øádkù: %ld Zmìnìno: %ld Varování: %ld"
- dan "Poster fundet: %ld Ændret: %ld Advarsler: %ld"
- nla "Passende rijen: %ld Gewijzigd: %ld Waarschuwingen: %ld"
- eng "Rows matched: %ld Changed: %ld Warnings: %ld"
- jps "ˆê’v”(Rows matched): %ld •ÏX: %ld Warnings: %ld",
- est "Sobinud kirjeid: %ld Muudetud: %ld Hoiatusi: %ld"
- fre "Enregistrements correspondants: %ld Modifiés: %ld Warnings: %ld"
- ger "Datensätze gefunden: %ld Geändert: %ld Warnungen: %ld"
- hun "Megegyezo sorok szama: %ld Valtozott: %ld Warnings: %ld"
- ita "Rows riconosciute: %ld Cambiate: %ld Warnings: %ld"
- jpn "°ìÃ׿ô(Rows matched): %ld Êѹ¹: %ld Warnings: %ld"
- kor "ÀÏÄ¡ÇÏ´Â Rows : %ld°³ º¯°æµÊ: %ld°³ °æ°í: %ld°³"
- por "Linhas que combinaram: %ld - Alteradas: %ld - Avisos: %ld"
- rum "Linii identificate (matched): %ld Schimbate: %ld Atentionari (warnings): %ld"
- rus "óÏ×ÐÁÌÏ ÚÁÐÉÓÅÊ: %ld éÚÍÅÎÅÎÏ: %ld ðÒÅÄÕÐÒÅÖÄÅÎÉÊ: %ld"
- serbian "Odgovarajuæih slogova: %ld Promenjeno: %ld Upozorenja: %ld"
- spa "Líneas correspondientes: %ld Cambiadas: %ld Avisos: %ld"
- swe "Rader: %ld Uppdaterade: %ld Varningar: %ld"
- ukr "úÁÐÉÓ¦× ×¦ÄÐÏצÄÁ¤: %ld úͦÎÅÎÏ: %ld úÁÓÔÅÒÅÖÅÎØ: %ld"
-ER_CANT_CREATE_THREAD
- cze "Nemohu vytvo-Bøit nový thread (errno %d). Pokud je je¹tì nìjaká volná pamì», podívejte se do manuálu na èást o chybách specifických pro jednotlivé operaèní systémy"
- dan "Kan ikke danne en ny tråd (fejl nr. %d). Hvis computeren ikke er løbet tør for hukommelse, kan du se i brugervejledningen for en mulig operativ-system - afhængig fejl"
- nla "Kan geen nieuwe thread aanmaken (Errcode: %d). Indien er geen tekort aan geheugen is kunt u de handleiding consulteren over een mogelijke OS afhankelijke fout"
- eng "Can't create a new thread (errno %d); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug"
- jps "V‹K‚ɃXƒŒƒbƒh‚ªì‚ê‚Ü‚¹‚ñ‚Å‚µ‚½ (errno %d). ‚à‚µÅ‘åŽg—p‹–‰Âƒƒ‚ƒŠ[”‚ð‰z‚¦‚Ä‚¢‚È‚¢‚̂ɃGƒ‰[‚ª”­¶‚µ‚Ä‚¢‚é‚È‚ç, ƒ}ƒjƒ…ƒAƒ‹‚Ì’†‚©‚ç 'possible OS-dependent bug' ‚Æ‚¢‚¤•¶Žš‚ð’T‚µ‚Ä‚­‚Ý‚Ä‚¾‚³‚¢.",
- est "Ei suuda luua uut lõime (veakood %d). Kui mälu ei ole otsas, on tõenäoliselt tegemist operatsioonisüsteemispetsiifilise veaga"
- fre "Impossible de créer une nouvelle tâche (errno %d). S'il reste de la mémoire libre, consultez le manual pour trouver un éventuel bug dépendant de l'OS"
- ger "Kann keinen neuen Thread erzeugen (Fehler: %d). Sollte noch Speicher verfügbar sein, bitte im Handbuch wegen möglicher Fehler im Betriebssystem nachschlagen"
- hun "Uj thread letrehozasa nem lehetseges (Hibakod: %d). Amenyiben van meg szabad memoria, olvassa el a kezikonyv operacios rendszerfuggo hibalehetosegekrol szolo reszet"
- ita "Impossibile creare un nuovo thread (errno %d). Se non ci sono problemi di memoria disponibile puoi consultare il manuale per controllare possibili problemi dipendenti dal SO"
- jpn "¿·µ¬¤Ë¥¹¥ì¥Ã¥É¤¬ºî¤ì¤Þ¤»¤ó¤Ç¤·¤¿ (errno %d). ¤â¤·ºÇÂç»ÈÍѵö²Ä¥á¥â¥ê¡¼¿ô¤ò±Û¤¨¤Æ¤¤¤Ê¤¤¤Î¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Æ¤¤¤ë¤Ê¤é, ¥Þ¥Ë¥å¥¢¥ë¤ÎÃ椫¤é 'possible OS-dependent bug' ¤È¤¤¤¦Ê¸»ú¤òõ¤·¤Æ¤¯¤ß¤Æ¤À¤µ¤¤."
- kor "»õ·Î¿î ¾²·¹µå¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù.(¿¡·¯¹øÈ£ %d). ¸¸¾à ¿©À¯¸Þ¸ð¸®°¡ ÀÖ´Ù¸é OS-dependent¹ö±× ÀÇ ¸Þ´º¾ó ºÎºÐÀ» ã¾Æº¸½Ã¿À."
- nor "Can't create a new thread (errno %d); if you are not out of available memory you can consult the manual for any possible OS dependent bug"
- norwegian-ny "Can't create a new thread (errno %d); if you are not out of available memory you can consult the manual for any possible OS dependent bug"
- pol "Can't create a new thread (errno %d); if you are not out of available memory you can consult the manual for any possible OS dependent bug"
- por "Não pode criar uma nova 'thread' (erro no. %d). Se você não estiver sem memória disponível, você pode consultar o manual sobre um possível 'bug' dependente do sistema operacional"
- rum "Nu pot crea un thread nou (Eroare %d). Daca mai aveti memorie disponibila in sistem, puteti consulta manualul - ar putea exista un potential bug in legatura cu sistemul de operare"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÎÏ×ÙÊ ÐÏÔÏË (ÏÛÉÂËÁ %d). åÓÌÉ ÜÔÏ ÎÅ ÓÉÔÕÁÃÉÑ, Ó×ÑÚÁÎÎÁÑ Ó ÎÅÈ×ÁÔËÏÊ ÐÁÍÑÔÉ, ÔÏ ×ÁÍ ÓÌÅÄÕÅÔ ÉÚÕÞÉÔØ ÄÏËÕÍÅÎÔÁÃÉÀ ÎÁ ÐÒÅÄÍÅÔ ÏÐÉÓÁÎÉÑ ×ÏÚÍÏÖÎÏÊ ÏÛÉÂËÉ ÒÁÂÏÔÙ × ËÏÎËÒÅÔÎÏÊ ïó"
- serbian "Ne mogu da kreiram novi thread (errno %d). Ako imate još slobodne memorije, trebali biste da pogledate u priruèniku da li je ovo specifièna greška vašeg operativnog sistema"
- spa "No puedo crear un nuevo thread (errno %d). Si tu está con falta de memoria disponible, tu puedes consultar el Manual para posibles problemas con SO"
- swe "Kan inte skapa en ny tråd (errno %d)"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÎÏ×Õ Ç¦ÌËÕ (ÐÏÍÉÌËÁ %d). ñËÝÏ ×É ÎÅ ×ÉËÏÒÉÓÔÁÌÉ ÕÓÀ ÐÁÍ'ÑÔØ, ÔÏ ÐÒÏÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁæÀ ÄÏ ×ÁÛϧ ïó - ÍÏÖÌÉ×Ï ÃÅ ÐÏÍÉÌËÁ ïó"
-ER_WRONG_VALUE_COUNT_ON_ROW 21S01
- cze "Po-Bèet sloupcù neodpovídá poètu hodnot na øádku %ld"
- dan "Kolonne antallet stemmer ikke overens med antallet af værdier i post %ld"
- nla "Kolom aantal komt niet overeen met waarde aantal in rij %ld"
- eng "Column count doesn't match value count at row %ld"
- est "Tulpade hulk erineb väärtuste hulgast real %ld"
- ger "Anzahl der Felder stimmt nicht mit der Anzahl der Werte in Zeile %ld überein"
- hun "Az oszlopban talalhato ertek nem egyezik meg a %ld sorban szamitott ertekkel"
- ita "Il numero delle colonne non corrisponde al conteggio alla riga %ld"
- kor "Row %ld¿¡¼­ Ä®·³ Ä«¿îÆ®¿Í value Ä«¿îÅÍ¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù."
- por "Contagem de colunas não confere com a contagem de valores na linha %ld"
- rum "Numarul de coloane nu corespunde cu numarul de valori la linia %ld"
- rus "ëÏÌÉÞÅÓÔ×Ï ÓÔÏÌÂÃÏ× ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ËÏÌÉÞÅÓÔ×ÏÍ ÚÎÁÞÅÎÉÊ × ÚÁÐÉÓÉ %ld"
- serbian "Broj kolona ne odgovara broju vrednosti u slogu %ld"
- spa "El número de columnas no corresponde al número en la línea %ld"
- swe "Antalet kolumner motsvarar inte antalet värden på rad: %ld"
- ukr "ë¦ÌØ˦ÓÔØ ÓÔÏ×ÂÃ¦× ÎÅ ÓЦ×ÐÁÄÁ¤ Ú Ë¦ÌØ˦ÓÔÀ ÚÎÁÞÅÎØ Õ ÓÔÒÏæ %ld"
-ER_CANT_REOPEN_TABLE
- cze "Nemohu znovuotev-Bøít tabulku: '%-.64s"
- dan "Kan ikke genåbne tabel '%-.64s"
- nla "Kan tabel niet opnieuw openen: '%-.64s"
- eng "Can't reopen table: '%-.64s'"
- est "Ei suuda taasavada tabelit '%-.64s'"
- fre "Impossible de réouvrir la table: '%-.64s"
- ger "Kann Tabelle'%-.64s' nicht erneut öffnen"
- hun "Nem lehet ujra-megnyitni a tablat: '%-.64s"
- ita "Impossibile riaprire la tabella: '%-.64s'"
- kor "Å×À̺íÀ» ´Ù½Ã ¿­¼ö ¾ø±º¿ä: '%-.64s"
- nor "Can't reopen table: '%-.64s"
- norwegian-ny "Can't reopen table: '%-.64s"
- pol "Can't reopen table: '%-.64s"
- por "Não pode reabrir a tabela '%-.64s"
- rum "Nu pot redeschide tabela: '%-.64s'"
- rus "îÅ×ÏÚÍÏÖÎÏ ÚÁÎÏ×Ï ÏÔËÒÙÔØ ÔÁÂÌÉÃÕ '%-.64s'"
- serbian "Ne mogu da ponovo otvorim tabelu '%-.64s'"
- slo "Can't reopen table: '%-.64s"
- spa "No puedo reabrir tabla: '%-.64s"
- swe "Kunde inte stänga och öppna tabell '%-.64s"
- ukr "îÅ ÍÏÖÕ ÐÅÒÅצÄËÒÉÔÉ ÔÁÂÌÉÃÀ: '%-.64s'"
-ER_INVALID_USE_OF_NULL 22004
- cze "Neplatn-Bé u¾ití hodnoty NULL"
- dan "Forkert brug af nulværdi (NULL)"
- nla "Foutief gebruik van de NULL waarde"
- eng "Invalid use of NULL value"
- jps "NULL ’l‚ÌŽg—p•û–@‚ª•s“KØ‚Å‚·",
- est "NULL väärtuse väärkasutus"
- fre "Utilisation incorrecte de la valeur NULL"
- ger "Unerlaubte Verwendung eines NULL-Werts"
- hun "A NULL ervenytelen hasznalata"
- ita "Uso scorretto del valore NULL"
- jpn "NULL ÃͤλÈÍÑÊýË¡¤¬ÉÔŬÀڤǤ¹"
- kor "NULL °ªÀ» À߸ø »ç¿ëÇϼ̱º¿ä..."
- por "Uso inválido do valor NULL"
- rum "Folosirea unei value NULL e invalida"
- rus "îÅÐÒÁ×ÉÌØÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ×ÅÌÉÞÉÎÙ NULL"
- serbian "Pogrešna upotreba vrednosti NULL"
- spa "Invalido uso de valor NULL"
- swe "Felaktig använding av NULL"
- ukr "èÉÂÎÅ ×ÉËÏÒÉÓÔÁÎÎÑ ÚÎÁÞÅÎÎÑ NULL"
-ER_REGEXP_ERROR 42000
- cze "Regul-Bární výraz vrátil chybu '%-.64s'"
- dan "Fik fejl '%-.64s' fra regexp"
- nla "Fout '%-.64s' ontvangen van regexp"
- eng "Got error '%-.64s' from regexp"
- est "regexp tagastas vea '%-.64s'"
- fre "Erreur '%-.64s' provenant de regexp"
- ger "regexp lieferte Fehler '%-.64s'"
- hun "'%-.64s' hiba a regularis kifejezes hasznalata soran (regexp)"
- ita "Errore '%-.64s' da regexp"
- kor "regexp¿¡¼­ '%-.64s'°¡ ³µ½À´Ï´Ù."
- por "Obteve erro '%-.64s' em regexp"
- rum "Eroarea '%-.64s' obtinuta din expresia regulara (regexp)"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ '%-.64s' ÏÔ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
- serbian "Funkcija regexp je vratila grešku '%-.64s'"
- spa "Obtenido error '%-.64s' de regexp"
- swe "Fick fel '%-.64s' från REGEXP"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ '%-.64s' ×¦Ä ÒÅÇÕÌÑÒÎÏÇÏ ×ÉÒÁÚÕ"
-ER_MIX_OF_GROUP_FUNC_AND_FIELDS 42000
- cze "Pokud nen-Bí ¾ádná GROUP BY klauzule, není dovoleno souèasné pou¾ití GROUP polo¾ek (MIN(),MAX(),COUNT()...) s ne GROUP polo¾kami"
- dan "Sammenblanding af GROUP kolonner (MIN(),MAX(),COUNT()...) uden GROUP kolonner er ikke tilladt, hvis der ikke er noget GROUP BY prædikat"
- nla "Het mixen van GROUP kolommen (MIN(),MAX(),COUNT()...) met no-GROUP kolommen is foutief indien er geen GROUP BY clausule is"
- eng "Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause"
- est "GROUP tulpade (MIN(),MAX(),COUNT()...) kooskasutamine tavaliste tulpadega ilma GROUP BY klauslita ei ole lubatud"
- fre "Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY"
- ger "Das Vermischen von GROUP-Feldern (MIN(),MAX(),COUNT()...) mit Nicht-GROUP-Feldern ist nicht zulässig, wenn keine GROUP-BY-Klausel vorhanden ist"
- hun "A GROUP mezok (MIN(),MAX(),COUNT()...) kevert hasznalata nem lehetseges GROUP BY hivatkozas nelkul"
- ita "Il mescolare funzioni di aggregazione (MIN(),MAX(),COUNT()...) e non e` illegale se non c'e` una clausula GROUP BY"
- kor "Mixing of GROUP Ä®·³s (MIN(),MAX(),COUNT(),...) with no GROUP Ä®·³s is illegal if there is no GROUP BY clause"
- por "Mistura de colunas agrupadas (com MIN(), MAX(), COUNT(), ...) com colunas não agrupadas é ilegal, se não existir uma cláusula de agrupamento (cláusula GROUP BY)"
- rum "Amestecarea de coloane GROUP (MIN(),MAX(),COUNT()...) fara coloane GROUP este ilegala daca nu exista o clauza GROUP BY"
- rus "ïÄÎÏ×ÒÅÍÅÎÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÓÇÒÕÐÐÉÒÏ×ÁÎÎÙÈ (GROUP) ÓÔÏÌÂÃÏ× (MIN(),MAX(),COUNT(),...) Ó ÎÅÓÇÒÕÐÐÉÒÏ×ÁÎÎÙÍÉ ÓÔÏÌÂÃÁÍÉ Ñ×ÌÑÅÔÓÑ ÎÅËÏÒÒÅËÔÎÙÍ, ÅÓÌÉ × ×ÙÒÁÖÅÎÉÉ ÅÓÔØ GROUP BY"
- serbian "Upotreba agregatnih funkcija (MIN(),MAX(),COUNT()...) bez 'GROUP' kolona je pogrešna ako ne postoji 'GROUP BY' iskaz"
- spa "Mezcla de columnas GROUP (MIN(),MAX(),COUNT()...) con no GROUP columnas es ilegal si no hat la clausula GROUP BY"
- swe "Man får ha både GROUP-kolumner (MIN(),MAX(),COUNT()...) och fält i en fråga om man inte har en GROUP BY-del"
- ukr "úͦÛÕ×ÁÎÎÑ GROUP ÓÔÏ×ÂÃ¦× (MIN(),MAX(),COUNT()...) Ú ÎÅ GROUP ÓÔÏ×ÂÃÑÍÉ ¤ ÚÁÂÏÒÏÎÅÎÉÍ, ÑËÝÏ ÎÅ ÍÁ¤ GROUP BY"
-ER_NONEXISTING_GRANT 42000
- cze "Neexistuje odpov-Bídající grant pro u¾ivatele '%-.32s' na stroji '%-.64s'"
- dan "Denne tilladelse findes ikke for brugeren '%-.32s' på vært '%-.64s'"
- nla "Deze toegang (GRANT) is niet toegekend voor gebruiker '%-.32s' op host '%-.64s'"
- eng "There is no such grant defined for user '%-.32s' on host '%-.64s'"
- jps "ƒ†[ƒU[ '%-.32s' (ƒzƒXƒg '%-.64s' ‚̃†[ƒU[) ‚Í‹–‰Â‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "Sellist õigust ei ole defineeritud kasutajale '%-.32s' masinast '%-.64s'"
- fre "Un tel droit n'est pas défini pour l'utilisateur '%-.32s' sur l'hôte '%-.64s'"
- ger "Für Benutzer '%-.32s' auf Host '%-.64s' gibt es keine solche Berechtigung"
- hun "A '%-.32s' felhasznalonak nincs ilyen joga a '%-.64s' host-on"
- ita "GRANT non definita per l'utente '%-.32s' dalla macchina '%-.64s'"
- jpn "¥æ¡¼¥¶¡¼ '%-.32s' (¥Û¥¹¥È '%-.64s' ¤Î¥æ¡¼¥¶¡¼) ¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "»ç¿ëÀÚ '%-.32s' (È£½ºÆ® '%-.64s')¸¦ À§ÇÏ¿© Á¤ÀÇµÈ ±×·± ½ÂÀÎÀº ¾ø½À´Ï´Ù."
- por "Não existe tal permissão (grant) definida para o usuário '%-.32s' no 'host' '%-.64s'"
- rum "Nu exista un astfel de grant definit pentru utilzatorul '%-.32s' de pe host-ul '%-.64s'"
- rus "ôÁËÉÅ ÐÒÁ×Á ÎÅ ÏÐÒÅÄÅÌÅÎÙ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ '%-.32s' ÎÁ ÈÏÓÔÅ '%-.64s'"
- serbian "Ne postoji odobrenje za pristup korisniku '%-.32s' na host-u '%-.64s'"
- spa "No existe permiso definido para usuario '%-.32s' en el servidor '%-.64s'"
- swe "Det finns inget privilegium definierat för användare '%-.32s' på '%-.64s'"
- ukr "ðÏ×ÎÏ×ÁÖÅÎØ ÎÅ ×ÉÚÎÁÞÅÎÏ ÄÌÑ ËÏÒÉÓÔÕ×ÁÞÁ '%-.32s' Ú ÈÏÓÔÕ '%-.64s'"
-ER_TABLEACCESS_DENIED_ERROR 42000
- cze "%-.16s p-Bøíkaz nepøístupný pro u¾ivatele: '%-.32s'@'%-.64s' pro tabulku '%-.64s'"
- dan "%-.16s-kommandoen er ikke tilladt for brugeren '%-.32s'@'%-.64s' for tabellen '%-.64s'"
- nla "%-.16s commando geweigerd voor gebruiker: '%-.32s'@'%-.64s' voor tabel '%-.64s'"
- eng "%-.16s command denied to user '%-.32s'@'%-.64s' for table '%-.64s'"
- jps "ƒRƒ}ƒ“ƒh %-.16s ‚Í ƒ†[ƒU[ '%-.32s'@'%-.64s' ,ƒe[ƒuƒ‹ '%-.64s' ‚ɑ΂µ‚Ä‹–‰Â‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "%-.16s käsk ei ole lubatud kasutajale '%-.32s'@'%-.64s' tabelis '%-.64s'"
- fre "La commande '%-.16s' est interdite à l'utilisateur: '%-.32s'@'@%-.64s' sur la table '%-.64s'"
- ger "%-.16s Befehl nicht erlaubt für Benutzer '%-.32s'@'%-.64s' auf Tabelle '%-.64s'"
- hun "%-.16s parancs a '%-.32s'@'%-.64s' felhasznalo szamara nem engedelyezett a '%-.64s' tablaban"
- ita "Comando %-.16s negato per l'utente: '%-.32s'@'%-.64s' sulla tabella '%-.64s'"
- jpn "¥³¥Þ¥ó¥É %-.16s ¤Ï ¥æ¡¼¥¶¡¼ '%-.32s'@'%-.64s' ,¥Æ¡¼¥Ö¥ë '%-.64s' ¤ËÂФ·¤Æµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "'%-.16s' ¸í·ÉÀº ´ÙÀ½ »ç¿ëÀÚ¿¡°Ô °ÅºÎµÇ¾ú½À´Ï´Ù. : '%-.32s'@'%-.64s' for Å×À̺í '%-.64s'"
- por "Comando '%-.16s' negado para o usuário '%-.32s'@'%-.64s' na tabela '%-.64s'"
- rum "Comanda %-.16s interzisa utilizatorului: '%-.32s'@'%-.64s' pentru tabela '%-.64s'"
- rus "ëÏÍÁÎÄÁ %-.16s ÚÁÐÒÅÝÅÎÁ ÐÏÌØÚÏ×ÁÔÅÌÀ '%-.32s'@'%-.64s' ÄÌÑ ÔÁÂÌÉÃÙ '%-.64s'"
- serbian "%-.16s komanda zabranjena za korisnika '%-.32s'@'%-.64s' za tabelu '%-.64s'"
- spa "%-.16s comando negado para usuario: '%-.32s'@'%-.64s' para tabla '%-.64s'"
- swe "%-.16s ej tillåtet för '%-.32s'@'%-.64s' för tabell '%-.64s'"
- ukr "%-.16s ËÏÍÁÎÄÁ ÚÁÂÏÒÏÎÅÎÁ ËÏÒÉÓÔÕ×ÁÞÕ: '%-.32s'@'%-.64s' Õ ÔÁÂÌÉæ '%-.64s'"
-ER_COLUMNACCESS_DENIED_ERROR 42000
- cze "%-.16s p-Bøíkaz nepøístupný pro u¾ivatele: '%-.32s'@'%-.64s' pro sloupec '%-.64s' v tabulce '%-.64s'"
- dan "%-.16s-kommandoen er ikke tilladt for brugeren '%-.32s'@'%-.64s' for kolonne '%-.64s' in tabellen '%-.64s'"
- nla "%-.16s commando geweigerd voor gebruiker: '%-.32s'@'%-.64s' voor kolom '%-.64s' in tabel '%-.64s'"
- eng "%-.16s command denied to user '%-.32s'@'%-.64s' for column '%-.64s' in table '%-.64s'"
- jps "ƒRƒ}ƒ“ƒh %-.16s ‚Í ƒ†[ƒU[ '%-.32s'@'%-.64s'\n ƒJƒ‰ƒ€ '%-.64s' ƒe[ƒuƒ‹ '%-.64s' ‚ɑ΂µ‚Ä‹–‰Â‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ",
- est "%-.16s käsk ei ole lubatud kasutajale '%-.32s'@'%-.64s' tulbale '%-.64s' tabelis '%-.64s'"
- fre "La commande '%-.16s' est interdite à l'utilisateur: '%-.32s'@'@%-.64s' sur la colonne '%-.64s' de la table '%-.64s'"
- ger "%-.16s Befehl nicht erlaubt für Benutzer '%-.32s'@'%-.64s' und Feld '%-.64s' in Tabelle '%-.64s'"
- hun "%-.16s parancs a '%-.32s'@'%-.64s' felhasznalo szamara nem engedelyezett a '%-.64s' mezo eseten a '%-.64s' tablaban"
- ita "Comando %-.16s negato per l'utente: '%-.32s'@'%-.64s' sulla colonna '%-.64s' della tabella '%-.64s'"
- jpn "¥³¥Þ¥ó¥É %-.16s ¤Ï ¥æ¡¼¥¶¡¼ '%-.32s'@'%-.64s'\n ¥«¥é¥à '%-.64s' ¥Æ¡¼¥Ö¥ë '%-.64s' ¤ËÂФ·¤Æµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
- kor "'%-.16s' ¸í·ÉÀº ´ÙÀ½ »ç¿ëÀÚ¿¡°Ô °ÅºÎµÇ¾ú½À´Ï´Ù. : '%-.32s'@'%-.64s' for Ä®·³ '%-.64s' in Å×À̺í '%-.64s'"
- por "Comando '%-.16s' negado para o usuário '%-.32s'@'%-.64s' na coluna '%-.64s', na tabela '%-.64s'"
- rum "Comanda %-.16s interzisa utilizatorului: '%-.32s'@'%-.64s' pentru coloana '%-.64s' in tabela '%-.64s'"
- rus "ëÏÍÁÎÄÁ %-.16s ÚÁÐÒÅÝÅÎÁ ÐÏÌØÚÏ×ÁÔÅÌÀ '%-.32s'@'%-.64s' ÄÌÑ ÓÔÏÌÂÃÁ '%-.64s' × ÔÁÂÌÉÃÅ '%-.64s'"
- serbian "%-.16s komanda zabranjena za korisnika '%-.32s'@'%-.64s' za kolonu '%-.64s' iz tabele '%-.64s'"
- spa "%-.16s comando negado para usuario: '%-.32s'@'%-.64s' para columna '%-.64s' en la tabla '%-.64s'"
- swe "%-.16s ej tillåtet för '%-.32s'@'%-.64s' för kolumn '%-.64s' i tabell '%-.64s'"
- ukr "%-.16s ËÏÍÁÎÄÁ ÚÁÂÏÒÏÎÅÎÁ ËÏÒÉÓÔÕ×ÁÞÕ: '%-.32s'@'%-.64s' ÄÌÑ ÓÔÏ×ÂÃÑ '%-.64s' Õ ÔÁÂÌÉæ '%-.64s'"
-ER_ILLEGAL_GRANT_FOR_TABLE 42000
- cze "Neplatn-Bý pøíkaz GRANT/REVOKE. Prosím, pøeètìte si v manuálu, jaká privilegia je mo¾né pou¾ít."
- dan "Forkert GRANT/REVOKE kommando. Se i brugervejledningen hvilke privilegier der kan specificeres."
- nla "Foutief GRANT/REVOKE commando. Raadpleeg de handleiding welke priveleges gebruikt kunnen worden."
- eng "Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used"
- est "Vigane GRANT/REVOKE käsk. Tutvu kasutajajuhendiga"
- fre "Commande GRANT/REVOKE incorrecte. Consultez le manuel."
- ger "Unzulässiger GRANT- oder REVOKE-Befehl. Verfügbare Berechtigungen sind im Handbuch aufgeführt"
- greek "Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used."
- hun "Ervenytelen GRANT/REVOKE parancs. Kerem, nezze meg a kezikonyvben, milyen jogok lehetsegesek"
- ita "Comando GRANT/REVOKE illegale. Prego consultare il manuale per sapere quali privilegi possono essere usati."
- jpn "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used."
- kor "À߸øµÈ GRANT/REVOKE ¸í·É. ¾î¶² ±Ç¸®¿Í ½ÂÀÎÀÌ »ç¿ëµÇ¾î Áú ¼ö ÀÖ´ÂÁö ¸Þ´º¾óÀ» º¸½Ã¿À."
- nor "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used."
- norwegian-ny "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used."
- pol "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used."
- por "Comando GRANT/REVOKE ilegal. Por favor consulte no manual quais privilégios podem ser usados."
- rum "Comanda GRANT/REVOKE ilegala. Consultati manualul in privinta privilegiilor ce pot fi folosite."
- rus "îÅ×ÅÒÎÁÑ ËÏÍÁÎÄÁ GRANT ÉÌÉ REVOKE. ïÂÒÁÔÉÔÅÓØ Ë ÄÏËÕÍÅÎÔÁÃÉÉ, ÞÔÏÂÙ ×ÙÑÓÎÉÔØ, ËÁËÉÅ ÐÒÉ×ÉÌÅÇÉÉ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ"
- serbian "Pogrešna 'GRANT' odnosno 'REVOKE' komanda. Molim Vas pogledajte u priruèniku koje vrednosti mogu biti upotrebljene."
- slo "Illegal GRANT/REVOKE command; please consult the manual to see which privleges can be used."
- spa "Ilegal comando GRANT/REVOKE. Por favor consulte el manual para cuales permisos pueden ser usados."
- swe "Felaktigt GRANT-privilegium använt"
- ukr "èÉÂÎÁ GRANT/REVOKE ËÏÍÁÎÄÁ; ÐÒÏÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁæÀ ÓÔÏÓÏ×ÎÏ ÔÏÇÏ, Ñ˦ ÐÒÁ×Á ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ"
-ER_GRANT_WRONG_HOST_OR_USER 42000
- cze "Argument p-Bøíkazu GRANT u¾ivatel nebo stroj je pøíli¹ dlouhý"
- dan "Værts- eller brugernavn for langt til GRANT"
- nla "De host of gebruiker parameter voor GRANT is te lang"
- eng "The host or user argument to GRANT is too long"
- est "Masina või kasutaja nimi GRANT lauses on liiga pikk"
- fre "L'hôte ou l'utilisateur donné en argument à GRANT est trop long"
- ger "Das Host- oder User-Argument für GRANT ist zu lang"
- hun "A host vagy felhasznalo argumentuma tul hosszu a GRANT parancsban"
- ita "L'argomento host o utente per la GRANT e` troppo lungo"
- kor "½ÂÀÎ(GRANT)À» À§ÇÏ¿© »ç¿ëÇÑ »ç¿ëÀÚ³ª È£½ºÆ®ÀÇ °ªµéÀÌ ³Ê¹« ±é´Ï´Ù."
- por "Argumento de 'host' ou de usuário para o GRANT é longo demais"
- rum "Argumentul host-ului sau utilizatorului pentru GRANT e prea lung"
- rus "óÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ/ÈÏÓÔÁ ÄÌÑ GRANT"
- serbian "Argument 'host' ili 'korisnik' prosleðen komandi 'GRANT' je predugaèak"
- spa "El argumento para servidor o usuario para GRANT es demasiado grande"
- swe "Felaktigt maskinnamn eller användarnamn använt med GRANT"
- ukr "áÒÇÕÍÅÎÔ host ÁÂÏ user ÄÌÑ GRANT ÚÁÄÏ×ÇÉÊ"
-ER_NO_SUCH_TABLE 42S02
- cze "Tabulka '%-.64s.%s' neexistuje"
- dan "Tabellen '%-.64s.%-.64s' eksisterer ikke"
- nla "Tabel '%-.64s.%s' bestaat niet"
- eng "Table '%-.64s.%-.64s' doesn't exist"
- est "Tabelit '%-.64s.%-.64s' ei eksisteeri"
- fre "La table '%-.64s.%s' n'existe pas"
- ger "Tabelle '%-.64s.%-.64s' existiert nicht"
- hun "A '%-.64s.%s' tabla nem letezik"
- ita "La tabella '%-.64s.%s' non esiste"
- jpn "Table '%-.64s.%s' doesn't exist"
- kor "Å×À̺í '%-.64s.%s' ´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."
- nor "Table '%-.64s.%s' doesn't exist"
- norwegian-ny "Table '%-.64s.%s' doesn't exist"
- pol "Table '%-.64s.%s' doesn't exist"
- por "Tabela '%-.64s.%-.64s' não existe"
- rum "Tabela '%-.64s.%-.64s' nu exista"
- rus "ôÁÂÌÉÃÁ '%-.64s.%-.64s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
- serbian "Tabela '%-.64s.%-.64s' ne postoji"
- slo "Table '%-.64s.%s' doesn't exist"
- spa "Tabla '%-.64s.%s' no existe"
- swe "Det finns ingen tabell som heter '%-.64s.%s'"
- ukr "ôÁÂÌÉÃÑ '%-.64s.%-.64s' ÎÅ ¦ÓÎÕ¤"
-ER_NONEXISTING_TABLE_GRANT 42000
- cze "Neexistuje odpov-Bídající grant pro u¾ivatele '%-.32s' na stroji '%-.64s' pro tabulku '%-.64s'"
- dan "Denne tilladelse eksisterer ikke for brugeren '%-.32s' på vært '%-.64s' for tabellen '%-.64s'"
- nla "Deze toegang (GRANT) is niet toegekend voor gebruiker '%-.32s' op host '%-.64s' op tabel '%-.64s'"
- eng "There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'"
- est "Sellist õigust ei ole defineeritud kasutajale '%-.32s' masinast '%-.64s' tabelile '%-.64s'"
- fre "Un tel droit n'est pas défini pour l'utilisateur '%-.32s' sur l'hôte '%-.64s' sur la table '%-.64s'"
- ger "Eine solche Berechtigung ist für User '%-.32s' auf Host '%-.64s' an Tabelle '%-.64s' nicht definiert"
- hun "A '%-.32s' felhasznalo szamara a '%-.64s' host '%-.64s' tablajaban ez a parancs nem engedelyezett"
- ita "GRANT non definita per l'utente '%-.32s' dalla macchina '%-.64s' sulla tabella '%-.64s'"
- kor "»ç¿ëÀÚ '%-.32s'(È£½ºÆ® '%-.64s')´Â Å×À̺í '%-.64s'¸¦ »ç¿ëÇϱâ À§ÇÏ¿© Á¤ÀÇµÈ ½ÂÀÎÀº ¾ø½À´Ï´Ù. "
- por "Não existe tal permissão (grant) definido para o usuário '%-.32s' no 'host' '%-.64s', na tabela '%-.64s'"
- rum "Nu exista un astfel de privilegiu (grant) definit pentru utilizatorul '%-.32s' de pe host-ul '%-.64s' pentru tabela '%-.64s'"
- rus "ôÁËÉÅ ÐÒÁ×Á ÎÅ ÏÐÒÅÄÅÌÅÎÙ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ '%-.32s' ÎÁ ËÏÍÐØÀÔÅÒÅ '%-.64s' ÄÌÑ ÔÁÂÌÉÃÙ '%-.64s'"
- serbian "Ne postoji odobrenje za pristup korisniku '%-.32s' na host-u '%-.64s' tabeli '%-.64s'"
- spa "No existe tal permiso definido para usuario '%-.32s' en el servidor '%-.64s' en la tabla '%-.64s'"
- swe "Det finns inget privilegium definierat för användare '%-.32s' på '%-.64s' för tabell '%-.64s'"
- ukr "ðÏ×ÎÏ×ÁÖÅÎØ ÎÅ ×ÉÚÎÁÞÅÎÏ ÄÌÑ ËÏÒÉÓÔÕ×ÁÞÁ '%-.32s' Ú ÈÏÓÔÕ '%-.64s' ÄÌÑ ÔÁÂÌÉæ '%-.64s'"
-ER_NOT_ALLOWED_COMMAND 42000
- cze "Pou-B¾itý pøíkaz není v této verzi MySQL povolen"
- dan "Den brugte kommando er ikke tilladt med denne udgave af MySQL"
- nla "Het used commando is niet toegestaan in deze MySQL versie"
- eng "The used command is not allowed with this MySQL version"
- est "Antud käsk ei ole lubatud käesolevas MySQL versioonis"
- fre "Cette commande n'existe pas dans cette version de MySQL"
- ger "Der verwendete Befehl ist in dieser MySQL-Version nicht zulässig"
- hun "A hasznalt parancs nem engedelyezett ebben a MySQL verzioban"
- ita "Il comando utilizzato non e` supportato in questa versione di MySQL"
- kor "»ç¿ëµÈ ¸í·ÉÀº ÇöÀçÀÇ MySQL ¹öÁ¯¿¡¼­´Â ÀÌ¿ëµÇÁö ¾Ê½À´Ï´Ù."
- por "Comando usado não é permitido para esta versão do MySQL"
- rum "Comanda folosita nu este permisa pentru aceasta versiune de MySQL"
- rus "üÔÁ ËÏÍÁÎÄÁ ÎÅ ÄÏÐÕÓËÁÅÔÓÑ × ÄÁÎÎÏÊ ×ÅÒÓÉÉ MySQL"
- serbian "Upotrebljena komanda nije dozvoljena sa ovom verzijom MySQL servera"
- spa "El comando usado no es permitido con esta versión de MySQL"
- swe "Du kan inte använda detta kommando med denna MySQL version"
- ukr "÷ÉËÏÒÉÓÔÏ×Õ×ÁÎÁ ËÏÍÁÎÄÁ ÎÅ ÄÏÚ×ÏÌÅÎÁ Õ Ã¦Ê ×ÅÒÓ¦§ MySQL"
-ER_SYNTAX_ERROR 42000
- cze "Va-B¹e syntaxe je nìjaká divná"
- dan "Der er en fejl i SQL syntaksen"
- nla "Er is iets fout in de gebruikte syntax"
- eng "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use"
- est "Viga SQL süntaksis"
- fre "Erreur de syntaxe"
- ger "Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen"
- greek "You have an error in your SQL syntax"
- hun "Szintaktikai hiba"
- ita "Errore di sintassi nella query SQL"
- jpn "Something is wrong in your syntax"
- kor "SQL ±¸¹®¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù."
- nor "Something is wrong in your syntax"
- norwegian-ny "Something is wrong in your syntax"
- pol "Something is wrong in your syntax"
- por "Você tem um erro de sintaxe no seu SQL"
- rum "Aveti o eroare in sintaxa RSQL"
- rus "õ ×ÁÓ ÏÛÉÂËÁ × ÚÁÐÒÏÓÅ. éÚÕÞÉÔÅ ÄÏËÕÍÅÎÔÁÃÉÀ ÐÏ ÉÓÐÏÌØÚÕÅÍÏÊ ×ÅÒÓÉÉ MySQL ÎÁ ÐÒÅÄÍÅÔ ËÏÒÒÅËÔÎÏÇÏ ÓÉÎÔÁËÓÉÓÁ"
- serbian "Imate grešku u vašoj SQL sintaksi"
- slo "Something is wrong in your syntax"
- spa "Algo está equivocado en su sintax"
- swe "Du har något fel i din syntax"
- ukr "õ ×ÁÓ ÐÏÍÉÌËÁ Õ ÓÉÎÔÁËÓÉÓ¦ SQL"
-ER_DELAYED_CANT_CHANGE_LOCK
- cze "Zpo-B¾dìný insert threadu nebyl schopen získat po¾adovaný zámek pro tabulku %-.64s"
- dan "Forsinket indsættelse tråden (delayed insert thread) kunne ikke opnå lås på tabellen %-.64s"
- nla "'Delayed insert' thread kon de aangevraagde 'lock' niet krijgen voor tabel %-.64s"
- eng "Delayed insert thread couldn't get requested lock for table %-.64s"
- est "INSERT DELAYED lõim ei suutnud saada soovitud lukku tabelile %-.64s"
- fre "La tâche 'delayed insert' n'a pas pu obtenir le verrou démandé sur la table %-.64s"
- ger "Verzögerter (DELAYED) Einfüge-Thread konnte die angeforderte Sperre für Tabelle '%-.64s' nicht erhalten"
- hun "A kesleltetett beillesztes (delayed insert) thread nem kapott zatolast a %-.64s tablahoz"
- ita "Il thread di inserimento ritardato non riesce ad ottenere il lock per la tabella %-.64s"
- kor "Áö¿¬µÈ insert ¾²·¹µå°¡ Å×À̺í %-.64sÀÇ ¿ä±¸µÈ ¶ôÅ·À» ó¸®ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù."
- por "'Thread' de inserção retardada (atrasada) pois não conseguiu obter a trava solicitada para tabela '%-.64s'"
- rum "Thread-ul pentru inserarea aminata nu a putut obtine lacatul (lock) pentru tabela %-.64s"
- rus "ðÏÔÏË, ÏÂÓÌÕÖÉ×ÁÀÝÉÊ ÏÔÌÏÖÅÎÎÕÀ ×ÓÔÁ×ËÕ (delayed insert), ÎÅ ÓÍÏÇ ÐÏÌÕÞÉÔØ ÚÁÐÒÁÛÉ×ÁÅÍÕÀ ÂÌÏËÉÒÏ×ËÕ ÎÁ ÔÁÂÌÉÃÕ %-.64s"
- serbian "Prolongirani 'INSERT' thread nije mogao da dobije traženo zakljuèavanje tabele '%-.64s'"
- spa "Thread de inserción retarda no pudiendo bloquear para la tabla %-.64s"
- swe "DELAYED INSERT-tråden kunde inte låsa tabell '%-.64s'"
- ukr "ç¦ÌËÁ ÄÌÑ INSERT DELAYED ÎÅ ÍÏÖÅ ÏÔÒÉÍÁÔÉ ÂÌÏËÕ×ÁÎÎÑ ÄÌÑ ÔÁÂÌÉæ %-.64s"
-ER_TOO_MANY_DELAYED_THREADS
- cze "P-Bøíli¹ mnoho zpo¾dìných threadù"
- dan "For mange slettede tråde (threads) i brug"
- nla "Te veel 'delayed' threads in gebruik"
- eng "Too many delayed threads in use"
- est "Liiga palju DELAYED lõimesid kasutusel"
- fre "Trop de tâche 'delayed' en cours"
- ger "Zu viele verzögerte (DELAYED) Threads in Verwendung"
- hun "Tul sok kesletetett thread (delayed)"
- ita "Troppi threads ritardati in uso"
- kor "³Ê¹« ¸¹Àº Áö¿¬ ¾²·¹µå¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù."
- por "Excesso de 'threads' retardadas (atrasadas) em uso"
- rum "Prea multe threaduri aminate care sint in uz"
- rus "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÏÔÏËÏ×, ÏÂÓÌÕÖÉ×ÁÀÝÉÈ ÏÔÌÏÖÅÎÎÕÀ ×ÓÔÁ×ËÕ (delayed insert)"
- serbian "Previše prolongiranih thread-ova je u upotrebi"
- spa "Muchos threads retardados en uso"
- swe "Det finns redan 'max_delayed_threads' trådar i använding"
- ukr "úÁÂÁÇÁÔÏ ÚÁÔÒÉÍÁÎÉÈ Ç¦ÌÏË ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ"
-ER_ABORTING_CONNECTION 08S01
- cze "Zru-B¹eno spojení %ld do databáze: '%-.64s' u¾ivatel: '%-.64s' (%s)"
- dan "Afbrudt forbindelse %ld til database: '%-.64s' bruger: '%-.64s' (%-.64s)"
- nla "Afgebroken verbinding %ld naar db: '%-.64s' gebruiker: '%-.64s' (%s)"
- eng "Aborted connection %ld to db: '%-.64s' user: '%-.32s' (%-.64s)"
- est "Ühendus katkestatud %ld andmebaasile: '%-.64s' kasutajale: '%-.32s' (%-.64s)"
- fre "Connection %ld avortée vers la bd: '%-.64s' utilisateur: '%-.64s' (%s)"
- ger "Abbruch der Verbindung %ld zur Datenbank '%-.64s'. Benutzer: '%-.64s' (%-.64s)"
- hun "Megszakitott kapcsolat %ld db: '%-.64s' adatbazishoz, felhasznalo: '%-.64s' (%s)"
- ita "Interrotta la connessione %ld al db: '%-.64s' utente: '%-.64s' (%s)"
- jpn "Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)"
- kor "µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» À§ÇÑ ¿¬°á %ld°¡ Áß´ÜµÊ : '%-.64s' »ç¿ëÀÚ: '%-.64s' (%s)"
- nor "Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)"
- norwegian-ny "Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)"
- pol "Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)"
- por "Conexão %ld abortou para o banco de dados '%-.64s' - usuário '%-.32s' (%-.64s)"
- rum "Conectie terminata %ld la baza de date: '%-.64s' utilizator: '%-.32s' (%-.64s)"
- rus "ðÒÅÒ×ÁÎÏ ÓÏÅÄÉÎÅÎÉÅ %ld Ë ÂÁÚÅ ÄÁÎÎÙÈ '%-.64s' ÐÏÌØÚÏ×ÁÔÅÌÑ '%-.32s' (%-.64s)"
- serbian "Prekinuta konekcija broj %ld ka bazi: '%-.64s' korisnik je bio: '%-.32s' (%-.64s)"
- slo "Aborted connection %ld to db: '%-.64s' user: '%-.64s' (%s)"
- spa "Conexión abortada %ld para db: '%-.64s' usuario: '%-.64s' (%s)"
- swe "Avbröt länken för tråd %ld till db '%-.64s', användare '%-.64s' (%s)"
- ukr "ðÅÒÅÒ×ÁÎÏ Ú'¤ÄÎÁÎÎÑ %ld ÄÏ ÂÁÚÉ ÄÁÎÎÉÈ: '%-.64s' ËÏÒÉÓÔÕ×ÁÞÁ: '%-.32s' (%-.64s)"
-ER_NET_PACKET_TOO_LARGE 08S01
- cze "Zji-B¹tìn pøíchozí packet del¹í ne¾ 'max_allowed_packet'"
- dan "Modtog en datapakke som var større end 'max_allowed_packet'"
- nla "Groter pakket ontvangen dan 'max_allowed_packet'"
- eng "Got a packet bigger than 'max_allowed_packet' bytes"
- est "Saabus suurem pakett kui lubatud 'max_allowed_packet' muutujaga"
- fre "Paquet plus grand que 'max_allowed_packet' reçu"
- ger "Empfangenes Paket ist größer als 'max_allowed_packet' Bytes"
- hun "A kapott csomag nagyobb, mint a maximalisan engedelyezett: 'max_allowed_packet'"
- ita "Ricevuto un pacchetto piu` grande di 'max_allowed_packet'"
- kor "'max_allowed_packet'º¸´Ù ´õÅ« ÆÐŶÀ» ¹Þ¾Ò½À´Ï´Ù."
- por "Obteve um pacote maior do que a taxa máxima de pacotes definida (max_allowed_packet)"
- rum "Un packet mai mare decit 'max_allowed_packet' a fost primit"
- rus "ðÏÌÕÞÅÎÎÙÊ ÐÁËÅÔ ÂÏÌØÛÅ, ÞÅÍ 'max_allowed_packet'"
- serbian "Primio sam mrežni paket veæi od definisane vrednosti 'max_allowed_packet'"
- spa "Obtenido un paquete mayor que 'max_allowed_packet'"
- swe "Kommunkationspaketet är större än 'max_allowed_packet'"
- ukr "ïÔÒÉÍÁÎÏ ÐÁËÅÔ Â¦ÌØÛÉÊ Î¦Ö max_allowed_packet"
-ER_NET_READ_ERROR_FROM_PIPE 08S01
- cze "Zji-B¹tìna chyba pøi ètení z roury spojení"
- dan "Fik læsefejl fra forbindelse (connection pipe)"
- nla "Kreeg leesfout van de verbindings pipe"
- eng "Got a read error from the connection pipe"
- est "Viga ühendustoru lugemisel"
- fre "Erreur de lecture reçue du pipe de connection"
- ger "Lese-Fehler bei einer Verbindungs-Pipe"
- hun "Olvasasi hiba a kapcsolat soran"
- ita "Rilevato un errore di lettura dalla pipe di connessione"
- kor "¿¬°á ÆÄÀÌÇÁ·ÎºÎÅÍ ¿¡·¯°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
- por "Obteve um erro de leitura no 'pipe' da conexão"
- rum "Eroare la citire din cauza lui 'connection pipe'"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ ÞÔÅÎÉÑ ÏÔ ÐÏÔÏËÁ ÓÏÅÄÉÎÅÎÉÑ (connection pipe)"
- serbian "Greška pri èitanju podataka sa pipe-a"
- spa "Obtenido un error de lectura de la conexión pipe"
- swe "Fick läsfel från klienten vid läsning från 'PIPE'"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ ÞÉÔÁÎÎÑ Ú ËÏÍÕΦËÁæÊÎÏÇÏ ËÁÎÁÌÕ"
-ER_NET_FCNTL_ERROR 08S01
- cze "Zji-B¹tìna chyba fcntl()"
- dan "Fik fejlmeddelelse fra fcntl()"
- nla "Kreeg fout van fcntl()"
- eng "Got an error from fcntl()"
- est "fcntl() tagastas vea"
- fre "Erreur reçue de fcntl() "
- ger "fcntl() lieferte einen Fehler"
- hun "Hiba a fcntl() fuggvenyben"
- ita "Rilevato un errore da fcntl()"
- kor "fcntl() ÇÔ¼ö·ÎºÎÅÍ ¿¡·¯°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
- por "Obteve um erro em fcntl()"
- rum "Eroare obtinuta de la fcntl()"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ ÏÔ fcntl()"
- serbian "Greška pri izvršavanju funkcije fcntl()"
- spa "Obtenido un error de fcntl()"
- swe "Fick fatalt fel från 'fcntl()'"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËËÕ ×¦Ä fcntl()"
-ER_NET_PACKETS_OUT_OF_ORDER 08S01
- cze "P-Bøíchozí packety v chybném poøadí"
- dan "Modtog ikke datapakker i korrekt rækkefølge"
- nla "Pakketten in verkeerde volgorde ontvangen"
- eng "Got packets out of order"
- est "Paketid saabusid vales järjekorras"
- fre "Paquets reçus dans le désordre"
- ger "Pakete nicht in der richtigen Reihenfolge empfangen"
- hun "Helytelen sorrendben erkezett adatcsomagok"
- ita "Ricevuti pacchetti non in ordine"
- kor "¼ø¼­°¡ ¸ÂÁö¾Ê´Â ÆÐŶÀ» ¹Þ¾Ò½À´Ï´Ù."
- por "Obteve pacotes fora de ordem"
- rum "Packets care nu sint ordonati au fost gasiti"
- rus "ðÁËÅÔÙ ÐÏÌÕÞÅÎÙ × ÎÅ×ÅÒÎÏÍ ÐÏÒÑÄËÅ"
- serbian "Primio sam mrežne pakete van reda"
- spa "Obtenido paquetes desordenados"
- swe "Kommunikationspaketen kom i fel ordning"
- ukr "ïÔÒÉÍÁÎÏ ÐÁËÅÔÉ Õ ÎÅÎÁÌÅÖÎÏÍÕ ÐÏÒÑÄËÕ"
-ER_NET_UNCOMPRESS_ERROR 08S01
- cze "Nemohu rozkomprimovat komunika-Bèní packet"
- dan "Kunne ikke dekomprimere kommunikations-pakke (communication packet)"
- nla "Communicatiepakket kon niet worden gedecomprimeerd"
- eng "Couldn't uncompress communication packet"
- est "Viga andmepaketi lahtipakkimisel"
- fre "Impossible de décompresser le paquet reçu"
- ger "Kommunikationspaket lässt sich nicht entpacken"
- hun "A kommunikacios adatcsomagok nem tomorithetok ki"
- ita "Impossibile scompattare i pacchetti di comunicazione"
- kor "Åë½Å ÆÐŶÀÇ ¾ÐÃàÇØÁ¦¸¦ ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù."
- por "Não conseguiu descomprimir pacote de comunicação"
- rum "Nu s-a putut decompresa pachetul de comunicatie (communication packet)"
- rus "îÅ×ÏÚÍÏÖÎÏ ÒÁÓÐÁËÏ×ÁÔØ ÐÁËÅÔ, ÐÏÌÕÞÅÎÎÙÊ ÞÅÒÅÚ ËÏÍÍÕÎÉËÁÃÉÏÎÎÙÊ ÐÒÏÔÏËÏÌ"
- serbian "Ne mogu da dekompresujem mrežne pakete"
- spa "No puedo descomprimir paquetes de comunicación"
- swe "Kunde inte packa up kommunikationspaketet"
- ukr "îÅ ÍÏÖÕ ÄÅËÏÍÐÒÅÓÕ×ÁÔÉ ËÏÍÕΦËÁæÊÎÉÊ ÐÁËÅÔ"
-ER_NET_READ_ERROR 08S01
- cze "Zji-B¹tìna chyba pøi ètení komunikaèního packetu"
- dan "Fik fejlmeddelelse ved læsning af kommunikations-pakker (communication packets)"
- nla "Fout bij het lezen van communicatiepakketten"
- eng "Got an error reading communication packets"
- est "Viga andmepaketi lugemisel"
- fre "Erreur de lecture des paquets reçus"
- ger "Fehler beim Lesen eines Kommunikationspakets"
- hun "HIba a kommunikacios adatcsomagok olvasasa soran"
- ita "Rilevato un errore ricevendo i pacchetti di comunicazione"
- kor "Åë½Å ÆÐŶÀ» Àд Áß ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
- por "Obteve um erro na leitura de pacotes de comunicação"
- rum "Eroare obtinuta citind pachetele de comunicatie (communication packets)"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ × ÐÒÏÃÅÓÓÅ ÐÏÌÕÞÅÎÉÑ ÐÁËÅÔÁ ÞÅÒÅÚ ËÏÍÍÕÎÉËÁÃÉÏÎÎÙÊ ÐÒÏÔÏËÏÌ "
- serbian "Greška pri primanju mrežnih paketa"
- spa "Obtenido un error leyendo paquetes de comunicación"
- swe "Fick ett fel vid läsning från klienten"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ ÞÉÔÁÎÎÑ ËÏÍÕΦËÁæÊÎÉÈ ÐÁËÅÔ¦×"
-ER_NET_READ_INTERRUPTED 08S01
- cze "Zji-B¹tìn timeout pøi ètení komunikaèního packetu"
- dan "Timeout-fejl ved læsning af kommunukations-pakker (communication packets)"
- nla "Timeout bij het lezen van communicatiepakketten"
- eng "Got timeout reading communication packets"
- est "Kontrollaja ületamine andmepakettide lugemisel"
- fre "Timeout en lecture des paquets reçus"
- ger "Zeitüberschreitung beim Lesen eines Kommunikationspakets"
- hun "Idotullepes a kommunikacios adatcsomagok olvasasa soran"
- ita "Rilevato un timeout ricevendo i pacchetti di comunicazione"
- kor "Åë½Å ÆÐŶÀ» Àд Áß timeoutÀÌ ¹ß»ýÇÏ¿´½À´Ï´Ù."
- por "Obteve expiração de tempo (timeout) na leitura de pacotes de comunicação"
- rum "Timeout obtinut citind pachetele de comunicatie (communication packets)"
- rus "ðÏÌÕÞÅÎ ÔÁÊÍÁÕÔ ÏÖÉÄÁÎÉÑ ÐÁËÅÔÁ ÞÅÒÅÚ ËÏÍÍÕÎÉËÁÃÉÏÎÎÙÊ ÐÒÏÔÏËÏÌ "
- serbian "Vremenski limit za èitanje mrežnih paketa je istekao"
- spa "Obtenido timeout leyendo paquetes de comunicación"
- swe "Fick 'timeout' vid läsning från klienten"
- ukr "ïÔÒÉÍÁÎÏ ÚÁÔÒÉÍËÕ ÞÉÔÁÎÎÑ ËÏÍÕΦËÁæÊÎÉÈ ÐÁËÅÔ¦×"
-ER_NET_ERROR_ON_WRITE 08S01
- cze "Zji-B¹tìna chyba pøi zápisu komunikaèního packetu"
- dan "Fik fejlmeddelelse ved skrivning af kommunukations-pakker (communication packets)"
- nla "Fout bij het schrijven van communicatiepakketten"
- eng "Got an error writing communication packets"
- est "Viga andmepaketi kirjutamisel"
- fre "Erreur d'écriture des paquets envoyés"
- ger "Fehler beim Schreiben eines Kommunikationspakets"
- hun "Hiba a kommunikacios csomagok irasa soran"
- ita "Rilevato un errore inviando i pacchetti di comunicazione"
- kor "Åë½Å ÆÐŶÀ» ±â·ÏÇÏ´Â Áß ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
- por "Obteve um erro na escrita de pacotes de comunicação"
- rum "Eroare in scrierea pachetelor de comunicatie (communication packets)"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ ÐÒÉ ÐÅÒÅÄÁÞÅ ÐÁËÅÔÁ ÞÅÒÅÚ ËÏÍÍÕÎÉËÁÃÉÏÎÎÙÊ ÐÒÏÔÏËÏÌ "
- serbian "Greška pri slanju mrežnih paketa"
- spa "Obtenido un error de escribiendo paquetes de comunicación"
- swe "Fick ett fel vid skrivning till klienten"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ ÚÁÐÉÓÕ ËÏÍÕΦËÁæÊÎÉÈ ÐÁËÅÔ¦×"
-ER_NET_WRITE_INTERRUPTED 08S01
- cze "Zji-B¹tìn timeout pøi zápisu komunikaèního packetu"
- dan "Timeout-fejl ved skrivning af kommunukations-pakker (communication packets)"
- nla "Timeout bij het schrijven van communicatiepakketten"
- eng "Got timeout writing communication packets"
- est "Kontrollaja ületamine andmepakettide kirjutamisel"
- fre "Timeout d'écriture des paquets envoyés"
- ger "Zeitüberschreitung beim Schreiben eines Kommunikationspakets"
- hun "Idotullepes a kommunikacios csomagok irasa soran"
- ita "Rilevato un timeout inviando i pacchetti di comunicazione"
- kor "Åë½Å ÆÐÆÂÀ» ±â·ÏÇÏ´Â Áß timeoutÀÌ ¹ß»ýÇÏ¿´½À´Ï´Ù."
- por "Obteve expiração de tempo ('timeout') na escrita de pacotes de comunicação"
- rum "Timeout obtinut scriind pachetele de comunicatie (communication packets)"
- rus "ðÏÌÕÞÅÎ ÔÁÊÍÁÕÔ × ÐÒÏÃÅÓÓÅ ÐÅÒÅÄÁÞÉ ÐÁËÅÔÁ ÞÅÒÅÚ ËÏÍÍÕÎÉËÁÃÉÏÎÎÙÊ ÐÒÏÔÏËÏÌ "
- serbian "Vremenski limit za slanje mrežnih paketa je istekao"
- spa "Obtenido timeout escribiendo paquetes de comunicación"
- swe "Fick 'timeout' vid skrivning till klienten"
- ukr "ïÔÒÉÍÁÎÏ ÚÁÔÒÉÍËÕ ÚÁÐÉÓÕ ËÏÍÕΦËÁæÊÎÉÈ ÐÁËÅÔ¦×"
-ER_TOO_LONG_STRING 42000
- cze "V-Býsledný øetìzec je del¹í ne¾ 'max_allowed_packet'"
- dan "Strengen med resultater er større end 'max_allowed_packet'"
- nla "Resultaat string is langer dan 'max_allowed_packet'"
- eng "Result string is longer than 'max_allowed_packet' bytes"
- est "Tulemus on pikem kui lubatud 'max_allowed_packet' muutujaga"
- fre "La chaîne résultat est plus grande que 'max_allowed_packet'"
- ger "Ergebnis-String ist länger als 'max_allowed_packet' Bytes"
- hun "Ez eredmeny sztring nagyobb, mint a lehetseges maximum: 'max_allowed_packet'"
- ita "La stringa di risposta e` piu` lunga di 'max_allowed_packet'"
- por "'String' resultante é mais longa do que 'max_allowed_packet'"
- rum "Sirul rezultat este mai lung decit 'max_allowed_packet'"
- rus "òÅÚÕÌØÔÉÒÕÀÝÁÑ ÓÔÒÏËÁ ÂÏÌØÛÅ, ÞÅÍ 'max_allowed_packet'"
- serbian "Rezultujuèi string je duži nego što to dozvoljava parametar servera 'max_allowed_packet'"
- spa "La string resultante es mayor que max_allowed_packet"
- swe "Resultatsträngen är längre än max_allowed_packet"
- ukr "óÔÒÏËÁ ÒÅÚÕÌØÔÁÔÕ ÄÏ×ÛÁ Î¦Ö max_allowed_packet"
-ER_TABLE_CANT_HANDLE_BLOB 42000
- cze "Typ pou-B¾ité tabulky nepodporuje BLOB/TEXT sloupce"
- dan "Denne tabeltype understøtter ikke brug af BLOB og TEXT kolonner"
- nla "Het gebruikte tabel type ondersteunt geen BLOB/TEXT kolommen"
- eng "The used table type doesn't support BLOB/TEXT columns"
- est "Valitud tabelitüüp ei toeta BLOB/TEXT tüüpi välju"
- fre "Ce type de table ne supporte pas les colonnes BLOB/TEXT"
- ger "Der verwendete Tabellentyp unterstützt keine BLOB- und TEXT-Felder"
- hun "A hasznalt tabla tipus nem tamogatja a BLOB/TEXT mezoket"
- ita "Il tipo di tabella usata non supporta colonne di tipo BLOB/TEXT"
- por "Tipo de tabela usado não permite colunas BLOB/TEXT"
- rum "Tipul de tabela folosit nu suporta coloane de tip BLOB/TEXT"
- rus "éÓÐÏÌØÚÕÅÍÁÑ ÔÁÂÌÉÃÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÔÉÐÙ BLOB/TEXT"
- serbian "Iskorišteni tip tabele ne podržava kolone tipa 'BLOB' odnosno 'TEXT'"
- spa "El tipo de tabla usada no permite soporte para columnas BLOB/TEXT"
- swe "Den använda tabelltypen kan inte hantera BLOB/TEXT-kolumner"
- ukr "÷ÉËÏÒÉÓÔÁÎÉÊ ÔÉÐ ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕ¤ BLOB/TEXT ÓÔÏ×Âæ"
-ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 42000
- cze "Typ pou-B¾ité tabulky nepodporuje AUTO_INCREMENT sloupce"
- dan "Denne tabeltype understøtter ikke brug af AUTO_INCREMENT kolonner"
- nla "Het gebruikte tabel type ondersteunt geen AUTO_INCREMENT kolommen"
- eng "The used table type doesn't support AUTO_INCREMENT columns"
- est "Valitud tabelitüüp ei toeta AUTO_INCREMENT tüüpi välju"
- fre "Ce type de table ne supporte pas les colonnes AUTO_INCREMENT"
- ger "Der verwendete Tabellentyp unterstützt keine AUTO_INCREMENT-Felder"
- hun "A hasznalt tabla tipus nem tamogatja az AUTO_INCREMENT tipusu mezoket"
- ita "Il tipo di tabella usata non supporta colonne di tipo AUTO_INCREMENT"
- por "Tipo de tabela usado não permite colunas AUTO_INCREMENT"
- rum "Tipul de tabela folosit nu suporta coloane de tip AUTO_INCREMENT"
- rus "éÓÐÏÌØÚÕÅÍÁÑ ÔÁÂÌÉÃÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ Á×ÔÏÉÎËÒÅÍÅÎÔÎÙÅ ÓÔÏÌÂÃÙ"
- serbian "Iskorišteni tip tabele ne podržava kolone tipa 'AUTO_INCREMENT'"
- spa "El tipo de tabla usada no permite soporte para columnas AUTO_INCREMENT"
- swe "Den använda tabelltypen kan inte hantera AUTO_INCREMENT-kolumner"
- ukr "÷ÉËÏÒÉÓÔÁÎÉÊ ÔÉÐ ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕ¤ AUTO_INCREMENT ÓÔÏ×Âæ"
-ER_DELAYED_INSERT_TABLE_LOCKED
- cze "INSERT DELAYED nen-Bí mo¾no s tabulkou '%-.64s' pou¾ít, proto¾e je zamèená pomocí LOCK TABLES"
- dan "INSERT DELAYED kan ikke bruges med tabellen '%-.64s', fordi tabellen er låst med LOCK TABLES"
- nla "INSERT DELAYED kan niet worden gebruikt bij table '%-.64s', vanwege een 'lock met LOCK TABLES"
- eng "INSERT DELAYED can't be used with table '%-.64s' because it is locked with LOCK TABLES"
- est "INSERT DELAYED ei saa kasutada tabeli '%-.64s' peal, kuna see on lukustatud LOCK TABLES käsuga"
- fre "INSERT DELAYED ne peut être utilisé avec la table '%-.64s', car elle est verrouée avec LOCK TABLES"
- ger "INSERT DELAYED kann für Tabelle '%-.64s' nicht verwendet werden, da sie mit LOCK TABLES gesperrt ist"
- greek "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- hun "Az INSERT DELAYED nem hasznalhato a '%-.64s' tablahoz, mert a tabla zarolt (LOCK TABLES)"
- ita "L'inserimento ritardato (INSERT DELAYED) non puo` essere usato con la tabella '%-.64s', perche` soggetta a lock da 'LOCK TABLES'"
- jpn "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- kor "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- nor "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- norwegian-ny "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- pol "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- por "INSERT DELAYED não pode ser usado com a tabela '%-.64s', porque ela está travada com LOCK TABLES"
- rum "INSERT DELAYED nu poate fi folosit cu tabela '%-.64s', deoarece este locked folosing LOCK TABLES"
- rus "îÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ INSERT DELAYED ÄÌÑ ÔÁÂÌÉÃÙ '%-.64s', ÐÏÔÏÍÕ ÞÔÏ ÏÎÁ ÚÁÂÌÏËÉÒÏ×ÁÎÁ Ó ÐÏÍÏÝØÀ LOCK TABLES"
- serbian "Komanda 'INSERT DELAYED' ne može biti iskorištena u tabeli '%-.64s', zbog toga što je zakljuèana komandom 'LOCK TABLES'"
- slo "INSERT DELAYED can't be used with table '%-.64s', because it is locked with LOCK TABLES"
- spa "INSERT DELAYED no puede ser usado con tablas '%-.64s', porque esta bloqueada con LOCK TABLES"
- swe "INSERT DELAYED kan inte användas med tabell '%-.64s', emedan den är låst med LOCK TABLES"
- ukr "INSERT DELAYED ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÏÒÉÓÔÁÎÏ Ú ÔÁÂÌÉÃÅÀ '%-.64s', ÔÏÍÕ ÝÏ §§ ÚÁÂÌÏËÏ×ÁÎÏ Ú LOCK TABLES"
-ER_WRONG_COLUMN_NAME 42000
- cze "Nespr-Bávné jméno sloupce '%-.100s'"
- dan "Forkert kolonnenavn '%-.100s'"
- nla "Incorrecte kolom naam '%-.100s'"
- eng "Incorrect column name '%-.100s'"
- est "Vigane tulba nimi '%-.100s'"
- fre "Nom de colonne '%-.100s' incorrect"
- ger "Falscher Spaltenname '%-.100s'"
- hun "Ervenytelen mezonev: '%-.100s'"
- ita "Nome colonna '%-.100s' non corretto"
- por "Nome de coluna '%-.100s' incorreto"
- rum "Nume increct de coloana '%-.100s'"
- rus "îÅ×ÅÒÎÏÅ ÉÍÑ ÓÔÏÌÂÃÁ '%-.100s'"
- serbian "Pogrešno ime kolone '%-.100s'"
- spa "Incorrecto nombre de columna '%-.100s'"
- swe "Felaktigt kolumnnamn '%-.100s'"
- ukr "îÅצÒÎÅ ¦Í'Ñ ÓÔÏ×ÂÃÑ '%-.100s'"
-ER_WRONG_KEY_COLUMN 42000
- cze "Handler pou-B¾ité tabulky neumí indexovat sloupce '%-.64s'"
- dan "Den brugte tabeltype kan ikke indeksere kolonnen '%-.64s'"
- nla "De gebruikte tabel 'handler' kan kolom '%-.64s' niet indexeren"
- eng "The used storage engine can't index column '%-.64s'"
- est "Tabelihandler ei oska indekseerida tulpa '%-.64s'"
- fre "Le handler de la table ne peut indexé la colonne '%-.64s'"
- ger "Die verwendete Speicher-Engine kann die Spalte '%-.64s' nicht indizieren"
- greek "The used table handler can't index column '%-.64s'"
- hun "A hasznalt tablakezelo nem tudja a '%-.64s' mezot indexelni"
- ita "Il gestore delle tabelle non puo` indicizzare la colonna '%-.64s'"
- jpn "The used table handler can't index column '%-.64s'"
- kor "The used table handler can't index column '%-.64s'"
- nor "The used table handler can't index column '%-.64s'"
- norwegian-ny "The used table handler can't index column '%-.64s'"
- pol "The used table handler can't index column '%-.64s'"
- por "O manipulador de tabela usado não pode indexar a coluna '%-.64s'"
- rum "Handler-ul tabelei folosite nu poate indexa coloana '%-.64s'"
- rus "éÓÐÏÌØÚÏ×ÁÎÎÙÊ ÏÂÒÁÂÏÔÞÉË ÔÁÂÌÉÃÙ ÎÅ ÍÏÖÅÔ ÐÒÏÉÎÄÅËÓÉÒÏ×ÁÔØ ÓÔÏÌÂÅà '%-.64s'"
- serbian "Handler tabele ne može da indeksira kolonu '%-.64s'"
- slo "The used table handler can't index column '%-.64s'"
- spa "El manipulador de tabla usado no puede indexar columna '%-.64s'"
- swe "Den använda tabelltypen kan inte indexera kolumn '%-.64s'"
- ukr "÷ÉËÏÒÉÓÔÁÎÉÊ ×ËÁÚ¦×ÎÉË ÔÁÂÌÉæ ÎÅ ÍÏÖÅ ¦ÎÄÅËÓÕ×ÁÔÉ ÓÔÏ×ÂÅÃØ '%-.64s'"
-ER_WRONG_MRG_TABLE
- cze "V-B¹echny tabulky v MERGE tabulce nejsou definovány stejnì"
- dan "Tabellerne i MERGE er ikke defineret ens"
- nla "Niet alle tabellen in de MERGE tabel hebben identieke gedefinities"
- eng "All tables in the MERGE table are not identically defined"
- est "Kõik tabelid MERGE tabeli määratluses ei ole identsed"
- fre "Toutes les tables de la table de type MERGE n'ont pas la même définition"
- ger "Nicht alle Tabellen in der MERGE-Tabelle sind gleich definiert"
- hun "A MERGE tablaban talalhato tablak definicioja nem azonos"
- ita "Non tutte le tabelle nella tabella di MERGE sono definite in maniera identica"
- jpn "All tables in the MERGE table are not defined identically"
- kor "All tables in the MERGE table are not defined identically"
- nor "All tables in the MERGE table are not defined identically"
- norwegian-ny "All tables in the MERGE table are not defined identically"
- pol "All tables in the MERGE table are not defined identically"
- por "Todas as tabelas contidas na tabela fundida (MERGE) não estão definidas identicamente"
- rum "Toate tabelele din tabela MERGE nu sint definite identic"
- rus "îÅ ×ÓÅ ÔÁÂÌÉÃÙ × MERGE ÏÐÒÅÄÅÌÅÎÙ ÏÄÉÎÁËÏ×Ï"
- serbian "Tabele iskorištene u 'MERGE' tabeli nisu definisane na isti naèin"
- slo "All tables in the MERGE table are not defined identically"
- spa "Todas las tablas en la MERGE tabla no estan definidas identicamente"
- swe "Tabellerna i MERGE-tabellen är inte identiskt definierade"
- ukr "ôÁÂÌÉæ Õ MERGE TABLE ÍÁÀÔØ Ò¦ÚÎÕ ÓÔÒÕËÔÕÒÕ"
-ER_DUP_UNIQUE 23000
- cze "Kv-Bùli unique constraintu nemozu zapsat do tabulky '%-.64s'"
- dan "Kan ikke skrive til tabellen '%-.64s' fordi det vil bryde CONSTRAINT regler"
- nla "Kan niet opslaan naar table '%-.64s' vanwege 'unique' beperking"
- eng "Can't write, because of unique constraint, to table '%-.64s'"
- est "Ei suuda kirjutada tabelisse '%-.64s', kuna see rikub ühesuse kitsendust"
- fre "Écriture impossible à cause d'un index UNIQUE sur la table '%-.64s'"
- ger "Schreiben in Tabelle '%-.64s' nicht möglich wegen einer Eindeutigkeitsbeschränkung (unique constraint)"
- hun "A '%-.64s' nem irhato, az egyedi mezok miatt"
- ita "Impossibile scrivere nella tabella '%-.64s' per limitazione di unicita`"
- por "Não pode gravar, devido à restrição UNIQUE, na tabela '%-.64s'"
- rum "Nu pot scrie pe hard-drive, din cauza constraintului unic (unique constraint) pentru tabela '%-.64s'"
- rus "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ × ÔÁÂÌÉÃÕ '%-.64s' ÉÚ-ÚÁ ÏÇÒÁÎÉÞÅÎÉÊ ÕÎÉËÁÌØÎÏÇÏ ËÌÀÞÁ"
- serbian "Zbog provere jedinstvenosti ne mogu da upišem podatke u tabelu '%-.64s'"
- spa "No puedo escribir, debido al único constraint, para tabla '%-.64s'"
- swe "Kan inte skriva till tabell '%-.64s'; UNIQUE-test"
- ukr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÄÏ ÔÁÂÌÉæ '%-.64s', Ú ÐÒÉÞÉÎÉ ×ÉÍÏÇ ÕΦËÁÌØÎÏÓÔ¦"
-ER_BLOB_KEY_WITHOUT_LENGTH 42000
- cze "BLOB sloupec '%-.64s' je pou-B¾it ve specifikaci klíèe bez délky"
- dan "BLOB kolonnen '%-.64s' brugt i nøglespecifikation uden nøglelængde"
- nla "BLOB kolom '%-.64s' gebruikt in zoeksleutel specificatie zonder zoeksleutel lengte"
- eng "BLOB/TEXT column '%-.64s' used in key specification without a key length"
- est "BLOB-tüüpi tulp '%-.64s' on kasutusel võtmes ilma pikkust määratlemata"
- fre "La colonne '%-.64s' de type BLOB est utilisée dans une définition d'index sans longueur d'index"
- ger "BLOB- oder TEXT-Spalte '%-.64s' wird in der Schlüsseldefinition ohne Schlüssellängenangabe verwendet"
- greek "BLOB column '%-.64s' used in key specification without a key length"
- hun "BLOB mezo '%-.64s' hasznalt a mezo specifikacioban, a mezohossz megadasa nelkul"
- ita "La colonna '%-.64s' di tipo BLOB e` usata in una chiave senza specificarne la lunghezza"
- jpn "BLOB column '%-.64s' used in key specification without a key length"
- kor "BLOB column '%-.64s' used in key specification without a key length"
- nor "BLOB column '%-.64s' used in key specification without a key length"
- norwegian-ny "BLOB column '%-.64s' used in key specification without a key length"
- pol "BLOB column '%-.64s' used in key specification without a key length"
- por "Coluna BLOB '%-.64s' usada na especificação de chave sem o comprimento da chave"
- rum "Coloana BLOB '%-.64s' este folosita in specificarea unei chei fara ca o lungime de cheie sa fie folosita"
- rus "óÔÏÌÂÅÃ ÔÉÐÁ BLOB '%-.64s' ÂÙÌ ÕËÁÚÁÎ × ÏÐÒÅÄÅÌÅÎÉÉ ËÌÀÞÁ ÂÅÚ ÕËÁÚÁÎÉÑ ÄÌÉÎÙ ËÌÀÞÁ"
- serbian "BLOB kolona '%-.64s' je upotrebljena u specifikaciji kljuèa bez navoðenja dužine kljuèa"
- slo "BLOB column '%-.64s' used in key specification without a key length"
- spa "Columna BLOB column '%-.64s' usada en especificación de clave sin tamaño de la clave"
- swe "Du har inte angett någon nyckellängd för BLOB '%-.64s'"
- ukr "óÔÏ×ÂÅÃØ BLOB '%-.64s' ×ÉËÏÒÉÓÔÁÎÏ Õ ×ÉÚÎÁÞÅÎΦ ËÌÀÞÁ ÂÅÚ ×ËÁÚÁÎÎÑ ÄÏ×ÖÉÎÉ ËÌÀÞÁ"
-ER_PRIMARY_CANT_HAVE_NULL 42000
- cze "V-B¹echny èásti primárního klíèe musejí být NOT NULL; pokud potøebujete NULL, pou¾ijte UNIQUE"
- dan "Alle dele af en PRIMARY KEY skal være NOT NULL; Hvis du skal bruge NULL i nøglen, brug UNIQUE istedet"
- nla "Alle delen van een PRIMARY KEY moeten NOT NULL zijn; Indien u NULL in een zoeksleutel nodig heeft kunt u UNIQUE gebruiken"
- eng "All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead"
- est "Kõik PRIMARY KEY peavad olema määratletud NOT NULL piiranguga; vajadusel kasuta UNIQUE tüüpi võtit"
- fre "Toutes les parties d'un index PRIMARY KEY doivent être NOT NULL; Si vous avez besoin d'un NULL dans l'index, utilisez un index UNIQUE"
- ger "Alle Teile eines PRIMARY KEY müssen als NOT NULL definiert sein. Wenn NULL in einem Schlüssel benötigt wird, muss ein UNIQUE-Schlüssel verwendet werden"
- hun "Az elsodleges kulcs teljes egeszeben csak NOT NULL tipusu lehet; Ha NULL mezot szeretne a kulcskent, hasznalja inkabb a UNIQUE-ot"
- ita "Tutte le parti di una chiave primaria devono essere dichiarate NOT NULL; se necessitano valori NULL nelle chiavi utilizzare UNIQUE"
- por "Todas as partes de uma chave primária devem ser não-nulas. Se você precisou usar um valor nulo (NULL) em uma chave, use a cláusula UNIQUE em seu lugar"
- rum "Toate partile unei chei primare (PRIMARY KEY) trebuie sa fie NOT NULL; Daca aveti nevoie de NULL in vreo cheie, folositi UNIQUE in schimb"
- rus "÷ÓÅ ÞÁÓÔÉ ÐÅÒ×ÉÞÎÏÇÏ ËÌÀÞÁ (PRIMARY KEY) ÄÏÌÖÎÙ ÂÙÔØ ÏÐÒÅÄÅÌÅÎÙ ËÁË NOT NULL; åÓÌÉ ×ÁÍ ÎÕÖÎÁ ÐÏÄÄÅÒÖËÁ ×ÅÌÉÞÉÎ NULL × ËÌÀÞÅ, ×ÏÓÐÏÌØÚÕÊÔÅÓØ ÉÎÄÅËÓÏÍ UNIQUE"
- serbian "Svi delovi primarnog kljuèa moraju biti razlièiti od NULL; Ako Vam ipak treba NULL vrednost u kljuèu, upotrebite 'UNIQUE'"
- spa "Todas las partes de un PRIMARY KEY deben ser NOT NULL; Si necesitas NULL en una clave, use UNIQUE"
- swe "Alla delar av en PRIMARY KEY måste vara NOT NULL; Om du vill ha en nyckel med NULL, använd UNIQUE istället"
- ukr "õÓ¦ ÞÁÓÔÉÎÉ PRIMARY KEY ÐÏ×ÉÎΦ ÂÕÔÉ NOT NULL; ñËÝÏ ×É ÐÏÔÒÅÂÕ¤ÔÅ NULL Õ ËÌÀÞ¦, ÓËÏÒÉÓÔÁÊÔÅÓÑ UNIQUE"
-ER_TOO_MANY_ROWS 42000
- cze "V-Býsledek obsahuje více ne¾ jeden øádek"
- dan "Resultatet bestod af mere end een række"
- nla "Resultaat bevatte meer dan een rij"
- eng "Result consisted of more than one row"
- est "Tulemis oli rohkem kui üks kirje"
- fre "Le résultat contient plus d'un enregistrement"
- ger "Ergebnis besteht aus mehr als einer Zeile"
- hun "Az eredmeny tobb, mint egy sort tartalmaz"
- ita "Il risultato consiste di piu` di una riga"
- por "O resultado consistiu em mais do que uma linha"
- rum "Resultatul constista din mai multe linii"
- rus "÷ ÒÅÚÕÌØÔÁÔÅ ×ÏÚ×ÒÁÝÅÎÁ ÂÏÌÅÅ ÞÅÍ ÏÄÎÁ ÓÔÒÏËÁ"
- serbian "Rezultat je saèinjen od više slogova"
- spa "Resultado compuesto de mas que una línea"
- swe "Resultet bestod av mera än en rad"
- ukr "òÅÚÕÌØÔÁÔ ÚÎÁÈÏÄÉÔØÓÑ Õ Â¦ÌØÛÅ Î¦Ö ÏÄÎ¦Ê ÓÔÒÏæ"
-ER_REQUIRES_PRIMARY_KEY 42000
- cze "Tento typ tabulky vy-B¾aduje primární klíè"
- dan "Denne tabeltype kræver en primærnøgle"
- nla "Dit tabel type heeft een primaire zoeksleutel nodig"
- eng "This table type requires a primary key"
- est "Antud tabelitüüp nõuab primaarset võtit"
- fre "Ce type de table nécessite une clé primaire (PRIMARY KEY)"
- ger "Dieser Tabellentyp benötigt einen Primärschlüssel (PRIMARY KEY)"
- hun "Az adott tablatipushoz elsodleges kulcs hasznalata kotelezo"
- ita "Questo tipo di tabella richiede una chiave primaria"
- por "Este tipo de tabela requer uma chave primária"
- rum "Aceast tip de tabela are nevoie de o cheie primara"
- rus "üÔÏÔ ÔÉÐ ÔÁÂÌÉÃÙ ÔÒÅÂÕÅÔ ÏÐÒÅÄÅÌÅÎÉÑ ÐÅÒ×ÉÞÎÏÇÏ ËÌÀÞÁ"
- serbian "Ovaj tip tabele zahteva da imate definisan primarni kljuè"
- spa "Este tipo de tabla necesita de una primary key"
- swe "Denna tabelltyp kräver en PRIMARY KEY"
- ukr "ãÅÊ ÔÉÐ ÔÁÂÌÉæ ÐÏÔÒÅÂÕ¤ ÐÅÒ×ÉÎÎÏÇÏ ËÌÀÞÁ"
-ER_NO_RAID_COMPILED
- cze "Tato verze MySQL nen-Bí zkompilována s podporou RAID"
- dan "Denne udgave af MySQL er ikke oversat med understøttelse af RAID"
- nla "Deze versie van MySQL is niet gecompileerd met RAID ondersteuning"
- eng "This version of MySQL is not compiled with RAID support"
- est "Antud MySQL versioon on kompileeritud ilma RAID toeta"
- fre "Cette version de MySQL n'est pas compilée avec le support RAID"
- ger "Diese MySQL-Version ist nicht mit RAID-Unterstützung kompiliert"
- hun "Ezen leforditott MySQL verzio nem tartalmaz RAID support-ot"
- ita "Questa versione di MYSQL non e` compilata con il supporto RAID"
- por "Esta versão do MySQL não foi compilada com suporte a RAID"
- rum "Aceasta versiune de MySQL, nu a fost compilata cu suport pentru RAID"
- rus "üÔÁ ×ÅÒÓÉÑ MySQL ÓËÏÍÐÉÌÉÒÏ×ÁÎÁ ÂÅÚ ÐÏÄÄÅÒÖËÉ RAID"
- serbian "Ova verzija MySQL servera nije kompajlirana sa podrškom za RAID ureðaje"
- spa "Esta versión de MySQL no es compilada con soporte RAID"
- swe "Denna version av MySQL är inte kompilerad med RAID"
- ukr "ãÑ ×ÅÒÓ¦Ñ MySQL ÎÅ ÚËÏÍЦÌØÏ×ÁÎÁ Ú Ð¦ÄÔÒÉÍËÏÀ RAID"
-ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
- cze "Update tabulky bez WHERE s kl-Bíèem není v módu bezpeèných update dovoleno"
- dan "Du bruger sikker opdaterings modus ('safe update mode') og du forsøgte at opdatere en tabel uden en WHERE klausul, der gør brug af et KEY felt"
- nla "U gebruikt 'safe update mode' en u probeerde een tabel te updaten zonder een WHERE met een KEY kolom"
- eng "You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column"
- est "Katse muuta tabelit turvalises rezhiimis ilma WHERE klauslita"
- fre "Vous êtes en mode 'safe update' et vous essayez de faire un UPDATE sans clause WHERE utilisant un index"
- ger "MySQL läuft im sicheren Aktualisierungsmodus (safe update mode). Sie haben versucht, eine Tabelle zu aktualisieren, ohne in der WHERE-Klausel ein KEY-Feld anzugeben"
- hun "On a biztonsagos update modot hasznalja, es WHERE that uses a KEY column"
- ita "In modalita` 'safe update' si e` cercato di aggiornare una tabella senza clausola WHERE su una chiave"
- por "Você está usando modo de atualização seguro e tentou atualizar uma tabela sem uma cláusula WHERE que use uma coluna chave"
- rus "÷Ù ÒÁÂÏÔÁÅÔÅ × ÒÅÖÉÍÅ ÂÅÚÏÐÁÓÎÙÈ ÏÂÎÏ×ÌÅÎÉÊ (safe update mode) É ÐÏÐÒÏÂÏ×ÁÌÉ ÉÚÍÅÎÉÔØ ÔÁÂÌÉÃÕ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ËÌÀÞÅ×ÏÇÏ ÓÔÏÌÂÃÁ × ÞÁÓÔÉ WHERE"
- serbian "Vi koristite safe update mod servera, a probali ste da promenite podatke bez 'WHERE' komande koja koristi kolonu kljuèa"
- spa "Tu estás usando modo de actualización segura y tentado actualizar una tabla sin un WHERE que usa una KEY columna"
- swe "Du använder 'säker uppdateringsmod' och försökte uppdatera en tabell utan en WHERE-sats som använder sig av en nyckel"
- ukr "÷É Õ ÒÅÖÉͦ ÂÅÚÐÅÞÎÏÇÏ ÏÎÏ×ÌÅÎÎÑ ÔÁ ÎÁÍÁÇÁ¤ÔÅÓØ ÏÎÏ×ÉÔÉ ÔÁÂÌÉÃÀ ÂÅÚ ÏÐÅÒÁÔÏÒÁ WHERE, ÝÏ ×ÉËÏÒÉÓÔÏ×Õ¤ KEY ÓÔÏ×ÂÅÃØ"
-ER_KEY_DOES_NOT_EXITS
- cze "Kl-Bíè '%-.64s' v tabulce '%-.64s' neexistuje"
- dan "Nøglen '%-.64s' eksisterer ikke i tabellen '%-.64s'"
- nla "Zoeksleutel '%-.64s' bestaat niet in tabel '%-.64s'"
- eng "Key '%-.64s' doesn't exist in table '%-.64s'"
- est "Võti '%-.64s' ei eksisteeri tabelis '%-.64s'"
- fre "L'index '%-.64s' n'existe pas sur la table '%-.64s'"
- ger "Schlüssel '%-.64s' existiert in der Tabelle '%-.64s' nicht"
- hun "A '%-.64s' kulcs nem letezik a '%-.64s' tablaban"
- ita "La chiave '%-.64s' non esiste nella tabella '%-.64s'"
- por "Chave '%-.64s' não existe na tabela '%-.64s'"
- rus "ëÌÀÞ '%-.64s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ × ÔÁÂÌÉÃÅ '%-.64s'"
- serbian "Kljuè '%-.64s' ne postoji u tabeli '%-.64s'"
- spa "Clave '%-.64s' no existe en la tabla '%-.64s'"
- swe "Nyckel '%-.64s' finns inte in tabell '%-.64s'"
- ukr "ëÌÀÞ '%-.64s' ÎÅ ¦ÓÎÕ¤ × ÔÁÂÌÉæ '%-.64s'"
-ER_CHECK_NO_SUCH_TABLE 42000
- cze "Nemohu otev-Bøít tabulku"
- dan "Kan ikke åbne tabellen"
- nla "Kan tabel niet openen"
- eng "Can't open table"
- est "Ei suuda avada tabelit"
- fre "Impossible d'ouvrir la table"
- ger "Kann Tabelle nicht öffnen"
- hun "Nem tudom megnyitni a tablat"
- ita "Impossibile aprire la tabella"
- por "Não pode abrir a tabela"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÔÁÂÌÉÃÕ"
- serbian "Ne mogu da otvorim tabelu"
- spa "No puedo abrir tabla"
- swe "Kan inte öppna tabellen"
- ukr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÔÁÂÌÉÃÀ"
-ER_CHECK_NOT_IMPLEMENTED 42000
- cze "Handler tabulky nepodporuje %s"
- dan "Denne tabeltype understøtter ikke %s"
- nla "De 'handler' voor de tabel ondersteund geen %s"
- eng "The storage engine for the table doesn't support %s"
- est "Antud tabelitüüp ei toeta %s käske"
- fre "Ce type de table ne supporte pas les %s"
- ger "Die Speicher-Engine für diese Tabelle unterstützt kein %s"
- greek "The handler for the table doesn't support %s"
- hun "A tabla kezeloje (handler) nem tamogatja az %s"
- ita "Il gestore per la tabella non supporta il %s"
- jpn "The handler for the table doesn't support %s"
- kor "The handler for the table doesn't support %s"
- nor "The handler for the table doesn't support %s"
- norwegian-ny "The handler for the table doesn't support %s"
- pol "The handler for the table doesn't support %s"
- por "O manipulador de tabela não suporta %s"
- rum "The handler for the table doesn't support %s"
- rus "ïÂÒÁÂÏÔÞÉË ÔÁÂÌÉÃÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÜÔÏÇÏ: %s"
- serbian "Handler za ovu tabelu ne dozvoljava 'check' odnosno 'repair' komande"
- slo "The handler for the table doesn't support %s"
- spa "El manipulador de la tabla no permite soporte para %s"
- swe "Tabellhanteraren för denna tabell kan inte göra %s"
- ukr "÷ËÁÚ¦×ÎÉË ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕÅ %s"
-ER_CANT_DO_THIS_DURING_AN_TRANSACTION 25000
- cze "Proveden-Bí tohoto pøíkazu není v transakci dovoleno"
- dan "Du må ikke bruge denne kommando i en transaktion"
- nla "Het is u niet toegestaan dit commando uit te voeren binnen een transactie"
- eng "You are not allowed to execute this command in a transaction"
- est "Seda käsku ei saa kasutada transaktsiooni sees"
- fre "Vous n'êtes pas autorisé à exécute cette commande dans une transaction"
- ger "Sie dürfen diesen Befehl nicht in einer Transaktion ausführen"
- hun "Az On szamara nem engedelyezett a parancs vegrehajtasa a tranzakcioban"
- ita "Non puoi eseguire questo comando in una transazione"
- por "Não lhe é permitido executar este comando em uma transação"
- rus "÷ÁÍ ÎÅ ÒÁÚÒÅÛÅÎÏ ×ÙÐÏÌÎÑÔØ ÜÔÕ ËÏÍÁÎÄÕ × ÔÒÁÎÚÁËÃÉÉ"
- serbian "Nije Vam dozvoljeno da izvršite ovu komandu u transakciji"
- spa "No tienes el permiso para ejecutar este comando en una transición"
- swe "Du får inte utföra detta kommando i en transaktion"
- ukr "÷ÁÍ ÎÅ ÄÏÚ×ÏÌÅÎÏ ×ÉËÏÎÕ×ÁÔÉ ÃÀ ËÏÍÁÎÄÕ × ÔÒÁÎÚÁËæ§"
-ER_ERROR_DURING_COMMIT
- cze "Chyba %d p-Bøi COMMIT"
- dan "Modtog fejl %d mens kommandoen COMMIT blev udført"
- nla "Kreeg fout %d tijdens COMMIT"
- eng "Got error %d during COMMIT"
- est "Viga %d käsu COMMIT täitmisel"
- fre "Erreur %d lors du COMMIT"
- ger "Fehler %d beim COMMIT"
- hun "%d hiba a COMMIT vegrehajtasa soran"
- ita "Rilevato l'errore %d durante il COMMIT"
- por "Obteve erro %d durante COMMIT"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ %d × ÐÒÏÃÅÓÓÅ COMMIT"
- serbian "Greška %d za vreme izvršavanja komande 'COMMIT'"
- spa "Obtenido error %d durante COMMIT"
- swe "Fick fel %d vid COMMIT"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ %d Ð¦Ä ÞÁÓ COMMIT"
-ER_ERROR_DURING_ROLLBACK
- cze "Chyba %d p-Bøi ROLLBACK"
- dan "Modtog fejl %d mens kommandoen ROLLBACK blev udført"
- nla "Kreeg fout %d tijdens ROLLBACK"
- eng "Got error %d during ROLLBACK"
- est "Viga %d käsu ROLLBACK täitmisel"
- fre "Erreur %d lors du ROLLBACK"
- ger "Fehler %d beim ROLLBACK"
- hun "%d hiba a ROLLBACK vegrehajtasa soran"
- ita "Rilevato l'errore %d durante il ROLLBACK"
- por "Obteve erro %d durante ROLLBACK"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ %d × ÐÒÏÃÅÓÓÅ ROLLBACK"
- serbian "Greška %d za vreme izvršavanja komande 'ROLLBACK'"
- spa "Obtenido error %d durante ROLLBACK"
- swe "Fick fel %d vid ROLLBACK"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ %d Ð¦Ä ÞÁÓ ROLLBACK"
-ER_ERROR_DURING_FLUSH_LOGS
- cze "Chyba %d p-Bøi FLUSH_LOGS"
- dan "Modtog fejl %d mens kommandoen FLUSH_LOGS blev udført"
- nla "Kreeg fout %d tijdens FLUSH_LOGS"
- eng "Got error %d during FLUSH_LOGS"
- est "Viga %d käsu FLUSH_LOGS täitmisel"
- fre "Erreur %d lors du FLUSH_LOGS"
- ger "Fehler %d bei FLUSH_LOGS"
- hun "%d hiba a FLUSH_LOGS vegrehajtasa soran"
- ita "Rilevato l'errore %d durante il FLUSH_LOGS"
- por "Obteve erro %d durante FLUSH_LOGS"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ %d × ÐÒÏÃÅÓÓÅ FLUSH_LOGS"
- serbian "Greška %d za vreme izvršavanja komande 'FLUSH_LOGS'"
- spa "Obtenido error %d durante FLUSH_LOGS"
- swe "Fick fel %d vid FLUSH_LOGS"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ %d Ð¦Ä ÞÁÓ FLUSH_LOGS"
-ER_ERROR_DURING_CHECKPOINT
- cze "Chyba %d p-Bøi CHECKPOINT"
- dan "Modtog fejl %d mens kommandoen CHECKPOINT blev udført"
- nla "Kreeg fout %d tijdens CHECKPOINT"
- eng "Got error %d during CHECKPOINT"
- est "Viga %d käsu CHECKPOINT täitmisel"
- fre "Erreur %d lors du CHECKPOINT"
- ger "Fehler %d bei CHECKPOINT"
- hun "%d hiba a CHECKPOINT vegrehajtasa soran"
- ita "Rilevato l'errore %d durante il CHECKPOINT"
- por "Obteve erro %d durante CHECKPOINT"
- rus "ðÏÌÕÞÅÎÁ ÏÛÉÂËÁ %d × ÐÒÏÃÅÓÓÅ CHECKPOINT"
- serbian "Greška %d za vreme izvršavanja komande 'CHECKPOINT'"
- spa "Obtenido error %d durante CHECKPOINT"
- swe "Fick fel %d vid CHECKPOINT"
- ukr "ïÔÒÉÍÁÎÏ ÐÏÍÉÌËÕ %d Ð¦Ä ÞÁÓ CHECKPOINT"
-ER_NEW_ABORTING_CONNECTION 08S01
- cze "Spojen-Bí %ld do databáze: '%-.64s' u¾ivatel: '%-.32s' stroj: '%-.64s' (%-.64s) bylo pøeru¹eno"
- dan "Afbrød forbindelsen %ld til databasen '%-.64s' bruger: '%-.32s' vært: '%-.64s' (%-.64s)"
- nla "Afgebroken verbinding %ld naar db: '%-.64s' gebruiker: '%-.32s' host: '%-.64s' (%-.64s)"
- eng "Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: '%-.64s' (%-.64s)"
- est "Ühendus katkestatud %ld andmebaas: '%-.64s' kasutaja: '%-.32s' masin: '%-.64s' (%-.64s)"
- fre "Connection %ld avortée vers la bd: '%-.64s' utilisateur: '%-.32s' hôte: '%-.64s' (%-.64s)"
- ger "Abbruch der Verbindung %ld zur Datenbank '%-.64s'. Benutzer: '%-.32s', Host: '%-.64s' (%-.64s)"
- ita "Interrotta la connessione %ld al db: ''%-.64s' utente: '%-.32s' host: '%-.64s' (%-.64s)"
- por "Conexão %ld abortada para banco de dados '%-.64s' - usuário '%-.32s' - 'host' '%-.64s' ('%-.64s')"
- rus "ðÒÅÒ×ÁÎÏ ÓÏÅÄÉÎÅÎÉÅ %ld Ë ÂÁÚÅ ÄÁÎÎÙÈ '%-.64s' ÐÏÌØÚÏ×ÁÔÅÌÑ '%-.32s' Ó ÈÏÓÔÁ '%-.64s' (%-.64s)"
- serbian "Prekinuta konekcija broj %ld ka bazi: '%-.64s' korisnik je bio: '%-.32s' a host: '%-.64s' (%-.64s)"
- spa "Abortada conexión %ld para db: '%-.64s' usuario: '%-.32s' servidor: '%-.64s' (%-.64s)"
- swe "Avbröt länken för tråd %ld till db '%-.64s', användare '%-.32s', host '%-.64s' (%-.64s)"
- ukr "ðÅÒÅÒ×ÁÎÏ Ú'¤ÄÎÁÎÎÑ %ld ÄÏ ÂÁÚÉ ÄÁÎÎÉÈ: '%-.64s' ËÏÒÉÓÔÕ×ÁÞ: '%-.32s' ÈÏÓÔ: '%-.64s' (%-.64s)"
-ER_DUMP_NOT_IMPLEMENTED
- cze "Handler tabulky nepodporuje bin-Bární dump"
- dan "Denne tabeltype unserstøtter ikke binært tabeldump"
- nla "De 'handler' voor de tabel ondersteund geen binaire tabel dump"
- eng "The storage engine for the table does not support binary table dump"
- fre "Ce type de table ne supporte pas les copies binaires"
- ger "Die Speicher-Engine für die Tabelle unterstützt keinen binären Tabellen-Dump"
- ita "Il gestore per la tabella non supporta il dump binario"
- jpn "The handler for the table does not support binary table dump"
- por "O manipulador de tabela não suporta 'dump' binário de tabela"
- rum "The handler for the table does not support binary table dump"
- rus "ïÂÒÁÂÏÔÞÉË ÜÔÏÊ ÔÁÂÌÉÃÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ Ä×ÏÉÞÎÏÇÏ ÓÏÈÒÁÎÅÎÉÑ ÏÂÒÁÚÁ ÔÁÂÌÉÃÙ (dump)"
- serbian "Handler tabele ne podržava binarni dump tabele"
- spa "El manipulador de tabla no soporta dump para tabla binaria"
- swe "Tabellhanteraren klarar inte en binär kopiering av tabellen"
- ukr "ãÅÊ ÔÉÐ ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕ¤ ¦ÎÁÒÎÕ ÐÅÒÅÄÁÞÕ ÔÁÂÌÉæ"
-ER_FLUSH_MASTER_BINLOG_CLOSED
- eng "Binlog closed, cannot RESET MASTER"
- ger "Binlog geschlossen. Kann RESET MASTER nicht ausführen"
- por "Binlog fechado. Não pode fazer RESET MASTER"
- rus "ä×ÏÉÞÎÙÊ ÖÕÒÎÁÌ ÏÂÎÏ×ÌÅÎÉÑ ÚÁËÒÙÔ, ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ RESET MASTER"
- serbian "Binarni log file zatvoren, ne mogu da izvršim komandu 'RESET MASTER'"
- ukr "òÅÐ̦ËÁæÊÎÉÊ ÌÏÇ ÚÁËÒÉÔÏ, ÎÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ RESET MASTER"
-ER_INDEX_REBUILD
- cze "P-Bøebudování indexu dumpnuté tabulky '%-.64s' nebylo úspì¹né"
- dan "Kunne ikke genopbygge indekset for den dumpede tabel '%-.64s'"
- nla "Gefaald tijdens heropbouw index van gedumpte tabel '%-.64s'"
- eng "Failed rebuilding the index of dumped table '%-.64s'"
- fre "La reconstruction de l'index de la table copiée '%-.64s' a échoué"
- ger "Neuerstellung des Index der Dump-Tabelle '%-.64s' fehlgeschlagen"
- greek "Failed rebuilding the index of dumped table '%-.64s'"
- hun "Failed rebuilding the index of dumped table '%-.64s'"
- ita "Fallita la ricostruzione dell'indice della tabella copiata '%-.64s'"
- por "Falhou na reconstrução do índice da tabela 'dumped' '%-.64s'"
- rus "ïÛÉÂËÁ ÐÅÒÅÓÔÒÏÊËÉ ÉÎÄÅËÓÁ ÓÏÈÒÁÎÅÎÎÏÊ ÔÁÂÌÉÃÙ '%-.64s'"
- serbian "Izgradnja indeksa dump-ovane tabele '%-.64s' nije uspela"
- spa "Falla reconstruyendo el indice de la tabla dumped '%-.64s'"
- ukr "îÅ×ÄÁÌŠצÄÎÏ×ÌÅÎÎÑ ¦ÎÄÅËÓÁ ÐÅÒÅÄÁÎϧ ÔÁÂÌÉæ '%-.64s'"
-ER_MASTER
- cze "Chyba masteru: '%-.64s'"
- dan "Fejl fra master: '%-.64s'"
- nla "Fout van master: '%-.64s'"
- eng "Error from master: '%-.64s'"
- fre "Erreur reçue du maître: '%-.64s'"
- ger "Fehler vom Master: '%-.64s'"
- ita "Errore dal master: '%-.64s"
- por "Erro no 'master' '%-.64s'"
- rus "ïÛÉÂËÁ ÏÔ ÇÏÌÏ×ÎÏÇÏ ÓÅÒ×ÅÒÁ: '%-.64s'"
- serbian "Greška iz glavnog servera '%-.64s' u klasteru"
- spa "Error del master: '%-.64s'"
- swe "Fick en master: '%-.64s'"
- ukr "ðÏÍÉÌËÁ ×¦Ä ÇÏÌÏ×ÎÏÇÏ: '%-.64s'"
-ER_MASTER_NET_READ 08S01
- cze "S-Bí»ová chyba pøi ètení z masteru"
- dan "Netværksfejl ved læsning fra master"
- nla "Net fout tijdens lezen van master"
- eng "Net error reading from master"
- fre "Erreur de lecture réseau reçue du maître"
- ger "Netzfehler beim Lesen vom Master"
- ita "Errore di rete durante la ricezione dal master"
- por "Erro de rede lendo do 'master'"
- rus "÷ÏÚÎÉËÌÁ ÏÛÉÂËÁ ÞÔÅÎÉÑ × ÐÒÏÃÅÓÓÅ ËÏÍÍÕÎÉËÁÃÉÉ Ó ÇÏÌÏ×ÎÙÍ ÓÅÒ×ÅÒÏÍ"
- serbian "Greška u primanju mrežnih paketa sa glavnog servera u klasteru"
- spa "Error de red leyendo del master"
- swe "Fick nätverksfel vid läsning från master"
- ukr "íÅÒÅÖÅ×Á ÐÏÍÉÌËÁ ÞÉÔÁÎÎÑ ×¦Ä ÇÏÌÏ×ÎÏÇÏ"
-ER_MASTER_NET_WRITE 08S01
- cze "S-Bí»ová chyba pøi zápisu na master"
- dan "Netværksfejl ved skrivning til master"
- nla "Net fout tijdens schrijven naar master"
- eng "Net error writing to master"
- fre "Erreur d'écriture réseau reçue du maître"
- ger "Netzfehler beim Schreiben zum Master"
- ita "Errore di rete durante l'invio al master"
- por "Erro de rede gravando no 'master'"
- rus "÷ÏÚÎÉËÌÁ ÏÛÉÂËÁ ÚÁÐÉÓÉ × ÐÒÏÃÅÓÓÅ ËÏÍÍÕÎÉËÁÃÉÉ Ó ÇÏÌÏ×ÎÙÍ ÓÅÒ×ÅÒÏÍ"
- serbian "Greška u slanju mrežnih paketa na glavni server u klasteru"
- spa "Error de red escribiendo para el master"
- swe "Fick nätverksfel vid skrivning till master"
- ukr "íÅÒÅÖÅ×Á ÐÏÍÉÌËÁ ÚÁÐÉÓÕ ÄÏ ÇÏÌÏ×ÎÏÇÏ"
-ER_FT_MATCHING_KEY_NOT_FOUND
- cze "-B®ádný sloupec nemá vytvoøen fulltextový index"
- dan "Kan ikke finde en FULLTEXT nøgle som svarer til kolonne listen"
- nla "Kan geen FULLTEXT index vinden passend bij de kolom lijst"
- eng "Can't find FULLTEXT index matching the column list"
- est "Ei suutnud leida FULLTEXT indeksit, mis kattuks kasutatud tulpadega"
- fre "Impossible de trouver un index FULLTEXT correspondant à cette liste de colonnes"
- ger "Kann keinen FULLTEXT-Index finden, der der Feldliste entspricht"
- ita "Impossibile trovare un indice FULLTEXT che corrisponda all'elenco delle colonne"
- por "Não pode encontrar um índice para o texto todo que combine com a lista de colunas"
- rus "îÅ×ÏÚÍÏÖÎÏ ÏÔÙÓËÁÔØ ÐÏÌÎÏÔÅËÓÔÏ×ÙÊ (FULLTEXT) ÉÎÄÅËÓ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÓÐÉÓËÕ ÓÔÏÌÂÃÏ×"
- serbian "Ne mogu da pronaðem 'FULLTEXT' indeks koli odgovara listi kolona"
- spa "No puedo encontrar índice FULLTEXT correspondiendo a la lista de columnas"
- swe "Hittar inte ett FULLTEXT-index i kolumnlistan"
- ukr "îÅ ÍÏÖÕ ÚÎÁÊÔÉ FULLTEXT ¦ÎÄÅËÓ, ÝÏ ×¦ÄÐÏצÄÁ¤ ÐÅÒÅ̦ËÕ ÓÔÏ×Âæ×"
-ER_LOCK_OR_ACTIVE_TRANSACTION
- cze "Nemohu prov-Bést zadaný pøíkaz, proto¾e existují aktivní zamèené tabulky nebo aktivní transakce"
- dan "Kan ikke udføre den givne kommando fordi der findes aktive, låste tabeller eller fordi der udføres en transaktion"
- nla "Kan het gegeven commando niet uitvoeren, want u heeft actieve gelockte tabellen of een actieve transactie"
- eng "Can't execute the given command because you have active locked tables or an active transaction"
- est "Ei suuda täita antud käsku kuna on aktiivseid lukke või käimasolev transaktsioon"
- fre "Impossible d'exécuter la commande car vous avez des tables verrouillées ou une transaction active"
- ger "Kann den angegebenen Befehl wegen einer aktiven Tabellensperre oder einer aktiven Transaktion nicht ausführen"
- ita "Impossibile eseguire il comando richiesto: tabelle sotto lock o transazione in atto"
- por "Não pode executar o comando dado porque você tem tabelas ativas travadas ou uma transação ativa"
- rus "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÕËÁÚÁÎÎÕÀ ËÏÍÁÎÄÕ, ÐÏÓËÏÌØËÕ Õ ×ÁÓ ÐÒÉÓÕÔÓÔ×ÕÀÔ ÁËÔÉ×ÎÏ ÚÁÂÌÏËÉÒÏ×ÁÎÎÙÅ ÔÁÂÌÉÃÁ ÉÌÉ ÏÔËÒÙÔÁÑ ÔÒÁÎÚÁËÃÉÑ"
- serbian "Ne mogu da izvršim datu komandu zbog toga što su tabele zakljuèane ili je transakcija u toku"
- spa "No puedo ejecutar el comando dado porque tienes tablas bloqueadas o una transición activa"
- swe "Kan inte utföra kommandot emedan du har en låst tabell eller an aktiv transaktion"
- ukr "îÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ ÐÏÄÁÎÕ ËÏÍÁÎÄÕ ÔÏÍÕ, ÝÏ ÔÁÂÌÉÃÑ ÚÁÂÌÏËÏ×ÁÎÁ ÁÂÏ ×ÉËÏÎÕ¤ÔØÓÑ ÔÒÁÎÚÁËæÑ"
-ER_UNKNOWN_SYSTEM_VARIABLE
- cze "Nezn-Bámá systémová promìnná '%-.64s'"
- dan "Ukendt systemvariabel '%-.64s'"
- nla "Onbekende systeem variabele '%-.64s'"
- eng "Unknown system variable '%-.64s'"
- est "Tundmatu süsteemne muutuja '%-.64s'"
- fre "Variable système '%-.64s' inconnue"
- ger "Unbekannte Systemvariable '%-.64s'"
- ita "Variabile di sistema '%-.64s' sconosciuta"
- por "Variável de sistema '%-.64s' desconhecida"
- rus "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÐÅÒÅÍÅÎÎÁÑ '%-.64s'"
- serbian "Nepoznata sistemska promenljiva '%-.64s'"
- spa "Desconocida variable de sistema '%-.64s'"
- swe "Okänd systemvariabel: '%-.64s'"
- ukr "îÅצÄÏÍÁ ÓÉÓÔÅÍÎÁ ÚͦÎÎÁ '%-.64s'"
-ER_CRASHED_ON_USAGE
- cze "Tabulka '%-.64s' je ozna-Bèena jako poru¹ená a mìla by být opravena"
- dan "Tabellen '%-.64s' er markeret med fejl og bør repareres"
- nla "Tabel '%-.64s' staat als gecrashed gemarkeerd en dient te worden gerepareerd"
- eng "Table '%-.64s' is marked as crashed and should be repaired"
- est "Tabel '%-.64s' on märgitud vigaseks ja tuleb parandada"
- fre "La table '%-.64s' est marquée 'crashed' et devrait être réparée"
- ger "Tabelle '%-.64s' ist als defekt markiert und sollte repariert werden"
- ita "La tabella '%-.64s' e` segnalata come corrotta e deve essere riparata"
- por "Tabela '%-.64s' está marcada como danificada e deve ser reparada"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÐÏÍÅÞÅÎÁ ËÁË ÉÓÐÏÒÞÅÎÎÁÑ É ÄÏÌÖÎÁ ÐÒÏÊÔÉ ÐÒÏ×ÅÒËÕ É ÒÅÍÏÎÔ"
- serbian "Tabela '%-.64s' je markirana kao ošteæena i trebala bi biti popravljena"
- spa "Tabla '%-.64s' está marcada como crashed y debe ser reparada"
- swe "Tabell '%-.64s' är trasig och bör repareras med REPAIR TABLE"
- ukr "ôÁÂÌÉÃÀ '%-.64s' ÍÁÒËÏ×ÁÎÏ ÑË Ú¦ÐÓÏ×ÁÎÕ ÔÁ §§ ÐÏÔÒ¦ÂÎÏ ×¦ÄÎÏ×ÉÔÉ"
-ER_CRASHED_ON_REPAIR
- cze "Tabulka '%-.64s' je ozna-Bèena jako poru¹ená a poslední (automatická?) oprava se nezdaøila"
- dan "Tabellen '%-.64s' er markeret med fejl og sidste (automatiske?) REPAIR fejlede"
- nla "Tabel '%-.64s' staat als gecrashed gemarkeerd en de laatste (automatische?) reparatie poging mislukte"
- eng "Table '%-.64s' is marked as crashed and last (automatic?) repair failed"
- est "Tabel '%-.64s' on märgitud vigaseks ja viimane (automaatne?) parandus ebaõnnestus"
- fre "La table '%-.64s' est marquée 'crashed' et le dernier 'repair' a échoué"
- ger "Tabelle '%-.64s' ist als defekt markiert und der letzte (automatische?) Reparaturversuch schlug fehl"
- ita "La tabella '%-.64s' e` segnalata come corrotta e l'ultima ricostruzione (automatica?) e` fallita"
- por "Tabela '%-.64s' está marcada como danificada e a última reparação (automática?) falhou"
- rus "ôÁÂÌÉÃÁ '%-.64s' ÐÏÍÅÞÅÎÁ ËÁË ÉÓÐÏÒÞÅÎÎÁÑ É ÐÏÓÌÅÄÎÉÊ (Á×ÔÏÍÁÔÉÞÅÓËÉÊ?) ÒÅÍÏÎÔ ÎÅ ÂÙÌ ÕÓÐÅÛÎÙÍ"
- serbian "Tabela '%-.64s' je markirana kao ošteæena, a zadnja (automatska?) popravka je bila neuspela"
- spa "Tabla '%-.64s' está marcada como crashed y la última reparación (automactica?) falló"
- swe "Tabell '%-.64s' är trasig och senast (automatiska?) reparation misslyckades"
- ukr "ôÁÂÌÉÃÀ '%-.64s' ÍÁÒËÏ×ÁÎÏ ÑË Ú¦ÐÓÏ×ÁÎÕ ÔÁ ÏÓÔÁÎΤ (Á×ÔÏÍÁÔÉÞÎÅ?) צÄÎÏ×ÌÅÎÎÑ ÎÅ ×ÄÁÌÏÓÑ"
-ER_WARNING_NOT_COMPLETE_ROLLBACK
- dan "Advarsel: Visse data i tabeller der ikke understøtter transaktioner kunne ikke tilbagestilles"
- nla "Waarschuwing: Roll back mislukt voor sommige buiten transacties gewijzigde tabellen"
- eng "Some non-transactional changed tables couldn't be rolled back"
- est "Hoiatus: mõnesid transaktsioone mittetoetavaid tabeleid ei suudetud tagasi kerida"
- fre "Attention: certaines tables ne supportant pas les transactions ont été changées et elles ne pourront pas être restituées"
- ger "Änderungen an einigen nicht transaktionalen Tabellen konnten nicht zurückgerollt werden"
- ita "Attenzione: Alcune delle modifiche alle tabelle non transazionali non possono essere ripristinate (roll back impossibile)"
- por "Aviso: Algumas tabelas não-transacionais alteradas não puderam ser reconstituídas (rolled back)"
- rus "÷ÎÉÍÁÎÉÅ: ÐÏ ÎÅËÏÔÏÒÙÍ ÉÚÍÅÎÅÎÎÙÍ ÎÅÔÒÁÎÚÁËÃÉÏÎÎÙÍ ÔÁÂÌÉÃÁÍ ÎÅ×ÏÚÍÏÖÎÏ ÂÕÄÅÔ ÐÒÏÉÚ×ÅÓÔÉ ÏÔËÁÔ ÔÒÁÎÚÁËÃÉÉ"
- serbian "Upozorenje: Neke izmenjene tabele ne podržavaju komandu 'ROLLBACK'"
- spa "Aviso: Algunas tablas no transancionales no pueden tener rolled back"
- swe "Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK"
- ukr "úÁÓÔÅÒÅÖÅÎÎÑ: äÅÑ˦ ÎÅÔÒÁÎÚÁËæÊΦ ÚͦÎÉ ÔÁÂÌÉÃØ ÎÅ ÍÏÖÎÁ ÂÕÄÅ ÐÏ×ÅÒÎÕÔÉ"
-ER_TRANS_CACHE_FULL
- dan "Fler-udtryks transaktion krævede mere plads en 'max_binlog_cache_size' bytes. Forhøj værdien af denne variabel og prøv igen"
- nla "Multi-statement transactie vereist meer dan 'max_binlog_cache_size' bytes opslag. Verhoog deze mysqld variabele en probeer opnieuw"
- eng "Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again"
- est "Mitme lausendiga transaktsioon nõudis rohkem ruumi kui lubatud 'max_binlog_cache_size' muutujaga. Suurenda muutuja väärtust ja proovi uuesti"
- fre "Cette transaction à commandes multiples nécessite plus de 'max_binlog_cache_size' octets de stockage, augmentez cette variable de mysqld et réessayez"
- ger "Transaktionen, die aus mehreren Befehlen bestehen, benötigten mehr als 'max_binlog_cache_size' Bytes an Speicher. Btte vergrössern Sie diese Server-Variable versuchen Sie es noch einmal"
- ita "La transazione a comandi multipli (multi-statement) ha richiesto piu` di 'max_binlog_cache_size' bytes di disco: aumentare questa variabile di mysqld e riprovare"
- por "Transações multi-declaradas (multi-statement transactions) requeriram mais do que o valor limite (max_binlog_cache_size) de bytes para armazenagem. Aumente o valor desta variável do mysqld e tente novamente"
- rus "ôÒÁÎÚÁËÃÉÉ, ×ËÌÀÞÁÀÝÅÊ ÂÏÌØÛÏÅ ËÏÌÉÞÅÓÔ×Ï ËÏÍÁÎÄ, ÐÏÔÒÅÂÏ×ÁÌÏÓØ ÂÏÌÅÅ ÞÅÍ 'max_binlog_cache_size' ÂÁÊÔ. õ×ÅÌÉÞØÔÅ ÜÔÕ ÐÅÒÅÍÅÎÎÕÀ ÓÅÒ×ÅÒÁ mysqld É ÐÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ"
- spa "Multipla transición necesita mas que 'max_binlog_cache_size' bytes de almacenamiento. Aumente esta variable mysqld y tente de nuevo"
- swe "Transaktionen krävde mera än 'max_binlog_cache_size' minne. Öka denna mysqld-variabel och försök på nytt"
- ukr "ôÒÁÎÚÁËÃ¦Ñ Ú ÂÁÇÁÔØÍÁ ×ÉÒÁÚÁÍÉ ×ÉÍÁÇÁ¤ ¦ÌØÛÅ Î¦Ö 'max_binlog_cache_size' ÂÁÊÔ¦× ÄÌÑ ÚÂÅÒ¦ÇÁÎÎÑ. ú¦ÌØÛÔÅ ÃÀ ÚͦÎÎÕ mysqld ÔÁ ÓÐÒÏÂÕÊÔÅ ÚÎÏ×Õ"
-ER_SLAVE_MUST_STOP
- dan "Denne handling kunne ikke udføres med kørende slave, brug først kommandoen STOP SLAVE"
- nla "Deze operatie kan niet worden uitgevoerd met een actieve slave, doe eerst STOP SLAVE"
- eng "This operation cannot be performed with a running slave; run STOP SLAVE first"
- fre "Cette opération ne peut être réalisée avec un esclave actif, faites STOP SLAVE d'abord"
- ger "Diese Operation kann bei einem aktiven Slave nicht durchgeführt werden. Bitte zuerst STOP SLAVE ausführen"
- ita "Questa operazione non puo' essere eseguita con un database 'slave' che gira, lanciare prima STOP SLAVE"
- por "Esta operação não pode ser realizada com um 'slave' em execução. Execute STOP SLAVE primeiro"
- rus "üÔÕ ÏÐÅÒÁÃÉÀ ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÒÉ ÒÁÂÏÔÁÀÝÅÍ ÐÏÔÏËÅ ÐÏÄÞÉÎÅÎÎÏÇÏ ÓÅÒ×ÅÒÁ. óÎÁÞÁÌÁ ×ÙÐÏÌÎÉÔÅ STOP SLAVE"
- serbian "Ova operacija ne može biti izvršena dok je aktivan podreðeni server. Zadajte prvo komandu 'STOP SLAVE' da zaustavite podreðeni server."
- spa "Esta operación no puede ser hecha con el esclavo funcionando, primero use STOP SLAVE"
- swe "Denna operation kan inte göras under replikering; Gör STOP SLAVE först"
- ukr "ïÐÅÒÁÃ¦Ñ ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÏÎÁÎÁ Ú ÚÁÐÕÝÅÎÉÍ Ð¦ÄÌÅÇÌÉÍ, ÓÐÏÞÁÔËÕ ×ÉËÏÎÁÊÔÅ STOP SLAVE"
-ER_SLAVE_NOT_RUNNING
- dan "Denne handling kræver en kørende slave. Konfigurer en slave og brug kommandoen START SLAVE"
- nla "Deze operatie vereist een actieve slave, configureer slave en doe dan START SLAVE"
- eng "This operation requires a running slave; configure slave and do START SLAVE"
- fre "Cette opération nécessite un esclave actif, configurez les esclaves et faites START SLAVE"
- ger "Diese Operation benötigt einen aktiven Slave. Bitte Slave konfigurieren und mittels START SLAVE aktivieren"
- ita "Questa operaione richiede un database 'slave', configurarlo ed eseguire START SLAVE"
- por "Esta operação requer um 'slave' em execução. Configure o 'slave' e execute START SLAVE"
- rus "äÌÑ ÜÔÏÊ ÏÐÅÒÁÃÉÉ ÔÒÅÂÕÅÔÓÑ ÒÁÂÏÔÁÀÝÉÊ ÐÏÄÞÉÎÅÎÎÙÊ ÓÅÒ×ÅÒ. óÎÁÞÁÌÁ ×ÙÐÏÌÎÉÔÅ START SLAVE"
- serbian "Ova operacija zahteva da je aktivan podreðeni server. Konfigurišite prvo podreðeni server i onda izvršite komandu 'START SLAVE'"
- spa "Esta operación necesita el esclavo funcionando, configure esclavo y haga el START SLAVE"
- swe "Denna operation kan endast göras under replikering; Konfigurera slaven och gör START SLAVE"
- ukr "ïÐÅÒÁÃ¦Ñ ×ÉÍÁÇÁ¤ ÚÁÐÕÝÅÎÏÇÏ Ð¦ÄÌÅÇÌÏÇÏ, ÚËÏÎƦÇÕÒÕÊÔŠЦÄÌÅÇÌÏÇÏ ÔÁ ×ÉËÏÎÁÊÔÅ START SLAVE"
-ER_BAD_SLAVE
- dan "Denne server er ikke konfigureret som slave. Ret in config-filen eller brug kommandoen CHANGE MASTER TO"
- nla "De server is niet geconfigureerd als slave, fix in configuratie bestand of met CHANGE MASTER TO"
- eng "The server is not configured as slave; fix in config file or with CHANGE MASTER TO"
- fre "Le server n'est pas configuré comme un esclave, changez le fichier de configuration ou utilisez CHANGE MASTER TO"
- ger "Der Server ist nicht als Slave konfiguriert. Bitte in der Konfigurationsdatei oder mittels CHANGE MASTER TO beheben"
- ita "Il server non e' configurato come 'slave', correggere il file di configurazione cambiando CHANGE MASTER TO"
- por "O servidor não está configurado como 'slave'. Acerte o arquivo de configuração ou use CHANGE MASTER TO"
- rus "üÔÏÔ ÓÅÒ×ÅÒ ÎÅ ÎÁÓÔÒÏÅÎ ËÁË ÐÏÄÞÉÎÅÎÎÙÊ. ÷ÎÅÓÉÔÅ ÉÓÐÒÁ×ÌÅÎÉÑ × ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÍ ÆÁÊÌÅ ÉÌÉ Ó ÐÏÍÏÝØÀ CHANGE MASTER TO"
- serbian "Server nije konfigurisan kao podreðeni server, ispravite konfiguracioni file ili na njemu izvršite komandu 'CHANGE MASTER TO'"
- spa "El servidor no está configurado como esclavo, edite el archivo config file o con CHANGE MASTER TO"
- swe "Servern är inte konfigurerade som en replikationsslav. Ändra konfigurationsfilen eller gör CHANGE MASTER TO"
- ukr "óÅÒ×ÅÒ ÎÅ ÚËÏÎƦÇÕÒÏ×ÁÎÏ ÑË Ð¦ÄÌÅÇÌÉÊ, ×ÉÐÒÁ×ÔÅ ÃÅ Õ ÆÁÊ̦ ËÏÎƦÇÕÒÁæ§ ÁÂÏ Ú CHANGE MASTER TO"
-ER_MASTER_INFO
- eng "Could not initialize master info structure; more error messages can be found in the MySQL error log"
- fre "Impossible d'initialiser les structures d'information de maître, vous trouverez des messages d'erreur supplémentaires dans le journal des erreurs de MySQL"
- ger "Konnte Master-Info-Struktur nicht initialisieren. Weitere Fehlermeldungen können im MySQL-Error-Log eingesehen werden"
- serbian "Nisam mogao da inicijalizujem informacionu strukturu glavnog servera, proverite da li imam privilegije potrebne za pristup file-u 'master.info'"
- swe "Kunde inte initialisera replikationsstrukturerna. See MySQL fel fil för mera information"
-ER_SLAVE_THREAD
- dan "Kunne ikke danne en slave-tråd; check systemressourcerne"
- nla "Kon slave thread niet aanmaken, controleer systeem resources"
- eng "Could not create slave thread; check system resources"
- fre "Impossible de créer une tâche esclave, vérifiez les ressources système"
- ger "Konnte Slave-Thread nicht starten. Bitte System-Ressourcen überprüfen"
- ita "Impossibile creare il thread 'slave', controllare le risorse di sistema"
- por "Não conseguiu criar 'thread' de 'slave'. Verifique os recursos do sistema"
- rus "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÐÏÔÏË ÐÏÄÞÉÎÅÎÎÏÇÏ ÓÅÒ×ÅÒÁ. ðÒÏ×ÅÒØÔÅ ÓÉÓÔÅÍÎÙÅ ÒÅÓÕÒÓÙ"
- serbian "Nisam mogao da startujem thread za podreðeni server, proverite sistemske resurse"
- spa "No puedo crear el thread esclavo, verifique recursos del sistema"
- swe "Kunde inte starta en tråd för replikering"
- ukr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ Ð¦ÄÌÅÇÌÕ Ç¦ÌËÕ, ÐÅÒÅצÒÔÅ ÓÉÓÔÅÍΦ ÒÅÓÕÒÓÉ"
-ER_TOO_MANY_USER_CONNECTIONS 42000
- dan "Brugeren %-.64s har allerede mere end 'max_user_connections' aktive forbindelser"
- nla "Gebruiker %-.64s heeft reeds meer dan 'max_user_connections' actieve verbindingen"
- eng "User %-.64s already has more than 'max_user_connections' active connections"
- est "Kasutajal %-.64s on juba rohkem ühendusi kui lubatud 'max_user_connections' muutujaga"
- fre "L'utilisateur %-.64s possède déjà plus de 'max_user_connections' connections actives"
- ger "Benutzer '%-.64s' hat mehr als 'max_user_connections' aktive Verbindungen"
- ita "L'utente %-.64s ha gia' piu' di 'max_user_connections' connessioni attive"
- por "Usuário '%-.64s' já possui mais que o valor máximo de conexões (max_user_connections) ativas"
- rus "õ ÐÏÌØÚÏ×ÁÔÅÌÑ %-.64s ÕÖÅ ÂÏÌØÛÅ ÞÅÍ 'max_user_connections' ÁËÔÉ×ÎÙÈ ÓÏÅÄÉÎÅÎÉÊ"
- serbian "Korisnik %-.64s veæ ima više aktivnih konekcija nego što je to odreðeno 'max_user_connections' promenljivom"
- spa "Usario %-.64s ya tiene mas que 'max_user_connections' conexiones activas"
- swe "Användare '%-.64s' har redan 'max_user_connections' aktiva inloggningar"
- ukr "ëÏÒÉÓÔÕ×ÁÞ %-.64s ×ÖÅ ÍÁ¤ ¦ÌØÛÅ Î¦Ö 'max_user_connections' ÁËÔÉ×ÎÉÈ Ú'¤ÄÎÁÎØ"
-ER_SET_CONSTANTS_ONLY
- dan "Du må kun bruge konstantudtryk med SET"
- nla "U mag alleen constante expressies gebruiken bij SET"
- eng "You may only use constant expressions with SET"
- est "Ainult konstantsed suurused on lubatud SET klauslis"
- fre "Seules les expressions constantes sont autorisées avec SET"
- ger "Bei SET dürfen nur konstante Ausdrücke verwendet werden"
- ita "Si possono usare solo espressioni costanti con SET"
- por "Você pode usar apenas expressões constantes com SET"
- rus "÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ × SET ÔÏÌØËÏ ËÏÎÓÔÁÎÔÎÙÅ ×ÙÒÁÖÅÎÉÑ"
- serbian "Možete upotrebiti samo konstantan iskaz sa komandom 'SET'"
- spa "Tu solo debes usar expresiones constantes con SET"
- swe "Man kan endast använda konstantuttryck med SET"
- ukr "íÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÌÉÛÅ ×ÉÒÁÚÉ Ú¦ ÓÔÁÌÉÍÉ Õ SET"
-ER_LOCK_WAIT_TIMEOUT
- dan "Lock wait timeout overskredet"
- nla "Lock wacht tijd overschreden"
- eng "Lock wait timeout exceeded; try restarting transaction"
- est "Kontrollaeg ületatud luku järel ootamisel; Proovi transaktsiooni otsast alata"
- fre "Timeout sur l'obtention du verrou"
- ger "Beim Warten auf eine Sperre wurde die zulässige Wartezeit überschritten. Bitte versuchen Sie, die Transaktion neu zu starten"
- ita "E' scaduto il timeout per l'attesa del lock"
- por "Tempo de espera (timeout) de travamento excedido. Tente reiniciar a transação."
- rus "ôÁÊÍÁÕÔ ÏÖÉÄÁÎÉÑ ÂÌÏËÉÒÏ×ËÉ ÉÓÔÅË; ÐÏÐÒÏÂÕÊÔÅ ÐÅÒÅÚÁÐÕÓÔÉÔØ ÔÒÁÎÚÁËÃÉÀ"
- serbian "Vremenski limit za zakljuèavanje tabele je istekao; Probajte da ponovo startujete transakciju"
- spa "Tiempo de bloqueo de espera excedido"
- swe "Fick inte ett lås i tid ; Försök att starta om transaktionen"
- ukr "úÁÔÒÉÍËÕ ÏÞ¦ËÕ×ÁÎÎÑ ÂÌÏËÕ×ÁÎÎÑ ×ÉÞÅÒÐÁÎÏ"
-ER_LOCK_TABLE_FULL
- dan "Det totale antal låse overstiger størrelsen på låse-tabellen"
- nla "Het totale aantal locks overschrijdt de lock tabel grootte"
- eng "The total number of locks exceeds the lock table size"
- est "Lukkude koguarv ületab lukutabeli suuruse"
- fre "Le nombre total de verrou dépasse la taille de la table des verrous"
- ger "Die Gesamtzahl der Sperren überschreitet die Größe der Sperrtabelle"
- ita "Il numero totale di lock e' maggiore della grandezza della tabella di lock"
- por "O número total de travamentos excede o tamanho da tabela de travamentos"
- rus "ïÂÝÅÅ ËÏÌÉÞÅÓÔ×Ï ÂÌÏËÉÒÏ×ÏË ÐÒÅ×ÙÓÉÌÏ ÒÁÚÍÅÒÙ ÔÁÂÌÉÃÙ ÂÌÏËÉÒÏ×ÏË"
- serbian "Broj totalnih zakljuèavanja tabele premašuje velièinu tabele zakljuèavanja"
- spa "El número total de bloqueos excede el tamaño de bloqueo de la tabla"
- swe "Antal lås överskrider antalet reserverade lås"
- ukr "úÁÇÁÌØÎÁ ˦ÌØ˦ÓÔØ ÂÌÏËÕ×ÁÎØ ÐÅÒÅ×ÉÝÉÌÁ ÒÏÚÍ¦Ò ÂÌÏËÕ×ÁÎØ ÄÌÑ ÔÁÂÌÉæ"
-ER_READ_ONLY_TRANSACTION 25000
- dan "Update lås kan ikke opnås under en READ UNCOMMITTED transaktion"
- nla "Update locks kunnen niet worden verkregen tijdens een READ UNCOMMITTED transactie"
- eng "Update locks cannot be acquired during a READ UNCOMMITTED transaction"
- est "Uuenduslukke ei saa kasutada READ UNCOMMITTED transaktsiooni käigus"
- fre "Un verrou en update ne peut être acquit pendant une transaction READ UNCOMMITTED"
- ger "Während einer READ-UNCOMMITTED-Transaktion können keine UPDATE-Sperren angefordert werden"
- ita "I lock di aggiornamento non possono essere acquisiti durante una transazione 'READ UNCOMMITTED'"
- por "Travamentos de atualização não podem ser obtidos durante uma transação de tipo READ UNCOMMITTED"
- rus "âÌÏËÉÒÏ×ËÉ ÏÂÎÏ×ÌÅÎÉÊ ÎÅÌØÚÑ ÐÏÌÕÞÉÔØ × ÐÒÏÃÅÓÓÅ ÞÔÅÎÉÑ ÎÅ ÐÒÉÎÑÔÏÊ (× ÒÅÖÉÍÅ READ UNCOMMITTED) ÔÒÁÎÚÁËÃÉÉ"
- serbian "Zakljuèavanja izmena ne mogu biti realizovana sve dok traje 'READ UNCOMMITTED' transakcija"
- spa "Bloqueos de actualización no pueden ser adqueridos durante una transición READ UNCOMMITTED"
- swe "Updateringslås kan inte göras när man använder READ UNCOMMITTED"
- ukr "ïÎÏ×ÉÔÉ ÂÌÏËÕ×ÁÎÎÑ ÎÅ ÍÏÖÌÉ×Ï ÎÁ ÐÒÏÔÑÚ¦ ÔÒÁÎÚÁËæ§ READ UNCOMMITTED"
-ER_DROP_DB_WITH_READ_LOCK
- dan "DROP DATABASE er ikke tilladt mens en tråd holder på globalt read lock"
- nla "DROP DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit"
- eng "DROP DATABASE not allowed while thread is holding global read lock"
- est "DROP DATABASE ei ole lubatud kui lõim omab globaalset READ lukku"
- fre "DROP DATABASE n'est pas autorisée pendant qu'une tâche possède un verrou global en lecture"
- ger "DROP DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hält"
- ita "DROP DATABASE non e' permesso mentre il thread ha un lock globale di lettura"
- por "DROP DATABASE não permitido enquanto uma 'thread' está mantendo um travamento global de leitura"
- rus "îÅ ÄÏÐÕÓËÁÅÔÓÑ DROP DATABASE, ÐÏËÁ ÐÏÔÏË ÄÅÒÖÉÔ ÇÌÏÂÁÌØÎÕÀ ÂÌÏËÉÒÏ×ËÕ ÞÔÅÎÉÑ"
- serbian "Komanda 'DROP DATABASE' nije dozvoljena dok thread globalno zakljuèava èitanje podataka"
- spa "DROP DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global"
- swe "DROP DATABASE är inte tillåtet när man har ett globalt läslås"
- ukr "DROP DATABASE ÎÅ ÄÏÚ×ÏÌÅÎÏ ÄÏËÉ Ç¦ÌËÁ ÐÅÒÅÂÕ×Á¤ Ð¦Ä ÚÁÇÁÌØÎÉÍ ÂÌÏËÕ×ÁÎÎÑÍ ÞÉÔÁÎÎÑ"
-ER_CREATE_DB_WITH_READ_LOCK
- dan "CREATE DATABASE er ikke tilladt mens en tråd holder på globalt read lock"
- nla "CREATE DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit"
- eng "CREATE DATABASE not allowed while thread is holding global read lock"
- est "CREATE DATABASE ei ole lubatud kui lõim omab globaalset READ lukku"
- fre "CREATE DATABASE n'est pas autorisée pendant qu'une tâche possède un verrou global en lecture"
- ger "CREATE DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hält"
- ita "CREATE DATABASE non e' permesso mentre il thread ha un lock globale di lettura"
- por "CREATE DATABASE não permitido enquanto uma 'thread' está mantendo um travamento global de leitura"
- rus "îÅ ÄÏÐÕÓËÁÅÔÓÑ CREATE DATABASE, ÐÏËÁ ÐÏÔÏË ÄÅÒÖÉÔ ÇÌÏÂÁÌØÎÕÀ ÂÌÏËÉÒÏ×ËÕ ÞÔÅÎÉÑ"
- serbian "Komanda 'CREATE DATABASE' nije dozvoljena dok thread globalno zakljuèava èitanje podataka"
- spa "CREATE DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global"
- swe "CREATE DATABASE är inte tillåtet när man har ett globalt läslås"
- ukr "CREATE DATABASE ÎÅ ÄÏÚ×ÏÌÅÎÏ ÄÏËÉ Ç¦ÌËÁ ÐÅÒÅÂÕ×Á¤ Ð¦Ä ÚÁÇÁÌØÎÉÍ ÂÌÏËÕ×ÁÎÎÑÍ ÞÉÔÁÎÎÑ"
-ER_WRONG_ARGUMENTS
- nla "Foutieve parameters voor %s"
- eng "Incorrect arguments to %s"
- est "Vigased parameetrid %s-le"
- fre "Mauvais arguments à %s"
- ger "Falsche Argumente für %s"
- ita "Argomenti errati a %s"
- por "Argumentos errados para %s"
- rus "îÅ×ÅÒÎÙÅ ÐÁÒÁÍÅÔÒÙ ÄÌÑ %s"
- serbian "Pogrešni argumenti prosleðeni na %s"
- spa "Argumentos errados para %s"
- swe "Felaktiga argument till %s"
- ukr "èÉÂÎÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ %s"
-ER_NO_PERMISSION_TO_CREATE_USER 42000
- nla "'%-.32s'@'%-.64s' mag geen nieuwe gebruikers creeren"
- eng "'%-.32s'@'%-.64s' is not allowed to create new users"
- est "Kasutajal '%-.32s'@'%-.64s' ei ole lubatud luua uusi kasutajaid"
- fre "'%-.32s'@'%-.64s' n'est pas autorisé à créer de nouveaux utilisateurs"
- ger "'%-.32s'@'%-.64s' ist nicht berechtigt, neue Benutzer hinzuzufügen"
- ita "A '%-.32s'@'%-.64s' non e' permesso creare nuovi utenti"
- por "Não é permitido a '%-.32s'@'%-.64s' criar novos usuários"
- rus "'%-.32s'@'%-.64s' ÎÅ ÒÁÚÒÅÛÁÅÔÓÑ ÓÏÚÄÁ×ÁÔØ ÎÏ×ÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
- serbian "Korisniku '%-.32s'@'%-.64s' nije dozvoljeno da kreira nove korisnike"
- spa "'%-.32s`@`%-.64s` no es permitido para crear nuevos usuarios"
- swe "'%-.32s'@'%-.64s' har inte rättighet att skapa nya användare"
- ukr "ëÏÒÉÓÔÕ×ÁÞÕ '%-.32s'@'%-.64s' ÎÅ ÄÏÚ×ÏÌÅÎÏ ÓÔ×ÏÒÀ×ÁÔÉ ÎÏ×ÉÈ ËÏÒÉÓÔÕ×ÁÞ¦×"
-ER_UNION_TABLES_IN_DIFFERENT_DIR
- nla "Incorrecte tabel definitie; alle MERGE tabellen moeten tot dezelfde database behoren"
- eng "Incorrect table definition; all MERGE tables must be in the same database"
- est "Vigane tabelimääratlus; kõik MERGE tabeli liikmed peavad asuma samas andmebaasis"
- fre "Définition de table incorrecte; toutes les tables MERGE doivent être dans la même base de donnée"
- ger "Falsche Tabellendefinition. Alle MERGE-Tabellen müssen sich in derselben Datenbank befinden"
- ita "Definizione della tabella errata; tutte le tabelle di tipo MERGE devono essere nello stesso database"
- por "Definição incorreta da tabela. Todas as tabelas contidas na junção devem estar no mesmo banco de dados."
- rus "îÅ×ÅÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÔÁÂÌÉÃÙ; ÷ÓÅ ÔÁÂÌÉÃÙ × MERGE ÄÏÌÖÎÙ ÐÒÉÎÁÄÌÅÖÁÔØ ÏÄÎÏÊ É ÔÏÊ ÖÅ ÂÁÚÅ ÄÁÎÎÙÈ"
- serbian "Pogrešna definicija tabele; sve 'MERGE' tabele moraju biti u istoj bazi podataka"
- spa "Incorrecta definición de la tabla; Todas las tablas MERGE deben estar en el mismo banco de datos"
- swe "Felaktig tabelldefinition; alla tabeller i en MERGE-tabell måste vara i samma databas"
-ER_LOCK_DEADLOCK 40001
- nla "Deadlock gevonden tijdens lock-aanvraag poging; Probeer herstart van de transactie"
- eng "Deadlock found when trying to get lock; try restarting transaction"
- est "Lukustamisel tekkis tupik (deadlock); alusta transaktsiooni otsast"
- fre "Deadlock découvert en essayant d'obtenir les verrous : essayez de redémarrer la transaction"
- ger "Beim Versuch, eine Sperre anzufordern, ist ein Deadlock aufgetreten. Versuchen Sie, die Transaktion neu zu starten"
- ita "Trovato deadlock durante il lock; Provare a far ripartire la transazione"
- por "Encontrado um travamento fatal (deadlock) quando tentava obter uma trava. Tente reiniciar a transação."
- rus "÷ÏÚÎÉËÌÁ ÔÕÐÉËÏ×ÁÑ ÓÉÔÕÁÃÉÑ × ÐÒÏÃÅÓÓÅ ÐÏÌÕÞÅÎÉÑ ÂÌÏËÉÒÏ×ËÉ; ðÏÐÒÏÂÕÊÔÅ ÐÅÒÅÚÁÐÕÓÔÉÔØ ÔÒÁÎÚÁËÃÉÀ"
- serbian "Unakrsno zakljuèavanje pronaðeno kada sam pokušao da dobijem pravo na zakljuèavanje; Probajte da restartujete transakciju"
- spa "Encontrado deadlock cuando tentando obtener el bloqueo; Tente recomenzar la transición"
- swe "Fick 'DEADLOCK' vid låsförsök av block/rad. Försök att starta om transaktionen"
-ER_TABLE_CANT_HANDLE_FT
- nla "Het gebruikte tabel type ondersteund geen FULLTEXT indexen"
- eng "The used table type doesn't support FULLTEXT indexes"
- est "Antud tabelitüüp ei toeta FULLTEXT indekseid"
- fre "Le type de table utilisé ne supporte pas les index FULLTEXT"
- ger "Der verwendete Tabellentyp unterstützt keine FULLTEXT-Indizes"
- ita "La tabella usata non supporta gli indici FULLTEXT"
- por "O tipo de tabela utilizado não suporta índices de texto completo (fulltext indexes)"
- rus "éÓÐÏÌØÚÕÅÍÙÊ ÔÉÐ ÔÁÂÌÉà ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÏÌÎÏÔÅËÓÔÏ×ÙÈ ÉÎÄÅËÓÏ×"
- serbian "Upotrebljeni tip tabele ne podržava 'FULLTEXT' indekse"
- spa "El tipo de tabla usada no soporta índices FULLTEXT"
- swe "Tabelltypen har inte hantering av FULLTEXT-index"
- ukr "÷ÉËÏÒÉÓÔÁÎÉÊ ÔÉÐ ÔÁÂÌÉæ ΊЦÄÔÒÉÍÕ¤ FULLTEXT ¦ÎÄÅËÓ¦×"
-ER_CANNOT_ADD_FOREIGN
- nla "Kan foreign key beperking niet toevoegen"
- eng "Cannot add foreign key constraint"
- fre "Impossible d'ajouter des contraintes d'index externe"
- ger "Fremdschlüssel-Beschränkung kann nicht hinzugefügt werden"
- ita "Impossibile aggiungere il vincolo di integrita' referenziale (foreign key constraint)"
- por "Não pode acrescentar uma restrição de chave estrangeira"
- rus "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÏÇÒÁÎÉÞÅÎÉÑ ×ÎÅÛÎÅÇÏ ËÌÀÞÁ"
- serbian "Ne mogu da dodam proveru spoljnog kljuèa"
- spa "No puede adicionar clave extranjera constraint"
- swe "Kan inte lägga till 'FOREIGN KEY constraint'"
-ER_NO_REFERENCED_ROW 23000
- nla "Kan onderliggende rij niet toevoegen: foreign key beperking gefaald"
- eng "Cannot add or update a child row: a foreign key constraint fails"
- fre "Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche"
- ger "Hinzufügen oder Aktualisieren eines Kind-Datensatzes schlug aufgrund einer Fremdschlüssel-Beschränkung fehl"
- greek "Cannot add a child row: a foreign key constraint fails"
- hun "Cannot add a child row: a foreign key constraint fails"
- ita "Impossibile aggiungere la riga: un vincolo d'integrita' referenziale non e' soddisfatto"
- norwegian-ny "Cannot add a child row: a foreign key constraint fails"
- por "Não pode acrescentar uma linha filha: uma restrição de chave estrangeira falhou"
- rus "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÉÌÉ ÏÂÎÏ×ÉÔØ ÄÏÞÅÒÎÀÀ ÓÔÒÏËÕ: ÐÒÏ×ÅÒËÁ ÏÇÒÁÎÉÞÅÎÉÊ ×ÎÅÛÎÅÇÏ ËÌÀÞÁ ÎÅ ×ÙÐÏÌÎÑÅÔÓÑ"
- spa "No puede adicionar una línea hijo: falla de clave extranjera constraint"
- swe "FOREIGN KEY-konflikt: Kan inte skriva barn"
-ER_ROW_IS_REFERENCED 23000
- eng "Cannot delete or update a parent row: a foreign key constraint fails"
- fre "Impossible de supprimer un enregistrement père : une constrainte externe l'empèche"
- ger "Löschen oder Aktualisieren eines Eltern-Datensatzes schlug aufgrund einer Fremdschlüssel-Beschränkung fehl"
- greek "Cannot delete a parent row: a foreign key constraint fails"
- hun "Cannot delete a parent row: a foreign key constraint fails"
- ita "Impossibile cancellare la riga: un vincolo d'integrita' referenziale non e' soddisfatto"
- por "Não pode apagar uma linha pai: uma restrição de chave estrangeira falhou"
- rus "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÉÌÉ ÏÂÎÏ×ÉÔØ ÒÏÄÉÔÅÌØÓËÕÀ ÓÔÒÏËÕ: ÐÒÏ×ÅÒËÁ ÏÇÒÁÎÉÞÅÎÉÊ ×ÎÅÛÎÅÇÏ ËÌÀÞÁ ÎÅ ×ÙÐÏÌÎÑÅÔÓÑ"
- serbian "Ne mogu da izbrišem roditeljski slog: provera spoljnog kljuèa je neuspela"
- spa "No puede deletar una línea padre: falla de clave extranjera constraint"
- swe "FOREIGN KEY-konflikt: Kan inte radera fader"
-ER_CONNECT_TO_MASTER 08S01
- nla "Fout bij opbouwen verbinding naar master: %-.128s"
- eng "Error connecting to master: %-.128s"
- ger "Fehler bei der Verbindung zum Master: %-.128s"
- ita "Errore durante la connessione al master: %-.128s"
- por "Erro conectando com o master: %-.128s"
- rus "ïÛÉÂËÁ ÓÏÅÄÉÎÅÎÉÑ Ó ÇÏÌÏ×ÎÙÍ ÓÅÒ×ÅÒÏÍ: %-.128s"
- spa "Error de coneccion a master: %-.128s"
- swe "Fick fel vid anslutning till master: %-.128s"
-ER_QUERY_ON_MASTER
- nla "Fout bij uitvoeren query op master: %-.128s"
- eng "Error running query on master: %-.128s"
- ger "Beim Ausführen einer Abfrage auf dem Master trat ein Fehler auf: %-.128s"
- ita "Errore eseguendo una query sul master: %-.128s"
- por "Erro rodando consulta no master: %-.128s"
- rus "ïÛÉÂËÁ ×ÙÐÏÌÎÅÎÉÑ ÚÁÐÒÏÓÁ ÎÁ ÇÏÌÏ×ÎÏÍ ÓÅÒ×ÅÒÅ: %-.128s"
- spa "Error executando el query en master: %-.128s"
- swe "Fick fel vid utförande av command på mastern: %-.128s"
-ER_ERROR_WHEN_EXECUTING_COMMAND
- nla "Fout tijdens uitvoeren van commando %s: %-.128s"
- eng "Error when executing command %s: %-.128s"
- est "Viga käsu %s täitmisel: %-.128s"
- ger "Fehler beim Ausführen des Befehls %s: %-.128s"
- ita "Errore durante l'esecuzione del comando %s: %-.128s"
- por "Erro quando executando comando %s: %-.128s"
- rus "ïÛÉÂËÁ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ %s: %-.128s"
- serbian "Greška pri izvršavanju komande %s: %-.128s"
- spa "Error de %s: %-.128s"
- swe "Fick fel vid utförande av %s: %-.128s"
-ER_WRONG_USAGE
- nla "Foutief gebruik van %s en %s"
- eng "Incorrect usage of %s and %s"
- est "Vigane %s ja %s kasutus"
- ger "Falsche Verwendung von %s und %s"
- ita "Uso errato di %s e %s"
- por "Uso errado de %s e %s"
- rus "îÅ×ÅÒÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ %s É %s"
- serbian "Pogrešna upotreba %s i %s"
- spa "Equivocado uso de %s y %s"
- swe "Felaktig använding av %s and %s"
- ukr "Wrong usage of %s and %s"
-ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 21000
- nla "De gebruikte SELECT commando's hebben een verschillend aantal kolommen"
- eng "The used SELECT statements have a different number of columns"
- est "Tulpade arv kasutatud SELECT lausetes ei kattu"
- ger "Die verwendeten SELECT-Befehle liefern unterschiedliche Anzahlen von Feldern zurück"
- ita "La SELECT utilizzata ha un numero di colonne differente"
- por "Os comandos SELECT usados têm diferente número de colunas"
- rus "éÓÐÏÌØÚÏ×ÁÎÎÙÅ ÏÐÅÒÁÔÏÒÙ ×ÙÂÏÒËÉ (SELECT) ÄÁÀÔ ÒÁÚÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÔÏÌÂÃÏ×"
- serbian "Upotrebljene 'SELECT' komande adresiraju razlièit broj kolona"
- spa "El comando SELECT usado tiene diferente número de columnas"
- swe "SELECT-kommandona har olika antal kolumner"
-ER_CANT_UPDATE_WITH_READLOCK
- nla "Kan de query niet uitvoeren vanwege een conflicterende read lock"
- eng "Can't execute the query because you have a conflicting read lock"
- est "Ei suuda täita päringut konfliktse luku tõttu"
- ger "Augrund eines READ-LOCK-Konflikts kann die Abfrage nicht ausgeführt werden"
- ita "Impossibile eseguire la query perche' c'e' un conflitto con in lock di lettura"
- por "Não posso executar a consulta porque você tem um conflito de travamento de leitura"
- rus "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌÎÉÔØ ÚÁÐÒÏÓ, ÐÏÓËÏÌØËÕ Õ ×ÁÓ ÕÓÔÁÎÏ×ÌÅÎÙ ËÏÎÆÌÉËÔÕÀÝÉÅ ÂÌÏËÉÒÏ×ËÉ ÞÔÅÎÉÑ"
- serbian "Ne mogu da izvršim upit zbog toga što imate zakljuèavanja èitanja podataka u konfliktu"
- spa "No puedo ejecutar el query porque usted tiene conflicto de traba de lectura"
- swe "Kan inte utföra kommandot emedan du har ett READ-lås"
-ER_MIXING_NOT_ALLOWED
- nla "Het combineren van transactionele en niet-transactionele tabellen is uitgeschakeld."
- eng "Mixing of transactional and non-transactional tables is disabled"
- est "Transaktsioone toetavate ning mittetoetavate tabelite kooskasutamine ei ole lubatud"
- ger "Die gleichzeitige Verwendung von Tabellen mit und ohne Transaktionsunterstützung ist deaktiviert"
- ita "E' disabilitata la possibilita' di mischiare tabelle transazionali e non-transazionali"
- por "Mistura de tabelas transacional e não-transacional está desabilitada"
- rus "éÓÐÏÌØÚÏ×ÁÎÉÅ ÔÒÁÎÚÁËÃÉÏÎÎÙÈ ÔÁÂÌÉà ÎÁÒÑÄÕ Ó ÎÅÔÒÁÎÚÁËÃÉÏÎÎÙÍÉ ÚÁÐÒÅÝÅÎÏ"
- serbian "Mešanje tabela koje podržavaju transakcije i onih koje ne podržavaju transakcije je iskljuèeno"
- spa "Mezla de transancional y no-transancional tablas está deshabilitada"
- swe "Blandning av transaktionella och icke-transaktionella tabeller är inaktiverat"
-ER_DUP_ARGUMENT
- nla "Optie '%s' tweemaal gebruikt in opdracht"
- eng "Option '%s' used twice in statement"
- est "Määrangut '%s' on lauses kasutatud topelt"
- ger "Option '%s' wird im Befehl zweimal verwendet"
- ita "L'opzione '%s' e' stata usata due volte nel comando"
- por "Opção '%s' usada duas vezes no comando"
- rus "ïÐÃÉÑ '%s' Ä×ÁÖÄÙ ÉÓÐÏÌØÚÏ×ÁÎÁ × ×ÙÒÁÖÅÎÉÉ"
- spa "Opción '%s' usada dos veces en el comando"
- swe "Option '%s' användes två gånger"
-ER_USER_LIMIT_REACHED 42000
- nla "Gebruiker '%-.64s' heeft het maximale gebruik van de '%s' faciliteit overschreden (huidige waarde: %ld)"
- eng "User '%-.64s' has exceeded the '%s' resource (current value: %ld)"
- ger "Benutzer '%-.64s' hat die Ressourcenbeschränkung '%s' überschritten (aktueller Wert: %ld)"
- ita "L'utente '%-.64s' ha ecceduto la risorsa '%s' (valore corrente: %ld)"
- por "Usuário '%-.64s' tem excedido o '%s' recurso (atual valor: %ld)"
- rus "ðÏÌØÚÏ×ÁÔÅÌØ '%-.64s' ÐÒÅ×ÙÓÉÌ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÒÅÓÕÒÓÁ '%s' (ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ: %ld)"
- spa "Usuario '%-.64s' ha excedido el recurso '%s' (actual valor: %ld)"
- swe "Användare '%-.64s' har överskridit '%s' (nuvarande värde: %ld)"
-ER_SPECIFIC_ACCESS_DENIED_ERROR 42000
- nla "Toegang geweigerd. U moet het %-.128s privilege hebben voor deze operatie"
- eng "Access denied; you need the %-.128s privilege for this operation"
- ger "Kein Zugriff. Hierfür wird die Berechtigung %-.128s benötigt"
- ita "Accesso non consentito. Serve il privilegio %-.128s per questa operazione"
- por "Acesso negado. Você precisa o privilégio %-.128s para essa operação"
- rus "÷ ÄÏÓÔÕÐÅ ÏÔËÁÚÁÎÏ. ÷ÁÍ ÎÕÖÎÙ ÐÒÉ×ÉÌÅÇÉÉ %-.128s ÄÌÑ ÜÔÏÊ ÏÐÅÒÁÃÉÉ"
- spa "Acceso negado. Usted necesita el privilegio %-.128s para esta operación"
- swe "Du har inte privlegiet '%-.128s' som behövs för denna operation"
- ukr "Access denied. You need the %-.128s privilege for this operation"
-ER_LOCAL_VARIABLE
- nla "Variabele '%-.64s' is SESSION en kan niet worden gebruikt met SET GLOBAL"
- eng "Variable '%-.64s' is a SESSION variable and can't be used with SET GLOBAL"
- ger "Variable '%-.64s' ist eine lokale Variable und kann nicht mit SET GLOBAL verändert werden"
- ita "La variabile '%-.64s' e' una variabile locale ( SESSION ) e non puo' essere cambiata usando SET GLOBAL"
- por "Variável '%-.64s' é uma SESSION variável e não pode ser usada com SET GLOBAL"
- rus "ðÅÒÅÍÅÎÎÁÑ '%-.64s' Ñ×ÌÑÅÔÓÑ ÐÏÔÏËÏ×ÏÊ (SESSION) ÐÅÒÅÍÅÎÎÏÊ É ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÚÍÅÎÅÎÁ Ó ÐÏÍÏÝØÀ SET GLOBAL"
- spa "Variable '%-.64s' es una SESSION variable y no puede ser usada con SET GLOBAL"
- swe "Variabel '%-.64s' är en SESSION variabel och kan inte ändrad med SET GLOBAL"
-ER_GLOBAL_VARIABLE
- nla "Variabele '%-.64s' is GLOBAL en dient te worden gewijzigd met SET GLOBAL"
- eng "Variable '%-.64s' is a GLOBAL variable and should be set with SET GLOBAL"
- ger "Variable '%-.64s' ist eine globale Variable und muss mit SET GLOBAL verändert werden"
- ita "La variabile '%-.64s' e' una variabile globale ( GLOBAL ) e deve essere cambiata usando SET GLOBAL"
- por "Variável '%-.64s' é uma GLOBAL variável e deve ser configurada com SET GLOBAL"
- rus "ðÅÒÅÍÅÎÎÁÑ '%-.64s' Ñ×ÌÑÅÔÓÑ ÇÌÏÂÁÌØÎÏÊ (GLOBAL) ÐÅÒÅÍÅÎÎÏÊ, É ÅÅ ÓÌÅÄÕÅÔ ÉÚÍÅÎÑÔØ Ó ÐÏÍÏÝØÀ SET GLOBAL"
- spa "Variable '%-.64s' es una GLOBAL variable y no puede ser configurada con SET GLOBAL"
- swe "Variabel '%-.64s' är en GLOBAL variabel och bör sättas med SET GLOBAL"
-ER_NO_DEFAULT 42000
- nla "Variabele '%-.64s' heeft geen standaard waarde"
- eng "Variable '%-.64s' doesn't have a default value"
- ger "Variable '%-.64s' hat keinen Vorgabewert"
- ita "La variabile '%-.64s' non ha un valore di default"
- por "Variável '%-.64s' não tem um valor padrão"
- rus "ðÅÒÅÍÅÎÎÁÑ '%-.64s' ÎÅ ÉÍÅÅÔ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ"
- spa "Variable '%-.64s' no tiene un valor patrón"
- swe "Variabel '%-.64s' har inte ett DEFAULT-värde"
-ER_WRONG_VALUE_FOR_VAR 42000
- nla "Variabele '%-.64s' kan niet worden gewijzigd naar de waarde '%-.64s'"
- eng "Variable '%-.64s' can't be set to the value of '%-.64s'"
- ger "Variable '%-.64s' kann nicht auf '%-.64s' gesetzt werden"
- ita "Alla variabile '%-.64s' non puo' essere assegato il valore '%-.64s'"
- por "Variável '%-.64s' não pode ser configurada para o valor de '%-.64s'"
- rus "ðÅÒÅÍÅÎÎÁÑ '%-.64s' ÎÅ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ × ÚÎÁÞÅÎÉÅ '%-.64s'"
- spa "Variable '%-.64s' no puede ser configurada para el valor de '%-.64s'"
- swe "Variabel '%-.64s' kan inte sättas till '%-.64s'"
-ER_WRONG_TYPE_FOR_VAR 42000
- nla "Foutief argumenttype voor variabele '%-.64s'"
- eng "Incorrect argument type to variable '%-.64s'"
- ger "Falscher Argumenttyp für Variable '%-.64s'"
- ita "Tipo di valore errato per la variabile '%-.64s'"
- por "Tipo errado de argumento para variável '%-.64s'"
- rus "îÅ×ÅÒÎÙÊ ÔÉÐ ÁÒÇÕÍÅÎÔÁ ÄÌÑ ÐÅÒÅÍÅÎÎÏÊ '%-.64s'"
- spa "Tipo de argumento equivocado para variable '%-.64s'"
- swe "Fel typ av argument till variabel '%-.64s'"
-ER_VAR_CANT_BE_READ
- nla "Variabele '%-.64s' kan alleen worden gewijzigd, niet gelezen"
- eng "Variable '%-.64s' can only be set, not read"
- ger "Variable '%-.64s' kann nur verändert, nicht gelesen werden"
- ita "Alla variabile '%-.64s' e' di sola scrittura quindi puo' essere solo assegnato un valore, non letto"
- por "Variável '%-.64s' somente pode ser configurada, não lida"
- rus "ðÅÒÅÍÅÎÎÁÑ '%-.64s' ÍÏÖÅÔ ÂÙÔØ ÔÏÌØËÏ ÕÓÔÁÎÏ×ÌÅÎÁ, ÎÏ ÎÅ ÓÞÉÔÁÎÁ"
- spa "Variable '%-.64s' solamente puede ser configurada, no leída"
- swe "Variabeln '%-.64s' kan endast sättas, inte läsas"
-ER_CANT_USE_OPTION_HERE 42000
- nla "Foutieve toepassing/plaatsing van '%s'"
- eng "Incorrect usage/placement of '%s'"
- ger "Falsche Verwendung oder Platzierung von '%s'"
- ita "Uso/posizione di '%s' sbagliato"
- por "Errado uso/colocação de '%s'"
- rus "îÅ×ÅÒÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÉÌÉ × ÎÅ×ÅÒÎÏÍ ÍÅÓÔÅ ÕËÁÚÁÎ '%s'"
- spa "Equivocado uso/colocación de '%s'"
- swe "Fel använding/placering av '%s'"
-ER_NOT_SUPPORTED_YET 42000
- nla "Deze versie van MySQL ondersteunt nog geen '%s'"
- eng "This version of MySQL doesn't yet support '%s'"
- ger "Diese MySQL-Version unterstützt '%s' nicht"
- ita "Questa versione di MySQL non supporta ancora '%s'"
- por "Esta versão de MySQL não suporta ainda '%s'"
- rus "üÔÁ ×ÅÒÓÉÑ MySQL ÐÏËÁ ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ '%s'"
- spa "Esta versión de MySQL no soporta todavia '%s'"
- swe "Denna version av MySQL kan ännu inte utföra '%s'"
-ER_MASTER_FATAL_ERROR_READING_BINLOG
- nla "Kreeg fatale fout %d: '%-.128s' van master tijdens lezen van data uit binaire log"
- eng "Got fatal error %d: '%-.128s' from master when reading data from binary log"
- ger "Schwerer Fehler %d: '%-.128s vom Master beim Lesen des binären Logs"
- ita "Errore fatale %d: '%-.128s' dal master leggendo i dati dal log binario"
- por "Obteve fatal erro %d: '%-.128s' do master quando lendo dados do binary log"
- rus "ðÏÌÕÞÅÎÁ ÎÅÉÓÐÒÁ×ÉÍÁÑ ÏÛÉÂËÁ %d: '%-.128s' ÏÔ ÇÏÌÏ×ÎÏÇÏ ÓÅÒ×ÅÒÁ × ÐÒÏÃÅÓÓÅ ×ÙÂÏÒËÉ ÄÁÎÎÙÈ ÉÚ Ä×ÏÉÞÎÏÇÏ ÖÕÒÎÁÌÁ"
- spa "Recibió fatal error %d: '%-.128s' del master cuando leyendo datos del binary log"
- swe "Fick fatalt fel %d: '%-.128s' från master vid läsning av binärloggen"
-ER_SLAVE_IGNORED_TABLE
- eng "Slave SQL thread ignored the query because of replicate-*-table rules"
- ger "Slave-SQL-Thread hat die Abfrage aufgrund von replicate-*-table-Regeln ignoriert"
- por "Slave SQL thread ignorado a consulta devido às normas de replicação-*-tabela"
- spa "Slave SQL thread ignorado el query debido a las reglas de replicación-*-tabla"
- swe "Slav SQL tråden ignorerade frågan pga en replicate-*-table regel"
-ER_INCORRECT_GLOBAL_LOCAL_VAR
- eng "Variable '%-.64s' is a %s variable"
- serbian "Incorrect foreign key definition for '%-.64s': %s"
- ger "Variable '%-.64s' ist eine %s-Variable"
- spa "Variable '%-.64s' es una %s variable"
- swe "Variabel '%-.64s' är av typ %s"
-ER_WRONG_FK_DEF 42000
- eng "Incorrect foreign key definition for '%-.64s': %s"
- ger "Falsche Fremdschlüssel-Definition für '%-.64s': %s"
- por "Definição errada da chave estrangeira para '%-.64s': %s"
- spa "Equivocada definición de llave extranjera para '%-.64s': %s"
- swe "Felaktig FOREIGN KEY-definition för '%-.64s': %s"
-ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
- eng "Key reference and table reference don't match"
- ger "Schlüssel- und Tabellenverweis passen nicht zusammen"
- por "Referência da chave e referência da tabela não coincidem"
- spa "Referencia de llave y referencia de tabla no coinciden"
- swe "Nyckelreferensen och tabellreferensen stämmer inte överens"
-ER_OPERAND_COLUMNS 21000
- eng "Operand should contain %d column(s)"
- ger "Operand sollte %d Spalte(n) enthalten"
- rus "ïÐÅÒÁÎÄ ÄÏÌÖÅÎ ÓÏÄÅÒÖÁÔØ %d ËÏÌÏÎÏË"
- spa "Operando debe tener %d columna(s)"
- ukr "ïÐÅÒÁÎÄ ÍÁ¤ ÓËÌÁÄÁÔÉÓÑ Ú %d ÓÔÏ×Âæ×"
-ER_SUBQUERY_NO_1_ROW 21000
- eng "Subquery returns more than 1 row"
- ger "Unterabfrage lieferte mehr als einen Datensatz zurück"
- por "Subconsulta retorna mais que 1 registro"
- rus "ðÏÄÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÂÏÌÅÅ ÏÄÎÏÊ ÚÁÐÉÓÉ"
- spa "Subconsulta retorna mas que 1 línea"
- swe "Subquery returnerade mer än 1 rad"
- ukr "ð¦ÄÚÁÐÉÔ ÐÏ×ÅÒÔÁ¤ ¦ÌØÛ ÎiÖ 1 ÚÁÐÉÓ"
-ER_UNKNOWN_STMT_HANDLER
- dan "Unknown prepared statement handler (%.*s) given to %s"
- eng "Unknown prepared statement handler (%.*s) given to %s"
- ger "Unbekannter Prepared-Statement-Handler (%.*s) für %s angegeben"
- por "Desconhecido manipulador de declaração preparado (%.*s) determinado para %s"
- spa "Desconocido preparado comando handler (%.*s) dado para %s"
- swe "Okänd PREPARED STATEMENT id (%.*s) var given till %s"
- ukr "Unknown prepared statement handler (%.*s) given to %s"
-ER_CORRUPT_HELP_DB
- eng "Help database is corrupt or does not exist"
- ger "Die Hilfe-Datenbank ist beschädigt oder existiert nicht"
- por "Banco de dado de ajuda corrupto ou não existente"
- spa "Base de datos Help está corrupto o no existe"
- swe "Hjälpdatabasen finns inte eller är skadad"
-ER_CYCLIC_REFERENCE
- eng "Cyclic reference on subqueries"
- ger "Zyklischer Verweis in Unterabfragen"
- por "Referência cíclica em subconsultas"
- rus "ãÉËÌÉÞÅÓËÁÑ ÓÓÙÌËÁ ÎÁ ÐÏÄÚÁÐÒÏÓ"
- spa "Cíclica referencia en subconsultas"
- swe "Cyklisk referens i subqueries"
- ukr "ãÉË̦ÞÎÅ ÐÏÓÉÌÁÎÎÑ ÎÁ ЦÄÚÁÐÉÔ"
-ER_AUTO_CONVERT
- eng "Converting column '%s' from %s to %s"
- ger "Feld '%s' wird von %s nach %s umgewandelt"
- por "Convertendo coluna '%s' de %s para %s"
- rus "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÐÏÌÑ '%s' ÉÚ %s × %s"
- spa "Convirtiendo columna '%s' de %s para %s"
- swe "Konvertar kolumn '%s' från %s till %s"
- ukr "ðÅÒÅÔ×ÏÒÅÎÎÑ ÓÔÏ×ÂÃÁ '%s' Ú %s Õ %s"
-ER_ILLEGAL_REFERENCE 42S22
- eng "Reference '%-.64s' not supported (%s)"
- ger "Verweis '%-.64s' wird nicht unterstützt (%s)"
- por "Referência '%-.64s' não suportada (%s)"
- rus "óÓÙÌËÁ '%-.64s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ (%s)"
- spa "Referencia '%-.64s' no soportada (%s)"
- swe "Referens '%-.64s' stöds inte (%s)"
- ukr "ðÏÓÉÌÁÎÎÑ '%-.64s' ÎÅ ÐiÄÔÒÉÍÕÅÔÓÑ (%s)"
-ER_DERIVED_MUST_HAVE_ALIAS 42000
- eng "Every derived table must have its own alias"
- ger "Für jede abgeleitete Tabelle muss ein eigener Alias angegeben werden"
- por "Cada tabela derivada deve ter seu próprio alias"
- spa "Cada tabla derivada debe tener su propio alias"
- swe "Varje 'derived table' måste ha sitt eget alias"
-ER_SELECT_REDUCED 01000
- eng "Select %u was reduced during optimization"
- ger "Select %u wurde während der Optimierung reduziert"
- por "Select %u foi reduzido durante otimização"
- rus "Select %u ÂÙÌ ÕÐÒÁÚÄÎÅÎ × ÐÒÏÃÅÓÓÅ ÏÐÔÉÍÉÚÁÃÉÉ"
- spa "Select %u fué reducido durante optimización"
- swe "Select %u reducerades vid optimiering"
- ukr "Select %u was ÓËÁÓÏ×ÁÎÏ ÐÒÉ ÏÐÔÉÍiÚÁÃii"
-ER_TABLENAME_NOT_ALLOWED_HERE 42000
- eng "Table '%-.64s' from one of the SELECTs cannot be used in %-.32s"
- ger "Tabelle '%-.64s', die in einem der SELECT-Befehle verwendet wurde, kann nicht in %-.32s verwendet werden"
- por "Tabela '%-.64s' de um dos SELECTs não pode ser usada em %-.32s"
- spa "Tabla '%-.64s' de uno de los SELECT no puede ser usada en %-.32s"
- swe "Tabell '%-.64s' från en SELECT kan inte användas i %-.32s"
-ER_NOT_SUPPORTED_AUTH_MODE 08004
- eng "Client does not support authentication protocol requested by server; consider upgrading MySQL client"
- ger "Client unterstützt das vom Server erwartete Authentifizierungsprotokoll nicht. Bitte aktualisieren Sie Ihren MySQL-Client"
- por "Cliente não suporta o protocolo de autenticação exigido pelo servidor; considere a atualização do cliente MySQL"
- spa "Cliente no soporta protocolo de autenticación solicitado por el servidor; considere actualizar el cliente MySQL"
- swe "Klienten stöder inte autentiseringsprotokollet som begärts av servern; överväg uppgradering av klientprogrammet."
-ER_SPATIAL_CANT_HAVE_NULL 42000
- eng "All parts of a SPATIAL index must be NOT NULL"
- ger "Alle Teile eines SPATIAL-Index müssen als NOT NULL deklariert sein"
- por "Todas as partes de uma SPATIAL index devem ser NOT NULL"
- spa "Todas las partes de una SPATIAL index deben ser NOT NULL"
- swe "Alla delar av en SPATIAL index måste vara NOT NULL"
-ER_COLLATION_CHARSET_MISMATCH 42000
- eng "COLLATION '%s' is not valid for CHARACTER SET '%s'"
- ger "COLLATION '%s' ist für CHARACTER SET '%s' ungültig"
- por "COLLATION '%s' não é válida para CHARACTER SET '%s'"
- spa "COLLATION '%s' no es válido para CHARACTER SET '%s'"
- swe "COLLATION '%s' är inte tillåtet för CHARACTER SET '%s'"
-ER_SLAVE_WAS_RUNNING
- eng "Slave is already running"
- ger "Slave läuft bereits"
- por "O slave já está rodando"
- spa "Slave ya está funcionando"
- swe "Slaven har redan startat"
-ER_SLAVE_WAS_NOT_RUNNING
- eng "Slave already has been stopped"
- ger "Slave wurde bereits angehalten"
- por "O slave já está parado"
- spa "Slave ya fué parado"
- swe "Slaven har redan stoppat"
-ER_TOO_BIG_FOR_UNCOMPRESS
- eng "Uncompressed data size too large; the maximum size is %d (probably, length of uncompressed data was corrupted)"
- ger "Unkomprimierte Daten sind zu groß. Die maximale Größe beträgt %d (wahrscheinlich wurde die Länge der unkomprimierten Daten beschädigt)"
- por "Tamanho muito grande dos dados des comprimidos. O máximo tamanho é %d. (provavelmente, o comprimento dos dados descomprimidos está corrupto)"
- spa "Tamaño demasiado grande para datos descomprimidos. El máximo tamaño es %d. (probablemente, extensión de datos descomprimidos fué corrompida)"
-ER_ZLIB_Z_MEM_ERROR
- eng "ZLIB: Not enough memory"
- ger "ZLIB: Nicht genug Speicher"
- por "ZLIB: Não suficiente memória disponível"
- spa "Z_MEM_ERROR: No suficiente memoria para zlib"
-ER_ZLIB_Z_BUF_ERROR
- eng "ZLIB: Not enough room in the output buffer (probably, length of uncompressed data was corrupted)"
- ger "ZLIB: Im Ausgabepuffer ist nicht genug Platz vorhanden (wahrscheinlich wurde die Länge der unkomprimierten Daten beschädigt)"
- por "ZLIB: Não suficiente espaço no buffer emissor (provavelmente, o comprimento dos dados descomprimidos está corrupto)"
- spa "Z_BUF_ERROR: No suficiente espacio en el búfer de salida para zlib (probablemente, extensión de datos descomprimidos fué corrompida)"
-ER_ZLIB_Z_DATA_ERROR
- eng "ZLIB: Input data corrupted"
- ger "ZLIB: Eingabedaten beschädigt"
- por "ZLIB: Dados de entrada está corrupto"
- spa "ZLIB: Dato de entrada fué corrompido para zlib"
-ER_CUT_VALUE_GROUP_CONCAT
- eng "%d line(s) were cut by GROUP_CONCAT()"
- ger "%d Zeile(n) durch GROUP_CONCAT() abgeschnitten"
- por "%d linha(s) foram cortada(s) por GROUP_CONCAT()"
- spa "%d línea(s) fue(fueron) cortadas por group_concat()"
- swe "%d rad(er) kapades av group_concat()"
- ukr "%d line(s) was(were) cut by group_concat()"
-ER_WARN_TOO_FEW_RECORDS 01000
- eng "Row %ld doesn't contain data for all columns"
- ger "Zeile %ld enthält nicht für alle Felder Daten"
- por "Conta de registro é menor que a conta de coluna na linha %ld"
- spa "Línea %ld no contiene datos para todas las columnas"
-ER_WARN_TOO_MANY_RECORDS 01000
- eng "Row %ld was truncated; it contained more data than there were input columns"
- ger "Zeile %ld gekürzt, die Zeile enthielt mehr Daten, als es Eingabefelder gibt"
- por "Conta de registro é maior que a conta de coluna na linha %ld"
- spa "Línea %ld fué truncada; La misma contine mas datos que las que existen en las columnas de entrada"
-ER_WARN_NULL_TO_NOTNULL 22004
- eng "Column set to default value; NULL supplied to NOT NULL column '%s' at row %ld"
- ger "Feld auf Vorgabewert gesetzt, da NULL für NOT-NULL-Feld '%s' in Zeile %ld angegeben"
- por "Dado truncado, NULL fornecido para NOT NULL coluna '%s' na linha %ld"
- spa "Datos truncado, NULL suministrado para NOT NULL columna '%s' en la línea %ld"
-ER_WARN_DATA_OUT_OF_RANGE 22003
- eng "Out of range value adjusted for column '%s' at row %ld"
- ger "Daten abgeschnitten, außerhalb des Wertebereichs für Feld '%s' in Zeile %ld"
- por "Dado truncado, fora de alcance para coluna '%s' na linha %ld"
- spa "Datos truncados, fuera de gama para columna '%s' en la línea %ld"
-WARN_DATA_TRUNCATED 01000
- eng "Data truncated for column '%s' at row %ld"
- ger "Daten abgeschnitten für Feld '%s' in Zeile %ld"
- por "Dado truncado para coluna '%s' na linha %ld"
- spa "Datos truncados para columna '%s' en la línea %ld"
-ER_WARN_USING_OTHER_HANDLER
- eng "Using storage engine %s for table '%s'"
- ger "Für Tabelle '%s' wird Speicher-Engine %s benutzt"
- por "Usando engine de armazenamento %s para tabela '%s'"
- spa "Usando motor de almacenamiento %s para tabla '%s'"
- swe "Använder handler %s för tabell '%s'"
-ER_CANT_AGGREGATE_2COLLATIONS
- eng "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'"
- ger "Unerlaubte Mischung von Sortierreihenfolgen (%s, %s) und (%s, %s) für Operation '%s'"
- por "Combinação ilegal de collations (%s,%s) e (%s,%s) para operação '%s'"
- spa "Ilegal mezcla de collations (%s,%s) y (%s,%s) para operación '%s'"
-ER_DROP_USER
- eng "Cannot drop one or more of the requested users"
- ger "Kann einen oder mehrere der angegebenen Benutzer nicht löschen"
-ER_REVOKE_GRANTS
- eng "Can't revoke all privileges for one or more of the requested users"
- ger "Kann nicht alle Berechtigungen widerrufen, die für einen oder mehrere Benutzer gewährt wurden"
- por "Não pode revocar todos os privilégios, grant para um ou mais dos usuários pedidos"
- spa "No puede revocar todos los privilegios, derecho para uno o mas de los usuarios solicitados"
-ER_CANT_AGGREGATE_3COLLATIONS
- eng "Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'"
- ger "Unerlaubte Mischung von Sortierreihenfolgen (%s, %s), (%s, %s), (%s, %s) für Operation '%s'"
- por "Ilegal combinação de collations (%s,%s), (%s,%s), (%s,%s) para operação '%s'"
- spa "Ilegal mezcla de collations (%s,%s), (%s,%s), (%s,%s) para operación '%s'"
-ER_CANT_AGGREGATE_NCOLLATIONS
- eng "Illegal mix of collations for operation '%s'"
- ger "Unerlaubte Mischung von Sortierreihenfolgen für Operation '%s'"
- por "Ilegal combinação de collations para operação '%s'"
- spa "Ilegal mezcla de collations para operación '%s'"
-ER_VARIABLE_IS_NOT_STRUCT
- eng "Variable '%-.64s' is not a variable component (can't be used as XXXX.variable_name)"
- ger "Variable '%-.64s' ist keine Variablen-Komponente (kann nicht als XXXX.variablen_name verwendet werden)"
- por "Variável '%-.64s' não é uma variável componente (Não pode ser usada como XXXX.variável_nome)"
- spa "Variable '%-.64s' no es una variable componente (No puede ser usada como XXXX.variable_name)"
-ER_UNKNOWN_COLLATION
- eng "Unknown collation: '%-.64s'"
- ger "Unbekannte Sortierreihenfolge: '%-.64s'"
- por "Collation desconhecida: '%-.64s'"
- spa "Collation desconocida: '%-.64s'"
-ER_SLAVE_IGNORED_SSL_PARAMS
- eng "SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support; they can be used later if MySQL slave with SSL is started"
- ger "SSL-Parameter in CHANGE MASTER werden ignoriert, weil dieser MySQL-Slave ohne SSL-Unterstützung kompiliert wurde. Sie können aber später verwendet werden, wenn ein MySQL-Slave mit SSL gestartet wird"
- por "SSL parâmetros em CHANGE MASTER são ignorados porque este escravo MySQL foi compilado sem o SSL suporte. Os mesmos podem ser usados mais tarde quando o escravo MySQL com SSL seja iniciado."
- spa "Parametros SSL en CHANGE MASTER son ignorados porque este slave MySQL fue compilado sin soporte SSL; pueden ser usados despues cuando el slave MySQL con SSL sea inicializado"
-ER_SERVER_IS_IN_SECURE_AUTH_MODE
- eng "Server is running in --secure-auth mode, but '%s'@'%s' has a password in the old format; please change the password to the new format"
- ger "Server läuft im Modus --secure-auth, aber '%s'@'%s' hat ein Passwort im alten Format. Bitte Passwort ins neue Format ändern"
- por "Servidor está rodando em --secure-auth modo, porêm '%s'@'%s' tem senha no formato antigo; por favor troque a senha para o novo formato"
- rus "óÅÒ×ÅÒ ÚÁÐÕÝÅÎ × ÒÅÖÉÍÅ --secure-auth (ÂÅÚÏÐÁÓÎÏÊ Á×ÔÏÒÉÚÁÃÉÉ), ÎÏ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ '%s'@'%s' ÐÁÒÏÌØ ÓÏÈÒÁÎ£Î × ÓÔÁÒÏÍ ÆÏÒÍÁÔÅ; ÎÅÏÂÈÏÄÉÍÏ ÏÂÎÏ×ÉÔØ ÆÏÒÍÁÔ ÐÁÒÏÌÑ"
- spa "Servidor está rodando en modo --secure-auth, pero '%s'@'%s' tiene clave en el antiguo formato; por favor cambie la clave para el nuevo formato"
-ER_WARN_FIELD_RESOLVED
- eng "Field or reference '%-.64s%s%-.64s%s%-.64s' of SELECT #%d was resolved in SELECT #%d"
- ger "Feld oder Verweis '%-.64s%s%-.64s%s%-.64s' im SELECT-Befehl Nr. %d wurde im SELECT-Befehl Nr. %d aufgelöst"
- por "Campo ou referência '%-.64s%s%-.64s%s%-.64s' de SELECT #%d foi resolvido em SELECT #%d"
- rus "ðÏÌÅ ÉÌÉ ÓÓÙÌËÁ '%-.64s%s%-.64s%s%-.64s' ÉÚ SELECTÁ #%d ÂÙÌÁ ÎÁÊÄÅÎÁ × SELECTÅ #%d"
- spa "Campo o referencia '%-.64s%s%-.64s%s%-.64s' de SELECT #%d fue resolvido en SELECT #%d"
- ukr "óÔÏ×ÂÅÃØ ÁÂÏ ÐÏÓÉÌÁÎÎÑ '%-.64s%s%-.64s%s%-.64s' ¦Ú SELECTÕ #%d ÂÕÌÏ ÚÎÁÊÄÅÎÅ Õ SELECT¦ #%d"
-ER_BAD_SLAVE_UNTIL_COND
- eng "Incorrect parameter or combination of parameters for START SLAVE UNTIL"
- ger "Falscher Parameter oder falsche Kombination von Parametern für START SLAVE UNTIL"
- por "Parâmetro ou combinação de parâmetros errado para START SLAVE UNTIL"
- spa "Parametro equivocado o combinación de parametros para START SLAVE UNTIL"
-ER_MISSING_SKIP_SLAVE
- eng "It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart"
- ger "Es wird empfohlen, mit --skip-slave-start zu starten, wenn mit START SLAVE UNTIL eine Schritt-für-Schritt-Replikation ausgeführt wird. Ansonsten gibt es Probleme, wenn ein Slave-Server unerwartet neu startet"
- por "É recomendado para rodar com --skip-slave-start quando fazendo replicação passo-por-passo com START SLAVE UNTIL, de outra forma você não está seguro em caso de inesperada reinicialição do mysqld escravo"
- spa "Es recomendado rodar con --skip-slave-start cuando haciendo replicación step-by-step con START SLAVE UNTIL, a menos que usted no esté seguro en caso de inesperada reinicialización del mysqld slave"
-ER_UNTIL_COND_IGNORED
- eng "SQL thread is not to be started so UNTIL options are ignored"
- ger "SQL-Thread soll nicht gestartet werden. Daher werden UNTIL-Optionen ignoriert"
- por "Thread SQL não pode ser inicializado tal que opções UNTIL são ignoradas"
- spa "SQL thread no es inicializado tal que opciones UNTIL son ignoradas"
-ER_WRONG_NAME_FOR_INDEX 42000
- eng "Incorrect index name '%-.100s'"
- ger "Falscher Indexname '%-.100s'"
- por "Incorreto nome de índice '%-.100s'"
- spa "Nombre de índice incorrecto '%-.100s'"
- swe "Felaktigt index namn '%-.100s'"
-ER_WRONG_NAME_FOR_CATALOG 42000
- eng "Incorrect catalog name '%-.100s'"
- ger "Falscher Katalogname '%-.100s'"
- por "Incorreto nome de catálogo '%-.100s'"
- spa "Nombre de catalog incorrecto '%-.100s'"
- swe "Felaktigt katalog namn '%-.100s'"
-ER_WARN_QC_RESIZE
- eng "Query cache failed to set size %lu; new query cache size is %lu"
- ger "Änderung der Query-Cache-Größe auf %lu fehlgeschlagen; neue Query-Cache-Größe ist %lu"
- por "Falha em Query cache para configurar tamanho %lu, novo tamanho de query cache é %lu"
- rus "ëÅÛ ÚÁÐÒÏÓÏ× ÎÅ ÍÏÖÅÔ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÍÅÒ %lu, ÎÏ×ÙÊ ÒÁÚÍÅÒ ËÅÛÁ ÚÐÒÏÓÏ× - %lu"
- spa "Query cache fallada para configurar tamaño %lu, nuevo tamaño de query cache es %lu"
- swe "Storleken av "Query cache" kunde inte sättas till %lu, ny storlek är %lu"
- ukr "ëÅÛ ÚÁÐÉÔ¦× ÎÅÓÐÒÏÍÏÖÅÎ ×ÓÔÁÎÏ×ÉÔÉ ÒÏÚÍ¦Ò %lu, ÎÏ×ÉÊ ÒÏÚÍ¦Ò ËÅÛÁ ÚÁÐÉÔ¦× - %lu"
-ER_BAD_FT_COLUMN
- eng "Column '%-.64s' cannot be part of FULLTEXT index"
- ger "Feld '%-.64s' kann nicht Teil eines FULLTEXT-Index sein"
- por "Coluna '%-.64s' não pode ser parte de índice FULLTEXT"
- spa "Columna '%-.64s' no puede ser parte de FULLTEXT index"
- swe "Kolumn '%-.64s' kan inte vara del av ett FULLTEXT index"
-ER_UNKNOWN_KEY_CACHE
- eng "Unknown key cache '%-.100s'"
- ger "Unbekannter Schlüssel-Cache '%-.100s'"
- por "Key cache desconhecida '%-.100s'"
- spa "Desconocida key cache '%-.100s'"
- swe "Okänd nyckel cache '%-.100s'"
-ER_WARN_HOSTNAME_WONT_WORK
- eng "MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work"
- ger "MySQL wurde mit --skip-name-resolve gestartet. Diese Option darf nicht verwendet werden, damit diese Rechtevergabe möglich ist"
- por "MySQL foi inicializado em modo --skip-name-resolve. Você necesita reincializá-lo sem esta opção para este grant funcionar"
- spa "MySQL esta inicializado en modo --skip-name-resolve. Usted necesita reinicializarlo sin esta opción para este derecho funcionar"
-ER_UNKNOWN_STORAGE_ENGINE 42000
- eng "Unknown table engine '%s'"
- ger "Unbekannte Speicher-Engine '%s'"
- por "Motor de tabela desconhecido '%s'"
- spa "Desconocido motor de tabla '%s'"
-ER_WARN_DEPRECATED_SYNTAX
- eng "'%s' is deprecated; use '%s' instead"
- ger "'%s' ist veraltet. Bitte benutzen Sie '%s'"
- por "'%s' é desatualizado. Use '%s' em seu lugar"
- spa "'%s' está desaprobado, use '%s' en su lugar"
-ER_NON_UPDATABLE_TABLE
- eng "The target table %-.100s of the %s is not updatable"
- ger "Die Zieltabelle %-.100s von %s ist nicht aktualisierbar"
- por "A tabela destino %-.100s do %s não é atualizável"
- rus "ôÁÂÌÉÃÁ %-.100s × %s ÎÅ ÍÏÖÅÔ ÉÚÍÅÎÑÔÓÑ"
- spa "La tabla destino %-.100s del %s no es actualizable"
- swe "Tabell %-.100s använd med '%s' är inte uppdateringsbar"
- ukr "ôÁÂÌÉÃÑ %-.100s Õ %s ÎÅ ÍÏÖÅ ÏÎÏ×ÌÀ×ÁÔÉÓØ"
-ER_FEATURE_DISABLED
- eng "The '%s' feature is disabled; you need MySQL built with '%s' to have it working"
- ger "Das Feature '%s' ist ausgeschaltet, Sie müssen MySQL mit '%s' übersetzen, damit es verfügbar ist"
- por "O recurso '%s' foi desativado; você necessita MySQL construído com '%s' para ter isto funcionando"
- spa "El recurso '%s' fue deshabilitado; usted necesita construir MySQL con '%s' para tener eso funcionando"
- swe "'%s' är inte aktiverad; För att aktivera detta måste du bygga om MySQL med '%s' definerad"
-ER_OPTION_PREVENTS_STATEMENT
- eng "The MySQL server is running with the %s option so it cannot execute this statement"
- ger "Der MySQL-Server läuft mit der Option %s und kann diese Anweisung deswegen nicht ausführen"
- por "O servidor MySQL está rodando com a opção %s razão pela qual não pode executar esse commando"
- spa "El servidor MySQL está rodando con la opción %s tal que no puede ejecutar este comando"
- swe "MySQL är startad med --skip-grant-tables. Pga av detta kan du inte använda detta kommando"
-ER_DUPLICATED_VALUE_IN_TYPE
- eng "Column '%-.100s' has duplicated value '%-.64s' in %s"
- ger "Feld '%-.100s' hat doppelten Wert '%-.64s' in %s"
- por "Coluna '%-.100s' tem valor duplicado '%-.64s' em %s"
- spa "Columna '%-.100s' tiene valor doblado '%-.64s' en %s"
-ER_TRUNCATED_WRONG_VALUE 22007
- eng "Truncated incorrect %-.32s value: '%-.128s'"
- ger "Falscher %-.32s-Wert gekürzt: '%-.128s'"
- por "Truncado errado %-.32s valor: '%-.128s'"
- spa "Equivocado truncado %-.32s valor: '%-.128s'"
-ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
- eng "Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause"
- ger "Fehlerhafte Tabellendefinition. Es kann nur eine einzige TIMESTAMP-Spalte mit CURRENT_TIMESTAMP als DEFAULT oder in einer ON-UPDATE-Klausel geben"
- por "Incorreta definição de tabela; Pode ter somente uma coluna TIMESTAMP com CURRENT_TIMESTAMP em DEFAULT ou ON UPDATE cláusula"
- spa "Incorrecta definición de tabla; Solamente debe haber una columna TIMESTAMP con CURRENT_TIMESTAMP en DEFAULT o ON UPDATE cláusula"
-ER_INVALID_ON_UPDATE
- eng "Invalid ON UPDATE clause for '%-.64s' column"
- ger "Ungültige ON-UPDATE-Klausel für Spalte '%-.64s'"
- por "Inválida cláusula ON UPDATE para campo '%-.64s'"
- spa "Inválido ON UPDATE cláusula para campo '%-.64s'"
-ER_UNSUPPORTED_PS
- eng "This command is not supported in the prepared statement protocol yet"
- ger "Dieser Befehl wird im Protokoll für vorbereitete Anweisungen noch nicht unterstützt"
-ER_GET_ERRMSG
- dan "Modtog fejl %d '%-.100s' fra %s"
- eng "Got error %d '%-.100s' from %s"
- ger "Fehler %d '%-.100s' von %s"
- nor "Mottok feil %d '%-.100s' fa %s"
- norwegian-ny "Mottok feil %d '%-.100s' fra %s"
-ER_GET_TEMPORARY_ERRMSG
- dan "Modtog temporary fejl %d '%-.100s' fra %s"
- eng "Got temporary error %d '%-.100s' from %s"
- ger "Temporärer Fehler %d '%-.100s' von %s"
- nor "Mottok temporary feil %d '%-.100s' fra %s"
- norwegian-ny "Mottok temporary feil %d '%-.100s' fra %s"
-ER_UNKNOWN_TIME_ZONE
- eng "Unknown or incorrect time zone: '%-.64s'"
- ger "Unbekannte oder falsche Zeitzone: '%-.64s'"
-ER_WARN_INVALID_TIMESTAMP
- eng "Invalid TIMESTAMP value in column '%s' at row %ld"
- ger "Ungültiger TIMESTAMP-Wert in Feld '%s', Zeile %ld"
-ER_INVALID_CHARACTER_STRING
- eng "Invalid %s character string: '%.64s'"
- ger "Ungültiger %s-Zeichen-String: '%.64s'"
-ER_WARN_ALLOWED_PACKET_OVERFLOWED
- eng "Result of %s() was larger than max_allowed_packet (%ld) - truncated"
- ger "Ergebnis von %s() war größer als max_allowed_packet (%ld) Bytes und wurde deshalb gekürzt"
-ER_CONFLICTING_DECLARATIONS
- eng "Conflicting declarations: '%s%s' and '%s%s'"
- ger "Widersprüchliche Deklarationen: '%s%s' und '%s%s'"
-ER_SP_NO_RECURSIVE_CREATE 2F003
- eng "Can't create a %s from within another stored routine"
- ger "Kann kein %s innerhalb einer anderen gespeicherten Routine erzeugen"
-ER_SP_ALREADY_EXISTS 42000
- eng "%s %s already exists"
- ger "%s %s existiert bereits"
-ER_SP_DOES_NOT_EXIST 42000
- eng "%s %s does not exist"
- ger "%s %s existiert nicht"
-ER_SP_DROP_FAILED
- eng "Failed to DROP %s %s"
- ger "DROP %s %s ist fehlgeschlagen"
-ER_SP_STORE_FAILED
- eng "Failed to CREATE %s %s"
- ger "CREATE %s %s ist fehlgeschlagen"
-ER_SP_LILABEL_MISMATCH 42000
- eng "%s with no matching label: %s"
- ger "%s ohne passende Marke: %s"
-ER_SP_LABEL_REDEFINE 42000
- eng "Redefining label %s"
- ger "Neudefinition der Marke %s"
-ER_SP_LABEL_MISMATCH 42000
- eng "End-label %s without match"
- ger "Ende-Marke %s ohne zugehörigen Anfang"
-ER_SP_UNINIT_VAR 01000
- eng "Referring to uninitialized variable %s"
- ger "Zugriff auf nichtinitialisierte Variable %s"
-ER_SP_BADSELECT 0A000
- eng "PROCEDURE %s can't return a result set in the given context"
- ger "PROCEDURE %s kann im gegebenen Kontext keine Ergebnismenge zurückgeben"
-ER_SP_BADRETURN 42000
- eng "RETURN is only allowed in a FUNCTION"
- ger "RETURN ist nur innerhalb einer FUNCTION erlaubt"
-ER_SP_BADSTATEMENT 0A000
- eng "%s is not allowed in stored procedures"
- ger "%s ist in gespeicherten Prozeduren nicht erlaubt"
-ER_UPDATE_LOG_DEPRECATED_IGNORED 42000
- eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored"
- ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wird ignoriert"
-ER_UPDATE_LOG_DEPRECATED_TRANSLATED 42000
- eng "The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been translated to SET SQL_LOG_BIN"
- ger "Das Update-Log ist veraltet und wurde durch das Binär-Log ersetzt. SET SQL_LOG_UPDATE wurde in SET SQL_LOG_BIN übersetzt"
-ER_QUERY_INTERRUPTED 70100
- eng "Query execution was interrupted"
- ger "Ausführung der Abfrage wurde unterbrochen"
-ER_SP_WRONG_NO_OF_ARGS 42000
- eng "Incorrect number of arguments for %s %s; expected %u, got %u"
- ger "Falsche Anzahl von Argumenten für %s %s; erwarte %u, erhalte %u"
-ER_SP_COND_MISMATCH 42000
- eng "Undefined CONDITION: %s"
- ger "Undefinierte CONDITION: %s"
-ER_SP_NORETURN 42000
- eng "No RETURN found in FUNCTION %s"
- ger "Kein RETURN in FUNCTION %s gefunden"
-ER_SP_NORETURNEND 2F005
- eng "FUNCTION %s ended without RETURN"
- ger "FUNCTION %s endete ohne RETURN"
-ER_SP_BAD_CURSOR_QUERY 42000
- eng "Cursor statement must be a SELECT"
- ger "Cursor-Anweisung muss ein SELECT sein"
-ER_SP_BAD_CURSOR_SELECT 42000
- eng "Cursor SELECT must not have INTO"
- ger "Cursor-SELECT darf kein INTO haben"
-ER_SP_CURSOR_MISMATCH 42000
- eng "Undefined CURSOR: %s"
- ger "Undefinierter CURSOR: %s"
-ER_SP_CURSOR_ALREADY_OPEN 24000
- eng "Cursor is already open"
- ger "Cursor ist schon geöffnet"
-ER_SP_CURSOR_NOT_OPEN 24000
- eng "Cursor is not open"
- ger "Cursor ist nicht geöffnet"
-ER_SP_UNDECLARED_VAR 42000
- eng "Undeclared variable: %s"
- ger "Nicht deklarierte Variable: %s"
-ER_SP_WRONG_NO_OF_FETCH_ARGS
- eng "Incorrect number of FETCH variables"
- ger "Falsche Anzahl von FETCH-Variablen"
-ER_SP_FETCH_NO_DATA 02000
- eng "No data - zero rows fetched, selected, or processed"
- ger "Keine Daten - null Zeilen geholt (fetch), ausgewählt oder verarbeitet"
-ER_SP_DUP_PARAM 42000
- eng "Duplicate parameter: %s"
- ger "Doppelter Parameter: %s"
-ER_SP_DUP_VAR 42000
- eng "Duplicate variable: %s"
- ger "Doppelte Variable: %s"
-ER_SP_DUP_COND 42000
- eng "Duplicate condition: %s"
- ger "Doppelte Bedingung: %s"
-ER_SP_DUP_CURS 42000
- eng "Duplicate cursor: %s"
- ger "Doppelter Cursor: %s"
-ER_SP_CANT_ALTER
- eng "Failed to ALTER %s %s"
- ger "ALTER %s %s fehlgeschlagen"
-ER_SP_SUBSELECT_NYI 0A000
- eng "Subselect value not supported"
- ger "Subselect-Wert wird nicht unterstützt"
-ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG 0A000
- eng "%s is not allowed in stored function or trigger"
- ger "%s ist in gespeicherten Funktionen und in Triggern nicht erlaubt"
-ER_SP_VARCOND_AFTER_CURSHNDLR 42000
- eng "Variable or condition declaration after cursor or handler declaration"
- ger "Deklaration einer Variablen oder einer Bedingung nach der Deklaration eines Cursors oder eines Handlers"
-ER_SP_CURSOR_AFTER_HANDLER 42000
- eng "Cursor declaration after handler declaration"
- ger "Deklaration eines Cursors nach der Deklaration eines Handlers"
-ER_SP_CASE_NOT_FOUND 20000
- eng "Case not found for CASE statement"
- ger "Fall für CASE-Anweisung nicht gefunden"
-ER_FPARSER_TOO_BIG_FILE
- eng "Configuration file '%-.64s' is too big"
- ger "Konfigurationsdatei '%-.64s' ist zu groß"
- rus "óÌÉÛËÏÍ ÂÏÌØÛÏÊ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ '%-.64s'"
- ukr "úÁÎÁÄÔÏ ×ÅÌÉËÉÊ ËÏÎƦÇÕÒÁæÊÎÉÊ ÆÁÊÌ '%-.64s'"
-ER_FPARSER_BAD_HEADER
- eng "Malformed file type header in file '%-.64s'"
- ger "Nicht wohlgeformter Dateityp-Header in Datei '%-.64s'"
- rus "îÅ×ÅÒÎÙÊ ÚÁÇÏÌÏ×ÏË ÔÉÐÁ ÆÁÊÌÁ '%-.64s'"
- ukr "îÅצÒÎÉÊ ÚÁÇÏÌÏ×ÏË ÔÉÐÕ Õ ÆÁÊ̦ '%-.64s'"
-ER_FPARSER_EOF_IN_COMMENT
- eng "Unexpected end of file while parsing comment '%-.64s'"
- ger "Unerwartetes Dateiende beim Parsen des Kommentars '%-.64s'"
- rus "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ × ËÏÍÅÎÔÁÒÉÉ '%-.64s'"
- ukr "îÅÓÐÏĦ×ÁÎÎÉÊ Ë¦ÎÅÃØ ÆÁÊÌÕ Õ ËÏÍÅÎÔÁÒ¦ '%-.64s'"
-ER_FPARSER_ERROR_IN_PARAMETER
- eng "Error while parsing parameter '%-.64s' (line: '%-.64s')"
- ger "Fehler beim Parsen des Parameters '%-.64s' (Zeile: '%-.64s')"
- rus "ïÛÉÂËÁ ÐÒÉ ÒÁÓÐÏÚÎÁ×ÁÎÉÉ ÐÁÒÁÍÅÔÒÁ '%-.64s' (ÓÔÒÏËÁ: '%-.64s')"
- ukr "ðÏÍÉÌËÁ × ÒÏÓЦÚÎÁ×ÁÎΦ ÐÁÒÁÍÅÔÒÕ '%-.64s' (ÒÑÄÏË: '%-.64s')"
-ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER
- eng "Unexpected end of file while skipping unknown parameter '%-.64s'"
- ger "Unerwartetes Dateiende beim Überspringen des unbekannten Parameters '%-.64s'"
- rus "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÒÉ ÐÒÏÐÕÓËÅ ÎÅÉÚ×ÅÓÔÎÏÇÏ ÐÁÒÁÍÅÔÒÁ '%-.64s'"
- ukr "îÅÓÐÏĦ×ÁÎÎÉÊ Ë¦ÎÅÃØ ÆÁÊÌÕ Õ ÓÐÒϦ ÐÒÏÍÉÎÕÔÉ ÎÅצÄÏÍÉÊ ÐÁÒÁÍÅÔÒ '%-.64s'"
-ER_VIEW_NO_EXPLAIN
- eng "EXPLAIN/SHOW can not be issued; lacking privileges for underlying table"
- ger "EXPLAIN/SHOW kann nicht verlangt werden. Rechte für zugrunde liegende Tabelle fehlen"
- rus "EXPLAIN/SHOW ÎÅ ÍÏÖÅÔ ÂÙÔØ ×ÙÐÏÌÎÅÎÎÏ; ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÒÁ× ÎÁ ÔÁËÂÌÉÃÙ ÚÁÐÒÏÓÁ"
- ukr "EXPLAIN/SHOW ÎÅ ÍÏÖÅ ÂÕÔÉ ×¦ËÏÎÁÎÏ; ÎÅÍÁ¤ ÐÒÁ× ÎÁ ÔÉÂÌÉæ ÚÁÐÉÔÕ"
-ER_FRM_UNKNOWN_TYPE
- eng "File '%-.64s' has unknown type '%-.64s' in its header"
- ger "Datei '%-.64s' hat unbekannten Typ '%-.64s' im Header"
- rus "æÁÊÌ '%-.64s' ÓÏÄÅÒÖÉÔ ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ '%-.64s' × ÚÁÇÏÌÏ×ËÅ"
- ukr "æÁÊÌ '%-.64s' ÍÁ¤ ÎÅצÄÏÍÉÊ ÔÉÐ '%-.64s' Õ ÚÁÇÏÌÏ×ËÕ"
-ER_WRONG_OBJECT
- eng "'%-.64s.%-.64s' is not %s"
- ger "'%-.64s.%-.64s' ist nicht %s"
- rus "'%-.64s.%-.64s' - ÎÅ %s"
- ukr "'%-.64s.%-.64s' ÎÅ ¤ %s"
-ER_NONUPDATEABLE_COLUMN
- eng "Column '%-.64s' is not updatable"
- ger "Feld '%-.64s' ist nicht aktualisierbar"
- rus "óÔÏÌÂÅà '%-.64s' ÎÅ ÏÂÎÏ×ÌÑÅÍÙÊ"
- ukr "óÔÏ×ÂÅÃØ '%-.64s' ÎÅ ÍÏÖÅ ÂÕÔÉ ÚÍÉÎÅÎÉÊ"
-ER_VIEW_SELECT_DERIVED
- eng "View's SELECT contains a subquery in the FROM clause"
- ger "SELECT der View enthält eine Subquery in der FROM-Klausel"
- rus "View SELECT ÓÏÄÅÒÖÉÔ ÐÏÄÚÁÐÒÏÓ × ËÏÎÓÔÒÕËÃÉÉ FROM"
- ukr "View SELECT ÍÁ¤ ЦÄÚÁÐÉÔ Õ ËÏÎÓÔÒÕËæ§ FROM"
-ER_VIEW_SELECT_CLAUSE
- eng "View's SELECT contains a '%s' clause"
- ger "SELECT der View enthält eine '%s'-Klausel"
- rus "View SELECT ÓÏÄÅÒÖÉÔ ËÏÎÓÔÒÕËÃÉÀ '%s'"
- ukr "View SELECT ÍÁ¤ ËÏÎÓÔÒÕËæÀ '%s'"
-ER_VIEW_SELECT_VARIABLE
- eng "View's SELECT contains a variable or parameter"
- ger "SELECT der View enthält eine Variable oder einen Parameter"
- rus "View SELECT ÓÏÄÅÒÖÉÔ ÐÅÒÅÍÅÎÎÕÀ ÉÌÉ ÐÁÒÁÍÅÔÒ"
- ukr "View SELECT ÍÁ¤ ÚÍÉÎÎÕ ÁÂÏ ÐÁÒÁÍÅÔÅÒ"
-ER_VIEW_SELECT_TMPTABLE
- eng "View's SELECT refers to a temporary table '%-.64s'"
- ger "SELECT der View verweist auf eine temporäre Tabelle '%-.64s'"
- rus "View SELECT ÓÏÄÅÒÖÉÔ ÓÓÙÌËÕ ÎÁ ×ÒÅÍÅÎÎÕÀ ÔÁÂÌÉÃÕ '%-.64s'"
- ukr "View SELECT ×ÉËÏÒÉÓÔÏ×Õ¤ ÔÉÍÞÁÓÏ×Õ ÔÁÂÌÉÃÀ '%-.64s'"
-ER_VIEW_WRONG_LIST
- eng "View's SELECT and view's field list have different column counts"
- ger "SELECT- und Feldliste der Views haben unterschiedliche Anzahlen von Spalten"
- rus "View SELECT É ÓÐÉÓÏË ÐÏÌÅÊ view ÉÍÅÀÔ ÒÁÚÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÔÏÌÂÃÏ×"
- ukr "View SELECT ¦ ÐÅÒÅÌ¦Ë ÓÔÏ×ÂÃ¦× view ÍÁÀÔØ Ò¦ÚÎÕ Ë¦ÌØ˦ÓÔØ ÓËÏ×Âæ×"
-ER_WARN_VIEW_MERGE
- eng "View merge algorithm can't be used here for now (assumed undefined algorithm)"
- ger "View-Merge-Algorithmus kann hier momentan nicht verwendet werden (undefinierter Algorithmus wird angenommen)"
- rus "áÌÇÏÒÉÔÍ ÓÌÉÑÎÉÑ view ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÓÅÊÞÁÓ (ÁÌÇÏÒÉÔÍ ÂÕÄÅÔ ÎÅÏÐÅÒÅÄÅÌÅÎÎÙÍ)"
- ukr "áÌÇÏÒÉÔÍ ÚÌÉ×ÁÎÎÑ view ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÏÒÉÓÔÁÎÉÊ ÚÁÒÁÚ (ÁÌÇÏÒÉÔÍ ÂÕÄÅ ÎÅ×ÉÚÎÁÞÅÎÉÊ)"
-ER_WARN_VIEW_WITHOUT_KEY
- eng "View being updated does not have complete key of underlying table in it"
- ger "Die aktualisierte View enthält nicht den vollständigen Schlüssel der zugrunde liegenden Tabelle"
- rus "ïÂÎÏ×ÌÑÅÍÙÊ view ÎÅ ÓÏÄÅÒÖÉÔ ËÌÀÞÁ ÉÓÐÏÌØÚÏ×ÁÎÎÙÈ(ÏÊ) × ÎÅÍ ÔÁÂÌÉÃ(Ù)"
- ukr "View, ÝÏ ÏÎÏ×ÌÀÅÔØÓÑ, ΊͦÓÔÉÔØ ÐÏ×ÎÏÇÏ ËÌÀÞÁ ÔÁÂÌÉæ(Ø), ÝÏ ×ÉËÏÒ¦ÓÔÁÎÁ × ÎØÀÏÍÕ"
-ER_VIEW_INVALID
- eng "View '%-.64s.%-.64s' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them"
-ER_SP_NO_DROP_SP
- eng "Can't drop or alter a %s from within another stored routine"
- ger "Kann eine %s nicht von innerhalb einer anderen gespeicherten Routine löschen oder ändern"
-ER_SP_GOTO_IN_HNDLR
- eng "GOTO is not allowed in a stored procedure handler"
- ger "GOTO ist im Handler einer gespeicherten Prozedur nicht erlaubt"
-ER_TRG_ALREADY_EXISTS
- eng "Trigger already exists"
- ger "Trigger existiert bereits"
-ER_TRG_DOES_NOT_EXIST
- eng "Trigger does not exist"
- ger "Trigger existiert nicht"
-ER_TRG_ON_VIEW_OR_TEMP_TABLE
- eng "Trigger's '%-.64s' is view or temporary table"
- ger "'%-.64s' des Triggers ist View oder temporäre Tabelle"
-ER_TRG_CANT_CHANGE_ROW
- eng "Updating of %s row is not allowed in %strigger"
- ger "Aktualisieren einer %s-Zeile ist in einem %-Trigger nicht erlaubt"
-ER_TRG_NO_SUCH_ROW_IN_TRG
- eng "There is no %s row in %s trigger"
- ger "Es gibt keine %s-Zeile im %s-Trigger"
-ER_NO_DEFAULT_FOR_FIELD
- eng "Field '%-.64s' doesn't have a default value"
- ger "Feld '%-.64s' hat keinen Vorgabewert"
-ER_DIVISION_BY_ZERO 22012
- eng "Division by 0"
- ger "Division durch 0"
-ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
- eng "Incorrect %-.32s value: '%-.128s' for column '%.64s' at row %ld"
- ger "Falscher %-.32s-Wert: '%-.128s' für Feld '%.64s' in Zeile %ld"
-ER_ILLEGAL_VALUE_FOR_TYPE 22007
- eng "Illegal %s '%-.64s' value found during parsing"
- ger "Nicht zulässiger %s-Wert '%-.64s' beim Parsen gefunden"
-ER_VIEW_NONUPD_CHECK
- eng "CHECK OPTION on non-updatable view '%-.64s.%-.64s'"
- ger "CHECK OPTION auf nicht-aktualisierbarem View '%-.64s.%-.64s'"
- rus "CHECK OPTION ÄÌÑ ÎÅÏÂÎÏ×ÌÑÅÍÏÇÏ VIEW '%-.64s.%-.64s'"
- ukr "CHECK OPTION ÄÌÑ VIEW '%-.64s.%-.64s' ÝÏ ÎÅ ÍÏÖÅ ÂÕÔÉ ÏÎÏ×ÌÅÎÎÉÍ"
-ER_VIEW_CHECK_FAILED
- eng "CHECK OPTION failed '%-.64s.%-.64s'"
- ger "CHECK OPTION fehlgeschlagen: '%-.64s.%-.64s'"
- rus "ÐÒÏ×ÅÒËÁ CHECK OPTION ÄÌÑ VIEW '%-.64s.%-.64s' ÐÒÏ×ÁÌÉÌÁÓØ"
- ukr "ðÅÒÅצÒËÁ CHECK OPTION ÄÌÑ VIEW '%-.64s.%-.64s' ÎÅ ÐÒÏÊÛÌÁ"
-ER_PROCACCESS_DENIED_ERROR 42000
- eng "%-.16s command denied to user '%-.32s'@'%-.64s' for routine '%-.64s'"
- ger "Befehl %-.16s nicht zulässig für Benutzer '%-.32s'@'%-.64s' in Routine '%-.64s'"
-ER_RELAY_LOG_FAIL
- eng "Failed purging old relay logs: %s"
- ger "Bereinigen alter Relais-Logs fehlgeschlagen: %s"
-ER_PASSWD_LENGTH
- eng "Password hash should be a %d-digit hexadecimal number"
- ger "Passwort-Hash sollte eine Hexdaezimalzahl mit %d Stellen sein"
-ER_UNKNOWN_TARGET_BINLOG
- eng "Target log not found in binlog index"
- ger "Ziel-Log im Binlog-Index nicht gefunden"
-ER_IO_ERR_LOG_INDEX_READ
- eng "I/O error reading log index file"
- ger "Fehler beim Lesen der Log-Index-Datei"
-ER_BINLOG_PURGE_PROHIBITED
- eng "Server configuration does not permit binlog purge"
- ger "Server-Konfiguration erlaubt keine Binlog-Bereinigung"
-ER_FSEEK_FAIL
- eng "Failed on fseek()"
- ger "fseek() fehlgeschlagen"
-ER_BINLOG_PURGE_FATAL_ERR
- eng "Fatal error during log purge"
- ger "Schwerwiegender Fehler bei der Log-Bereinigung"
-ER_LOG_IN_USE
- eng "A purgeable log is in use, will not purge"
- ger "Ein zu bereinigendes Log wird gerade benutzt, daher keine Bereinigung"
-ER_LOG_PURGE_UNKNOWN_ERR
- eng "Unknown error during log purge"
- ger "Unbekannter Fehler bei Log-Bereinigung"
-ER_RELAY_LOG_INIT
- eng "Failed initializing relay log position: %s"
- ger "Initialisierung der Relais-Log-Position fehlgeschlagen: %s"
-ER_NO_BINARY_LOGGING
- eng "You are not using binary logging"
- ger "Sie verwenden keine Binärlogs"
-ER_RESERVED_SYNTAX
- eng "The '%-.64s' syntax is reserved for purposes internal to the MySQL server"
- ger "Die Schreibweise '%-.64s' ist für interne Zwecke des MySQL-Servers reserviert"
-ER_WSAS_FAILED
- eng "WSAStartup Failed"
- ger "WSAStartup fehlgeschlagen"
-ER_DIFF_GROUPS_PROC
- eng "Can't handle procedures with different groups yet"
- ger "Kann Prozeduren mit unterschiedlichen Gruppen noch nicht verarbeiten"
-ER_NO_GROUP_FOR_PROC
- eng "Select must have a group with this procedure"
- ger "SELECT muss bei dieser Prozedur ein GROUP BY haben"
-ER_ORDER_WITH_PROC
- eng "Can't use ORDER clause with this procedure"
- ger "Kann bei dieser Prozedur keine ORDER-BY-Klausel verwenden"
-ER_LOGGING_PROHIBIT_CHANGING_OF
- eng "Binary logging and replication forbid changing the global server %s"
- ger "Binärlogs und Replikation verhindern Wechsel des globalen Servers %s"
-ER_NO_FILE_MAPPING
- eng "Can't map file: %-.64s, errno: %d"
- ger "Kann Datei nicht abbilden: %-.64s, Fehler: %d"
-ER_WRONG_MAGIC
- eng "Wrong magic in %-.64s"
- ger "Falsche magische Zahlen in %-.64s"
-ER_PS_MANY_PARAM
- eng "Prepared statement contains too many placeholders"
- ger "Vorbereitete Anweisung enthält zu viele Platzhalter"
-ER_KEY_PART_0
- eng "Key part '%-.64s' length cannot be 0"
- ger "Länge des Schlüsselteils '%-.64s' kann nicht 0 sein"
-ER_VIEW_CHECKSUM
- eng "View text checksum failed"
- ger "View-Text-Prüfsumme fehlgeschlagen"
- rus "ðÒÏ×ÅÒËÁ ËÏÎÔÒÏÌØÎÏÊ ÓÕÍÍÙ ÔÅËÓÔÁ VIEW ÐÒÏ×ÁÌÉÌÁÓØ"
- ukr "ðÅÒÅצÒËÁ ËÏÎÔÒÏÌØÎϧ ÓÕÍÉ ÔÅËÓÔÕ VIEW ÎÅ ÐÒÏÊÛÌÁ"
-ER_VIEW_MULTIUPDATE
- eng "Can not modify more than one base table through a join view '%-.64s.%-.64s'"
- ger "Kann nicht mehr als eine Basistabelle über Join-View '%-.64s.%-.64s' ändern"
- rus "îÅÌØÚÑ ÉÚÍÅÎÉÔØ ÂÏÌØÛÅ ÞÅÍ ÏÄÎÕ ÂÁÚÏ×ÕÀ ÔÁÂÌÉÃÕ ÉÓÐÏÌØÚÕÑ ÍÎÏÇÏÔÁÂÌÉÞÎÙÊ VIEW '%-.64s.%-.64s'"
- ukr "îÅÍÏÖÌÉ×Ï ÏÎÏ×ÉÔÉ Â¦ÌØÛ ÎÉÖ ÏÄÎÕ ÂÁÚÏ×Õ ÔÁÂÌÉÃÀ ×ÙËÏÒÉÓÔÏ×ÕÀÞÉ VIEW '%-.64s.%-.64s', ÝÏ Í¦ÓÔ¦ÔØ ÄÅ˦ÌØËÁ ÔÁÂÌÉÃØ"
-ER_VIEW_NO_INSERT_FIELD_LIST
- eng "Can not insert into join view '%-.64s.%-.64s' without fields list"
- ger "Kann nicht ohne Feldliste in Join-View '%-.64s.%-.64s' einfügen"
- rus "îÅÌØÚÑ ×ÓÔÁ×ÌÑÔØ ÚÁÐÉÓÉ × ÍÎÏÇÏÔÁÂÌÉÞÎÙÊ VIEW '%-.64s.%-.64s' ÂÅÚ ÓÐÉÓËÁ ÐÏÌÅÊ"
- ukr "îÅÍÏÖÌÉ×Ï ÕÓÔÁ×ÉÔÉ ÒÑÄËÉ Õ VIEW '%-.64s.%-.64s', ÝÏ Í¦ÓÔÉÔØ ÄÅ˦ÌØËÁ ÔÁÂÌÉÃØ, ÂÅÚ ÓÐÉÓËÕ ÓÔÏ×Âæ×"
-ER_VIEW_DELETE_MERGE_VIEW
- eng "Can not delete from join view '%-.64s.%-.64s'"
- ger "Kann nicht aus Join-View '%-.64s.%-.64s' löschen"
- rus "îÅÌØÚÑ ÕÄÁÌÑÔØ ÉÚ ÍÎÏÇÏÔÁÂÌÉÞÎÏÇÏ VIEW '%-.64s.%-.64s'"
- ukr "îÅÍÏÖÌÉ×Ï ×ÉÄÁÌÉÔÉ ÒÑÄËÉ Õ VIEW '%-.64s.%-.64s', ÝÏ Í¦ÓÔÉÔØ ÄÅ˦ÌØËÁ ÔÁÂÌÉÃØ"
-ER_CANNOT_USER
- eng "Operation %s failed for %.256s"
- ger "Operation %s schlug fehl für %.256s"
- norwegian-ny "Operation %s failed for '%.256s'"
-ER_XAER_NOTA XAE04
- eng "XAER_NOTA: Unknown XID"
- ger "XAER_NOTA: Unbekannte XID"
-ER_XAER_INVAL XAE05
- eng "XAER_INVAL: Invalid arguments (or unsupported command)"
- ger "XAER_INVAL: Ungültige Argumente (oder nicht unterstützter Befehl)"
-ER_XAER_RMFAIL XAE07
- eng "XAER_RMFAIL: The command cannot be executed when global transaction is in the %.64s state"
- ger "XAER_RMFAIL: DEr Befehl kann nicht ausgeführt werden, wenn die globale Transaktion im Zustand %.64s ist"
- rus "XAER_RMFAIL: ÜÔÕ ËÏÍÁÎÄÕ ÎÅÌØÚÑ ×ÙÐÏÌÎÑÔØ ËÏÇÄÁ ÇÌÏÂÁÌØÎÁÑ ÔÒÁÎÚÁËÃÉÑ ÎÁÈÏÄÉÔÓÑ × ÓÏÓÔÏÑÎÉÉ '%.64s'"
-ER_XAER_OUTSIDE XAE09
- eng "XAER_OUTSIDE: Some work is done outside global transaction"
- ger "XAER_OUTSIDE: Einige Arbeiten werden außerhalb der globalen Transaktion verrichtet"
-ER_XAER_RMERR XAE03
- eng "XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency"
- ger "XAER_RMERR: Schwerwiegender Fehler im Transaktionszweig - prüfen Sie Ihre Daten auf Konsistenz"
-ER_XA_RBROLLBACK XA100
- eng "XA_RBROLLBACK: Transaction branch was rolled back"
- ger "XA_RBROLLBACK: Transaktionszweig wurde zurückgerollt"
-ER_NONEXISTING_PROC_GRANT 42000
- eng "There is no such grant defined for user '%-.32s' on host '%-.64s' on routine '%-.64s'"
- ger "Es gibt diese Berechtigung für Benutzer '%-.32s' auf Host '%-.64s' für Routine '%-.64s' nicht"
-ER_PROC_AUTO_GRANT_FAIL
- eng "Failed to grant EXECUTE and ALTER ROUTINE privileges"
- ger "Gewährung von EXECUTE- und ALTER-ROUTINE-Rechten fehlgeschlagen"
-ER_PROC_AUTO_REVOKE_FAIL
- eng "Failed to revoke all privileges to dropped routine"
- ger "Rücknahme aller Rechte für die gelöschte Routine fehlgeschlagen"
-ER_DATA_TOO_LONG 22001
- eng "Data too long for column '%s' at row %ld"
- ger "Daten zu lang für Feld '%s' in Zeile %ld"
-ER_SP_BAD_SQLSTATE 42000
- eng "Bad SQLSTATE: '%s'"
- ger "Ungültiger SQLSTATE: '%s'"
-ER_STARTUP
- eng "%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d %s"
- ger "%s: bereit für Verbindungen.\nVersion: '%s' Socket: '%s' Port: %d %s"
-ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR
- eng "Can't load value from file with fixed size rows to variable"
- ger "Kann Wert aus Datei mit Zeilen fester Größe nicht in Variable laden"
-ER_CANT_CREATE_USER_WITH_GRANT 42000
- eng "You are not allowed to create a user with GRANT"
- ger "Sie dürfen keinen Benutzer mit GRANT anlegen"
-ER_WRONG_VALUE_FOR_TYPE
- eng "Incorrect %-.32s value: '%-.128s' for function %-.32s"
- ger "Falscher %-.32s-Wert: '%-.128s' für Funktion %-.32s"
-ER_TABLE_DEF_CHANGED
- eng "Table definition has changed, please retry transaction"
- ger "Tabellendefinition wurde geändert, bitte starten Sie die Transaktion neu"
-ER_SP_DUP_HANDLER 42000
- eng "Duplicate handler declared in the same block"
- ger "Doppelter Handler im selben Block deklariert"
-ER_SP_NOT_VAR_ARG 42000
- eng "OUT or INOUT argument %d for routine %s is not a variable or NEW pseudo-variable in BEFORE trigger"
- ger "OUT- oder INOUT-Argument %d für Routine %s ist keine Variable"
-ER_SP_NO_RETSET 0A000
- eng "Not allowed to return a result set from a %s"
- ger "Rückgabe einer Ergebnismenge aus einer %s ist nicht erlaubt"
-ER_CANT_CREATE_GEOMETRY_OBJECT 22003
- eng "Cannot get geometry object from data you send to the GEOMETRY field"
- ger "Kann kein Geometrieobjekt aus den Daten machen, die Sie dem GEOMETRY-Feld übergeben haben"
-ER_FAILED_ROUTINE_BREAK_BINLOG
- eng "A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes"
- ger "Eine Routine, die weder NO SQL noch READS SQL DATA in der Deklaration hat, schlug fehl und Binärlogging ist aktiv. Wenn Nicht-Transaktions-Tabellen aktualisiert wurden, enthält das Binärlog ihre Änderungen nicht"
-ER_BINLOG_UNSAFE_ROUTINE
- eng "This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)"
- ger "Diese Routine hat weder DETERMINISTIC, NO SQL noch READS SQL DATA in der Deklaration und Binärlogging ist aktiv (*vielleicht* sollten Sie die weniger sichere Variable log_bin_trust_routine_creators verwenden)"
-ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
- eng "You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)"
- ger "Sie haben keine SUPER-Berechtigung und Binärlogging ist aktiv (*vielleicht* sollten Sie die weniger sichere Variable log_bin_trust_routine_creators verwenden)"
-ER_EXEC_STMT_WITH_OPEN_CURSOR
- eng "You can't execute a prepared statement which has an open cursor associated with it. Reset the statement to re-execute it."
- ger "Sie können keine vorbereitete Anweisung ausführen, die mit einem geöffneten Cursor verknüpft ist. Setzen Sie die Anweisung zurück, um sie neu auszuführen"
-ER_STMT_HAS_NO_OPEN_CURSOR
- eng "The statement (%lu) has no open cursor."
- ger "Die Anweisung (%lu) hat keinen geöffneten Cursor"
-ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
- eng "Explicit or implicit commit is not allowed in stored function or trigger."
- ger "Explizites oder implizites Commit ist in gespeicherten Funktionen und in Triggern nicht erlaubt"
-ER_NO_DEFAULT_FOR_VIEW_FIELD
- eng "Field of view '%-.64s.%-.64s' underlying table doesn't have a default value"
- ger "Ein Feld der dem View '%-.64s.%-.64s' zugrundeliegenden Tabelle hat keinen Vorgabewert"
-ER_SP_NO_RECURSION
- eng "Recursive stored functions and triggers are not allowed."
- ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt"
-ER_TOO_BIG_SCALE 42000 S1009
- eng "Too big scale %d specified for column '%-.64s'. Maximum is %d."
- ger "Zu großer Skalierungsfaktor %d für Feld '%-.64s' angegeben. Maximum ist %d"
-ER_TOO_BIG_PRECISION 42000 S1009
- eng "Too big precision %d specified for column '%-.64s'. Maximum is %d."
- ger "Zu große Genauigkeit %d für Feld '%-.64s' angegeben. Maximum ist %d"
-ER_M_BIGGER_THAN_D 42000 S1009
- eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.64s')."
- ger "Für FLOAT(M,D), DOUBLE(M,D) oder DECIMAL(M,D) muss M >= D sein (Feld '%-.64s')"
-ER_WRONG_LOCK_OF_SYSTEM_TABLE
- eng "You can't combine write-locking of system '%-.64s.%-.64s' table with other tables"
- ger "Sie können Schreibsperren auf der Systemtabelle '%-.64s.%-.64s' nicht mit anderen Tabellen kombinieren"
-ER_CONNECT_TO_FOREIGN_DATA_SOURCE
- eng "Unable to connect to foreign data source: %.64s"
- ger "Kann nicht mit Fremddatenquelle verbinden: %.64s"
-ER_QUERY_ON_FOREIGN_DATA_SOURCE
- eng "There was a problem processing the query on the foreign data source. Data source error: %-.64"
- ger "Bei der Verarbeitung der Abfrage ist in der Fremddatenquelle ein Problem aufgetreten. Datenquellenfehlermeldung: %-.64s"
-ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST
- eng "The foreign data source you are trying to reference does not exist. Data source error: %-.64s"
- ger "Die Fremddatenquelle, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
-ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE
- eng "Can't create federated table. The data source connection string '%-.64s' is not in the correct format"
- ger "Kann föderierte Tabelle nicht erzeugen. Der Datenquellen-Verbindungsstring '%-.64s' hat kein korrektes Format"
-ER_FOREIGN_DATA_STRING_INVALID
- eng "The data source connection string '%-.64s' is not in the correct format"
- ger "Der Datenquellen-Verbindungsstring '%-.64s' hat kein korrektes Format"
-ER_CANT_CREATE_FEDERATED_TABLE
- eng "Can't create federated table. Foreign data src error: %-.64s"
- ger "Kann föderierte Tabelle nicht erzeugen. Fremddatenquellenfehlermeldung: %-.64s"
-ER_TRG_IN_WRONG_SCHEMA
- eng "Trigger in wrong schema"
- ger "Trigger im falschen Schema"
-ER_STACK_OVERRUN_NEED_MORE
- eng "Thread stack overrun: %ld bytes used of a %ld byte stack, and %ld bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack."
- ger "Thread-Stack-Überlauf: %ld Bytes eines %ld-Byte-Stacks in Verwendung, und %ld Bytes benötigt. Verwenden Sie 'mysqld -O thread_stack=#', um einen größeren Stack anzugeben"
-ER_TOO_LONG_BODY 42000 S1009
- eng "Routine body for '%-.100s' is too long"
- ger "Routinen-Body für '%-.100s' ist zu lang"
-ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
- eng "Cannot drop default keycache"
- ger "Der vorgabemäßige Schlüssel-Cache kann nicht gelöscht werden"
-ER_TOO_BIG_DISPLAYWIDTH 42000 S1009
- eng "Display width out of range for column '%-.64s' (max = %d)"
- ger "Anzeigebreite außerhalb des zulässigen Bereichs für Spalte '%-.64s' (Maximum: %d)"
-ER_XAER_DUPID XAE08
- eng "XAER_DUPID: The XID already exists"
- ger "XAER_DUPID: Die XID existiert bereits"
-ER_DATETIME_FUNCTION_OVERFLOW 22008
- eng "Datetime function: %-.32s field overflow"
- ger "Datetime-Funktion: %-.32s Feldüberlauf"
-ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
- eng "Can't update table '%-.64s' in stored function/trigger because it is already used by statement which invoked this stored function/trigger."
- ger "Kann Tabelle '%-.64s' in gespeicherter Funktion oder Trigger nicht aktualisieren, weil sie bereits von der Anweisung verwendet wird, die diese gespeicherte Funktion oder den Trigger aufrief"
-ER_VIEW_PREVENT_UPDATE
- eng "The definition of table '%-.64s' prevents operation %.64s on table '%-.64s'."
- ger "Die Definition der Tabelle '%-.64s' verhindert die Operation %.64s auf Tabelle '%-.64s'"
-ER_PS_NO_RECURSION
- eng "The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner"
- ger "Die vorbereitete Anweisung enthält einen Aufruf einer gespeicherten Routine, die auf eben dieselbe Anweisung verweist. Es ist nicht erlaubt, eine vorbereitete Anweisung in solch rekursiver Weise auszuführen"
-ER_SP_CANT_SET_AUTOCOMMIT
- eng "Not allowed to set autocommit from a stored function or trigger"
- ger "Es ist nicht erlaubt, innerhalb einer gespeicherten Funktion oder eines Triggers AUTOCOMMIT zu setzen"
-ER_MALFORMED_DEFINER
- eng "Definer is not fully qualified"
- ger "Definierer des View ist nicht vollständig spezifiziert"
-ER_VIEW_FRM_NO_USER
- eng "View '%-.64s'.'%-.64s' has no definer information (old table format). Current user is used as definer. Please recreate the view!"
- ger "View '%-.64s'.'%-.64s' hat keine Definierer-Information (altes Tabellenformat). Der aktuelle Benutzer wird als Definierer verwendet. Bitte erstellen Sie den View neu"
-ER_VIEW_OTHER_USER
- eng "You need the SUPER privilege for creation view with '%-.64s'@'%-.64s' definer"
- ger "Sie brauchen die SUPER-Berechtigung, um einen View mit dem Definierer '%-.64s'@'%-.64s' zu erzeugen"
-ER_NO_SUCH_USER
- eng "There is no '%-.64s'@'%-.64s' registered"
- ger "'%-.64s'@'%-.64s' ist nicht registriert"
-ER_FORBID_SCHEMA_CHANGE
- eng "Changing schema from '%-.64s' to '%-.64s' is not allowed."
- ger "Wechsel des Schemas von '%-.64s' auf '%-.64s' ist nicht erlaubt"
-ER_ROW_IS_REFERENCED_2 23000
- eng "Cannot delete or update a parent row: a foreign key constraint fails (%.192s)"
- ger "Kann Eltern-Zeile nicht löschen oder aktualisieren: eine Fremdschlüsselbedingung schlägt fehl (%.192s)"
-ER_NO_REFERENCED_ROW_2 23000
- eng "Cannot add or update a child row: a foreign key constraint fails (%.192s)"
- ger "Kann Kind-Zeile nicht hinzufügen oder aktualisieren: eine Fremdschlüsselbedingung schlägt fehl (%.192s)"
-ER_SP_BAD_VAR_SHADOW 42000
- eng "Variable '%-.64s' must be quoted with `...`, or renamed"
- ger "Variable '%-.64s' muss mit `...` geschützt oder aber umbenannt werden"
-ER_TRG_NO_DEFINER
- eng "No definer attribute for trigger '%-.64s'.'%-.64s'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger."
- ger "Kein Definierer-Attribut für Trigger '%-.64s'.'%-.64s'. Der Trigger wird mit der Autorisierung des Aufrufers aktiviert, der möglicherweise keine zureichenden Berechtigungen hat. Bitte legen Sie den Trigger neu an."
-ER_OLD_FILE_FORMAT
- eng "'%-.64s' has an old format, you should re-create the '%s' object(s)"
- ger "'%-.64s' hat altes Format, Sie sollten die '%s'-Objekt(e) neu erzeugen"
-ER_SP_RECURSION_LIMIT
- eng "Recursive limit %d (as set by the max_sp_recursion_depth variable) was exceeded for routine %.64s"
- ger "Rekursionsgrenze %d (durch Variable max_sp_recursion_depth gegeben) wurde für Routine %.64s überschritten"
-ER_SP_PROC_TABLE_CORRUPT
- eng "Failed to load routine %s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)"
-ER_SP_WRONG_NAME 42000
- eng "Incorrect routine name '%-.64s'"
-ER_TABLE_NEEDS_UPGRADE
- eng "Table upgrade required. Please do \"REPAIR TABLE `%-.32s`\" to fix it!"
-ER_SP_NO_AGGREGATE 42000
- eng "AGGREGATE is not supported for stored functions"
-ER_MAX_PREPARED_STMT_COUNT_REACHED 42000
- eng "Can't create more than max_prepared_stmt_count statements (current value: %lu)"
-ER_VIEW_RECURSIVE
- eng "`%-.64s`.`%-.64s` contains view recursion"
-ER_NON_GROUPING_FIELD_USED 42000
- eng "non-grouping field '%-.64s' is used in %-.64s clause"
-ER_TABLE_CANT_HANDLE_SPKEYS
- eng "The used table type doesn't support SPATIAL indexes"
-ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
- eng "Triggers can not be created on system tables"
diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am
deleted file mode 100644
index 7db3d3237..000000000
--- a/data/icons/16x16/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-icondir = $(datadir)/icons/hicolor/16x16/apps
-icon_DATA = tracker.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/data/icons/16x16/tracker.png b/data/icons/16x16/tracker.png
deleted file mode 100644
index 0048e022b..000000000
--- a/data/icons/16x16/tracker.png
+++ /dev/null
Binary files differ
diff --git a/data/icons/22x22/Makefile.am b/data/icons/22x22/Makefile.am
deleted file mode 100644
index 3d30ec46b..000000000
--- a/data/icons/22x22/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-icondir = $(datadir)/icons/hicolor/22x22/apps
-icon_DATA = tracker.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/data/icons/22x22/tracker.png b/data/icons/22x22/tracker.png
deleted file mode 100644
index ea038072d..000000000
--- a/data/icons/22x22/tracker.png
+++ /dev/null
Binary files differ
diff --git a/data/icons/24x24/Makefile.am b/data/icons/24x24/Makefile.am
deleted file mode 100644
index 028b61f6f..000000000
--- a/data/icons/24x24/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-icondir = $(datadir)/icons/hicolor/24x24/apps
-icon_DATA = tracker.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/data/icons/24x24/tracker.png b/data/icons/24x24/tracker.png
deleted file mode 100644
index 4de00ab31..000000000
--- a/data/icons/24x24/tracker.png
+++ /dev/null
Binary files differ
diff --git a/data/icons/32x32/Makefile.am b/data/icons/32x32/Makefile.am
deleted file mode 100644
index 10b2cc9e4..000000000
--- a/data/icons/32x32/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-icondir = $(datadir)/icons/hicolor/32x32/apps
-icon_DATA = tracker.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/data/icons/32x32/tracker.png b/data/icons/32x32/tracker.png
deleted file mode 100644
index 96089db9f..000000000
--- a/data/icons/32x32/tracker.png
+++ /dev/null
Binary files differ
diff --git a/data/icons/48x48/Makefile.am b/data/icons/48x48/Makefile.am
deleted file mode 100644
index b994dc7c8..000000000
--- a/data/icons/48x48/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-icondir = $(datadir)/icons/hicolor/48x48/apps
-icon_DATA = tracker.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/data/icons/48x48/tracker.png b/data/icons/48x48/tracker.png
deleted file mode 100644
index 497f2a2a3..000000000
--- a/data/icons/48x48/tracker.png
+++ /dev/null
Binary files differ
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
deleted file mode 100644
index 028738483..000000000
--- a/data/icons/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable
-
-gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
-
-install-data-hook: update-icon-cache
-uninstall-hook: update-icon-cache
-update-icon-cache:
- @-if test -z "$(DESTDIR)"; then \
- echo "Updating Gtk icon cache."; \
- $(gtk_update_icon_cache); \
- else \
- echo "*** Icon cache not updated. After (un)install, run this:"; \
- echo "*** $(gtk_update_icon_cache)"; \
- fi
diff --git a/data/icons/scalable/Makefile.am b/data/icons/scalable/Makefile.am
deleted file mode 100644
index cc0eb3466..000000000
--- a/data/icons/scalable/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-icondir = $(datadir)/icons/hicolor/scalable/apps
-icon_DATA = tracker.svg
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/data/icons/scalable/tracker.svg b/data/icons/scalable/tracker.svg
deleted file mode 100644
index 7655d24ac..000000000
--- a/data/icons/scalable/tracker.svg
+++ /dev/null
@@ -1,1347 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44.1"
- version="1.0"
- sodipodi:docbase="/home/baze"
- sodipodi:docname="tracker.svg"
- inkscape:export-filename="/home/baze/tracker.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <radialGradient
- r="45"
- fy="106.49996"
- fx="-25"
- cy="106.49996"
- cx="-25"
- gradientTransform="matrix(3.466166,-6.346783e-2,7.070491e-2,3.695342,32.7241,-321.4409)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient3293"
- xlink:href="#linearGradient3075"
- inkscape:collect="always" />
- <radialGradient
- r="46"
- fy="99.774971"
- fx="-24.85253"
- cy="99.774971"
- cx="-24.85253"
- gradientTransform="matrix(0.934777,-0.846006,0.891541,0.985091,-120.2744,-50.59553)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient3290"
- xlink:href="#linearGradient3139"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1.2,0,0,1.2,-18.8,-66.7005)"
- y2="97.761848"
- x2="-44.159863"
- y1="103.68449"
- x1="-39.098888"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3287"
- xlink:href="#linearGradient3149"
- inkscape:collect="always" />
- <linearGradient
- y2="97.761848"
- x2="-44.159863"
- y1="103.68449"
- x1="-39.098888"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3283"
- xlink:href="#linearGradient3149"
- inkscape:collect="always" />
- <radialGradient
- r="46"
- fy="99.774971"
- fx="-24.85253"
- cy="99.774971"
- cx="-24.85253"
- gradientTransform="matrix(0.778981,-0.705005,0.742951,0.820909,-84.56197,13.42081)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient3281"
- xlink:href="#linearGradient3139"
- inkscape:collect="always" />
- <radialGradient
- r="45"
- fy="106.49996"
- fx="-25"
- cy="106.49996"
- cx="-25"
- gradientTransform="matrix(2.888472,-5.288986e-2,5.892076e-2,3.079452,42.93675,-212.2837)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient3279"
- xlink:href="#linearGradient3075"
- inkscape:collect="always" />
- <radialGradient
- r="64.122231"
- fy="123.41074"
- fx="31.487459"
- cy="123.41074"
- cx="64.37719"
- gradientTransform="matrix(1,0,0,8.747514e-2,0,112.6154)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient2348"
- xlink:href="#linearGradient2345"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2215">
- <stop
- style="stop-color:#8e8e8e;stop-opacity:1;"
- offset="0"
- id="stop2217" />
- <stop
- style="stop-color:#f8f8f8;stop-opacity:1;"
- offset="1"
- id="stop2219" />
- </linearGradient>
- <linearGradient
- id="linearGradient2221">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop2223" />
- <stop
- id="stop2225"
- offset="0.40659341"
- style="stop-color:#000000;stop-opacity:0.68235294;" />
- <stop
- style="stop-color:#000000;stop-opacity:0.48736462;"
- offset="0.45329672"
- id="stop2227" />
- <stop
- id="stop2229"
- offset="0.5"
- style="stop-color:#000000;stop-opacity:0.36101082;" />
- <stop
- style="stop-color:#000000;stop-opacity:0.15162455;"
- offset="0.70604396"
- id="stop2231" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop2233" />
- </linearGradient>
- <linearGradient
- id="linearGradient2235">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2237" />
- <stop
- id="stop2239"
- offset="0.42597079"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop2241"
- offset="0.5892781"
- style="stop-color:#f1f1f1;stop-opacity:1;" />
- <stop
- style="stop-color:#eaeaea;stop-opacity:1;"
- offset="0.80219781"
- id="stop2243" />
- <stop
- style="stop-color:#dfdfdf;stop-opacity:1;"
- offset="1"
- id="stop2245" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3075"
- id="radialGradient1458"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.888472,-5.288986e-2,5.892076e-2,3.079452,42.93675,-212.2837)"
- cx="-25"
- cy="106.49996"
- fx="-25"
- fy="106.49996"
- r="45" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3139"
- id="radialGradient1460"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.778981,-0.705005,0.742951,0.820909,-84.56197,13.42081)"
- cx="-24.85253"
- cy="99.774971"
- fx="-24.85253"
- fy="99.774971"
- r="46" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3149"
- id="linearGradient1462"
- gradientUnits="userSpaceOnUse"
- x1="-39.098888"
- y1="103.68449"
- x2="-44.159863"
- y2="97.761848" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2345"
- id="radialGradient2250"
- cx="64.37719"
- cy="123.41074"
- fx="31.487459"
- fy="123.41074"
- r="64.122231"
- gradientTransform="matrix(1,0,0,8.747514e-2,0,112.6154)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2257"
- id="radialGradient1495"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.520175,8.839467e-2,-0.843351,13.788,109.1206,-1545.323)"
- cx="42.617531"
- cy="120.64188"
- fx="42.617531"
- fy="120.64188"
- r="3.406888" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3311"
- id="radialGradient1497"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.228741e-2,-3.825032e-4,4.90218e-3,0.798611,68.90433,5.49306)"
- cx="95.505852"
- cy="59.591507"
- fx="95.505852"
- fy="59.591507"
- r="47.746403" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3225"
- id="radialGradient1499"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.297068,-1.880044e-3,7.085819e-4,0.48867,6.806484,-3.45491)"
- cx="49.009884"
- cy="8.4953117"
- fx="47.370888"
- fy="6.7701697"
- r="3.9750404" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3217"
- id="linearGradient1501"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.29707,0,0,1.29707,6.81152,-10.31269)"
- x1="48.914677"
- y1="2.9719031"
- x2="48.913002"
- y2="2.5548496" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3207"
- id="radialGradient1503"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.29707,0,0,0.1578,6.81152,-7.300115)"
- cx="49.011971"
- cy="2.6743078"
- fx="49.011971"
- fy="2.6743078"
- r="1.7246193" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3235"
- id="linearGradient1505"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.297068,-1.880044e-3,1.880044e-3,1.297068,6.796523,-10.3225)"
- x1="48.498562"
- y1="0.81150496"
- x2="48.732723"
- y2="2.3657269" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3251"
- id="linearGradient1507"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.28993,0,0,1.29707,7.14915,-10.31269)"
- x1="46.051746"
- y1="3.0999987"
- x2="46.051746"
- y2="2.395859" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3273"
- id="radialGradient1509"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.860164,0,0,0.1578,24.50481,-7.300115)"
- cx="49.011971"
- cy="2.6743078"
- fx="49.011971"
- fy="2.6743078"
- r="1.7246193" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3251"
- id="linearGradient1511"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.279856,0,0,1.29707,-133.1341,-10.31269)"
- x1="46.051746"
- y1="3.0999987"
- x2="46.051746"
- y2="2.395859" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3259"
- id="radialGradient1513"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.853446,0,0,0.1578,-115.9141,-7.300115)"
- cx="49.011971"
- cy="2.6743078"
- fx="49.011971"
- fy="2.6743078"
- r="1.7246193" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3303"
- id="radialGradient1515"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,2.608014e-2,0,7.26766)"
- cx="34.677639"
- cy="7.4622769"
- fx="34.677639"
- fy="7.4622769"
- r="47.595196" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3325"
- id="radialGradient1517"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1.511766,-6.865741e-3,4.187271e-5,-9.110636e-3,87.10184,7.76835)"
- cx="34.677639"
- cy="7.4622769"
- fx="34.677639"
- fy="7.4622769"
- r="47.595196" />
- <linearGradient
- id="linearGradient3325">
- <stop
- id="stop3327"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop3329"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3311">
- <stop
- style="stop-color:#2d2d2d;stop-opacity:1;"
- offset="0"
- id="stop3313" />
- <stop
- id="stop3319"
- offset="0.5"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="1"
- id="stop3315" />
- </linearGradient>
- <linearGradient
- id="linearGradient3303">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.68345326;"
- offset="0"
- id="stop3305" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3307" />
- </linearGradient>
- <linearGradient
- id="linearGradient3273">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.55035973;"
- offset="0"
- id="stop3275" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3277" />
- </linearGradient>
- <linearGradient
- id="linearGradient3259">
- <stop
- id="stop3261"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:0.55035973;" />
- <stop
- id="stop3263"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2280">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2282" />
- <stop
- style="stop-color:#aeaeae;stop-opacity:1;"
- offset="1"
- id="stop2284" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3217">
- <stop
- style="stop-color:#252525;stop-opacity:1;"
- offset="0"
- id="stop3219" />
- <stop
- style="stop-color:#252525;stop-opacity:0;"
- offset="1"
- id="stop3221" />
- </linearGradient>
- <linearGradient
- id="linearGradient3207">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3209" />
- <stop
- style="stop-color:#252525;stop-opacity:0;"
- offset="1"
- id="stop3211" />
- </linearGradient>
- <linearGradient
- id="linearGradient2257">
- <stop
- style="stop-color:#b4942a;stop-opacity:1;"
- offset="0"
- id="stop2259" />
- <stop
- style="stop-color:#e4dcc9;stop-opacity:1"
- offset="1"
- id="stop2261" />
- </linearGradient>
- <linearGradient
- id="linearGradient3235"
- inkscape:collect="always">
- <stop
- id="stop3237"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop3239"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3251">
- <stop
- id="stop3253"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#090909;stop-opacity:0.67870039;"
- offset="0.7087912"
- id="stop14161" />
- <stop
- id="stop3255"
- offset="1"
- style="stop-color:#131313;stop-opacity:0;" />
- </linearGradient>
- <foreignObject
- requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
- x="0"
- y="0"
- width="1"
- height="1"
- id="foreignObject1939">
- <i:pgfRef
- xlink:href="#adobe_illustrator_pgf" />
- </foreignObject>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3291"
- id="radialGradient1566"
- cx="63.912209"
- cy="115.70919"
- fx="98.520187"
- fy="119.62119"
- r="63.912209"
- gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3291"
- id="radialGradient1739"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
- cx="63.912209"
- cy="115.7093"
- fx="63.912209"
- fy="115.7093"
- r="63.912209" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3291"
- id="radialGradient2096"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
- cx="63.912209"
- cy="115.70919"
- fx="98.520187"
- fy="119.62119"
- r="63.912209" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3291"
- id="radialGradient2098"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
- cx="63.912209"
- cy="115.7093"
- fx="63.912209"
- fy="115.7093"
- r="63.912209" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4171">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4173" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop4175" />
- </linearGradient>
- <linearGradient
- id="linearGradient5176">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5178" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5180" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5142">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5144" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5146" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5111">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5113" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5115" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4206">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4208" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4210" />
- </linearGradient>
- <linearGradient
- id="linearGradient3319">
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="0"
- id="stop3321" />
- <stop
- id="stop2287"
- offset="0.86263734"
- style="stop-color:#000000;stop-opacity:0;" />
- <stop
- style="stop-color:#000000;stop-opacity:0.27797833;"
- offset="1"
- id="stop3323" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3201">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3203" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3205" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2288">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2290" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop2292" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3291">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop3293" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop3295" />
- </linearGradient>
- <linearGradient
- id="linearGradient3225">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3227" />
- <stop
- style="stop-color:#aeaeae;stop-opacity:1;"
- offset="1"
- id="stop3229" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3291"
- id="radialGradient3297"
- cx="63.912209"
- cy="115.70919"
- fx="98.520187"
- fy="119.62119"
- r="63.912209"
- gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3201"
- id="radialGradient4208"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.350763,0,33.62806)"
- cx="53.82272"
- cy="51.796238"
- fx="53.363365"
- fy="53.704475"
- r="5.2844129" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3201"
- id="radialGradient4210"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.350763,0,33.62806)"
- cx="53.82272"
- cy="51.796238"
- fx="53.363365"
- fy="53.704475"
- r="5.2844129" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4206"
- id="radialGradient4214"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.008658,0,-0.322745)"
- cx="36.920532"
- cy="37.277058"
- fx="28.846222"
- fy="20.466549"
- r="31.704992" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5142"
- id="linearGradient4216"
- gradientUnits="userSpaceOnUse"
- x1="67.70639"
- y1="137.9411"
- x2="60.432804"
- y2="42.427299" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5111"
- id="linearGradient4218"
- gradientUnits="userSpaceOnUse"
- x1="34.841892"
- y1="-7.142458"
- x2="35.561386"
- y2="11.415728" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5111"
- id="linearGradient4220"
- gradientUnits="userSpaceOnUse"
- x1="34.841892"
- y1="-7.142458"
- x2="35.561386"
- y2="11.415728" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5111"
- id="linearGradient4222"
- gradientUnits="userSpaceOnUse"
- x1="34.841892"
- y1="-7.142458"
- x2="35.561386"
- y2="11.415728" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5176"
- id="radialGradient4224"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.743822,4.610586e-7,-4.175093e-7,0.670083,-30.109,9.1749)"
- cx="40.478767"
- cy="27.809845"
- fx="40.478779"
- fy="42.86652"
- r="30.543081" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5111"
- id="linearGradient4226"
- gradientUnits="userSpaceOnUse"
- x1="34.841892"
- y1="-7.142458"
- x2="35.561386"
- y2="11.415728" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5111"
- id="linearGradient4229"
- gradientUnits="userSpaceOnUse"
- x1="34.841892"
- y1="-7.142458"
- x2="35.561386"
- y2="11.415728" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5111"
- id="linearGradient4231"
- gradientUnits="userSpaceOnUse"
- x1="34.841892"
- y1="-7.142458"
- x2="35.561386"
- y2="11.415728" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4171"
- id="linearGradient1380"
- gradientUnits="userSpaceOnUse"
- x1="67.515175"
- y1="86.706062"
- x2="63.401665"
- y2="61.357201"
- gradientTransform="matrix(1.004983,0,0,1.005797,-3.514071e-3,-9.765696e-2)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3225"
- id="linearGradient1395"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.342816,0.414732,0.409438,0.344388,68.74377,42.51885)"
- spreadMethod="reflect"
- x1="28.071711"
- y1="20.204628"
- x2="40.198689"
- y2="20.20463" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2288"
- id="radialGradient1401"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.599945,-0.725801,7.847448,6.600672,-444.8151,-313.0422)"
- cx="32.489605"
- cy="69.225014"
- fx="29.738691"
- fy="69.225014"
- r="8.3332367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2288"
- id="radialGradient1404"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.599945,-0.725801,7.847448,6.600672,-444.8151,-313.0422)"
- cx="49.157429"
- cy="62.380642"
- fx="45.900455"
- fy="62.298256"
- r="8.3332367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3319"
- id="radialGradient1412"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.993088,2.250037e-2,-2.180165e-2,0.952313,1.715624,0.815028)"
- cx="39.126225"
- cy="44.269405"
- fx="39.12624"
- fy="44.269413"
- r="34.469494" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="97.761848"
- x2="-44.159863"
- y1="103.68449"
- x1="-39.098888"
- id="linearGradient3155"
- xlink:href="#linearGradient3149"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.778981,-0.705005,0.742951,0.820909,-84.56197,13.42081)"
- r="46"
- fy="99.774971"
- fx="-24.85253"
- cy="99.774971"
- cx="-24.85253"
- id="radialGradient3145"
- xlink:href="#linearGradient3139"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.888472,-5.288986e-2,5.892076e-2,3.079452,42.93675,-212.2837)"
- r="45"
- fy="106.49996"
- fx="-25"
- cy="106.49996"
- cx="-25"
- id="radialGradient3083"
- xlink:href="#linearGradient3075"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient3075">
- <stop
- id="stop3077"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0.42597079"
- id="stop3093" />
- <stop
- style="stop-color:#f1f1f1;stop-opacity:1;"
- offset="0.5892781"
- id="stop3085" />
- <stop
- id="stop3087"
- offset="0.80219781"
- style="stop-color:#eaeaea;stop-opacity:1;" />
- <stop
- id="stop3079"
- offset="1"
- style="stop-color:#dfdfdf;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3139">
- <stop
- id="stop3141"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#000000;stop-opacity:0.68235294;"
- offset="0.40659341"
- id="stop3162" />
- <stop
- id="stop3164"
- offset="0.45329672"
- style="stop-color:#000000;stop-opacity:0.48736462;" />
- <stop
- style="stop-color:#000000;stop-opacity:0.36101082;"
- offset="0.5"
- id="stop3158" />
- <stop
- id="stop3160"
- offset="0.70604396"
- style="stop-color:#000000;stop-opacity:0.15162455;" />
- <stop
- id="stop3143"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3149">
- <stop
- id="stop3151"
- offset="0"
- style="stop-color:#8e8e8e;stop-opacity:1;" />
- <stop
- id="stop3153"
- offset="1"
- style="stop-color:#f8f8f8;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3461">
- <stop
- id="stop3463"
- offset="0"
- style="stop-color:#bbbbbb;stop-opacity:1;" />
- <stop
- id="stop3465"
- offset="1"
- style="stop-color:#bbbbbb;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3471">
- <stop
- id="stop3473"
- offset="0"
- style="stop-color:#000000;stop-opacity:0.48736462;" />
- <stop
- id="stop3475"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2345"
- inkscape:collect="always">
- <stop
- id="stop2347"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop2349"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4440">
- <stop
- id="stop4442"
- offset="0"
- style="stop-color:#7d7d7d;stop-opacity:1;" />
- <stop
- style="stop-color:#b1b1b1;stop-opacity:1.0000000;"
- offset="0.50000000"
- id="stop4448" />
- <stop
- id="stop4444"
- offset="1.0000000"
- style="stop-color:#686868;stop-opacity:1.0000000;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4454">
- <stop
- id="stop4456"
- offset="0.0000000"
- style="stop-color:#ce5c00;stop-opacity:0.20784314" />
- <stop
- id="stop4458"
- offset="1.0000000"
- style="stop-color:#f57900;stop-opacity:0.67619050" />
- </linearGradient>
- <linearGradient
- id="linearGradient4467">
- <stop
- id="stop4469"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop4471"
- offset="1.0000000"
- style="stop-color:#ffffff;stop-opacity:0.24761905;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4477"
- inkscape:collect="always">
- <stop
- id="stop4479"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop4481"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4487"
- inkscape:collect="always">
- <stop
- id="stop4489"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop4491"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2366">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2368" />
- <stop
- id="stop2374"
- offset="0.50000000"
- style="stop-color:#ffffff;stop-opacity:0.21904762;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop2370" />
- </linearGradient>
- <linearGradient
- id="linearGradient2846">
- <stop
- style="stop-color:#8a8a8a;stop-opacity:1.0000000;"
- offset="0.0000000"
- id="stop2848" />
- <stop
- style="stop-color:#484848;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop2850" />
- </linearGradient>
- <linearGradient
- id="linearGradient2997">
- <stop
- id="stop2999"
- offset="0"
- style="stop-color:#7d7d7d;stop-opacity:1;" />
- <stop
- style="stop-color:#b1b1b1;stop-opacity:1.0000000;"
- offset="0.50000000"
- id="stop3001" />
- <stop
- id="stop3003"
- offset="1.0000000"
- style="stop-color:#686868;stop-opacity:1.0000000;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2991">
- <stop
- id="stop2993"
- offset="0.0000000"
- style="stop-color:#729fcf;stop-opacity:0.20784314;" />
- <stop
- id="stop2995"
- offset="1.0000000"
- style="stop-color:#729fcf;stop-opacity:0.67619050;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2985">
- <stop
- id="stop2987"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop2989"
- offset="1.0000000"
- style="stop-color:#ffffff;stop-opacity:0.24761905;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2965">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2967" />
- <stop
- id="stop2969"
- offset="0.50000000"
- style="stop-color:#ffffff;stop-opacity:0.21904762;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop2971" />
- </linearGradient>
- <linearGradient
- id="linearGradient2959">
- <stop
- style="stop-color:#8a8a8a;stop-opacity:1.0000000;"
- offset="0.0000000"
- id="stop2961" />
- <stop
- style="stop-color:#484848;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop2963" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4477"
- id="radialGradient3034"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.237968,0,28.93278)"
- cx="24.130018"
- cy="37.967922"
- fx="24.130018"
- fy="37.967922"
- r="16.528622" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2366"
- id="linearGradient3040"
- gradientUnits="userSpaceOnUse"
- x1="18.292673"
- y1="13.602121"
- x2="17.500893"
- y2="25.743469" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4487"
- id="radialGradient3042"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.237968,0,28.93278)"
- cx="24.130018"
- cy="37.967922"
- fx="24.130018"
- fy="37.967922"
- r="16.528622" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4454"
- id="radialGradient3044"
- gradientUnits="userSpaceOnUse"
- cx="18.240929"
- cy="21.817987"
- fx="18.240929"
- fy="21.817987"
- r="8.3085051" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4467"
- id="radialGradient3049"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.592963,0,0,2.252104,-24.89514,-18.08455)"
- cx="15.414371"
- cy="13.078408"
- fx="15.414371"
- fy="13.078408"
- r="6.6562500" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4440"
- id="linearGradient3056"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.334593,0,0,1.291292,-6.809229,-6.604212)"
- x1="30.656250"
- y1="34.000000"
- x2="33.218750"
- y2="31.062500" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2846"
- id="linearGradient3060"
- gradientUnits="userSpaceOnUse"
- x1="27.366341"
- y1="26.580296"
- x2="31.335964"
- y2="30.557772"
- gradientTransform="translate(0.164613,0.856446)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="50"
- guidetolerance="50"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.998886"
- inkscape:cx="22.841726"
- inkscape:cy="24.537509"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- inkscape:window-width="987"
- inkscape:window-height="859"
- inkscape:window-x="97"
- inkscape:window-y="114"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:guide-points="false"
- inkscape:grid-points="true"
- showgrid="true"
- gridspacingx="0.5px"
- gridspacingy="0.5px">
- <sodipodi:guide
- orientation="horizontal"
- position="69.953064"
- id="guide2827" />
- <sodipodi:guide
- orientation="vertical"
- position="-33.082496"
- id="guide2829" />
- <sodipodi:guide
- orientation="vertical"
- position="84.852814"
- id="guide2831" />
- <sodipodi:guide
- orientation="horizontal"
- position="-46.214479"
- id="guide2835" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <rect
- style="opacity:0.57786889;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.63199997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
- id="rect1327"
- width="1"
- height="0"
- x="101.96484"
- y="50.58419" />
- <rect
- style="opacity:0.57786889;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.63199997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
- id="rect2306"
- width="1"
- height="0"
- x="-155.40515"
- y="7.1223102" />
- <path
- sodipodi:nodetypes="ccc"
- id="path2318"
- d="M -314.34258,-66.093757 L -314.34258,-68.888466 L -314.34258,-66.093757 z "
- style="fill:white;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
- <g
- style="opacity:0.40163933"
- transform="matrix(-0.782995,0,0,0.650879,-2637.201,620.4239)"
- id="g4640" />
- <g
- id="g4646"
- transform="matrix(-0.782995,0,0,0.650879,-2637.201,620.4239)"
- style="opacity:0.40163933" />
- <g
- id="g4730"
- transform="matrix(1,0,0,0.650879,563.7618,627.7517)"
- style="opacity:0.40163933" />
- <g
- style="opacity:0.40163933"
- transform="matrix(1,0,0,0.650879,563.7618,627.7517)"
- id="g4748" />
- <path
- transform="matrix(1.446431,0,0,1.51999,-10.80992,-16.89523)"
- d="M 40.65864 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.65864 37.967922 z"
- sodipodi:ry="3.9332814"
- sodipodi:rx="16.528622"
- sodipodi:cy="37.967922"
- sodipodi:cx="24.130018"
- id="path4475"
- style="opacity:0.17112301;color:black;fill:url(#radialGradient3034);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- style="color:black;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3060);stroke-width:2.00000095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 18.792182,4.0000008 C 10.653052,4.0000008 4.0473812,10.605672 4.0473812,18.744802 C 4.0473812,26.883932 10.653052,33.489604 18.792182,33.489604 C 22.271737,33.489604 25.343183,32.105211 27.865905,30.086957 C 27.660528,31.093838 27.78787,32.122325 28.622049,32.846882 L 39.586133,42.374292 C 40.819549,43.445621 42.673595,43.305252 43.744923,42.071835 C 44.816251,40.838417 44.675882,38.984373 43.442466,37.913045 L 32.478382,28.385634 C 31.806855,27.802355 30.985504,27.629665 30.172144,27.742912 C 32.158844,25.23049 33.536983,22.194109 33.536983,18.744802 C 33.536983,10.605672 26.931312,4.0000008 18.792182,4.0000008 z M 18.716567,5.2261841 C 26.356026,5.2261841 32.008342,10.015135 32.008342,18.517959 C 32.008342,27.193072 26.191652,31.809734 18.716567,31.809734 C 11.413618,31.809734 5.4247936,26.331642 5.4247936,18.517959 C 5.4247936,10.533852 11.249432,5.226184 18.716567,5.2261841 z "
- id="path2844"
- sodipodi:nodetypes="csscccscccscczzzz" />
- <path
- id="path4430"
- d="M 18.767518,3.9368011 C 10.602078,3.9368011 3.9750538,10.563825 3.9750538,18.729265 C 3.9750538,26.894705 10.602078,33.521729 18.767518,33.521729 C 22.258321,33.521729 25.339695,32.132862 27.870573,30.108084 C 27.664532,31.11822 27.792285,32.150031 28.62916,32.87693 L 39.628686,42.435137 C 40.866089,43.509929 42.726128,43.369107 43.800919,42.131702 C 44.87571,40.894298 44.734887,39.03426 43.497484,37.959469 L 32.497959,28.401261 C 31.824261,27.816097 31.000255,27.642848 30.184266,27.756462 C 32.177388,25.235918 33.559982,22.189722 33.559982,18.729265 C 33.559982,10.563825 26.932958,3.9368011 18.767518,3.9368011 z M 18.691659,7.1228703 C 24.972767,7.1228705 30.070477,12.220581 30.070477,18.501689 C 30.070477,24.782797 24.972767,29.880507 18.691659,29.880507 C 12.410551,29.880507 7.3128406,24.782797 7.3128406,18.501689 C 7.3128408,12.220581 12.410551,7.1228703 18.691659,7.1228703 z "
- style="color:black;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path4438"
- d="M 39.671617,42.434136 C 39.192945,40.160949 41.068947,37.622714 43.25567,37.645761 C 43.25567,37.645761 32.495303,28.38765 32.495303,28.38765 C 29.550512,28.330944 28.225801,30.660266 28.718489,32.987572 L 39.671617,42.434136 z "
- style="color:black;fill:url(#linearGradient3056);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- transform="matrix(1.245743,0,0,1.245743,-3.260733,-5.320587)"
- d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
- sodipodi:ry="11.048544"
- sodipodi:rx="11.048544"
- sodipodi:cy="18.920233"
- sodipodi:cx="17.500893"
- id="path4450"
- style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3040);stroke-width:0.8027336;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="color:black;fill:url(#radialGradient3042);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path4485"
- sodipodi:cx="24.130018"
- sodipodi:cy="37.967922"
- sodipodi:rx="16.528622"
- sodipodi:ry="3.9332814"
- d="M 40.65864 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.65864 37.967922 z"
- transform="matrix(0.497764,0,0,0.609621,9.138139,16.47574)" />
- <rect
- transform="matrix(0.752986,0.658037,-0.648902,0.760872,0,0)"
- ry="1.8879365"
- rx="2.1366615"
- y="0.67746985"
- x="41.054398"
- height="4.4404783"
- width="19.048445"
- id="rect4495"
- style="opacity:0.43315507;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.00003123;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- transform="matrix(1.398614,0,0,1.398614,-6.059725,-7.442512)"
- d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.280776,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
- sodipodi:ry="8.3085051"
- sodipodi:rx="8.3085051"
- sodipodi:cy="18.478292"
- sodipodi:cx="17.589281"
- id="path4452"
- style="color:black;fill:url(#radialGradient3044);fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dashoffset:0;stroke-opacity:1;visibility:visible"
- sodipodi:type="arc" />
- <path
- style="fill:#272c2e;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.98407042px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 27.166932,14.788887 C 25.733227,13.44292 20.883226,16.995107 23.033784,19.014059 C 25.184342,21.033011 28.600636,16.134854 27.166932,14.788887 z "
- id="path2116"
- sodipodi:nodetypes="css" />
- <path
- style="fill:#272c2e;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.92405277px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 23.925869,25.433801 C 24.573186,26.022493 28.163554,24.011307 27.442852,22.036782 C 26.722156,20.062255 21.98392,23.667724 23.925869,25.433801 z "
- id="path2118"
- sodipodi:nodetypes="css" />
- <path
- style="fill:#272c2e;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.98604864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 21.003845,9.7167316 C 22.487885,11.022282 20.43569,17.078901 18.209632,15.120575 C 15.983573,13.162251 19.519806,8.4111821 21.003845,9.7167316 z "
- id="path3032"
- sodipodi:nodetypes="css" />
- <path
- style="fill:#272c2e;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.92799336px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 11.656901,15.199887 C 11.023082,14.593518 12.003308,10.096465 13.832909,10.488128 C 15.66251,10.879786 13.558353,17.018991 11.656901,15.199887 z "
- id="path3034"
- sodipodi:nodetypes="css" />
- <path
- style="fill:#272c2e;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.03811264px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 10.974025,18.60242 C 8.430812,22.619158 17.228659,29.979463 20.571676,26.631844 C 21.35606,25.846381 20.807635,25.293693 20.607132,23.247952 C 20.388463,21.016882 21.240785,20.040808 18.58725,19.186273 C 17.241764,16.695215 16.389441,17.671288 14.208696,17.895002 C 12.13379,18.10786 11.570746,17.659961 10.974025,18.60242 z "
- id="path2097"
- sodipodi:nodetypes="csscss" />
- <path
- id="path4462"
- d="M 18.321528,8.2531398 C 13.113938,8.2531398 8.8969811,12.470097 8.8969811,17.677687 C 8.8969811,19.181662 9.3172883,20.56546 9.944153,21.82759 C 11.196533,22.289203 12.52691,22.603273 13.93892,22.603273 C 20.109875,22.603273 25.038202,17.741636 25.419026,11.666144 C 23.688062,9.6206128 21.208987,8.2531398 18.321528,8.2531398 z "
- style="opacity:0.6011236;color:black;fill:url(#radialGradient3049);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
-</svg>
diff --git a/data/languages/Makefile.am b/data/languages/Makefile.am
deleted file mode 100644
index c7025e22b..000000000
--- a/data/languages/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-configdir = $(datadir)/tracker/languages
-
-config_DATA = \
- stopwords.da \
- stopwords.de \
- stopwords.en \
- stopwords.es \
- stopwords.fi \
- stopwords.fr \
- stopwords.hu \
- stopwords.it \
- stopwords.nb \
- stopwords.nl \
- stopwords.pt \
- stopwords.ru \
- stopwords.sv
-
-
-EXTRA_DIST = $(config_DATA)
diff --git a/data/languages/stopwords.da b/data/languages/stopwords.da
deleted file mode 100644
index e8522ef06..000000000
--- a/data/languages/stopwords.da
+++ /dev/null
@@ -1,101 +0,0 @@
-af
-alle
-andet
-andre
-at
-begge
-da
-de
-den
-denne
-der
-deres
-det
-dette
-dig
-din
-dog
-du
-ej
-eller
-en
-end
-ene
-eneste
-enhver
-et
-fem
-fire
-flere
-fleste
-for
-fordi
-forrige
-fra
-få
-før
-god
-han
-hans
-har
-hendes
-her
-hun
-hvad
-hvem
-hver
-hvilken
-hvis
-hvor
-hvordan
-hvorfor
-hvornår
-i
-ikke
-ind
-ingen
-intet
-jeg
-jeres
-kan
-kom
-kommer
-lav
-lidt
-lille
-man
-mand
-mange
-med
-meget
-men
-mens
-mere
-mig
-ned
-ni
-nogen
-noget
-ny
-nyt
-nær
-næste
-næsten
-og
-op
-otte
-over
-på
-se
-seks
-ses
-som
-stor
-store
-syv
-ti
-til
-to
-tre
-ud
-var
diff --git a/data/languages/stopwords.de b/data/languages/stopwords.de
deleted file mode 100644
index 8464fccb8..000000000
--- a/data/languages/stopwords.de
+++ /dev/null
@@ -1,129 +0,0 @@
-aber
-als
-am
-an
-auch
-auf
-aus
-bei
-bin
-bis
-bist
-da
-dadurch
-daher
-darum
-das
-daß
-dass
-dein
-deine
-dem
-den
-der
-des
-dessen
-deshalb
-die
-dies
-dieser
-dieses
-doch
-dort
-du
-durch
-ein
-eine
-einem
-einen
-einer
-eines
-er
-es
-euer
-eure
-für
-hatte
-hatten
-hattest
-hattet
-hier
-hinter
-ich
-ihr
-ihre
-im
-in
-ist
-ja
-jede
-jedem
-jeden
-jeder
-jedes
-jener
-jenes
-jetzt
-kann
-kannst
-können
-könnt
-machen
-mein
-meine
-mit
-muß
-mußt
-musst
-müssen
-müßt
-nach
-nachdem
-nein
-nicht
-nun
-oder
-seid
-sein
-seine
-sich
-sie
-sind
-soll
-sollen
-sollst
-sollt
-sonst
-soweit
-sowie
-und
-unser
-unsere
-unter
-vom
-von
-vor
-wann
-warum
-was
-weiter
-weitere
-wenn
-wer
-werde
-werden
-werdet
-weshalb
-wie
-wieder
-wieso
-wir
-wird
-wirst
-wo
-woher
-wohin
-zu
-zum
-zur
-über
diff --git a/data/languages/stopwords.en b/data/languages/stopwords.en
deleted file mode 100644
index c5133a7b4..000000000
--- a/data/languages/stopwords.en
+++ /dev/null
@@ -1,743 +0,0 @@
-a
-a's
-able
-about
-above
-according
-accordingly
-across
-actually
-after
-afterwards
-again
-against
-ain't
-all
-allow
-allows
-almost
-alone
-along
-already
-also
-although
-always
-am
-among
-amongst
-an
-and
-another
-any
-anybody
-anyhow
-anyone
-anything
-anyway
-anyways
-anywhere
-apart
-appear
-appreciate
-appropriate
-are
-aren't
-around
-as
-aside
-ask
-asking
-associated
-at
-auto
-available
-away
-awfully
-b
-be
-became
-because
-become
-becomes
-becoming
-been
-before
-beforehand
-begin
-behind
-being
-believe
-below
-beside
-besides
-best
-better
-between
-beyond
-both
-break
-brief
-but
-by
-c
-c'mon
-c's
-came
-can
-can't
-cannot
-cant
-case
-cause
-causes
-certain
-certainly
-changes
-char
-class
-clearly
-co
-com
-come
-comes
-concerning
-consequently
-consider
-considering
-const
-contain
-containing
-contains
-continue
-corresponding
-could
-couldn't
-course
-currently
-d
-definitely
-described
-despite
-did
-didn't
-different
-do
-does
-doesn't
-doing
-don't
-done
-double
-down
-downwards
-during
-e
-each
-edu
-eg
-eight
-either
-else
-elsewhere
-end
-enough
-entirely
-enum
-especially
-et
-etc
-even
-ever
-every
-everybody
-everyone
-everything
-everywhere
-ex
-exactly
-example
-except
-f
-false
-far
-few
-fifth
-first
-five
-float
-followed
-following
-follows
-for
-former
-formerly
-forth
-four
-from
-further
-furthermore
-g
-get
-gets
-getting
-given
-gives
-go
-goes
-going
-gone
-got
-gotten
-greetings
-h
-had
-hadn't
-happens
-hardly
-has
-hasn't
-have
-haven't
-having
-he
-he's
-hello
-help
-hence
-her
-here
-here's
-hereafter
-hereby
-herein
-hereupon
-hers
-herself
-hi
-him
-himself
-his
-hither
-home
-hopefully
-how
-howbeit
-however
-i
-i'd
-i'll
-i'm
-i've
-ie
-if
-ignored
-immediate
-in
-inasmuch
-inc
-include
-indeed
-indicate
-indicated
-indicates
-inner
-insofar
-instead
-int
-into
-inward
-is
-isn't
-it
-it'd
-it'll
-it's
-its
-itself
-j
-just
-k
-keep
-keeps
-kept
-know
-knows
-known
-l
-last
-lately
-later
-latter
-latterly
-least
-less
-lest
-let
-let's
-like
-liked
-likely
-little
-long
-look
-looking
-looks
-ltd
-m
-mainly
-many
-may
-maybe
-me
-mean
-meanwhile
-merely
-might
-more
-moreover
-most
-mostly
-much
-must
-my
-myself
-n
-name
-namely
-nd
-near
-nearly
-necessary
-need
-needs
-neither
-never
-nevertheless
-new
-next
-nine
-no
-nobody
-non
-none
-noone
-nor
-normally
-not
-nothing
-novel
-now
-nowhere
-o
-obviously
-of
-off
-often
-oh
-ok
-okay
-old
-on
-once
-one
-ones
-only
-onto
-or
-other
-others
-otherwise
-ought
-our
-ours
-ourselves
-out
-outside
-over
-overall
-own
-p
-particular
-particularly
-per
-perhaps
-placed
-please
-plus
-possible
-presumably
-probably
-provides
-q
-que
-quite
-qv
-r
-rather
-rd
-re
-really
-reasonably
-regarding
-regardless
-regards
-relatively
-respectively
-return
-right
-s
-said
-same
-saw
-say
-saying
-says
-second
-secondly
-see
-seeing
-seem
-seemed
-seeming
-seems
-seen
-self
-selves
-sensible
-sent
-serious
-seriously
-seven
-several
-shall
-she
-should
-shouldn't
-since
-six
-so
-some
-somebody
-somehow
-someone
-something
-sometime
-sometimes
-somewhat
-somewhere
-soon
-sorry
-specified
-specify
-specifying
-static
-still
-struct
-sub
-such
-sup
-sure
-switch
-t
-t's
-take
-taken
-tell
-tends
-th
-than
-thank
-thanks
-thanx
-that
-that's
-thats
-the
-their
-theirs
-them
-themselves
-then
-thence
-there
-there's
-thereafter
-thereby
-therefore
-therein
-theres
-thereupon
-these
-they
-they'd
-they'll
-they're
-they've
-think
-third
-this
-thorough
-thoroughly
-those
-though
-three
-through
-throughout
-thru
-thus
-to
-together
-too
-took
-toward
-towards
-tried
-tries
-true
-truly
-try
-trying
-twice
-two
-type
-typedef
-u
-un
-under
-unfortunately
-unless
-unlikely
-unsigned
-until
-unto
-up
-upon
-us
-use
-used
-useful
-uses
-using
-usually
-uucp
-v
-value
-various
-very
-via
-viz
-vs
-w
-want
-wants
-was
-wasn't
-way
-we
-we'd
-we'll
-we're
-we've
-welcome
-well
-went
-were
-weren't
-what
-what's
-whatever
-when
-whence
-whenever
-where
-where's
-whereafter
-whereas
-whereby
-wherein
-whereupon
-wherever
-whether
-which
-while
-whither
-who
-who's
-whoever
-whole
-whom
-whose
-why
-will
-willing
-wish
-with
-within
-without
-won't
-wonder
-would
-would
-wouldn't
-x
-y
-yes
-yet
-you
-you'd
-you'll
-you're
-you've
-your
-yours
-yourself
-yourselves
-z
-zero
-home
-if
-else
-elseif
-then
-for
-next
-case
-and
-assert
-def
-del
-elif
-exec
-from
-global
-import
-uses
-lambda
-not
-or
-pass
-print
-printf
-numeric
-array
-input
-output
-range
-type
-zero
-try
-catch
-except
-finally
-continue
-const
-abstract
-struct
-true
-false
-new
-throw
-raise
-this
-delete
-inline
-operator
-template
-virtual
-dynamic
-break
-asm
-auto
-enum
-goto
-long
-register
-return
-short
-static
-sizeof
-typedef
-union
-unsigned
-select
-int
-integer
-char
-float
-double
-single
-begin
-end
-while
-class
-void
-data
-gboolean
-gpointer
-gchar
-gint
-guint
-glong
-guint32
-gint32
-gsize
-lib
-define
-function
-procedure
-set
-get
-result
-using
-internal
-interface
-delegate
-base
-byte
-decimal
-event
-explicit
-foreach
-lock
-unlock
-namespace
-ref
-readonly
-object
-out
-params
-typeof
-uint
-ulong
-public
-private
-protected
-list
-index
-count
-add
-ifdef
-ifndef
-else
-http
-include
-www
-property
-read
-write
-declare
-exit
-make
-error
-bool
-key
-extern
-string
-length
-default
-close
-open
-publish
-fit
-rght
-local
diff --git a/data/languages/stopwords.es b/data/languages/stopwords.es
deleted file mode 100644
index 90a366aee..000000000
--- a/data/languages/stopwords.es
+++ /dev/null
@@ -1,178 +0,0 @@
-un
-una
-unas
-unos
-uno
-sobre
-todo
-también
-tras
-otro
-algún
-alguno
-alguna
-algunos
-algunas
-ser
-es
-soy
-eres
-somos
-sois
-estoy
-esta
-estamos
-estais
-estan
-como
-en
-para
-atras
-porque
-por qué
-estado
-estaba
-ante
-antes
-siendo
-ambos
-pero
-por
-poder
-puede
-puedo
-podemos
-podeis
-pueden
-fui
-fue
-fuimos
-fueron
-hacer
-hago
-hace
-hacemos
-haceis
-hacen
-cada
-fin
-incluso
-primero
-desde
-conseguir
-consigo
-consigue
-consigues
-conseguimos
-consiguen
-ir
-voy
-va
-vamos
-vais
-van
-vaya
-gueno
-ha
-tener
-tengo
-tiene
-tenemos
-teneis
-tienen
-el
-la
-lo
-las
-los
-su
-aqui
-mio
-tuyo
-ellos
-ellas
-nos
-nosotros
-vosotros
-vosotras
-si
-dentro
-solo
-solamente
-saber
-sabes
-sabe
-sabemos
-sabeis
-saben
-ultimo
-largo
-bastante
-haces
-muchos
-aquellos
-aquellas
-sus
-entonces
-tiempo
-verdad
-verdadero
-verdadera
-cierto
-ciertos
-cierta
-ciertas
-intentar
-intento
-intenta
-intentas
-intentamos
-intentais
-intentan
-dos
-bajo
-arriba
-encima
-usar
-uso
-usas
-usa
-usamos
-usais
-usan
-emplear
-empleo
-empleas
-emplean
-ampleamos
-empleais
-valor
-muy
-era
-eras
-eramos
-eran
-modo
-bien
-cual
-cuando
-donde
-mientras
-quien
-con
-entre
-sin
-trabajo
-trabajar
-trabajas
-trabaja
-trabajamos
-trabajais
-trabajan
-podria
-podrias
-podriamos
-podrian
-podriais
-yo
-aquel
diff --git a/data/languages/stopwords.fi b/data/languages/stopwords.fi
deleted file mode 100644
index 3b468b32c..000000000
--- a/data/languages/stopwords.fi
+++ /dev/null
@@ -1,68 +0,0 @@
-alla
-ansiosta
-ehkä
-ei
-enemmän
-ennen
-etessa
-f
-haikki
-he
-hitaasti
-hoikein
-hyvin
-hän
-ilman
-ja
-jos
-jälkeen
-kanssa
-kaukana
-kenties
-keskellä
-kesken
-koskaan
-kuinkan
-kukka
-kylliksi
-kyllä
-liian
-lla
-lla
-luona
-lähellä
-läpi
-me
-miksi
-mikä
-milloin
-milloinkan
-minä
-missä
-miten
-nopeasti
-nyt
-oikea
-oikealla
-paljon
-siellä
-sinä
-ssa
-sta
-suoraan
-tai
-takana
-takia
-tarpeeksi
-te
-tässä
-ulkopuolella
-vahemmän
-vasen
-vasenmalla
-vastan
-vielä
-vieressä
-vähän
-yhdessä
-ylös
diff --git a/data/languages/stopwords.fr b/data/languages/stopwords.fr
deleted file mode 100644
index a02063baf..000000000
--- a/data/languages/stopwords.fr
+++ /dev/null
@@ -1,145 +0,0 @@
-au
-aux
-avec
-ce
-ces
-dans
-de
-des
-du
-elle
-en
-et
-eux
-il
-je
-la
-le
-leur
-lui
-ma
-mais
-me
-même
-mes
-moi
-mon
-ne
-nos
-notre
-nous
-on
-ou
-par
-pas
-pour
-qu
-que
-qui
-sa
-se
-ses
-son
-sur
-ta
-te
-tes
-toi
-ton
-tu
-un
-une
-vos
-votre
-vous
-été
-étée
-étées
-étés
-étant
-étante
-étants
-étantes
-suis
-es
-est
-sommes
-êtes
-sont
-serai
-seras
-sera
-serons
-serez
-seront
-serais
-serait
-serions
-seriez
-seraient
-étais
-était
-étions
-étiez
-étaient
-fus
-fut
-fûmes
-fûtes
-furent
-sois
-soit
-soyons
-soyez
-soient
-fusse
-fusses
-fût
-fussions
-fussiez
-fussent
-ayant
-ayante
-ayantes
-ayants
-eu
-eue
-eues
-eus
-ai
-as
-avons
-avez
-ont
-aurai
-auras
-aura
-aurons
-aurez
-auront
-aurais
-aurait
-aurions
-auriez
-auraient
-avais
-avait
-avions
-aviez
-avaient
-eut
-eûmes
-eûtes
-eurent
-aie
-aies
-ait
-ayons
-ayez
-aient
-eusse
-eusses
-eût
-eussions
-eussiez
-eussent
diff --git a/data/languages/stopwords.hu b/data/languages/stopwords.hu
deleted file mode 100644
index e9cd016a1..000000000
--- a/data/languages/stopwords.hu
+++ /dev/null
@@ -1,403 +0,0 @@
-a
-á
-ahogy
-ahol
-aki
-akik
-akkor
-alatt
-által
-általában
-amely
-amelyek
-amelyekben
-amelyeket
-amelyet
-amelynek
-ami
-amit
-amolyan
-amp
-amíg
-amikor
-át
-abban
-ahhoz
-annak
-arra
-arról
-az
-azok
-azon
-azt
-azzal
-azért
-aztán
-azután
-azonban
-b
-bár
-be
-belül
-benne
-c
-cikk
-cikkek
-cikkeket
-csak
-d
-de
-e
-é
-eddig
-egész
-egy
-egyes
-egyetlen
-egyéb
-egyik
-egyre
-ekkor
-el
-elég
-ellen
-elő
-először
-előtt
-első
-én
-éppen
-ebben
-ehhez
-emilyen
-ennek
-erre
-ez
-ezt
-ezek
-ezen
-ezzel
-ezért
-és
-f
-fel
-felé
-g
-h
-hanem
-hiszen
-hogy
-hogyan
-i
-í
-igen
-így
-illetve
-ill.
-ill
-ilyen
-ilyenkor
-is
-ison
-ismét
-itt
-j
-jó
-jól
-jobban
-k
-kell
-kellett
-keresztül
-keressünk
-ki
-kívül
-között
-közül
-l
-legalább
-lehet
-lehetett
-legyen
-lenne
-lenni
-lesz
-lett
-m
-maga
-magát
-majd
-majd
-már
-más
-másik
-meg
-még
-mellett
-mert
-mely
-melyek
-mi
-mit
-míg
-miért
-milyen
-mikor
-minden
-mindent
-mindenki
-mindig
-mint
-mintha
-mivel
-most
-n
-nagy
-nagyobb
-nagyon
-ne
-néha
-nekem
-neki
-nem
-néhány
-nélkül
-nincs
-o
-ó
-olyan
-ott
-össze
-ö
-ő
-ők
-őket
-p
-pedig
-persze
-q
-r
-rá
-s
-saját
-sem
-semmi
-sok
-sokat
-sokkal
-sz
-számára
-szemben
-szerint
-szinte
-t
-talán
-tehát
-teljes
-tovább
-továbbá
-több
-u
-ú
-úgy
-ugyanis
-új
-újabb
-újra
-után
-utána
-utolsó
-ü
-ű
-v
-vagy
-vagyis
-valaki
-valamely
-valami
-valamint
-való
-vagyok
-van
-vannak
-volt
-voltam
-voltak
-voltunk
-vissza
-vele
-viszont
-volna
-számolnak
-szólnak
-szól
-w
-x
-y
-z
-zs
-a
-ahogy
-ahol
-aki
-akkor
-alatt
-általában
-által
-amely
-amíg
-amikor
-ami
-amolyan
-arra
-át
-az
-azért
-azonban
-azon
-aztán
-azt
-azután
-azzal
-bár
-be
-belül
-benne
-cikk
-csak
-de
-eddig
-egész
-egy
-egyéb
-egyes
-egyetlen
-egyik
-egyre
-ekkor
-el
-elég
-ellen
-elő
-először
-előtt
-első
-emilyen
-én
-éppen
-erre
-és
-e
-ez
-ezen
-ezért
-ezzel
-fel
-felé
-hanem
-hiszen
-hogy
-hogyan
-igen
-így
-ill.
-illetve
-ill
-ilyen
-ilyenkor
-ismét
-ison
-itt
-jó
-jobban
-jól
-kell
-keres
-keresztül
-ki
-kívül
-között
-közül
-legalább
-legyen
-lehet
-lenni
-lett
-maga
-maga
-majd
-már
-más
-másik
-még
-meg
-mellett
-mely
-mert
-miért
-míg
-mikor
-milyen
-minden
-mindenki
-mindig
-mi
-mint
-mintha
-mivel
-most
-nagy
-nagyobb
-nagyon
-ne
-néha
-néhány
-neki
-nélkül
-nem
-nincs
-ők
-olyan
-ő
-össze
-ott
-pedig
-persze
-rá
-saját
-s
-sem
-semmi
-sokkal
-sok
-számára
-számol
-szemben
-szerint
-szinte
-szól
-talán
-tehát
-teljes
-továbbá
-tovább
-úgy
-ugyanis
-új
-újabb
-újra
-utána
-után
-utolsó
-vagy
-vagyis
-valaki
-valamely
-valami
-valamint
-való
-van
-vissza
-viszont
-volt
-
diff --git a/data/languages/stopwords.it b/data/languages/stopwords.it
deleted file mode 100644
index 992b33510..000000000
--- a/data/languages/stopwords.it
+++ /dev/null
@@ -1,134 +0,0 @@
-a
-adesso
-ai
-al
-alla
-allo
-allora
-altre
-altri
-altro
-anche
-ancora
-avere
-aveva
-avevano
-ben
-buono
-che
-chi
-cinque
-comprare
-con
-consecutivi
-consecutivo
-cosa
-cui
-da
-del
-della
-dello
-dentro
-deve
-devo
-di
-doppio
-due
-e
-ecco
-fare
-fine
-fino
-fra
-gente
-giu
-ha
-hai
-hanno
-ho
-il
-indietro
-invece
-io
-la
-lavoro
-le
-lei
-lo
-loro
-lui
-lungo
-ma
-me
-meglio
-molta
-molti
-molto
-nei
-nella
-no
-noi
-nome
-nostro
-nove
-nuovi
-nuovo
-o
-oltre
-ora
-otto
-peggio
-pero
-persone
-piu
-poco
-primo
-promesso
-qua
-quarto
-quasi
-quattro
-quello
-questo
-qui
-quindi
-quinto
-rispetto
-sara
-secondo
-sei
-sembra
-sembrava
-senza
-sette
-sia
-siamo
-siete
-solo
-sono
-sopra
-soprattutto
-sotto
-stati
-stato
-stesso
-su
-subito
-sul
-sulla
-tanto
-te
-tempo
-terzo
-tra
-tre
-triplo
-ultimo
-un
-una
-uno
-va
-vai
-voi
-volte
-vostro
diff --git a/data/languages/stopwords.nb b/data/languages/stopwords.nb
deleted file mode 100644
index bb9edb15e..000000000
--- a/data/languages/stopwords.nb
+++ /dev/null
@@ -1,117 +0,0 @@
-alle
-andre
-arbeid
-av
-begge
-bort
-bra
-bruke
-da
-denne
-der
-deres
-det
-din
-disse
-du
-eller
-en
-ene
-eneste
-enhver
-enn
-er
-et
-folk
-for
-fordi
-forsÛke
-fra
-fÃ…
-fÛr
-fÛrst
-gjorde
-gjÛre
-god
-gÃ…
-ha
-hadde
-han
-hans
-hennes
-her
-hva
-hvem
-hver
-hvilken
-hvis
-hvor
-hvordan
-hvorfor
-ikke
-inn
-innen
-kan
-kunne
-lage
-lang
-lik
-like
-makt
-mange
-med
-meg
-meget
-men
-mens
-mer
-mest
-min
-mye
-mÃ…
-mÃ…te
-navn
-nei
-ny
-nÃ…
-nÃ…r
-og
-ogsÃ…
-om
-opp
-oss
-over
-part
-punkt
-pÃ…
-rett
-riktig
-samme
-sant
-si
-siden
-sist
-skulle
-slik
-slutt
-som
-start
-stille
-tid
-til
-tilbake
-tilstand
-under
-ut
-uten
-var
-ved
-verdi
-vi
-vil
-ville
-vite
-vÃ…r
-vÖre
-vÖrt
-Ã…
diff --git a/data/languages/stopwords.nl b/data/languages/stopwords.nl
deleted file mode 100644
index 300c36833..000000000
--- a/data/languages/stopwords.nl
+++ /dev/null
@@ -1,48 +0,0 @@
-aan
-af
-al
-als
-bij
-dan
-dat
-die
-dit
-een
-en
-er
-had
-heb
-hem
-het
-hij
-hoe
-hun
-ik
-in
-is
-je
-kan
-me
-men
-met
-mij
-nog
-nu
-of
-ons
-ook
-te
-tot
-uit
-van
-was
-wat
-we
-wel
-wij
-zal
-ze
-zei
-zij
-zo
-zou
diff --git a/data/languages/stopwords.pt b/data/languages/stopwords.pt
deleted file mode 100644
index 66d557f9c..000000000
--- a/data/languages/stopwords.pt
+++ /dev/null
@@ -1,147 +0,0 @@
-último
-é
-acerca
-agora
-algmas
-alguns
-ali
-ambos
-antes
-apontar
-aquela
-aquelas
-aquele
-aqueles
-aqui
-atrás
-bem
-bom
-cada
-caminho
-cima
-com
-como
-comprido
-conhecido
-corrente
-das
-debaixo
-dentro
-desde
-desligado
-deve
-devem
-deverá
-direita
-diz
-dizer
-dois
-dos
-e
-ela
-ele
-eles
-em
-enquanto
-então
-está
-estão
-estado
-estar
-estará
-este
-estes
-esteve
-estive
-estivemos
-estiveram
-eu
-fará
-faz
-fazer
-fazia
-fez
-fim
-foi
-fora
-horas
-iniciar
-inicio
-ir
-irá
-ista
-iste
-isto
-ligado
-maioria
-maiorias
-mais
-mas
-mesmo
-meu
-muito
-muitos
-nós
-não
-nome
-nosso
-novo
-o
-onde
-os
-ou
-outro
-para
-parte
-pegar
-pelo
-pessoas
-pode
-poderá
-podia
-por
-porque
-povo
-promeiro
-quê
-qual
-qualquer
-quando
-quem
-quieto
-são
-saber
-sem
-ser
-seu
-somente
-têm
-tal
-também
-tem
-tempo
-tenho
-tentar
-tentaram
-tente
-tentei
-teu
-teve
-tipo
-tive
-todos
-trabalhar
-trabalho
-tu
-um
-uma
-umas
-uns
-usa
-usar
-valor
-veja
-ver
-verdade
-verdadeiro
-você
diff --git a/data/languages/stopwords.ru b/data/languages/stopwords.ru
deleted file mode 100644
index dc820c0e9..000000000
--- a/data/languages/stopwords.ru
+++ /dev/null
@@ -1,126 +0,0 @@
-ÂÅÚ
-ÂÃÌÅÅ
-ÂÕÄÅÃ
-ÂÕÄÅÔ
-ÂÕÄÅÔÅ
-ÂÕÄÅÛØ
-ÂÕÄÕ
-ÂÕÄÕÔ
-ÂÙ
-ÂÙÌ
-ÂÙÌÃ
-ÂÙÌÉ
-ÂÙÌÃ
-ÂÙÔØ
-×
-×ÃÃ
-×ÃÓ
-×ÅÓØ
-×Ã
-×ÃÔ
-×ÓÅ
-×ÓÅÇÃ
-×ÓÅÈ
-×Ù
-ÇÄÅ
-ÄÃ
-ÄÃÖÅ
-ÄÌÑ
-ÄÃ
-ÅÇÃ
-Ã…Ã…
-ÅÓÌÉ
-ÅÓÔØ
-Ã…ÃÃ…
-ÖÅ
-ÚÃ
-ÚÄÅÓØ
-É
-ÉÚ
-ÉÌÉ
-ÉÃ
-ÉÈ
-Ë
-ËÃË
-ËÃ
-ËÃÇÄÃ
-ËÔÃ
-ÌÉ
-ÌÉÂÃ
-ÃÃŽÃ…
-ÃÃÖÅÔ
-ÃÙ
-ÃŽÃ
-ÃŽÃÄÃ
-ÃŽÃÛ
-ÃŽÃ…
-ÎÅÇÃ
-ÃŽÃ…Ã…
-ÎÅÔ
-ÎÉ
-ÎÉÈ
-ÃŽÃ
-ÎÕ
-ÃÂ
-ÃÄÎÃËÃ
-ÃÃŽ
-ÃÃŽÃ
-ÃÎÉ
-ÃÃŽÃ
-ÃÔ
-ÃÞÅÎØ
-ÃÃ
-ÃÃÄ
-ÃÒÉ
-Ó
-ÓÃ
-ÔÃË
-ÔÃËÃÑ
-ÔÃËÖÅ
-ÔÃËÉÅ
-ÔÃËÉÃ
-ÔÃËÉÃÉ
-ÔÃËÉÈ
-ÔÃËÃÇÃ
-ÔÃËÃÃ…
-ÔÃËÃÊ
-ÔÃËÃÃ
-ÔÃËÃÃÕ
-ÔÃËÃÀ
-ÔÃËÕÀ
-ÔÃÃ
-ÔÅ
-ÔÅÃ
-ÔÅÃÃ
-ÔÅÃÃÃ
-ÔÅÃÃÃÉ
-ÔÅÃÃÈ
-ÔÅÃÃ…
-ÔÅÃÃÊ
-ÔÅÃÃÀ
-ÔÅÃÕ
-ÔÅÃÙ
-ÔÃ
-ÔÃÇÃ
-ÔÃÖÅ
-ÔÃÊ
-ÔÃÌØËÃ
-ÔÃÃ
-ÔÙ
-Õ
-ÕÖ
-ÕÖÅ
-ÈÃÔÑ
-ÞÅÇÃ
-ÞÅÊ
-ÞÅÃ
-ÞÔÃ
-ÞÔÃÂÙ
-ÞØÅ
-ÞØÑ
-ÜÔÃ
-ÜÔÉ
-ÜÔÃ
-Ñ
diff --git a/data/languages/stopwords.sv b/data/languages/stopwords.sv
deleted file mode 100644
index 0f303130e..000000000
--- a/data/languages/stopwords.sv
+++ /dev/null
@@ -1,104 +0,0 @@
-ab
-aldrig
-all
-alla
-alltid
-att
-av
-avser
-avses
-bakom
-bra
-bredvid
-de
-dem
-den
-denna
-deras
-dess
-det
-detta
-du
-dä
-där
-efter
-eftersom
-efterät
-ej
-eller
-emot
-en
-ett
-fastän
-fort
-framför
-från
-för
-genom
-gott
-hamske
-han
-hellre
-hon
-hos
-hur
-här
-i
-in
-ingen
-innan
-inte
-ja
-jag
-lite
-långsamt
-långt
-man
-med
-medan
-mellan
-mer
-mera
-mindre
-mot
-myckett
-nej
-nere
-ni
-nu
-när
-nära
-och
-oksa
-om
-på
-sin
-skall
-som
-så
-sådan
-till
-tillräckligt
-tillsammans
-trots
-under
-uppe
-ut
-utan
-utom
-vad
-var
-varför
-vart
-varthän
-vem
-vems
-vi
-vid
-vilken
-väl
-än
-ännu
-är
-Ã¥nyo
-över
diff --git a/data/services/Makefile.am b/data/services/Makefile.am
deleted file mode 100644
index 7b7763725..000000000
--- a/data/services/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-configdir = $(datadir)/tracker/services
-
-config_DATA = application.metadata \
- audio.metadata \
- default.metadata \
- document.metadata \
- email.metadata \
- file.metadata \
- image.metadata \
- video.metadata \
- default.service
-
-EXTRA_DIST = $(config_DATA)
diff --git a/data/services/application.metadata b/data/services/application.metadata
deleted file mode 100644
index 87d0b41df..000000000
--- a/data/services/application.metadata
+++ /dev/null
@@ -1,56 +0,0 @@
-[App:Name]
-DisplayName=Name
-Description=Application name
-DataType=Indexable
-Weight=25
-Filtered=false
-
-
-[App:DisplayName]
-DisplayName=Display name
-Description=Application display name
-DataType=Indexable
-Weight=10
-Filtered=false
-
-[App:GenericName]
-DisplayName=Generic name
-Description=Application generic name
-DataType=Indexable
-Weight=10
-Filtered=false
-
-[App:Comment]
-DisplayName=Comments
-Description=Application comments
-DataType=Indexable
-Weight=5
-
-
-[App:Exec]
-DisplayName=Name
-Description=Application name
-DataType=String
-Weight=1
-
-[App:Icon]
-DisplayName=Icon
-Description=Application icon name
-DataType=String
-Weight=1
-
-[App:MimeType]
-DisplayName=Mime type
-Description=Application supported mime types
-DataType=Keyword
-Weight=1
-MultipleValues=true
-
-[App:Categories]
-DisplayName=Categories
-Description=Application categories
-DataType=Keyword
-Weight=5
-MultipleValues=true
-
-
diff --git a/data/services/audio.metadata b/data/services/audio.metadata
deleted file mode 100644
index 6c7b0e5be..000000000
--- a/data/services/audio.metadata
+++ /dev/null
@@ -1,173 +0,0 @@
-[Audio:Title]
-DisplayName=Title
-Description=Track title
-DataType=Indexable
-Parent=DC:Title
-Weight=20
-Filtered=false
-
-[Audio:Artist]
-DisplayName=Artist
-Description=Track artist
-DataType=Indexable
-Parent=DC:Creator
-Weight=15
-Filtered=false
-
-[Audio:Album]
-DisplayName=Title
-Description=Track title
-DataType=Indexable
-Weight=10
-Filtered=false
-
-[Audio:Genre]
-DisplayName=Genre
-Description=The type or genre of the music track
-DataType=Keyword
-Parent=DC:Type
-Weight=5
-MultipleValues=true
-
-[Audio:Duration]
-DisplayName=Duration
-Description=The length in seconds of the music track
-DataType=Integer
-
-[Audio:ReleaseDate]
-DisplayName=Release date
-Description=The date the track was released
-DataType=DateTime
-Parent=DC:Date
-
-[Audio:AlbumArtist]
-DisplayName=Album artist
-Description=The artist of the track's album
-DataType=Indexable
-Parent=DC:Creator
-Weight=10
-Filtered=false
-
-[Audio:AlbumTrackCount]
-DisplayName=Album track count
-Description=The number of tracks in the album
-DataType=Integer
-
-[Audio:TrackNo]
-DisplayName=Track number
-Description=The position of the track relative to the others
-DataType=Integer
-
-[Audio:DiscNo]
-DisplayName=Disc number
-Description=On which disc the track is located
-DataType=Integer
-
-[Audio:Performer]
-DisplayName=Performer
-Description=The individual or group performing the track
-DataType=Indexable
-Weight=5
-Parent=DC:Contributor
-MultipleValues=true
-
-[Audio:TrackGain]
-DisplayName=Track gain
-Description=The amount of gain needed for the track
-DataType=Double
-
-[Audio:PeakTrackGain]
-DisplayName=Peak track gain
-Description=The peak amount of gain needed for the track
-DataType=Double
-
-[Audio:AlbumGain]
-DisplayName=Album gain
-Description=The amount of gain needed for the entire album
-DataType=Double
-
-[Audio:AlbumPeakGain]
-DisplayName=Peak album gain
-Description=The peak amount of gain needed for the entire album
-DataType=Double
-
-[Audio:Comment]
-DisplayName=Comments
-Description=General purpose comments
-DataType=Indexable
-Weight=1
-Parent=DC:Description
-
-[Audio:Codec]
-DisplayName=Codec
-Description=Codec name
-DataType=Indexable
-Weight=1
-
-[Audio:CodecVersion]
-DisplayName=Codec version
-Description=Codec version string
-DataType=String
-
-[Audio:Samplerate]
-DisplayName=Sample rate
-Description=Sample rate of track in Hz
-DataType=Double
-
-[Audio:Bitrate]
-DisplayName=Bitrate
-Description=Bitrate in bits/sec
-DataType=Double
-
-[Audio:Channels]
-DisplayName=Channels
-Description=The number of channels in the track
-DataType=Integer
-
-[Audio:LastPlay]
-DisplayName=Last Played
-Description=The date and time the track was last played
-DataType=DateTime
-Parent=DC:Date
-
-[Audio:PlayCount]
-DisplayName=Play Count
-Description=Number of times the track has been played
-DataType=Integer
-
-[Audio:DateAdded]
-DisplayName=Date Added
-Description=Date track was first added
-DataType=DateTime
-
-[Audio:Lyrics]
-DisplayName=Lyrics
-Description=Lyrics of the track
-DataType=Indexable
-weight=1
-
-[Audio:MBAlbumID]
-DisplayName=MusicBrainz album ID
-Description=The MusicBrainz album ID for the track
-DataType=String
-Parent=DC:Identifier
-
-[Audio:MBArtistID]
-DisplayName=MusicBrainz artist ID
-Description=The MusicBrainz artist ID for the track
-DataType=String
-Parent=DC:Identifier
-
-[Audio:MBAlbumArtistID]
-DisplayName=MusicBrainz album artist ID
-Description=The MusicBrainz album artist ID for the track
-DataType=String
-Parent=DC:Identifier
-
-[Audio:MBTrackID]
-DisplayName=MusicBrainz track ID
-Description=The MusicBrainz track ID
-DataType=String
-Parent=DC:Identifier
-
-
diff --git a/data/services/default.metadata b/data/services/default.metadata
deleted file mode 100644
index 2360bf57b..000000000
--- a/data/services/default.metadata
+++ /dev/null
@@ -1,113 +0,0 @@
-[DC:Contributor]
-Abstract=true
-DisplayName=Contributor
-Description=Contributors to the resource (other than the authors)
-DataType=Indexable
-
-[DC:Coverage]
-Abstract=true
-DisplayName=Coverage
-Description=The extent or scope of the resource
-DataType=Indexable
-
-[DC:Creator]
-Abstract=true
-DisplayName=Author
-Description=The authors of the resource
-DataType=Indexable
-
-[DC:Date]
-Abstract=true
-DisplayName=Date
-Description=Date that something interesting happened to the resource
-DataType=DateTime
-
-[DC:Description]
-Abstract=true
-DisplayName=Description
-Description=A textual description of the content of the resource
-DataType=Indexable
-
-[DC:Format]
-Abstract=true
-DisplayName=Format
-Description=The file format(mime) or type used when saving the resource
-DataType=Keyword
-
-[DC:Identifier]
-Abstract=true
-DisplayName=Identifier
-Description=Unique identifier of the resource
-DataType=Indexable
-
-[DC:Language]
-Abstract=true
-DisplayName=Langauge
-Description=Language used in the resource
-DataType=Indexable
-
-[DC:Publishers]
-Abstract=true
-DisplayName=Publishers
-Description=Publishers of the resource
-DataType=Indexable
-
-[DC:Relation]
-Abstract=true
-DisplayName=Relationship
-Description=Relationships to other resources
-DataType=Indexable
-
-[DC:Rights]
-Abstract=true
-DisplayName=Rights
-Description=Informal rights statement of the resource
-DataType=Indexable
-
-[DC:Source]
-Abstract=true
-DisplayName=Source
-Description=Unique identifier of the work from which this resource was derived
-DataType=Indexable
-
-[DC:Subject]
-Abstract=true
-DisplayName=Subject
-Description=specifies the topic of the content of the resource
-DataType=Indexable
-
-[DC:Keywords]
-Abstract=true
-DisplayName=Keywords
-Description=Keywords that are used to tag a resource
-DataType=Keyword
-
-[DC:Title]
-Abstract=true
-DisplayName=Title
-Description=specifies the topic of the content of the resource
-DataType=Indexable
-
-[DC:Type]
-Abstract=true
-DisplayName=Type
-Description=specifies the type of the content of the resource
-DataType=Indexable
-
-[User:Rank]
-DisplayName=Rank
-Description=User settable rank or score of the resource
-FieldName=Rank
-DataType=Integer
-Embedded=false
-
-[User:Keywords]
-DisplayName=Keywords
-Description=User settable keywords which are used to tag a resource
-Parent=DC:Keywords
-DataType=Keyword
-Weight=50
-Embedded=false
-MultipleValues=true
-
-
diff --git a/data/services/default.service b/data/services/default.service
deleted file mode 100644
index fcaeabe76..000000000
--- a/data/services/default.service
+++ /dev/null
@@ -1,288 +0,0 @@
-[Files]
-DisplayName=All Files
-Description=All files in the filesystem
-UIVisible=true
-Icon=system-file-manager
-UIView=icon
-ShowServiceFiles=true
-ShowServiceDirectories=true
-
-[Folders]
-DisplayName=Folders
-Description=Folders in the filesystem
-Parent=Files
-UIVisible=true
-UIView=icon
-Icon=folder
-ShowServiceFiles=true
-ShowServiceDirectories=true
-
-[Documents]
-DisplayName=Documents
-Description=Office and PDF based files
-Parent=Files
-UIVisible=true
-Icon=x-office-document
-KeyMetadata1=Doc:Title
-KeyMetadata2=Doc:Author
-KeyMetadata3=Doc:Created
-TabularMetadata=File:Name;File:Mime;Doc:Title;Doc:Author;File:Size;File:Modified;Doc:Created;
-TileMetadata=Doc:Title;Doc:Subject;Doc:Author;Doc:Created;Doc:PageCount;File:Size;
-ContentMetadata=File:Contents
-Mimes=application/rtf;text/richtext;application/msword;application/pdf;application/postscript;application/x-dvi;application/vnd.ms-excel;vnd.ms-powerpoint;application/x-abiword;text/html;text/sgml;text/x-tex;application/x-mswrite;application/x-applix-word;application/docbook+xml;application/x-kword;application/x-kword-crypt;application/x-lyx;application/vnd.lotus-1-2-3;application/x-applix-spreadsheet;application/x-gnumeric;application/x-kspread;application/x-kspread-crypt;application/x-quattropro;application/x-sc;application/x-siag;application/x-magicpoint;application/x-kpresenter;application/illustrator;application/vnd.corel-draw;application/vnd.stardivision.draw;application/vnd.oasis.opendocument.graphics;application/x-dia-diagram;application/x-karbon;application/x-killustrator;application/x-kivio;application/x-kontour;application/x-wpg;
-MimePrefixes=application/vnd.oasis.opendocument;application/vnd.sun.xml;application/vnd.stardivision;
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=true
-HasFullText=true
-HasThumbs=true
-
-[WebHistory]
-DisplayName=Web History
-Description=Web History
-UIVisible=true
-Icon=x-office-document
-KeyMetadata1=Doc:Title
-KeyMetadata2=Doc:URL
-KeyMetadata3=Doc:Keywords
-KeyMetadata4=User:Keywords
-TabularMetadata=File:Name;File:Mime;Doc:Title;Doc:URL;Doc:Author;File:Size;File:Modified;Doc:Created;
-TileMetadata=Doc:Title;Doc:URL;Doc:Subject;Doc:Author;Doc:Created;Doc:PageCount;File:Size;
-ShowServiceFiles=false
-ShowServiceDirectories=false
-HasMetadata=true
-HasFullText=true
-HasThumbs=true
-
-
-[Images]
-DisplayName=Images
-Description=Image based files
-Parent=Files
-UIVisible=true
-UIView=icon
-Icon=image-x-generic
-KeyMetadata1=Image:Title
-KeyMetadata2=Image:Height
-KeyMetadata3=Image:Width
-KeyMetadata4=Image:Date
-KeyMetadata5=Image:Software
-KeyMetadata6=Image:Creator
-TabularMetadata=File:Name;Image:Height;Image:Width;Image:Date;File:Modified;Image:Creator;Image:Software;
-TileMetadata=Image:Title;Image:Height;Image:Width;Image:Date;Image:Creator;Image:Software;Image:Comments;
-Mimes=application/vnd.oasis.opendocument.image;application/x-krita;
-MimePrefixes=image/;
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=true
-HasFullText=false
-HasThumbs=true
-
-
-[Music]
-DisplayName=Music
-Description=Music based files
-Parent=Files
-UIVisible=true
-UIView=tabular
-Icon=audio-x-generic
-KeyMetadata1=Audio:Title
-KeyMetadata2=Audio:Artist
-KeyMetadata3=Audio:Album
-KeyMetadata4=Audio:Genre
-KeyMetadata5=Audio:Duration
-KeyMetadata6=Audio:ReleaseDate
-KeyMetadata7=Audio:TrackNo
-KeyMetadata8=Audio:Bitrate
-KeyMetadata9=Audio:PlayCount
-KeyMetadata10=Audio:DateAdded
-KeyMetadata11=Audio:LastPlay
-TabularMetadata=Audio:Title;Audio:Artist;Audio:Album;Audio:Genre;Audio:Duration;Audio:ReleaseDate;
-TileMetadata=Audio:Title;Audio:Artist;Audio:Album;Audio:Genre;Audio:Duration;Audio:ReleaseDate;
-Mimes=application/ogg;
-MimePrefixes=audio/;
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=true
-HasFullText=false
-HasThumbs=false
-
-
-[Videos]
-DisplayName=Videos
-Description=Video based files
-Parent=Files
-UIVisible=true
-UIView=icon
-Icon=video-x-generic
-KeyMetadata1=Video:Title
-KeyMetadata2=Video:Author
-KeyMetadata3=Video:Height
-KeyMetadata4=Video:Width
-KeyMetadata5=Video:Duration
-KeyMetadata6=Audio:Bitrate
-TabularMetadata=File:Name;Video:Title;Video:Author;Video:Height;Video:Width;Video:Duration;Video:Bitrate;
-TileMetadata=Video:Title;Video:Author;Video:Height;Video:Width;Video:Duration;Video:Bitrate;
-MimePrefixes=video/;
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=true
-HasFullText=false
-HasThumbs=true
-
-
-[Text]
-DisplayName=Text
-Description=Text based files
-Parent=Files
-UIVisible=true
-Icon=text-x-generic
-ContentMetadata=File:Contents
-Mimes=text/plain;text/x-authors;text/x-changelog;text/x-copying;text/x-credits;text/x-install;text/x-readme;
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=false
-HasFullText=true
-HasThumbs=false
-
-
-[Development]
-DisplayName=Development
-Description=Development and source code files
-Parent=Files
-UIVisible=true
-Icon=applications-development
-ContentMetadata=File:Contents
-Mimes=application/x-perl;application/x-shellscript;application/x-php;application/x-java;application/x-javascript;application/x-glade;application/x-csh;application/x-class-file;application/x-awk;application/x-asp;application/x-ruby;application/x-m4;text/x-m4;text/x-c++;text/x-adasrc;text/x-c;text/x-c++hdr;text/x-chdr;text/x-csharp;text/x-c++src;text/x-csrc;text/x-dcl;text/x-dsrc;text/x-emacs-lisp;text/x-fortran;text/x-haskell;text/x-literate-haskell;text/x-java;text/x-java-source" ,text/x-makefile;text/x-objcsrc;text/x-pascal;text/x-patch;text/x-python;text/x-scheme;text/x-sql;text/x-tcl;
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=false
-HasFullText=true
-HasThumbs=false
-
-[Other]
-DisplayName=Other Files
-Description=All other files that do not belong in any other category
-Parent=Files
-ShowServiceFiles=true
-ShowServiceDirectories=true
-HasMetadata=true
-HasFullText=true
-HasThumbs=true
-
-[Emails]
-DisplayName=Emails
-Description=All Emails
-UIVisible=true
-UIMetadata1=Email:Subject
-UIMetadata2=Email:Sender
-Icon=stock_mail-open
-TabularMetadata=Email:Sender;Email:Subject;Email:Date;
-TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
-ContentMetadata=Email:Body
-
-[EvolutionEmails]
-DisplayName=Evolution Emails
-Description=Evolution based emails
-Parent=Emails
-ViewerExec=evolution "%1"
-KeyMetadata1=Email:Subject
-KeyMetadata2=Email:Sender
-KeyMetadata3=Email:Date
-TabularMetadata=Email:Sender;Email:Subject;Email:Date;
-TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
-ContentMetadata=Email:Body
-
-[ModestEmails]
-DisplayName=Modest Emails
-Description=Modest based emails
-Parent=Emails
-ViewerExec=modest-open "%1"
-KeyMetadata1=Email:Subject
-KeyMetadata2=Email:Sender
-KeyMetadata3=Email:Date
-TabularMetadata=Email:Sender;Email:Subject;Email:Date;
-TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
-ContentMetadata=Email:Body
-
-[ThunderbirdEmails]
-DisplayName=Thunderbird Emails
-Description=Thunderbird based emails
-Parent=Emails
-ViewerExec=thunderbird -viewtracker "%1"
-KeyMetadata1=Email:Subject
-KeyMetadata2=Email:Sender
-KeyMetadata3=Email:Date
-TabularMetadata=Email:Sender;Email:Subject;Email:Date;
-TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
-ContentMetadata=Email:Body
-
-[KMailEmails]
-DisplayName=KMail Emails
-Description=KMail based emails
-Parent=Emails
-ViewerExec=kmail "%1"
-KeyMetadata1=Email:Subject
-KeyMetadata2=Email:Sender
-KeyMetadata3=Email:Date
-TabularMetadata=Email:Sender;Email:Subject;Email:Date;
-TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
-ContentMetadata=Email:Body
-
-[EmailAttachments]
-DisplayName=Email Attachments
-Description=All files that are attached to an Email
-UIVisible=true
-Icon=stock_attach
-
-[EvolutionAttachments]
-DisplayName=Evolution Email Attachments
-Description=All files that are attached to an Evolution Email
-Parent=EmailAttachments
-Icon=stock_attach
-
-[ModestAttachments]
-DisplayName=Modest Email Attachments
-Description=All files that are attached to an Modest Email
-Parent=EmailAttachments
-Icon=stock_attach
-
-[KMailAttachments]
-DisplayName=KMail Email Attachments
-Description=All files that are attached to an KMail Email
-Parent=EmailAttachments
-Icon=stock_attach
-
-[Conversations]
-DisplayName=Conversations
-Description=Conversation log files
-UIVisible=true
-Icon=stock_help-chat
-ShowServiceFiles=true
-HasMetadata=false
-HasFullText=true
-HasThumbs=false
-
-[GaimConversations]
-DisplayName=Gaim Conversations
-Description=All Gaim Conversation logs
-Parent=Conversations
-Icon=stock_help-chat
-ShowServiceFiles=true
-HasMetadata=false
-HasFullText=true
-HasThumbs=false
-
-[Applications]
-DisplayName=Applications
-Description=Application files
-UIVisible=true
-Icon=stock_active
-ShowServiceFiles=true
-KeyMetadata1=App:DisplayName
-KeyMetadata2=App:Exec
-KeyMetadata3=App:Icon
-TileMetadata=App:GenericName;AppComment;App:Categories
-HasMetadata=false
-HasFullText=false
-HasThumbs=false
diff --git a/data/services/document.metadata b/data/services/document.metadata
deleted file mode 100644
index 4ab7f31e1..000000000
--- a/data/services/document.metadata
+++ /dev/null
@@ -1,63 +0,0 @@
-[Doc:Title]
-DisplayName=Title
-Description=The title of the document
-DataType=Indexable
-Parent=DC:Title
-Weight=25
-Filtered=false
-
-[Doc:Subject]
-DisplayName=Subject
-Description=The subject or topic of the document
-DataType=Indexable
-Parent=DC:Subject
-Weight=20
-Filtered=false
-
-[Doc:Author]
-DisplayName=Author
-Description=The author of the document
-DataType=Indexable
-Parent=DC:Creator
-Weight=20
-Filtered=false
-
-[Doc:Keywords]
-DisplayName=Keywords
-Description=keywords embedded in the document
-DataType=Keyword
-Parent=DC:Keywords
-Weight=25
-Filtered=false
-Delimited=true
-
-[Doc:Comments]
-DisplayName=Comments
-Description=The comments embedded in the document
-DataType=Indexable
-Parent=DC:Description
-Weight=10
-
-[Doc:PageCount]
-DisplayName=Page count
-Description=Number of pages in the document
-DataType=Integer
-
-[Doc:WordCount]
-DisplayName=Word count
-Description=Number of words in the document
-DataType=Integer
-
-[Doc:Created]
-DisplayName=Created
-Description=Date document was created
-DataType=DateTime
-Parent=DC:Date
-
-[Doc:URL]
-DisplayName=URL
-Description=URL to this Doc
-DataType=Indexable
-Weight=20
-Filtered=false
-
diff --git a/data/services/email.metadata b/data/services/email.metadata
deleted file mode 100644
index d9f282a7f..000000000
--- a/data/services/email.metadata
+++ /dev/null
@@ -1,64 +0,0 @@
-[Email:Recipient]
-Abstract=true
-DisplayName=Recipient
-Description=The recepient of an email
-DataType=Indexable
-
-[Email:Body]
-DisplayName=Body
-Description=The body contents of the email
-DataType=CLOB
-Weight=1
-
-[Email:Date]
-DisplayName=Date
-Description=Date email was sent
-DataType=DateTime
-Parent=DC:Date
-
-[Email:Sender]
-DisplayName=Sender
-Description=The sender of the email
-DataType=Indexable
-Parent=DC:Creator
-Weight=10
-
-[Email:Subject]
-DisplayName=Subject
-Description=The subject of the email
-DataType=Indexable
-Parent=DC:Subject
-Weight=20
-
-[Email:SentTo]
-DisplayName=Sent to
-Description=The group of people the email was sent to
-DataType=Indexable
-MultipleValues=true
-Parent=Email:Recipient
-Weight=10
-
-[Email:CC]
-DisplayName=CC
-Description=The CC recipients of the email
-DataType=Indexable
-MultipleValues=true
-Parent=Email:Recipient
-Weight=5
-
-[Email:Attachments]
-DisplayName=Attachments
-Description=The names of the attachments
-DataType=Indexable
-Weight=5
-
-[Email:AttachmentsDelimited]
-DisplayName=AttachmentsDelimited
-Description=The names of the attachments with extra delimiting
-DataType=Indexable
-Weight=5
-
-
-
-
-
diff --git a/data/services/file.metadata b/data/services/file.metadata
deleted file mode 100644
index e8589252e..000000000
--- a/data/services/file.metadata
+++ /dev/null
@@ -1,95 +0,0 @@
-[File:Name]
-DisplayName=Filename
-Description=Name of File
-DataType=Indexable
-FieldName=Name
-Parent=DC:Identifier
-Weight=10
-Filtered=false
-
-[File:Ext]
-DisplayName=Extension
-Description=File extension
-DataType=Indexable
-Weight=15
-Filtered=false
-
-[File:Path]
-DisplayName=Path
-Description=File Path
-DataType=Indexable
-FieldName=Path
-Parent=DC:Identifier
-Weight=1
-Filtered=false
-
-[File:NameDelimited]
-DisplayName=Keywords
-Description=Name of File
-DataType=Indexable
-Weight=5
-Filtered=false
-Delimited=true
-
-[File:Contents]
-DisplayName=Contents
-Description=File Contents
-DataType=CLOB
-Weight=1
-
-[File:Link]
-DisplayName=Link
-Description=File Link
-DataType=Indexable
-Parent=DC:Relation
-Weight=1
-
-[File:Mime]
-DisplayName=Mime Type
-Description=File Mime Type
-DataType=Keyword
-FieldName=Mime
-Parent=DC:Format
-Weight=10
-
-[File:Size]
-DisplayName=Size
-Description=File size in bytes
-DataType=Integer
-FieldName=Size
-
-[File:License]
-DisplayName=License
-Description=File License Type
-DataType=Indexable
-Parent=DC:Rights
-Weight=1
-
-[File:Copyright]
-DisplayName=Copyright
-Description=Copyright owners of the file
-DataType=Indexable
-Parent=DC:Rights
-Weight=1
-
-[File:Modified]
-DisplayName=Modified
-Description=Last modified date
-DataType=DateTime
-Parent=DC:Date
-FieldName=IndexTime
-
-[File:Accessed]
-DisplayName=Accessed
-Description=Last acessed date
-DataType=DateTime
-Parent=DC:Date
-FieldName=Accessed
-
-[File:Other]
-DisplayName=Other
-Description=Other details about a file
-DataType=Indexable
-Weight=1
-
-
diff --git a/data/services/image.metadata b/data/services/image.metadata
deleted file mode 100644
index 0733a6996..000000000
--- a/data/services/image.metadata
+++ /dev/null
@@ -1,138 +0,0 @@
-[Image:Title]
-DisplayName=Title
-Description=The title of the image
-DataType=Indexable
-Parent=DC:Title
-Weight=10
-Filtered=false
-
-[Image:Keywords]
-DisplayName=Keywords
-Description=The keywords embedded in the image
-DataType=Keyword
-Parent=DC:Keywords
-Weight=20
-Filtered=false
-Delimited=true
-
-[Image:Height]
-DisplayName=Height
-Description=Height in pixels of the image
-DataType=Integer
-
-[Image:Width]
-DisplayName=Width
-Description=Width in pixels of the image
-DataType=Integer
-
-[Image:Album]
-DisplayName=Album
-Description=The name of the album in which the image resides
-DataType=Indexable
-Weight=5
-
-[Image:Date]
-DisplayName=Created
-Description=Date image was created or shot
-DataType=DateTime
-Parent=DC:Date
-
-[Image:Creator]
-DisplayName=Creator
-Description=The person who created the image
-DataType=Indexable
-Parent=DC:Creator
-Weight=10
-Filtered=false
-
-[Image:Comments]
-DisplayName=Comments
-Description=The comments embedded in the image
-DataType=Indexable
-Parent=DC:Description
-Weight=5
-
-
-[Image:Description]
-DisplayName=Description
-Description=The description embedded in the image
-DataType=Indexable
-Parent=DC:Description
-Weight=5
-
-[Image:Software]
-DisplayName=Software
-Description=The software used to create the image
-DataType=Indexable
-Weight=1
-
-[Image:CameraMake]
-DisplayName=Camera make
-Description=The camera used to create the image
-DataType=Indexable
-Weight=1
-
-[Image:CameraModel]
-DisplayName=Camera model
-Description=The model number of the camera used to create the image
-DataType=Indexable
-Weight=1
-
-[Image:Orientation]
-DisplayName=Orientation
-Description=The Orientation mode of the image (portrait/landscape)
-DataType=String
-
-[Image:ExposureProgram]
-DisplayName=Exposure program
-Description=The class of the program used by the camera to set exposure when the picture is taken
-DataType=String
-
-[Image:ExposureTime]
-DisplayName=Exposure time
-Description=Exposure time in seconds
-DataType=Integer
-
-[Image:FNumber]
-DisplayName=F number
-Description=The F number
-DataType=Integer
-
-[Image:Flash]
-DisplayName=Flash
-Description=Indicates the status of flash when the image was shot (0=off, 1=on)
-DataType=Integer
-
-[Image:FocalLength]
-DisplayName=Focal length
-Description= The actual focal length of the lens in mm
-DataType=Double
-
-[Image:ISOSpeed]
-DisplayName=ISO speed
-Description=Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232.
-DataType=Integer
-
-[Image:MeteringMode]
-DisplayName=Metering mode
-Description=The metering mode
-DataType=String
-
-[Image:WhiteBalance]
-DisplayName=White balance
-Description=Indicates the white balance mode set when the image was shot (auto/manual)
-DataType=String
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/data/services/video.metadata b/data/services/video.metadata
deleted file mode 100644
index c2bd2458d..000000000
--- a/data/services/video.metadata
+++ /dev/null
@@ -1,51 +0,0 @@
-[Video:Title]
-DisplayName=Title
-Description=Video title
-DataType=Indexable
-Parent=DC:Title
-Weight=20
-Filtered=false
-
-[Video:Author]
-DisplayName=Author
-Description=Video author
-DataType=Indexable
-Parent=DC:Creator
-Weight=15
-
-[Video:Height]
-DisplayName=Height
-Description=The height in pixels
-DataType=Integer
-
-[Video:Width]
-DisplayName=Width
-Description=The width in pixels
-DataType=Integer
-
-[Video:Duration]
-DisplayName=Duration
-Description=Duration in number of seconds
-DataType=Integer
-
-[Video:Comments]
-DisplayName=Comments
-Description=General purpose comments
-DataType=Indexable
-Weight=1
-Parent=DC:Description
-
-[Video:FrameRate]
-DisplayName=Frame rate
-Description=Number of frames per seconds
-DataType=Double
-
-[Video:Codec]
-DisplayName=Codec
-Description=Codec used for the video
-DataType=String
-
-[Video:Bitrate]
-DisplayName=Bitrate
-Description=Bitrate in bits/sec
-DataType=Double
diff --git a/data/sqlite-cache.sql b/data/sqlite-cache.sql
deleted file mode 100644
index 0ab526fc7..000000000
--- a/data/sqlite-cache.sql
+++ /dev/null
@@ -1,69 +0,0 @@
-CREATE TABLE SearchResults1
-(
- SID Integer primary key not null,
- Score Integer
-);
-
-
-CREATE TABLE SearchResults2
-(
- SID Integer primary key not null,
- Score Integer
-);
-
-
-/* table for files waiting to be processed */
-CREATE TABLE FilePending
-(
- ID Integer primary key AUTOINCREMENT not null,
- FileID Integer default 0,
- Action Integer default 0,
- PendingDate Integer,
- FileUri Text not null,
- MimeType Text ,
- IsDir Integer default 0,
- IsNew Integer default 0,
- RefreshEmbedded Integer default 0,
- RefreshContents Integer default 0,
- ServiceTypeID Integer default 0
-);
-
-
-/* temp tables */
-CREATE TABLE FileTemp
-(
- ID Integer primary key not null,
- FileID Integer default 0,
- Action Integer default 0,
- FileUri Text not null,
- MimeType Text ,
- IsDir Integer default 0,
- IsNew Integer default 0,
- RefreshEmbedded Integer default 0,
- RefreshContents Integer default 0,
- ServiceTypeID Integer default 0
-);
-
-CREATE TABLE MetadataTemp
-(
- ID Integer primary key not null,
- FileID Integer default 0,
- Action Integer default 0,
- FileUri Text not null,
- MimeType Text ,
- IsDir Integer default 0,
- IsNew Integer default 0,
- RefreshEmbedded Integer default 0,
- RefreshContents Integer default 0,
- ServiceTypeID Integer default 0
-);
-
-
-CREATE TABLE FileWatches
-(
- WatchID Integer not null,
- URI Text not null,
-
- primary key (WatchID),
- unique (URI)
-);
diff --git a/data/sqlite-email.sql b/data/sqlite-email.sql
deleted file mode 100644
index fa4e1fe02..000000000
--- a/data/sqlite-email.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-
-CREATE TABLE MailSummary
-(
- ID Integer primary key AUTOINCREMENT not null,
- MailApp Integer not null,
- MailType Integer not null,
- FileName Text not null,
- Path Text not null,
- UriPrefix Text,
- NeedsChecking Integer default 0,
- MailCount Integer,
- JunkCount Integer,
- DeleteCount Integer,
- Offset Integer,
- LastOffset Integer,
- MTime integer,
-
- unique (Path)
-);
-
-
-CREATE TABLE JunkMail
-(
- UID integer not null,
- SummaryID Integer not null,
-
- primary key (UID, SummaryID)
-);
diff --git a/data/sqlite-metadata.sql b/data/sqlite-metadata.sql
deleted file mode 100644
index c5faa917b..000000000
--- a/data/sqlite-metadata.sql
+++ /dev/null
@@ -1,64 +0,0 @@
-
-/* describes the types of metadata */
-CREATE TABLE MetaDataTypes
-(
- ID Integer primary key AUTOINCREMENT not null,
- MetaName Text not null COLLATE NOCASE,
- DataTypeID Integer default 1, /* 0=Keyword, 1=indexable, 2=Clob (compressed indexable text), 3=String, 4=Integer, 5=Double, 6=DateTime, 7=Blob, 8=Struct, 9=ServiceLink */
- DisplayName text,
- Description text default ' ',
- Enabled integer default 1, /* used to prevent use of this metadata type */
- UIVisible integer default 0, /* should this metadata type be visible in a search criteria UI */
- WriteExec text default ' ', /* used to specify an external program that can write an *embedded* metadata to a file */
- Alias text default ' ', /* alternate name for this type (XESAM specs?) */
- FieldName text default ' ', /* filedname if present in the services table */
- Weight Integer default 1, /* weight of metdata type in ranking */
- Embedded Integer default 1, /* 1 if metadata extracted from the file by the indexer and is not updateable by the user. 0 - this metadata can be updated by the user and is external to the file */
- MultipleValues Integer default 0, /* 0= type cannot have multiple values per entity, 1= type can have more than 1 value per entity */
- Delimited Integer default 0, /* if 1, extra delimiters (hyphen and underscore) are used to break word */
- Filtered Integer default 1, /* if 1, words are filtered for numerics (if numeric indexing is disabled), stopwords and min length */
- Abstract Integer default 0, /* if 0, can be used for storing metadata - Abstract type classes cannot store metadata and can only be used for searching its decendants */
- StemMetadata Integer default 1, /* 1 if metadata should be stemmed */
- SideCar Integer default 0, /* should this metadata be backed up in an xmp sidecar file */
- FileName Text default ' ',
-
- Unique (MetaName)
-);
-
-insert into MetaDataTypes (MetaName) values ('default');
-
-CREATE INDEX MetaDataTypesIndex1 ON MetaDataTypes (Alias);
-
-
-/* flattened table to store metadata inter-relationships */
-CREATE TABLE MetaDataChildren
-(
- MetaDataID integer not null,
- ChildID integer not null,
-
- primary key (MetaDataID, ChildID)
-
-);
-
-
-/* for specifying fixed non-extensible metadata group/structs */
-CREATE TABLE MetaDataGroup
-(
- MetaDataGroupID integer not null,
- ChildID integer not null,
-
- primary key (MetaDataGroupID, ChildID)
-
-);
-
-
-/* future-proof table for future addional options specific to a certain metadata type */
-CREATE TABLE MetadataOptions
-(
- MetaDataID Integer not null,
- OptionName Text not null,
- OptionValue Text default ' ',
-
- primary key (MetaDataID, OptionName)
-);
-
diff --git a/data/sqlite-service-stored-procs.sql b/data/sqlite-service-stored-procs.sql
deleted file mode 100644
index 4ba767a70..000000000
--- a/data/sqlite-service-stored-procs.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-CreateService% INSERT INTO %.Services (ID, Path, Name, ServiceTypeID, Mime, Size, IsDirectory, IsLink, Offset, IndexTime, AuxilaryID) VALUES (?,?,?,?,?,?,?,?,?,?,?);
-
-GetServiceID% SELECT ID, IndexTime, IsDirectory, ServiceTypeID FROM %.Services WHERE Path = ? AND Name = ?;
-
-DeleteService1% Delete FROM %.Services Where (ID = ?);
-DeleteService2% Delete FROM %.Services Where (Path = ?);
-DeleteService3% Delete FROM %.Services Where (Path glob ?);
-
-GetByServiceType% SELECT DISTINCT F.Path || '/' || F.Name as uri FROM %.Services F WHERE F.ServiceTypeID in (select TypeId from ServiceTypes where TypeID = ? or Parent = ?) LIMIT ?,?;
-
-GetKeywordList% Select distinct K.MetaDataValue, count(*) as totalcount from %.Services S, %.ServiceKeywordMetadata K where K.ServiceID = S.ID AND (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeID = ? or Parent = ?)) and K.MetaDataId in (select ChildID from MetaDataChildren where MetadataId = (select ID from MetadataTypes T where MetaName = 'DC:Keywords')) group by K.MetaDataValue order by totalcount desc, K.MetaDataValue asc;
-GetKeywords% Select MetaDataValue from %.ServiceKeywordMetadata where ServiceID = (select ID From %.Services where Path = ? and Name = ?) and MetaDataId in (select ChildID from MetaDataChildren where MetadataId = (select ID from MetadataTypes T where MetaName = 'DC:Keywords'));
-
-GetAllIndexable% SELECT S.MetaDataValue as MetaValue, M.Weight, M.Filtered, M.Delimited FROM %.ServiceMetadata S, MetaDataTypes M WHERE S.MetaDataID = M.ID AND S.ServiceID = ? And S.MetaDataValue is not null and M.DatatypeID = 1 and M.Embedded >= ?;
-GetAllIndexableKeywords% SELECT K.MetaDataValue as MetaValue, M.Weight, M.Filtered, M.Delimited as MetaWeight FROM %.ServiceKeywordMetadata K, MetaDataTypes M WHERE K.MetaDataID = M.ID AND K.ServiceID = ? And K.MetaDataValue is not null and M.DatatypeID = 0 and M.Embedded >= ?;
-
-GetMetadataKeyword% SELECT MetaDataValue FROM %.ServiceKeywordMetadata WHERE ServiceID = ? AND MetaDataID = ?;
-GetMetadataString% SELECT MetaDataDisplay, MetaDataValue FROM %.ServiceMetadata WHERE ServiceID = ? AND MetaDataID = ?;
-
-SetMetadataKeyword% INSERT INTO %.ServiceKeywordMetadata (ServiceID, MetaDataID, MetaDataValue) VALUES (?,?,?);
-SetMetadata% INSERT INTO %.ServiceMetadata (ServiceID, MetaDataID, MetaDataValue, MetaDataDisplay) VALUES (?,?,?,?);
-
-DeleteMetadataKeyword% DELETE FROM %.ServiceKeywordMetadata where ServiceID = ? and MetaDataID=?;
-DeleteMetadata% DELETE FROM %.ServiceMetadata where ServiceID = ? and MetaDataID=?;
-
-DeleteMetadataKeywordValue% DELETE FROM %.ServiceKeywordMetadata where ServiceID = ? and MetaDataID=? and MetaDataValue = ?;
-DeleteMetadataValue% DELETE FROM %.ServiceMetadata where ServiceID = ? and MetaDataID=? and MetaDataValue=?;
diff --git a/data/sqlite-service-triggers.sql b/data/sqlite-service-triggers.sql
deleted file mode 100644
index eeeab3da0..000000000
--- a/data/sqlite-service-triggers.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-BEGIN TRANSACTION;!
-
-CREATE TRIGGER delete_service BEFORE DELETE ON Services
-BEGIN
- DELETE FROM ServiceMetaData WHERE ServiceID = old.ID;
- DELETE FROM ServiceKeywordMetaData WHERE ServiceID = old.ID;
- DELETE FROM ServiceNumericMetaData WHERE ServiceID = old.ID;
- DELETE FROM ChildServices WHERE (ParentID = old.ID);
- DELETE FROM ChildServices WHERE (ChildID = old.ID);
-
-END;!
-
-COMMIT TRANSACTION;!
diff --git a/data/sqlite-service-types.sql b/data/sqlite-service-types.sql
deleted file mode 100644
index fd2e3df54..000000000
--- a/data/sqlite-service-types.sql
+++ /dev/null
@@ -1,122 +0,0 @@
-
-CREATE TABLE ServiceTypes
-(
- TypeID Integer primary key AUTOINCREMENT not null,
- TypeName Text COLLATE NOCASE not null,
-
- TypeCount Integer default 0,
-
- DisplayName Text default ' ',
- Parent Text default ' ',
- Enabled Integer default 1,
- Embedded Integer default 1, /* service is created by the indexer if embedded. User or app defined services are not embedded */
- ChildResource Integer default 0, /* service is a child service */
-
- CreateDesktopFile Integer default 0, /* used by a UI to indicate whether it should create a desktop file for the service if its copied (using the ViewerExec field + uri) */
-
- /* useful for a UI when determining what actions a hit can have */
- CanCopy Integer default 1,
- CanDelete Integer default 1,
-
- ShowServiceFiles Integer default 0,
- ShowServiceDirectories Integer default 0,
-
- HasMetadata Integer default 1,
- HasFullText Integer default 1,
- HasThumbs Integer default 1,
-
- ContentMetadata Text default ' ', /* the content field is the one most likely to be used for showing a search snippet */
-
- KeyMetadata1 Text default ' ', /* the most commonly requested metadata (especially for tables/grid views) is cached int he services table for extra fast retrieval */
- KeyMetadata2 Text default ' ',
- KeyMetadata3 Text default ' ',
- KeyMetadata4 Text default ' ',
- KeyMetadata5 Text default ' ',
- KeyMetadata6 Text default ' ',
- KeyMetadata7 Text default ' ',
- KeyMetadata8 Text default ' ',
- KeyMetadata9 Text default ' ',
- KeyMetadata10 Text default ' ',
- KeyMetadata11 Text default ' ',
-
- UIVisible Integer default 0, /* should service appear in a search GUI? */
- UITitle Text default ' ', /* title format as displayed in the metadata tile */
- UIMetadata1 Text default ' ', /*UI fields to show in GUI for a hit - if not set then Name,Path,Mime are used */
- UIMetadata2 Text default ' ',
- UIMetadata3 Text default ' ',
- UIView Text default 'default',
-
- Description Text default ' ',
- Database integer default 0, /* 0 = DB_FILES, 1 = DB_EMAILS, 2 = DB_MISC, 3 = DB_USER */
- Icon Text default ' ',
-
- IndexerExec Text default ' ',
- IndexerOutput Text default 'stdout',
- ThumbExec Text default ' ',
- ViewerExec Text default ' ',
-
- WatchFolders Text default ' ',
- IncludeGlob Text default ' ',
- ExcludeGlob Text default ' ',
-
- FileName Text default ' ',
-
- unique (TypeName)
-);
-
-insert into ServiceTypes (TypeName) values ('default');
-
-/* metadata that should appear in a tabular view and/or metadata tile for the service */
-CREATE TABLE ServiceTileMetadata
-(
- ServiceTypeID Integer not null,
- MetaName Text not null,
-
- primary key (ServiceTypeID, MetaName)
-);
-
-
-CREATE TABLE ServiceTabularMetadata
-(
- ServiceTypeID Integer not null,
- MetaName Text not null,
-
- primary key (ServiceTypeID, MetaName)
-);
-
-
-/* option sspecific to a certain service type go here */
-CREATE TABLE ServiceTypeOptions
-(
- ServiceTypeID Integer not null,
- OptionName Text not null,
- OptionValue Text default ' ',
-
- primary key (ServiceTypeID, OptionName)
-);
-
-
-
-
-/* these two only apply to file based services */
-CREATE TABLE FileMimes
-(
- Mime Text primary key not null,
- ServiceTypeID Integer default 0,
- ThumbExec Text default ' ',
- MetadataExec Text default ' ',
- FullTextExec Text default ' '
-
-);
-
-CREATE TABLE FileMimePrefixes
-(
- MimePrefix Text primary key not null,
- ServiceTypeID Integer default 0,
- ThumbExec Text default ' ',
- MetadataExec Text default ' ',
- FullTextExec Text default ' '
-
-);
-
-
diff --git a/data/sqlite-service.sql b/data/sqlite-service.sql
deleted file mode 100644
index f26720618..000000000
--- a/data/sqlite-service.sql
+++ /dev/null
@@ -1,99 +0,0 @@
-/* basic info for a file or service object */
-CREATE TABLE Services
-(
- ID Integer primary key not null,
- ServiceTypeID Integer default 0, /* see ServiceTypes table above for ID values. A value of 0 indicates a group resource rather than a service */
- Path Text not null COLLATE UTF8, /* non-file objects should use service name here */
- Name Text default ' ' COLLATE UTF8, /* name of file or object - the combination path and name must be unique for all objects */
- Enabled Integer default 1,
- Mime Text default ' ',
- Size Integer default 0,
- Rank Integer default 5,
- ParentID Integer,
-
- KeyMetadata1 Text,
- KeyMetadata2 Text,
- KeyMetadata3 Text,
- KeyMetadata4 Text,
- KeyMetadata5 Text,
- KeyMetadata6 Text,
- KeyMetadata7 Text,
- KeyMetadata8 Text,
- KeyMetadata9 Text,
- KeyMetadata10 Text,
- KeyMetadata11 Text,
-
- Icon Text,
- CanWrite Integer default 1,
- CanExecute Integer default 1,
-
- LanguageId Integer default 0,
- IsDirectory Integer default 0,
- IsLink Integer default 0,
- AuxilaryID Integer default 0, /* link to Volumes table for files, link to MailSummary table for emails*/
- IndexTime Integer default 0, /* should equal st_mtime for file if up-to-date */
- Accessed Integer default 0, /* last accessed */
- Offset Integer default 0, /* last used disk offset for indexable files that always grow (like chat logs) or email offset */
- MD5 Text,
-
- unique (Path, Name)
-
-);
-
-CREATE INDEX ServiceIndex1 ON Services (ServiceTypeID);
-
-
-/* child service relationships for a specific group/struct metadata */
-CREATE TABLE ChildServices
-(
- ParentID Integer not null,
- ChildID Integer not null,
- MetaDataID Integer not null,
-
- primary key (ParentID, ChildID, MetaDataID)
-);
-
-CREATE INDEX ChildServicesIndex1 ON ChildServices (ChildID);
-
-
-/* utf-8 based literal metadata. */
-CREATE TABLE ServiceMetaData
-(
- ID Integer primary key AUTOINCREMENT not null,
- ServiceID Integer not null,
- MetaDataID Integer not null,
- MetaDataValue Text,
- MetaDataDisplay Text
-
-);
-
-CREATE INDEX ServiceMetaDataIndex1 ON ServiceMetaData (ServiceID);
-CREATE INDEX ServiceMetaDataIndex2 ON ServiceMetaData (MetaDataID);
-
-/* metadata for all keyword types - keywords are db indexed for fast searching - they are also not processed like other metadata. */
-CREATE TABLE ServiceKeywordMetaData
-(
- ID Integer primary key AUTOINCREMENT not null,
- ServiceID Integer not null,
- MetaDataID Integer not null,
- MetaDataValue Text COLLATE NOCASE
-);
-
-CREATE INDEX ServiceKeywordMetaDataIndex1 ON ServiceKeywordMetaData (MetaDataID, MetaDataValue);
-CREATE INDEX ServiceKeywordMetaDataIndex2 ON ServiceKeywordMetaData (ServiceID);
-
-
-/* metadata for all integer/date types */
-CREATE TABLE ServiceNumericMetaData
-(
- ID Integer primary key AUTOINCREMENT not null,
- ServiceID Integer not null,
- MetaDataID Integer not null,
- MetaDataValue Integer not null
-);
-
-CREATE INDEX ServiceNumericMetaDataIndex1 ON ServiceNumericMetaData (MetaDataID, MetaDataValue);
-CREATE INDEX ServiceNumericMetaDataIndex2 ON ServiceNumericMetaData (ServiceID);
-
-
-
diff --git a/data/sqlite-stored-procs.sql b/data/sqlite-stored-procs.sql
deleted file mode 100644
index 7491ed884..000000000
--- a/data/sqlite-stored-procs.sql
+++ /dev/null
@@ -1,189 +0,0 @@
-
-GetMetaDataTypeID select ID From MetaDataTypes where MetaName = ?;
-
-GetMetaDataType select DataTypeID From MetaDataTypes where MetaName = ?;
-
-GetRelatedServiceIDs select TypeId from ServiceTypes where TypeName = ? or Parent = ?;
-
-GetFileByID SELECT DISTINCT Path , Name, Mime, ServiceTypeID FROM Services WHERE ID = ? and Enabled = 1;
-
-GetFileByID2 SELECT DISTINCT (Path || '/' || Name) as uri, GetServiceName (ServiceTypeID), Mime FROM Services WHERE ID = ? and Enabled = 1;
-
-GetFileByID3 SELECT DISTINCT Path , Name, Mime, ServiceTypeID FROM Services WHERE ID = ?;
-
-GetEmailByID2 SELECT DISTINCT (S.Path || '/' || S.Name) as uri, 'Emails', S.Mime, M1.MetaDataDisplay, M2.MetaDataDisplay FROM Services S Left Outer Join ServiceMetaData M1 on S.ID = M1.ServiceID and M1.MetaDataID = (select ID From MetaDataTypes where MetaName ='Email:Subject') Left Outer Join ServiceMetaData M2 on S.ID = M2.ServiceID and M2.MetaDataID = (select ID From MetaDataTypes where MetaName ='Email:Sender') WHERE S.ID = ?;
-
-GetEmailByID SELECT DISTINCT (S.Path || '/' || S.Name) as uri, 'Emails', S.Mime, S.KeyMetadata1, S.KeyMetadata2, S.KeyMetadata3 FROM Services S WHERE S.ID = ?;
-
-GetApplicationByID SELECT DISTINCT (S.Path || '/' || S.Name) as uri, 'Applications', 'Application', S.KeyMetadata1, S.KeyMetadata2, S.KeyMetadata3 FROM Services S WHERE S.ID = ?;
-
-GetFileMTime SELECT M.MetaDataValue FROM Services F inner join ServiceNumericMetaData M on F.ID = M.ServiceID WHERE F.Path = ? and F.Name = ? and M.MetaDataID = (select ID From MetaDataTypes where MetaName ='File:Modified');
-
-GetServices SELECT TypeName, Description, Parent FROM ServiceTypes ORDER BY TypeID;
-GetAllServices SELECT TypeID, TypeName, Parent, Enabled, Embedded, HasMetadata, HasFullText, HasThumbs, ContentMetadata, Database, ShowServiceFiles, ShowServiceDirectories, KeyMetadata1, KeyMetadata2, KeyMetadata3, KeyMetadata4, KeyMetadata5, KeyMetadata6, KeyMetadata7, KeyMetadata8, KeyMetadata9, KeyMetadata10, KeyMetadata11 FROM ServiceTypes;
-
-GetNewID SELECT OptionValue FROM Options WHERE OptionKey = 'Sequence';
-UpdateNewID UPDATE Options set OptionValue = ? WHERE OptionKey = 'Sequence';
-
-GetUpdateCount SELECT OptionValue FROM Options WHERE OptionKey = 'UpdateCount';
-SetUpdateCount UPDATE Options set OptionValue = ? WHERE OptionKey = 'UpdateCount';
-
-GetOption SELECT OptionValue FROM Options WHERE OptionKey = ?;
-SetOption REPLACE into Options (OptionKey, OptionValue) values (?,?);
-
-CreateService INSERT INTO Services (ID, Path, Name, ServiceTypeID, Mime, Size, IsDirectory, IsLink, Offset, IndexTime, AuxilaryID) VALUES (?,?,?,?,?,?,?,?,?,?,?);
-
-GetServiceID SELECT ID, IndexTime, IsDirectory, ServiceTypeID FROM Services WHERE Path = ? AND Name = ?;
-
-SelectFileChild SELECT ID, Path, Name, IsDirectory FROM Services WHERE Path = ?;
-
-SelectFileChildWithoutDirs SELECT Path, Name FROM Services WHERE Path = ? and IsDirectory = 0;
-
-SelectFileSubFolders SELECT ID, Path, Name, IsDirectory FROM Services WHERE (Path = ? or Path glob ?) And IsDirectory = 1;
-
-SelectSubFileIDs SELECT ID FROM Services WHERE (Path = ? or Path glob ?);
-
-UpdateFile UPDATE Services SET ServiceTypeID=?, Path=?, Name=?, Mime=?, Size=?, IndexTime =?, Offset=? WHERE ID = ?;
-UpdateFileMTime UPDATE Services SET IndexTime=? where Path = ? and Name = ?;
-UpdateFileMove UPDATE Services SET Path = ?, Name = ? WHERE ID = ?;
-UpdateFileMoveChild UPDATE Services SET Path = ? WHERE Path = ?;
-
-DeleteService1 Delete FROM Services Where (ID = ?);
-DeleteService2 Delete FROM Services Where (Path = ?);
-DeleteService3 Delete FROM Services Where (Path glob ?);
-DeleteService4 Delete FROM BackupServices Where (Path = ?);
-DeleteService5 Delete FROM BackupServices Where (Path glob ?);
-DeleteService6 Delete FROM BackupServices Where (Path = ? and Name = ?);
-DeleteService7 Delete FROM ServiceLinks Where (SourcePath = ? and SourceName = ?);
-DeleteService8 Delete FROM ServiceLinks Where (SourcePath = ?) or (SourcePath glob ?);
-DeleteService9 Delete FROM ServiceLinks Where (DestPath = ? and DestName = ?);
-DeleteService10 Delete FROM ServiceLinks Where (DestPath = ?) or (DestPath glob ?);
-DeleteService11 DELETE FROM ServiceContents where ServiceID = ?;
-
-DeleteEmbeddedServiceMetadata1 DELETE FROM ServiceMetaData WHERE ServiceID = ? and MetaDataID in (select ID from MetaDataTypes where Embedded = 1);
-DeleteEmbeddedServiceMetadata2 DELETE FROM ServiceKeywordMetaData WHERE ServiceID = ? and MetaDataID in (select ID from MetaDataTypes where Embedded = 1);
-DeleteEmbeddedServiceMetadata3 DELETE FROM ServiceNumericMetaData WHERE ServiceID = ? and MetaDataID in (select ID from MetaDataTypes where Embedded = 1);
-
-GetByServiceType SELECT DISTINCT F.Path || '/' || F.Name as uri FROM Services F WHERE F.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = ? or Parent = ?) LIMIT ?,?;
-
-SaveServiceContents REPLACE into ServiceContents (ServiceID, MetadataID, Content) values (?,?,?);
-DeleteContent DELETE FROM ServiceContents where ServiceID = ? and MetadataId = ?;
-DeleteAllContents DELETE FROM ServiceContents where ServiceID = ?;
-GetContents Select uncompress (Content) from ServiceContents where ServiceID = ? and MetadataID = ? and Content is not null;
-GetFileContents Select substr(uncompress (Content), ?, ?) from ServiceContents where ServiceID = ?;
-GetAllContents Select uncompress (Content) from ServiceContents where ServiceID = ? and Content is not null;
-
-GetKeywordList Select distinct K.MetaDataValue, count(*) as totalcount from Services S, ServiceKeywordMetaData K where K.ServiceID = S.ID AND (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = ? or Parent = ?)) AND K.MetaDataId = 19 group by K.MetaDataValue order by totalcount desc, K.MetaDataValue asc;
-GetKeywords Select MetaDataValue from ServiceKeywordMetaData where ServiceID = (select ID From Services where Path = ? and Name = ?) and MetaDataId in (select ChildID from MetaDataChildren where MetadataId = (select ID from MetadataTypes T where MetaName = 'DC:Keywords'));
-
-GetAllIndexable SELECT S.MetaDataValue as MetaValue, M.Weight, M.Filtered, M.Delimited FROM ServiceMetaData S, MetaDataTypes M WHERE S.MetaDataID = M.ID AND S.ServiceID = ? And S.MetaDataValue is not null and M.DatatypeID = 1 and M.Embedded >= ?;
-GetAllIndexableKeywords SELECT K.MetaDataValue as MetaValue, M.Weight, M.Filtered, M.Delimited as MetaWeight FROM ServiceKeywordMetaData K, MetaDataTypes M WHERE K.MetaDataID = M.ID AND K.ServiceID = ? And K.MetaDataValue is not null and M.DatatypeID = 0 and M.Embedded >= ?;
-
-GetMetadataKeyword SELECT MetaDataValue FROM ServiceKeywordMetaData WHERE ServiceID = ? AND MetaDataID = ?;
-GetMetadata SELECT MetaDataDisplay FROM ServiceMetaData WHERE ServiceID = ? AND MetaDataID = ?;
-GetMetadataNumeric SELECT MetaDataValue FROM ServiceNumericMetaData WHERE ServiceID = ? AND MetaDataID = ?;
-
-GetMetadataKeywordValues SELECT DISTINCT MetaDataValue FROM ServiceKeywordMetaData WHERE MetaDataID = ? LIMIT ?,?;
-GetMetadataValues SELECT DISTINCT MetaDataDisplay FROM ServiceMetaData WHERE MetaDataID = ? LIMIT ?,?;
-GetMetadataNumericValues SELECT DISTINCT MetaDataValue FROM ServiceNumericMetaData WHERE MetaDataID = ? LIMIT ?,?;
-
-GetMetadataKeywordValues SELECT DISTINCT MetaDataValue FROM ServiceKeywordMetaData WHERE MetaDataID = ? LIMIT ?,?;
-GetMetadataValues SELECT DISTINCT MetaDataDisplay FROM ServiceMetaData WHERE MetaDataID = ? LIMIT ?,?;
-GetMetadataNumericValues SELECT DISTINCT MetaDataValue FROM ServiceNumericMetaData WHERE MetaDataID = ? LIMIT ?,?;
-
-SetMetadataKeyword INSERT INTO ServiceKeywordMetaData (ServiceID, MetaDataID, MetaDataValue) VALUES (?,?,?);
-SetMetadata INSERT INTO ServiceMetaData (ServiceID, MetaDataID, MetaDataValue, MetaDataDisplay) VALUES (?,?,?,?);
-SetMetadataNumeric INSERT INTO ServiceNumericMetaData (ServiceID, MetaDataID, MetaDataValue) VALUES (?,?,?);
-
-DeleteMetadataKeyword DELETE FROM ServiceKeywordMetaData where ServiceID = ? and MetaDataID=?;
-DeleteMetadata DELETE FROM ServiceMetaData where ServiceID = ? and MetaDataID=?;
-DeleteMetadataNumeric DELETE FROM ServiceNumericMetaData where ServiceID = ? and MetaDataID=?;
-
-DeleteMetadataKeywordValue DELETE FROM ServiceKeywordMetaData where ServiceID = ? and MetaDataID=? and MetaDataValue = ?;
-DeleteMetadataValue DELETE FROM ServiceMetaData where ServiceID = ? and MetaDataID=? and MetaDataDisplay=?;
-DeleteMetadataNumericValue DELETE FROM ServiceNumericMetaData where ServiceID = ? and MetaDataID=? and MetaDataValue=?;
-
-GetMetadataTypeInfo Select ID, MetaName, DataTypeID, DisplayName, Description, Enabled, UIVisible, FieldName, Weight, Embedded, MultipleValues, Delimited, Filtered, Abstract FROM MetaDataTypes where MetaName = ?;
-GetMetadataTypes SELECT ID, MetaName, DataTypeID, FieldName, Weight, Embedded, MultipleValues, Delimited, Filtered, Abstract FROM MetaDataTypes;
-GetMetadataTypeDetails SELECT ID, MetaName, DataTypeID, DisplayName, Description, Enabled, UIVisible, FieldName, Weight, Embedded, MultipleValues, Delimited, Filtered, Abstract FROM MetaDataTypes;
-GetMetadataTypesLike SELECT ID, MetaName, DataTypeID, DisplayName, Description, Enabled, UIVisible, FieldName, Weight, Embedded, MultipleValues, Delimited, Filtered, Abstract FROM MetaDataTypes WHERE MetaName glob ?;
-GetWriteableMetadataTypes SELECT ID, MetaName, DataTypeID, DisplayName, Description, Enabled, UIVisible, FieldName, Weight, Embedded, MultipleValues, Delimited, Filtered, Abstract FROM MetaDataTypes where Embedded = 0;
-GetWriteableMetadataTypesLike SELECT ID, MetaName, DataTypeID, DisplayName, Description, Enabled, UIVisible, FieldName, Weight, Embedded, MultipleValues, Delimited, Filtered, Abstract FROM MetaDataTypes WHERE MetaName glob ? and Embedded = 0;
-
-InsertMetaDataChildren INSERT INTO MetaDataChildren (ChildID,MetadataID) VALUES (?,(select ID from MetaDataTypes where MetaName = ?));
-GetMetadataAliases SELECT distinct M.MetaName, M.ID from MetaDataTypes M, MetaDataChildren C where M.ID = C.ChildID and C.MetaDataID = ?;
-GetMetadataAliasesForName SELECT distinct M.MetaName, M.ID from MetaDataTypes M, MetaDataChildren C where M.ID = C.ChildID and C.MetaDataID = (select ID from MetaDataTypes where MetaName = ?) union select M.MetaName, M.ID from MetaDataTypes M where M.MetaName = ?;
-
-SelectMetadataClasses SELECT DISTINCT MetaName FROM MetaDataTypes;
-
-InsertMetadataType INSERT INTO MetaDataTypes (MetaName) Values (?);
-
-InsertServiceType REPLACE INTO ServiceTypes (TypeName) Values (?);
-InsertServiceTileMetadata REPLACE Into ServiceTileMetadata (ServiceTypeID, MetaName) VALUES (?, ?);
-InsertServiceTabularMetadata REPLACE Into ServiceTabularMetadata (ServiceTypeID, MetaName) VALUES (?, ?);
-
-GetServiceTypes select TypeID, TypeName, Parent, Enabled, Embedded, HasMetadata, HasFullText, HasThumbs, ContentMetadata, KeyMetadata1, KeyMetadata2, KeyMetadata3, KeyMetadata4, KeyMetadata5, KeyMetadata6, KeyMetadata7, KeyMetadata8, KeyMetadata9, KeyMetadata10, KeyMetadata11 From ServiceTypes;
-GetServiceTypeDetails select TypeID, TypeName, DisplayName, Parent, Enabled, Embedded, ChildResource, CreateDesktopFile, CanCopy, CanDelete, HasMetadata, HasFullText, HasThumbs, ContentMetadata, UIView, Description, Database, Icon, IndexerExec, ThumbExec, ViewerExec, UIVisible, UIMetadata1, UIMetadata2, UIMetadata3, KeyMetadata1, KeyMetadata2, KeyMetadata3, KeyMetadata4, KeyMetadata5, KeyMetadata6 FROM ServiceTypes;
-GetServiceTypeDetailsByName select TypeID, TypeName, DisplayName, Parent, Enabled, Embedded, ChildResource, CreateDesktopFile, CanCopy, CanDelete, HasMetadata, HasFullText, HasThumbs, ContentMetadata, UIView, Description, Database, Icon, IndexerExec, ThumbExec, ViewerExec, UIVisible, UIMetadata1, UIMetadata2, UIMetadata3, KeyMetadata1, KeyMetadata2, KeyMetadata3, KeyMetadata4, KeyMetadata5, KeyMetadata6 FROM ServiceTypes where TypeName = ?;
-GetServiceTypeDetailsByID select TypeId, TypeName, DisplayName, Parent, Enabled, Embedded, ChildResource, CreateDesktopFile, CanCopy, CanDelete, HasMetadata, HasFullText, HasThumbs, ContentMetadata, UIView, Description, Database, Icon, IndexerExec, ThumbExec, ViewerExec, UIVisible, UIMetadata1, UIMetadata2, UIMetadata3, KeyMetadata1, KeyMetadata2, KeyMetadata3, KeyMetadata4, KeyMetadata5, KeyMetadata6 FROM ServiceTypes where TypeID = ?;
-GetServiceTile select M.MetaName, M.ID from MetaDataTypes M where M.ID in (select MetadataTypeID from ServiceTileMetadata where ServiceTypeID = ?);
-GetServiceTable select M.MetaName, M.ID from MetaDataTypes M where M.ID in (select MetadataTypeID from ServiceTabularMetadata where ServiceTypeID = ?);
-
-InsertMimes replace into FileMimes (Mime) Values (?);
-InsertMimePrefixes replace into FileMimePrefixes (MimePrefix) Values (?);
-
-GetMimeForServiceId select Mime from FileMimes where ServiceTypeId = ?;
-GetMimePrefixForServiceId select MimePrefix from FileMimePrefixes where ServiceTypeId = ?;
-
-ExistsPendingFiles select count (*) from FilePending where Action <> 20;
-InsertPendingFile INSERT INTO FilePending (FileID, Action, PendingDate, FileUri, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID) VALUES (?,?,?,?,?,?,?,?,?,?);
-CountPendingMetadataFiles select count (*) from FilePending where Action = 20;
-SelectPendingByUri SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM FilePending WHERE FileUri = ?;
-UpdatePendingFile UPDATE FilePending SET PendingDate = ?, Action = ? WHERE FileUri = ?;
-DeletePendingFile DELETE FROM FilePending WHERE FileUri = ?;
-
-GetWatchUri select URI from FileWatches where WatchID = ?;
-GetWatchID select WatchID from FileWatches where URI = ?;
-GetSubWatches select WatchID from FileWatches where URI glob ?;
-DeleteWatch delete from FileWatches where URI = ?;
-DeleteSubWatches delete from FileWatches where URI glob ?;
-InsertWatch insert into FileWatches (URI, WatchID) values (?,?);
-
-InsertSearchResult1 insert into SearchResults1 (SID, Score) values (?,?);
-DeleteSearchResults1 delete from SearchResults1;
-
-GetMboxes select MailApp, MailType, Filename, Path, UriPrefix, Offset, LastOffset, MailCount, JunkCount, DeleteCount, Mtime from MailSummary;
-GetMBoxDetails select MailApp, MailType, Filename, UriPrefix, Offset, LastOffset, MailCount, JunkCount, DeleteCount, Mtime from MailSummary where path = ?;
-GetMboxID select ID from MailSummary where path = ?;
-GetMBoxPath select path from MailSummary where FileName = ?;
-InsertMboxDetails insert into MailSummary (MailApp, MailType, FileName, Path, UriPrefix, Offset, LastOffset, MailCount, JunkCount, DeleteCount, Mtime) values (?,?,?,?,?,0,0,0,0,0,0);
-UpdateMboxOffset update MailSummary set Offset = ? where Path = ?;
-UpdateMboxCounts update MailSummary set MailCount = ?, JunkCount = ?, DeleteCount = ? where Path = ?;
-
-SetJunkMbox update MailSummary set NeedsChecking = ? where path = ?;
-
-LookupJunk select SummaryID from JunkMail where UID = ? and SummaryID = ?;
-InsertJunk insert into JunkMail values (?,?);
-
-selectStats Select Sum(TypeCount) from ServiceTypes where TypeName = ? or TypeName in (select TypeName from ServiceTypes where Parent = ?);
-IncStat UPDATE ServiceTypes set TypeCount = (TypeCount + 1) where TypeName = ?;
-DecStat UPDATE ServiceTypes set TypeCount = (TypeCount - 1) where TypeName = ?;
-GetStats Select TypeName, TypeCount from ServiceTypes Group By TypeName order by TypeID asc;
-
-InsertBackupService INSERT INTO BackupServices (Path, Name) select S.Path, S.Name from Services S where S.ID = ?;
-UpdateBackupService Update BackupServices set Path = ? and Name = ? where Path = ? and Name = ?;
-GetBackupService Select ID from BackupServices where Path = ? and Name = ?;
-GetBackupServiceByID Select B.ID from BackupServices B, Services S where B.Path = S.Path and B.Name = S.Name and S.ID = ?;
-GetBackupMetadata select M.MetaName, B.UserValue from BackupMetadata B, MetadataTypes M, BackupServices BS where B.MetadataID = M.ID and B.ServiceID = BS.ID and BS.Path = ? and BS.Name = ?;
-SetBackupMetadata INSERT INTO BackupMetadata (ServiceID, MetadataID, UserValue) VALUES (?,?,?);
-DeleteBackupMetadataValue Delete From BackupMetadata where ServiceID = ? and MetadataID = ? and UserValue = ?;
-DeleteBackupMetadata Delete From BackupMetadata where ServiceID = ? and MetadataID = ?;
-
-GetWords Select word from HitIndex where word glob ?;
-GetWordBatch Select ROWID, word, HitCount, HitArraySize from HitIndex limit 100;
-GetHitDetails Select ROWID, HitCount, HitArraySize From HitIndex where word = ?;
-DeleteWord delete from HitIndex where ROWID = ?;
-InsertHitDetails Insert into HitIndex (Word, HitCount, HitArraySize, HitArray) Values (?,?,?, ZeroBlob(?));
-UpdateHitDetails Update HitIndex set HitCount = ?, HitArraySize = ? where ROWID = ?;
-ResizeHitDetails Update HitIndex set HitCount = ?, HitArraySize = ?, HitArray = Zeroblob(?) where ROWID = ?;
-
diff --git a/data/sqlite-tracker-triggers.sql b/data/sqlite-tracker-triggers.sql
deleted file mode 100644
index f5ed78600..000000000
--- a/data/sqlite-tracker-triggers.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-BEGIN TRANSACTION;!
-
-
-CREATE TRIGGER delete_backup_service BEFORE DELETE ON BackupServices
-BEGIN
- DELETE FROM BackupMetaData WHERE ServiceID = old.ID;
-END;!
-
-COMMIT TRANSACTION;!
diff --git a/data/sqlite-tracker.sql b/data/sqlite-tracker.sql
deleted file mode 100644
index f49f17e77..000000000
--- a/data/sqlite-tracker.sql
+++ /dev/null
@@ -1,85 +0,0 @@
-
-CREATE TABLE Options (
- OptionKey Text COLLATE NOCASE not null,
- OptionValue Text COLLATE NOCASE
-);
-
-insert Into Options (OptionKey, OptionValue) values ('DBVersion', '20');
-insert Into Options (OptionKey, OptionValue) values ('Sequence', '1');
-insert Into Options (OptionKey, OptionValue) values ('UpdateCount', '0');
-
-
-
-/* store volume and HAL info here for files */
-CREATE TABLE Volumes
-(
- VolumeID Integer primary key AUTOINCREMENT not null,
- UDI Text,
- VolumeName Text,
- MountPath Text,
- Enabled Integer default 0
-
-);
-
-
-/* provides links from one service entity to another (entities can be in different databases) */
-CREATE TABLE ServiceLinks
-(
- ID Integer primary key AUTOINCREMENT not null,
- MetadataID Integer not null,
- SourcePath Text,
- SourceName Text,
- DestPath Text,
- DestName Text
-);
-
-
-
-/* following two tables are used to backup any user/app defined metadata for indexed/embedded services only */
-CREATE TABLE BackupServices
-(
- ID Integer primary key AUTOINCREMENT not null,
- Path Text not null,
- Name Text,
-
- unique (Path, Name)
-
-);
-
-
-CREATE TABLE BackupMetaData
-(
- ID Integer primary key AUTOINCREMENT not null,
- ServiceID Integer not null,
- MetaDataID Integer not null,
- UserValue Text
-
-
-);
-
-CREATE INDEX BackupMetaDataIndex1 ON BackupMetaData (ServiceID, MetaDataID);
-
-
-
-CREATE TABLE KeywordImages
-(
- Keyword Text primary key,
- Image Text
-);
-
-
-/* allow aliasing of VFolders with nice names */
-CREATE TABLE VFolders
-(
- Path Text not null,
- Name Text not null,
- Query text not null,
- RDF text,
- Type Integer default 0,
- active Integer,
-
- primary key (Path, Name)
-
-);
-
-ANALYZE;
diff --git a/data/sqlite-triggers.sql b/data/sqlite-triggers.sql
deleted file mode 100644
index e69de29bb..000000000
--- a/data/sqlite-triggers.sql
+++ /dev/null
diff --git a/data/sqlite-user-data.sql b/data/sqlite-user-data.sql
deleted file mode 100644
index 83bddfa05..000000000
--- a/data/sqlite-user-data.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-/* basic info for a user defined file or service object */
-CREATE TABLE UserServices
-(
- ID Integer primary key not null,
- Path Text not null,
- Name Text,
-
- unique (Path, Name)
-
-);
-
-
-
-/* de-normalised metadata which is unprocessed (not normalized or casefolded) for display only - never used for searching */
-CREATE TABLE UserMetaDataDisplay
-(
- ServiceID Integer not null,
- MetaDataID Integer not null,
- UserValue Text,
- Length Integer.
-
- primary key (ServiceID, MetaDataID)
-);
-
diff --git a/data/tracker-introspect.xml b/data/tracker-introspect.xml
deleted file mode 100644
index c9bf41d7a..000000000
--- a/data/tracker-introspect.xml
+++ /dev/null
@@ -1,550 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
- <!--
-
- "service" input parameters are a string representing the service type.
-
- A list of service types can be obtained by calling method GetServices and will *potentially* include the following :
-
- "Files"
- "Folders" *
- "Documents" *
- "Images" *
- "Music" *
- "Videos" *
- "Text Files" *
- "Development Files" *
- "Other Files" *
- "VFS Files"
- "VFS Folders" **
- "VFS Documents" **
- "VFS Images" **
- "VFS Music" **
- "VFS Videos" **
- "VFS Text Files" **
- "VFS Development Files" **
- "VFS Other Files" **
- "Conversations"
- "Playlists"
- "Applications"
- "Contacts"
- "Emails"
- "EmailAttachments"
- "Notes"
- "Appointments"
- "Tasks"
- "Bookmarks"
- "History"
- "Projects"
-
-
- (*) - these services are a subset of "Files" service.
- (**) - these services are a subset of "VFSFiles" service.
-
- Services may also have a corresponding metadata class associated with them (EG Files has "File" class, Documents "Doc" etc see
- the spec at http://freedesktop.org/wiki/Standards/shared-filemetadata-spec for more details on metadata classes)
-
- "id" input parameters can represent, in the case of a file, the full path and name of the file.
-
- In other cases, "id" can also be a unique name or URI for the specified service.
-
- The "id" field uniquely identifies an entity in Tracker regardless of its service type
-
- The live_query_id parameters in some search and retrieval methods is used to indicate whether the query should be "live". Liveness means
- the query can receive signals in real time to remove hits that are no longer valid and add new ones that are. These signals are emitted
- in response to file or volume notifications. A value of -1 should be passed if live query functionality is not desired. A live_query_id
- can be obtained in the future from the LiveQuery Interface.
-
-
- -->
-
-
-
-<node name="/org/freedesktop/tracker">
-
- <interface name="org.freedesktop.Tracker">
- <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="tracker_client"/>
-
- <!-- Returns the version number of tracker as an integer as XXXXXX where each XX pair represents part of the version
- (EG "100" is returned for version 0.1.0 and "14523" would represent version 1.45.23) -->
- <method name="GetVersion">
- <arg type="i" name="version" direction="out" />
- </method>
-
- <!-- Return the status of tracker daemon - status is one of "Initializing","Watching","Indexing","Pending","Optimizing","Idle","Shutdown" -->
- <method name="GetStatus">
- <arg type="s" name="status" direction="out" />
- </method>
-
-
- <!-- Gets all implemented services and also returns any corresponding metadata type class for the service (IE "File", "Doc", "Image" etc)
- If main_services_only is set to true then only the major services are returned
- Output is in dict format: (service -> description, parent) -->
- <method name="GetServices">
- <arg type="b" name="main_services_only" direction="in" />
- <arg type="a{sv}" name="result" direction="out" />
- </method>
-
-
- <!-- Get statistics for services that have been indexed. Output is in string array format: [service, no of entities] -->
- <method name="GetStats">
- <arg type="aas" name="service_stats" direction="out" />
- </method>
-
-
- <!-- sets boolean options in tracker - option can be one of "Pause", "EnableIndexing", "LowMemoryMode", "IndexFileContents", "EnableEvolution" -->
- <method name="SetBoolOption">
- <arg type="s" name="option" direction="in" />
- <arg type="b" name="value" direction="in" />
- </method>
-
-
- <!-- sets integer based option values in tracker - option can be one of "Throttle", "IndexDelay" -->
- <method name="SetIntOption">
- <arg type="s" name="option" direction="in" />
- <arg type="i" name="value" direction="in" />
- </method>
-
- <!-- shutdown tracker service with optional reindex -->
- <method name="Shutdown">
- <arg type="b" name="reindex" direction="in" />
- </method>
-
-
- <!-- prompts tracker to send progress/state signals -->
-
- <method name="PromptIndexSignals"/>
-
-
- <!-- signal change in index status - states are "Initializing","Watching","Indexing","Pending","Optimizing","Idle","Shutdown"
- is_initial_index indicates if this is the first time index (or reindex)
- in_merge indicates merge indexing is taking place (or reindex)
- is_manual_paused indicates if user has manually paused the indexer
- is_battery_paused indicates if indexer is paused whilst on battery power
- is_io_paused indicates if indexer has paused itself as it has detected other apps writing to disk
- -->
- <signal name="IndexStateChange">
- <arg type="s" name="state" />
- <arg type="b" name="initial_index" />
- <arg type="b" name="in_merge" />
- <arg type="b" name="is_manual_paused" />
- <arg type="b" name="is_battery_paused" />
- <arg type="b" name="is_io_paused" />
- <arg type="b" name="is_indexing_enabled" />
- </signal>
-
- <!-- signal when index has completed -->
- <signal name="IndexFinished">
- <arg type="i" name="time_taken"/>
- </signal>
-
- <!-- signal progress of indexing - returns current service (Files/Conversations/Emails), folders_processed = number of folders/mail boxes indexed, folders_total = total number of folders/mail boxes -->
- <signal name="IndexProgress">
- <arg type="s" name="service"/>
- <arg type="s" name="current_uri" />
- <arg type="i" name="index_count"/>
- <arg type="i" name="folders_processed"/>
- <arg type="i" name="folders_total"/>
- </signal>
-
-
-
- </interface>
-
- <interface name="org.freedesktop.Tracker.Metadata">
-
- <!-- Retrieves an array of metadata values for the specified array of metadata keys for a service and id pair-->
- <method name="Get">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="keys" direction="in" />
- <arg type="as" name="values" direction="out" />
- </method>
-
- <!-- Sets specified metadata keys to the specified metadata values for a service and id pair-->
- <method name="Set">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="keys" direction="in" />
- <arg type="as" name="values" direction="in" />
- </method>
-
-
-
-
- <!--
- Registers a new metadata type. The metadata name must be namespaced with an appropriate class in the format "class.name"
-
- datatype argument for RegisterType should be one of the following:
- "index" (a string which is stored in a full text index for searching )
- "string" (a non-indexable string which will not show up in searches )
- "numeric" (a signed number which can be either an integer or a float)
- "date" (format should be "yyyy-mm-dd hh:mm:ss")
-
- Metadata defined here is considered non-embeddable and writable
-
- -->
- <method name="RegisterType">
- <arg type="s" name="name" direction="in" />
- <arg type="s" name="datatype" direction="in" />
- </method>
-
-
- <!-- Gets all details of a named metadata type -->
- <method name="GetTypeDetails">
- <arg type="s" name="name" direction="in" />
- <arg type="s" name="data_type" direction="out" />
- <arg type="b" name="is_embedded" direction="out" />
- <arg type="b" name="is_writable" direction="out" />
- </method>
-
- <!-- returns an array of all metadata types that are registered for a certain class
- You can enter "*" as the class to get all metadat types for all classes
- -->
- <method name="GetRegisteredTypes">
- <arg type="s" name="metadata_class" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
-
- <!-- returns an array of all metadata types that are writeable and registered for a certain class
- You can enter "*" as the class to get all metadat types for all classes that are writeable
- -->
- <method name="GetWriteableTypes">
- <arg type="s" name="metadata_class" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- returns an array of all metadata type classes that are registered -->
- <method name="GetRegisteredClasses">
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- returns an array of all unique values of given metadata types. Optionally a rdf query can be
- used to filter the results. The results are sorted based on the metadata fields either in
- ascending or descending order.
- -->
- <method name="GetUniqueValues">
- <arg type="s" name="service" direction="in" />
- <arg type="as" name="meta_types" direction="in" />
- <arg type="s" name="query" direction="in" />
- <arg type="b" name="descending" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-
- <!-- signal emitted whenever metadata for a service entity is changed. The keys are the metadata names that have changed -->
- <signal name="Changed">
- <arg type="s" name="service"/>
- <arg type="s" name="uri_path"/>
- <arg type="s" name="uri_name"/>
- <arg type="as" name="keys"/>
- <arg type="as" name="values"/>
- </signal>
-
-
-
-
- </interface>
-
- <interface name="org.freedesktop.Tracker.Keywords">
- <!-- calls for tags/keywords for any service object or file -->
-
- <!-- gets a list of all unique keywords/tags that are in use by the specified service irrespective of the uri or id of the entity
- Returns an array of string arrays in format [Keyword, KeywordCount]
- -->
- <method name="GetList">
- <arg type="s" name="service" direction="in" />
- <arg type="aas" name="value" direction="out" />
- </method>
-
-
- <!-- gets all unique keywords/tags for specified service and id -->
- <method name="Get">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="value" direction="out" />
- </method>
-
- <!-- Adds new keywords/tags for specified service and id -->
- <method name="Add">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="values" direction="in" />
- </method>
-
- <!-- removes all specified keywords/tags for specified service and id -->
- <method name="Remove">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="keywords" direction="in" />
- </method>
-
- <!-- removes all keywords/tags for specified service and id -->
- <method name="RemoveAll">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- </method>
-
- <!-- searches specified service for matching keyword/tag and returns an array of matching id values for the service-->
- <method name="Search">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="as" name="keywords" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- emitted whenever tags on an entity change -->
- <signal name="KeywordAdded">
- <arg type="s" name="service"/>
- <arg type="s" name="uri" />
- <arg type="s" name="keyword" />
- </signal>
-
- <signal name="KeywordRemoved">
- <arg type="s" name="service"/>
- <arg type="s" name="uri" />
- <arg type="s" name="keyword" />
- </signal>
-
-
-
-
- </interface>
-
-
- <interface name="org.freedesktop.Tracker.Search">
- <!-- generic search interface (see other interfaces for file/keyword specific searches)-->
-
- <!-- returns no of hits for the search_text on the servce -->
- <method name="GetHitCount">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="result" direction="out" />
- </method>
-
- <!-- returns [service name, no. of hits] for the search_text -->
- <method name="GetHitCountAll">
- <arg type="s" name="search_text" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-
-
-
- <!-- searches specified service for entities that match the specified search_text.
- Returns uri of all hits. -->
- <method name="Text">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- More detailed version of above. Searches specified service for entities that match the specified search_text.
- Returns hits in array format [uri, service, mime] -->
- <method name="TextDetailed">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-
-
- <!-- Returns a search snippet of text with matchinhg text enclosed in bold tags -->
- <method name="GetSnippet">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-
-
-
- <!-- searches a specific metadata field (field parameter) for a search term (search_text).
- The result is an array of uri/id's
- -->
- <method name="Metadata">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="field" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
-
-
- <!-- searches specified service for matching entities.
- The service parameter specifies the service which the query will be performed on
- The fields parameter specifies an array of aditional metadata fields to return in addition to the id field (which is returned as the "key" in the resultant dict/hashtable) and the service category. This can be null
- The optional search_text paramter specifies the text to search for in a full text search of all indexed fields
- The optional keyword search - a single keyword may be used here to filter the results.
- The optional query_condition parameter specifies an xml-based rdf query condition which is used to filter out the results
- The Offset parameter sets the start row of the returned result set (useful for paging/cursors). A value of 0 should be passed to get rows from the beginning.
- The max_hits parameter limits the size of the result set.
- The sort_by_service parameter optionally sorts results by their service category (if FALSE no service sorting is done)
- The result is a array of stringarrays in format [uri, service, field1, field2...] where field1 is the first specified field in the fields paramter and so on
-
- -->
- <method name="Query">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="as" name="fields" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="s" name="keyword" direction="in" />
- <arg type="s" name="query_condition" direction="in" />
- <arg type="b" name="sort_by_service" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-
- <!-- suggests an alternate spelling based on the word index
- -->
- <method name="Suggest">
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="maxdist" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-
-
- </interface>
-
-
-
-<!--
- File Specific calls
--->
- <interface name="org.freedesktop.Tracker.Files">
-
- <!-- Determines if the file is in tracker's database. The option auto_create if set to TRUE will register the file in the database if not already present -->
- <method name="Exists">
- <arg type="s" name="uri" direction="in" />
- <arg type="b" name="auto_create" direction="in" />
- <arg type="b" name="result" direction="out" />
- </method>
-
- <!-- creates a new entry for a file in tracker's database. This method is ueful when you want to tell Tracker about a file which it cannot see (EG a VFS file) or
- the file is located outside the watch/crawl path -->
- <method name="Create">
- <arg type="s" name="uri" direction="in" />
- <arg type="b" name="is_directory" direction="in" />
- <arg type="s" name="mime" direction="in" />
- <arg type="i" name="size" direction="in" />
- <arg type="i" name="mtime" direction="in" />
- </method>
-
- <!-- Removes the file entry from tracker's database-->
- <method name="Delete">
- <arg type="s" name="uri" direction="in" />
- </method>
-
-
- <!-- Get the Service subtype for the file -->
- <method name="GetServiceType">
- <arg type="s" name="uri" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-
- <!-- Get the "File.Content" field for a file and allows you to specify the offset and amount of text to retrieve -->
- <method name="GetTextContents">
- <arg type="s" name="uri" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_length" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-
-
- <!-- Retrieves a chunk of matching text of specified length that contains the search text in the File.Content field -->
- <method name="SearchTextContents">
- <arg type="s" name="uri" direction="in" />
- <arg type="s" name="text" direction="in" />
- <arg type="i" name="length" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-
-
- <!--
- Retrieves all files that match a service description
- -->
- <method name="GetByServiceType">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="file_service" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- Retrieves all non-vfs files of the specified mime type(s) -->
- <method name="GetByMimeType">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="as" name="mime_types" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- Retrieves all vfs files of the specified mime type(s) -->
- <method name="GetByMimeTypeVfs">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="as" name="mime_types" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-
- <!-- Refreshes various speicfied metadata for a file including basic metadata (stuff derived from stat calls), embedded tags, text contents and/or thumbnails -->
- <method name="RefreshMetadata">
- <arg type="s" name="uri" direction="in" />
- <arg type="b" name="basic" direction="in" />
- <arg type="b" name="embedded" direction="in" />
- <arg type="b" name="contents" direction="in" />
- <arg type="b" name="thumbnails" direction="in" />
- </method>
-
- <!-- returns mtime of file in seconds since epoch -->
- <method name="GetMTime">
- <arg type="s" name="uri" direction="in" />
- <arg type="i" name="result" direction="out" />
- </method>
-
- <!-- Retrieves all non-vfs files in a folder complete with all requested metadata fields. StringArray output is [uri, field1, field2...] -->
- <method name="GetMetadataForFilesInFolder">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="uri" direction="in" />
- <arg type="as" name="fields" direction="in" />
- <arg type="aas" name="values" direction="out" />
- </method>
-
-
- <!-- deprecated file specific calls (mostly used by Nautilus Search)-->
- <method name="SearchByTextAndMime">
- <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
- <arg type="s" name="text" direction="in" />
- <arg type="as" name="mimes" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
- <method name="SearchByTextAndMimeAndLocation">
- <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
- <arg type="s" name="text" direction="in" />
- <arg type="as" name="mimes" direction="in" />
- <arg type="s" name="location" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
- <method name="SearchByTextAndLocation">
- <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
- <arg type="s" name="text" direction="in" />
- <arg type="s" name="location" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
- <!-- end deprecated calls section-->
-
- </interface>
-</node>
diff --git a/data/tracker-stop-words.txt b/data/tracker-stop-words.txt
deleted file mode 100644
index 6b6a7377a..000000000
--- a/data/tracker-stop-words.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-a's able about above according
-accordingly across actually after afterwards
-again against ain't all allow
-allows almost alone along already
-also although always am among
-amongst an and
-anybody anyhow anyone anything anyway
-anyways anywhere apart appear appreciate
-appropriate are aren't around as
-aside ask asking associated at
-available away awfully be became
-because become becomes becoming been
-before beforehand behind being believe
-below beside besides best better
-between beyond both brief but
-by c'mon c's came can
-can't cannot cant cause causes
-certain certainly changes clearly co
-com come comes concerning consequently
-consider considering contain containing contains
-corresponding could couldn't course currently
-definitely described despite did didn't
-different do does doesn't doing
-don't done down downwards during
-each edu eg eight either
-else elsewhere enough entirely especially
-et etc even ever every
-everybody everyone everything everywhere ex
-exactly example except far few finally
-fifth first five followed following
-follows for former formerly forth
-four from further furthermore get
-gets getting given gives go
-goes going gone got gotten
-greetings had hadn't happens hardly
-has hasn't have haven't having
-he he's hello help hence
-her here here's hereafter hereby
-herein hereupon hers herself hi
-him himself his hither hopefully
-how howbeit however i'd i'll
-i'm i've ie if ignored
-immediate in inasmuch inc indeed
-indicate indicated indicates inner insofar
-instead int into inward is isn't
-it it'd it'll it's its
-itself just keep keeps kept
-know knows known last lately
-later latter latterly least less
-lest let let's like liked
-likely little look looking looks
-ltd mainly many may maybe
-me mean meanwhile merely might
-more moreover most mostly much
-must my myself name namely
-nd near nearly necessary need
-needs neither never nevertheless new
-next nine no nobody non
-none noone nor normally not
-nothing novel now nowhere obviously
-of off often oh ok
-okay old on once one
-ones only onto or
-others otherwise ought our ours
-ourselves out outside over overall
-own particular particularly per perhaps
-placed please plus possible presumably
-probably provides que quite qv
-rather rd re really reasonably
-regarding regardless regards relatively respectively
-right said same saw say
-saying says second secondly see
-seeing seem seemed seeming seems
-seen self selves sensible sent
-serious seriously seven several shall
-she should shouldn't since six
-so some somebody somehow someone
-something sometime sometimes somewhat somewhere
-soon sorry specified specify specifying
-still sub such sup sure
-t's take taken tell tends
-th than thank thanks thanx
-that that's thats the their
-theirs them themselves then thence
-there there's thereafter thereby therefore
-therein theres thereupon these they
-they'd they'll they're they've think
-third this thorough thoroughly those
-though three through throughout thru
-thus to together too took
-toward towards tried tries truly
-try trying twice two un
-under unfortunately unless unlikely until
-unto up upon us use
-used useful uses using usually
-value various very via viz
-vs want wants was wasn't
-way we we'd we'll we're
-we've welcome well went were
-weren't what what's whatever when
-whence whenever where where's whereafter
-whereas whereby wherein whereupon wherever
-whether which while whither who
-who's whoever whole whom whose
-why will willing wish with
-within without won't wonder would
-would wouldn't yes yet you
-you'd you'll you're you've your
-yours yourself yourselves zero
diff --git a/data/tracker.cfg b/data/tracker.cfg
deleted file mode 100644
index 932d03213..000000000
--- a/data/tracker.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-[Tracker]
-WatchDirectoryRoots=$Home/Documents;$Home/Desktop;
-IndexDesktopFiles=TRUE
-IndexEpiphanyBookmarks=TRUE
-IndexEpiphanyHistory=TRUE
-IndexFirefoxBookmarks=TRUE
-IndexFirefoxHistory=TRUE
-DBMemoryLimit=16M
-
-
diff --git a/data/tracker.service.in b/data/tracker.service.in
deleted file mode 100644
index 0e3eca58b..000000000
--- a/data/tracker.service.in
+++ /dev/null
@@ -1,3 +0,0 @@
-[D-BUS Service]
-Name=org.freedesktop.Tracker
-Exec=@bindir@/trackerd
diff --git a/docs/Makefile.am b/docs/Makefile.am
deleted file mode 100644
index f147c486e..000000000
--- a/docs/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-if HAVE_GNOME
-tst = tracker-search-tool.1
-endif
-
-if ENABLE_TRACKERAPPLET
-ta = tracker-applet.1
-endif
-
-if ENABLE_PREFERENCES
-tp = tracker-preferences.1
-endif
-
-man_MANS = tracker-extract.1 tracker-files.1 tracker-meta-folder.1 tracker-query.1 tracker-search.1 tracker-stats.1 trackerd.1 \
- tracker-thumbnailer.1 tracker-tag.1 tracker-status.1 tracker.cfg.5 tracker-services.7 $(tst) $(ta) $(tp)
-
-EXTRA_DIST = $(man_MANS)
diff --git a/docs/tracker-applet.1 b/docs/tracker-applet.1
deleted file mode 100644
index dea4219d3..000000000
--- a/docs/tracker-applet.1
+++ /dev/null
@@ -1,21 +0,0 @@
-.TH tracker-applet 1 "November, 2007" GNU "User Commands"
-
-.SH NAME
-tracker-applet \- The tracker tray-icon and on-click-search-entry
-
-.SH SYNOPSIS
-.B tracker-applet
-
-.SH DESCRIPTION
-.B tracker-applet
-is a
-.BR trackerd (1)
-system tray icon, meant to provide a fast way of accessing tracker's
-database, configuring tracker through
-.BR tracker-preferences
-and displaying information, by means of popups, icon changes and the
-statistics page to the user.
-
-.SH SEE ALSO
-.BR tracker-search-tool (1),
-.BR trackerd (1).
diff --git a/docs/tracker-extract.1 b/docs/tracker-extract.1
deleted file mode 100644
index aef39f1ee..000000000
--- a/docs/tracker-extract.1
+++ /dev/null
@@ -1,16 +0,0 @@
-.TH tracker-extract 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-extract \- extract metadata from file and display them.
-
-.SH SYNOPSYS
-.B tracker-extract
-.I file
-
-.SH DESCRIPTION
-.B tracker-extract
-read the file provided in paramater and extract the metadata from this
-file; then it displays the metadata on the standard output.
-
-.SH SEE ALSO
-.BR trackerd (1)
diff --git a/docs/tracker-files.1 b/docs/tracker-files.1
deleted file mode 100644
index 5f32b0a4f..000000000
--- a/docs/tracker-files.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH tracker-files 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-files \- Return files filtered by the mime type or their category
-(called ServiceType)
-
-.SH SYNOPSIS
-.B tracker-files
-[-s ServiceType|-m MimeType]
-
-.SH DESCRIPTION
-.B tracker-files
-returns files that match the ServiceType or the mime-type provided;
-you can
-
-.SH OPTIONS
-.TP
-\-s ServiceType
-Specify the kind of the files you want to find. For more information on
-valid ServiceType see
-.BR tracker-services (7).
-
-.TP
-\-m MimeType
-Specify the mime-type of the files you want to find; see
-http://www.iana.org/assignments/media-types/ for the complete list of
-existing mime-type.
-
-.SH SEE ALSO
-.BR trackerd (1),
-.BR tracker-services (7).
diff --git a/docs/tracker-meta-folder.1 b/docs/tracker-meta-folder.1
deleted file mode 100644
index 168015b18..000000000
--- a/docs/tracker-meta-folder.1
+++ /dev/null
@@ -1,15 +0,0 @@
-.TH tracker-meta-folder 1 "July, 2007" GNU "User Commands"
-
-.SH NAME
-tracker-meta-folder \- return list of files indexed by tracker for a folder
-
-.SH SYNOPSIS
-.B tracker-meta-folder
-folder
-
-.SH DESCRIPTION
-.B tracker-meta-folder
-returns the list of files indexed by tracker and stored under the folder provided as parameter.
-
-.SH SEE ALSO
-.BR trackerd(1).
diff --git a/docs/tracker-preferences.1 b/docs/tracker-preferences.1
deleted file mode 100644
index 32bde034f..000000000
--- a/docs/tracker-preferences.1
+++ /dev/null
@@ -1,17 +0,0 @@
-.TH tracker-preferences 1 "November, 2007" GNU "User Commands"
-
-.SH NAME
-tracker-preferences \- Preferences editor for trackerd
-
-.SH SYNOPSIS
-.B tracker-preferences
-
-.SH DESCRIPTION
-.B tracker-preferences
-is a graphical configuration front end for the
-.BR trackerd (1)
-indexer and search daemon.
-
-.SH SEE ALSO
-.BR tracker-search-tool (1),
-.BR trackerd (1).
diff --git a/docs/tracker-query.1 b/docs/tracker-query.1
deleted file mode 100644
index b019b86c2..000000000
--- a/docs/tracker-query.1
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH tracker-query 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-query \- command line tool to query tracker database
-
-.SH SYNOPSIS
-.B tracker-query
-.I [OPTIONS] query-file.rdf [MetaDataFields...]
-
-.SH DESCRIPTION
-.B tracker-query
-Exectutes an RDF query and prints the result. Additionally the behavior
-can be customized using below described options.
-
-.SH OPTIONS
-.TP
-\-?, --help
-Show a brief help message.
-
-.TP
-\-s, --service=ServiceName
-Search for files from a specific service. ServiceName has to be one of
-trackers services. For mor information on services, see
-.BR tracker-services (7).
-
-.TP
-\-t, --search-term=SerchTerm
-Adds a full text search filter to the query.
-
-.TP
-\-k, --keyword=Keyword
-Adds a keyword filter to the query.
-
-.SH "SEE ALSO"
-.BR trackerd (1),
-.BR tracker-services (7).
diff --git a/docs/tracker-search-tool.1 b/docs/tracker-search-tool.1
deleted file mode 100644
index 3ebcb5063..000000000
--- a/docs/tracker-search-tool.1
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH tracker-search-tool 1 "July, 2007" GNU "User Commands"
-
-.SH NAME
-tracker-search-tool \- Gnome Tracker Search Tool
-
-.SH SYNOPSIS
-\fBtracker-search-tool\fR [\fIoptions\fR] [\fIEXPRESSION\fR]
-
-.SH DESCRIPTION
-.B tracker-search-tool
-is a graphical search front end for Gnome.
-It uses
-.B trackerd
-to get instant search results.
-
-.SH OPTIONS
-.SS "Help Options:"
-.TP
-\-?, \fB\-\-help\fR
-Show help options
-.TP
-\fB\-\-help\-all\fR
-Show all help options
-.TP
-\fB\-\-help\-gtk\fR
-Show GTK+ Options
-.TP
-\fB\-\-help\-bonobo\-activation\fR
-Show Bonobo Activation options
-.TP
-\fB\-\-help\-gnome\fR
-Show GNOME options
-.TP
-\fB\-\-help\-gnome\-session\fR
-Show session management options
-.TP
-\fB\-\-help\-gnome\-ui\fR
-Show GNOME GUI options
-.SS "Application Options:"
-.TP
-\fB\-s\fR, \fB\-\-service\fR=\fISERVICE\fR
-Search from a specific service. See
-.BR tracker-services (7)
-for more information.
-.TP
-\fB\-\-display\fR=\fIDISPLAY\fR
-X display to use
-
-.SH SEE ALSO
-.BR tracker-search (1),
-.BR trackerd (1),
-.BR tracker-services (7).
-
-.SH AUTHOR
-tracker-search-tool was written by Jamie McCracken <jamiemcc@gnome.org>.
-.PP
-This manual page was written by Michael Biebl <biebl@debian.org>,
-for the Debian project (but may be used by others).
diff --git a/docs/tracker-search.1 b/docs/tracker-search.1
deleted file mode 100644
index 79fe9d9e7..000000000
--- a/docs/tracker-search.1
+++ /dev/null
@@ -1,39 +0,0 @@
-.TH tracker-search 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-search \- command line tool to search documents indexed by
-trackerd
-
-.SH SYNOPSIS
-.B tracker-search
-[OPTIONS]
-.I expression
-
-.SH DESCRIPTION
-.B tracker-search
-searches all by
-.BR trackerd(1)
-indexed content for
-.I expression.
-.I Expression
-can be any number of words to be searched for.
-
-.SH OPTIONS
-.TP
-\-?, --help
-Give a short help message.
-
-.TP
-\-l, --limit=N
-Limit search to N results.
-
-.TP
-\-s, --service=SERVICE
-Search by a specific service. For more information on tracker services,
-see
-.BR tracker-services (7).
-
-.SH "SEE ALSO"
-.BR trackerd (1),
-.BR tracker-search-tool (1),
-.BR tracker-services (7).
diff --git a/docs/tracker-services.7 b/docs/tracker-services.7
deleted file mode 100644
index 77d72b60b..000000000
--- a/docs/tracker-services.7
+++ /dev/null
@@ -1,60 +0,0 @@
-.TH tracker-services 7 "July 2007" GNU "Conventions"
-
-.SH NAME
-tracker-services \- service types of trackerd
-
-.SH INTRODUCTION
-Trackerd understands a number of different services which are used to
-group search results and documents together. All searches and queries can
-be refined by specifying a service to search from.
-.PP
-For example one could search for "Roses" in the service Conversations
-which would only return hits from chat conversations.
-
-.SH SERVICE TYPES
-.TP
-Files
-Search for files only. This does not include Emails or Conversations.
-.TP
-Folders
-Search for folders i.e. directories.
-.TP
-Documents
-Searches for general documents like word processing,
-spreadsheets or text files.
-.TP
-Emails
-Searches for Emails.
-.TP
-EmailAttachments
-Search es for Email attachments.
-.TP
-Music
-Search for music files.
-.TP
-Images
-Search for image files.
-.TP
-Videos
-Search for video files.
-.TP
-Text
-Search for text files, like word processing files, but e.g. not
-spreadsheets.
-.TP
-Development
-Search for development files. This includes make files,
-source code files and the like.
-.TP
-Other
-Search for documents which could not be put in one of the other services.
-.TP
-Applications
-Search for applications.
-
-.SH SEE ALSO
-.BR trackerd (1),
-.BR tracker-search (1),
-.BR tracker-search-tool (1),
-.BR tracker-query (1),
-.BR tracker-files (1).
diff --git a/docs/tracker-stats.1 b/docs/tracker-stats.1
deleted file mode 100644
index 63c21d8ca..000000000
--- a/docs/tracker-stats.1
+++ /dev/null
@@ -1,24 +0,0 @@
-.TH tracker-stats 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-stats\- command line tool that provides statistics on files
-indexed by
-.B trackerd
-
-.SH SYNOPSIS
-.B tracker-stats [OPTIONS]
-
-.SH DESCRIPTION
-.B tracker-stats
-returns statistics on files indexed by tracker indexing daemon, ordered
-by service type.
-
-.SH OPTIONS
-.TP
-\-?, --help
-Show a brief help message.
-
-.SH "SEE ALSO"
-.BR trackerd (1),
-.BR tracker-status (1),
-.BR tracker-services (7).
diff --git a/docs/tracker-status.1 b/docs/tracker-status.1
deleted file mode 100644
index 2993e869d..000000000
--- a/docs/tracker-status.1
+++ /dev/null
@@ -1,17 +0,0 @@
-.TH tracker-status 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-status\- command line tool that reports the trackerd status
-
-.SH SYNOPSIS
-.B tracker-status
-
-.SH DESCRIPTION
-.B tracker-status
-Prints trackerd's status. Which can be one of the following:
-.PP
-Initializing, Watching, Indexing, Pending, Optimizing, Idle, Shutdown.
-
-.SH SEE ALSO
-.BR trackerd (1),
-.BR tracker-stats (1)
diff --git a/docs/tracker-tag.1 b/docs/tracker-tag.1
deleted file mode 100644
index 6665354b2..000000000
--- a/docs/tracker-tag.1
+++ /dev/null
@@ -1,45 +0,0 @@
-.TH tracker-tag 1 "July, 2007" GNU "User Commands"
-
-.SH NAME
-tracker-tag \- command line tool for setting and searching tags/keywords
-
-.SH SYNOPSIS
-\fBtracker-tag\fR [\fIoptions\fR] \fIFILE\fR...
-
-.SH DESCRIPTION
-.B tracker-tag
-allows you to modify the tags that are associated with a file.
-The actual information is stored in a
-.B tracker
-database.
-
-.SH OPTIONS
-.TP
-.B \-?, \-\-help
-Show summary of options.
-.TP
-.B \-a, \-\-add=TAG
-Add specified tag to a file.
-.TP
-.B \-r, \-\-remove=TAG
-Remove specified tag from a file.
-.TP
-.B \-R, \-\-remove-all
-Remove all tags associated with a file.
-.TP
-.B \-l, \-\-list
-List all tags associated with a file.
-.br
-If no file name is given, all known tags and their count is listed.
-.TP
-.B \-s, \-\-search=TAG
-Search for files matching the given tag.
-
-.SH SEE ALSO
-.BR trackerd (1).
-
-.SH AUTHOR
-tracker-tag was written by Jamie McCracken <jamiemcc@gnome.org>.
-.PP
-This manual page was written by Michael Biebl <biebl@debian.org>,
-for the Debian project (but may be used by others).
diff --git a/docs/tracker-thumbnailer.1 b/docs/tracker-thumbnailer.1
deleted file mode 100644
index 7b207198b..000000000
--- a/docs/tracker-thumbnailer.1
+++ /dev/null
@@ -1,48 +0,0 @@
-.TH tracker-thumbnailer 1 "July, 2007" GNU "User Commands"
-
-.SH NAME
-tracker-thumbnailer \- create freedesktop.org compliant thumbnails
-
-.SH SYNOPSIS
-\fBtracker-thumbnailer\fR \fIFILE\fR \fIMIMETYPE\fR \fIICONSIZE\fR
-
-.SH DESCRIPTION
-.B tracker-thumbnailer
-takes an image file as input and produces a thumbnail which is compliant
-to the freedesktop.org thumbnail specification.
-.BR
-It relies on external tools like \fBconvert\fR to do the
-actual transformation.
-.PP
-.B tracker-thumbnailer
-is called by
-.B trackerd
-to create thumbnails which are then used by frontends like
-.B tracker-search-tool
-to illustrate the search results.
-
-.SH OPTIONS
-.TP
-\fIFILE\fR
-Image file for which a thumbnail should be created.
-.TP
-\fIMIMETYPE\fR
-Mime type of the image/document, e.g. image/png or application/pdf.
-If no thumbnailer is installed for this mime type, \fBtracker-thumbnailer\fR
-will output a error message.
-.TP
-\fIICONSIZE\fR
-Size of the generated thumbnail.
-Currently supported is only \fBnormal\fR, which is 128x128 pixel.
-
-.SH SEE ALSO
-.BR trackerd (1),
-.BR tracker-search (1),
-.BR tracker-search-tool (1),
-.BR convert (1).
-
-.SH AUTHOR
-tracker-thumbnailer was written by Edward Duffy <eduffy@gmail.com>.
-.PP
-This manual page was written by Michael Biebl <biebl@debian.org>,
-for the Debian project (but may be used by others).
diff --git a/docs/tracker.cfg.5 b/docs/tracker.cfg.5
deleted file mode 100644
index 06b398895..000000000
--- a/docs/tracker.cfg.5
+++ /dev/null
@@ -1,206 +0,0 @@
-.TH tracker.cfg 5 "July 2007" GNU "Configuration Files"
-
-.SH NAME
-tracker.cfg \- configuration file for the trackerd search daemon
-
-.SH DESCRIPTION
-The tracker.cfg file resides in the $HOME/.config/tracker directory.
-.PP
-The file is organized in sections, each section having a number of
-related options.
-.SS Comments
-Empty lines and those starting with ; or # are ignored.
-.SS Value Types
-.TP
-VALUE
-Denotes a positive integer.
-.TP
-BOOLEAN
-Denotes either true or false.
-.TP
-Any other value
-Any special keyword is to be replaced by one of the documented valid
-values, e.g. pathnames or language codes.
-
-.SH EXAMPLE
-.PP
-[General]
-.PP
-Verbosity=0
-.PP
-InitialSleep=50
-
-.SH Sections
-.SS General
-This section may contain general settings for trackerd.
-.TP
-Verbosity=VALUE
-Specifies how verbose trackerd should be logging. VALUE can be one of
-0 through 3.
-.RS
-.TP
-0
-Show no but error and critical output, this is the default behavior.
-.TP
-1
-Show minimal output, i.e. not just errors.
-.TP
-2
-Show verbose output.
-.TP
-3
-Show debugging output, enable this only if you know what you are doing.
-.RE
-.TP
-LowMemoryMode=BOOLEAN
-Enables low memory mode. Tracker may be slightly less fast at
-indexing/search but also needs less system memory.
-.TP
-InitialSleep=VALUE
-Sets the initial sleep time for trackerd. This is a number of seconds
-that trackerd wait before indexing.
-
-.SS Watches
-.TP
-WatchDirectoryRoots=DIRECTORY[;MORE;DIRECTORIES]
-Sets the directories trackerd should watch and index. Defaults to the
-users home directory.
-.TP
-NoWatchDirectory=DIRECTORY[;MORE;DIRECTORIES]
-Sets directories trackerd should ignore, i.e. not index or watch.
-.TP
-CrawlDirectory=DIRECTORY[;MORE;DIRECTORIES]
-Sets directories trackerd should index once but not watch for changes.
-.TP
-EnableWatching=BOOLEAN
-Enables or disables watching of directories, i.e. re-index files when
-they change.
-
-.SS Indexing
-This section may contain indexing related options.
-.TP
-Throttle=VALUE
-Sets the throttling value for the Indexer. VALUE can be any number from
-0 to 20 whereas higher values decrease indexing speed.
-.TP
-EnableIndexing=BOOLEAN
-Enable or disable the indexer.
-.TP
-EnableFileContentIndexing=BOOLEAN
-Enable or disable indexing of files text contents.
-.TP
-EnableThumbnails=BOOLEAN
-Enable or disable the generation of thumbnails.
-.TP
-NoIndexFileTypes=FILEGLOB[;MORE;FILEGLOBS...]
-List of partial file patterns (glob) separated by semicolons that specify
-files not to index. Only basic metadata (i.e. information retrieved by
-stat(2)) is indexed.
-.TP
-MinWordLength=VALUE
-Sets the minimum word length to index. Words having less then VALUE
-characters will not be indexed.
-.TP
-MaxWordLength=VALUE
-Sets the maximum word length to index. Words having more then VALUE
-characters will not be indexed.
-.TP
-Language=LANGCODE
-Sets the language specific stemmer and stopword list to use. Valid
-values are:
-.RS
-.TP
-en
-English
-.TP
-da
-Danish
-.TP
-nl
-dutch
-.TP
-fi
-Finnish
-.TP
-fr
-French
-.TP
-de
-German
-.TP
-it
-Italian
-.TP
-nb
-Norwegian
-.TP
-pt
-Portuguese
-.TP
-ru
-Russian
-.TP
-es
-Spanish
-.TP
-sv
-Swedish
-.RE
-.TP
-EnableStemmer=BOOLEAN
-Enable or disable the stemmer.
-.TP
-BatteryIndex=BOOLEAN
-Enable or disable indexing when on battery power.
-.TP
-BatteryIndexInitial=BOOLEAN
-Enable or disable initial index sweep (i.e. the very first indexing)
-when on battery power.
-
-.SS Emails
-This section may contain Email specific options.
-.TP
-IndexEvolutionEmails=BOOLEAN
-Enable or disable indexing for Evolution emails.
-.TP
-IndexModestEmails=BOOLEAN
-Enable or disable indexing for Modest emails.
-.TP
-IndexThunderbirdEmails=BOOLEAN
-Enable or disable indexing for Thunderbird emails.
-
-.SS Performance
-Trackerd performance related options.
-.TP
-MaxTextToIndex=VALUE
-Maximum size of text in bytes to index from a file's text contents.
-Defaults to 1048576.
-.TP
-MaxWordsToIndex=VALUE
-Maximum number of unique words to index from a file's text contents.
-Defaults to 10000.
-.TP
-OptimizationSweepCount=VALUE
-Specifies the no of entities to index before determining whether to
-perform index optimization. Default to 10000.
-.TP
-MaxBucketCount=VALUE
-Sets the maximum bucket count for the indexer. Defaults to 524288.
-.TP
-MinBucketCount=VALUE
-Sets the minimum bucket count. Defaults to 65536
-.TP
-Divisions=VALUE
-Sets no. of divisions of the index file. Default to 4.
-.TP
-BucketRatio=VALUE
-Selects the desired ratio of used records to buckets to be used when
-optimizing index (should be a value between 0 and 4). Defaults to 1.
-.TP
-Padding=VALUE
-Alters how much padding is used to prevent index relocations. Higher
-values improve indexing speed but waste more disk space. Value should
-be in range (1..8). Defaults to 2.
-
-.SH SEE ALSO
-.BR tracker(1)
diff --git a/docs/trackerd.1 b/docs/trackerd.1
deleted file mode 100644
index acd2a9b39..000000000
--- a/docs/trackerd.1
+++ /dev/null
@@ -1,112 +0,0 @@
-.TH trackerd 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-trackerd \- indexer daemon for tracker search tool
-
-.SH SYNOPSIS
-.B trackerd [OPTIONS]
-
-.SH DESCRIPTION
-.B Trackerd
-provides both a powerful indexer and an extensible metadata database. It
-indexes files including the text contents and any available metadata to
-provide fast search services.
-.PP
-By default, trackerd will index all files in a user's home directory (with
-the exception of hidden files). This can be overridden by specifying
-one or more directories to be indexed instead in the configuration file
-($HOME/.config/tracker/tracker.cfg) and/or by using the --include-dir
-option to specify other directories to be indexed.
-
-.SH OPTIONS
-.TP
-\-?, --help
-A brief help message including some examples.
-
-.TP
-\-e, --exclude-dir=/PATH/DIR
-Specifies a directory to be excluded from indexing (including all
-subdirectories). Can be repeated to exclude more than one directory.
-
-.TP
-\-i, --include-dir=/PATH/DIR
-Specifies a directory to be included for indexing. All non-hidden
-subdirectories of the specified directory will also be indexed. If this
-param is set then the user's home directory is no longer indexed by
-default (you can still add the home directory with this option).
-
-.TP
-\-c, --crawl-dir=/PATH/DIR
-Specify directories to crawl. Crawling of directories means index every
-indexable content but do not watch for directory or file changes.
-
-.TP
-\-n, --no-indexing
-Prevent
-.B trackerd
-from indexing and watching. Searching is still
-possible.
-
-.TP
-\-v, --verbosity=value
-Makes trackerd log/print more information. Value can be one of 0 - show
-only errors, 1 - show only minimal output, 2 - show detailed output and
-3 - show debug output (don't do this, unless you know what you are doing).
-
-.TP
-\-t, --throttle=value
-Value to throttle indexing. Value must be in range 0-20, with lower
-values increasing indexing speed.
-
-.TP
-\-m, --low-memory
-Minimise memory usage. Note that this may slow down indexing.
-
-.TP
-\-s, --initial-sleep=value
-Set the initial sleep time in seconds. This is the time
-.B trackerd
-waits at startup before indexing.
-
-.TP
-\-l, --language=value
-Language to use for stemmer and stop words list (ISO 639-1 2 characters
-code).
-
-.TP
-\-R, --reindex
-This forces trackerd to re-index all watched files and directories.
-Since every watched directory and any previously indexed file has to be
-read and processed again, this may degrade the whole system performance,
-see also --throttle.
-
-.TP
-\-f, --fatal-errors
-Makes any errors fatal, i.e. forces abortion of
-.B trackerd.
-This switch is only useful for debugging.
-
-.SH FILES
-.I $HOME/.config/tracker/tracker.cfg
-.RS
-Trackerd user configuration file. See
-.BR tracker.cfg (5)
-and
-.BR tracker-preferences (1)
-for further details.
-
-.SH NOTES
-.B Trackerd
-needs a
-.BR dbus-daemon(1)
-to be running within your current session.
-
-.SH SEE ALSO
-.BR tracker-search-tool (1),
-.BR tracker-search (1),
-.BR tracker-tag (1),
-.BR tracker-stats (1),
-.BR tracer-query (1),
-.BR tracker-meta-folder (1),
-.BR tracker-files (1),
-.BR tracker-services (7).
diff --git a/extensions/firefox-extension/Makefile b/extensions/firefox-extension/Makefile
deleted file mode 100644
index cce84c3da..000000000
--- a/extensions/firefox-extension/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-
-PROJECT = firefox-extension-xesam
-VERSION = 1.0.1
-
-all: $(PROJECT).xpi
-
-XPI_FILES = \
- chrome.manifest \
- install.rdf \
- chrome/content/contents.rdf \
- chrome/content/beagleOverlay.js \
- chrome/content/beagleOverlay.xul \
- chrome/content/beaglePrefs.js \
- chrome/content/beaglePrefs.xul \
- chrome/content/beagleAddFilter.xul \
- chrome/content/beagleAddFilter.js \
- chrome/content/indexLink.xul \
- chrome/content/indexLink.js \
- chrome/content/indexBookmark.js \
- chrome/content/md5.js \
- chrome/content/utils.js \
- chrome/content/i18n.js \
- chrome/content/json.js \
- \
- chrome/content/jslib/jslib.js \
- chrome/content/jslib/modules.js \
- chrome/content/jslib/debug/debug.js \
- chrome/content/jslib/io/dir.js \
- chrome/content/jslib/io/dirUtils.js \
- chrome/content/jslib/io/file.js \
- chrome/content/jslib/io/fileUtils.js \
- chrome/content/jslib/io/filesystem.js \
- \
- chrome/locale/en-US/contents.rdf \
- chrome/locale/en-US/beagle.dtd \
- chrome/locale/en-US/beagle.properties \
- \
- chrome/skin/classic/contents.rdf \
- chrome/skin/classic/beagle-big.png \
- chrome/skin/classic/beagle-disabled.png\
- chrome/skin/classic/beagle-error.png \
- chrome/skin/classic/beagle.png\
- chrome/skin/classic/overlay.css
-
-$(PROJECT).xpi: $(XPI_FILES)
- zip -q9 $@ $^
-
-
-EXTRA_DIST = \
- $(XPI_FILES)
-
-CLEANFILES = \
- $(PROJECT).xpi
diff --git a/extensions/firefox-extension/README b/extensions/firefox-extension/README
deleted file mode 100644
index 8a6203f9f..000000000
--- a/extensions/firefox-extension/README
+++ /dev/null
@@ -1,34 +0,0 @@
-
-Beagle Extension: Index webpages you visit using the Beagle Indexing Engine.
-An Extension for the Firefox Browser.
-
-Installing:
- Open the generated beagle.xpi in Firefox or Mozilla.
- This will fire the Extension Manager.
-
-Features:
- Uses beagle's IndexingService backend to index data.
- Using domain/wildcard/regular expression to exclude/include the urls
- Import/export preferences
- Auto index when browsing (just click the status icon for enable/disable auto-indexing)
- - Index referrer URL while indexing web-pages
- On-demand indexing
- - Index current page
- - Index link (for all the different filetypes beagle filters)
- - Index image , the alt text is indexed.
- - Store the URL of the current page while indexing, which may be useful while searching
- Index firefox bookmarks
- - Name, url, shortcut url(keywords),description and the path (name of ancestor folders is saved.
- - Menu item bookmarks->Index The Modified Bookmarks
- - Index the bookmarks when the window close ( you can turn it on/off in preference window)
- - Last-index-date is saved . So only new bookmarks will be indexed.
-
-Debug:
- You can set browser.dom.window.dump.enabled to true, in about:config. Open firefox in terminal, then you can see the debug information. You should also check javascript error console.
-
-Localization:
- Add your localization files to chrome/locale/your-language/
-
-Visit http://beagle-project.org/Browser_Extension for details.
-This extension was written as a part of Google Summer of Code project, 2007 by Tao Fei (filia.tao@gmail.com).
-
diff --git a/extensions/firefox-extension/chrome.manifest b/extensions/firefox-extension/chrome.manifest
deleted file mode 100644
index f8e626d07..000000000
--- a/extensions/firefox-extension/chrome.manifest
+++ /dev/null
@@ -1,6 +0,0 @@
-content beagle chrome/content/
-locale beagle en-US chrome/locale/en-US/
-skin beagle classic/1.0 chrome/skin/classic/
-overlay chrome://browser/content/browser.xul chrome://beagle/content/beagleOverlay.xul
-overlay chrome://navigator/content/navigator.xul chrome://beagle/content/beagleOverlay.xul
-
diff --git a/extensions/firefox-extension/chrome/content/beagleAddFilter.js b/extensions/firefox-extension/chrome/content/beagleAddFilter.js
deleted file mode 100755
index eda18bf8c..000000000
--- a/extensions/firefox-extension/chrome/content/beagleAddFilter.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function beaglePrefsAddFilterClicked() {
- var pattern = document.getElementById('beagle.add.filter.pattern').value;
- var name = document.getElementById('beagle.add.filter.name').value;
- var patternType = document.getElementById('beagle.add.filter.patterntype').selectedItem.value;
- var type = window.arguments[0];
- var elementId = 'beagle.'+type+'.list';
- var listbox = window.opener.document.getElementById(elementId);
- appendRow(listbox,name,pattern,patternType);
-}
-
-
diff --git a/extensions/firefox-extension/chrome/content/beagleAddFilter.xul b/extensions/firefox-extension/chrome/content/beagleAddFilter.xul
deleted file mode 100755
index dea165e1c..000000000
--- a/extensions/firefox-extension/chrome/content/beagleAddFilter.xul
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE overlay SYSTEM "chrome://beagle/locale/beagle.dtd">
-
-<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-
-
-<dialog id="beagle.addPattern"
- buttons="accept,cancel"
- title="&beagle.pref.filter.add.dlg.title;"
- ondialogaccept="beaglePrefsAddFilterClicked();"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<script type="application/x-javascript"
- src="chrome://beagle/content/utils.js" />
-<script type="application/x-javascript"
- src="chrome://beagle/content/beagleAddFilter.js" />
-
-<grid flex="1">
- <columns>
- <column/>
- <column flex="1"/>
- </columns>
- <rows>
- <row>
- <label>&beagle.pref.filter.name.label;</label><textbox id="beagle.add.filter.name" />
- </row>
- <row>
- <label>&beagle.pref.filter.patterntype.label;</label>
- <menulist id="beagle.add.filter.patterntype">
- <menupopup>
- <menuitem value="domain" label="domain" />
- <menuitem value="wildcard" label="wildcard"/>
- <menuitem value="regular expression" label="regular expression"/>
- </menupopup>
- </menulist>
- </row>
- <row>
- <label>&beagle.pref.filter.pattern.label;</label><textbox id="beagle.add.filter.pattern" />
- </row>
- </rows>
-</grid>
-
-</dialog>
-
diff --git a/extensions/firefox-extension/chrome/content/beagleOverlay.js b/extensions/firefox-extension/chrome/content/beagleOverlay.js
deleted file mode 100644
index 761efa599..000000000
--- a/extensions/firefox-extension/chrome/content/beagleOverlay.js
+++ /dev/null
@@ -1,709 +0,0 @@
-/*
- * Beagle Extension: Index webpages you visit using the Beagle Indexing Engine.
- * An Extension for the Firefox Browser.
- */
-
-var beagle = {
- //some constant
- RUN_BEAGLE_NOT_FOUND:-1,
- RUN_INITED: 0,
- RUN_ENABLED : 1,
- RUN_DISABLED : 2,
- RUN_ERROR : 3,
-
- pref : beaglePref,
-
- ENV:Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment),
-
- FILE_UTILS:new FileUtils(),// js lib file utils
-
- /**
- *@see http://www.xulplanet.com/references/xpcomref/comps/c_embeddingbrowsernsWebBrowserPersist1.html
- */
- get PersistMask(){
- var comp = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
- return (comp.PERSIST_FLAGS_FROM_CACHE |
- comp.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
- comp.PERSIST_FLAGS_NO_BASE_TAG_MODIFICATIONS |
- comp.PERSIST_FLAGS_DONT_FIXUP_LINKS |
- comp.PERSIST_FLAGS_DONT_CHANGE_FILENAMES |
- comp.PERSIST_FLAGS_CLEANUP_ON_FAILURE);
- },
-
- get EncodeMask(){
- var comp = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
- return (comp.ENCODE_FLAGS_RAW | comp.ENCODE_FLAGS_ABSOLUTE_LINKS);
- },
-
- get STATUS_ICON(){
- return document.getElementById('beagle-notifier-status');
- },
- /**
- * beagle data path (should be ~/.beagle/ToIndex)
- */
- dataPath : null,
-
-
- /**
- * the path to beagle search ,it is used for search (for link/page/text)
- */
- get beagleSearchPath() {
- var path = this.ENV.get("PATH");
- if (path) {
- var split = path.split(':');
- var idx = 0;
- while (idx < split.length)
- {
- var trypath = split[idx++] + '/' + "beagle-search";
- if (this.FILE_UTILS.exists(trypath))
- return trypath;
- }
- }
- return undefined;
- },
-
- /**
- * save the tasks for the purpose of extra meta data
- */
- tasks: [],
-
- /**
- * always call this before any index work begins
- */
- startTask : function(url,extrameta)
- {
- this.tasks[url] = {meta:extrameta};
- },
-
- /**
- * get the content file path for a give url and type
- * type can be "web" or "bookmark"
- */
- getContentPath: function(url,type)
- {
- if(typeof type == "undefined")
- type = "web";
- var hash = hex_md5(url);
- return this.dataPath + "/firefox-xesam-"+ type + "-" + hash;
-
- },
-
- /**
- * get the meta file path for a give url and type
- * type can be "web" or "bookmark"
- */
- getMetaPath: function(url,type)
- {
- if(typeof type == "undefined")
- type = "web";
- var hash = hex_md5(url);
- return this.dataPath + "/.firefox-xesam-"+ type + "-" + hash;
- },
-
- /**
- * init beagle
- * check environment
- * init state
- * init some varible
- * add event listeners
- * import pref from oldExtension (if beagle.first.run)
- */
- init : function()
- {
- log("init");
- if(!this.checkEnv())
- {
- this.runStatus = this.RUN_BEAGLE_NOT_FOUND;
- this.error(_("beagle_not_found"));
- }
- else
- {
- if(this.pref.get('beagle.autoindex.active'))
- {
- this.enable();
- }
- else
- {
- this.disable();
- }
- this.dataPath = this.ENV.get("HOME") + "/.xesam/Firefox/ToIndex";
- if(!this.FILE_UTILS.exists(this.dataPath))
- ;// do something here ? is it safe to create the dir ?
- }
- this.addEventListener();
- if (this.pref.get("beagle.first.run"))
- {
- this.pref.firstRunImport();
- this.pref.set("beagle.first.run",false);
- }
- },
-
- /**
- * add the event listeners
- *
- */
- addEventListener : function ()
- {
- // Add listener for page loads
- if (this.runStatus != this.RUN_BEAGLE_NOT_FOUND && document.getElementById("appcontent"))
- {
- document.getElementById("appcontent").addEventListener(
- "load",
- Function.bind(this.onPageLoad,this),
- true
- );
- document.getElementById("contentAreaContextMenu").addEventListener(
- "popupshowing",
- Function.bind(this.initContextMenu,this),
- false
- );
- }
- if(this.runStatus != this.RUN_BEAGLE_NOT_FOUND)
- {
- window.addEventListener(
- "unload",
- function(){
- if(beaglePref.get("beagle.bookmark.active"))
- bookmarkIndexer.indexModified(false);
- },
- false
- );
-/* var observerService =
- Components.classes["@mozilla.org/observer-service;1"]
- .getService(Components.interfaces.nsIObserverService)
- var observer = {
- observe: function(subject,topic,data){
- log("index bookmarks when exit");
- dump(bookmarkIndexer.indexModified());
- log(" done r");
- }
- };
- observerService.addObserver(observer,"quit-application",false);
-*/
- }
- this.STATUS_ICON.addEventListener(
- 'click',
- Function.bind(this.onIconClick,this),
- false
- );
- },
-
- /**
- * show the beagle context menu
- */
- initContextMenu : function (e)
- {
- if(e.originalTarget.id != "contentAreaContextMenu")
- return;
- //log(" gContextMenu " + gContextMenu );
- gContextMenu.showItem("beagle-context-index-this-link", gContextMenu.onLink && !gContextMenu.onMailtoLink);
- gContextMenu.showItem("beagle-context-index-this-image", gContextMenu.onImage && gContextMenu.onLoadedImage);
- gContextMenu.showItem("beagle-context-search-link", gContextMenu.onLink);
- gContextMenu.showItem("beagle-context-search-text", gContextMenu.isTextSelected);
- document.getElementById("beagle-context-search-text").setAttribute("label",
- _f("beagle_context_search_text",[getBrowserSelection(16)]));
- },
-
- /**
- * check enviroment
- */
- checkEnv : function()
- {
- var index_dir = this.ENV.get("HOME") + "/.xesam/Firefox/ToIndex";
- try {
- // Check if destination directory exists
- var dir = Components.classes ["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
- dir.initWithPath (index_dir);
- if (dir.exists ()) {
- if (!dir.isDirectory ()) {
- alert("Destination directory exists but is not a directory!");
- return false;
- }
- }
- else {
- //alert("we need to create it");
- dir.create (Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
- }
- }
- catch (ex) {
- return false;
- }
- return true;
-
- },
-
- /**
- * Check the page,
- * 1. the protocal (We will NOT index about:* file:///* )
- * 2. check is the page itself
- * TODO: for file:/// chrome:// and so on Index OR NOT
- */
- checkPage : function(page)
- {
- if (!page)
- {
- log("[checkPage the page doesn't seems to be a page");
- return false;
- }
- if (!page.location ||
- !page.location.href ||
- page.location.href.indexOf("about:") == 0 ||
- page.location.href.indexOf("file:") == 0 )
- {
- log("checkPage strage page " + page );
- return false;
- }
- return true;
- },
-
- /*
- * check weather the url should index
- * return true if it need to index
- */
- shouldIndex : function(page)
- {
-
- var prefObject = this.pref.load();
-
- //check https
- if (page.location.protocol == "https:" && !prefObject['beagle.security.active'])
- {
- return false;
- }
- var lists = ['beagle.exclude.list','beagle.include.list'];
- var flags = [false,false];
- for(var j = 0; j < 2; j++)
- {
- var list = parseJSON(prefObject[lists[j]]);
- var len = list.length;
- var flag = false;
- for(var i = 0; i < len && !flag; i++)
- {
- switch(list[i]['patternType'])
- {
- case 'domain':
- //what means a domain matches
- //www.google.com matches google.com and matches .com
- //www.agoogle.com NOT matches google.com but matches com
- //www.com.google. NOT matches .com
- var hostname = page.location.hostname;
- var pattern = list[i]['pattern'];
- if (pattern[0] != '.')
- pattern = "." + pattern;
- flag = hostname.isEndWith(pattern) ||(hostname == list[i]['pattern']);
- break;
- case 'wildcard':
- var re = RegExp(list[i]['pattern'].wilcard2RE());
- flag = (page.location.href.match(re) != null);
- break;
- case 'regular expression':
- var re = RegExp(list[i]['pattern']);
- flag = (page.location.href.match(re) != null)
- break;
- default:
- log("invaild rule" + list[i]);
- //something wrong;
- break;
- }
- }
- flags[j] = flag;
- }
- log("[Should Index ?][exclude=" + flags[0] + "][include=" + flags[1] + "]");
- if(!flags[0] && !flags[1])
- return prefObject['beagle.default.action'] == 1;
- if(flags[0] && flags[1])
- return prefObject['beagle.conflict.action'] == 1;
- return flags[1];
-
- },
-
- /**
- * just set the status label
- */
- setStatusLabel : function (msg)
- {
- setTimeout(
- function(){document.getElementById('statusbar-display').label = msg},
- 100
- );
- },
-
- /**
- * prompt extra keywords on demand-index
- */
- promptExtraKeywords : function(url)
- {
- if(this.pref.get("beagle.prompt.keywords.active"))
- {
- var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var input = { value: "" };
- var chk = { value:false };
- result = prompts.prompt(window,
- _("beagle_prompt_keywords_title"),
- _("beagle_prompt_keywords_text"), input, null, chk);
- if (result && input.value != "")
- {
- this.tasks[url]["meta"].push("t:dc:keyword="+ input.value);
- }
- }
- },
-
- /***************************************************
- * IO related code
- **************************************************/
-
- /**
- * write page content (NOT the HTML source,
- * the DOM instead, it may include dym contnent created by js)
- */
- writeContent : function(page, tmpfilepath)
- {
- var tmpfile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
- tmpfile.initWithPath(tmpfilepath);
-
- var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
- persist.persistFlags = this.PersistMask;
- persist.saveDocument(page, tmpfile, null, null, this.EncodeMask, 0);
- },
-
- /**
- * for non-html and non-text file . save it
- * progressListener is used by index-link. to show the progree.
- */
- saveFile : function(url,path,progressListener)
- {
- var tmpfile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
- tmpfile.initWithPath(path);
- var cacheKey = Components.classes['@mozilla.org/supports-string;1'].createInstance(Components.interfaces.nsISupportsString);
- cacheKey.data = url;
- var urifix = Components.classes['@mozilla.org/docshell/urifixup;1'].getService(Components.interfaces.nsIURIFixup);
- var uri = urifix.createFixupURI(url, 0);
- var hosturi = null;
- if (uri.host.length > 0)
- {
- hosturi = urifix.createFixupURI(uri.host, 0);
- }
- this.persist = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'].createInstance(Components.interfaces.nsIWebBrowserPersist);
- this.persist.persistFlags = this.PersistMask;
- if(progressListener)
- this.persist.progressListener = progressListener;
- this.persist.saveURI(uri, cacheKey, hosturi, null, null, tmpfile);
- },
-
- /**
- * write raw-meatadata
- */
- writeRawMetadata : function(meta, tmpfilepath)
- {
- var tmpfile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
- tmpfile.initWithPath(tmpfilepath);
-
- var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
- stream.QueryInterface(Components.interfaces.nsIOutputStream);
- stream.init(tmpfile, 0x04 | 0x08 | 0x20, 0600, 0);
-
- var line;
- log("writing metas ");
- for(var i = 0; i < meta.length; i++)
- {
- line = meta[i] + "\n";
- log(meta[i]);
- stream.write(line, line.length);
- }
- stream.flush();
- stream.close();
- },
-
-
- /**
- * write meatadata of page
- * include URI hittype mimetype characterset referrer
- * if any extra meta is set in task, write it too.
- */
- writeMetadata : function(page, tmpfilepath)
- {
- var url = page.location.href;
- var meta = [
- url,
- 'WebHistory',
- page.contentType,
- "k:_unindexed:encoding="+page.characterSet,
- ];
- if(typeof page.referrer != "undefined" && page.referrer != "")
- {
- meta.push("t:fixme:referrer=" + page.referrer);
- }
- meta = meta.concat(this.tasks[url]['meta'])
- beagle.writeRawMetadata(meta,tmpfilepath);
- },
-
- /**
- * index a page
- * write content and meta
- */
- indexPage : function(page)
- {
- var url = page.location.href;
- log(" We will index " + url );
-
- try {
- this.writeContent(page, this.getContentPath(url));
- this.writeMetadata(page, this.getMetaPath(url));
- } catch (ex) {
- log ("beaglePageLoad: beagleWriteContent/Metadata failed: " + ex );
- if(confirm(_('beagle_write_error_confirm')))
- this.disable();
- return;
- }
- this.setStatusLabel(_f("beagle_statuslabel_indexing",[url]));
- },
-
- /**
- * index a file (non-html and non-text)
- * we assume the content is saved already.
- * just write meta here
- */
- indexFile : function(url,contentType)
- {
- log(" We will index " + url );
-
- var meta = [url,'WebHistory',contentType];
- meta = meta.concat(this.tasks[url]['meta'])
- try {
- this.writeRawMetadata(meta, this.getMetaPath(url));
- } catch (ex) {
- log ("[indexFile] beage write Metadata failed: " + ex + "\n");
- if(confirm(_('beagle_write_error_confirm')))
- this.disable();
- return;
- }
- this.setStatusLabel(_f("beagle_statuslabel_indexing",[url]));
- },
-
- /****************************************************************************
- * Event Handlers
- ***************************************************************************/
-
- /**
- * index this page (event handler)
- */
- indexThisPage : function()
- {
- var doc = document.getElementById('content').selectedBrowser.contentDocument;
- if(!this.checkPage(doc))
- return;
- var url = doc.location.href;
- this.startTask(url,[]);
- this.promptExtraKeywords(url);
- if(doc.contentType.match(/(text|html|xml)/i))// a document
- {
- this.indexPage(doc);
- }
- else
- {
- this.saveFile(url,this.getContentPath(url),null);
- this.indexFile(url,doc.contentType);
- }
- },
-
- /**
- * index link (event handler)
- */
- indexLink : function()
- {
- var url = gContextMenu.linkURL;
- if (!url)
- return;
- var referrer = gBrowser.currentURI.spec;
- this.startTask(url,
- ["t:fixme:referrer=" + referrer]
- );
- window.openDialog("chrome://beagle/content/indexLink.xul",
- "","chrome,centerscreen,all,resizable,dialog=no",url,referrer);
- },
- /**
- * index image (event handler)
- */
- indexImage : function()
- {
- var image = gContextMenu.target;
- if(image.tagName.toLowerCase() != 'img' || !image.src)
- return;
- var url = image.src;
- var referrer = gBrowser.currentURI.spec;
- this.startTask(url,[
- "t:alttext="+(image.getAttribute('alt')?image.getAttribute('alt'):""),
- "t:fixme:referrer="+referrer]
- );
- window.openDialog("chrome://beagle/content/indexLink.xul",
- "","chrome,centerscreen,all,resizable,dialog=no",url,referrer);
- },
-
- /**
- * callback for link loaded (called from indexLink.js)
- * TODO: what if the url is no longer the url we passed to indexLink
- */
- onLinkLoad : function(url,contentType,doc,orginalURL)
- {
- if(url != orginalURL)
- {
- log(url)
- log(orginalURL);
- this.tasks[url] = this.tasks[orginalURL];
- }
- this.promptExtraKeywords(url);
- if(contentType.match(/(text|html|xml)/i) && doc)// a document
- {
- if(!this.checkPage(doc))
- return;
- this.indexPage(doc);
- }
- else
- {
- this.indexFile(url,contentType);
- }
- },
-
- /**
- * called when page is loaded (event handler)
- */
- onPageLoad : function(event)
- {
- log("Page Loaded ");
- //if disabled or error
- if(this.runStatus != this.RUN_ENABLED)
- {
- log(" NOT RUN_ENABLED status . NO INDEX");
- return;
- }
- var page = event.originalTarget;
- if (!this.checkPage(page))
- return;
- if (!this.shouldIndex(page))
- return;
- var url = page.location.href;
- this.startTask(url,[]);
- if(page.contentType.match(/(text|html|xml)/i))// a document
- {
- this.indexPage(page);
- }
- else
- {
- this.saveFile(url,this.getContentPath(url),null);
- this.indexFile(url,page.contentType);
- }
- },
-
-
- /**
- * add exclude /include rule
- * the "domain" rule
- */
- quickAddRule : function (page,flag)
- {
- try{
- var domain = page.location.hostname;
- this.pref.addRule("qa_" + domain,domain,"domain",flag);
- }
- catch(e){
- alert(_("beagle_quick_add_rule_error"));
- }
- },
-
- /**
- * show preference winodw (event handler)
- */
- showPrefs : function()
- {
- window.openDialog('chrome://beagle/content/beaglePrefs.xul',
- 'PrefWindow',
- 'chrome,resizable=no',
- 'browser');
- },
-
- /**
- * status icon clicked. (event handler)
- * toggle auto-index
- */
- onIconClick : function(event)
- {
- // Left-click event (also single click, like Mac).
- if (event.button == 0 && event.ctrlKey == 0) {
- switch(this.runStatus)
- {
- case this.RUN_ENABLED:
- // currently enabled. disable
- this.disable();
- break;
- case this.RUN_DISABLED:
- // currently disabled enable.
- this.enable();
- break;
- default:
- // last run was an error, show the error
- alert("Error running Beagle Indexer: " + this.RunStatus);
- break;
- }
- }
- },
-
- /**
- * call beagle search by query
- */
- search : function(query)
- {
- if(!this.beagleSearchPath)
- return;
- try {
- log("Running beagle search with query: "+ query );
- var retval = this.FILE_UTILS.spawn(this.beagleSearchPath, ["", query]);
- if (retval)
- alert("Error running beagle search: " + retval);
- }
- catch(e){
- alert("Caught error from beagle-search: " + e);
- }
- },
-
- /************************************************************
- * status switch functions
- ************************************************************/
-
- /**
- * disable beagle auto index
- */
- disable : function()
- {
- this.runStatus = this.RUN_DISABLED;
- this.STATUS_ICON.setAttribute("status","00f");
- this.STATUS_ICON.setAttribute("tooltiptext",_("beagle_tooltip_disabled"));
- this.pref.set("beagle.autoindex.active",false);
- },
-
- /**
- * enable beagle auto index
- */
- enable : function()
- {
- this.runStatus = this.RUN_ENABLED;
- this.STATUS_ICON.setAttribute("status","000");
- this.STATUS_ICON.setAttribute("tooltiptext",_("beagle_tooltip_actived"));
- this.pref.set("beagle.autoindex.active",true);
- },
-
- /**
- * error occours
- */
- error : function(msg)
- {
- this.runStatus = this.RUN_ERROR;
- this.STATUS_ICON.setAttribute("status","f00");
- this.STATUS_ICON.setAttribute("tooltiptext",_f("beagle_tooltip_error",[msg]));
- this.pref.set("beagle.autoindex.active",false);
- },
-};
-
-// Create event listener.
-window.addEventListener('load', Function.bind(beagle.init,beagle),false);
-
diff --git a/extensions/firefox-extension/chrome/content/beagleOverlay.xul b/extensions/firefox-extension/chrome/content/beagleOverlay.xul
deleted file mode 100644
index b6a5ab973..000000000
--- a/extensions/firefox-extension/chrome/content/beagleOverlay.xul
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://beagle/skin/overlay.css" type="text/css"?>
-<!DOCTYPE overlay SYSTEM "chrome://beagle/locale/beagle.dtd">
-
-<overlay id="BeagleOverlay"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<stringbundleset id="stringbundleset">
- <stringbundle id="beagleStrings"
- src="chrome://beagle/locale/beagle.properties"/>
-</stringbundleset>
-
-
-
-<!-- jslib sources used for executing beagle -->
-<script type="text/javascript" src="jslib/jslib.js"/>
-<script type="text/javascript" src="jslib/io/file.js"/>
-<script type="text/javascript" src="jslib/io/fileUtils.js"/>
-<script type="text/javascript" src="jslib/io/dir.js"/>
-<script type="text/javascript" src="jslib/io/dirUtils.js"/>
-
-<script type="text/javascript" src="utils.js" />
-<script type="text/javascript" src="i18n.js"/>
-<script type="text/javascript" src="md5.js" />
-<script type="text/javascript" src="json.js" />
-<script type="text/javascript" src="beaglePrefs.js" />
-<script type="text/javascript" src="beagleOverlay.js" />
-<script type="text/javascript" src="indexBookmark.js" />
-
-<commandset id="mainCommandSet">
- <command id="IndexThisCmd" label="&beagle.run.index.this.label;"
- oncommand="beagle.indexThisPage();"/>
- <command id="AlwaysIndexThisSiteCmd" label="&beagle.run.always.index.label;"
- oncommand="beagle.quickAddRule(document.getElementById('content').selectedBrowser.contentDocument,beaglePref.RULE_INCLUDE)"/>
- <command id="NeverIndexThisSiteCmd" label="&beagle.run.never.index.label;"
- oncommand="beagle.quickAddRule(document.getElementById('content').selectedBrowser.contentDocument,beaglePref.RULE_EXCLUDE)"/>
- <command id="ShowPrefsCmd" label="&beagle.run.preferences.label;"
- oncommand="beagle.showPrefs()"/>
- <command id="IndexThisLinkCmd" label="&beagle.run.index.link.label;"
- oncommand="beagle.indexLink()"/>
- <command id="IndexThisImageCmd" label="&beagle.run.index.image.label;"
- oncommand="beagle.indexImage()"/>
- <command id="SearchLinkCmd" label="&beagle.context.search.link.label;"
- oncommand="beagle.search(gContextMenu.linkURL);"/>
- <command id="SearchPageCmd" label="&beagle.context.search.page.label;"
- oncommand="beagle.search(getWebNavigation().currentURI.spec);"/>
- <command id="SearchTextCmd"
- oncommand="beagle.search(getBrowserSelection());"/>
- <!--
- <command id="IndexAllBookmarksCmd" label="&beagle.bookmark.index.all.label;"
- oncommand="BookmarkIndexer.indexAll();"/>
- -->
- <command id="IndexModifiedBookmarkCmd" label="&beagle.bookmark.index.modified.label;"
- oncommand="bookmarkIndexer.indexModified(true);"/>
-</commandset>
-
-<!-- toolbar is not necessary -->
-<!--
-<toolbarpalette id="BrowserToolbarPalette">
- <toolbarbutton id="beagle-button" type="menu-button"
- class="toolbarbutton-1 chromeclass-toolbar-additional"
- context="beagle-toolbar-popup"
- tooltiptext="&beagle.run.index.this.label;"
- label="beagle">
- <menupopup id="beagle-toolbar-popup" >
- <menuitem command="IndexThisCmd"/>
- <menuseparator />
- <menuitem command="AlwaysIndexThisSiteCmd"/>
- <menuitem command="NeverIndexThisSiteCmd"/>
- <menuseparator />
- <menuitem command="ShowPrefsCmd"/>
- </menupopup>
- </toolbarbutton>
-</toolbarpalette>
--->
-
-<!-- Add Index Bookmark menuitem in Bookmarks Menu -->
-<!-- position=4 to place item after Bookmark Manager which is normally 3 with Firefox 1.5-->
-<menupopup id="menu_BookmarksPopup" contextmenu='bookmarks-context-menu'>
- <menuitem id="beagle-index-modified-bookmarks"
- command="IndexModifiedBookmarkCmd"/>
-</menupopup>
-
-
-<popup id="contentAreaContextMenu">
- <menuseparator />
- <menu label="&beagle.run.context.menu.label;">
- <menupopup id="beagle-content-popup">
- <menuitem id="beagle-context-index-this-link" command="IndexThisLinkCmd"/>
- <menuitem id="beagle-context-index-this-image" command="IndexThisImageCmd"/>
- <menuitem id="beagle-context-index-this" command="IndexThisCmd"/>
- <menuseparator />
- <menuitem id="beagle-context-search-link" command="SearchLinkCmd"/>
- <menuitem id="beagle-context-search-text" command="SearchTextCmd"/>
- <menuitem id="beagle-context-search-page" command="SearchPageCmd"/>
- <menuseparator />
- <menuitem command="AlwaysIndexThisSiteCmd"/>
- <menuitem command="NeverIndexThisSiteCmd"/>
- <menuseparator />
- <menuitem command="ShowPrefsCmd"/>
- </menupopup>
- </menu>
- <menuseparator />
-
-</popup>
-
-<statusbar id="status-bar">
- <statusbarpanel
- class="statusbarpanel-menu-iconic"
- id="beagle-notifier-status"
- context='beagle-status-popup'
- status="000"
- >
- </statusbarpanel>
- <menupopup id="beagle-status-popup" position="before_end">
- <menuitem command="IndexThisCmd"/>
- <menuseparator />
- <menuitem command="AlwaysIndexThisSiteCmd"/>
- <menuitem command="NeverIndexThisSiteCmd"/>
- <menuseparator />
- <menuitem command="ShowPrefsCmd"/>
- </menupopup>
-</statusbar>
-</overlay>
diff --git a/extensions/firefox-extension/chrome/content/beaglePrefs.js b/extensions/firefox-extension/chrome/content/beaglePrefs.js
deleted file mode 100644
index 1247cba81..000000000
--- a/extensions/firefox-extension/chrome/content/beaglePrefs.js
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Beagle Extension: Index webpages you visit using the Beagle Indexing Engine.
- * An Extension for the Firefox Browser.
- */
-
-// Initiate a new preference instance.
-var gPrefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
-
-var beaglePref = {
-
- //some constant
- RULE_INCLUDE : 1,
- RULE_EXCLUDE : 2,
-
- // Declare Pref Keys and Type.
- prefKeys : {
- 'beagle.security.active':{'type':'bool','default':false},
- 'beagle.bookmark.active':{'type':'bool','default':false},
- 'beagle.prompt.keywords.active':{'type':'bool','default':false},
- 'beagle.default.action':{'type':'int','default':1},
- 'beagle.conflict.action':{'type':'int','default':1},
- 'beagle.include.list':{'type':'string','default':"[]"},
- 'beagle.exclude.list':{'type':'string','default':"[]"},
- 'beagle.autoindex.active':{'type':'bool','default':true},
- 'beagle.bookmark.last.indexed.date':{'type':'string','default':'0'},
- 'beagle.first.run':{'type':'bool','default':true},
- },
-
-
- //functions used to get/set pref
- func_factory:{
- 'get':{
- 'bool': Function.bind(gPrefService.getBoolPref,gPrefService),
- 'int': Function.bind(gPrefService.getIntPref,gPrefService),
- 'string' : Function.bind(gPrefService.getCharPref,gPrefService)
- },
- 'set':{
- 'bool': Function.bind(gPrefService.setBoolPref,gPrefService),
- 'int' : Function.bind(gPrefService.setIntPref,gPrefService),
- 'string' : Function.bind(gPrefService.setCharPref,gPrefService)
- }
- },
-
- prefObject : {},
-
- /**
- * get the pref value by key
- * we will use right type according to prefKeys
- */
- get : function(key)
- {
- if(!this.prefKeys.hasOwnProperty(key))
- return null;
- try{
- return this.func_factory['get'][this.prefKeys[key]['type']].call(null,key);
- }
- catch(ex){
- log("[beaglPref.get " + key + "] " + ex );
- return this.prefKeys[key]['default'];
- }
- },
-
- /**
- * set pref value
- * we will use right type according to prefKeys
- */
- set : function(key,value)
- {
- if(!this.prefKeys.hasOwnProperty(key))
- return false;
- try{
- this.func_factory['set'][this.prefKeys[key]['type']].call(null,key,value);
- return true;
- }
- catch(ex){
- return false;
- }
-
- },
-
- /*
- * Load Prefs into a javascript object (this.prefObject)
- *
- */
- load : function()
- {
- //log(toJSONString(this.prefKeys));
-
- for(key in this.prefKeys)
- {
- if(!this.prefKeys.hasOwnProperty(key))
- continue;
- var value = this.get(key);
- if(value != null)
- this.prefObject[key] = value;
- else
- log(key + " is null" );
- }
- return this.prefObject;
- },
-
- /*
- * Save Prefs (in this.prefObject) into firefox
- */
- save : function()
- {
- for(key in this.prefKeys)
- {
- this.set(key, this.prefObject[key]);
- }
- log("Save Beagle Prefs:" + toJSONString(this.prefObject) );
- },
-
- /**
- * init beagle pref , load pref, init UI
- */
- init : function ()
- {
- log("beaglePref init");
- this.load();
- this.UIInit();
- },
-
- /**
- * init the UI
- */
- UIInit : function ()
- {
- log("beaglePref uiinit");
- var checkboxElements = ["beagle.security.active","beagle.bookmark.active","beagle.prompt.keywords.active"]
- for(var i = 0; i < checkboxElements.length; i++)
- {
- var elementID = checkboxElements[i];
- try{
- document.getElementById(elementID).checked = this.prefObject[elementID]
- }
- catch(ex){
- log(ex);
- document.getElementById(elementID).checked = true;
- }
- }
-
- var radioElements = ["beagle.default.action","beagle.conflict.action"]
- for(var i = 0; i < radioElements.length; i++)
- {
- var elementID = radioElements[i];
- var radios = document.getElementById(elementID).getElementsByTagName('radio');
- try{
- for (var j = 0; j < radios.length; j++)
- {
- if(radios[j].value == this.prefObject[elementID])
- {
- document.getElementById(elementID).selectedItem = radios[j]
- break;
- }
- }
- }
- catch(ex){
- log(ex);
- }
- }
-
- //beagle.include.list and beagle.exclude.list
- var listElements = ["beagle.include.list","beagle.exclude.list"];
- for (var i = 0; i < listElements.length; i++)
- {
- var elementID = listElements[i];
- try{
- var items = parseJSON(this.prefObject[elementID]);
- var listbox = document.getElementById(elementID) ;
- //log("listbox.getRowCount:" + listbox.getRowCount() + '\n');
- var num = listbox.getRowCount();
- for (var j = 0; j < num; j++)
- listbox.removeItemAt(0);
-
- for (var j = 0; j < items.length; j++){
- appendRow(listbox,items[j]['name'],items[j]['pattern'],items[j]['patternType']);
- }
- } catch(ex) {
- log(ex);
- log(this.prefObject[elementID]);
- }
- }
-
- },
-
- /****************************************************************************
- * Event Handlers
- ***************************************************************************/
-
- /*
- * This function is called when the save button is clicked
- */
- onSave : function ()
- {
- var prefs = {};
-
- var checkboxElements = ["beagle.security.active","beagle.bookmark.active","beagle.prompt.keywords.active"]
- for(var i = 0; i < checkboxElements.length; i++)
- {
- var elementID = checkboxElements[i];
- try{
- prefs[elementID] = document.getElementById(elementID).checked;
- }
- catch(e){
- prefs[elementID] = false;
- }
- }
-
- var radioElements = ["beagle.default.action","beagle.conflict.action"]
- for(var i = 0; i < radioElements.length; i++)
- {
- var elementID = radioElements[i];
- try{
- prefs[elementID] = document.getElementById(elementID).value;
- }
- catch(e){
- }
- }
-
- //beagle.include.list and beagle.exclude.list
- var listElementIDs = ["beagle.include.list","beagle.exclude.list"];
- for (var i = 0; i < listElementIDs.length; i++)
- {
- var elementID = listElementIDs[i];
- try {
- var items = new Array() ;
- var listbox = document.getElementById(elementID) ;
-
- for (var j = 0; j < listbox.getRowCount(); j++){
- var listitem = listbox.getItemAtIndex(j);
- var name = listitem.getElementsByTagName('listcell')[0].getAttribute('value');
- var pattern = listitem.getElementsByTagName('listcell')[1].getAttribute('value');
- var patternType = listitem.getElementsByTagName('listcell')[2].getAttribute('value');
- items.push({'name':name,'pattern':pattern,'patternType':patternType});
- }
- var value = toJSONString(items);
- prefs[elementID] = value;
- } catch(e) {
- // We don't seem to care about this.
- }
- }
-
- this.prefObject = prefs;
- this.save();
- },
-
- /**
- * open a dialog to add a filter
- */
- onAddFilter : function (type)
- {
- window.openDialog(
- 'chrome://beagle/content/beagleAddFilter.xul',
- "add_filter_dialog",
- 'chrome,modal',
- type
- );
- },
-
- /**
- *remove a filter
- */
- onRemoveFilter : function(type)
- {
- try{
- var listbox = document.getElementById('beagle.'+type+'.list');
- listbox.removeItemAt(listbox.selectedIndex);
- } catch(e){
- //ignore
- }
- },
-
-
- /**
- * Add Exclude / Include rule
- * name the rule name
- * pattern the pattern
- * type the pattern type
- * flag RULE_INCLUDE or RULE_EXCLUDE
- */
- addRule : function (name,pattern,type,flag)
- {
- switch(flag)
- {
- case this.RULE_INCLUDE:
- key = "beagle.include.list";
- break;
- case this.RULE_EXCLUDE:
- key = "beagle.exclude.list";
- break;
- default:
- //error
- return;
- }
- var rules = parseJSON(this.get(key));
- rules.push({"name":name,"pattern":pattern,"patternType":type});
- this.set(key,toJSONString(rules));
- },
-
- /**
- * First Run import (from old extension)
- */
- firstRunImport : function()
- {
- try{
- this.set("beagle.autoindex.active",gPrefService.getBoolPref("beagle.enabled"));
- this.set("beagle.security.active",gPrefService.getBoolPref("beagle.security.active"));
- var filters = gPrefService.getCharPref("beagle.security.filters").split(";");
- var excludeList = parseJSON(this.get("beagle.exclude.list"));
- for(var i = 0; i < filters.length; i++)
- {
- if(filters[i] != "")
- excludeList.push({"name":"Import_"+i,"pattern":filters[i],"patternType":"domain"});
- }
- this.set("beagle.exclude.list",toJSONString(excludeList));
- }
- catch(ex){
- log("first run import error");
- log(ex);
- }
- },
-}
-
diff --git a/extensions/firefox-extension/chrome/content/beaglePrefs.xul b/extensions/firefox-extension/chrome/content/beaglePrefs.xul
deleted file mode 100644
index 9389da897..000000000
--- a/extensions/firefox-extension/chrome/content/beaglePrefs.xul
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE window SYSTEM "chrome://beagle/locale/beagle.dtd">
-
-<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-
-<dialog id="beagle-pref"
- buttons="accept,cancel,help"
- onload="beaglePref.init();"
- ondialogaccept="beaglePref.onSave();window.close();"
- ondialoghelp="window.open('http://beagle-project.org/Browser_Extension#Firefox_Extension');"
- persist="screenX screenY"
- title="&beagle.pref.label;"
- flex="1"
- style="min-width:500px"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <stringbundleset id="stringbundleset">
- <stringbundle id="beagleStrings"
- src="chrome://beagle/locale/beagle.properties"/>
- </stringbundleset>
-
-
- <!-- jslib sources used for executing beagle -->
- <script type="text/javascript" src="jslib/jslib.js"/>
- <script type="text/javascript" src="jslib/io/file.js"/>
- <script type="text/javascript" src="jslib/io/fileUtils.js"/>
-
- <script type="text/javascript" src="utils.js" />
-
- <script type="text/javascript" src="json.js" />
-
- <script type="text/javascript" src="i18n.js" />
-
- <script type="text/javascript" src="beaglePrefs.js" />
-
-
- <groupbox>
- <caption label="&beagle.pref.groupbox.general.label;" />
- <!--checkbox
- id="beagle.context.active"
- label="&beagle.pref.context.active.label;"
- type="checkbox"
- /-->
-
- <checkbox
- id="beagle.security.active"
- label="&beagle.pref.security.active.label;"
- type="checkbox"
- />
- <checkbox
- id="beagle.bookmark.active"
- label="&beagle.pref.bookmark.active.label;"
- type="checkbox"
- />
- <checkbox
- id="beagle.prompt.keywords.active"
- label="&beagle.pref.prompt.keywords.active.label;"
- type="checkbox"
- />
- <hbox>
- <label tooltiptext="&beagle.pref.default.action.tooltip;">&beagle.pref.default.action.label;:</label>
- <radiogroup id="beagle.default.action" orient="horizontal">
- <radio id="beagle.default.action.noindex" value="0" label="&beagle.pref.action.noindex.label;" />
- <radio id="beagle.default.action.index" value="1" label="&beagle.pref.action.index.label;"/>
- </radiogroup>
- </hbox>
- <hbox>
- <label tooltiptext="&beagle.pref.conflict.action.tooltip;">&beagle.pref.conflict.action.label;:</label>
- <radiogroup id="beagle.conflict.action" orient="horizontal">
- <radio id="beagle.conflict.action.noindex" value="0" label="&beagle.pref.action.noindex.label;" />
- <radio id="beagle.conflict.action.index" value="1" label="&beagle.pref.action.index.label;"/>
- </radiogroup>
- </hbox>
-
- </groupbox>
-
- <!--The Patterns to Include-->
- <groupbox flex="1">
- <caption label="&beagle.pref.groupbox.include.label;"/>
- <hbox flex="1">
- <vbox flex="1">
- <listbox flex="1" rows="4" id="beagle.include.list">
- <listhead>
- <listheader id="includeName" label="&beagle.pref.filter.name.label;" />
- <listheader id="includePattern" label="&beagle.pref.filter.pattern.label;" />
- <listheader id="includePatternType" label="&beagle.pref.filter.patterntype.label;" />
- </listhead>
- <listcols>
- <listcol />
- <listcol flex="2"/>
- <listcol flex="1"/>
- </listcols>
- </listbox>
- </vbox>
- <vbox>
- <button command="AddIncludeFilterCmd" />
- <button command="RemoveIncludeFilterCmd" />
- </vbox>
- </hbox>
- </groupbox>
-
-
- <!--The Patterns to Exclude-->
- <groupbox flex="1">
- <caption label="&beagle.pref.groupbox.exclude.label;"/>
- <hbox flex="1">
- <vbox flex="1">
- <listbox flex="1" rows="4" id="beagle.exclude.list">
- <listhead>
- <listheader id="excludeName" label="&beagle.pref.filter.name.label;" />
- <listheader id="excludePattern" label="&beagle.pref.filter.pattern.label;" />
- <listheader id="excludePatternType" label="&beagle.pref.filter.patterntype.label;" />
- </listhead>
- <listcols>
- <listcol />
- <listcol flex="2"/>
- <listcol flex="1"/>
- </listcols>
- </listbox>
- </vbox>
- <vbox>
- <button command="AddExcludeFilterCmd" />
- <button command="RemoveExcludeFilterCmd" />
- </vbox>
- </hbox>
- </groupbox>
-
- <commandset>
- <command id="AddIncludeFilterCmd" label="&beagle.pref.filter.add.label;"
- oncommand="beaglePref.onAddFilter('include')"/>
- <command id="AddExcludeFilterCmd" label="&beagle.pref.filter.add.label;"
- oncommand="beaglePref.onAddFilter('exclude')"/>
- <command id="RemoveIncludeFilterCmd" label="&beagle.pref.filter.remove.label;"
- oncommand="beaglePref.onRemoveFilter('include')"/>
- <command id="RemoveExcludeFilterCmd" label="&beagle.pref.filter.remove.label;"
- oncommand="beaglePref.onRemoveFilter('exclude')"/>
- </commandset>
-</dialog>
-
-
-
diff --git a/extensions/firefox-extension/chrome/content/contents.rdf b/extensions/firefox-extension/chrome/content/contents.rdf
deleted file mode 100644
index f4b64dc28..000000000
--- a/extensions/firefox-extension/chrome/content/contents.rdf
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
- <RDF:Seq RDF:about="urn:mozilla:package:root">
- <RDF:li RDF:resource="urn:mozilla:package:beagle"/>
- </RDF:Seq>
-
- <RDF:Seq RDF:about="urn:mozilla:overlays">
- <RDF:li RDF:resource="chrome://browser/content/browser.xul"/>
- <RDF:li RDF:resource="chrome://navigator/content/navigator.xul"/>
- </RDF:Seq>
-
- <RDF:Seq RDF:about="chrome://browser/content/browser.xul">
- <RDF:li>chrome://beagle/content/beagleOverlay.xul</RDF:li>
- </RDF:Seq>
-
- <RDF:Seq about="chrome://navigator/content/navigator.xul">
- <RDF:li>chrome://beagle/content/beagleOverlay.xul</RDF:li>
- </RDF:Seq>
-
- <RDF:Description
- RDF:about="urn:mozilla:package:beagle"
- chrome:displayName="Beagle Indexer 0.2"
- chrome:author="Filia Tao"
- chrome:authorURL="mailto:filia.tao@gmail.com"
- chrome:name="beagle"
- chrome:extension="true"
- chrome:description="Index webpages you visit using the Beagle Indexing Engine."
- chrome:settingsURL="chrome://beagle/content/beaglePrefs.xul">
- </RDF:Description>
-
-</RDF:RDF>
diff --git a/extensions/firefox-extension/chrome/content/i18n.js b/extensions/firefox-extension/chrome/content/i18n.js
deleted file mode 100644
index 81cb1f6dd..000000000
--- a/extensions/firefox-extension/chrome/content/i18n.js
+++ /dev/null
@@ -1,54 +0,0 @@
-//check the string budles
-var bundles = new Array();
-
-function gettext(key)
-{
- //dump("\ncallled gettext bundles.length = " + bundles.length + "\n");
- var ret = null;
- for(var i = 0 ; i < bundles.length; i++)
- {
- try{
- ret = bundles[i].getString(key);
- }
- catch(e){dump(e); }
- if (ret != null)
- break;
- }
- //not found , just return the orginal string
- if (ret == null)
- ret = key;
- //dump(ret + '\n');
- return ret;
-}
-
-var _ = gettext;
-
-function getformatedtext(key,subs)
-{
- var ret = null;
- for(var i = 0 ; i < bundles.length; i++)
- {
- try{
- ret = bundles[i].getString(key);
- if (ret != null)
- {
- return bundles[i].getFormattedString(key,subs);
- }
- }
- catch(e){}
- }
- //not found , just return the orginal string
- if (ret == null)
- ret = key;
- return ret;
-}
-
-var _f = getformatedtext;
-
-function initBundles(){
- bundles.push(document.getElementById('beagleStrings'));
-}
-
-window.addEventListener('load', initBundles, false);
-
-
diff --git a/extensions/firefox-extension/chrome/content/indexBookmark.js b/extensions/firefox-extension/chrome/content/indexBookmark.js
deleted file mode 100644
index 4372f2bf5..000000000
--- a/extensions/firefox-extension/chrome/content/indexBookmark.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
-* index bookmarks.
-* Include URL,name,shorcurURL (the keywords), description
-* After index, a last-indexed-date is saved.
-* Later only index the modified bookmark or new bookmarks.
-*/
-
-
-//Used to include only one time bookmark.js and avoid error message about already specified constant
-try{
- if(ADD_BM_DIALOG_FEATURES) {}
-} catch(e){
- var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
- .getService(Components.interfaces.mozIJSSubScriptLoader);
- loader.loadSubScript("chrome://browser/content/bookmarks/bookmarks.js");
-}
-if(!BMDS)
-{
- //init bookmark js service
- initServices();
- initBMService();
-}
-
-/**
- * a class for Bookmark
- */
-function Bookmark(bmRes,path)
-{
- this.bmRes = bmRes;
- this.URL = this.getLiteral(this.URLArc);
- this.Name = this.getLiteral(this.NameArc);
- this.ShortcutURL = this.getLiteral(this.ShorcurURLArc);
- this.Description = this.getLiteral(this.DescriptionArc);
- this.LastModifiedDate = this.getDate(this.LastModifiedDateArc);
- this.LastVisitDate = this.getDate(this.LastVisitDateArc);
- this.BookmarkAddDate = this.getDate(this.BookmarkAddDateArc);
- this.type = BookmarksUtils.resolveType(this.bmRes);
- this.path = path;
-}
-
-Bookmark.prototype = {
- URLArc: RDF.GetResource(gNC_NS + "URL"),
- //FeedURLArc: RDF.GetResource(gNCNS + "FeedURL",
- NameArc: RDF.GetResource(gNC_NS + "Name"),
- ShortcutURLArc: RDF.GetResource(gNC_NS + "ShortcutURL"),
- DescriptionArc: RDF.GetResource(gNC_NS + "Description"),
- LastModifiedDateArc:RDF.GetResource(gWEB_NS + "LastModifiedDate"),
- LastVisitDateArc: RDF.GetResource(gWEB_NS + "LastVisitDate"),
- BookmarkAddDateArc: RDF.GetResource(gNC_NS + "BookmarkAddDate"),
-
- /**
- * is bookmark newer than lastIndexDate
- */
- isModified: function(lastIndexDate)
- {
- var last_modified = this.LastModifiedDate;
- if (!last_modified)
- last_modified = this.BookmarkAddDate;
- return last_modified && last_modified > lastIndexDate;
- },
-
- /**
- * folder / seperator / livebookmark are not "bookmark"
- */
- isBookmark: function()
- {
- var parent = BMSVC.getParent(this.bmRes);
- if (parent)
- var type = BookmarksUtils.resolveType(parent);
- if (type == "Livemark")
- return false;
- return !!this.URL;
- },
-
- getLiteral:function(arc)
- {
- try{
- var target = BMDS.GetTarget(this.bmRes, arc, true);
- if (target) {
- return target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
- }
- } catch (e) { /* probably a bad interface */ }
- return null;
- },
-
- getDate:function(arc)
- {
- try{
- var target = BMDS.GetTarget(this.bmRes, arc, true);
- if (target) {
- return target.QueryInterface(Components.interfaces.nsIRDFDate).Value/1000;
- }
- } catch (e) { /* probably a bad interface */ }
- return null;
- },
-
- /**
- * get children bookmarks
- */
- getChildren:function()
- {
- var container = Components.classes["@mozilla.org/rdf/container;1"]
- .createInstance(Components.interfaces.nsIRDFContainer);
- container.Init(BMDS, this.bmRes);
- var bookmarks = new Array();
- var elements = container.GetElements();
- while (elements.hasMoreElements()) {
- var element = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
- bookmarks.push(new Bookmark(element,this.path + " " + this.Name))
- }
- return bookmarks;
- }
-
-}
-
-var bookmarkIndexer = {
-
- /**
- * get the bookmark one by one
- * if filter(bookmark) == true do action(bookmark)
- * return the num of indexed bookmarks
- */
- walk: function(bm,filter,action)
- {
- var num = 0;
- switch(bm.type)
- {
- //folder. walk it's chidren
- case "Folder":
- case "PersonalToolbarFolder":
- case "IEFavoriteFolder":
- var children = bm.getChildren();
- for(var i = 0; i < children.length; i++)
- num += this.walk(children[i],filter,action);
- break;
- default:
- if(filter.call(null,bm))
- {
- action.call(null,bm);
- num ++;
- }
- break;
- }
- return num;
- },
-
- /**
- * Index a bookmark.
- * write meta to metafile and write a empty content file
- */
- indexBookmark: function(bookmark)
- {
- log("index bookmark " + bookmark.URL );
- var meta = [
- bookmark.URL,
- "FirefoxBookmark",
- "text/plain", //TODO what the content type should be
- "t:name=" + bookmark.Name,
- "t:path=" + bookmark.path,
- ];
- if(bookmark.Description)
- meta.push("t:description=" + bookmark.Description);
- if(bookmark.ShortcutURL)
- meta.push("t:shortcuturl=" + bookmark.ShortcutURL);
- //if(bookmark.LastModifiedDate)
- // meta.push("k:lastmodifieddate=" + bookmark.LastModifiedDate);
- //if(bookmark.LastVisitDate)
- // meta.push("k:lastvisitdate=" + bookmark.LastVisitDate);
- beagle.writeRawMetadata(meta,beagle.getMetaPath(bookmark.URL,"bookmark"));
- // a little hack , write empty content to content file
- beagle.writeRawMetadata([],beagle.getContentPath(bookmark.URL,"bookmark"));
- },
-
- /**
- * Index all the bookmarks.
- * It is not used.
- */
- indexAll:function()
- {
- this.walk(
- function(bookmark){return bookmark.isBookmark();},
- this.indexBookmark
- );
- beaglePref.set("beagle.bookmark.last.indexed.date","" + (new Date()).getTime());
- },
-
- /**
- * Index the modifled (or new ) bookmarks.
- * if report is true , alert the num of indexed bookmarks
- */
- indexModified:function(report)
- {
- var root = new Bookmark(RDF.GetResource("NC:BookmarksRoot"),"");
- var lastIndexDate = beaglePref.get("beagle.bookmark.last.indexed.date");
- var num = this.walk(
- root,
- function(bookmark){return bookmark.isBookmark() && bookmark.isModified(lastIndexDate);},
- this.indexBookmark
- );
- beaglePref.set("beagle.bookmark.last.indexed.date","" + (new Date()).getTime());
- if(report)
- alert(_f("beagle_index_bookmark_finish",[num]));
- log(_f("beagle_index_bookmark_finish",[num]));
- }
-}
-
-
diff --git a/extensions/firefox-extension/chrome/content/indexLink.js b/extensions/firefox-extension/chrome/content/indexLink.js
deleted file mode 100644
index 752337563..000000000
--- a/extensions/firefox-extension/chrome/content/indexLink.js
+++ /dev/null
@@ -1,338 +0,0 @@
-/**
- * a browser used to download the link/image and index it
- */
-
-beagleInvisibleBrowser = {
-
- get ELEMENT() { return document.getElementById("beagle-invisible-browser"); },
-
- get STATUS_ELEMENT() { return document.getElementById("beagle-index-link-status");},
-
- get START_BUTTON() { return document.getElementById("beagle-index-link-start");},
-
- get STOP_BUTTON() { return document.getElementById("beagle-index-link-stop");},
-
- currentURL: null,
-
- referrer : null,
-
- currentContentType:null,
-
- isDocument:null,
-
- sniffer: null,
-
- persist : null,
-
- /**
- * get current URL . It might be differen't with this.currentURL
- * because of meta redirection / javascript redirection
- */
- getCurrentURL : function()
- {
- if(this.isDocument)
- {
- return this.ELEMENT.currentURI.spec;
- }
- else
- return this.currentURL;
- },
- /**
- * connect to sever
- * sniff the contentType
- */
- connect : function(url,referrer)
- {
- this.currentURL = url;
- this.referrer = referrer;
- this.sniffer = new headerSniffer(
- url,
- referrer,
- Function.bind(this.onGetContentType,this),
- Function.bind(this.onGetResponseError,this)
- );
- this.sniffer.httpHead();
- this.STATUS_ELEMENT.value = _f("beagle_index_link_connect",[url]);
- },
-
- /**
- * for non-html file . save it (to ~/.beagle/ToIndex)
- */
- save : function(url,path)
- {
- window.opener.beagle.saveFile(url,path,this);
- },
-
- /**
- * for html/xml file . load it (and then index the DOM)
- * TODO: more thing can be just do once ? not every time
- * TODO: what allow ?
- */
- load : function(url,referrer)
- {
- try{
- this.ELEMENT.webProgress.addProgressListener(this, Components.interfaces.nsIWebProgress.NOTIFY_ALL);
- }
- catch(ex){log(ex)};
- this.ELEMENT._load_cb = Function.bind(this.doIndex,this);
- this.ELEMENT.addEventListener("load", this.ELEMENT._load_cb, true);
- this.ELEMENT.docShell.allowJavascript = true;
- this.ELEMENT.docShell.allowImages = false;
- this.ELEMENT.docShell.allowMetaRedirects = true;
- this.ELEMENT.docShell.QueryInterface(Components.interfaces.nsIDocShellHistory).useGlobalHistory = false;
- this.ELEMENT.loadURI(url,null, null);
- },
-
- /**
- * called when the start button is clicked
- * TODO:shall we re-sniff when reload?
- */
- reload : function()
- {
- this.START_BUTTON.disabled=true;
- this.STOP_BUTTON.disabled=false;
- this.connect(this.currentURL,this.referrer);
- },
-
- /**
- * called when the stop button is clicked
- */
- stop : function()
- {
- this.START_BUTTON.disabled=false;
- this.STOP_BUTTON.disabled=true;
- this.STATUS_ELEMENT.value = _("beagle_index_link_stop");
-
- if(this.currentContentType == null) //not get contenttype yet
- {
- this.sniffer.cancel();
- return;
- }
- if(this.isDocument)
- {
- this.ELEMENT.stop();
- this.ELEMENT.removeEventListener('load',this.ELEMENT._load_cb,true);
- }
- else
- {
-
- this.persist.progressListener = null;
- this.persist.cancelSave();
- //if we cancel save . It's our responsibility to clean the tmp file
- try{
- var tmpfile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
- tmpfile.initWithPath(window.opener.beagle.getContentPath(this.currentURL));
- tmpfile.remove(false);
- }
- catch(ex){ log(ex);}
- }
- this.currentContentType = null;
- },
-
- /**
- * call window.opener.beagle to index the file/document
- */
- doIndex : function()
- {
- this.STOP_BUTTON.disabled=true;
- this.STATUS_ELEMENT.value = _f("beagle_index_link_saving",[this.getCurrentURL()]);
- window.opener.beagle.onLinkLoad(
- this.getCurrentURL(),
- this.currentContentType,
- this.ELEMENT.contentDocument,
- window.arguments[0]);
- window.close();
- },
-
- QueryInterface : function(aIID)
- {
- if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
- aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
- aIID.equals(Components.interfaces.nsIXULBrowserWindow) ||
- aIID.equals(Components.interfaces.nsISupports))
- return this;
- throw Components.results.NS_NOINTERFACE;
- },
-
- /***************************************************************
- * the five functions below is progresslistener interface
- ***************************************************************/
-
- onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus)
- {
- //alert(aStateFlags);
- if ( aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_START )
- {
- this.STATUS_ELEMENT.value = _f("beagle_index_link_start",[this.currentURL]);
- }
- if ( !this.isDocument && aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP )
- {
- this.STATUS_ELEMENT.value = _f("beagle_index_link_saving",[this.currentURL]);
- window.opener.beagle.onLinkLoad(this.currentURL,this.currentContentType,null,window.arguments[0]);
- window.close();
- }
- },
-
- onProgressChange : function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
- {
- if ( aCurTotalProgress != aMaxTotalProgress )
- {
- var progress = (aMaxSelfProgress > 0) ? Math.round(aCurSelfProgress / aMaxSelfProgress * 100) + "%" : aCurSelfProgress + "Bytes";
- this.STATUS_ELEMENT.value = _f("beagle_index_link_progress",[progress,this.currentURL]);
- }
- },
-
- onStatusChange : function() {},
- onLocationChange : function() {},
- onSecurityChange : function() {},
- /**
- * pass it as a callback to sniffer
- * when we get the contentType , it is called.
- */
- onGetContentType : function(contentType,url)
- {
- if(!contentType)
- contentType ="text/html";
- this.currentContentType = contentType;
- this.currentURL = url;
- if(contentType.match(/(text|html|xml)/i))
- {
- this.isDocument = true;
- this.load(url,this.referrer);
- }
- else
- {
- this.isDocument = false;
- this.save(url,window.opener.beagle.getContentPath(url));
- }
- },
- /**
- * pass it as a callback to sniffer
- * when some error occurs, it is called
- */
- onGetResponseError : function(msg)
- {
- this.STATUS_ELEMENT.value = msg;
- },
-
-};
-
-
-/**
- * sniff the head
- * here is used to get the mimetype of the given url
- */
-function headerSniffer(URLSpec, RefURLSpec,onSuccess,onError)
-{
- this.URLSpec = URLSpec;
- this.refURLSpec = RefURLSpec;
- this.onSuccess = onSuccess;
- this.onError = onError;
-}
-
-
-headerSniffer.prototype = {
-
- _URL : Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURL),
- _IO : Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService),
- _channel : null,
- _headers : null,
-
- /**
- * send http head
- */
- httpHead : function()
- {
- this._channel = null;
- this._headers = {};
- try {
- this._URL.spec = this.URLSpec;
- this._channel = this._IO.newChannelFromURI(this._URL).QueryInterface(Components.interfaces.nsIHttpChannel);
- this._channel.loadFlags = this._channel.LOAD_BYPASS_CACHE;
- this._channel.setRequestHeader("User-Agent", navigator.userAgent, false);
- if ( this.refURLSpec ) this._channel.setRequestHeader("Referer", this.refURLSpec, false);
- } catch(ex) {
- this.onError(_("beagle_index_link_invalid_url"));
- }
- try {
- this._channel.requestMethod = "HEAD";
- this._channel.asyncOpen(this, this);
- } catch(ex) {
- this.onError(ex);
- }
- },
-
- /**
- * cancel sniff
- * I didn't find any way to stop the request ?
- * So here we will just remove the callback function
- */
- cancel : function()
- {
- log("sniff canceled");
- this.onSuccess = function(){};
- this.onError = function(){};
- },
-
- /**
- * get response header
- */
- getHeader : function(header_name)
- {
- try { return this._channel.getResponseHeader(header_name); } catch(ex) { return ""; }
- },
-
- /**
- * get http status
- */
- getStatus : function()
- {
- try { return this._channel.responseStatus; } catch(ex) { return ""; }
- },
-
- onDataAvailable : function() {},
- onStartRequest : function() {},
- onStopRequest : function() { this.onHttpSuccess(); },
-
- /**
- * get http reponse successfully
- */
- onHttpSuccess : function()
- {
- var contentType = this.getHeader("Content-Type");
- var httpStatus = this.getStatus();
-
- switch ( httpStatus )
- {
- case 404 : this.onError(_("beagle_index_link_http_403")); return;
- case 403 : this.onError(_("beagle_index_link_http_404")); return;
- case 500 : this.onError(_("beagle_index_link_http_500")); return;
- }
-
- //if redirect
- var redirectURL = this.getHeader("Location");
- if ( redirectURL )
- {
- if ( redirectURL.indexOf("http") != 0 ) redirectURL = this._URL.resolve(redirectURL);
- //re-sniffer
- this.URLSpec = redirectURL;
- this.httpHead();
- return;
- }
- //contenType may looks like text/html; charset=UTF-8
- //we only need text/html
- contentType = contentType.split(';',1)[0];
- log("get contenttype = " + contentType);
- this.onSuccess(contentType,this.URLSpec);
-
- },
-
-};
-
-
-window.onload = function()
-{
- //window.arguments[0] is the url to load
- //window.arguments[1] is referrer
- beagleInvisibleBrowser.connect(window.arguments[0],window.arguments[1]);
-}
diff --git a/extensions/firefox-extension/chrome/content/indexLink.xul b/extensions/firefox-extension/chrome/content/indexLink.xul
deleted file mode 100755
index 3f2bfa99e..000000000
--- a/extensions/firefox-extension/chrome/content/indexLink.xul
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-
-
-<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-
-<!DOCTYPE window SYSTEM "chrome://beagle/locale/beagle.dtd">
-
-<window id="beagle-index-link"
- title="Beagle Index "
- style="width:400px"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<stringbundleset id="stringbundleset">
- <stringbundle id="beagleStrings"
- src="chrome://beagle/locale/beagle.properties"/>
-</stringbundleset>
-
-<script type="application/x-javascript"
- src="chrome://beagle/content/i18n.js" />
-<script type="application/x-javascript"
- src="chrome://beagle/content/utils.js" />
-<script type="application/x-javascript"
- src="chrome://beagle/content/indexLink.js" />
-
-<textbox id="beagle-index-link-status" readonly="true" value="" />
-<hbox>
- <button id="beagle-index-link-start" label="&beagle.index.link.start.label;"
- oncommand="beagleInvisibleBrowser.reload();" disabled="true"/>
- <button id="beagle-index-link-stop" label="&beagle.index.link.stop.label;"
- oncommand="beagleInvisibleBrowser.stop();" />
-</hbox>
-
-<browser id="beagle-invisible-browser" type="content" collapsed="true"/>
-
-</window>
diff --git a/extensions/firefox-extension/chrome/content/jslib/debug/debug.js b/extensions/firefox-extension/chrome/content/jslib/debug/debug.js
deleted file mode 100644
index 75f5f9256..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/debug/debug.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
-
-The contents of this file are subject to the Mozilla Public
-License Version 1.1 (the "License"); you may not use this file
-except in compliance with the License. You may obtain a copy of
-the License at http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS
-IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is jslib team code.
-The Initial Developer of the Original Code is jslib team.
-
-Portions created by jslib team are
-Copyright (C) 2000 jslib team. All
-Rights Reserved.
-
-Original Author: Pete Collins <pete@mozdev.org>
-Contributor(s):
- Henrik Gemal <http://gemal.dk>
-*/
-
-/************** DUBUG ******************/
-if (typeof(JS_LIB_LOADED) == "boolean")
-{
-
- const JS_DEBUG_LOADED = true;
- const JS_DEBUG_FILE = "debug.js";
-
- /****************************************************************
- * void jslibDebug(aOutString) *
- * aOutString is an argument of string debug message *
- * returns void *
- * eg: *
- * var msg="Testing function"; *
- * jslibDebug(msg); *
- * *
- * outputs: Testing function *
- ****************************************************************/
-
- // DEPRECATED
- function jslib_debug(aOutString) { return jslibDebug(aOutString); }
-
- function jslibDebug(aOutString)
- {
- if (!JS_LIB_DEBUG)
- return;
-
- if (JS_LIB_DEBUG_ALERT)
- alert(aOutString);
-
- dump(aOutString+'\n');
- }
-
- // print to stdout
- function jslibPrint(aOutString)
- {
- dump(aOutString+'\n');
- }
-
- // print to stdout
- function jslibPrintDebug(aMsg, aOutString)
- {
- if (!aMsg) aMsg = "JSLIB_DEBUG: ";
- dump(aMsg+aOutString+'\n');
- }
-
- // print to stdout
- function jslibPrintBracket(aOutString)
- {
- dump("["+aOutString+']\n');
- }
-
- // print message
- function jslibPrintMsg(aOutStr1, aOutStr2)
- {
- dump(aOutStr1+": "+aOutStr2+"\n");
- }
-
-
- /****************************************************************
- * void jslibError(e, aType, aResults, aCaller) *
- * e - argument of results exception *
- * aType - argument of string error type message *
- * aResults - argument of string Components.results name *
- * aCaller - argument of string caller filename and func name *
- * returns void *
- * Ex: *
- * jslibError(null, "Missing file path argument\n", *
- * "NS_ERROR_XPC_NOT_ENOUGH_ARGS", *
- * JS_LIB_FILE+": include"); *
- * *
- * outputs: *
- * -----======[ ERROR ]=====----- *
- * Error in jslib.js: include: Missing file path argument *
- * *
- * NS_ERROR_NUMBER: NS_ERROR_XPC_NOT_ENOUGH_ARGS *
- * ------------------------------ *
- * *
- ****************************************************************/
-
- function jslibError(e)
- {
- var rv = null;
- var errMsg="";
- if (typeof(e) == 'object') {
- var m, n, r, l, ln, fn = "";
- try {
- rv = e.result;
- m = e.message;
- fn = e.filename;
- l = e.location;
- ln = l.lineNumber;
- } catch (e) {}
- errMsg+="FileName: "+fn+"\n" +
- "Result: "+rv+"\n" +
- "Message: "+m+"\n" +
- "LineNumber: "+ln+"\n";
- }
-
- errMsg = "\n-----======[ jsLib ERROR ]=====-----\n" + errMsg;
- errMsg += "-------------------------------------\n";
-
- jslibDebug(errMsg);
-
- return rv;
- }
-
- function jslibErrorMsg (e)
- {
- jslibDebug(e);
- return null;
- }
-
- function jslibErrorWarn (e)
- {
- jslibDebug("jsLib warn: "+e);
- return null;
- }
-
- function jslibErrorMsg (e)
- {
- jslibDebug(e);
- return jslibRes[e];
- }
-
- // Welcome message
- jslibDebug('*** load: '+JS_DEBUG_FILE+' OK');
- jslibDebug(JS_LIB_HELP);
- jslibDebug("\n\n*********************\nJS_LIB DEBUG IS ON\n*********************\n\n");
-
-}
-
-
diff --git a/extensions/firefox-extension/chrome/content/jslib/io/dir.js b/extensions/firefox-extension/chrome/content/jslib/io/dir.js
deleted file mode 100644
index c9921b334..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/io/dir.js
+++ /dev/null
@@ -1,231 +0,0 @@
-/*** -*- Mode: Javascript; tab-width: 2;
-
-The contents of this file are subject to the Mozilla Public
-License Version 1.1 (the "License"); you may not use this file
-except in compliance with the License. You may obtain a copy of
-the License at http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS
-IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is Collabnet code.
-The Initial Developer of the Original Code is Collabnet.
-
-Portions created by Collabnet are Copyright (C) 2000 Collabnet.
-All Rights Reserved.
-
-Contributor(s): Pete Collins, Doug Turner, Brendan Eich, Warren Harris,
- Eric Plaster, Martin Kutschker
-
-
-JS Directory Class API
-
- dir.js
-
-Function List
-
- create(aPermissions); // permissions are optional
-
- files(); // returns an array listing all files of a dirs contents
- dirs(); // returns an array listing all dirs of a dirs contents
- list(aDirPath); // returns an array listing of a dirs contents
-
- // help!
- help(); // currently dumps a list of available functions
-
-Instructions:
-
-
-*/
-
-if (typeof(JS_LIB_LOADED)=='boolean') {
-
-/************* INCLUDE FILESYSTEM *****************/
-if(typeof(JS_FILESYSTEM_LOADED)!='boolean')
- include(jslib_filesystem);
-/************* INCLUDE FILESYSTEM *****************/
-
-
-/****************** Globals **********************/
-const JS_DIR_FILE = "dir.js";
-const JS_DIR_LOADED = true;
-
-const JS_DIR_LOCAL_CID = "@mozilla.org/file/local;1";
-const JS_DIR_LOCATOR_PROGID = '@mozilla.org/filelocator;1';
-const JS_DIR_CID = "@mozilla.org/file/directory_service;1";
-
-const JS_DIR_I_LOCAL_FILE = "nsILocalFile";
-const JS_DIR_INIT_W_PATH = "initWithPath";
-
-const JS_DIR_PREFS_DIR = 65539;
-
-const JS_DIR_DIRECTORY = 0x01; // 1
-const JS_DIR_OK = true;
-
-const JS_DIR_DEFAULT_PERMS = 0766;
-
-const JS_DIR_FilePath = new C.Constructor(JS_DIR_LOCAL_CID,
- JS_DIR_I_LOCAL_FILE,
- JS_DIR_INIT_W_PATH);
-/****************** Globals **********************/
-
-/****************** Dir Object Class *********************/
-// constructor
-function Dir(aPath) {
-
- if(!aPath) {
- jslibError(null,
- "Please enter a local file path to initialize",
- "NS_ERROR_XPC_NOT_ENOUGH_ARGS", JS_DIR_FILE);
- throw C.results.NS_ERROR_XPC_NOT_ENOUGH_ARGS;
- }
-
- return this.initPath(arguments);
-} // end constructor
-
-Dir.prototype = new FileSystem;
-Dir.prototype.fileInst = null;
-
-/********************* CREATE ****************************/
-Dir.prototype.create = function(aPermissions)
-{
- if(!this.mPath) {
- jslibError(null, "create (no file path defined)", "NS_ERROR_NOT_INITIALIZED");
- return C.results.NS_ERROR_NOT_INITIALIZED;
- }
-
- if(this.exists()) {
- jslibError(null, "(Dir already exists", "NS_ERROR_FAILURE", JS_DIR_FILE+":create");
- return null;
- }
-
- if (typeof(aPermissions) == "number") {
- var checkPerms = this.validatePermissions(aPermissions);
-
- if(!checkPerms) {
- jslibError(null, "create (invalid permissions)",
- "NS_ERROR_INVALID_ARG", JS_DIR_FILE+":create");
- return C.results.NS_ERROR_INVALID_ARG;
- }
- } else {
- checkPerms = this.mFileInst.parent.permissions;
- }
-
- var rv = null;
-
- try {
- rv=this.mFileInst.create(JS_DIR_DIRECTORY, checkPerms);
- } catch (e) {
- jslibError(e, "(unable to create)", "NS_ERROR_FAILURE", JS_DIR_FILE+":create");
- rv=null;
- }
-
- return rv;
-};
-
-/********************* READDIR **************************/
-Dir.prototype.readDir = function ()
-{
-
- if(!this.exists()) {
- jslibError(null, "(Dir already exists", "NS_ERROR_FAILURE", JS_DIR_FILE+":readDir");
- return null;
- }
-
- var rv=null;
-
- try {
- if(!this.isDir()) {
- jslibError(null, "(file is not a directory)", "NS_ERROR_FAILURE", JS_DIR_FILE+":readDir");
- return null;
- }
-
- var files = this.mFileInst.directoryEntries;
- var listings = new Array();
- var file;
-
- if(typeof(JS_FILE_LOADED)!='boolean')
- include(JS_LIB_PATH+'io/file.js');
-
- while(files.hasMoreElements()) {
- file = files.getNext().QueryInterface(C.interfaces.nsILocalFile);
- if(file.isFile())
- listings.push(new File(file.path));
-
- if(file.isDirectory())
- listings.push(new Dir(file.path));
- }
-
- rv=listings;
- } catch(e) {
- jslibError(e, "(unexpected error)", "NS_ERROR_UNEXPECTED", JS_FILE_FILE+":readDir");
- rv=null;
- }
-
- return rv;
-};
-
-/********************* REMOVE *******************************/
-Dir.prototype.remove = function (aRecursive)
-{
-
- if(typeof(aRecursive)!='boolean')
- aRecursive=false;
-
- if(!this.checkInst())
- throw C.results.NS_ERROR_NOT_INITIALIZED;
-
- if(!this.mPath)
- {
- jslibError(null, "remove (no path defined)",
- "NS_ERROR_INVALID_ARG", JS_DIR_FILE+":remove");
- return null;
- }
-
- var rv=null
-
- try {
- if(!this.exists()) {
- jslibError(null, "(directory doesn't exist)", "NS_ERROR_FAILURE", JS_DIR_FILE+":remove");
- return null;
- }
-
- if(!this.isDir()) {
- jslibError(null, "(file is not a directory)", "NS_ERROR_FAILURE", JS_DIR_FILE+":remove");
- return null;
- }
-
- rv=this.mFileInst.remove(aRecursive);
- } catch (e) {
- jslibError(e, "(dir not empty, use 'remove(true)' for recursion)", "NS_ERROR_UNEXPECTED",
- JS_DIR_FILE+":remove");
- rv=null;
- }
-
- return rv;
-};
-
-/********************* HELP *****************************/
-Dir.prototype.super_help = FileSystem.prototype.help;
-
-Dir.prototype.__defineGetter__('help',
-function() {
- var help = this.super_help() +
-
- " create(aPermissions);\n" +
- " remove(aRecursive);\n" +
- " readDir(aDirPath);\n";
-
- return help;
-});
-
-jslibDebug('*** load: '+JS_DIR_FILE+' OK');
-
-} else {
- dump("JSLIB library not loaded:\n" +
- " \tTo load use: chrome://jslib/content/jslib.js\n" +
- " \tThen: include(jslib_dir);\n\n");
-}
-
diff --git a/extensions/firefox-extension/chrome/content/jslib/io/dirUtils.js b/extensions/firefox-extension/chrome/content/jslib/io/dirUtils.js
deleted file mode 100644
index c5f533a49..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/io/dirUtils.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/*** -*- Mode: Javascript; tab-width: 2;
-
-The contents of this file are subject to the Mozilla Public
-License Version 1.1 (the "License"); you may not use this file
-except in compliance with the License. You may obtain a copy of
-the License at http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS
-IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is Collabnet code.
-The Initial Developer of the Original Code is Collabnet.
-
-Portions created by Collabnet are Copyright (C) 2000 Collabnet.
-All Rights Reserved.
-
-Contributor(s): Pete Collins, Doug Turner, Brendan Eich, Warren Harris,
- Eric Plaster, Martin Kutschker
-
-
-JS Directory Class API
-
- dirUtils.js
-
-Function List
-
-
-Instructions:
-
-
-*/
-
-if(typeof(JS_LIB_LOADED)=='boolean') {
-
-const JS_DIRUTILS_FILE = "dirUtils.js";
-const JS_DIRUTILS_LOADED = true;
-
-const JS_DIRUTILS_FILE_LOCAL_CID = "@mozilla.org/file/local;1";
-const JS_DIRUTILS_FILE_DIR_CID = "@mozilla.org/file/directory_service;1";
-
-const JS_DIRUTILS_FILE_I_LOCAL_FILE = "nsILocalFile";
-const JS_DIRUTILS_INIT_W_PATH = "initWithPath";
-const JS_DIRUTILS_I_PROPS = "nsIProperties";
-const JS_DIRUTILS_NSIFILE = C.interfaces.nsIFile;
-
-const NS_APP_PREFS_50_DIR = "PrefD"; // /root/.mozilla/Default User/k1m30xaf.slt
-const NS_APP_CHROME_DIR = "AChrom"; // /usr/src/mozilla/dist/bin/chrome
-const NS_APP_USER_PROFILES_ROOT_DIR = "DefProfRt"; // /root/.mozilla
-const NS_APP_USER_PROFILE_50_DIR = "ProfD"; // /root/.mozilla/Default User/k1m30xaf.slt
-
-const NS_APP_APPLICATION_REGISTRY_DIR = "AppRegD"; // /root/.mozilla
-const NS_APP_APPLICATION_REGISTRY_FILE = "AppRegF"; // /root/.mozilla/appreg
-const NS_APP_DEFAULTS_50_DIR = "DefRt"; // /usr/src/mozilla/dist/bin/defaults
-const NS_APP_PREF_DEFAULTS_50_DIR = "PrfDef"; // /usr/src/mozilla/dist/bin/defaults/pref
-const NS_APP_PROFILE_DEFAULTS_50_DIR = "profDef"; // /usr/src/mozilla/dist/bin/defaults/profile/US
-const NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR = "ProfDefNoLoc"; // /usr/src/mozilla/dist/bin/defaults/profile
-const NS_APP_RES_DIR = "ARes"; // /usr/src/mozilla/dist/bin/res
-const NS_APP_PLUGINS_DIR = "APlugns"; // /usr/src/mozilla/dist/bin/plugins
-const NS_APP_SEARCH_DIR = "SrchPlugns"; // /usr/src/mozilla/dist/bin/searchplugins
-const NS_APP_PREFS_50_FILE = "PrefF"; // /root/.mozilla/Default User/k1m30xaf.slt/prefs.js
-const NS_APP_USER_CHROME_DIR = "UChrm"; // /root/.mozilla/Default User/k1m30xaf.slt/chrome
-const NS_APP_LOCALSTORE_50_FILE = "LclSt"; // /root/.mozilla/Default User/k1m30xaf.slt/localstore.rdf
-const NS_APP_HISTORY_50_FILE = "UHist"; // /root/.mozilla/Default User/k1m30xaf.slt/history.dat
-const NS_APP_USER_PANELS_50_FILE = "UPnls"; // /root/.mozilla/Default User/k1m30xaf.slt/panels.rdf
-const NS_APP_USER_MIMETYPES_50_FILE = "UMimTyp"; // /root/.mozilla/Default User/k1m30xaf.slt/mimeTypes.rdf
-const NS_APP_BOOKMARKS_50_FILE = "BMarks"; // /root/.mozilla/Default User/k1m30xaf.slt/bookmarks.html
-const NS_APP_SEARCH_50_FILE = "SrchF"; // /root/.mozilla/Default User/k1m30xaf.slt/search.rdf
-const NS_APP_MAIL_50_DIR = "MailD"; // /root/.mozilla/Default User/k1m30xaf.slt/Mail
-const NS_APP_IMAP_MAIL_50_DIR = "IMapMD"; // /root/.mozilla/Default User/k1m30xaf.slt/ImapMail
-const NS_APP_NEWS_50_DIR = "NewsD"; // /root/.mozilla/Default User/k1m30xaf.slt/News
-const NS_APP_MESSENGER_FOLDER_CACHE_50_DIR = "MFCaD"; // /root/.mozilla/Default User/k1m30xaf.slt/panacea.dat
-
-// Useful OS System Dirs
-const NS_OS_CURRENT_PROCESS_DIR = "CurProcD"; // /usr/src/mozilla/dist/bin
-const NS_OS_HOME_DIR = "Home"; // /root
-const NS_OS_TEMP_DIR = "TmpD"; // /tmp
-const NS_XPCOM_COMPONENT_DIR = "ComsD"; // /usr/src/mozilla/dist/bin/components
-
-const JS_DIRUTILS_FilePath = new C.Constructor(JS_DIRUTILS_FILE_LOCAL_CID,
- JS_DIRUTILS_FILE_I_LOCAL_FILE,
- JS_DIRUTILS_INIT_W_PATH);
-
-const JS_DIRUTILS_DIR = new C.Constructor(JS_DIRUTILS_FILE_DIR_CID,
- JS_DIRUTILS_I_PROPS);
-
-// constructor
-function DirUtils(){}
-
-DirUtils.prototype = {
-
-getPath : function (aAppID) {
-
- if(!aAppID) {
- jslibError(null, "(no arg defined)", "NS_ERROR_INVALID_ARG", JS_FILE_FILE+":getPath");
- return null;
- }
-
- var rv;
-
- try {
- rv=(new JS_DIRUTILS_DIR()).get(aAppID, JS_DIRUTILS_NSIFILE).path;
- } catch (e) {
- jslibError(e, "(unexpected error)", "NS_ERROR_FAILURE", JS_DIRUTILS_FILE+":getPath");
- rv=null;
- }
-
- return rv;
-},
-
-getPrefsDir : function () { return this.getPath(NS_APP_PREFS_50_DIR); },
-getChromeDir : function () { return this.getPath(NS_APP_CHROME_DIR); },
-getMozHomeDir : function () { return this.getPath(NS_APP_USER_PROFILES_ROOT_DIR); },
-getMozUserHomeDir : function () { return this.getPath(NS_APP_USER_PROFILE_50_DIR); },
-getAppRegDir : function () { return this.getPath(NS_APP_APPLICATION_REGISTRY_FILE); },
-getAppDefaultDir : function () { return this.getPath(NS_APP_DEFAULTS_50_DIR); },
-getAppDefaultPrefDir : function () { return this.getPath(NS_APP_PREF_DEFAULTS_50_DIR); },
-getProfileDefaultsLocDir : function () { return this.getPath(NS_APP_PROFILE_DEFAULTS_50_DIR); },
-getProfileDefaultsDir : function () { return this.getPath(NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR); },
-getAppResDir : function () { return this.getPath(NS_APP_RES_DIR); },
-getAppPluginsDir : function () { return this.getPath(NS_APP_PLUGINS_DIR); },
-getSearchPluginsDir : function () { return this.getPath(NS_APP_SEARCH_DIR); },
-getPrefsFile : function () { return this.getPath(NS_APP_PREFS_50_FILE); },
-getUserChromeDir : function () { return this.getPath(NS_APP_USER_CHROME_DIR); },
-getLocalStore : function () { return this.getPath(NS_APP_LOCALSTORE_50_FILE); },
-getHistoryFile : function () { return this.getPath(NS_APP_HISTORY_50_FILE); },
-getPanelsFile : function () { return this.getPath(NS_APP_USER_PANELS_50_FILE); },
-getMimeTypes : function () { return this.getPath(NS_APP_USER_MIMETYPES_50_FILE); },
-getBookmarks : function () { return this.getPath(NS_APP_BOOKMARKS_50_FILE); },
-getSearchFile : function () { return this.getPath(NS_APP_SEARCH_50_FILE); },
-getUserMailDir : function () { return this.getPath(NS_APP_MAIL_50_DIR); },
-getUserImapDir : function () { return this.getPath(NS_APP_IMAP_MAIL_50_DIR); },
-getUserNewsDir : function () { return this.getPath(NS_APP_NEWS_50_DIR); },
-getMessengerFolderCache : function () { return this.getPath(NS_APP_MESSENGER_FOLDER_CACHE_50_DIR); },
-getCurProcDir : function () { return this.getPath(NS_OS_CURRENT_PROCESS_DIR); },
-getHomeDir : function () { return this.getPath(NS_OS_HOME_DIR); },
-getTmpDir : function () { return this.getPath(NS_OS_TEMP_DIR); },
-getComponentsDir : function () { return this.getPath(NS_XPCOM_COMPONENT_DIR); },
-
-get help() {
- const help =
-
- "\n\nFunction and Attribute List:\n" +
- "\n" +
- " getPrefsDir()\n" +
- " getChromeDir()\n" +
- " getMozHomeDir()\n" +
- " getMozUserHomeDir()\n" +
- " getAppRegDir()\n" +
- " getAppDefaultDir()\n" +
- " getAppDefaultPrefDir()\n" +
- " getProfileDefaultsLocDir()\n" +
- " getProfileDefaultsDir()\n" +
- " getAppResDir()\n" +
- " getAppPluginsDir()\n" +
- " getSearchPluginsDir()\n" +
- " getPrefsFile()\n" +
- " getUserChromeDir()\n" +
- " getLocalStore()\n" +
- " getHistoryFile()\n" +
- " getPanelsFile()\n" +
- " getMimeTypes()\n" +
- " getBookmarks()\n" +
- " getSearchFile()\n" +
- " getUserMailDir()\n" +
- " getUserImapDir()\n" +
- " getUserNewsDir()\n" +
- " getMessengerFolderCache()\n\n";
-
- return help;
-}
-
-}; //END CLASS
-
-jslibDebug('*** load: '+JS_DIRUTILS_FILE+' OK');
-
-} // END BLOCK JS_LIB_LOADED CHECK
-
-else {
- dump("JSLIB library not loaded:\n" +
- " \tTo load use: chrome://jslib/content/jslib.js\n" +
- " \tThen: include(jslib_dirutils);\n\n");
-}
-
diff --git a/extensions/firefox-extension/chrome/content/jslib/io/file.js b/extensions/firefox-extension/chrome/content/jslib/io/file.js
deleted file mode 100644
index 4325e0650..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/io/file.js
+++ /dev/null
@@ -1,771 +0,0 @@
-/*** -*- Mode: Javascript; tab-width: 2;
-The contents of this file are subject to the Mozilla Public
-License Version 1.1 (the "License"); you may not use this file
-except in compliance with the License. You may obtain a copy of
-the License at http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS
-IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is jslib code.
-The Initial Developer of the Original Code is jslib team.
-
-Portions created by jslib team are
-Copyright (C) 2000 jslib team. All
-Rights Reserved.
-
-Contributor(s): Pete Collins,
- Doug Turner,
- Brendan Eich,
- Warren Harris,
- Eric Plaster,
- Martin Kutschker
-
-The purpose of this file is to make it a little easier to use
-xpcom nsIFile file IO library from js
-
- File API
- file.js
-
- Base Class:
- FileSystem
- filesystem.js
-
- Function List:
- // Constructor
- File(aPath) creates the File object and sets the file path
-
- // file stream methods
- open(aMode, aPermissions); open a file handle for reading,
- writing or appending. permissions are optional.
- read(); returns the contents of a file
- readline(); returns the next line in the file.
- EOF; boolean check 'end of file' status
- write(aContents); writes the contents out to file.
- copy(aDest); copy the current file to a aDest
- close(); closes a file handle
- create(); creates a new file if one doesn't already exist
- exists(); check to see if a file exists
-
- // file attributes
- size; read only attribute gets the file size
- ext; read only attribute gets a file extension if there is one
- permissions; attribute gets or sets the files permissions
- dateModified; read only attribute gets last modified date in locale string
-
- // file path attributes
- leaf; read only attribute gets the file leaf
- path; read only attribute gets the path
- parent; read only attribute gets parent dir part of a path
-
- // direct manipulation
- nsIFile returns an nsIFile obj
-
- // utils
- remove(); removes the current file
- append(aLeaf); appends a leaf name to the current file
- appendRelativePath(aRelPath); appends a relitave path the the current file
-
- // help!
- help; currently dumps a list of available functions
-
- Instructions:
-
- First include this js file in your xul file.
- Next, create an File object:
-
- var file = new File("/path/file.ext");
-
- To see if the file exists, call the exists() member.
- This is a good check before going into some
- deep code to try and extract information from a non-existant file.
-
- To open a file for reading<"r">, writing<"w"> or appending<"a">,
- just call:
-
- file.open("w", 0644);
-
- where in this case you will be creating a new file called '/path/file.ext',
- with a mode of "w" which means you want to write a new file.
-
- If you want to read from a file, just call:
-
- file.open(); or
- file.open("r");
- var theFilesContents = file.read();
-
- ---- or ----
-
- while(!file.EOF) {
- var theFileContentsLine = file.readline();
- dump("line: "+theFileContentsLine+"\n");
- }
-
- The file contents will be returned to the caller so you can do something usefull with it.
-
- file.close();
-
- Calling 'close()' destroys any created objects. If you forget to use file.close() no probs
- all objects are discarded anyway.
-
- Warning: these API's are not for religious types
-
-************/
-
-// insure jslib base is loaded
-if (typeof(JS_LIB_LOADED)=='boolean') {
-
-// test to make sure filesystem base class is loaded
-if (typeof(JS_FILESYSTEM_LOADED)!='boolean')
- include(jslib_filesystem);
-
-/****************** Globals **********************/
-const JS_FILE_LOADED = true;
-const JS_FILE_FILE = "file.js";
-
-const JS_FILE_IOSERVICE_CID = "@mozilla.org/network/io-service;1";
-const JS_FILE_I_STREAM_CID = "@mozilla.org/scriptableinputstream;1";
-const JS_FILE_OUTSTREAM_CID = "@mozilla.org/network/file-output-stream;1";
-
-const JS_FILE_F_TRANSPORT_SERVICE_CID = "@mozilla.org/network/file-transport-service;1";
-
-const JS_FILE_I_IOSERVICE = C.interfaces.nsIIOService;
-const JS_FILE_I_SCRIPTABLE_IN_STREAM = "nsIScriptableInputStream";
-const JS_FILE_I_FILE_OUT_STREAM = C.interfaces.nsIFileOutputStream;
-
-const JS_FILE_READ = 0x01; // 1
-const JS_FILE_WRITE = 0x08; // 8
-const JS_FILE_APPEND = 0x10; // 16
-
-const JS_FILE_READ_MODE = "r";
-const JS_FILE_WRITE_MODE = "w";
-const JS_FILE_APPEND_MODE = "a";
-
-const JS_FILE_FILE_TYPE = 0x00; // 0
-
-const JS_FILE_CHUNK = 1024; // buffer for readline => set to 1k
-
-const JS_FILE_DEFAULT_PERMS = 0644;
-
-const JS_FILE_OK = true;
-
-try {
- const JS_FILE_InputStream = new C.Constructor
- (JS_FILE_I_STREAM_CID, JS_FILE_I_SCRIPTABLE_IN_STREAM);
-
- const JS_FILE_IOSERVICE = C.classes[JS_FILE_IOSERVICE_CID].
- getService(JS_FILE_I_IOSERVICE);
-
-} catch (e) {
- jslibError(e);
-}
-
-/***
- * Possible values for the ioFlags parameter
- * From:
- * http://lxr.mozilla.org/seamonkey/source/nsprpub/pr/include/prio.h#601
- */
-
-
-// #define PR_RDONLY 0x01
-// #define PR_WRONLY 0x02
-// #define PR_RDWR 0x04
-// #define PR_CREATE_FILE 0x08
-// #define PR_APPEND 0x10
-// #define PR_TRUNCATE 0x20
-// #define PR_SYNC 0x40
-// #define PR_EXCL 0x80
-
-const JS_FILE_NS_RDONLY = 0x01;
-const JS_FILE_NS_WRONLY = 0x02;
-const JS_FILE_NS_RDWR = 0x04;
-const JS_FILE_NS_CREATE_FILE = 0x08;
-const JS_FILE_NS_APPEND = 0x10;
-const JS_FILE_NS_TRUNCATE = 0x20;
-const JS_FILE_NS_SYNC = 0x40;
-const JS_FILE_NS_EXCL = 0x80;
-/****************** Globals **********************/
-
-
-/****************************************************************
-* void File(aPath) *
-* *
-* class constructor *
-* aPath is an argument of string local file path *
-* returns NS_OK on success, exception upon failure *
-* Ex: *
-* var p = '/tmp/foo.dat'; *
-* var f = new File(p); *
-* *
-* outputs: void(null) *
-****************************************************************/
-
-function File(aPath) {
-
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- return this.initPath(arguments);
-} // constructor
-
-File.prototype = new FileSystem();
-
-// member vars
-File.prototype.mMode = null;
-File.prototype.mFileChannel = null;
-File.prototype.mTransport = null;
-File.prototype.mURI = null;
-File.prototype.mOutStream = null;
-File.prototype.mInputStream = null;
-File.prototype.mLineBuffer = null;
-File.prototype.mPosition = 0;
-
-/********************* OPEN *************************************
-* bool open(aMode, aPerms) *
-* *
-* opens a file handle to read, write or append *
-* aMode is an argument of string 'w', 'a', 'r' *
-* returns true on success, null on failure *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* *
-* outputs: void(null) *
-****************************************************************/
-
-File.prototype.open = function (aMode, aPerms)
-{
-
- // close any existing file handles
- this.close();
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (!this.mPath)
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (this.exists() && this.mFileInst.isDirectory())
- return jslibErrorMsg("NS_ERROR_FILE_IS_DIRECTORY");
-
- if (this.mMode)
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (!this.mURI) {
- if (!this.exists())
- this.create();
- this.mURI = JS_FILE_IOSERVICE.newFileURI(this.mFileInst);
- }
-
- if (!aMode)
- aMode=JS_FILE_READ_MODE;
-
- this.resetCache();
- var rv;
-
- switch (aMode)
- {
- case JS_FILE_WRITE_MODE:
- case JS_FILE_APPEND_MODE: {
- try {
- if (!this.mFileChannel)
- this.mFileChannel = JS_FILE_IOSERVICE.newChannelFromURI(this.mURI);
- } catch (e) {
- return jslibError(e);
- }
-
- if (aPerms && !this.validatePermissions(aPerms))
- jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!aPerms)
- aPerms=JS_FILE_DEFAULT_PERMS;
-
- try {
- var offSet=0;
- if (aMode == JS_FILE_WRITE_MODE) {
- this.mMode=JS_FILE_WRITE_MODE;
- // create a filestream
- var fs = jslibCreateInstance(JS_FILE_OUTSTREAM_CID, JS_FILE_I_FILE_OUT_STREAM);
-
- fs.init(this.mFileInst, JS_FILE_NS_TRUNCATE |
- JS_FILE_NS_WRONLY, 00004, null);
- this.mOutStream = fs;
- } else {
- this.mMode=JS_FILE_APPEND_MODE;
- // create a filestream
- fs = jslibCreateInstance(JS_FILE_OUTSTREAM_CID, JS_FILE_I_FILE_OUT_STREAM);
-
- fs.init(this.mFileInst, JS_FILE_NS_RDWR |
- JS_FILE_NS_APPEND, 00004, null);
- this.mOutStream = fs;
- }
- } catch (e) {
- return jslibError(e);
- }
- rv = JS_LIB_OK;
- break;
- }
-
- case JS_FILE_READ_MODE: {
- if (!this.exists())
- jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- this.mMode=JS_FILE_READ_MODE;
-
- try {
- jslibDebug('****** '+this.mURI);
- this.mFileChannel = JS_FILE_IOSERVICE.newChannelFromURI(this.mURI);
- this.mInputStream = new JS_FILE_InputStream();
- this.mInputStream.init(this.mFileChannel.open());
- this.mLineBuffer = new Array();
- rv = JS_LIB_OK;
- } catch (e) {
- rv = jslibError(e);
- }
- break;
- }
-
- default:
- rv = jslibErrorMsg("NS_ERROR_INVALID_ARG");
- }
- return rv;
-}
-
-/********************* READ *************************************
-* string read() *
-* *
-* reads a file if the file is binary it will *
-* return type ex: ELF *
-* takes no arguments needs an open read mode filehandle *
-* returns string on success, null on failure *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.open(p); *
-* f.read(); *
-* *
-* outputs: <string contents of foo.dat> *
-****************************************************************/
-
-File.prototype.read = function (aSize)
-{
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (this.mMode != JS_FILE_READ_MODE) {
- this.close();
- return jslibErrorMsg("NS_ERROR_NOT_AVAILABLE");
- }
-
- var rv = null;
- try {
- if (!this.mFileInst || !this.mInputStream)
- jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- rv = this.mInputStream.read(aSize != undefined ? aSize : this.mFileInst.fileSize);
- this.mInputStream.close();
- } catch (e) {
- rv = jslibError(e);
- }
- return rv;
-}
-
-/********************* READLINE**********************************
-* string readline() *
-* *
-* reads a file if the file is binary it will *
-* return type string *
-* takes no arguments needs an open read mode filehandle *
-* returns string on success, null on failure *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.open(); *
-* while(!f.EOF) *
-* dump("line: "+f.readline()+"\n"); *
-* *
-* outputs: <string line of foo.dat> *
-****************************************************************/
-
-File.prototype.readline = function ()
-{
-
- if (!this.checkInst() || !this.mInputStream)
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- var rv = null;
- var buf = null;
- var tmp = null;
- try {
- if (this.mLineBuffer.length < 2) {
- buf = this.mInputStream.read(JS_FILE_CHUNK);
- this.mPosition = this.mPosition + JS_FILE_CHUNK;
- if (this.mPosition > this.mFileInst.fileSize)
- this.mPosition = this.mFileInst.fileSize;
- if (buf) {
- if (this.mLineBuffer.length == 1) {
- tmp = this.mLineBuffer.shift();
- buf = tmp+buf;
- }
- this.mLineBuffer = buf.split(/[\n\r]/);
- }
- }
- rv = this.mLineBuffer.shift();
- } catch (e) {
- rv = jslibError(e);
- }
- return rv;
-}
-
-/********************* EOF **************************************
-* bool getter EOF() *
-* *
-* boolean check 'end of file' status *
-* return type boolean *
-* takes no arguments needs an open read mode filehandle *
-* returns true on eof, false when not at eof *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.open(); *
-* while(!f.EOF) *
-* dump("line: "+f.readline()+"\n"); *
-* *
-* outputs: true or false *
-****************************************************************/
-
-File.prototype.__defineGetter__('EOF',
-function ()
-{
- if (!this.checkInst() || !this.mInputStream)
- throw jslibErrorThrow("NS_ERROR_NOT_INITIALIZED");
-
- if ((this.mLineBuffer.length > 0) || (this.mInputStream.available() > 0))
- return false;
-
- return true;
-})
-
-/********************* WRITE ************************************
-* write() *
-* *
-* Write data to a file *
-* *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.open("w"); *
-* f.write(); *
-* *
-* outputs: JS_LIB_OK upon success *
-****************************************************************/
-
-File.prototype.write = function (aBuffer)
-{
-
- if (!aBuffer)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (this.mMode == JS_FILE_READ_MODE) {
- this.close();
- jslibErrorMsg("NS_ERROR_FILE_READ_ONLY");
- }
-
- if (!this.mFileInst)
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED")
-
- var rv = null;
- try {
- this.mOutStream.write(aBuffer, aBuffer.length);
- this.mOutStream.flush();
- rv = JS_LIB_OK;
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
-}
-
-/********************* COPY *************************************
-* void copy(aDest) *
-* *
-* void file close *
-* return type void(null) *
-* takes no arguments closes an open file stream and *
-* deletes member var instances of objects *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* fopen(); *
-* f.close(); *
-* *
-* outputs: JS_LIB_OK upon success *
-****************************************************************/
-
-File.prototype.copy = function (aDest)
-{
-
- if (!aDest)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (!this.exists())
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv = JS_LIB_OK;
- try {
- var dest = new JS_FS_File_Path(aDest);
- var copyName, dir = null;
-
- if (dest.equals(this.mFileInst))
- return jslibErrorMsg("NS_ERROR_FILE_COPY_OR_MOVE_FAILED");
-
- if (dest.exists())
- return jslibErrorMsg("NS_ERROR_FILE_ALREADY_EXISTS");
-
- if (this.mFileInst.isDirectory())
- return jslibErrorMsg("NS_ERROR_FILE_IS_DIRECTORY");
-
- if (!dest.exists()) {
- copyName = dest.leafName;
- dir = dest.parent;
-
- if (!dir.exists())
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- if (!dir.isDirectory())
- return jslibErrorMsg("NS_ERROR_FILE_DESTINATION_NOT_DIR");
- }
-
- if (!dir) {
- dir = dest;
- if (dest.equals(this.mFileInst))
- return jslibErrorMsg("NS_ERROR_FILE_COPY_OR_MOVE_FAILED");
- }
- this.mFileInst.copyTo(dir, copyName);
- jslibDebug(JS_FILE_FILE+":copy successful!");
- } catch (e) {
- rv = jslibError(e);
- }
- return rv;
-}
-
-/********************* CLOSE ************************************
-* void close() *
-* *
-* void file close *
-* return type void(null) *
-* takes no arguments closes an open file stream and *
-* deletes member var instances of objects *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* fopen(); *
-* f.close(); *
-* *
-* outputs: void(null) *
-****************************************************************/
-
-File.prototype.close = function ()
-{
- /***************** Destroy Instances *********************/
- if (this.mFileChannel) delete this.mFileChannel;
- if (this.mInputStream) delete this.mInputStream;
- if (this.mTransport) delete this.mTransport;
- if (this.mMode) this.mMode=null;
- if (this.mOutStream) {
- this.mOutStream.close();
- delete this.mOutStream;
- }
- if (this.mLineBuffer) this.mLineBuffer=null;
- this.mPosition = 0;
- /***************** Destroy Instances *********************/
-
- return void(null);
-}
-
-/********************* CREATE *****************************/
-File.prototype.create = function ()
-{
-
- // We can probably implement this so that it can create a
- // file or dir if a long non-existent mPath is present
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (this.exists())
- return jslibErrorMsg("NS_ERROR_FILE_ALREADY_EXISTS");
-
- var rv = null;
- try {
- rv = this.mFileInst.create(JS_FILE_FILE_TYPE, JS_FILE_DEFAULT_PERMS);
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
-}
-
-/********************* REMOVE *******************************/
-File.prototype.remove = function ()
-{
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (!this.mPath)
- return jslibErrorMsg("NS_ERROR_FILE_INVALID_PATH");
-
- this.close();
- var rv;
- try {
- // this is a non recursive remove because we are only dealing w/ files.
- rv = this.mFileInst.remove(false);
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
-}
-
-/********************* POS **************************************
-* int getter POS() *
-* *
-* int file position *
-* return type int *
-* takes no arguments needs an open read mode filehandle *
-* returns current position, default is 0 set when *
-* close is called *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.open(); *
-* while(!f.EOF){ *
-* dump("pos: "+f.pos+"\n"); *
-* dump("line: "+f.readline()+"\n"); *
-* } *
-* *
-* outputs: int pos *
-****************************************************************/
-
-File.prototype.__defineGetter__('pos', function (){ return this.mPosition; })
-
-/********************* SIZE *************************************
-* int getter size() *
-* *
-* int file size *
-* return type int *
-* takes no arguments a getter only *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.size; *
-* *
-* outputs: int 16 *
-****************************************************************/
-
-File.prototype.__defineGetter__('size',
-function ()
-{
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (!this.mPath)
- return jslibErrorMsg("NS_ERROR_FILE_INVALID_PATH");
-
- if (!this.exists())
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv = null;
- this.resetCache();
- try {
- rv=this.mFileInst.fileSize;
- } catch(e) {
- rv = jslibError(e);
- }
-
- return rv;
-}) // END size Getter
-
-/********************* EXTENSION ********************************
-* string getter ext() *
-* *
-* string file extension *
-* return type string *
-* takes no arguments a getter only *
-* Ex: *
-* var p='/tmp/foo.dat'; *
-* var f=new File(p); *
-* f.ext; *
-* *
-* outputs: dat *
-****************************************************************/
-
-File.prototype.__defineGetter__('ext',
-function ()
-{
-
- if (!this.checkInst())
- return jslibErrorMsg("NS_ERROR_NOT_INITIALIZED");
-
- if (!this.mPath)
- return jslibErrorMsg("NS_ERROR_FILE_INVALID_PATH");
-
- if (!this.exists())
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv = null;
- try {
- var leafName = this.mFileInst.leafName;
- var dotIndex = leafName.lastIndexOf('.');
- rv=(dotIndex >= 0) ? leafName.substring(dotIndex+1) : "";
- } catch(e) {
- rv = jslibError(e);
- }
-
- return rv;
-}) // END ext Getter
-
-File.prototype.super_help = FileSystem.prototype.help;
-
-/********************* HELP *****************************/
-File.prototype.__defineGetter__('help',
-function ()
-{
- const help = this.super_help() +
- " open(aMode);\n" +
- " read();\n" +
- " readline();\n" +
- " EOF;\n" +
- " write(aContents, aPermissions);\n" +
- " copy(aDest);\n" +
- " close();\n" +
- " create();\n" +
- " remove();\n" +
- " size;\n" +
- " ext;\n" +
- " help;\n";
-
- return help;
-})
-
-jslibDebug('*** load: '+JS_FILE_FILE+' OK');
-
-} // END BLOCK JS_LIB_LOADED CHECK
-
-// If jslib base library is not loaded, dump this error.
-else
-{
- dump("JS_FILE library not loaded:\n" +
- " \tTo load use: chrome://jslib/content/jslib.js\n" +
- " \tThen: include(jslib_file);\n\n");
-}
diff --git a/extensions/firefox-extension/chrome/content/jslib/io/fileUtils.js b/extensions/firefox-extension/chrome/content/jslib/io/fileUtils.js
deleted file mode 100644
index 9283ff402..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/io/fileUtils.js
+++ /dev/null
@@ -1,598 +0,0 @@
-/*** -*- Mode: Javascript; tab-width: 2; -*-
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
- except in compliance with the License. You may obtain a copy of
- the License at http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS
- IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- implied. See the License for the specific language governing
- rights and limitations under the License.
-
- The Original Code is Collabnet code.
- The Initial Developer of the Original Code is Collabnet.
-
- Portions created by Collabnet are Copyright (C) 2000 Collabnet.
- All Rights Reserved.
-
- Contributor(s): Pete Collins,
- Doug Turner,
- Brendan Eich,
- Warren Harris,
- Eric Plaster,
- Martin Kutschker
- Philip Lindsay
-
-
- JS FileUtils IO API (The purpose of this file is to make it a little easier to do file IO from js)
-
- fileUtils.js
-
- Function List
-
- chromeToPath(aPath) // Converts a chrome://bob/content uri to a path.
- // NOTE: although this gives you the
- // path to a file in the chrome directory, you will
- // most likely not have permisions
- // to create or write to files there.
- chromeToURL(aPath) // Converts a chrome://bob/content file:// uri.
- urlToPath(aPath) // Converts a file:// url to a path
- exists(aPath); // check to see if a file exists
- append(aDirPath, aFileName); // append is for abstracting platform specific file paths
- remove(aPath); // remove a file
- copy(aSource, aDest); // copy a file from source to destination
- leaf(aPath); // leaf is the endmost file string
- // eg: foo.html in /myDir/foo.html
- permissions(aPath); // returns the files permissions
- dateModified(aPath); // returns the last modified date in locale string
- size(aPath); // returns the file size
- ext(aPath); // returns a file extension if there is one
- parent(aPath) // returns the dir part of a path
- dirPath(aPath) // *Depriciated* use parent
- spawn(aPath, aArgs) // spawns another program
- nsIFile(aPath) // returns an nsIFile obj
- help; // currently returns a list of available functions
-
- Deprecated
-
- chrome_to_path(aPath); // synonym for chromeToPath
- URL_to_path(aPath) // synonym for use urlToPath
- rm(aPath); // synonym for remove
- extension(aPath); // synonym for ext
-
- Instructions:
-
- First include this js file
-
- var file = new FileUtils();
-
- Examples:
-
- var path='/usr/X11R6/bin/Eterm';
- file.spawn(path, ['-e/usr/bin/vi']);
- *note* all args passed to spawn must be in the form of an array
-
- // to list help
- dump(file.help);
-
- Warning: these API's are not for religious types
-
-*******************************************/
-
- // Make sure jslib is loaded
- if (typeof(JS_LIB_LOADED)=='boolean')
- {
-
- /****************** Globals **********************/
-
- const JS_FILEUTILS_FILE = "fileUtils.js";
- const JS_FILEUTILS_LOADED = true;
-
- const JS_FILEUTILS_LOCAL_CID = "@mozilla.org/file/local;1";
- const JS_FILEUTILS_FILESPEC_PROGID = '@mozilla.org/filespec;1';
- const JS_FILEUTILS_NETWORK_STD_CID = '@mozilla.org/network/standard-url;1';
- const JS_FILEUTILS_SIMPLEURI_PROGID = "@mozilla.org/network/simple-uri;1";
- const JS_FILEUTILS_CHROME_REG_PROGID = '@mozilla.org/chrome/chrome-registry;1';
- const JS_FILEUTILS_DR_PROGID = "@mozilla.org/file/directory_service;1";
- const JS_FILEUTILS_PROCESS_CID = "@mozilla.org/process/util;1";
-
- const JS_FILEUTILS_I_LOCAL_FILE = "nsILocalFile";
- const JS_FILEUTILS_INIT_W_PATH = "initWithPath";
- const JS_FILEUTILS_I_PROPS = "nsIProperties";
-
- const JS_FILEUTILS_CHROME_DIR = "AChrom";
-
- const JS_FILEUTILS_OK = true;
- const JS_FILEUTILS_FilePath = new C.Constructor(JS_FILEUTILS_LOCAL_CID,
- JS_FILEUTILS_I_LOCAL_FILE,
- JS_FILEUTILS_INIT_W_PATH);
-
-
- /****************** FileUtils Object Class *********************/
- function FileUtils ()
- {
- include (jslib_dirutils);
- this.mDirUtils = new DirUtils();
- } // constructor
-
- FileUtils.prototype =
- {
- mFileInst : null,
- mDirUtils : null,
-
- /********************* CHROME_TO_PATH ***************************/
- // this is here for backward compatability but is deprecated --pete
- chrome_to_path : function (aPath) { return this.chromeToPath(aPath); },
-
- chromeToPath : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- return this.urlToPath(this.chromeToURL(aPath));
- },
-
- chromeToURL : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- var uri = jslibCreateInstance(JS_FILEUTILS_SIMPLEURI_PROGID, "nsIURI");
-
- var rv = null;
- if (/^chrome:/.test(aPath)) {
- try {
- var cr = jslibGetService(JS_FILEUTILS_CHROME_REG_PROGID);
- if (cr) {
- cr = jslibQI(cr, "nsIChromeRegistry");
- uri.spec = aPath;
- uri.spec = cr.convertChromeURL(uri);
- rv = uri.path;
-
- // deal w/ jar resource files
- if (/.jar!/.test(rv)) {
- rv = rv.replace(/resource:/, "");
- rv = "file://"+this.mDirUtils.getCurProcDir()+rv;
- }
- }
- } catch (e) {}
-
- if (/^\/|\\|:chrome/.test(rv)) {
- try {
- // prepend the system path to this process dir
- rv = "file:///"+(''+this.mDirUtils.getCurProcDir()+rv)
- .replace(/\\/g, "\/").replace(/^\s*\/?/, "").replace(/\ /g, "%20");
- } catch (e) {
- rv = jslibError(e);
- }
- }
- } else if (/^file:/.test(aPath)) {
- rv = this.urlToPath(aPath);
- }
-
- return rv;
- },
-
- /********************* URL_TO_PATH ***************************/
- URL_to_path : function (aPath) { return this.urlToPath(aPath); },
-
- urlToPath : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- // xpcshell doesn't have unescape func
- const hasUnescape = (typeof(unescape)=="function");
- var path = aPath;
- var rv;
-
- if (/^file:/.test(path)) {
- try {
- var uri = jslibCreateInstance(JS_FILEUTILS_NETWORK_STD_CID, "nsIURI");
- uri.spec = path;
- rv = uri.path;
-
- var file = jslibCreateInstance(JS_FILEUTILS_LOCAL_CID, "nsILocalFile");
-
- // unix and friends
- try {
- file.initWithPath(rv);
- rv = hasUnescape ? unescape(file.path) : file.path;
- return rv;
- } catch (e) {}
-
- // windows
- try {
- file.initWithPath(rv.replace(/^\//,"").replace(/\//g,"\\"));
- rv = hasUnescape ? unescape(file.path) : file.path;
- return rv;
- } catch (e) {}
-
- // FIXME: add checking for Mac
-
- } catch (e) {
- rv = jslibError(e);
- }
- }
-
- return rv;
- },
-
- /********************* EXISTS ***************************/
- exists : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- var rv;
- try {
- var file = new JS_FILEUTILS_FilePath(aPath);
- rv = file.exists();
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
- },
-
- /********************* RM *******************************/
- rm : function (aPath) { return this.remove(aPath); },
-
- remove : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- return jslibErrorMsg("NS_ERROR_FILE_TARGET_DOES_NOT_EXIST");
-
- var rv;
-
- try {
- var fileInst = new JS_FILEUTILS_FilePath(aPath);
- if (fileInst.isDirectory())
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- fileInst.remove(false);
- rv = jslibRes.NS_OK;
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
- },
-
- /********************* COPY *****************************/
- copy : function (aSource, aDest)
- {
- if (!aSource || !aDest)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aSource))
- return jslibErrorMsg("NS_ERROR_UNEXPECTED");
-
- var rv;
-
- try {
- var fileInst = new JS_FILEUTILS_FilePath(aSource);
- var dir = new JS_FILEUTILS_FilePath(aDest);
- var copyName = fileInst.leafName;
-
- if (fileInst.isDirectory())
- return jslibErrorMsg("NS_ERROR_FILE_COPY_OR_MOVE_FAILED");
-
- if (!this.exists(aDest) || !dir.isDirectory()) {
- copyName = dir.leafName;
- dir = new JS_FILEUTILS_FilePath(dir.path.replace(copyName,''));
-
- if (!this.exists(dir.path))
- return jslibErrorMsg("NS_ERROR_FILE_ALREADY_EXISTS");
-
- if (!dir.isDirectory())
- return jslibErrorMsg("NS_ERROR_FILE_INVALID_PATH");
- }
-
- if (this.exists(this.append(dir.path, copyName)))
- return jslibError("NS_ERROR_FILE_ALREADY_EXISTS");
-
- rv = fileInst.copyTo(dir, copyName);
- rv = jslibRes.NS_OK;
- } catch (e) {
- return jslibError(e);
- }
-
- return rv;
- },
-
- /********************* LEAF *****************************/
- leaf : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- jslibErrorWarn("NS_ERROR_FILE_NOT_FOUND ["+aPath+"]")
-
- var rv;
-
- try {
- var fileInst = new JS_FILEUTILS_FilePath(aPath);
- rv=fileInst.leafName;
- }
-
- catch (e) {
- return jslibError(e);
- }
-
- return rv;
- },
-
- /********************* APPEND ***************************/
- append : function (aDirPath, aFileName)
- {
- if (!aDirPath || !aFileName)
- jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aDirPath))
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv;
-
- try {
- var fileInst = new JS_FILEUTILS_FilePath(aDirPath);
- if (fileInst.exists() && !fileInst.isDirectory())
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- fileInst.append(aFileName);
- rv=fileInst.path;
- delete fileInst;
- } catch (e) {
- return jslibError(e);
- }
-
- return rv;
- },
-
- /********************* VALIDATE PERMISSIONS *************/
- validatePermissions : function(aNum)
- {
- if ( parseInt(aNum.toString(10).length) < 3 )
- return false;
-
- return JS_FILEUTILS_OK;
- },
-
- /********************* PERMISSIONS **********************/
- permissions : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv;
-
- try {
- rv=(new JS_FILEUTILS_FilePath(aPath)).permissions.toString(8);
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
- },
-
- /********************* MODIFIED *************************/
- dateModified : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv;
-
- try {
- var date = new Date((new JS_FILEUTILS_FilePath(aPath)).lastModifiedTime).toLocaleString();
- rv=date;
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
- },
-
- /********************* SIZE *****************************/
- size : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv;
-
- try {
- rv = (new JS_FILEUTILS_FilePath(aPath)).fileSize;
- } catch (e) {
- jslibError(e);
- rv=0;
- }
-
- return rv;
- },
-
- /********************* EXTENSION ************************/
- extension : function (aPath) { return this.ext(aPath); },
-
- ext : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var rv;
-
- try {
- var leafName = (new JS_FILEUTILS_FilePath(aPath)).leafName;
- var dotIndex = leafName.lastIndexOf('.');
- rv=(dotIndex >= 0) ? leafName.substring(dotIndex+1) : "";
- } catch (e) {
- return jslibError(e);
- }
-
- return rv;
- },
-
- /********************* DIRPATH **************************/
- dirPath : function (aPath) { return this.parent(aPath); },
-
- parent : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- var rv;
-
- try {
- var fileInst = new JS_FILEUTILS_FilePath(aPath);
-
- if (!fileInst.exists())
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- if (fileInst.isFile())
- rv = fileInst.parent.path;
-
- else if (fileInst.isDirectory())
- rv = fileInst.path;
-
- else
- rv = null;
- }
-
- catch (e) {
- return jslibError(e);
- }
-
- return rv;
- },
-
- /********************* SPAWN ****************************/
- spawn : function (aPath, aArgs) { this.run(aPath, aArgs); },
- run : function (aPath, aArgs)
- /*
- * Trys to execute the requested file as a separate *non-blocking* process.
- *
- * Passes the supplied *array* of arguments on the command line if
- * the OS supports it.
- *
- */
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (!this.exists(aPath))
- return jslibErrorMsg("NS_ERROR_FILE_NOT_FOUND");
-
- var len = 0;
- if (aArgs)
- len = aArgs.length;
- else
- aArgs = null;
-
- var rv;
- try {
- var fileInst = new JS_FILEUTILS_FilePath(aPath);
-
- if (!fileInst.isExecutable())
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- if (fileInst.isDirectory())
- return jslibErrorMsg("NS_ERROR_FILE_IS_DIRECTORY");
- // Create and execute the process...
- /*
- * NOTE: The first argument of the process instance's 'run' method
- * below specifies the blocking state (false = non-blocking).
- * The last argument, in theory, contains the process ID (PID)
- * on return if a variable is supplied--not sure how to implement
- * this with JavaScript though.
- */
- try {
- var theProcess = jslibCreateInstance(JS_FILEUTILS_PROCESS_CID, "nsIProcess");
-
- theProcess.init(fileInst);
-
- rv = theProcess.run(false, aArgs, len);
- jslib_debug("rv="+rv);
- } catch (e) {
- rv = jslibError(e);
- }
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
- },
-
- /********************* nsIFILE **************************/
- nsIFile : function (aPath)
- {
- if (!aPath)
- return jslibErrorMsg("NS_ERROR_INVALID_ARG");
-
- var rv;
- try {
- rv = new JS_FILEUTILS_FilePath(aPath);
- } catch (e) {
- rv = jslibError(e);
- }
-
- return rv;
- },
-
- /********************* HELP *****************************/
- get help()
- {
- var help =
-
- "\n\nFunction List:\n" +
- "\n" +
- " exists(aPath);\n" +
- " chromeToPath(aPath);\n" +
- " chromeToURL(aPath);\n" +
- " urlToPath(aPath);\n" +
- " append(aDirPath, aFileName);\n" +
- " remove(aPath);\n" +
- " copy(aSource, aDest);\n" +
- " leaf(aPath);\n" +
- " permissions(aPath);\n" +
- " dateModified(aPath);\n" +
- " size(aPath);\n" +
- " ext(aPath);\n" +
- " parent(aPath);\n" +
- " run(aPath, aArgs);\n" +
- " nsIFile(aPath);\n" +
- " help;\n";
-
- return help;
- }
-
-};
-
-jslibDebug('*** load: '+JS_FILEUTILS_FILE+' OK');
-
-} // END BLOCK JS_LIB_LOADED CHECK
-
-// If jslib base library is not loaded, dump this error.
-else
-{
- dump("JS_FILE library not loaded:\n" +
- " \tTo load use: chrome://jslib/content/jslib.js\n" +
- " \tThen: include(jslib_fileutils);\n\n");
-}
-
diff --git a/extensions/firefox-extension/chrome/content/jslib/io/filesystem.js b/extensions/firefox-extension/chrome/content/jslib/io/filesystem.js
deleted file mode 100644
index 8e8db4b4f..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/io/filesystem.js
+++ /dev/null
@@ -1,648 +0,0 @@
-/*** -*- Mode: Javascript; tab-width: 2;
-
-The contents of this file are subject to the Mozilla Public
-License Version 1.1 (the "License"); you may not use this file
-except in compliance with the License. You may obtain a copy of
-the License at http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS
-IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is Collabnet code.
-The Initial Developer of the Original Code is Collabnet.
-
-Portions created by Collabnet are
-Copyright (C) 2000 Collabnet. All
-Rights Reserved.
-
-Contributor(s): Pete Collins,
- Doug Turner,
- Brendan Eich,
- Warren Harris,
- Eric Plaster,
- Martin Kutschker
-***/
-
-if (typeof(JS_LIB_LOADED)=='boolean') {
-
-/***************************
-* Globals *
-***************************/
-
-const JS_FILESYSTEM_LOADED = true;
-const JS_FILESYSTEM_FILE = "filesystem.js";
-const JS_FS_LOCAL_CID = "@mozilla.org/file/local;1";
-const JS_FS_DIR_CID = "@mozilla.org/file/directory_service;1";
-const JS_FS_NETWORK_CID = '@mozilla.org/network/standard-url;1';
-const JS_FS_URL_COMP = "nsIURL";
-const JS_FS_I_LOCAL_FILE = "nsILocalFile";
-const JS_FS_DIR_I_PROPS = "nsIProperties";
-const JS_FS_INIT_W_PATH = "initWithPath";
-const JS_FS_CHROME_DIR = "AChrom";
-const JS_FS_USR_DEFAULT = "DefProfRt";
-const JS_FS_PREF_DIR = "PrefD";
-const JS_FS_OK = true;
-const JS_FS_File_Path = new Components.Constructor
- (JS_FS_LOCAL_CID, JS_FS_I_LOCAL_FILE, JS_FS_INIT_W_PATH);
-const JS_FS_Dir = new Components.Constructor
- (JS_FS_DIR_CID, JS_FS_DIR_I_PROPS);
-const JS_FS_URL = new Components.Constructor
- (JS_FS_NETWORK_CID, JS_FS_URL_COMP);
-
-/***************************
-* Globals *
-***************************/
-
-/***************************
-* FileSystem Object Class *
-***************************/
-function FileSystem(aPath)
-{
- return (aPath?this.initPath(arguments):void(null));
-} // constructor
-
-/***************************
-* FileSystem Prototype *
-***************************/
-FileSystem.prototype = {
-
- mPath : null,
- mFileInst : null,
-
-/***************************
-* INIT PATH *
-***************************/
-initPath : function(args)
-{
- // check if the argument is a file:// url
- var fileURL;
- if(typeof(args)=='object') {
- for (var i=0; i<args.length; i++) {
- if(args[i].search(/^file:/) == 0) {
- try {
- fileURL= new JS_FS_URL();
- fileURL.spec=args[i];
- args[i] = fileURL.path;
- } catch (e) {
- jslibError(e, "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED", JS_FILESYSTEM_FILE+":initPath");
- rv=null;
- }
- }
- }
- } else {
- if(args.search(/^file:/) == 0) {
- try {
- fileURL= new JS_FS_URL();
- fileURL.spec=args;
- args = fileURL.path;
- } catch (e) {
- jslibError(e, "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED", JS_FILESYSTEM_FILE+":initPath");
- rv=null;
- }
- }
- }
-
- /**
- * If you are wondering what all this extra cruft is, well
- * this is here so you can reinitialize 'this' with a new path
- */
- var rv = null;
- try {
- if (typeof(args)=='object') {
- this.mFileInst = new JS_FS_File_Path(args[0]?args[0]:this.mPath);
- if (args.length>1)
- for (i=1; i<args.length; i++)
- this.mFileInst.append(args[i]);
- (args[0] || this.mPath)?rv=this.mPath = this.mFileInst.path:rv=null;
- } else {
- this.mFileInst = new JS_FS_File_Path(args?args:this.mPath);
- this.mFileInst.path?rv=this.mPath = this.mFileInst.path:rv=null;
- }
- } catch(e) {
- jslibError(e?e:null,
- "initPath (nsILocalFile problem)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":initPath");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* CHECK INST *
-***************************/
-checkInst : function ()
-{
- if (!this.mFileInst) {
- jslibError(null,
- "(no path defined)",
- "NS_ERROR_NOT_INITIALIZED",
- JS_FILESYSTEM_FILE+":checkInstance");
- return false;
- }
- return true;
-},
-
-/***************************
-* PATH *
-***************************/
-get path()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- return this.mFileInst.path;
-},
-
-/***************************
-* EXISTS *
-***************************/
-exists : function ()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- var rv = false;
- try {
- rv = this.mFileInst.exists();
- } catch(e) {
- jslibError(e,
- "exists (nsILocalFile problem)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":exists");
- rv = false;
- }
- return rv;
-},
-
-/***************************
-* GET LEAF *
-***************************/
-get leaf()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- var rv = null;
- try {
- rv = this.mFileInst.leafName;
- } catch(e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_FAILURE",
- JS_FILESYSTEM_FILE+":leaf");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* SET LEAF *
-***************************/
-set leaf(aLeaf)
-{
- if (!aLeaf) {
- jslibError(null,
- "(missing argument)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":leaf");
- return null;
- }
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- var rv = null;
- try {
- rv = (this.mFileInst.leafName=aLeaf);
- } catch(e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_FAILURE",
- JS_FILESYSTEM_FILE+":leaf");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* PARENT *
-***************************/
-get parent()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- var rv = null;
- try {
- if (this.mFileInst.parent.isDirectory()) {
- if (typeof(JS_DIR_LOADED)!='boolean')
- include(JS_LIB_PATH+'io/dir.js');
- rv = new Dir(this.mFileInst.parent.path);
- }
- } catch (e) {
- jslibError(e,
- "(problem getting file parent)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":parent");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* GET PERMISSIONS *
-***************************/
-get permissions()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- if (!this.exists()) {
- jslibError(null,
- "(file doesn't exist)",
- "NS_ERROR_FAILURE",
- JS_FILESYSTEM_FILE+":permisions");
- return null;
- }
- var rv = null;
- try {
- rv = this.mFileInst.permissions.toString(8);
- } catch(e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":permissions");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* SET PERMISSIONS *
-***************************/
-set permissions(aPermission)
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
-
- if (!aPermission) {
- jslibError(null,
- "(no new permission defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":permissions");
- return null;
- }
- if (!this.exists()) {
- jslibError(null,
- "(file doesn't exist)",
- "NS_ERROR_FAILURE",
- JS_FILESYSTEM_FILE+":permisions");
- return null;
- }
- if (!this.validatePermissions(aPermission)) {
- jslibError(null,
- "(invalid permission argument)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":permissions");
- return null;
- }
- var rv = null;
- try {
- rv = this.mFileInst.permissions=aPermission;
- } catch(e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":permissions");
- rv = null;
- }
- return rv;
-
-},
-
-/***************************
-* VALIDATE PERMISSIONS *
-***************************/
-validatePermissions : function (aNum)
-{
- if (typeof(aNum)!='number')
- return false;
- if (parseInt(aNum.toString(10).length) < 3 )
- return false;
- return true;
-},
-
-/***************************
-* MODIFIED *
-***************************/
-get dateModified()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- if (!this.exists()) {
- jslibError(null,
- "(file doesn't exist)",
- "NS_ERROR_FAILURE",
- JS_FILESYSTEM_FILE+":dateModified");
- return null;
- }
- var rv = null;
- try {
- rv = (new Date(this.mFileInst.lastModifiedTime));
- } catch(e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":dateModified");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* RESET CACHE *
-***************************/
-resetCache : function()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- var rv = false;
- if (this.mPath) {
- delete this.mFileInst;
- try {
- this.mFileInst=new JS_FS_File_Path(this.mPath);
- rv = true;
- } catch(e) {
- jslibError(e,
- "(unable to get nsILocalFile)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":resetCache");
- rv = false;
- }
- }
- return rv;
-},
-
-/***************************
-* nsIFILE *
-***************************/
-get nsIFile()
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- var rv = null;
- try {
- rv = this.mFileInst.clone();
- } catch (e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":nsIFile");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* NOTE: after a move *
-* successful, 'this' will *
-* be reinitialized *
-* to the moved file! *
-***************************/
-move : function (aDest)
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- if (!aDest) {
- jslibError(null,
- "(no destination path defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":move");
- return false;
- }
- if (!this.mPath) {
- jslibError(null,
- "(no path defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":move");
- return false;
- }
- var rv = null;
- var newName=null;
- try {
- var f = new JS_FS_File_Path(aDest);
- if (f.exists() && !f.isDirectory()) {
- jslibError(null,
- "(destination file exists remove it)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":move");
- return false;
- }
- if (f.equals(this.mFileInst)) {
- jslibError(null,
- "(destination file is this file)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":move");
- return false;
- }
- if (!f.exists() && f.parent.exists())
- newName=f.leafName;
- if (f.equals(this.mFileInst.parent) && !newName) {
- jslibError(null,
- "(destination file is this file)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":move");
- return false;
- }
- var dir=f.parent;
- if (dir.exists() && dir.isDirectory()) {
- jslibDebug(newName);
- this.mFileInst.moveTo(dir, newName);
- jslibDebug(JS_FILESYSTEM_FILE+':move successful!\n');
- this.mPath=f.path;
- this.resetCache();
- delete dir;
- rv = true;
- } else {
- jslibError(null,
- "(destination "+dir.parent.path+" doesn't exists)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":move");
- return false;
- }
- } catch (e) {
- jslibError(e,
- "(problem getting file instance)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":move");
- rv = false;
- }
- return rv;
-},
-
-/***************************
-* APPEND *
-***************************/
-append : function(aLeaf)
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- if (!aLeaf) {
- jslibError(null,
- "(no argument defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":append");
- return null;
- }
- if (!this.mPath) {
- jslibError(null,
- "(no path defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":append");
- return null;
- }
- var rv = null;
- try {
- this.mFileInst.append(aLeaf);
- rv = this.mPath=this.path;
- } catch(e) {
- jslibError(null,
- "(unexpected error)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":append");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* APPEND RELATIVE *
-***************************/
-appendRelativePath : function(aRelPath)
-{
- if (!this.checkInst())
- throw jslibRes.NS_ERROR_NOT_INITIALIZED;
- if (!aRelPath) {
- jslibError(null,
- "(no argument defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":appendRelativePath");
- return null;
- }
- if (!this.mPath) {
- jslibError(null,
- "(no path defined)",
- "NS_ERROR_INVALID_ARG",
- JS_FILESYSTEM_FILE+":appendRelativePath");
- return null;
- }
- var rv = null;
- try {
- this.mFileInst.appendRelativePath(aRelPath);
- rv = this.mPath=this.path;
- } catch(e) {
- jslibError(null,
- "(unexpected error)",
- "NS_ERROR_UNEXPECTED",
- JS_FILESYSTEM_FILE+":appendRelativePath");
- rv = null;
- }
- return rv;
-},
-
-/***************************
-* GET URL *
-***************************/
-get URL()
-{
- return (this.path?'file:///'+this.path.replace(/\\/g, "\/").replace(/^\s*\/?/, "").replace(/\ /g, "%20"):'');
-},
-
-/***************************
-* ISDIR *
-***************************/
-isDir : function()
-{
- var rv = false;
- try {
- rv = this.mFileInst.isDirectory();
- } catch (e) { rv = false; }
-
- return rv;
-},
-
-/***************************
-* ISFILE *
-***************************/
-isFile : function()
-{
- var rv = false;
- try {
- rv = this.mFileInst.isFile();
- } catch (e) { rv = false; }
-
- return rv;
-},
-
-/***************************
-* ISEXEC *
-***************************/
-isExec : function()
-{
- var rv = false;
- try {
- rv = this.mFileInst.isExecutable();
- } catch (e) { rv = false; }
-
- return rv;
-},
-
-/***************************
-* ISSYMLINK *
-***************************/
-isSymlink : function()
-{
- var rv = false;
- try {
- rv = this.mFileInst.isSymlink();
- } catch (e) { rv = false; }
-
- return rv;
-},
-
-/***************************
-* HELP *
-***************************/
-help : function()
-{
- const help =
- "\n\nFunction and Attribute List:\n" +
- "\n" +
- " initPath(aPath);\n" +
- " path;\n" +
- " exists();\n" +
- " leaf;\n" +
- " parent;\n" +
- " permissions;\n" +
- " dateModified;\n" +
- " nsIFile;\n" +
- " move(aDest);\n" +
- " append(aLeaf);\n" +
- " appendRelativePath(aRelPath);\n" +
- " URL;\n" +
- " isDir();\n" +
- " isFile();\n" +
- " isExec();\n" +
- " isSymlink();\n";
- return help;
-}
-
-}; // END FileSystem Class
-
-jslibDebug('*** load: '+JS_FILESYSTEM_FILE+' OK');
-
-} // END BLOCK JS_LIB_LOADED CHECK
-
-else {
- dump("JS_FILE library not loaded:\n" +
- " \tTo load use: chrome://jslib/content/jslib.js\n" +
- " \tThen: include(jslib_filesystem);\n\n");
-}
diff --git a/extensions/firefox-extension/chrome/content/jslib/jslib.js b/extensions/firefox-extension/chrome/content/jslib/jslib.js
deleted file mode 100644
index 29d20b458..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/jslib.js
+++ /dev/null
@@ -1,264 +0,0 @@
-/*** -*- Mode: Javascript; tab-width: 2;
-
-The contents of this file are subject to the Mozilla Public
-License Version 1.1 (the "License"); you may not use this file
-except in compliance with the License. You may obtain a copy of
-the License at http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS
-IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-implied. See the License for the specific language governing
-rights and limitations under the License.
-
-The Original Code is jslib team code.
-The Initial Developer of the Original Code is jslib team.
-
-Portions created by jslib team are
-Copyright (C) 2000 jslib team. All
-Rights Reserved.
-
-Original Author: Pete Collins <pete@mozdevgroup.com>
-Contributor(s): Martin Kutschker <Martin.T.Kutschker@blackbox.net>
-
-***/
-
-/**
- * insure jslib base is not already loaded
- */
-if (typeof(JS_LIB_LOADED) != "boolean")
-{
- try {
-
- const JS_LIB_LOADED = true;
-
- const JS_LIBRARY = "jslib";
- const JS_LIB_FILE = "jslib.js"
- const JS_LIB_PATH = "chrome://beagle/content/jslib/";
- const JS_LIB_VERSION = "0.1.184-modified";
- const JS_LIB_AUTHORS = "\tPete Collins <pete@mozdevgroup.com>\n"
- + "\tNeil Deakin <neil@mozdevgroup.com>\n"
- + "\tEric Plaster <plaster@urbanrage.com>\n"
- + "\tMartin.T.Kutschker <Martin.T.Kutschker@blackbox.net>\n";
- const JS_LIB_BUILD = "mozilla 1.3+";
- const JS_LIB_ABOUT = "\tThis is an effort to provide a fully "
- + "functional js library\n"
- + "\tfor mozilla package authors to use "
- + "in their applications\n";
- const JS_LIB_HOME = "http://jslib.mozdev.org/";
-
- const ON = true;
- const OFF = false;
- const C = Components;
- const jslibRes = C.results;
- const jslibI = C.interfaces;
-
- const JS_LIB_OK = jslibRes.NS_OK;
-
- // DEPRICATED
- const jslib_results = jslibRes;
-
- if (typeof(JS_LIB_DEBUG) != "boolean")
- var JS_LIB_DEBUG = ON;
-
- var JS_LIB_DEBUG_ALERT = OFF;
- var JS_LIB_ERROR = ON;
- var JS_LIB_ERROR_ALERT = OFF;
-
- const JS_LIB_HELP = "\n\nWelcome to jslib version "+JS_LIB_VERSION+"\n\n"
- + "Global Constants:\n\n"
- + "JS_LIBRARY \n\t"+JS_LIBRARY +"\n"
- + "JS_LIB_FILE \n\t"+JS_LIB_FILE +"\n"
- + "JS_LIB_PATH \n\t"+JS_LIB_PATH +"\n"
- + "JS_LIB_VERSION \n\t"+JS_LIB_VERSION +"\n"
- + "JS_LIB_AUTHORS \n" +JS_LIB_AUTHORS
- + "JS_LIB_BUILD \n\t"+JS_LIB_BUILD +"\n"
- + "JS_LIB_ABOUT \n" +JS_LIB_ABOUT
- + "JS_LIB_HOME \n\t"+JS_LIB_HOME +"\n\n"
- + "Global Variables:\n\n"
- + " JS_LIB_DEBUG\n JS_LIB_ERROR\n\n";
-
-
- function jslibGetService (aURL, aInterface)
- {
- var rv;
- try {
- // determine how 'aInterface' is passed and handle accordingly
- switch (typeof(aInterface))
- {
- case "object":
- rv = C.classes[aURL].getService(aInterface);
- break;
-
- case "string":
- rv = C.classes[aURL].getService(C.interfaces[aInterface]);
- break;
-
- default:
- rv = C.classes[aURL].getService();
- break;
- }
- } catch (e) {
- rv = -1;
- }
- return rv;
- }
-
- function jslibCreateInstance (aURL, aInterface)
- {
- var rv;
- try {
- rv = C.classes[aURL].createInstance(C.interfaces[aInterface]);
- } catch (e) {
- rv = -1;
- }
- return rv;
- }
-
- function jslibGetInterface (aInterface)
- {
- var rv;
- try {
- rv = C.interfaces[aInterface];
- } catch (e) {
- rv = -1;
- }
- return rv;
- }
-
- function jslibQI (aObj, aInterface)
- {
- try {
- return aObj.QueryInterface(C.interfaces[aInterface]);
- } catch (e) {
- throw ("Unable to QI " + aObj + " to " + aInterface);
- }
- }
-
- /****************************************************************
- * void include(aScriptPath) *
- * aScriptPath is an argument of string lib chrome path *
- * returns NS_OK on success, 1 if file is already loaded and *
- * - errorno or throws exception on failure *
- * eg: *
- * var path='chrome://jslib/content/io/file.js'; *
- * include(path); *
- * Or: *
- * include(jslib_file); *
- * *
- * outputs: void(null) *
- ****************************************************************/
-
- function include (aScriptPath)
- {
- if (!aScriptPath) {
- dump("include: Missing file path argument\n");
- throw - jslibRes.NS_ERROR_XPC_NOT_ENOUGH_ARGS;
- }
-
- if (aScriptPath == JS_LIB_PATH+JS_LIB_FILE) {
- dump("include: "+aScriptPath+" is already loaded!\n");
- throw - jslibRes.NS_ERROR_INVALID_ARG;
- }
-
- var start = aScriptPath.lastIndexOf('/') + 1;
- var end = aScriptPath.lastIndexOf('.');
- var slice = aScriptPath.length - end;
- var loadID = aScriptPath.substring(start, (aScriptPath.length - slice));
-
- if (typeof(this['JS_'+loadID.toUpperCase()+'_LOADED']) == "boolean")
- return jslibRes.NS_OK;
-
- var rv;
- try {
- if (jslibNeedsPrivs())
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- jslibGetService("@mozilla.org/moz/jssubscript-loader;1",
- "mozIJSSubScriptLoader").loadSubScript(aScriptPath);
- rv = jslibRes.NS_OK;
- dump("include: "+aScriptPath+"\n");
- } catch (e) {
- const msg = aScriptPath+" is not a valid path or is already loaded\n";
- dump(e+"\n");
- dump("include: "+msg+"\n");
- rv = - jslibRes.NS_ERROR_INVALID_ARG;
- }
- return rv;
- }
-
- function jslibNeedsPrivs ()
- {
- var rv;
- if (typeof(this.location) == "object") {
- var proto = this.location.protocol;
- rv = (proto == "file:")
- }
- return rv;
- }
-
- // include debug methods
- const jslib_debug = JS_LIB_PATH+'debug/debug.js';
- include(jslib_debug);
-
- function jslibUninstall (aPackage, aCallback)
- {
- if (!aPackage)
- throw - jslibRes.NS_ERROR_INVALID_ARG;
-
- include (jslib_window);
- var win = new CommonWindow(null, 400, 400);
- win.position = JS_MIDDLE_CENTER;
- win.openUninstallWindow(aPackage, aCallback);
- }
-
- /*********** Launch JSLIB Splash ***************/
- function jslibLaunchSplash ()
- {
- include (jslib_window);
- var win = new CommonWindow("chrome://jslib/content/splash.xul", 400, 220);
- win.position = JS_MIDDLE_CENTER;
- win.openSplash();
- }
-
- // DEPRICATED
- function jslib_turnDumpOn () { jslibTurnDumpOn(); }
-
- function jslibTurnDumpOn ()
- {
- include (jslib_prefs);
- // turn on dump
- var pref = new Prefs();
- const prefStr = "browser.dom.window.dump.enabled"
-
- // turn dump on if not enabled
- if (!pref.getBool(prefStr)) {
- pref.setBool(prefStr, true);
- pref.save();
- }
- return;
- }
-
- // DEPRICATED
- function jslib_turnDumpOff () { jslibTurnDumpOff(); }
-
- function jslibTurnDumpOff ()
- {
- include (jslib_prefs);
- // turn off dump
- var pref = new Prefs();
- const prefStr = "browser.dom.window.dump.enabled"
-
- // turn dump off if enabled
- if (pref.getBool(prefStr)) {
- pref.setBool(prefStr, false);
- pref.save();
- }
- return;
- }
-
- const jslib_modules = JS_LIB_PATH+'modules.js';
- include (jslib_modules);
-
- } catch (e) {}
-
-} // end jslib load test
-
diff --git a/extensions/firefox-extension/chrome/content/jslib/modules.js b/extensions/firefox-extension/chrome/content/jslib/modules.js
deleted file mode 100644
index f4f566777..000000000
--- a/extensions/firefox-extension/chrome/content/jslib/modules.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * jslib module identifiers
- */
-
-const JS_MODULES_LOADED = true;
-const JS_MODULES_FILE = "modules.js";
-
-// insure jslib base is loaded
-if (typeof(JS_LIB_LOADED)=='boolean')
-{
-
-// help identifier
-const jslib_help = "need to write some global help docs here\n";
-
-// Library Identifiers
-
-// io library modules
-const jslib_io = JS_LIB_PATH+'io/io.js';
-const jslib_filesystem = JS_LIB_PATH+'io/filesystem.js'
-const jslib_file = JS_LIB_PATH+'io/file.js';
-const jslib_fileutils = JS_LIB_PATH+'io/fileUtils.js';
-const jslib_dir = JS_LIB_PATH+'io/dir.js';
-const jslib_dirutils = JS_LIB_PATH+'io/dirUtils.js';
-
-// data structures
-const jslib_dictionary = JS_LIB_PATH+'ds/dictionary.js';
-const jslib_chaindictionary = JS_LIB_PATH+'ds/chainDictionary.js';
-
-// RDF library modules
-const jslib_rdf = JS_LIB_PATH+'rdf/rdf.js';
-const jslib_rdffile = JS_LIB_PATH+'rdf/rdfFile.js';
-const jslib_rdfcontainer = JS_LIB_PATH+'rdf/rdfContainer.js';
-const jslib_rdfresource = JS_LIB_PATH+'rdf/rdfResource.js';
-const jslib_rdfmemory = JS_LIB_PATH+'rdf/inMemoryRDF.js';
-
-// network library modules
-const jslib_remotefile = JS_LIB_PATH+'network/remoteFile.js';
-const jslib_socket = JS_LIB_PATH+'network/socket.js';
-
-// network - http
-const jslib_http = JS_LIB_PATH+'network/http.js';
-const jslib_getrequest = JS_LIB_PATH+'network/getRequest.js';
-const jslib_postrequest = JS_LIB_PATH+'network/postRequest.js';
-const jslib_multipartrequest = JS_LIB_PATH+'network/multipartRequest.js';
-const jslib_filepart = JS_LIB_PATH+'network/parts/filePart.js';
-const jslib_textpart = JS_LIB_PATH+'network/parts/textPart.js';
-const jslib_urlparameterspart = JS_LIB_PATH+'network/parts/urlParametersPart.js';
-const jslib_bodyparameterspart = JS_LIB_PATH+'network/parts/bodyParametersPart.js';
-
-// xul dom library modules
-const jslib_dialog = JS_LIB_PATH+'xul/commonDialog.js';
-const jslib_filepicker = JS_LIB_PATH+'xul/commonFilePicker.js';
-const jslib_window = JS_LIB_PATH+'xul/commonWindow.js';
-const jslib_routines = JS_LIB_PATH+'xul/appRoutines.js';
-
-// sound library modules
-const jslib_sound = JS_LIB_PATH+'sound/sound.js';
-
-// utils library modules
-const jslib_date = JS_LIB_PATH+'utils/date.js';
-const jslib_prefs = JS_LIB_PATH+'utils/prefs.js';
-const jslib_validate = JS_LIB_PATH+'utils/validate.js';
-const jslib_sax = JS_LIB_PATH+'utils/sax.js';
-
-// zip
-const jslib_zip = JS_LIB_PATH+'zip/zip.js';
-
-// install/uninstall
-const jslib_install = JS_LIB_PATH+'install/install.js';
-const jslib_uninstall = JS_LIB_PATH+'install/uninstall.js';
-const jslib_autoupdate = JS_LIB_PATH+'install/autoupdate.js';
-
-}
-
diff --git a/extensions/firefox-extension/chrome/content/json.js b/extensions/firefox-extension/chrome/content/json.js
deleted file mode 100644
index 0a6b45eb0..000000000
--- a/extensions/firefox-extension/chrome/content/json.js
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- json.js
- 2007-04-30
-
- Public Domain
-
- This file adds these methods to JavaScript:
-
- array.toJSONString()
- boolean.toJSONString()
- date.toJSONString()
- number.toJSONString()
- object.toJSONString()
- string.toJSONString()
- These methods produce a JSON text from a JavaScript value.
- It must not contain any cyclical references. Illegal values
- will be excluded.
-
- The default conversion for dates is to an ISO string. You can
- add a toJSONString method to any date object to get a different
- representation.
-
- string.parseJSON(filter)
- This method parses a JSON text to produce an object or
- array. It can throw a SyntaxError exception.
-
- The optional filter parameter is a function which can filter and
- transform the results. It receives each of the keys and values, and
- its return value is used instead of the original value. If it
- returns what it received, then structure is not modified. If it
- returns undefined then the member is deleted.
-
- Example:
-
- // Parse the text. If a key contains the string 'date' then
- // convert the value to a date.
-
- myData = text.parseJSON(function (key, value) {
- return key.indexOf('date') >= 0 ? new Date(value) : value;
- });
-
- It is expected that these methods will formally become part of the
- JavaScript Programming Language in the Fourth Edition of the
- ECMAScript standard in 2008.
-
- This file will break programs with improper for..in loops. See
- http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
-
- This is a reference implementation. You are free to copy, modify, or
- redistribute.
-
- Use your own copy. It is extremely unwise to load untrusted third party
- code into your pages.
-*/
-
-/*jslint evil: true */
-
-/**
-rewirite by taofei 2007-8-22
-to avoid for-in loop problem.
-toJSONString(anything)
-parseJSON(anything)
-*/
-
-
-
-//help function xxxToJSONString
-
-
- function arrayToJSON (arrayVal) {
- var a = ['['], // The array holding the text fragments.
- b, // A boolean indicating that a comma is required.
- i, // Loop counter.
- l = arrayVal.length,
- v; // The value to be stringified.
-
- function p(s) {
-
-// p accumulates text fragments in an array. It inserts a comma before all
-// except the first fragment.
-
- if (b) {
- a.push(',');
- }
- a.push(s);
- b = true;
- }
-
-// For each value in arrayVal array...
-
- for (i = 0; i < l; i += 1) {
- v = arrayVal[i];
- p(toJSONString(v));
- }
-
-// Join all of the fragments together and return.
-
- a.push(']');
- return a.join('');
- };
-
-
-
-
- function objectToJSON(objectVal) {
- var a = ['{'], // The array holding the text fragments.
- b, // A boolean indicating that a comma is required.
- k, // The current key.
- v; // The current value.
-
- function p(s) {
-
-// p accumulates text fragment pairs in an array. It inserts a comma before all
-// except the first fragment pair.
-
- if (b) {
- a.push(',');
- }
- a.push(toJSONString(k), ':', s);
- b = true;
- }
-
-// Iterate through all of the keys in the object, ignoring the proto chain.
-
- for (k in objectVal) {
- if (objectVal.hasOwnProperty(k)) {
- v = objectVal[k];
- p(toJSONString(v));
- }
- }
-
-// Join all of the fragments together and return.
-
- a.push('}');
- return a.join('');
- };
-
-function strToJSON(str)
-{
- var m = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- };
-
- // If the string contains no control characters, no quote characters, and no
- // backslash characters, then we can simply slap some quotes around it.
- // Otherwise we must also replace the offending characters with safe
- // sequences.
-
- if (/["\\\x00-\x1f]/.test(str)) {
- return '"' + str.replace(/([\x00-\x1f\\"])/g, function (a, b) {
- var c = m[b];
- if (c) {
- return c;
- }
- c = b.charCodeAt();
- return '\\u00' +
- Math.floor(c / 16).toString(16) +
- (c % 16).toString(16);
- }) + '"';
- }
- return '"' + str + '"';
-}
-
-function boolToJSON(bool)
-{
- return String(bool);
-}
-
-function dateToJSON(dateVal)
-{
-
-// Ultimately, this method will be equivalent to the date.toISOString method.
-
- function f(n) {
-
-// Format integers to have at least two digits.
-
- return n < 10 ? '0' + n : n;
- }
-
- return '"' + dataVal.getFullYear() + '-' +
- f(dataVal.getMonth() + 1) + '-' +
- f(dataVal.getDate()) + 'T' +
- f(dataVal.getHours()) + ':' +
- f(dataVal.getMinutes()) + ':' +
- f(dataVal.getSeconds()) + '"';
-};
-
-function numberToJSON(numberVal)
-{
-
-// JSON numbers must be finite. Encode non-finite numbers as null.
-
- return isFinite(numberVal) ? String(numberVal) : "null";
-};
-
-function toJSONString(anything)
-{
- switch (typeof anything) {
-
-// Serialize a JavaScript object value. Ignore objects thats lack the
-// toJSONString method. Due to a specification error in ECMAScript,
-// typeof null is 'object', so watch out for that case.
- case 'array':
- return arrayToJSON(anything);
- case 'object':
- if (anything) {
- if (anything instanceof Array)
- return arrayToJSON(anything);
- else
- return objectToJSON(anything);
- } else {
- return "null";
- }
- break;
-
- case 'string':
- return strToJSON(anything);
- case 'number':
- return numberToJSON(anything);
- case 'boolean':
- return boolToJSON(anything);
- default:
- return String(anything);
- }
-}
-
-
-
-function parseJSON(str,filter) {
- var j;
-
- function walk(k, v) {
- var i;
- if (v && typeof v === 'object') {
- for (i in v) {
- if (v.hasOwnProperty(i)) {
- v[i] = walk(i, v[i]);
- }
- }
- }
- return filter(k, v);
- }
-
-
-// Parsing happens in three stages. In the first stage, we run the text against
-// a regular expression which looks for non-JSON characters. We are especially
-// concerned with '()' and 'new' because they can cause invocation, and '='
-// because it can cause mutation. But just to be safe, we will reject all
-// unexpected characters.
-
- if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
- test(str)) {
-
-// In the second stage we use the eval function to compile the text into a
-// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
-// in JavaScript: it can begin a block or an object literal. We wrap the text
-// in parens to eliminate the ambiguity.
-
- try {
- j = eval('(' + str + ')');
- } catch (e) {
- throw new SyntaxError("parseJSON");
- }
- } else {
- throw new SyntaxError("parseJSON");
- }
-
-// In the optional third stage, we recursively walk the new structure, passing
-// each name/value pair to a filter function for possible transformation.
-
- if (typeof filter === 'function') {
- j = walk('', j);
- }
- dump(toJSONString(j));
- return j;
-};
-
-
-
-
diff --git a/extensions/firefox-extension/chrome/content/md5.js b/extensions/firefox-extension/chrome/content/md5.js
deleted file mode 100644
index 46d2aab7d..000000000
--- a/extensions/firefox-extension/chrome/content/md5.js
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
-var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
-var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
-
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
-function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
-function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
-function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
-function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
-function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
-
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function md5_vm_test()
-{
- return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
-}
-
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length
- */
-function core_md5(x, len)
-{
- /* append padding */
- x[len >> 5] |= 0x80 << ((len) % 32);
- x[(((len + 64) >>> 9) << 4) + 14] = len;
-
- var a = 1732584193;
- var b = -271733879;
- var c = -1732584194;
- var d = 271733878;
-
- for(var i = 0; i < x.length; i += 16)
- {
- var olda = a;
- var oldb = b;
- var oldc = c;
- var oldd = d;
-
- a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
- d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
- c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
- b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
- a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
- d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
- c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
- b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
- a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
- d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
- c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
- b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
- a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
- d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
- c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
- b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
-
- a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
- d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
- c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
- b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
- a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
- d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
- c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
- b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
- a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
- d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
- c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
- b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
- a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
- d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
- c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
- b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
-
- a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
- d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
- c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
- b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
- a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
- d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
- c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
- b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
- a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
- d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
- c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
- b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
- a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
- d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
- c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
- b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
-
- a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
- d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
- c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
- b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
- a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
- d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
- c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
- b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
- a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
- d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
- c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
- b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
- a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
- d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
- c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
- b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
-
- a = safe_add(a, olda);
- b = safe_add(b, oldb);
- c = safe_add(c, oldc);
- d = safe_add(d, oldd);
- }
- return Array(a, b, c, d);
-
-}
-
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-function md5_cmn(q, a, b, x, s, t)
-{
- return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
-}
-function md5_ff(a, b, c, d, x, s, t)
-{
- return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
-}
-function md5_gg(a, b, c, d, x, s, t)
-{
- return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
-}
-function md5_hh(a, b, c, d, x, s, t)
-{
- return md5_cmn(b ^ c ^ d, a, b, x, s, t);
-}
-function md5_ii(a, b, c, d, x, s, t)
-{
- return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
-}
-
-/*
- * Calculate the HMAC-MD5, of a key and some data
- */
-function core_hmac_md5(key, data)
-{
- var bkey = str2binl(key);
- if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
-
- var ipad = Array(16), opad = Array(16);
- for(var i = 0; i < 16; i++)
- {
- ipad[i] = bkey[i] ^ 0x36363636;
- opad[i] = bkey[i] ^ 0x5C5C5C5C;
- }
-
- var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
- return core_md5(opad.concat(hash), 512 + 128);
-}
-
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y)
-{
- var lsw = (x & 0xFFFF) + (y & 0xFFFF);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xFFFF);
-}
-
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function bit_rol(num, cnt)
-{
- return (num << cnt) | (num >>> (32 - cnt));
-}
-
-/*
- * Convert a string to an array of little-endian words
- * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
- */
-function str2binl(str)
-{
- var bin = Array();
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < str.length * chrsz; i += chrsz)
- bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
- return bin;
-}
-
-/*
- * Convert an array of little-endian words to a string
- */
-function binl2str(bin)
-{
- var str = "";
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < bin.length * 32; i += chrsz)
- str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
- return str;
-}
-
-/*
- * Convert an array of little-endian words to a hex string.
- */
-function binl2hex(binarray)
-{
- var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i++)
- {
- str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
- hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
- }
- return str;
-}
-
-/*
- * Convert an array of little-endian words to a base-64 string
- */
-function binl2b64(binarray)
-{
- var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i += 3)
- {
- var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
- | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
- | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
- for(var j = 0; j < 4; j++)
- {
- if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
- else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
- }
- }
- return str;
-}
diff --git a/extensions/firefox-extension/chrome/content/utils.js b/extensions/firefox-extension/chrome/content/utils.js
deleted file mode 100755
index dedc413d0..000000000
--- a/extensions/firefox-extension/chrome/content/utils.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Add A Row to a list
- * Param is string . Might be more than one .
- * Every param is a considered to be a cell .
- */
-function appendRow (){
- var list = arguments[0];
- var listitem = document.createElement('listitem');
- for(var i = 1; i< arguments.length; i++)
- {
- var listcell = document.createElement('listcell');
- listcell.setAttribute('label',arguments[i]);
- listcell.setAttribute('value',arguments[i]);
- listitem.appendChild(listcell);
- }
- list.appendChild(listitem);
-}
-
-
-/*
- * check weather a string is end with another
- * usage: somestirng.endWith(antoherString)
- * @param {string} subfix
- */
-String.prototype.isEndWith = function(subfix)
-{
- var index = this.lastIndexOf(subfix);
- return index != -1 && index + subfix.length == this.length;
-}
-
-/**
- * convert a wildcard expression to regular expression
- * usage: wildcard.wildcard2RE
- * @return the re string ( not RegExp Object)
- */
-String.prototype.wildcard2RE = function()
-{
- return this.replace(/([\\\+\[\]\{\}\^])/g,"\\$1").replace(/\?/g,".?").replace(/\*/g,".*");
-}
-
-Function.prototype.bind = function(f,obj) {
- var temp = function() {
- return f.apply(obj, arguments);
- };
- return temp;
-}
-
-function log(msg)
-{
- dump("[xesam] " + msg + "\n");
-}
diff --git a/extensions/firefox-extension/chrome/locale/en-US/beagle.dtd b/extensions/firefox-extension/chrome/locale/en-US/beagle.dtd
deleted file mode 100644
index 433954cad..000000000
--- a/extensions/firefox-extension/chrome/locale/en-US/beagle.dtd
+++ /dev/null
@@ -1,38 +0,0 @@
-<!ENTITY beagle.context.search.link.label "Find References to this Link">
-<!ENTITY beagle.context.search.page.label "Find References to this Page">
-
-<!ENTITY beagle.pref.label "Xesam Preferences">
-<!ENTITY beagle.pref.security.active.label "Index pages with secure content">
-<!ENTITY beagle.pref.bookmark.active.label "Index bookmarks when close the window">
-<!ENTITY beagle.pref.prompt.keywords.active.label "Prompt for keywords when indexing on demand">
-<!ENTITY beagle.pref.default.action.label "Default Action">
-<!ENTITY beagle.pref.default.action.tooltip "What to do When the URL doesn't match any rule">
-<!ENTITY beagle.pref.conflict.action.label "Conflict Action">
-<!ENTITY beagle.pref.conflict.action.tooltip "What to do When the URL matches both rules in include list and exclude list">
-<!ENTITY beagle.pref.action.index.label "Index">
-<!ENTITY beagle.pref.action.noindex.label "No Index">
-<!ENTITY beagle.pref.groupbox.general.label "General">
-<!ENTITY beagle.pref.groupbox.include.label "Include">
-<!ENTITY beagle.pref.groupbox.exclude.label "Exclude">
-<!ENTITY beagle.pref.filter.name.label "Name">
-<!ENTITY beagle.pref.filter.pattern.label "Pattern">
-<!ENTITY beagle.pref.filter.patterntype.label "PatternType">
-<!ENTITY beagle.pref.filter.add.label "Add">
-<!ENTITY beagle.pref.filter.remove.label "Remove">
-<!ENTITY beagle.pref.filter.add.dlg.title "Add Rule">
-<!ENTITY beagle.pref.help.label "Help">
-<!ENTITY beagle.pref.save.label "Save">
-<!ENTITY beagle.pref.cancel.label "Cancel">
-
-<!ENTITY beagle.run.index.this.label "Index This Page">
-<!ENTITY beagle.run.always.index.label "Always Index This Site">
-<!ENTITY beagle.run.never.index.label "Never Index This Site">
-<!ENTITY beagle.run.preferences.label "Preferences">
-<!ENTITY beagle.run.context.menu.label "Search">
-<!ENTITY beagle.run.index.link.label "Index This Link">
-<!ENTITY beagle.run.index.image.label "Index This Image">
-<!ENTITY beagle.index.link.start.label "Start">
-<!ENTITY beagle.index.link.stop.label "Stop">
-
-<!ENTITY beagle.bookmark.index.modified.label "Index The Modified Bookmarks">
-
diff --git a/extensions/firefox-extension/chrome/locale/en-US/beagle.properties b/extensions/firefox-extension/chrome/locale/en-US/beagle.properties
deleted file mode 100644
index 1801d85ba..000000000
--- a/extensions/firefox-extension/chrome/locale/en-US/beagle.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-beagle_context_search_text=Search for "%S"
-beagle_tooltip_actived=Xesam auto index active. Click to disable.
-beagle_tooltip_disabled=Xesam auto index disabled. Click to active.
-beagle_tooltip_error=Xesam indexing error: %S
-beagle_not_found=beagle not found
-beagle_run_error=beagle run error
-beagle_check_env_error=~/.beagle Not Found.This extension will not work.
-beagle_write_error_confirm=Fail to write content/metadata.\n Would you like to disable beagle now ?
-beagle_statuslabel_indexing=xesam is indexing %S
-beagle_index_link_connect=Connecting ... %S
-beagle_index_link_start=Loading ... %S
-beagle_index_link_progress=Transferring Data (%S) %S
-beagle_index_link_saving=Saving ... %S
-beagle_index_link_stop=Stopped
-beagle_index_link_invalid_url=Invalid URL
-beagle_index_link_http_403=Access Denied (403 Forbidden)
-beagle_index_link_http_404=File Not Found (404 Not Found)
-beagle_index_link_http_500=500 Internal Server Error
-beagle_prompt_keywords_title=Keywords
-beagle_prompt_keywords_text=Extra keywords to index
-beagle_index_bookmark_finish=%S bookmarks have been indexed!
-beagle_quick_add_rule_error=Error! Not Found a hostname for this page!
diff --git a/extensions/firefox-extension/chrome/locale/en-US/contents.rdf b/extensions/firefox-extension/chrome/locale/en-US/contents.rdf
deleted file mode 100644
index 0c66fdedc..000000000
--- a/extensions/firefox-extension/chrome/locale/en-US/contents.rdf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
-<!-- list all the packages being supplied by this jar -->
-<RDF:Seq about="urn:mozilla:locale:root">
- <RDF:li resource="urn:mozilla:locale:en-US" />
-</RDF:Seq>
-
-<!-- locale information -->
-<RDF:Description about="urn:mozilla:locale:en-US"
- chrome:displayName="English(US)"
- chrome:author="Filia Tao"
- chrome:name="en-US">
- <chrome:packages>
- <RDF:Seq about="urn:mozilla:locale:en-US:packages">
- <RDF:li resource="urn:mozilla:locale:en-US:beagle" />
- </RDF:Seq>
- </chrome:packages>
-</RDF:Description>
-
-<!-- version information -->
-<RDF:Description about="urn:mozilla:locale:en-US:beagle"
- chrome:localeVersion="1.4" />
-
-</RDF:RDF>
diff --git a/extensions/firefox-extension/chrome/skin/classic/beagle-big.png b/extensions/firefox-extension/chrome/skin/classic/beagle-big.png
deleted file mode 100644
index bfb771e2e..000000000
--- a/extensions/firefox-extension/chrome/skin/classic/beagle-big.png
+++ /dev/null
Binary files differ
diff --git a/extensions/firefox-extension/chrome/skin/classic/beagle-disabled.png b/extensions/firefox-extension/chrome/skin/classic/beagle-disabled.png
deleted file mode 100644
index 0c3844b6e..000000000
--- a/extensions/firefox-extension/chrome/skin/classic/beagle-disabled.png
+++ /dev/null
Binary files differ
diff --git a/extensions/firefox-extension/chrome/skin/classic/beagle-error.png b/extensions/firefox-extension/chrome/skin/classic/beagle-error.png
deleted file mode 100644
index 55d62d6e2..000000000
--- a/extensions/firefox-extension/chrome/skin/classic/beagle-error.png
+++ /dev/null
Binary files differ
diff --git a/extensions/firefox-extension/chrome/skin/classic/beagle.png b/extensions/firefox-extension/chrome/skin/classic/beagle.png
deleted file mode 100644
index 0db50014a..000000000
--- a/extensions/firefox-extension/chrome/skin/classic/beagle.png
+++ /dev/null
Binary files differ
diff --git a/extensions/firefox-extension/chrome/skin/classic/contents.rdf b/extensions/firefox-extension/chrome/skin/classic/contents.rdf
deleted file mode 100644
index a45f4366f..000000000
--- a/extensions/firefox-extension/chrome/skin/classic/contents.rdf
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
- <RDF:Seq about="urn:mozilla:skin:root">
- <RDF:li resource="urn:mozilla:skin:classic/1.0" />
- </RDF:Seq>
-
- <RDF:Description about="urn:mozilla:skin:classic/1.0">
- <chrome:packages>
- <RDF:Seq about="urn:mozilla:skin:classic/1.0:packages">
- <RDF:li resource="urn:mozilla:skin:classic/1.0:beagle" />
- </RDF:Seq>
- </chrome:packages>
- </RDF:Description>
-
-</RDF:RDF>
diff --git a/extensions/firefox-extension/chrome/skin/classic/overlay.css b/extensions/firefox-extension/chrome/skin/classic/overlay.css
deleted file mode 100755
index e7256752e..000000000
--- a/extensions/firefox-extension/chrome/skin/classic/overlay.css
+++ /dev/null
@@ -1,28 +0,0 @@
-statusbarpanel#beagle-notifier-status[status="000"] {
- list-style-image: url("chrome://beagle/skin/beagle.png");
- padding-left: 8px;
- padding-right: 8px;
- padding-top: 2px;
-}
-
-statusbarpanel#beagle-notifier-status[status="00f"] {
- list-style-image: url("chrome://beagle/skin/beagle-disabled.png");
- padding-left: 8px;
- padding-right: 8px;
- padding-top: 2px;
-}
-
-statusbarpanel#beagle-notifier-status[status="f00"] {
- list-style-image: url("chrome://beagle/skin/beagle-error.png");
- padding-left: 8px;
- padding-right: 8px;
- padding-top: 2px;
-}
-
-#beagle-button {
- list-style-image: url("chrome://beagle/skin/beagle.png");
-}
-
-toolbar[iconsize="small"] #beagle-button {
- list-style-image: url("chrome://beagle/skin/beagle.png");
-}
diff --git a/extensions/firefox-extension/firefox-extension-xesam.xpi b/extensions/firefox-extension/firefox-extension-xesam.xpi
deleted file mode 100644
index 2c85751d7..000000000
--- a/extensions/firefox-extension/firefox-extension-xesam.xpi
+++ /dev/null
Binary files differ
diff --git a/extensions/firefox-extension/install.rdf b/extensions/firefox-extension/install.rdf
deleted file mode 100644
index 33a8049d6..000000000
--- a/extensions/firefox-extension/install.rdf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
-
- <em:id>{fda00e13-8c62-4f63-9d19-d168115b11ca}</em:id>
- <em:name>Firefox Extension for Xesam search enginer(beagle,tracker)</em:name>
- <em:version>1.0.1</em:version>
- <em:description>
- Index webpages you visit using Beagle or Tracker
- </em:description>
- <em:creator>Tao Fei (Filia.Tao@gmail.com) </em:creator>
- <em:contributor>Alex Graveley (Original Code)</em:contributor>
- <em:contributor>Abby Coffin (Icon Design)</em:contributor>
- <em:homepageURL>http://beagle-project.org/Browser_Extension#Firefox_Extension</em:homepageURL>
- <em:iconURL>chrome://beagle/skin/beagle-big.png</em:iconURL>
- <em:optionsURL>chrome://beagle/content/beaglePrefs.xul</em:optionsURL>
-
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.8</em:minVersion>
- <em:maxVersion>3.0.*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- </Description>
-
-</RDF>
diff --git a/extensions/thunderbird-extension/Makefile b/extensions/thunderbird-extension/Makefile
deleted file mode 100644
index 4f6cf0ff6..000000000
--- a/extensions/thunderbird-extension/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-PROJECT = tracker
-VERSION = 0.1.3
-
-all: $(PROJECT).xpi
-
-JAR_FILES = \
- content/tracker.css \
- content/trackerIndexer.js \
- content/trackerMailWindow.xul \
- content/trackerMessenger.xul \
- content/trackerPrefs.xul \
- content/trackerQueue.js \
- content/trackerService.js \
- content/trackerSettings.js \
- content/trackerUnindex.js \
- content/trackerUnindex.xul \
- content/trackerUtils.js \
- content/contents.rdf \
- locale/en-US/tracker.dtd \
- locale/en-US/strings.properties \
- locale/en-US/contents.rdf \
- skin/classic/overlay.css \
- skin/classic/tracker.png \
- skin/classic/tracker-disabled.png \
- skin/classic/tracker-error.png \
- skin/classic/contents.rdf
-
-XPI_FILES = \
- chrome.manifest \
- install.rdf \
- chrome/$(PROJECT).jar \
- defaults/preferences/default.js \
- components/TrackerIndexer.js \
- components/TrackerQueue.js \
- components/TrackerSettings.js \
- components/TrackerCommandLine.js
-
-chrome/$(PROJECT).jar: $(JAR_FILES)
- -@mkdir -p chrome
- zip -q9 $@ $^
-
-$(PROJECT).xpi: $(XPI_FILES)
- zip -q9 $@ $^
-
-
-clean:
- rm -f chrome/$(PROJECT).jar
- rm -f $(PROJECT).xpi
diff --git a/extensions/thunderbird-extension/chrome.manifest b/extensions/thunderbird-extension/chrome.manifest
deleted file mode 100644
index 601b0a614..000000000
--- a/extensions/thunderbird-extension/chrome.manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-content tracker jar:chrome/tracker.jar!/content/
-overlay chrome://messenger/content/messenger.xul chrome://tracker/content/trackerMessenger.xul
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://tracker/content/trackerMailWindow.xul
-locale tracker en-US jar:chrome/tracker.jar!/locale/en-US/
-skin tracker classic/1.0 jar:chrome/tracker.jar!/skin/classic/
diff --git a/extensions/thunderbird-extension/components/TrackerCommandLine.js b/extensions/thunderbird-extension/components/TrackerCommandLine.js
deleted file mode 100644
index 2bf7ab2eb..000000000
--- a/extensions/thunderbird-extension/components/TrackerCommandLine.js
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-// tracker.xul: Overlay for basic main window GUI items
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-// Original source: http://developer.mozilla.org/en/docs/Chrome:_Command_Line
-
-const nsIAppShellService = Components.interfaces.nsIAppShellService;
-const nsISupports = Components.interfaces.nsISupports;
-const nsICategoryManager = Components.interfaces.nsICategoryManager;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsICommandLine = Components.interfaces.nsICommandLine;
-const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler;
-const nsIFactory = Components.interfaces.nsIFactory;
-const nsIModule = Components.interfaces.nsIModule;
-const nsIWindowWatcher = Components.interfaces.nsIWindowWatcher;
-
-const clh_contractID = "@mozilla.org/commandlinehandler/general-startup;1?type=tracker";
-const clh_CID = Components.ID("{679f520a-b062-45f9-a02c-482cfebf3b77}");
-const clh_category = "m-tracker";
-
-var loaded = false;
-var last_uri = null;
-
-const startupObserver = {
-
- Observer: Components.classes['@mozilla.org/observer-service;1']
- .getService(Components.interfaces.nsIObserverService),
-
- RegisterSelf: function ()
- {
- this.Observer.addObserver (this, 'tracker-loaded', false);
- this.Observer.addObserver (this, 'quit-application', false);
- },
-
- UnregisterSelf: function ()
- {
- this.Observer.removeObserver (this, 'tracker-loaded');
- this.Observer.removeObserver (this, 'quit-application');
- },
-
- notify: function ()
- {
- if (!loaded || (loaded && !last_uri))
- return;
-
- var uri = last_uri;
- last_uri = null;
- this.Observer.notifyObservers (this, 'tracker-open-uri', uri);
- },
-
- observe: function (subject, topic, data)
- {
- if (topic == 'tracker-loaded') {
- // Each message will send this so we better not respond to all of them
- if (loaded)
- return;
-
- loaded = true;
- this.notify ();
- } else if (topic == 'quit-application')
- this.UnregisterSelf ();
- }
-};
-
-const myAppHandler = {
-
- QueryInterface : function clh_QI(iid)
- {
- if (iid.equals(nsICommandLineHandler) || iid.equals(nsIFactory) || iid.equals(nsISupports))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- handle : function clh_handle(cmdLine)
- {
- try {
- var uristr = cmdLine.handleFlagWithParam("viewtracker", false);
- if (uristr) {
- last_uri = uristr;
- cmdLine.preventDefault = false;
- startupObserver.notify ();
- }
- } catch (e) {
- Components.utils.reportError("incorrect parameter passed to -viewtracker on the command line.");
- }
- },
-
- helpInfo : " -viewtracker <uri> Open specified URI,\n",
-
- createInstance : function clh_CI(outer, iid)
- {
- if (outer != null)
- throw Components.results.NS_ERROR_NO_AGGREGATION;
-
- return this.QueryInterface(iid);
- },
-
- lockFactory : function clh_lock(lock)
- {
- }
-};
-
-
-const myAppHandlerModule = {
-
- QueryInterface : function mod_QI(iid)
- {
- if (iid.equals(nsIModule) || iid.equals(nsISupports))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- getClassObject : function mod_gch(compMgr, cid, iid)
- {
- if (cid.equals(clh_CID))
- return myAppHandler.QueryInterface(iid);
-
- throw Components.results.NS_ERROR_NOT_REGISTERED;
- },
-
- registerSelf : function mod_regself(compMgr, fileSpec, location, type)
- {
- compMgr.QueryInterface(nsIComponentRegistrar);
-
- compMgr.registerFactoryLocation(clh_CID,
- "myAppHandler",
- clh_contractID,
- fileSpec,
- location,
- type);
-
- var catMan = Components.classes["@mozilla.org/categorymanager;1"]
- .getService(nsICategoryManager);
- catMan.addCategoryEntry("command-line-handler",
- clh_category,
- clh_contractID, true, true);
- },
-
- unregisterSelf : function mod_unreg(compMgr, location, type)
- {
- compMgr.QueryInterface(nsIComponentRegistrar);
- compMgr.unregisterFactoryLocation(clh_CID, location);
-
- var catMan = Components.classes["@mozilla.org/categorymanager;1"]
- .getService(nsICategoryManager);
- catMan.deleteCategoryEntry("command-line-handler", clh_category);
- },
-
- canUnload : function (compMgr)
- {
- return true;
- }
-};
-
-function NSGetModule(comMgr, fileSpec)
-{
- return myAppHandlerModule;
-}
-
-startupObserver.RegisterSelf ();
-
-
diff --git a/extensions/thunderbird-extension/components/TrackerIndexer.js b/extensions/thunderbird-extension/components/TrackerIndexer.js
deleted file mode 100644
index 0bae57d8a..000000000
--- a/extensions/thunderbird-extension/components/TrackerIndexer.js
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// TrackerIndexer.js: Base code for indexer component
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-// Source: http://hyperstruct.net/2006/8/10/your-first-javascript-xpcom-component-in-10-minutes
-
-const CLASS_ID = Components.ID('{a7b17c1b-0346-4c52-b52b-6ee858a10f53}');
-const CLASS_NAME = 'Tracker indexer component';
-const CONTRACT_ID = '@tracker-project.org/services/indexer;1';
-const SOURCE = 'chrome://tracker/content/trackerIndexer.js';
-const INTERFACE = Components.interfaces.nsISupports;
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const loader = Cc['@mozilla.org/moz/jssubscript-loader;1']
- .getService(Ci.mozIJSSubScriptLoader);
-
-function Component() {
- this.wrappedJSObject = this;
-}
-
-function GetJsService (component)
-{
- var comp = Components.classes [component].getService (Components.interfaces.nsISupports);
- return comp.wrappedJSObject;
-}
-
-loader.loadSubScript(SOURCE, Component.prototype);
-
-var Factory = {
- createInstance: function(aOuter, aIID) {
- if(aOuter != null)
- throw Cr.NS_ERROR_NO_AGGREGATION;
- var component = new Component();
- if(typeof(component.wrappedJSObject.init) == 'function')
- component.init();
-
- return component.QueryInterface(aIID);
- }
-};
-
-var Module = {
- _firstTime: true,
-
- registerSelf: function(aCompMgr, aFileSpec, aLocation, aType) {
- if (this._firstTime) {
- this._firstTime = false;
- throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
- };
- aCompMgr = aCompMgr.QueryInterface(Ci.nsIComponentRegistrar);
- aCompMgr.registerFactoryLocation(
- CLASS_ID, CLASS_NAME, CONTRACT_ID, aFileSpec, aLocation, aType);
- },
-
- unregisterSelf: function(aCompMgr, aLocation, aType) {
- aCompMgr = aCompMgr.QueryInterface(Ci.nsIComponentRegistrar);
- aCompMgr.unregisterFactoryLocation(CLASS_ID, aLocation);
- },
-
- getClassObject: function(aCompMgr, aCID, aIID) {
- if (!aIID.equals(Ci.nsIFactory))
- throw Cr.NS_ERROR_NOT_IMPLEMENTED;
-
- if (aCID.equals(CLASS_ID))
- return Factory;
-
- throw Cr.NS_ERROR_NO_INTERFACE;
- },
-
- canUnload: function(aCompMgr) { return true; }
-};
-
-function NSGetModule(aCompMgr, aFileSpec) { return Module; }
-
diff --git a/extensions/thunderbird-extension/components/TrackerQueue.js b/extensions/thunderbird-extension/components/TrackerQueue.js
deleted file mode 100644
index c5a0959ed..000000000
--- a/extensions/thunderbird-extension/components/TrackerQueue.js
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// TrackerQueue.js: Base code for queue component
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-// Source: http://hyperstruct.net/2006/8/10/your-first-javascript-xpcom-component-in-10-minutes
-
-const CLASS_ID = Components.ID('{d413d0af-29c4-4d47-bfa8-cc585075603d}');
-const CLASS_NAME = 'Tracker queue component';
-const CONTRACT_ID = '@tracker-project.org/services/queue;1';
-const SOURCE = "chrome://tracker/content/trackerQueue.js";
-const INTERFACE = Components.interfaces.nsISupports;
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const loader = Cc['@mozilla.org/moz/jssubscript-loader;1']
- .getService(Ci.mozIJSSubScriptLoader);
-
-function Component () {
- this.wrappedJSObject = this;
-}
-
-function GetJsService (component)
-{
- var comp = Components.classes [component].getService (Components.interfaces.nsISupports);
- return comp.wrappedJSObject;
-}
-
-loader.loadSubScript(SOURCE, Component.prototype);
-
-var Factory = {
- createInstance: function(aOuter, aIID) {
- if(aOuter != null)
- throw Cr.NS_ERROR_NO_AGGREGATION;
- var component = new Component();
- if(typeof(component.wrappedJSObject.init) == 'function')
- component.init();
-
- return component.QueryInterface(aIID);
- }
-};
-
-var Module = {
- _firstTime: true,
-
- registerSelf: function(aCompMgr, aFileSpec, aLocation, aType) {
- if (this._firstTime) {
- this._firstTime = false;
- throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
- };
- aCompMgr = aCompMgr.QueryInterface(Ci.nsIComponentRegistrar);
- aCompMgr.registerFactoryLocation(
- CLASS_ID, CLASS_NAME, CONTRACT_ID, aFileSpec, aLocation, aType);
- },
-
- unregisterSelf: function(aCompMgr, aLocation, aType) {
- aCompMgr = aCompMgr.QueryInterface(Ci.nsIComponentRegistrar);
- aCompMgr.unregisterFactoryLocation(CLASS_ID, aLocation);
- },
-
- getClassObject: function(aCompMgr, aCID, aIID) {
- if (!aIID.equals(Ci.nsIFactory))
- throw Cr.NS_ERROR_NOT_IMPLEMENTED;
-
- if (aCID.equals(CLASS_ID))
- return Factory;
-
- throw Cr.NS_ERROR_NO_INTERFACE;
- },
-
- canUnload: function(aCompMgr) { return true; }
-};
-
-function NSGetModule(aCompMgr, aFileSpec) { return Module; }
-
diff --git a/extensions/thunderbird-extension/components/TrackerSettings.js b/extensions/thunderbird-extension/components/TrackerSettings.js
deleted file mode 100644
index 9007d7160..000000000
--- a/extensions/thunderbird-extension/components/TrackerSettings.js
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// TrackerSettings.js: Base code for settings component
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-// Source: http://hyperstruct.net/2006/8/10/your-first-javascript-xpcom-component-in-10-minutes
-
-const CLASS_ID = Components.ID('{bde6ce3b-f79d-4cea-8db2-a26d69616536}');
-const CLASS_NAME = 'Tracker settings component';
-const CONTRACT_ID = '@tracker-project.org/services/settings;1';
-const SOURCE = 'chrome://tracker/content/trackerSettings.js';
-const INTERFACE = Components.interfaces.nsISupports;
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const loader = Cc['@mozilla.org/moz/jssubscript-loader;1']
- .getService(Ci.mozIJSSubScriptLoader);
-
-function Component() {
- this.wrappedJSObject = this;
-}
-
-function GetJsService (component)
-{
- var comp = Components.classes [component].getService (Components.interfaces.nsISupports);
- return comp.wrappedJSObject;
-}
-
-loader.loadSubScript(SOURCE, Component.prototype);
-
-var Factory = {
- createInstance: function(aOuter, aIID) {
- if(aOuter != null)
- throw Cr.NS_ERROR_NO_AGGREGATION;
- var component = new Component();
- if(typeof(component.wrappedJSObject.init) == 'function')
- component.init();
-
- return component.QueryInterface(aIID);
- }
-};
-
-var Module = {
- _firstTime: true,
-
- registerSelf: function(aCompMgr, aFileSpec, aLocation, aType) {
- if (this._firstTime) {
- this._firstTime = false;
- throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
- };
- aCompMgr = aCompMgr.QueryInterface(Ci.nsIComponentRegistrar);
- aCompMgr.registerFactoryLocation(
- CLASS_ID, CLASS_NAME, CONTRACT_ID, aFileSpec, aLocation, aType);
- },
-
- unregisterSelf: function(aCompMgr, aLocation, aType) {
- aCompMgr = aCompMgr.QueryInterface(Ci.nsIComponentRegistrar);
- aCompMgr.unregisterFactoryLocation(CLASS_ID, aLocation);
- },
-
- getClassObject: function(aCompMgr, aCID, aIID) {
- if (!aIID.equals(Ci.nsIFactory))
- throw Cr.NS_ERROR_NOT_IMPLEMENTED;
-
- if (aCID.equals(CLASS_ID))
- return Factory;
-
- throw Cr.NS_ERROR_NO_INTERFACE;
- },
-
- canUnload: function(aCompMgr) { return true; }
-};
-
-function NSGetModule(aCompMgr, aFileSpec) { return Module; }
-
diff --git a/extensions/thunderbird-extension/content/contents.rdf b/extensions/thunderbird-extension/content/contents.rdf
deleted file mode 100644
index fcc22ccd7..000000000
--- a/extensions/thunderbird-extension/content/contents.rdf
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
- <RDF:Seq RDF:about="urn:mozilla:package:root">
- <RDF:li RDF:resource="urn:mozilla:package:tracker"/>
- </RDF:Seq>
-
- <RDF:Seq RDF:about="urn:mozilla:overlays">
- <RDF:li RDF:resource="chrome://messenger/content/messenger.xul"/>
- <RDF:li RDF:resource="chrome://messenger/content/mailWindowOverlay.xul"/>
- </RDF:Seq>
-
- <RDF:Seq RDF:about="chrome://messenger/content/messenger.xul">
- <RDF:li>chrome://tracker/content/tracker.xul</RDF:li>
- </RDF:Seq>
-
- <RDF:Seq about="chrome://messenger/content/mailWindowOverlay.xul">
- <RDF:li>chrome://tracker/content/trackerMailWindow.xul</RDF:li>
- </RDF:Seq>
-
- <RDF:Description
- RDF:about="urn:mozilla:package:tracker"
- chrome:displayName="Tracker Indexer 0.1.3"
- chrome:author="Pierre Östlund"
- chrome:authorURL="mailto:pierre.ostlund@gmail.com"
- chrome:name="tracker"
- chrome:extension="true"
- chrome:description="Index mails, RSS and more using Tracker."
- chrome:settingsURL="chrome://tracker/content/trackerPrefs.xul">
- </RDF:Description>
-
-</RDF:RDF>
diff --git a/extensions/thunderbird-extension/content/tracker.css b/extensions/thunderbird-extension/content/tracker.css
deleted file mode 100644
index acfb3dff3..000000000
--- a/extensions/thunderbird-extension/content/tracker.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-statusbarpanel#tracker-icon[status="enabled"] {
- list-style-image: url("chrome://tracker/skin/tracker.png");
-}
-
-statusbarpanel#tracker-icon[status="disabled"] {
- list-style-image: url("chrome://tracker/skin/tracker-disabled.png");
-}
-
-statusbarpanel#tracker-icon[status="error"] {
- list-style-image: url("chrome://tracker/skin/tracker-error.png");
-}
diff --git a/extensions/thunderbird-extension/content/tracker.js b/extensions/thunderbird-extension/content/tracker.js
deleted file mode 100644
index c9bb0c11b..000000000
--- a/extensions/thunderbird-extension/content/tracker.js
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// tracker.js: Starting point for the Thunderbird extension
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-var gTrackerSettings = Components.classes ['@tracker-project.org/services/settings;1']
- .getService (Components.interfaces.nsITrackerSettings);
-
-function trackerInit ()
-{
- dump ("Tracker init started\n");
-
- // Load settings
- gTrackerSettings.init ();
-
- dump ('Adding settings observer...');
- var prefbranch = Components.classes ['@mozilla.org/preferences-service;1']
- .getService (Components.interfaces.nsIPrefBranch2);
- prefbranch.addObserver ('tracker', gSettingObserver, false);
- dump ("Done.\n");
-
- var enabled = gTrackerSettings.getBoolPref ('Enabled');
- if (!enabled) {
- dump ("Tracker backend is now disabled\n");
- } else {
- // Make sure we catch changes
- gTrackerDataTracker.RegisterSelf ();
-
- // The following timeout handler will initiate the indexing process by locating data that
- // needs to be indexed. We delay a while go give Thunderbird some time to settle.
- dump ("Tracker extension is now enabled\n");
- window.setTimeout (function () { gTrackerMainloop.Start (); }, 3000);
- }
-
- updateStatus (enabled);
- dump ("Tracker init ended\n");
-}
-
-function onShowSettings (event)
-{
- window.openDialog ('chrome://tracker/content/trackerPrefs.xul',
- 'PreferenceWindow',
- 'chrome,toolbar,modal=yes,resizable=no',
- 'pref-indexing');
-}
-
-function onStatusbarClick ()
-{
- // We invert current running mode
- var enabled = !gTrackerSettings.getBoolPref ('Enabled');
- gTrackerSettings.setBoolPref ('Enabled', enabled);
-}
-
-// Update status of the little dog in the corner
-function updateStatus (enabled)
-{
- var elem = document.getElementById ('tracker-icon');
- var bundle = document.getElementById ('bundle_tracker');
-
- if (enabled) {
- elem.setAttribute ('status', 'enabled');
- elem.setAttribute ('tooltiptext', bundle.getString ('indexingEnabledTooltip'));
- } else {
- elem.setAttribute ('status', 'disabled');
- elem.setAttribute ('tooltiptext', bundle.getString ('indexingDisabledTooltip'));
- }
-}
-
-// We use this observer to check if we have been enabled or disabled and if we should restart
-// the main loop in case indexing speed changed
-var gSettingObserver = {
-
- observe: function (subject, topic, data)
- {
- var branch = subject.QueryInterface (Components.interfaces.nsIPrefBranch);
-
- if (data == 'tracker.enabled') {
- var enabled = branch.getBoolPref (data);
-
- // Enable or disabled depending on new status
- if (enabled) {
- gTrackerDataTracker.RegisterSelf ();
- gTrackerMainloop.Restart (3);
- dump ("Tracker extension is now enabled\n");
- } else {
- gTrackerDataTracker.UnregisterSelf ();
- gTrackerMainloop.Stop ();
- dump ("Tracker extension is now disabled\n");
- }
-
- updateStatus (enabled);
- } else if (data == 'tracker.index.delay') {
- // In case delay time changed, restart mainloop to get immediate effect. We need to get
- // the new value from included branch as it may not be updated in gTrackerSettings yet.
- gTrackerMainloop.Restart (branch.getIntPref ('tracker.index.delay'));
- }
- }
-};
-
-window.addEventListener ('load', trackerInit, false);
-
diff --git a/extensions/thunderbird-extension/content/tracker.xul b/extensions/thunderbird-extension/content/tracker.xul
deleted file mode 100644
index 9fb181d38..000000000
--- a/extensions/thunderbird-extension/content/tracker.xul
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-//
-// tracker.xul: Overlay for basic main window GUI items
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
--->
-
-<?xml-stylesheet href="chrome://tracker/skin/overlay.css" type="text/css"?>
-<?xml-stylesheet href="chrome://tracker/content/tracker.css" type="text/css"?>
-<!DOCTYPE overlay SYSTEM "chrome://tracker/locale/tracker.dtd">
-
-<overlay id="tracker-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <stringbundleset id="stringbundleset">
- <stringbundle id="bundle_tracker" src="chrome://tracker/locale/strings.properties"/>
- </stringbundleset>
-
- <script src="trackerUnindex.js"/>
- <script src="tracker.js"/>
-
- <!-- This will appear in the tools menu -->
- <menupopup id="taskPopup">
- <menuitem id="tracker-settings"
- label="&trackermain.settings;"
- oncommand="onShowSettings(event);"/>
- </menupopup>
-
- <!-- This gives the small icon in the bottom right corner -->
- <statusbar id="status-bar">
- <statusbarpanel id="tracker-icon"
- class="statusbarpanel-iconic"
- status="disabled"
- oncommand="onStatusbarClick ();"/>
- </statusbar>
-
-</overlay>
-
diff --git a/extensions/thunderbird-extension/content/trackerIndexer.js b/extensions/thunderbird-extension/content/trackerIndexer.js
deleted file mode 100644
index e4622f92d..000000000
--- a/extensions/thunderbird-extension/content/trackerIndexer.js
+++ /dev/null
@@ -1,452 +0,0 @@
-//
-// trackerIndexer.js: Indexer component implementation
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-const TRACKER_INDEX_PROPERTY = 'trackerIndex';
-const TRACKER_SHOULDNOTINDEX_PROPERTY = 'trackerNoIndex';
-
-var object_count = -1;
-
-// This function taks a hashtable as argument with key-value pairs and writes to the next
-// output file. This should be considered an internal function and should only be called
-// from within this instance. The type variable should reflect the content and will be the
-// document element name (we generate some sort of xml here for easy parsing).
-function writeHashTableToNextFile (hashtable, type)
-{
- var file = Components.classes ['@mozilla.org/file/local;1']
- .createInstance (Components.interfaces.nsILocalFile);
- file.initWithPath (newOutputFilename ())
-
- // Components.resultseate a stream so that data can be written to file. The various modes were found
- // on this page: http://developer.mozilla.org/en/docs/Code_snippets:File_I/O
- var stream = Components.classes ['@mozilla.org/network/file-output-stream;1']
- .createInstance (Components.interfaces.nsIFileOutputStream);
- try {
- stream.init (file, 0x20 | 0x08 | 0x02, 0664, 0);
- } catch (ex) {
- dump ('Failed to write index file: ' + ex + "\n");
- return;
- }
-
- // HOWTO write unicode-encoded strings :
- // http://developer.mozilla.org/en/docs/Writing_textual_data
- var ustream = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
- .createInstance(Components.interfaces.nsIConverterOutputStream);
- try {
- ustream.init (stream, 'UTF-8', 0, 0x0000);
- } catch (ex) {
- dump ('Failed to write unicode index file: ' + ex + "\n");
- return;
- }
-
- ustream.writeString ('<' + type + ">\n");
- for (var key in hashtable) {
- var line = '<' + key + '><![CDATA[' + hashtable [key] + ']]></' + key + ">\n";
- ustream.writeString (line);
- }
- ustream.writeString ("</" + type + ">\n");
-
- ustream.close ();
- stream.close ();
-}
-
-function findLastOutputFile ()
-{
- var settings = GetJsService ('@tracker-project.org/services/settings;1');
- var dir = Components.classes ['@mozilla.org/file/local;1']
- .getService (Components.interfaces.nsILocalFile);
-
- try {
- dir.initWithPath (settings.getCharPref ('DestinationDirectory') + "/ToIndex");
-
- var enumerator = dir.directoryEntries;
- while (enumerator.hasMoreElements ()) {
- var file = enumerator.getNext ().QueryInterface (Components.interfaces.nsIFile);
- if (!file || !file.isFile ())
- continue;
-
- var number = parseInt (file.leafName.substring(0,file.leafName.length-4));
- if (object_count == -1 || object_count > number)
- object_count = number;
- }
-
- if (object_count == -1)
- object_count = 0;
- } catch (ex) {
- // We default to 0 (zero)
- object_count = 0;
- }
-}
-
-// Figure out what our next object name is (we don't overwrite existing files)
-function newOutputFilename ()
-{
- if (object_count == -1)
- findLastOutputFile ();
-
- var settings = GetJsService ('@tracker-project.org/services/settings;1');
- var file = Components.classes ["@mozilla.org/file/local;1"]
- .createInstance (Components.interfaces.nsILocalFile);
- if (!file)
- throw Components.results.NS_ERROR_FAILURE;
-
- do {
- file.initWithPath (settings.getCharPref ('DestinationDirectory') +
- "/ToIndex/" + object_count++ +".tms");
- } while (file.exists ());
-
- return file.path;
-}
-
-
-Component.prototype = {
-
- reload: function() {
- loader.loadSubScript(SOURCE, this.__proto__);
- },
-
- QueryInterface: function(aIID) {
- if(!aIID.equals(INTERFACE) && !aIID.equals(Ci.nsISupports))
- throw Cr.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- // Checks if an account should be indexed by pulling its type and checks if that type is enabled
- // for indexing.
- shouldIndexAccount: function (account)
- {
- var settings = GetJsService ('@tracker-project.org/services/settings;1');
-
- if (account instanceof Components.interfaces.nsIMsgAccount)
- account.QueryInterface (Components.interfaces.nsIMsgAccount);
- else
- return false;
-
- switch (account.incomingServer.type) {
- case 'imap':
- return settings.getBoolPref ('EnableImap');
- case 'pop3':
- return settings.getBoolPref ('EnablePop');
- case 'rss':
- return settings.getBoolPref ('EnableRss');
- case 'nntp':
- return settings.getBoolPref ('Enable.News');
- case 'movemail':
- return settings.getBoolPref ('EnableMailspool');
- case 'none':
- return settings.getBoolPref ('EnableLocal');
- }
-
- return false;
- },
-
- // A folder or a message should only be indexed in case TRACKER_SHOULDNOTINDEX_PROPERTY does not
- // exist or if it exists with a value other than '1'
- shouldIndexFolder: function (folder)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder) {
- var prop = folder.getStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY);
- return !prop || (prop && prop != '1');
- }
-
- return false;
- },
-
- shouldIndexHdr: function (hdr)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr) {
- var prop = hdr.getStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY);
- return !prop || (prop && prop != '1');
- }
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- // A folder or message is indexed if it has the TRACKER_INDEX_PROPERTY set with value "1".
- isFolderIndexed: function (folder)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder)
- return (folder && folder.getStringProperty (TRACKER_INDEX_PROPERTY) == '1');
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- isHdrIndexed: function (hdr)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr)
- return (hdr && hdr.getStringProperty (TRACKER_INDEX_PROPERTY) == '1');
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- isFolderUserMarked: function (folder)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder)
- return (folder && folder.getStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY) == '1');
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- isHdrUserMarked: function (hdr)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr)
- return (hdr && hdr.getStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY) == '1');
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- markFolderAsIndexed: function (folder)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder)
- folder.setStringProperty (TRACKER_INDEX_PROPERTY, '1');
- else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- markHdrAsIndexed: function (hdr)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr)
- hdr.setStringProperty (TRACKER_INDEX_PROPERTY, '1');
- else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- markFolderAsUserMarked: function (folder)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder)
- folder.setStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY, '1');
- else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- markHdrAsUserMarked: function (hdr)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr)
- hdr.setStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY, '1');
- else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- resetFolderUserMarked: function (folder)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder) {
- if (folder.getStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY) != '')
- folder.setStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY, '');
- } else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- resetHdrUserMarked: function (hdr)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr) {
- if (hdr.getStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY) != '')
- hdr.setStringProperty (TRACKER_SHOULDNOTINDEX_PROPERTY, '');
- } else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- resetFolder: function (folder, userMarked, recursive, content)
- {
- if (folder instanceof Components.interfaces.nsIMsgFolder) {
- // We only update with a new value if we already have one
- if (folder.getStringProperty (TRACKER_INDEX_PROPERTY) != '')
- folder.setStringProperty (TRACKER_INDEX_PROPERTY, '');
-
- if (userMarked)
- this.resetFolderUserMarked (folder);
- } else
- throw Components.results.NS_ERROR_NO_INTERFACE;
-
- // Should we mark content as well?
- if (content && folder.getTotalMessages (false) > 0) {
- var enumerator = folder.getMessages (null);
- while (enumerator.hasMoreElements ()) {
- var hdr = enumerator.getNext ().QueryInterface (Components.interfaces.nsIMsgDBHdr);
- if (!hdr)
- continue;
- this.resetHdr (hdr);
- }
- }
-
- // Should we go recursive too?
- if (recursive) {
- var allFolders = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
- folder.ListDescendents (allFolders);
- for (var i = 0; i < allFolders.Count (); i++) {
- var subFolder = allFolders.QueryElementAt (i, Components.interfaces.nsIMsgFolder);
- if (!subFolder)
- continue;
-
- // Using ListDescendents above will "plain out" the folder list and give us all folders.
- // This is why we should not go recursive from here.
- this.resetFolder (subFolder, userMarked, false, content);
- }
- }
- },
-
- resetHdr: function (hdr, userMarked)
- {
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr) {
- // We only update with a new value if we already have one
- if (hdr.getStringProperty (TRACKER_INDEX_PROPERTY) != '')
- hdr.setStringProperty (TRACKER_INDEX_PROPERTY, '');
-
- if (userMarked)
- this.resetHdrUserMarked (hdr);
- } else
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- resetEverything: function (userMarked)
- {
- var gAccountManager = Components.classes ['@mozilla.org/messenger/account-manager;1']
- .getService (Components.interfaces.nsIMsgAccountManager);
- var accounts = gAccountManager.accounts;
-
- for (var i = 0; i < accounts.Count (); i++) {
- var account = accounts.QueryElementAt (i, Components.interfaces.nsIMsgAccount)
- if (!account)
- continue;
-
- // We reset everything recursively
- this.resetFolder (account.incomingServer.rootFolder, userMarked, true, true);
- }
- },
-
- addToIndex: function (hdr)
- {
- try {
- hdr.QueryInterface (Components.interfaces.nsIMsgDBHdr);
- } catch (ex) {
- }
-
- if (!hdr)
- throw Components.interfaces.NS_ERROR_NO_INTERFACE;
-
- var properties = new Array ();
-
- var serverType = hdr.folder.server.type, type = null;
-
- // We must ensure that all elements exist. Some of them might throw an exception in various
- // set-ups, so we have to catch them and default to something.
- properties ['Author'] = hdr.mime2DecodedAuthor;
- properties ['Date'] = hdr.dateInSeconds;
- properties ['Folder'] = hdr.folder.name;
- properties ['FolderFile'] = hdr.folder.path.unixStyleFilePath;
-
- try {
- properties ['HasOffline'] = hdr.folder.hasMsgOffline (hdr.messageKey);
- } catch (ex) {
- dump ('Failed to parse HasOffline: ' + ex + "\n");
- properties ['HasOffline'] = 'false';
- }
-
- properties ['MessageId'] = hdr.messageId;
- properties ['MessageSize'] = hdr.messageSize;
- properties ['MessageOffset'] = hdr.messageOffset;
- properties ['OfflineSize'] = hdr.offlineMessageSize;
- properties ['Recipients'] = hdr.mime2DecodedRecipients;
- properties ['Subject'] = hdr.mime2DecodedSubject;
- properties ['MessageKey'] = hdr.messageKey;
-
- try {
- properties ['Uri'] = hdr.folder.getUriForMsg (hdr);
- } catch (ex) {
- properties ['Uri'] = null;
- dump ('Failed to parse uri: ' + ex + "\n");
- }
-
- switch (serverType) {
- case 'none': // local account
- case 'pop3':
- case 'imap':
- case 'nntp':
- case 'movemail':
- type = 'MailMessage';
- break;
- case 'rss':
- // We usually have the content body available but hasMsgOffline still reports false. Just
- // default to true until this mess has been cleared out.
- properties ['HasOffline'] = true;
-
- try {
- var db = hdr.folder.getMsgDatabase (null);
- var urls = db.dBFolderInfo.getCharPtrProperty ('feedUrl');
- properties ['FeedURL'] = urls.substring (urls.lastIndexOf ('|')+1);
- } catch (ex) {
- properties ['FeedURL'] = 'Unknown';
- }
- type = 'FeedItem';
- break;
- }
-
- // Write everything to file
- if (type) {
- dump ('Writing ' + type + ' to file. Subject: ' + properties ['Subject'] + "\n");
- writeHashTableToNextFile (properties, type);
- }
- },
-
- dropFolderFromIndex: function (folder)
- {
- try {
- folder.QueryInterface (Components.interfaces.nsIMsgFolder);
- } catch (ex) {
- }
-
- if (!folder)
- throw Components.interfaces.NS_ERROR_NO_INTERFACE;
-
- // We don't even bother if no messages exist
- if (folder.getTotalMessages (false) < 1)
- return;
-
- var properties = new Array ();
- properties ['FolderFile'] = folder.path.unixStyleFilePath;
-
- writeHashTableToNextFile (properties, 'DeleteFolder');
- },
-
- dropHdrFromIndex: function (hdr)
- {
- try {
- hdr.QueryInterface (Components.interfaces.nsIMsgDBHdr);
- } catch (ex) {
- }
-
- if (!hdr)
- throw Components.interfaces.NS_ERROR_NO_INTERFACE;
-
- var properties = new Array ();
- properties ['Uri'] = hdr.folder.getUriForMsg (hdr);
-
- properties ['FolderFile'] = hdr.folder.path.unixStyleFilePath;
- properties ['MessageKey'] = hdr.messageKey;
-
- writeHashTableToNextFile (properties, 'DeleteHdr');
- }
-};
-
diff --git a/extensions/thunderbird-extension/content/trackerMailWindow.xul b/extensions/thunderbird-extension/content/trackerMailWindow.xul
deleted file mode 100644
index 225c2092a..000000000
--- a/extensions/thunderbird-extension/content/trackerMailWindow.xul
+++ /dev/null
@@ -1,397 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-//
-// trackerMailWindow.xul: Overlay for folder and message menu
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
--->
-
-<?xml-stylesheet href="chrome://tracker/skin/overlay.css" type="text/css"?>
-<?xml-stylesheet href="chrome://tracker/content/tracker.css" type="text/css"?>
-<!DOCTYPE overlay SYSTEM "chrome://tracker/locale/tracker.dtd">
-
-<overlay id="tracker-window-overlay"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <stringbundleset id="stringbundleset">
- <stringbundle id="bundle_tracker" src="chrome://tracker/locale/strings.properties"/>
- </stringbundleset>
-
- <script src="trackerUtils.js"/>
-
- <script type="application/x-javascript">
- <![CDATA[
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
- var settings = GetJsService ('@tracker-project.org/services/settings;1');
- var messenger = Components.classes ['@mozilla.org/messenger;1'].getService (Components.interfaces.nsIMessenger);
-
- function getSelectedFolder ()
- {
- var selectedFolders = GetSelectedMsgFolders ();
- if (selectedFolders == null || selectedFolders.length < 1)
- return null;
-
- return selectedFolders [0];
- }
-
- function getSelectedMessages ()
- {
- try {
- var view = GetDBView ();
- var uris = {};
- var count = {};
- view.getURIsForSelection (uris, count);
- var msgs = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
-
- for (var i = 0; i < count.value; i++) {
- var uri = uris.value [i];
- msgs.AppendElement (messenger.msgHdrFromURI (uri));
- }
-
- return msgs;
- } catch (ex) {
- }
-
- return null;
- }
-
- function onIndexFillFolderMenu ()
- {
- // We don't generate the menu if we are disabled
- if (!settings.getBoolPref ('Enabled'))
- return;
-
- var folder = getSelectedFolder ();
- if (!folder)
- return;
-
- try {
- var noindexing = document.getElementById ('folderPaneContext-noindexing');
- var removefolder = document.getElementById ('folderPaneContext-removeIndexedFolder');
- var removefolderrecursive =
- document.getElementById ('folderPaneContext-removeIndexedFolderRecursive');
- var shouldNotIndex = indexer.isFolderUserMarked (folder);
-
- // Show a nice little "checked mark" if item is not supposed to be indexed
- if (shouldNotIndex)
- noindexing.setAttribute ('checked', 'true');
- else
- noindexing.setAttribute ('checked', 'false');
- noindexing.hidden = false;
-
- // Show the "remove" option if current folder is indexed
- if (indexer.isFolderIndexed (folder)) {
- removefolder.hidden = false;
- removefolderrecursive.hidden = false;
- } else {
- removefolder.hidden = true;
- removefolderrecursive.hidden = true;
- }
-
- // Show the separator
- var sep = document.getElementById ('folderPaneContext-trackersep-folder');
- sep.hidden = false;
- } catch (ex) {
- }
- }
-
- function allMarkedForExclusion (msgs)
- {
- var enum = msgs.Enumerate ();
-
- while (1) {
- var hdr = enum.currentItem ();
- if (!indexer.isHdrUserMarked (hdr))
- break;
-
- try {
- enum.next ();
- } catch (ex) {
- return true;
- }
- }
-
- return false;
- }
-
- function allMarkedAsNotIndexed (msgs)
- {
- var enum = msgs.Enumerate ();
-
- while (1) {
- var hdr = enum.currentItem ();
- if (indexer.isHdrIndexed (hdr))
- break;
-
- try {
- enum.next ();
- } catch (ex) {
- return true;
- }
- }
-
- return false;
- }
-
- function onIndexFillMessageMenu ()
- {
- // We don't generate the menu if we are disabled
- if (!settings.getBoolPref ('Enabled'))
- return;
-
- var messages = getSelectedMessages ();
- if (!messages)
- return;
-
- try {
- var removemessages = document.getElementById ('threadPaneContext-removeIndexedMessage');
- var noindexing = document.getElementById ('threadPaneContext-noindexing');
-
- // If all selected messages has the "do not index" flag, show the check mark. Otherwise don't.
- if (allMarkedForExclusion (messages))
- noindexing.setAttribute ('checked', 'true');
- else
- noindexing.setAttribute ('checked', 'false');
- noindexing.hidden = false;
-
- // We only show the "remove"-item if we have at least one indexed message
- removemessages.hidden = allMarkedAsNotIndexed (messages);
- } catch (ex) {
- }
- }
-
- function onRemoveIndexedFolder ()
- {
- try {
- var folder = getSelectedFolder ();
- if (!folder)
- return;
-
- // We remove folder non-recursive and ask if user marks should be removed as well
- gTrackerUnindex.RemoveFolder (folder, false, true);
- } catch (ex) {
- }
- }
-
- function onRemoveIndexedFolderRecursive ()
- {
- try {
- var folder = getSelectedFolder ();
- if (!folder)
- return;
-
- // We remove folder recursively and ask if user marks should be removed as well
- gTrackerUnindex.RemoveFolder (folder, true, true);
- } catch (ex) {
- }
- }
-
- function onRemoveIndexedMessage ()
- {
- try {
- var msgs = getSelectedMessages ();
- if (!msgs)
- return;
-
- // We remove messages and ask is user marks should be removed as well
- gTrackerUnindex.RemoveHdrs (msgs, true);
- } catch (ex) {
- }
- }
-
- function onNoFolderIndexing ()
- {
- try {
- var folder = getSelectedFolder ();
- if (!folder)
- return;
-
- folder.QueryInterface (Components.interfaces.nsIMsgFolder);
- var userMarked = indexer.isFolderUserMarked (folder);
- var queue = GetJsService ('@tracker-project.org/services/queue;1');
- if (userMarked) {
- indexer.resetFolder (folder, true, false, false);
- queue.addFolder (folder);
- } else
- indexer.markFolderAsUserMarked (folder);
- } catch (ex) {
- }
- }
-
- function setUserMarked (msgs, userMarked)
- {
- var done = false;
- var enum = msgs.Enumerate ();
-
- while (!done) {
- var hdr = enum.currentItem ();
-
- if (userMarked)
- indexer.markHdrAsUserMarked (hdr);
- else
- indexer.resetHdrUserMarked (hdr);
-
- try {
- enum.next ();
- } catch (ex) {
- done = true;
- }
- }
- }
-
- function onNoMessageIndexing ()
- {
- try {
- var msgs = getSelectedMessages ();
- if (!msgs)
- return;
-
- var userMarked = !allMarkedForExclusion (msgs);
- setUserMarked (msgs, userMarked);
-
- if (!userMarked) {
- var hdr = msgs.QueryElementAt (0, Components.interfaces.nsIMsgDBHdr);
- var queue = GetJsService ('@tracker-project.org/services/queue;1');
- queue.addHdr (hdr);
- }
-
- } catch (ex) {
- }
- }
-
- // The code below belongs to the "open-message-from-command-line"-code. The reason
- // why this code is placed here is because of the MsgOpenNewWindowForMessage-function,
- // which will do everything we want. This code will be removed once we have proper
- // support for opening from command line. This code is ugly...
- var observer = Components.classes['@mozilla.org/observer-service;1']
- .getService(Components.interfaces.nsIObserverService);
-
- var gTrackerCommandLineObserver = {
- observe: function (subject, topic, data)
- {
- if (!data)
- return;
-
- var messenger = Components.classes ['@mozilla.org/messenger;1']
- .getService (Components.interfaces.nsIMessenger);
- var hdr = messenger.msgHdrFromURI (data);
- var tree = null, currentIndex = -1;
-
- dump ("Opening message: " + hdr.folder.getUriForMsg (hdr) + "\n");
-
- // Save the index of the currently selected folder and switch to folder indexed
- // 0 (zero), which will always be a root folder.
- if(gFolderTree) {
- tree = GetFolderTree();
- currentIndex = tree.view.selection.currentIndex;
- tree.view.selection.select(0);
- }
-
- // Open the message
- MsgOpenNewWindowForMessage (data, hdr.folder.URI);
-
- // Switch back to the old folder (if any)
- if(currentIndex != -1) {
- tree.view.selection.select(currentIndex);
- }
- }
- };
-
- function getWindowCount ()
- {
- var ww = Components.classes ['@mozilla.org/embedcomp/window-watcher;1']
- .getService (Components.interfaces.nsIWindowWatcher);
- var enumerator = ww.getWindowEnumerator ();
- var count = 0;
-
- while (enumerator.hasMoreElements ()) {
- enumerator.getNext ();
- count++;
- }
-
- return count;
- }
-
- // Each window opened (including the windows displaying a message) will load the code in
- // this file due to the way they are overlayed. If each window is listening for new
- // messages that the user wants to display, then we'll get one new message window per
- // already opened window. For instance, if the user has a main window open as well as
- // writing a message and decides to display a message - two equal windows will pop-up.
- // We only listen in case we have one windows open to work around this issue.
- if (getWindowCount () == 1)
- observer.addObserver (gTrackerCommandLineObserver, 'tracker-open-uri', false);
-
- // Tell the world that we are done (mainly to make the "open from command line"-hack to work)
- observer.notifyObservers (null, 'tracker-loaded', null);
- ]]>
- </script>
-
- <!-- These menu options will show up when right-clicking a message -->
- <popup id="threadPaneContext"
- onpopupshowing="onIndexFillMessageMenu (); return fillThreadPaneContextMenu();">
- <menuseparator id="threadPaneContext-trackersep-message"/>
- <menuitem id="threadPaneContext-removeIndexedMessage"
- label="&trackermessageview.removemessage;"
- oncommand="onRemoveIndexedMessage ();"
- insertbefore="threadPaneContext-trackersep-message"
- hidden="true"/>
- <menuitem id="threadPaneContext-noindexing"
- label="&trackermessageview.noindexing;"
- oncommand="onNoMessageIndexing ();"
- insertafter="threadPaneContext-trackersep-message"
- type="checkbox"
- autocheck="false"
- hidden="true"/>
- </popup>
-
- <!-- These menu options will show up when right-clicking a folder -->
- <popup id="folderPaneContext"
- onpopupshowing="onIndexFillFolderMenu (); return fillFolderPaneContextMenu ();">
-
- <menuseparator id="folderPaneContext-trackersep-folder"
- insertafter="folderPaneContext-sep2"
- hidden="true"/>
- <menuitem id="folderPaneContext-removeIndexedFolder"
- label="&trackerfoldertree.removefolder;"
- oncommand="onRemoveIndexedFolder ();"
- insertafter="folderPaneContext-sep2"
- hidden="true"/>
- <menuitem id="folderPaneContext-removeIndexedFolderRecursive"
- label="&trackerfoldertree.removefolderrecursive;"
- oncommand="onRemoveIndexedFolderRecursive ();"
- insertafter="folderPaneContext-sep2"
- hidden="true"/>
- <menuitem id="folderPaneContext-noindexing"
- label="&trackerfoldertree.noindexing;"
- oncommand="onNoFolderIndexing ();"
- insertafter="folderPaneContext-sep2"
- hidden="true"
- type="checkbox"
- autocheck="false"/>
- </popup>
-
-</overlay>
-
diff --git a/extensions/thunderbird-extension/content/trackerMessenger.xul b/extensions/thunderbird-extension/content/trackerMessenger.xul
deleted file mode 100644
index 08deda24f..000000000
--- a/extensions/thunderbird-extension/content/trackerMessenger.xul
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-//
-// tracker.xul: Overlay for basic main window GUI items
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
--->
-
-<?xml-stylesheet href="chrome://tracker/skin/overlay.css" type="text/css"?>
-<?xml-stylesheet href="chrome://tracker/content/tracker.css" type="text/css"?>
-<!DOCTYPE overlay SYSTEM "chrome://tracker/locale/tracker.dtd">
-
-<overlay id="tracker-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <stringbundleset id="stringbundleset">
- <stringbundle id="bundle_tracker" src="chrome://tracker/locale/strings.properties"/>
- </stringbundleset>
-
- <script src="trackerUtils.js"/>
- <script src="trackerUnindex.js"/>
- <script src="trackerService.js"/>
-
- <script type="application/x-javascript">
- <![CDATA[
- var observer = Components.classes['@mozilla.org/observer-service;1']
- .getService(Components.interfaces.nsIObserverService);
- var gTrackerSettings = GetJsService ('@tracker-project.org/services/settings;1');
-
- function onTrackerLoad ()
- {
- observer.addObserver (gServiceObserver, 'tracker-service', false);
- observer.addObserver (gQueueObserver, 'tracker-queue', false);
- initService ();
- }
-
- function onTrackerUnload ()
- {
- observer.removeObserver (gServiceObserver, 'tracker-service');
- observer.removeObserver (gQueueObserver, 'tracker-queue');
- }
-
- function onShowSettings (event)
- {
- window.openDialog ('chrome://tracker/content/trackerPrefs.xul',
- 'PreferenceWindow',
- 'chrome,toolbar,modal=no,resizable=no',
- 'pref-indexing');
- }
-
- function onStatusbarClick (t)
- {
- var elem = document.getElementById ('tracker-icon');
-
- // We need to check if we are in error mode. If we are, we show a message box with warnings.
- // Otherwise we invert the running mode.
- if (elem.getAttribute ('status') == 'error') {
- var bundle = document.getElementById ('bundle_tracker');
-
- window.alert (getLastWarning ());
- setWarningStatus ();
- } else {
- // We invert current running mode
- var enabled = !gTrackerSettings.getBoolPref ('Enabled');
- gTrackerSettings.setBoolPref ('Enabled', enabled);
- }
- }
-
- // Update status of the little dog in the corner
- function setIndexingStatus (enabled)
- {
- var elem = document.getElementById ('tracker-icon');
- var bundle = document.getElementById ('bundle_tracker');
-
- // We do not change the icon in case it displays the "error" dog. The user needs to check
- // warnings in case they appear.
- if (elem.getAttribute ('status') == 'error' && getWarningCount () > 0)
- return;
-
- if (enabled) {
- elem.setAttribute ('status', 'enabled');
- elem.setAttribute ('tooltiptext', bundle.getString ('indexingEnabledTooltip'));
- } else {
- elem.setAttribute ('status', 'disabled');
- elem.setAttribute ('tooltiptext', bundle.getString ('indexingDisabledTooltip'));
- }
- }
-
- function setWarningStatus ()
- {
- var count = getWarningCount ();
-
- // Make sure that we have any warnings at all
- if (count == 0)
- return;
-
- var elem = document.getElementById ('tracker-icon');
- var bundle = document.getElementById ('bundle_tracker');
-
- elem.setAttribute ('status', 'error');
- elem.setAttribute ('tooltiptext', bundle.getFormattedString ('warningCountDescription', [count]));
- }
-
- var gServiceObserver = {
-
- observe: function (subject, topic, data)
- {
- // Act upon various interesting events
- if (data == 'update-enabled') // Indexing was enabled
- setIndexingStatus (true);
- else if (data == 'update-disabled') // Indexing was disabled
- setIndexingStatus (false);
- else if (data == 'new-warning') // A warning was added
- setWarningStatus ();
- else if (data == 'warnings-empty') // All warnings has been seen by the user {
- setIndexingStatus (gTrackerSettings.getBoolPref ('Enabled'));
- }
- };
-
- // This observer will listen for changes made to the queue. Why is this important?
- // Well... if main loop isn't running and something new ends up in the queue,
- // we must start the main loop to get that data out of the queue and into tracker.
- var gQueueObserver = {
-
- observe: function (subject, topic, data)
- {
- // We can safely exit if we are already running (and save some
- // cycles since we don't have to check if we are enabled every time
- // something is added to the queue).
- if (running)
- return;
-
- // Check if indexing is enabled
- if (!gTrackerSettings.getBoolPref ('Enabled'))
- return;
-
- // Enable main loop in case it's disabled
- if (!running)
- start ();
- }
- };
-
- // We need to ensure that the user interface has initialized before we do anything
- window.addEventListener ('load', function () { onTrackerLoad (); }, false);
- window.addEventListener ('unload', function () { onTrackerUnload (); }, false);
-
- ]]>
- </script>
-
- <!-- This will appear in the tools menu -->
- <menupopup id="taskPopup">
- <menuitem id="tracker-settings"
- label="&trackermain.settings;"
- oncommand="onShowSettings(event);"/>
- </menupopup>
-
- <!-- This gives the small icon in the bottom right corner -->
- <statusbar id="status-bar">
- <statusbarpanel id="tracker-icon"
- class="statusbarpanel-iconic"
- status="disabled"
- oncommand="onStatusbarClick (this);"/>
- </statusbar>
-
-</overlay>
-
diff --git a/extensions/thunderbird-extension/content/trackerPrefs.xul b/extensions/thunderbird-extension/content/trackerPrefs.xul
deleted file mode 100644
index 13ac3eb42..000000000
--- a/extensions/thunderbird-extension/content/trackerPrefs.xul
+++ /dev/null
@@ -1,332 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-//
-// trackerPrefs.xul: Preference dialog
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
--->
-
-<!DOCTYPE window SYSTEM "chrome://tracker/locale/tracker.dtd">
-
-<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-
-<prefwindow id="preference-window"
- title="&trackerprefs.title;"
- style="width: 350px"
- onload="load (); refreshStats ();"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <prefpane id="pref-indexing"
- label="&trackerprefs.indexing;"
- image="chrome://messenger/skin/preferences/advanced.png">
-
- <preferences>
- <preference id="pref-enabled" name="tracker.enabled" type="bool"/>
- <preference id="pref-batchcount" name="tracker.index.batch_count" type="int"/>
- <preference id="pref-queuecount" name="tracker.index.queue_count" type="int"/>
- <preference id="pref-delay" name="tracker.index.delay" type="int"/>
- </preferences>
- <checkbox label="&trackerprefs.enabled;" preference="pref-enabled"/>
- <spacer height="5"/>
- <groupbox flex="0">
- <caption>
- <label value="&trackerprefs.speedcaption;"/>
- </caption>
- <radiogroup id="speed-group">
- <radio id="0" label="&trackerprefs.veryslow;" oncommand="onSpeedChange (this);"/>
- <radio id="1" label="&trackerprefs.slow;" oncommand="onSpeedChange (this);"/>
- <radio id="2" label="&trackerprefs.normal; &trackerprefs.recommended;" oncommand="onSpeedChange (this);"/>
- <radio id="3" label="&trackerprefs.fast;" oncommand="onSpeedChange (this);"/>
- <radio id="4" label="&trackerprefs.veryfast;" oncommand="onSpeedChange (this);"/>
- <radio id="5" label="&trackerprefs.instant; &trackerprefs.notrecommended;" oncommand="onSpeedChange (this);"/>
- <radio id="6" label="&trackerprefs.custom;" oncommand="onSpeedChange (this);"/>
- </radiogroup>
- </groupbox>
- <groupbox id='custom-settings' flex="0" style="visibility: hidden;">
- <caption>
- <label value="&trackerprefs.customcaption;"/>
- </caption>
- <grid>
- <columns>
- <column flex="1"/>
- <column flex="0"/>
- </columns>
-
- <rows>
- <row>
- <label value="&trackerprefs.batchcount;"/>
- <textbox preference="pref-batchcount"/>
- </row>
- <row>
- <label value="&trackerprefs.queuecount;"/>
- <textbox preference="pref-queuecount"/>
- </row>
- <row>
- <label value="&trackerprefs.delay;"/>
- <textbox preference="pref-delay"/>
- </row>
- </rows>
- </grid>
- </groupbox>
- </prefpane>
- <prefpane id="pref-privacy"
- label="&trackerprefs.privacy;"
- image="chrome://messenger/skin/preferences/privacy.png">
-
- <preferences>
- <preference id="pref-local" name="tracker.enable.local" type="bool"/>
- <preference id="pref-imap" name="tracker.enable.imap" type="bool"/>
- <preference id="pref-pop" name="tracker.enable.pop" type="bool"/>
- <preference id="pref-mailspool" name="tracker.enable.mailspool" type="bool"/>
- <preference id="pref-news" name="tracker.enable.news" type="bool"/>
- <preference id="pref-rss" name="tracker.enable.rss" type="bool"/>
- </preferences>
- <groupbox flex="0">
- <caption>
- <label value="&trackerprefs.sourcescaption;"/>
- </caption>
- <vbox flex="1">
- <checkbox label="&trackerprefs.local;" preference="pref-local"/>
- <checkbox label="&trackerprefs.imap;" preference="pref-imap"/>
- <checkbox label="&trackerprefs.pop;" preference="pref-pop"/>
- <checkbox label="&trackerprefs.mailspool;" preference="pref-mailspool"/>
- <checkbox label="&trackerprefs.news;" preference="pref-news"/>
- <checkbox label="&trackerprefs.rss;" preference="pref-rss"/>
- </vbox>
- </groupbox>
- <groupbox flex="0">
- <caption>
- <label value="&trackerprefs.contentcaption;"/>
- </caption>
- <vbox flex="1">
- <button label="&trackerprefs.delindex;" oncommand="onDelIndex ();"/>
- <button label="&trackerprefs.unindex;" oncommand="onUnindex ();"/>
- </vbox>
- </groupbox>
- </prefpane>
- <prefpane id="pref-stats"
- label="&trackerprefs.status;"
- image="chrome://messenger/skin/preferences/general.png">
- <groupbox flex="0">
- <caption>
- <label value="&trackerprefs.stats;"/>
- </caption>
- <grid>
- <columns>
- <column flex="0"/>
- <column flex="1"/>
- </columns>
- <rows>
- <row>
- <label value="&trackerprefs.indexingstatus;"/>
- <vbox id="indexingstatus"/>
- </row>
- <row>
- <label value="&trackerprefs.itemsadded;"/>
- <label id="itemsadded"/>
- </row>
- <row>
- <label value="&trackerprefs.itemsremoved;"/>
- <label id="itemsremoved"/>
- </row>
- <row>
- <label value="&trackerprefs.itemsqueued;"/>
- <label id="itemsqueued"/>
- </row>
- </rows>
- </grid>
- </groupbox>
- <hbox flex="0" pack="end">
- <button label="&trackerprefs.refresh;" oncommand="refreshStats ();"/>
- </hbox>
- </prefpane>
-
- <stringbundleset id="stringbundleset">
- <stringbundle id="bundle_tracker" src="chrome://tracker/locale/strings.properties"/>
- </stringbundleset>
-
- <script src="trackerUtils.js"/>
- <script src="trackerUnindex.js"/>
-
- <script type="application/x-javascript">
- <![CDATA[
- const Cc = Components.classes;
- const Ci = Components.interfaces;
-
- // These are arbitrary values. We should really tweak these values.
- const TRACKER_INDEX_SPEED = new Array (
- // [Batch count, index delay, queue count]
- [1, 60, 10], // Very slow
- [5, 30, 5], // Slow
- [10, 10, 10], // Normal
- [20, 5, 20], // Fast
- [100, 1, 100], // Very fast
- [9999999, 1, 1] // Instant
- );
-
- var settings = GetJsService ('@tracker-project.org/services/settings;1');
-
- function load ()
- {
-
- var batch = settings.getIntPref ('IndexBatchCount');
- var queue = settings.getIntPref ('IndexQueueCount');
- var delay = settings.getIntPref ('IndexDelay');
- var group = document.getElementById ('speed-group');
-
- window.setTimeout ('autoUpdate ()', 1000);
-
- for (var i = 0; i < TRACKER_INDEX_SPEED.length; i++) {
- var speed = TRACKER_INDEX_SPEED [i];
-
- if (batch == speed [0] && delay == speed [1] && queue == speed [2]) {
- group.selectedIndex = i;
- return;
- }
- }
-
- group.selectedIndex = TRACKER_INDEX_SPEED.length;
- var custom = document.getElementById ('custom-settings');
- custom.setAttribute ('style', 'visibility: visible;');
- }
-
- function autoUpdate ()
- {
- refreshStats ();
- window.setTimeout ('autoUpdate ()', 1000);
- }
-
- function onSpeedChange (radio)
- {
- var element = document.getElementById ('custom-settings');
- var pref = Cc ['@mozilla.org/preferences-service;1'].getService (Ci.nsIPrefBranch);
- var batchCount = settings.getIntPref ('IndexBatchCount');
- var queueCount = settings.getIntPref ('IndexQueueCount');
- var delay = settings.getIntPref ('IndexDelay');
-
- if (parseInt (radio.id) >= 0 && parseInt (radio.id) <= 5) {
- var speed = TRACKER_INDEX_SPEED [radio.id];
- batchCount = speed [0];
- delay = speed [1];
- queueCount = speed [2];
- element.setAttribute ('style', 'visibility: hidden;');
- } else
- element.setAttribute ('style', 'visibility: visible;');
-
- // Update with new values
- pref.setIntPref ('tracker.index.batch_count', batchCount);
- pref.setIntPref ('tracker.index.queue_count', queueCount);
- pref.setIntPref ('tracker.index.delay', delay);
- }
-
- function onDelIndex ()
- {
- gTrackerUnindex.RemoveEverything (true);
- }
-
- function onUnindex ()
- {
- gTrackerUnindex.UnindexEverything (true);
- }
-
- function clearIndexingStatus ()
- {
- var elem = document.getElementById ('indexingstatus');
-
- while (elem.hasChildNodes ())
- elem.removeChild (elem.firstChild);
- }
-
- function createDescription (text)
- {
- var desc = document.createElement ('description');
- var text = document.createTextNode (text);
- desc.appendChild (text);
- return desc;
- }
-
- function refreshStats ()
- {
- var bundle = document.getElementById ('bundle_tracker');
- var status = document.getElementById ('indexingstatus');
- var added = document.getElementById ('itemsadded');
- var removed = document.getElementById ('itemsremoved');
- var queued = document.getElementById ('itemsqueued');
- var trackerQueue = GetJsService ('@tracker-project.org/services/queue;1');
- var remaining = new Array ();
-
- added.value = trackerQueue.totalAdded;
- removed.value = trackerQueue.totalRemoved;
- queued.value = trackerQueue.getQueueCount ();
-
- // Figure out if all mailboxes have been indexed
- try {
- var indexedFolders = 0;
- var totalFolders = 0;
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
- var accountmanager = Cc ['@mozilla.org/messenger/account-manager;1']
- .getService (Ci.nsIMsgAccountManager);
- var accounts = accountmanager.accounts;
-
- clearIndexingStatus ();
- for (var i = 0; i < accounts.Count (); i++) {
- var account = accounts.QueryElementAt (i, Ci.nsIMsgAccount);
- var allFolders = Cc ['@mozilla.org/supports-array;1']
- .createInstance (Ci.nsISupportsArray);
- account.incomingServer.rootFolder.ListDescendents (allFolders);
-
- for (var j = 0; j < allFolders.Count (); j++) {
- var folder = allFolders.QueryElementAt (j, Ci.nsIMsgFolder);
-
- if (indexer.isFolderIndexed (folder)
- || !indexer.shouldIndexFolder (folder)
- || folder.getTotalMessages (false) == 0)
- indexedFolders++;
- else
- remaining [remaining.length] = folder.prettyName;
-
- totalFolders++;
- }
- }
-
- if (indexedFolders == totalFolders)
- status.appendChild (createDescription (bundle.getString ('indexIdle')));
- else {
- var status_str = bundle.getFormattedString
- ('indexWorking', [ totalFolders - indexedFolders ]);
- status.appendChild (createDescription (status_str));
-
- for (var i = 0; i < (remaining.length > 5 ? 5 : remaining.length); i++)
- status.appendChild (createDescription (remaining [i]));
- }
-
- } catch (ex) {
- status.value = bundle.getString ('failedGetStatus');
- }
- }
- ]]>
- </script>
-</prefwindow>
-
diff --git a/extensions/thunderbird-extension/content/trackerQueue.js b/extensions/thunderbird-extension/content/trackerQueue.js
deleted file mode 100644
index dd5b4b0b2..000000000
--- a/extensions/thunderbird-extension/content/trackerQueue.js
+++ /dev/null
@@ -1,256 +0,0 @@
-//
-// trackerQueue.js: Queue component implementation
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-var queueAdd = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
-var queueRemove = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
-var observerService = Components.classes ['@mozilla.org/observer-service;1']
- .getService(Components.interfaces.nsIObserverService);
-
-function notify (data)
-{
- var self = GetJsService ('@tracker-project.org/services/queue;1');
- observerService.notifyObservers (self, "tracker-queue", data);
-}
-
-Component.prototype = {
-
- reload: function() {
- loader.loadSubScript(SOURCE, this.__proto__);
- },
-
- QueryInterface: function(aIID) {
- if(!aIID.equals(INTERFACE) && !aIID.equals(Ci.nsISupports))
- throw Cr.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- totalAdded: 0,
- totalRemoved: 0,
-
- init: function ()
- {
- observerService.addObserver (gTrackerQueueObserver, 'quit-application', null);
- },
-
- // obj is either nsIMsgDBHdr or nsIMsgFolder
- add: function (obj)
- {
- if (queueAdd.GetIndexOf (obj) != -1)
- return;
-
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (obj instanceof Components.interfaces.nsIMsgDBHdr)
- indexer.markHdrAsIndexed (obj);
- else if (obj instanceof Components.interfaces.nsIMsgFolder)
- indexer.markFolderAsIndexed (obj);
- else
- return;
-
- queueAdd.AppendElement (obj);
- this.totalAdded++;
- notify ('add');
- },
-
- remove: function (obj)
- {
- if (queueRemove.GetIndexOf (obj) != -1)
- return;
-
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (obj instanceof Components.interfaces.nsIMsgDBHdr)
- indexer.resetHdr (obj, false);
- else if (obj instanceof Components.interfaces.nsIMsgFolder)
- indexer.resetFolder (obj, false, false, false);
- else
- return;
-
- queueRemove.AppendElement (obj);
- this.totalRemoved++;
- notify ('remove');
- },
-
- // add, remove* and move* all return true if the object was added to the queue. If the object was
- // rejected by a filter, then they will return false. A filter in this sense is if a mail is marked
- // to be indexed or not (by the user).
-
- // Add a new header for inclusion in the tracker index
- addHdr: function (hdr)
- {
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- // Check if we should index this
- if (!indexer.shouldIndexHdr (hdr) || !indexer.shouldIndexFolder (hdr.folder))
- return false;
-
- this.add (hdr);
-
- this.process ();
-
- return true;
- },
-
- removeHdr: function (hdr)
- {
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (hdr instanceof Components.interfaces.nsIMsgDBHdr) {
- this.remove (hdr);
-
- this.process ();
-
- return true;
- }
-
- return false;
- },
-
- // Basic purpose of this function is to make the main loop run which eventually will pick it up
- addFolder: function (folder)
- {
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (indexer.isFolderIndexed (folder))
- return;
-
- notify ('add-folder');
- },
-
- removeFolder: function (folder)
- {
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (folder instanceof Components.interfaces.nsIMsgFolder) {
- this.remove (folder);
- this.process ();
-
- return true;
- }
-
- return false;
- },
-
- moveHdr: function (oldHdr, newHdr)
- {
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (!indexer.shouldIndexHdr (oldHdr) || !indexer.shouldIndexHdr (newHdr))
- return false;
-
- this.remove (oldHdr);
- this.add (newHdr);
- this.processs ();
-
- return true;
- },
-
- moveFolder: function (oldFolder, newFolder)
- {
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- if (!indexer.shouldIndexFolder (oldFolder) || !indexer.shouldIndexFolder (newFolder))
- return false;
-
- this.remove (oldFolder);
- this.add (newFolder);
- this.process ();
-
- return true;
- },
-
- // This process function will make sure that we have enough objects in the queue before processing
- process: function ()
- {
- var settings = GetJsService ('@tracker-project.org/services/settings;1');
-
- if (this.getQueueCount () < settings.getIntPref ('IndexQueueCount'))
- return;
-
- this.forceProcess ();
- },
-
- // No object count is done here, mainly so that the queue can be processed at any given time
- forceProcess: function ()
- {
- var count = this.getQueueCount ();
- if (count == 0)
- return;
-
- var indexer = GetJsService ('@tracker-project.org/services/indexer;1');
-
- // Add new items to the tracker database
- for (var i = 0; i < queueAdd.Count (); i++) {
- var msg = queueAdd.GetElementAt (i).QueryInterface (Components.interfaces.nsIMsgDBHdr);
- if (!msg)
- continue;
- indexer.addToIndex (msg);
- }
-
- // Remove old items from the tracker database
- for (var i = 0; i < queueRemove.Count (); i++) {
- var obj = queueRemove.GetElementAt (i);
-
- if (obj instanceof Components.interfaces.nsIMsgDBHdr) {
- obj.QueryInterface (Components.interfaces.nsIMsgDBHdr);
- indexer.dropHdrFromIndex (obj);
- } else if (obj instanceof Components.interfaces.nsIMsgFolder) {
- obj.QueryInterface (Components.interfaces.nsIMsgFolder);
- indexer.dropFolderFromIndex (obj);
- }
- }
-
- queueAdd.Clear ();
- queueRemove.Clear ();
-
- dump ("Done processing " + count + " items\n");
- },
-
- getQueueCount: function ()
- {
- return queueAdd.Count () + queueRemove.Count ();
- }
-
-};
-
-// This observer will check if the application is about to quit and process any remaining
-// items in the queue when it does
-var gTrackerQueueObserver = {
-
- observe: function (subject, topic, data)
- {
- // Just process whatever is left in the queue
- try {
- var queue = GetJsService ('@tracker-project.org/services/queue;1');
- queue.forceProcess ();
- observerService.removeObserver (gTrackerQueueObserver, 'quit-application');
- } catch (ex) {
- }
- }
-};
-
diff --git a/extensions/thunderbird-extension/content/trackerService.js b/extensions/thunderbird-extension/content/trackerService.js
deleted file mode 100644
index 3503a02c9..000000000
--- a/extensions/thunderbird-extension/content/trackerService.js
+++ /dev/null
@@ -1,521 +0,0 @@
-//
-// trackerService.js: This is the entry point of the extension
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-var tracker_init = false;
-var gTrackerSettings = null;
-var gTrackerIndexer = null;
-var gTrackerQueue = null;
-var gTrackerTimer = Components.classes ["@mozilla.org/timer;1"]
- .createInstance (Components.interfaces.nsITimer);
-
-var running = false;
-var warnings = new Array (); // We will only hold javascript strings here
-
-function notify (data)
-{
- var observer = Components.classes['@mozilla.org/observer-service;1']
- .getService(Components.interfaces.nsIObserverService);
- observer.notifyObservers (null, "tracker-service", data);
-}
-
-function initService ()
-{
- if (tracker_init)
- return;
-
- dump ("Tracker init started\n");
-
- // Set our globally needed variables
- gTrackerSettings = GetJsService ('@tracker-project.org/services/settings;1');
- gTrackerIndexer = GetJsService ('@tracker-project.org/services/indexer;1');
- gTrackerQueue = GetJsService ('@tracker-project.org/services/queue;1');
- tracker_init = true;
-
- // Load settings
- gTrackerSettings.init ();
-
- dump ('Adding settings observer...');
- var prefbranch = Components.classes ['@mozilla.org/preferences-service;1']
- .getService (Components.interfaces.nsIPrefBranch2);
- prefbranch.addObserver ('tracker', gSettingObserver, false);
- dump ("Done.\n");
-
- var enabled = gTrackerSettings.getBoolPref ('Enabled');
- if (!enabled) {
- dump ("Tracker backend is now disabled\n");
- } else {
- // Make sure we catch changes
- gTrackerDataTracker.RegisterSelf ();
-
- // The following timeout handler will initiate the indexing process by locating data that
- // needs to be indexed. We delay a while go give Thunderbird some time to settle.
- dump ("Tracker extension is now enabled\n");
- restart (3);
- }
-
- notify (running ? 'update-enabled' : 'update-disabled');
- dump ("Tracker init ended\n");
-}
-
-function start ()
-{
- if (!tracker_init)
- initService ();
-
- gTrackerTimer.cancel ();
- gTrackerTimer.initWithCallback (gTrackerMainLoop,
- gTrackerSettings.getIntPref ('IndexDelay') * 1000,
- Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
- running = true;
-}
-
-function stop (disable)
-{
- if (!tracker_init)
- initService ();
-
- gTrackerTimer.cancel ();
- running = false;
-
- if (disable) {
- try {
- gTrackerSettings.setBoolPref ('Enabled', false);
- } catch (ex) {
- dump ("Failed to disable tracker extension!\n");
- }
- }
-}
-
-function restart (seconds)
-{
- if (!tracker_init)
- initService ();
-
- gTrackerTimer.cancel ();
- gTrackerTimer.initWithCallback (gTrackerMainLoop,
- seconds * 1000,
- Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
- running = true;
-}
-
-function addWarning (text, params, length)
-{
- if (!text)
- return;
-
- var bundleService = Components.classes ['@mozilla.org/intl/stringbundle;1']
- .getService (Components.interfaces.nsIStringBundleService);
- var bundle = bundleService.createBundle ('chrome://tracker/locale/strings.properties');
-
- try {
- if (params == null)
- warnings [warnings.length] = bundle.GetStringFromName (text);
- else
- warnings [warnings.length] = bundle.formatStringFromName (text, params, length);
- } catch (ex) {
- warnings [warnings.length] = "Failed to add error message! You should report this as a bug. Details: " + ex;
- }
-
- notify ('new-warning');
-}
-
-function getLastWarning ()
-{
- var str = null;
-
- for (var i = 0; i < warnings.length; i++) {
- if (warnings [i] != null) {
- str = warnings [i];
- warnings [i] = null;
- break;
- }
- }
-
- // Make sure we notify if we have no more warnings
- if (getWarningCount () == 0) {
- notify ('warnings-empty');
- warnings = new Array ();
- }
-
- return str;
-}
-
-function getWarningCount ()
-{
- var count = 0;
-
- for (var i = 0; i < warnings.length; i++) {
- if (warnings [i] != null)
- count++;
- }
-
- return count;
-}
-
-function clearWarnings ()
-{
- warnings = new Array ();
- notify ('warnings-empty');
-}
-
-var gTrackerMainLoop = {
-
- notify: function (timer)
- {
- // Make sure we have a destination directory. If it doesn't exists, create it and mark
- // everything as not indexed.
- try {
- // Check if destination directory exists
- var dir = Components.classes ["@mozilla.org/file/local;1"]
- .createInstance (Components.interfaces.nsILocalFile);
- dir.initWithPath (gTrackerSettings.getCharPref ('DestinationDirectory'));
- if (dir.exists ()) {
- if (!dir.isDirectory ()) {
- dump ("Destination directory exists but is not a directory! Bailing out!\n");
- addWarning ('destinationDirInvalidType', null, 0);
- stop (true);
- return;
- }
- }
-
- // We need to create the ToIndex directory in case it doesn't exist
- dir.initWithPath (gTrackerSettings.getCharPref ('DestinationDirectory') + '/ToIndex');
- if (!dir.exists ()) {
- // We create this directory and mark all content as not indexed
- dir.create (Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
- gTrackerUnindex.UnindexEverything (false);
- } else if (dir.isFile ()) {
- dump ("The ToIndex directory exists but is not a directory!\n");
- addWarning ('toIndexDirInvalidType', null, 0);
- stop (true);
- return;
- } else if (!dir.isWritable ()) {
- dump ("The ToIndex directory exists but is not writable!\n");
- addWarning ('toIndexDirectoryLackPermission', null, 0);
- stop (true);
- return;
- }
- // Commented, if the directory does not exists it will be created by plugin
- // } else {
- // dump ("Destination directory does not exist!\n");
- // addWarning ('destinationDirectoryNoExist', null, 0);
- // stop (true);
- // return;
- // }
- } catch (ex) {
- dump ("Failed to create ToIndex directory! Bailing out! (" + ex + ")\n");
- addWarning ('failedCreateToIndexDir', [ex], 1);
- stop (true);
- return;
- }
-
- // Index next set
- try {
- gTrackerDataCollector.Process ();
- } catch (ex) {
- dump ("Error while indexing: " + ex + "\n");
- addWarning ('errorWhileIndexing', [ex], 1);
- }
-
- gTrackerTimer.delay = gTrackerSettings.getIntPref ('IndexDelay') * 1000;
- }
-};
-
-// We use this observer to check if we have been enabled or disabled and if we should restart
-// the main loop in case indexing speed changed. We also make sure the GUI part gets to know this
-// so that the little dog icon can be updated.
-var gSettingObserver = {
-
- observe: function (subject, topic, data)
- {
- var branch = subject.QueryInterface (Components.interfaces.nsIPrefBranch);
-
- if (data == 'tracker.enabled') {
- var enabled = branch.getBoolPref (data);
-
- // Enable or disabled depending on new status
- if (enabled) {
- gTrackerDataTracker.RegisterSelf ();
- restart (3);
- dump ("Tracker extension is now enabled\n");
- } else {
- gTrackerDataTracker.UnregisterSelf ();
- stop (true);
- dump ("Tracker extension is now disabled\n");
- }
-
- notify (running ? 'update-enabled' : 'update-disabled');
- } else if (data == 'tracker.index.delay') {
- // In case delay time changed, restart mainloop to get immediate effect. We need to get
- // the new value from included branch as it may not be updated in gTrackerSettings yet.
- restart (branch.getIntPref ('tracker.index.delay'));
- }
- }
-};
-
-var gTrackerDataTracker = {
-
- Notifications: Components.classes ['@mozilla.org/messenger/msgnotificationservice;1']
- .getService(Components.interfaces.nsIMsgFolderNotificationService),
-
- RegisterSelf: function ()
- {
- dump ('Registering tracker data tracker...');
- this.Notifications.removeListener (this);
- this.Notifications.addListener (this);
- dump ("Done.\n");
- },
-
- UnregisterSelf: function ()
- {
- dump ('Unregistering tracker data tracker...');
- this.Notifications.removeListener (this);
- dump ("Done.\n");
- },
-
- //
- // Below are the functios that will get all updates
- //
-
- // Message added
- itemAdded: function (item)
- {
- if (!item)
- return;
-
- dump ("Adding new messages and restarting loop\n");
- restart (10);
-
- // New approach here: mark folder as not indexed and let main loop find new messages.
- // Doing it this way will make sure we don't hammer the system since we take
- // advantage of the indexing queue.
- try {
- var hdr = item.QueryInterface (Components.interfaces.nsIMsgDBHdr);
- if (!hdr)
- return;
-
- gTrackerIndexer.resetFolder (hdr.folder, false, false, false);
- } catch (ex) {
- }
- },
-
- // Message _or_ folder removed
- itemDeleted: function (item)
- {
- dump ("Removing message(s) or folder and restarting loop\n");
- restart (10);
- if (item instanceof Components.interfaces.nsIMsgDBHdr) {
- gTrackerQueue.removeHdr (item)
- } else if (item instanceof Components.interfaces.nsIMsgFolder) {
- gTrackerQueue.removeFolder (item)
- }
- },
-
- itemMoveCopyCompleted: function (move, items, dest)
- {
- dump ("Moving/copying message(s)/folder and restarting loop\n");
- restart (10);
-
- // There can be at most one folder in "items", so we check for that
- var folder = items.GetElementAt (0);
- if (folder instanceof Components.interfaces.nsIMsgFolder) {
-
- // We have a folder. This is an ugly solution...
- var finished = false;
- var enumerator = dest.GetSubFolders ();
- while (!finished) {
- var f = enumerator.currentItem ().QueryInterface (Components.interfaces.nsIMsgFolder);
- if (f.name == folder.name) {
- // We do this recursively to ensure all sub-content are re-indexed too
- gTrackerIndexer.resetFolder (f, false, true, true);
- break;
- }
-
- try { enumerator.next (); }
- catch (ex) { finished = true; }
- }
-
- // If we moved the folder, then we also have to remove the source folder. Otherwise
- // we'll end up with messages and folders that doesn't exist
- if (move)
- gTrackerQueue.removeFolder (folder);
- } else {
- // We have a bunch of messages. Reset all messages.
- for (var i = 0; i < items.Count (); i++) {
- var message = items.QueryElementAt (i, Components.interfaces.nsIMsgDBHdr);
- gTrackerIndexer.resetHdr (message, false);
- }
-
- // Also make sure we reset the destination folder, otherwise the new messages
- // won't be caught by the main loop
- gTrackerIndexer.resetFolder (dest, false, false, true);
- }
- },
-
- folderRenamed: function (oldFolder, newFolder)
- {
- dump ("Renaming folder and restarting loop\n");
- restart (10);
- gTrackerQueue.moveFolder (oldFolder, newFolder);
- },
-
- itemEvent: function (item, event, data)
- {
- }
-};
-
-var gTrackerDataCollector = {
-
- GetNextFolder: function ()
- {
- var gAccountManager = Components.classes ['@mozilla.org/messenger/account-manager;1']
- .getService (Components.interfaces.nsIMsgAccountManager);
- var accounts = gAccountManager.accounts;
-
- for (var i = 0; i < accounts.Count (); i++) {
- var account = accounts.QueryElementAt (i, Components.interfaces.nsIMsgAccount);
-
- // This check the overall type
- if (!gTrackerIndexer.shouldIndexAccount (account))
- continue;
- else if (!account.incomingServer) { // Invalid accounts might exist for some reason
- var email = "Unknown";
-
- if (account.defaultIdentity)
- email = account.defaultIdentity.email;
-
- dump (account.key + ' does not have an incoming server! Sender address: ' + email + "\n");
- continue;
- }
-
- var allFolders = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
- account.incomingServer.rootFolder.ListDescendents (allFolders);
-
- for (var j = 0; j < allFolders.Count (); j++) {
- var folder = allFolders.QueryElementAt (j, Components.interfaces.nsIMsgFolder);
-
- // We don't bother if there's nothing to index
- if (folder.getTotalMessages (false) == 0)
- continue;
-
- // We only need to index a folder if it isn't already indexed and if the user
- // hasn't explicitly excluded it
- if (!gTrackerIndexer.isFolderIndexed (folder) && gTrackerIndexer.shouldIndexFolder (folder))
- return folder;
- }
- }
-
- return null;
- },
-
- // Some times Thunderbird lists "invalid" folders. An invalid folder is a folder where all messages have
- // been downloaded but the mork database is not available. This probably only happen if a user is messing
- // around with the file structure manually.
- ValidFolder: function ()
- {
- var filePath = this.CurrentFolder.path.unixStyleFilePath + '.msf';
-
- try {
- var file = Components.classes ['@mozilla.org/file/local;1']
- .createInstance (Components.interfaces.nsILocalFile);
- if (!file)
- return false;
-
- file.initWithPath (filePath);
- } catch (ex) {
- return false;
- }
-
- return file.exists ();
- },
-
- // Add new mails to the indexing queue
- Process: function ()
- {
- // If we don't have a folder available at this time, get next available
- if (!this.CurrentFolder)
- this.CurrentFolder = this.GetNextFolder ();
-
- // Note that we don't have any folders left to index if GetNextFolder returned null
- if (!this.CurrentFolder) {
- gTrackerQueue.forceProcess ();
- stop (false);
- return;
- }
-
- dump ('Processing messages in ' + this.CurrentFolder.prettyName + "\n");
-
- // We have a valid folder to enumerate over, make sure we have a valid enumerator as well
- if (this.CurrentEnumerator == null) {
- try {
- this.CurrentEnumerator = this.CurrentFolder.getMessages (null);
- } catch (ex) {
- // Only display the error message to the user in case the folder is valid and
- // messages could not be listed
- if (this.ValidFolder ()) {
- dump ('Failed to list messages in ' + this.CurrentFolder.prettyName + ': ' + ex + "\n");
- addWarning ('failedListingMessages', [this.CurrentFolder.prettyName, ex], 2);
- }
- gTrackerIndexer.markFolderAsIndexed (this.CurrentFolder);
- this.CurrentFolder = null;
- return;
- }
- }
-
- // Process items. We skip already indexed items.
- var batchCounter = gTrackerSettings.getIntPref ('IndexBatchCount');
- while (batchCounter > 0 && this.CurrentEnumerator.hasMoreElements ()) {
- var hdr = this.CurrentEnumerator.getNext ().QueryInterface (Components.interfaces.nsIMsgDBHdr);
- if (!hdr || gTrackerIndexer.isHdrIndexed (hdr))
- continue;
-
- // We only count down the counter in case we actually did add the message (since a
- // filter could have picked this up)
- if (gTrackerQueue.addHdr (hdr))
- batchCounter--;
- }
-
- // We might have missed items in case the database content changed, so we set the enumerator
- // to null to make sure we enumerate the same database again. We keep doing this until
- // batchCounter does not change, this way we'll know that everything in this mailbox has
- // been indexed and that we can move on.
- if (!this.CurrentEnumerator.hasMoreElements ()) {
- // We are done and mark this folder to reflect this. Doing so will make it a lot faster
- // finding not already indexed folders and we don't have to keep track of this somewhere
- // else. It's also stored across sessions.
- gTrackerIndexer.markFolderAsIndexed (this.CurrentFolder);
- this.CurrentFolder.getMsgDatabase (null).Commit (1);
- dump ('Finished indexing ' + this.CurrentFolder.prettyName + "\n");
- this.CurrentFolder = null;
- }
- this.CurrentEnumerator = null;
- },
-
- CurrentFolder: null,
- CurrentEnumerator: null
-};
-
diff --git a/extensions/thunderbird-extension/content/trackerSettings.js b/extensions/thunderbird-extension/content/trackerSettings.js
deleted file mode 100644
index a7bd96ea0..000000000
--- a/extensions/thunderbird-extension/content/trackerSettings.js
+++ /dev/null
@@ -1,207 +0,0 @@
-//
-// trackerSettings.js: A convenient way for accessing all tracker settings
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-var prefs = Components.classes ['@mozilla.org/preferences-service;1']
- .getService (Components.interfaces.nsIPrefBranch);
-var environment = Components.classes ['@mozilla.org/process/environment;1']
- .getService (Components.interfaces.nsIEnvironment);
-
-// We store all available settings here together with access key, default values and type
-const TRACKER_SETTINGS = new Array (
- ['tracker.enabled', 'Enabled', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.destination.directory', 'DestinationDirectory', getDestinationDirectory (), Components.interfaces.nsIPrefBranch.PREF_STRING],
- ['tracker.index.batch_count', 'IndexBatchCount', 10, Components.interfaces.nsIPrefBranch.PREF_INT],
- ['tracker.index.queue_count', 'IndexQueueCount', 10, Components.interfaces.nsIPrefBranch.PREF_INT],
- ['tracker.index.delay', 'IndexDelay', 1, Components.interfaces.nsIPrefBranch.PREF_INT],
- ['tracker.enable.imap', 'EnableImap', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.enable.pop', 'EnablePop', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.enable.rss', 'EnableRss', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.enable.contacts', 'EnableContacts', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.enable.news', 'EnableNews', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.enable.mailspool', 'EnableMailspool', true, Components.interfaces.nsIPrefBranch.PREF_BOOL],
- ['tracker.enable.local', 'EnableLocal', true, Components.interfaces.nsIPrefBranch.PREF_BOOL]
-);
-
-var loadedPrefs = new Array ();
-
-// The .tracker directory is normally stored in $HOME, but this can be overriden by using the
-// $TRACKER_STORAGE environment variable. $HOME can also be overriden by $TRACKER_HOME.
-function getDestinationDirectory ()
-{
- var directory = '/ThunderbirdEmails';
- var trackerStorage = environment.get ('TRACKER_STORAGE');
-
- if (trackerStorage)
- directory = trackerStorage + directory;
- else {
- var trackerHome = environment.get ('TRACKER_HOME');
- if (trackerHome)
- directory = trackerHome + '/.tracker/' + directory;
- else
- directory = environment.get ('HOME') + '/.xesam/' + directory;
- }
-
- return directory;
-}
-
-Component.prototype = {
-
- reload: function() {
- loader.loadSubScript(SOURCE, this.__proto__);
- },
-
- QueryInterface: function(aIID) {
- if(!aIID.equals(INTERFACE) && !aIID.equals(Ci.nsISupports))
- throw Cr.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- init: function ()
- {
- // Load settings
- this.forceLoad ();
-
- // Make sure we catch updates as we should
- var prefbranch = Components.classes ['@mozilla.org/preferences-service;1']
- .getService (Components.interfaces.nsIPrefBranch2);
- prefbranch.removeObserver ('tracker', gObserver);
- prefbranch.addObserver ('tracker', gObserver, false);
- },
-
- // Use this to force a preference read
- forceLoad: function ()
- {
- for (var i = 0; i < TRACKER_SETTINGS.length; i++) {
- var val = TRACKER_SETTINGS [i] [2];
-
- try {
- var type = TRACKER_SETTINGS [i] [3], domain = TRACKER_SETTINGS [i] [0];
- if (type == Components.interfaces.nsIPrefBranch.PREF_BOOL)
- val = prefs.getBoolPref (domain);
- else if (type == Components.interfaces.nsIPrefBranch.PREF_INT)
- val = prefs.getIntPref (domain);
- else if (type == Components.interfaces.nsIPrefBranch.PREF_STRING)
- val = prefs.getCharPref (domain);
- } catch (ex) {
- }
-
- loadedPrefs [TRACKER_SETTINGS [i] [1]] = val;
- }
- },
-
- getBoolPref: function (prefName)
- {
- return loadedPrefs [prefName];
- },
-
- getCharPref: function (prefName)
- {
- return loadedPrefs [prefName];
- },
-
- getIntPref: function (prefName)
- {
- return loadedPrefs [prefName];
- },
-
- getDomain: function (prefName)
- {
- for (var i = 0; i < TRACKER_SETTINGS.length; i++) {
- var setting = TRACKER_SETTINGS [i];
- if (setting [1] == prefName)
- return setting [0];
- }
-
- return null;
- },
-
- setBoolPref: function (prefName, value)
- {
- var domain = this.getDomain (prefName);
- if (!domain)
- throw Components.results.NS_ERROR_FAILURE;
-
- prefs.setBoolPref (domain, value);
- },
-
- setCharPref: function (prefName, value)
- {
- var domain = this.getDomain (prefName);
- if (!domain)
- throw Components.results.NS_ERROR_FAILURE;
-
- prefs.setCharPref (domain, value);
- },
-
- setIntPref: function (prefName, value)
- {
- var domain = this.getDomain (prefName);
- if (!domain)
- throw Components.results.NS_ERROR_FAILURE;
-
- prefs.setIntPref (domain, value);
- }
-
-};
-
-// We use this to catch updates
-var gObserver = {
-
- observe: function (subject, topic, data)
- {
- var branch = subject.QueryInterface (Components.interfaces.nsIPrefBranch);
-
- // Find the correct setting so that we can update
- for (var i = 0; i < TRACKER_SETTINGS.length; i++) {
- var domain = TRACKER_SETTINGS [i] [0];
-
- if (domain != data)
- continue;
-
- var key = TRACKER_SETTINGS [i][1], val = loadedPrefs [key];
-
- try {
- switch (branch.getPrefType (data)) {
- case Components.interfaces.nsIPrefBranch.PREF_BOOL:
- val = branch.getBoolPref (data);
- break;
- case Components.interfaces.nsIPrefBranch.PREF_INT:
- val = branch.getIntPref (data);
- break;
- case Components.interfaces.nsIPrefBranch.PREF_STRING:
- val = Branch.getCharPref (data);
- break;
- }
- } catch (ex) {
- }
-
- loadedPrefs [key] = val;
-
- break;
- }
- }
-};
-
diff --git a/extensions/thunderbird-extension/content/trackerUnindex.js b/extensions/thunderbird-extension/content/trackerUnindex.js
deleted file mode 100644
index fc5a8b5c0..000000000
--- a/extensions/thunderbird-extension/content/trackerUnindex.js
+++ /dev/null
@@ -1,394 +0,0 @@
-//
-// trackerUnindex.js: Unindexing code, used when data needs to be removed from index or unindexed
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-// FIXME: This entire implementation should somehow be threaded (or similar) to update GUI correctly
-
-const FOLDER_MODE_REMOVE = 0;
-const FOLDER_MODE_UNINDEX = 1;
-const HDR_MODE_REMOVE = 2;
-const HDR_MODE_UNINDEX = 3;
-const EVERYTHING_MODE_REMOVE = 4;
-const EVERYTHING_MODE_UNINDEX = 5;
-
-var gTrackerIndexer = GetJsService ('@tracker-project.org/services/indexer;1');
-var gTrackerQueue = GetJsService ('@tracker-project.org/services/queue;1');
-
-//
-// Call one of the following functions to remove or unindex content
-//
-
-var gTrackerUnindex = {
-
- RemoveFolder: function (folder, recursive, askUserMarked)
- {
- var userMarked = false;
- if (askUserMarked) {
- var ret = getUserMarkedChoice ();
- if (ret == 0)
- userMarked = true;
- else if (ret == 2)
- return;
- }
-
- window.openDialog ('chrome://tracker/content/trackerUnindex.xul',
- 'UnindexWindow',
- 'chrome,modal=yes,resizable=no',
- FOLDER_MODE_REMOVE, folder, recursive, userMarked);
- },
-
- RemoveHdrs: function (hdrs, askUserMarked)
- {
- var userMarked = false;
- if (askUserMarked) {
- var ret = getUserMarkedChoice ();
- if (ret == 0)
- userMarked = true;
- else if (ret == 2)
- return;
- }
-
- window.openDialog ('chrome://tracker/content/trackerUnindex.xul',
- 'UnindexWindow',
- 'chrome,modal=yes,resizable=no',
- HDR_MODE_REMOVE, hdrs, userMarked);
- },
-
- RemoveEverything: function (askUserMarked)
- {
- var userMarked = false;
- if (askUserMarked) {
- var ret = getUserMarkedChoice ();
- if (ret == 0)
- userMarked = true;
- else if (ret == 2)
- return;
- }
-
- window.openDialog ('chrome://tracker/content/trackerUnindex.xul',
- 'UnindexWindow',
- 'chrome,modal=yes,resizable=no',
- EVERYTHING_MODE_REMOVE, userMarked);
- },
-
- UnindexFolder: function (folder, recursive, askUserMarked)
- {
- var userMarked = false;
- if (askUserMarked) {
- var ret = getUserMarkedChoice ();
- if (ret == 0)
- userMarked = true;
- else if (ret == 2)
- return;
- }
-
- window.openDialog ('chrome://tracker/content/trackerUnindex.xul',
- 'UnindexWindow',
- 'chrome,modal=yes,resizable=no',
- FOLDER_MODE_UNINDEX, folder, recursive, userMarked);
- },
-
- UnindexHdrs: function (hdrs, askUserMarked)
- {
- var userMarked = false;
- if (askUserMarked) {
- var ret = getUserMarkedChoice ();
- if (ret == 0)
- userMarked = true;
- else if (ret == 2)
- return;
- }
-
- window.openDialog ('chrome://tracker/content/trackerUnindex.xul',
- 'UnindexWindow',
- 'chrome,modal=yes,resizable=no',
- HDR_MODE_UNINDEX, hdrs, userMarked);
- },
-
- UnindexEverything: function (askUserMarked)
- {
- var userMarked = false;
- if (askUserMarked) {
- var ret = getUserMarkedChoice ();
- if (ret == 0)
- userMarked = true;
- else if (ret == 2)
- return;
- }
-
- window.openDialog ('chrome://tracker/content/trackerUnindex.xul',
- 'UnindexWindow',
- 'chrome,modal=yes,resizable=no',
- EVERYTHING_MODE_UNINDEX, userMarked);
- }
-};
-
-//
-// Various handlers and functions
-//
-
-function onLoad ()
-{
- window.setTimeout (function () { startProcessing () }, 0);
-}
-
-function startProcessing ()
-{
- // Make sure we have arguments (we should always have that)
- if (!window.arguments || window.arguments.length < 1) {
- window.close ();
- return;
- }
-
- var remove = false;
- switch (window.arguments [0]) {
- case FOLDER_MODE_REMOVE:
- remove = true;
- case FOLDER_MODE_UNINDEX:
- prepareFolder (window.arguments [1], window.arguments [2], true, window.arguments [3]);
- handleFolder (window.arguments [1], window.arguments [2], remove, window.arguments [3]);
- break;
- case HDR_MODE_REMOVE:
- remove = true;
- case HDR_MODE_UNINDEX:
- prepareHdrs (window.arguments [1], window.arguments [2]);
- handleHdrs (window.arguments [1], window.arguments [2], remove);
- break;
- case EVERYTHING_MODE_REMOVE:
- remove = true;
- case EVERYTHING_MODE_UNINDEX:
- prepareEverything ();
- handleEverything (remove, window.arguments [1]);
- break;
- }
-
- // Force a process
- gTrackerQueue.forceProcess ();
-
- window.close ();
-}
-
-// Returns 0 when true, 1 when false and 2 when cancel
-function getUserMarkedChoice ()
-{
- var bundle = document.getElementById ('bundle_tracker');
- var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO +
- prompts.BUTTON_POS_2 * prompts.BUTTON_TITLE_CANCEL;
- var check = {value: true}
- var button = prompts.confirmEx (window,
- bundle.getString ('userMarkedContent'),
- bundle.getString ('removeUserMarkedContent'),
- flags,
- null, null, null, null, check);
-
- return button;
-}
-
-var folder_count = 0;
-var current_folder = 0;
-var message_count = 0;
-var current_message = 0;
-
-// Updates window with current statistics
-function updateWindow ()
-{
- // Everything folder related goes here
- var folderStatus = document.getElementById ('folder-status');
- var folderMeter = document.getElementById ('folder-status-meter');
- folderStatus.value = current_folder + '/' + folder_count;
- folderMeter.value = 100 * (current_folder / folder_count);
-
- // Next are message related things
- var messageStatus = document.getElementById ('message-status');
- var messageMeter = document.getElementById ('message-status-meter');
- messageStatus.value = current_message + '/' + message_count;
- messageMeter.value = 100 * (current_message / message_count);
-}
-
-function prepareDone ()
-{
- // Take GUI from preparation mode to unindex/remove mode
- var statusElem = document.getElementById ('unindex-mainstatus');
- var prepareElem = document.getElementById ('unindex-preparestatus');
- var currentElem = document.getElementById ('current-item')
- currentElem.value = '';
- prepareElem.setAttribute ('style', 'display: none;');
- statusElem.setAttribute ('style', '');
- updateWindow ();
-}
-
-// Preapares the GUI when removing/unindexing a folder
-function prepareFolder (folder, recursive, gui)
-{
- if (!folder)
- return;
-
- // Update our statistics
- if (recursive) {
- var allFolders = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
- folder.ListDescendents (allFolders);
- folder_count += allFolders.Count () + 1;
- message_count += folder.getTotalMessages (true);
- current_folder = 0;
- current_message = 0;
- } else {
- folder_count += 1;
- message_count += folder.getTotalMessages (false);
- current_folder = 0;
- current_message = 0;
- }
-
- if (gui)
- prepareDone ();
-}
-
-function prepareHdrs (hdrs)
-{
- // Pretty easy, huh?
- folder_count = 1;
- message_count = hdrs.Count ();
- current_folder = 0;
- current_message = 0;
- prepareDone ();
-}
-
-function prepareEverything ()
-{
- var gAccountManager = Components.classes ['@mozilla.org/messenger/account-manager;1']
- .getService (Components.interfaces.nsIMsgAccountManager);
- var accounts = gAccountManager.accounts;
-
- for (var i = 0; i < accounts.Count (); i++) {
- var account = accounts.QueryElementAt (i, Components.interfaces.nsIMsgAccount);
- if (!account)
- continue;
-
- prepareFolder (account.incomingServer.rootFolder, true, false);
- }
-
- prepareDone ();
-}
-
-function handleFolder (folder, recursive, remove, userMarked)
-{
- if (!folder)
- return;
-
- var currentItem = document.getElementById ('current-item');
-
- if (recursive) {
- var allFolders = Components.classes ['@mozilla.org/supports-array;1']
- .createInstance (Components.interfaces.nsISupportsArray);
- folder.ListDescendents (allFolders);
- allFolders.AppendElement (folder);
- for (var i = 0; i < allFolders.Count (); i++) {
- var currentFolder = allFolders.QueryElementAt (i, Components.interfaces.nsIMsgFolder);
- if (!currentFolder)
- continue;
-
- handleFolder (currentFolder, false, remove, userMarked);
- }
- } else {
- try {
- currentItem.value = folder.prettyName;
-
- // Update user interface
- current_folder++;
- updateWindow ();
-
- gTrackerIndexer.resetFolder (folder, userMarked, false, false);
- if (remove)
- gTrackerQueue.removeFolder (folder);
-
- // Only process content if we have any content (getMessages will throw an exception otherwise)
- if (folder.getTotalMessages (false) > 0) {
- var enumerator = folder.getMessages (null);
- while (enumerator.hasMoreElements ()) {
- var hdr = enumerator.getNext ().QueryInterface (Components.interfaces.nsIMsgDBHdr);
- if (!hdr)
- continue;
- current_message++;
- updateWindow ();
- gTrackerIndexer.resetHdr (hdr, userMarked);
- }
- folder.getMsgDatabase (null).Commit (1);
- }
- } catch (ex) {
- }
- }
-}
-
-function handleHdrs (hdrs, userMarked, remove)
-{
- var folder = null;
-
- for (var i = 0; i < hdrs.Count (); i++) {
- var hdr = hdrs.QueryElementAt (i, Components.interfaces.nsIMsgDBHdr);
- if (!hdr)
- continue;
-
- // We save the folder so we can mark it as "unindexed". Otherwise the extension won't try to re-index
- // the content of the folder.
- if (!folder)
- folder = hdr.folder;
-
- // We only remove in case the message is indexed
- var isIndexed = gTrackerIndexer.isHdrIndexed (hdr);
- if (isIndexed) {
- if (remove)
- gTrackerQueue.removeHdr (hdr);
- else
- gTrackerIndexer.resetHdr (hdr, false);
- }
- if (userMarked)
- gTrackerIndexer.resetHdrUserMarked (hdr);
-
- current_message++;
- updateWindow ();
- }
-
- // Reset folder
- if (folder)
- gTrackerIndexer.resetFolder (folder, false, false, false);
-}
-
-function handleEverything (remove, userMarked)
-{
- var gAccountManager = Components.classes ['@mozilla.org/messenger/account-manager;1']
- .getService (Components.interfaces.nsIMsgAccountManager);
- var accounts = gAccountManager.accounts;
-
- for (var i = 0; i < accounts.Count (); i++) {
- var account = accounts.QueryElementAt (i, Components.interfaces.nsIMsgAccount);
- if (!account)
- continue;
- handleFolder (account.incomingServer.rootFolder, true, remove, userMarked);
- }
-}
-
diff --git a/extensions/thunderbird-extension/content/trackerUnindex.xul b/extensions/thunderbird-extension/content/trackerUnindex.xul
deleted file mode 100644
index bd6c91971..000000000
--- a/extensions/thunderbird-extension/content/trackerUnindex.xul
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-//
-// trackerUnindex.xul: A window displaying unindexing/removal status
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
--->
-
-<!DOCTYPE window SYSTEM "chrome://tracker/locale/tracker.dtd">
-
-<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-
-<window id="tracker-unindex-window"
- title="&trackerunindex.title;"
- onload="onLoad ();"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <script src="trackerUtils.js"/>
- <script src="trackerUnindex.js"/>
-
- <vbox flex="0">
- <spacer height="5"/>
- <label value="&trackerunindex.topic;" style="font-weight: bold;"/>
- <spacer height="5"/>
- <hbox flex="1">
- <label value="&trackerunindex.currentItem;"/>
- <label id="current-item" value="&trackerunindex.preparing;"/>
- </hbox>
- <spacer height="5"/>
- <grid id="unindex-mainstatus" style="visibility: hidden;">
- <columns>
- <column flex="0"/>
- <column flex="1"/>
- <column flex="0"/>
- </columns>
- <rows>
- <row>
- <label value="&trackerunindex.folderdesc;"/>
- <progressmeter id="folder-status-meter" mode="determined" value="0%"/>
- <label id="folder-status"/>
- </row>
- <row>
- <label value="&trackerunindex.messagedesc;"/>
- <progressmeter id="message-status-meter" mode="determined" value="0%"/>
- <label id="message-status"/>
- </row>
- </rows>
- </grid>
- <hbox flex="1" id="unindex-preparestatus">
- <progressmeter id="prepare-meter" mode="undetermined" flex="1"/>
- </hbox>-
- <spacer height="5"/>
- </vbox>
-</window>
-
diff --git a/extensions/thunderbird-extension/content/trackerUtils.js b/extensions/thunderbird-extension/content/trackerUtils.js
deleted file mode 100644
index 3c59804e6..000000000
--- a/extensions/thunderbird-extension/content/trackerUtils.js
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// TrackerUtils.js: This is the base of various utility functions
-//
-// Copyright (C) 2007 Pierre Östlund
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-
-function GetJsService (component)
-{
- var comp = Components.classes [component].getService (Components.interfaces.nsISupports);
- return comp.wrappedJSObject;
-}
-
diff --git a/extensions/thunderbird-extension/defaults/preferences/default.js b/extensions/thunderbird-extension/defaults/preferences/default.js
deleted file mode 100644
index 1dd5861f9..000000000
--- a/extensions/thunderbird-extension/defaults/preferences/default.js
+++ /dev/null
@@ -1,11 +0,0 @@
-pref("tracker.enable.contacts", true);
-pref("tracker.enable.imap", true);
-pref("tracker.enable.local", true);
-pref("tracker.enable.mailspool", true);
-pref("tracker.enable.news", true);
-pref("tracker.enable.pop", true);
-pref("tracker.enable.rss", true);
-pref("tracker.enabled", true);
-pref("tracker.index.batch_count", 10);
-pref("tracker.index.delay", 10);
-pref("tracker.index.queue_count", 10);
diff --git a/extensions/thunderbird-extension/install.rdf b/extensions/thunderbird-extension/install.rdf
deleted file mode 100644
index f14f2f20b..000000000
--- a/extensions/thunderbird-extension/install.rdf
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
-
- <em:id>{b656ef18-fd76-45e6-95cc-8043f26361e7}</em:id>
- <em:name>Tracker Indexer</em:name>
- <em:version>0.1.3</em:version>
- <em:description>
- Index mails, RSS and more using Tracker.
- </em:description>
- <em:creator>Pierre Èûstlund, Michal Pryc</em:creator>
- <em:homepageURL>http://www.gnome.org/projects/tracker</em:homepageURL>
- <em:optionsURL>chrome://tracker/content/trackerPrefs.xul</em:optionsURL>
-
- <em:file>
- <Description about="urn:mozilla:extension:file:tracker.jar">
- <em:package>content/</em:package>
- <em:locale>locale/en-US/</em:locale>
- <em:skin>skin/classic/</em:skin>
- </Description>
- </em:file>
-
- <em:targetApplication>
- <Description>
- <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
- <em:minVersion>2.0</em:minVersion>
- <em:maxVersion>3.0.*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- </Description>
-
-</RDF>
diff --git a/extensions/thunderbird-extension/locale/en-US/contents.rdf b/extensions/thunderbird-extension/locale/en-US/contents.rdf
deleted file mode 100644
index ae8b779e8..000000000
--- a/extensions/thunderbird-extension/locale/en-US/contents.rdf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
-<RDF:Seq about="urn:mozilla:locale:root">
- <RDF:li resource="urn:mozilla:locale:en-US" />
-</RDF:Seq>
-
-<RDF:Description about="urn:mozilla:locale:en-US"
- chrome:displayName="English(US)"
- chrome:author="Pierre Èûstlund, Michal Pryc"
- chrome:name="en-US">
- <chrome:packages>
- <RDF:Seq about="urn:mozilla:locale:en-US:packages">
- <RDF:li resource="urn:mozilla:locale:en-US:tracker" />
- </RDF:Seq>
- </chrome:packages>
-</RDF:Description>
-
-<RDF:Description about="urn:mozilla:locale:en-US:tracker"
- chrome:localeVersion="1.4" />
-
-</RDF:RDF>
diff --git a/extensions/thunderbird-extension/locale/en-US/strings.properties b/extensions/thunderbird-extension/locale/en-US/strings.properties
deleted file mode 100644
index f80caf016..000000000
--- a/extensions/thunderbird-extension/locale/en-US/strings.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-indexingEnabledTooltip=Indexing is enabled. Click to disable.
-indexingDisabledTooltip=Indexing is diabled. Click to enable.
-selectedFolderFailed=Failed to get selected folder!
-userMarkedContent=User marked content
-removeUserMarkedContent=Do you want this operation to affect objects you have manually excluded from indexing?
-indexIdle=Idle
-indexWorking=%1$S folders remaining
-failedGetStatus=Failed to get status!
-errorWhileIndexing=An error occurred while indexing. Error description: %1$S
-warningCountDescription=You have %1$S unread warnings. Click to read next.
-destinationDirInvalidType=Destination directory exists but is not a directory!
-toIndexDirInvalidType=The ToIndex directory exists but is not a directory!
-toIndexDirectoryLackPermission=The ToIndex directory exists but is not writable!
-destinationDirectoryNoExist=Destination directory does not exist! Start tracker with the Thunderbird backend enabled and try enabling indexing again.
-failedCreateToIndexDir=An error occurred while creating the ToIndex directory: %1$S
-failedListingMessages=Failed listing messages in %1$S. Ignoring folder. Error description: %2$S
diff --git a/extensions/thunderbird-extension/locale/en-US/tracker.dtd b/extensions/thunderbird-extension/locale/en-US/tracker.dtd
deleted file mode 100644
index d898d1170..000000000
--- a/extensions/thunderbird-extension/locale/en-US/tracker.dtd
+++ /dev/null
@@ -1,50 +0,0 @@
-<!ENTITY trackermain.settings "Tracker indexing settings">
-<!ENTITY trackerprefs.title "Tracker indexing settings">
-<!ENTITY trackerprefs.indexing "Indexing">
-<!ENTITY trackerprefs.privacy "Privacy">
-<!ENTITY trackerprefs.sourcescaption "Sources">
-<!ENTITY trackerprefs.contentcaption "Content">
-<!ENTITY trackerprefs.enabled "Enable indexing">
-<!ENTITY trackerprefs.destdir "Destination directory">
-<!ENTITY trackerprefs.batchcount "Batch count">
-<!ENTITY trackerprefs.delay "Batch delay">
-<!ENTITY trackerprefs.local "Local account">
-<!ENTITY trackerprefs.imap "IMAP accounts">
-<!ENTITY trackerprefs.pop "POP3 accounts">
-<!ENTITY trackerprefs.mailspool "Mailspool accounts">
-<!ENTITY trackerprefs.news "Newsgroup accounts">
-<!ENTITY trackerprefs.rss "RSS feeds">
-<!ENTITY trackerprefs.contentdesc "To empty index, press the button">
-<!ENTITY trackerprefs.delindex "Drop everything">
-<!ENTITY trackerprefs.unindex "Reset index status">
-<!ENTITY trackerprefs.speedcaption "Indexing speed">
-<!ENTITY trackerprefs.recommended "(Recommended)">
-<!ENTITY trackerprefs.notrecommended "(Not recommended)">
-<!ENTITY trackerprefs.veryslow "Very slow">
-<!ENTITY trackerprefs.slow "Slow">
-<!ENTITY trackerprefs.normal "Normal">
-<!ENTITY trackerprefs.fast "Fast">
-<!ENTITY trackerprefs.veryfast "Very fast">
-<!ENTITY trackerprefs.instant "Instant">
-<!ENTITY trackerprefs.custom "Custom">
-<!ENTITY trackerprefs.customcaption "Custom settings">
-<!ENTITY trackerprefs.status "Status">
-<!ENTITY trackerprefs.queuecount "Queue count">
-<!ENTITY trackerprefs.stats "Statistics">
-<!ENTITY trackerprefs.indexingstatus "Indexing status:">
-<!ENTITY trackerprefs.itemsadded "Items added:">
-<!ENTITY trackerprefs.itemsremoved "Items removed:">
-<!ENTITY trackerprefs.itemsqueued "Items queued:">
-<!ENTITY trackerprefs.refresh "Refresh">
-<!ENTITY trackerunindex.title "Processing index data">
-<!ENTITY trackerunindex.topic "Data is is currently being processed. Please wait...">
-<!ENTITY trackerunindex.currentItem "Processing:">
-<!ENTITY trackerunindex.preparing "Preparing data...">
-<!ENTITY trackerunindex.folderdesc "Folders:">
-<!ENTITY trackerunindex.messagedesc "Messages:">
-<!ENTITY trackerunindex.cancel "Cancel">
-<!ENTITY trackerfoldertree.removefolder "Remove folder from index">
-<!ENTITY trackerfoldertree.removefolderrecursive "Recursively remove folder from index">
-<!ENTITY trackerfoldertree.noindexing "Never index this folder">
-<!ENTITY trackermessageview.removemessage "Remove message from index">
-<!ENTITY trackermessageview.noindexing "Never index this message">
diff --git a/extensions/thunderbird-extension/skin/classic/contents.rdf b/extensions/thunderbird-extension/skin/classic/contents.rdf
deleted file mode 100644
index def59ec2d..000000000
--- a/extensions/thunderbird-extension/skin/classic/contents.rdf
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
-
- <RDF:Seq about="urn:mozilla:skin:root">
- <RDF:li resource="urn:mozilla:skin:classic/1.0" />
- </RDF:Seq>
-
- <RDF:Description about="urn:mozilla:skin:classic/1.0">
- <chrome:packages>
- <RDF:Seq about="urn:mozilla:skin:classic/1.0:packages">
- <RDF:li resource="urn:mozilla:skin:classic/1.0:tracker" />
- </RDF:Seq>
- </chrome:packages>
- </RDF:Description>
-
-</RDF:RDF>
diff --git a/extensions/thunderbird-extension/skin/classic/overlay.css b/extensions/thunderbird-extension/skin/classic/overlay.css
deleted file mode 100644
index e69de29bb..000000000
--- a/extensions/thunderbird-extension/skin/classic/overlay.css
+++ /dev/null
diff --git a/extensions/thunderbird-extension/skin/classic/tracker-disabled.png b/extensions/thunderbird-extension/skin/classic/tracker-disabled.png
deleted file mode 100644
index 29d3101ed..000000000
--- a/extensions/thunderbird-extension/skin/classic/tracker-disabled.png
+++ /dev/null
Binary files differ
diff --git a/extensions/thunderbird-extension/skin/classic/tracker-error.png b/extensions/thunderbird-extension/skin/classic/tracker-error.png
deleted file mode 100644
index 3fddd6fbc..000000000
--- a/extensions/thunderbird-extension/skin/classic/tracker-error.png
+++ /dev/null
Binary files differ
diff --git a/extensions/thunderbird-extension/skin/classic/tracker.png b/extensions/thunderbird-extension/skin/classic/tracker.png
deleted file mode 100644
index 08040d8f8..000000000
--- a/extensions/thunderbird-extension/skin/classic/tracker.png
+++ /dev/null
Binary files differ
diff --git a/extensions/thunderbird-extension/tracker.xpi b/extensions/thunderbird-extension/tracker.xpi
deleted file mode 100644
index ab303aae0..000000000
--- a/extensions/thunderbird-extension/tracker.xpi
+++ /dev/null
Binary files differ
diff --git a/filters/Makefile.am b/filters/Makefile.am
deleted file mode 100644
index 4441f00c9..000000000
--- a/filters/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = application text
diff --git a/filters/application/Makefile.am b/filters/application/Makefile.am
deleted file mode 100644
index b3429114b..000000000
--- a/filters/application/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-thumbappbindir = $(libdir)/tracker/filters/application
-
-thumbappbin_SCRIPTS = pdf_filter \
- msword_filter \
- vnd.oasis.opendocument.presentation_filter \
- vnd.oasis.opendocument.presentation-template_filter \
- vnd.oasis.opendocument.spreadsheet_filter \
- vnd.oasis.opendocument.spreadsheet-template_filter \
- vnd.oasis.opendocument.text_filter \
- vnd.oasis.opendocument.text-template_filter \
- vnd.stardivision.writer_filter \
- vnd.sun.xml.calc_filter \
- vnd.sun.xml.calc.template_filter \
- vnd.sun.xml.impress_filter \
- vnd.sun.xml.impress.template_filter \
- vnd.sun.xml.writer_filter \
- vnd.sun.xml.writer.template_filter \
- x-abiword_filter \
- x-gnumeric_filter \
- vnd.sun.xml.draw_filter \
- csv_filter \
- vnd.ms-excel_filter \
- tab-separated-values_filter
-
-EXTRA_DIST = $(thumbappbin_SCRIPTS)
diff --git a/filters/application/csv_filter b/filters/application/csv_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/application/csv_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/application/msword_filter b/filters/application/msword_filter
deleted file mode 100755
index 287757b55..000000000
--- a/filters/application/msword_filter
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-tmpdir=${TMPDIR-/tmp}
-tmpdir="$tmpdir"/tmpdir.$$
-
-(umask 077 && mkdir "$tmpdir") || exit 1
-
-tmpfile="$tmpdir"/tmpfile.$$
-
-cp "$1" "$tmpfile"
-
-# Change the working directory to $tmpdir which we can safely deleter later.
-# Some distributions ship a version of wvText which extracts the image files
-# from the word document and places them in the current working directory.
-
-cd "$tmpdir"
-
-nice -n19 wvText "$tmpfile" "$2"
-
-rm -rf "$tmpdir"
diff --git a/filters/application/pdf_filter b/filters/application/pdf_filter
deleted file mode 100755
index a972b0c1e..000000000
--- a/filters/application/pdf_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 pdftotext -enc UTF-8 -q -nopgbrk "$1" "$2"
diff --git a/filters/application/tab-separated-values_filter b/filters/application/tab-separated-values_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/application/tab-separated-values_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/application/vnd.ms-excel_filter b/filters/application/vnd.ms-excel_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/application/vnd.ms-excel_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/application/vnd.oasis.opendocument.presentation-template_filter b/filters/application/vnd.oasis.opendocument.presentation-template_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.oasis.opendocument.presentation-template_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.oasis.opendocument.presentation_filter b/filters/application/vnd.oasis.opendocument.presentation_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.oasis.opendocument.presentation_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.oasis.opendocument.spreadsheet-template_filter b/filters/application/vnd.oasis.opendocument.spreadsheet-template_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.oasis.opendocument.spreadsheet-template_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.oasis.opendocument.spreadsheet_filter b/filters/application/vnd.oasis.opendocument.spreadsheet_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.oasis.opendocument.spreadsheet_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.oasis.opendocument.text-template_filter b/filters/application/vnd.oasis.opendocument.text-template_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.oasis.opendocument.text-template_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.oasis.opendocument.text_filter b/filters/application/vnd.oasis.opendocument.text_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.oasis.opendocument.text_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.stardivision.writer_filter b/filters/application/vnd.stardivision.writer_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.stardivision.writer_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.calc.template_filter b/filters/application/vnd.sun.xml.calc.template_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.calc.template_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.calc_filter b/filters/application/vnd.sun.xml.calc_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.calc_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.draw_filter b/filters/application/vnd.sun.xml.draw_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.draw_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.impress.template_filter b/filters/application/vnd.sun.xml.impress.template_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.impress.template_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.impress_filter b/filters/application/vnd.sun.xml.impress_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.impress_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.writer.template_filter b/filters/application/vnd.sun.xml.writer.template_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.writer.template_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/vnd.sun.xml.writer_filter b/filters/application/vnd.sun.xml.writer_filter
deleted file mode 100755
index 4024891c4..000000000
--- a/filters/application/vnd.sun.xml.writer_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" content.xml | o3totxt > "$2"
diff --git a/filters/application/x-abiword_filter b/filters/application/x-abiword_filter
deleted file mode 100755
index a1fbe6356..000000000
--- a/filters/application/x-abiword_filter
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-nice -n19 xsltproc - "$1" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
diff --git a/filters/application/x-gnumeric_filter b/filters/application/x-gnumeric_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/application/x-gnumeric_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/text/Makefile.am b/filters/text/Makefile.am
deleted file mode 100644
index 13d4ce717..000000000
--- a/filters/text/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-filterbindir = $(libdir)/tracker/filters/text
-
-filterbin_SCRIPTS = html_filter \
- xml_filter \
- x-tex_filter \
- djvu_filter \
- csv_filter \
- spreadsheet_filter \
- tab-separated-values_filter \
- x-comma-separated-values_filter
-
-
-EXTRA_DIST = $(filterbin_SCRIPTS)
diff --git a/filters/text/csv_filter b/filters/text/csv_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/text/csv_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/text/djvu_filter b/filters/text/djvu_filter
deleted file mode 100755
index ee014ba17..000000000
--- a/filters/text/djvu_filter
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 djvused "$1" -e 'print-pure-txt' > "$2"
diff --git a/filters/text/html_filter b/filters/text/html_filter
deleted file mode 100755
index 22dcf31af..000000000
--- a/filters/text/html_filter
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-nice -n19 w3m \
- -o indent_incr=0 \
- -o multicol=false \
- -o no_cache=true \
- -o use_cookie=false \
- -o display_charset=utf8 \
- -o system_charset=utf8 \
- -o follow_locale=false \
- -o use_language_tag=true \
- -o ucs_conv=true \
- -T text/html \
- -dump \
- "$1" > "$2"
diff --git a/filters/text/spreadsheet_filter b/filters/text/spreadsheet_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/text/spreadsheet_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/text/tab-separated-values_filter b/filters/text/tab-separated-values_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/text/tab-separated-values_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/text/x-comma-separated-values_filter b/filters/text/x-comma-separated-values_filter
deleted file mode 100755
index b03bf47fb..000000000
--- a/filters/text/x-comma-separated-values_filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-tmpfile=`mktemp` || exit 1
-
-nice -n19 ssindex -i "$1" > "$tmpfile"
-
-nice -n19 xsltproc - "$tmpfile" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
-
-rm "$tmpfile"
diff --git a/filters/text/x-tex_filter b/filters/text/x-tex_filter
deleted file mode 100755
index 72f9ae64e..000000000
--- a/filters/text/x-tex_filter
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-UNTEX=`which untex`
-if [ -n "$UNTEX" ]; then nice -n19 $UNTEX "$1" > "$2";
-else cat "$1" > "$2";
-fi
diff --git a/filters/text/xml_filter b/filters/text/xml_filter
deleted file mode 100755
index a1fbe6356..000000000
--- a/filters/text/xml_filter
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-nice -n19 xsltproc - "$1" > "$2" <<EOF
-<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="text"/>
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="*">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
-EOF
diff --git a/libtracker-gtk.pc.in b/libtracker-gtk.pc.in
deleted file mode 100644
index 0d269560b..000000000
--- a/libtracker-gtk.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@prefix@
-exec_prefix=${prefix}
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libtracker-gtk
-Description: Handy GTK+ widgets for apps that use tracker
-Version: @VERSION@
-Requires.private: cairo
-Requires: tracker gtk+-2.0 glib-2.0
-Libs: -L${libdir} -ltracker-gtk
-Cflags: -I${includedir}/libtracker-gtk
diff --git a/po/ChangeLog b/po/ChangeLog
deleted file mode 100644
index b4c872426..000000000
--- a/po/ChangeLog
+++ /dev/null
@@ -1,928 +0,0 @@
-2008-09-22 Timo Jyrinki <timo.jyrinki@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2008-09-18 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-09-08 Tomasz Dominikowski <tdominikowski@aviary.pl>
-
- * pl.po: Updated Polish translation
-
-2008-08-29 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-07-31 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2008-07-24 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-07-02 Yannig Marchegay <yannig@marchegay.org>
-
- * oc.po: Updated Occitan translation.
-
-2008-06-19 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-06-11 Yannig Marchegay <yannig@marchegay.org>
-
- * oc.po: Updated Occitan translation.
-
-2008-06-10 Jonh Wendell <jwendell@gnome.org>
-
- * pt_BR.po: Updated Brazilian Portuguese translation by Henrique Machado
- and Fábio Nogueira.
-
-2008-06-07 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2008-06-06 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-05-29 Claude Paroz <claude@2xlibre.net>
-
- * fr.po: Updated French translation.
-
-2008-05-25 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation by Nicolau Gonçalves
- <excentriko@gmail.com>.
-
-2008-05-09 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2008-04-30 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation updated by Roel Huybrechts.
-
-2008-04-29 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-04-17 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-04-17 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-04-17 Takeshi AIHANA <takeshi.aihana@gmail.com>
-
- * LINGUAS: Added 'ja' (Japanese).
- * ja.po: Added Japanese translation by Takao Fujiwara
- <takao.fujiwara@sun.com>.
-
-2008-04-16 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2008-04-14 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * LINGUAS: Added th.
- * th.po: Added Thai translation by Isriya Paireepairit.
-
-2008-04-13 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-04-09 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-04-08 Yair Hershkovitz <yairhr@gmail.com>
-
- * he.po, LINGUAS: Added Hebrew translation.
-
-2008-04-06 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation by Nicolau Gonçalves
- <excentriko@gmail.com>.
-
-2008-04-02 Petr Kovar <pknbe@volny.cz>
-
- * cs.po: Fixed Czech translation, thanks to Kamil Paral
- (bug #525543).
-
-2008-03-29 Simos Xenitellis <simos@gnome.org>
-
- * el.po: Updated Greek translation by
- Giannis Katampirhs. Review of translation.
-
-2008-03-27 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-03-26 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-03-26 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2008-03-25 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-03-16 Artur Flinta <aflinta@gmail.com>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-03-16 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated
-
-2008-03-11 Gil Forcada <gforcada@gnome.org>
-
- * ca.po: Some fixes by David Planella.
-
-2008-03-11 Simos Xenitellis <simos@gnome.org>
-
- * el.po: Added Greek translation.
- * LINGUAS: Added Greek (el).
-
-2008-03-10 Alexander Nyakhaychyk <nab@mail.by>
-
- * be.po: Added Belarusian Translation.
- * LINGUAS: Added Belarusian Translation.
-
-2008-03-09 Philip Withnall <pwithnall@svn.gnome.org>
-
- * en_GB.po: Updated British English translation.
-
-2008-03-09 Artur Flinta <aflinta@gmail.com>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-03-09 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2008-03-08 Wadim Dziedzic <wadimd@svn.gnome.org>
-
- * pl.po: Updated polish translation
-
-2008-03-08 Gintautas Miliauskas <gintas@akl.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2008-03-08 Gintautas Miliauskas <gintas@akl.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2008-03-07 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-03-07 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-03-07 Gil Forcada <gforcada@gnome.org>
-
- * ca.po: Updated Catalan translation.
-
-2008-03-07 Ihar Hrachyshka <booxter@lacinka.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2008-03-06 Petr Kovar <pknbe@volny.cz>
-
- * cs.po: Added Czech translation by Kamil Paral.
- * POTFILES.in: Added missing file.
- * LINGUAS: Added cs.
-
-2008-03-06 Stéphane Raimbault <stephane.raimbault@gmail.com>
-
- * fr.po: Updated French translation by Robert-André Mauchin and
- Stéphane Raimbault.
-
-2008-03-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-03-03 Ihar Hrachyshka <booxter@lacinka.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2008-03-03 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2008-03-02 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-03-01 Michael Biebl <mbiebl@gmail.com>
-
- * de.po: Updated German translation.
-
-2008-03-01 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
-
- * pt_BR.po: Updated Brazilian Portuguese translation by Luiz Armesto
- (and a little by myself).
-
-2008-03-01 Artur Flinta <aflinta@gmail.com>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-02-29 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-02-26 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2008-02-22 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-02-22 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2008-02-22 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2008-02-19 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-02-18 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2008-02-15 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2008-02-08 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2008-02-07 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-02-05 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-02-03 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-02-02 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-02-02 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-02-01 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation by Pavol KlaÄanský.
-
-2008-02-01 Ihar Hrachyshka <booxter@lacinka.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2008-01-30 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2008-01-26 Claude Paroz <claude@2xlibre.net>
-
- * fr.po: Updated French translation by Robert-André Mauchin.
-
-2008-01-24 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Added Slovak translation by Pavol KlaÄanský.
- * LINGUAS: Added sk.
-
-2008-01-23 Michael Biebl <mbiebl@gmail.com>
-
- * de.po: Updated German translation.
-
-2007-12-31 Yannig Marchegay <yannig@marchegay.org>
-
- * oc.po: Updated Occitan translation.
-
-2007-12-26 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2007-12-24 Changwoo Ryu <cwryu@debian.org>
-
- * LINGUAS: Added ko.
- * ko.po: Added Korean translation by Namhyung Kim.
-
-2007-12-22 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
-
- * pt_BR.po: Brazilian Portuguese translation updated by Luiz Armesto.
-
-2007-12-19 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-12-19 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-12-14 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2007-12-11 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-12-06 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2007-12-01 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-12-01 Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2007-11-29 Michael Biebl <mbiebl@gmail.com>
-
- * POTFILES.in: Add src/tracker-preferences/tracker-preferences.c
-
-2007-11-28 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-11-26 Claude Paroz <claude@2xlibre.net>
-
- * fr.po: Updated French translation.
-
-2007-11-15 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-11-13 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-11-13 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-11-12 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-11-11 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-11-03 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
-
- * pt_BR.po: Brazilian Portuguese translation updated by Pedro de Vaz
- Mello de Medeiros and Luiz Fernando Armesto.
-
-2007-11-02 Michael Biebl <mbiebl@gmail.com>
-
- * de.po: Updated German translation.
-
-2007-10-01 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-11-01 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-10-31 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated
-
-2007-10-27 Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2007-10-24 Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
-
- * be@latin.po: Added Belarusian Latin translation.
- * LINGUAS: Added be@latin.
-
-2007-10-22 Gil Forcada <gforcada@svn.gnome.org>
-
- * ca.po: Updated Catalan translation.
-
-2007-10-17 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation by Nicolau Gonçalves
- <excentriko@gmail.com>.
-
-2007-10-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2007-10-14 Stéphane Raimbault <stephane.raimbault@gmail.com>
-
- * fr.po: Updated French translation by Robert-André Mauchin and
- Claude Paroz.
-
-2007-10-13 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * fr.po: Updated French translation.
-
-2007-10-12 Michael Biebl <mbiebl@gmail.com>
-
- * de.po: Updated German translation.
-
-2007-10-11 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-10-10 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-10-09 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-10-09 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in: Added tracker-applet.c
-
-2007-10-09 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-10-09 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-10-08 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2007-10-07 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in: removed no loger available tm-tray-icon.c
- * it.po: Updated Italian translation.
-
-2007-10-07 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2007-10-05 Jonh Wendell <jwendell@gnome.org>
-
- * pt_BR.po: Updated Brazilian Portuguese translation, by Luiz Armesto.
-
-2007-10-05 Jonh Wendell <jwendell@gnome.org>
-
- * pt_BR.po: Brazilian Portuguese translation, by Luiz Armesto.
- * LINGUAS: pt_BR added
-
-2007-10-05 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-10-02 Michael Biebl <mbiebl@gmail.com>
-
- * de.po: Updated German translation with kind help of Marcus Fritzsch.
-
-2007-09-25 Gil Forcada <gforcada@svn.gnome.org>
-
- * ca.po: Updated Catalan translation.
-
-2007-09-25 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-09-25 Laurent Aguerreche <laurent.aguerreche at free fr>
-
- * fr.po: Updated French translation.
-
-2007-09-24 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-09-23 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation added
- * LINGUAS: hu added
-
-2007-09-20 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-09-16 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2007-09-13 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2007-09-11 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-09-05 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-09-03 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation by Nicolau Gonçalves
- <excentriko@gmail.com>.
-
-2007-08-29 Žygimantas BeruÄka <zygis@gnome.org>
-
- * lt.po: Updated Lithuanian translation.
-
-2007-08-24 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-08-23 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2007-08-20 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-08-19 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2007-08-19 Michael Biebl <mbiebl@gmail.com>
-
- gettext support in deskbar-applet has been fixed:
-
- * POTFILES.skip: Remove tracker-handler.py
- * POTFILES.in: Add tracker-handler.py and new file tracker-module.py
-
-2007-08-13 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * fr.po: Updated French translation.
-
-2007-08-12 Žygimantas BeruÄka <zygis@gnome.org>
-
- * lt.po: ACTUALLY added Lithuanian translation this time.
- * LINGUAS: Returned back 'lt'.
-
-2007-08-11 Jamie McCracken <jamiemcc st gnome.org>
-
- * removed lt from LINGUAS as lt.po is missing from svn and breaks compile
-
-2007-08-11 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation by Timo Jyrinki.
-
-2007-08-10 Žygimantas BeruÄka <zygis@gnome.org>
-
- * lt.po: Added Lithuanian translation.
- * LINGUAS: Added 'lt'.
-
-2007-08-07 Roel Huybrechts <roelhuybrechts@skynet.be>
- * nl.po: Added Dutch translation
-
-2007-07-25 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-07-24 Michael Biebl <mbiebl@gmail.com>
-
- * POTFILES.in: Add src/libtracker/tracker-status.c.
- * POTFILES.skip: Add missing line feed at the end of the file.
-
-2007-07-24 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-07-24 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-07-23 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-07-21 Michael Biebl <mbiebl@gmail.com>
-
- * de.po: Updated German translation.
-
-2007-07-20 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Added Portuguese translation by Nicolau Gonçalves
- <excentriko@gmail.com>.
- * LINGUAS: Added Portuguese (pt) to the list.
-
-2007-07-19 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-07-19 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * fr.po: Updated french translation based on work
- by Jeff <web.kiddo@free.fr>
-
-2007-07-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-07-10 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-07-04 Pema Geyleg <pema.geyleg@gmail.com>
-
- * dz.po: Updated dzongkha translation
-
-2007-07-03 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-07-03 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in:
- * POTFILES.skip:
-
- Updated to reflect changes to .desktop files
-
-2007-07-02 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in:
- * POTFILES.skip:
-
- New files for tracked.desktop localization
-
-2007-07-02 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-06-07 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-06-04 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-06-01 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-05-26 Claude Paroz <claude@2xlibre.net>
-
- * fr.po: Updated French translation.
-
-2007-05-22 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-05-16 David Lodge <dave@cirt.net>
-
- * en_GB.po: Updated British English translation
-
-2007-05-12 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-05-06 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-05-2 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2007-04-15 Claude Paroz <claude@2xlibre.net>
-
- * fr.po: Updated French translation.
-
-2007-04-15 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2007-04-14 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2007-04-06 Jovan Naumovski <jovan@lugola.net>
-
- * mk.po: Added Macedonian translation.
-
-2007-04-02 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * ca.po: Updated Catalan translation by
- Gil Forcada <gilforcada@guifi.net>.
-
-2007-03-28 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2007-03-22 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * ca.po: Updated Catalan translation by
- Gil Forcada <gilforcada@guifi.net>.
-
-2007-03-15 Pema Geyleg <pema.geyleg@gmail.com>
-
- * dz.po: Added dzongkha Translation
-
-2007-03-14 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-03-12 David Lodge <dave@cirt.net>
-
- * en_GB.po: Updated English (British) translation
-
-2007-03-07 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-03-07 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * ca.po: Added Catalan translation by
- Gil Forcada <gilforcada@guifi.net>.
-
-2007-02-26 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-02-25 Matic Zgur <mr.zgur@gmail.com>
-
- * sl.po: Updated Slovenian translation.
-
-2007-01-27 Vasiliy Faronov <qvvx@yandex.ru>
-
- * ru.po: Added Russian translation.
-
-2007-01-27 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
-
-2007-01-24 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in:
- * POTFILES.skip: Move some files to ignore to .skip
- Patch from Michael Biebl.
-
-2007-01-24 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
-
-2007-01-23 David Lodge <dave@cirt.net>
-
- * en_GB.po: Updated English (British) translation
-
-2007-01-23 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-01-22 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in: add src/libtracker/tracker-stats.c
-
-2007-01-21 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-01-17 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-01-15 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2007-01-13 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2007-01-13 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2007-01-12 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
- * POTFILES.in: Added 5 missing files.
-
-2007-01-09 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2007-01-08 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Updated Estonian translation by Ivar Smolin.
-
-2007-01-07 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: New Estonian translation by Ivar Smolin.
-
-2007-01-6 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Khaled Hosny.
-
-2007-01-05 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation
-
-2007-01-02 Matic Zgur <mr.zgur@gmail.com>
-
- * sl.po: Added Slovenian translation.
-
-2007-01-01 David Lodge <dave@cirt.net>
-
- * en_GB.po: Added English (British) translation
-
-2006-12-29 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2006-12-28 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2006-12-26 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2006-12-19 Francisco Javier F. Serrador <serrador@openshine.com>
-
- * es.po: Added Spanish translation.
-
-2006-12-16 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian traslation.
-
-2006-12-14 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Added Finnish translation.
-
-2006-12-13 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Added Swedish translation.
-
-2006-11-30 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-a2006-11-30 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in: Add trackerd.c
-
-2006-11-21 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in: Add tracker-search-tool.desktop.in
-
- * it.po: Updated Italian translation.
-
-2006-11-16 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in:
- Add tracker-tag.c
-
-2006-11-09 Hendrik Richter <hendrikr@gnome.org>
-
- * de.po: Updated German translation.
-
-2006-11-08 Laurent Aguerreche <laurent.aguerreche@free.fr>
-
- * fr.po: Added French translation.
-
-2006-11-06 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Added Italian translation. We need at least
- one to test if l10n works :-)
-
-2006-11-06 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in:
- Remove ../ from sources.
-
-2006-11-06 Luca Ferretti <elle.uca@libero.it>
-
- * POTFILES.in:
- * POTFILES.skip;
- * ChangeLog
- New files for l10n.
-
diff --git a/po/LINGUAS b/po/LINGUAS
deleted file mode 100644
index 52fa1cf6c..000000000
--- a/po/LINGUAS
+++ /dev/null
@@ -1,38 +0,0 @@
-# tracker translations
-#
-# please keep this list sorted alphabetically
-#
-ar
-be
-be@latin
-ca
-cs
-de
-dz
-el
-en_GB
-es
-et
-fi
-fr
-gl
-he
-hu
-it
-ja
-ko
-lt
-mk
-nb
-nl
-oc
-pl
-pt
-pt_BR
-ru
-sk
-sl
-sv
-th
-zh_CN
-
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100644
index 0679bde1f..000000000
--- a/po/POTFILES.in
+++ /dev/null
@@ -1,25 +0,0 @@
-# List of source files containing translatable strings.
-# Please keep this file sorted alphabetically.
-[encoding: UTF-8]
-
-python/deskbar-handler/tracker-handler.py
-python/deskbar-handler/tracker-handler-static.py
-python/deskbar-handler/tracker-module.py
-src/libtracker-gtk/tracker-metadata-tile.c
-src/libtracker-gtk/tracker-tag-bar.c
-src/libtracker/tracker-search.c
-src/libtracker/tracker-stats.c
-src/libtracker/tracker-status.c
-src/libtracker/tracker-tag.c
-src/trackerd/trackerd.c
-src/tracker-applet/tracker-applet.desktop.in.in
-src/tracker-applet/tracker-applet.c
-src/tracker-applet/tracker-applet-prefs.glade
-src/tracker-preferences/tracker-preferences.c
-src/tracker-preferences/tracker-preferences.desktop.in.in
-src/tracker-preferences/tracker-preferences.glade
-src/tracker-search-tool/tracker-search-tool.c
-src/tracker-search-tool/tracker-search-tool-callbacks.c
-src/tracker-search-tool/tracker-search-tool.desktop.in.in
-src/tracker-search-tool/tracker-search-tool-support.c
-trackerd.desktop.in.in
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
deleted file mode 100644
index 242220bef..000000000
--- a/po/POTFILES.skip
+++ /dev/null
@@ -1,7 +0,0 @@
-# List of source files that should NOT be translated.
-# Please keep this file sorted alphabetically.
-
-src/tracker-applet/tracker-applet.desktop.in
-src/tracker-preferences/tracker-preferences.desktop.in
-src/tracker-search-tool/tracker-search-tool.desktop.in
-trackerd.desktop.in
diff --git a/po/ar.po b/po/ar.po
deleted file mode 100644
index 963a0cca1..000000000
--- a/po/ar.po
+++ /dev/null
@@ -1,1496 +0,0 @@
-# translation of tracker.HEAD.po to Arabic
-# Arabic translations for gnome package.
-# Copyright (C) 2007 THE gnome'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the gnome package.
-#
-# Automatically generated, 2007.
-# Khaled Hosny <khaledhosny@eglug.org>, 2007, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-31 11:08+0100\n"
-"PO-Revision-Date: 2008-03-26 16:43+0200\n"
-"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
-"Language-Team: Arabic <doc@arabeyes.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 && "
-"n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "أطلق %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"طالع المحادثة %s\n"
-"%s %s\n"
-"من %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "بريد إلكتروني من %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"استمع إلى موسيقى %s\n"
-"ÙÙŠ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"طالع المستند %s\n"
-"ÙÙŠ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"اÙتح المل٠%s\n"
-"ÙÙŠ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"اعرض الصورة %s\n"
-"ÙÙŠ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"شاهد الÙيديو %s\n"
-"ÙÙŠ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"اÙتح المجلّد %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "مع"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "ÙÙŠ القناة"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "ابحث ÙÙŠ كل مستنداتك، <b>بينما تكتب</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "ملÙات التطوير"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "موسيقى"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "صور"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Ùيديو"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "ابحث عن %s بأداة بحث المÙقتÙÙŠ"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "ابحث ÙÙŠ كل مستنداتك بأداة بحث المÙقتÙÙŠ"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "بحث المÙقتÙÙŠ"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "ابحث بأداة بحث المÙقتÙÙŠ"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "بحث المÙقتÙÙŠ المباشر"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "ابحث بالمÙقتÙÙŠØŒ بينما تكتب"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "المسار : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Ù…Ùغيَّر : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "الحجم : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "ÙˆÙصÙÙ„ إليه : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "المÙرسÙÙ„ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "التاريخ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "التعليق : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "الÙئات : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "المدّة : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "النوع : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "معدل البÙتات : <b>%s Ùƒ.بايت/ثانية</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "السّنة : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "كودÙÙƒ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " مأخوذ بـ <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "الأبعاد : <b>%d × %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "تاريخ الأخذ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "الاتّجاه : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "الوميض : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "طول البؤرة : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "وقت التعرّÙض : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "المؤل٠: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "معدل البÙتات : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Ù…Ùرمّز بـ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "معدّل الإطارات : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "الموضوع : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "عدد الصÙحات : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "عدد الكلمات : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Ø£Ùنشئ ÙÙŠ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "تعليقات : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f ك.بايت"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f م.بايت"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f ج.بايت"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "مجهول"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "اكتب الوسوم التي ترغب بإضاÙتها هنا، Ù…Ùصولة بÙاصلة"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "الوسوم :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "ا_بحث عن وسم"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "ا_حذ٠الوسم"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Ø­Ùدّ عدد النتائج المعروضة بـ ع"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "ع"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "ابحث عن خدمة معيّنة"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "خدمة"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "اظهر نتائج تÙصيليّة أكثر مع نوع الخدمة ونوع mime أيضا"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "مصطلح... - ابحث عن مصطلحات معيّنة"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"تحديد أكثر من مصطلح، سيÙظهÙر العناصر الني تحتوي كل المصطلحات المحدّدة (مصطلح "
-"AND مصطلح2 - ارتباط منطقي)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "قائمة الخدمات المتعرّ٠عليها:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "للمزيد من المعلومات جرب \"%s --help\""
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: مصطلحات البحث Ù…Ùقودة"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: لا اتصال بعÙريت المÙقتÙÙŠ"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "تأكّد من أن \"trackerd\" يعمل قبل تشغيل هذا الأمر"
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "لم ÙŠÙتعرّ٠على الخدمة، جار٠البحث ÙÙŠ ملÙات أخرى...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: خطأ Ù…ÙقتÙÙŠ داخلي: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "لم ÙŠÙعثر على نتائÙج تÙطابÙÙ‚ استعلامك"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - أظهر عدد الملÙات المÙهرسة لكل خدمة"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "يجري جلب حالة الÙهارÙس"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "أضÙ٠الوسْم المحدد لملÙ"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "وسم"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "احذ٠الوسم المحدد من ملÙ"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "احذ٠كل الوÙسوم من ملÙ"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "اسرÙد كل الوÙسÙوم المعرّÙØ©"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "ابحث عن ملÙات بالوسْم المحدد"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ملÙ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ملÙ... - تعامل مع الوÙسوم على الملÙات"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"لإضاÙØ©ØŒ حذÙØŒ أو البحث عن أكثر من وسْم ÙÙŠ وقت واحد، ادمج خيارات متعدّدة مثل:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: Ù…Ùعطى غير صحيح"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: المل٠%s غير موجود"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "دليل ليÙستبعد من الÙهرسة"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/PATH/DIR"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "دليل ليÙشْمل ÙÙŠ الÙهرسة"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "دليل ليÙÙهرس عند بدأ التشغيل Ùقط"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "عطّل أي Ùهرسة أو مراقبة تحدÙثْ"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"القيمة التي تتحكّم ÙÙŠ مستوي التسجيل. القيم المقبولة هي 0 (تعرض/تسجل الأخطاء "
-"Ùقط)ØŒ 1 (الأدنى)ØŒ 2 (Ù…ÙÙصّل)ØŒ Ùˆ 3 (تنقيح)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "قيمة"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"القيمة المستعملة لتخÙي٠الÙهرسة. يجب أن تكون القيمة ÙÙŠ المجال 0-99 (مبدئيا0)"
-"ØŒ القيم الأدنى تزيد سرعة الÙهرسة"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "تخÙي٠استعمال الذاكرة، يمكن أن يبطئ الÙهرسة"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "وقت النوم الأولي، قبل الÙهرسة، بالثواني"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"اللغة اللتي ستستخدم لقائمة الكلمات المÙنشأة والمÙنهية (رموز محار٠ISO 639-1 2)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "لغة"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "اجبر البرنامج على اعادة Ùهرسة كل المحتويات"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "اجعل أخطاء المÙقتÙÙŠ قاتلة"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- ابدأ عÙريت المÙقتÙÙŠ"
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "دليل"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr "لتضمين أو استبعاد أكثر من مجلّد ÙÙŠ Ù†Ùس الوقت، ادمج أكثر من خيار مثل:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "تحكّم وراقب خدمة بحث ÙˆÙهرسة المÙقتÙÙŠ"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "بÙريمج المÙقتÙÙŠ"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "المÙقتÙÙŠ : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "ساكن"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "ÙŠÙÙهرس"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "يَدمÙج"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (ألبثها المستخدم)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (ألبثها النظام)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (ألبثتها البطارية)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "مجلدات"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "صناديق البريد"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "أأعيد Ùهرسة نظامك؟"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "قد تستغرق الÙهرسة وقتا طويلا. أمتأكد أنك تريد إعادة الÙهرسة؟"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "الإحصائيّات"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">إحصائيات الÙهرسة</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"المقتÙÙŠ برمجية حرة، يمكنك توزيعها Ùˆ/أو تعديلها حسب بنود رخصة جنو العمومية "
-"كما نشرتها مؤسسة البرامج الحرة، الإصدار الثاني أو أي إصدار أحدث (حسب رغبتك)."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"يوزع المقتÙÙŠ على أمل أن يكون Ù…Ùيداً، ولكن دون أية ضمانات، بما ÙÙŠ ذلك ضمانات "
-"قابلية البرنامج للتسويق أو الملاءمة لغرض معين. انظر نص رخصة جنو العمومية "
-"لمزيد من التÙاصيل"
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"من المÙترض أنك تلقيت نسخة من رخصة جنو العمومية مع هذا البرنامج؛ إذا لم يحدث "
-"هذا Ùاكتب إلى:\n"
-"Free Software Fondation Inc., 59 Temple Place - Suite 330, Boston, MA 02111 "
-"- 1307, USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"المقتÙÙŠ هو أداة صÙمّÙمت لتستخرج المعلومات والبيانات الÙوقية حول بياناتك الشخصية "
-"ليÙمكن البحث Ùيها بسهولة وبسرعة"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "حقوق النشر 2005-2008 لمؤلÙÙŠ المقتÙÙŠ"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Ùريق عرب آيز للترجمة arabeyes.org :\n"
-"خالد حسني\t<khaledhosny@eglug.org>"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "موقع المÙقتÙÙŠ"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "أل_بث كل الÙهرسة"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "ا_بحث"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "Ø£_عÙد الÙهرسة"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "ال_تÙضيلات"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "تÙضيلات المÙÙ_هرس"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "الإح_صائيّات"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_عنْ"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "Ø£_نهÙ"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "المÙقتÙÙŠ"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr "حاسوبك عى وشك Ùهرسته حيث سيÙمكنك البحث السريع ÙÙŠ ملÙاتك وبريدك"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr "يمكنك إلباث الÙهرسة ÙÙŠ أي وقت وضبط إعدادات الÙهرسة بالنقر الأيمن هنا"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "انتهى المÙقتÙÙŠ من Ùهرسة نظامك"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " ÙÙŠ %Id ساعات Ùˆ %Id دقائق"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " ÙÙŠ %Id دقائق Ùˆ %Id ثواني"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " ÙÙŠ %Id ثواني"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "يمكنك القيام بالبحث بالنقر هنا"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "ملÙّات:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " مجلدات:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " مستندات:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " صور:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " موسيقى:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Ùيديو:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " نصّ:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " تطوير:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Ø£Ùخرى:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "تطبيقات:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "محادثات:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "بريد:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>التحريك</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>الإلباث الذكي</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>الظهور</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "حرّك الأي_قونة أثناء الÙهرسة"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "تÙضيلات البÙريمج"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr "ألبÙØ« آليا إذا كانت الÙهرسة _ستقلل من أداء التطبيقات الأخرى التي تعمل"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "ألبث _كل الÙهرسة آليا عندما يكون الحاسوب قيد الاستخدام"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "Ø£_Ø®Ù٠الأيقونة (ما عدا عند عرض رسائل للمستخدم)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_لا"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "يجب إعادة Ùهرسة البيانات"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"ليتم تطبيق تغييراتك، سيحتاج المقتÙÙŠ إلى إعادة Ùهرسة ملÙاتك. انقر على زر أعÙد "
-"الÙهرسة لتبدأ إعادة الÙهرسة الآن، وإلا Ùسيتم القيام بهذا عند إعادة تشغيل "
-"عÙريت المقتÙÙŠ."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "Ø£_عÙد الÙهرسة"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "يجب إعادة تشغيل عÙريت المقتÙÙŠ"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"ليتم تطبيق تغييراتك، يجب إعادة تشغيل عÙريت المقتÙÙŠ. انقر على زر أعÙد التشغيل "
-"لتعيد تشغيل العÙريت الآن."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "أعÙد الت_شغيل"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "اضبط Ùهرسة الملÙات بالمقتÙÙŠ"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "البحث والÙهرسة"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>الأدلة المÙÙهرسة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>أنماط الملÙات المÙتجاهلة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>المسارات المÙتجاهلة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>دمج الÙهرسة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>حدود الÙهرسة (حسب الملÙ)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>خيارات الÙهرسة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>الÙهرسة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>إدارة الطاقة</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>استهلاك الموارد</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>بدأ التشغيل</b>"
-
-# I think this is the closest meaning.
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>التجذير</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>التخÙÙŠÙ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>مراقبة المجلدات</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "صناديق بريد mbox إضاÙية لتÙÙهرس:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "مسارات إضاÙية لتÙÙهرس وتÙراقب:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "مسارات إضاÙية لتÙÙهرس عند البدأ (لكن لن تÙراقب تحديثاتها):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-#, fuzzy
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"دانمركي\n"
-"هولندي\n"
-"إنجليزي\n"
-"Ùنلندي\n"
-"Ùرنسي\n"
-"ألماني\n"
-"إيطالي\n"
-"نرويجي\n"
-"برتغالي\n"
-"روسي\n"
-"أسباني\n"
-"سويدي"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "عطّل كل الÙهرسة عند العمل على البطارية"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "عطّل مسح الÙهارس الأولي عند العمل على البطارية"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "بريد إلكتروني"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Ùعّل Ùهرسة بريد Ø¥_ÙÙليوشن"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Ùعّل Ùهرسة بريد «_بريدك» (KMail)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-#, fuzzy
-msgid "Enable _Modest email indexing"
-msgstr "Ùعّل Ùهرسة بريد «_بريدك» (KMail)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Ùعّل Ùهرسة بريد _ثندربÙرد"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Ùعّل ال_مراقبة"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Ùعّل ال_Ùهرسة"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "أسرع"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "نمط ملÙات ليÙتَجاهل أثناء الÙهرسة:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "ملÙّات"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "عام"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "ولّÙد _Ù…Ùصغّرات"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "الملÙات المÙتجاهلة"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "تأخير الÙ_هرسة:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Ùهرس محتوى ال_ملÙÙ‘"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Ùهرس الأدلة ال_موصولة"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Ùهرس وراقب دليلي الم_نزل"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "سرعة الÙهرسة:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "أقل _قدر من النص ليÙÙهرس:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "أقصى عدد من ال_كلمات الÙريدة لتÙÙهرس:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "جذور المسارات التي ستÙتجاهل أثناء الÙهرسة:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "قم بدمج سريع للÙهارس (قد يؤثر هذا على أداء النظام)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "الأداء"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "أبطأ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "تÙضيلات المÙقتÙÙŠ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "ال_لغة:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_قلل استهلاك الذاكرة (Ùهرسة أبطأ)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "ا_ستخدم ذاكرة أكثر Ù„Ùهرسة أسرع"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "ك.بايت"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "ثوان"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "ابحث من خدمة معيّنة"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "بريد إلكتروني"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "كل الملÙّات"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "مجلدات"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "مستندات"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "نصّ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "تطوير"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "سجلات الدردشة"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "تطبيقات"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "تأريخ الوÙب"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "ا_Ùتح"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "اÙ_تح مجلّد"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "ا_نقل للمهملات"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "ا_Ø­Ùظ النتائج كـ..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Ùشل تحويل طقم المحار٠لـ \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "حدث الخطأ التالي :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "خطأ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "أتعني"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "لم ÙŠÙرجع بحثك أيّة نتائج."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "أداة البحث المÙقتÙÙŠ-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "أداة بحث المÙقتÙÙŠ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_نتائج البحث:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "لم يحدث أي بحث"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "مشهد القائمة"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "أيقونة"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "اسم"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "ال_Ùئات"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%Id - %Id من %Id عنصر"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "لا عناصر "
-msgstr[1] "عنصرا واحدا"
-msgstr[2] "عنصرين"
-msgstr[3] "%Id عناصر"
-msgstr[4] "%Id عنصرا"
-msgstr[5] "%Id عنصر"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "تعذّر الاتصل بخدمة البحث Ùربما تكون مشغولة"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "ا_بحث:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "مازال المÙقتÙÙŠ ÙŠÙÙهرس، لذا قد لا تظهر كل نتائج البحث"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "ادخل مصطلح بحث من كلمات عديدة Ù…Ùصولة بÙراغات."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "خانة_البحث"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "انقر لأداء بحث."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "تعذّر Ùتح مستند المساعدة."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "أمتأكّدٌ أنّك لا تريد Ùتح أي مستندات؟"
-msgstr[1] "أمتأكّدٌ أنّك تريد Ùتح مستند٠واحد؟"
-msgstr[2] "أمتأكّدٌ أنّك تريد Ùتح مستندين؟"
-msgstr[3] "أمتأكّدٌ أنّك تريد Ùتح %d مستندات؟"
-msgstr[4] "أمتأكّدٌ أنّك تريد Ùتح %d مستندًا؟"
-msgstr[5] "أمتأكّدٌ أنّك تريد Ùتح %d مستند؟"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "لن ÙŠÙتح هذا أي نواÙØ° منÙصلة."
-msgstr[1] "سيÙتح هذا ناÙذةً واحدة منÙصلة."
-msgstr[2] "سيÙتح هذا ناÙذتين منÙصلتين."
-msgstr[3] "سيÙتح هذا %d نواÙØ° منÙصلة."
-msgstr[4] "سيÙتح هذا %d ناÙذة منÙصلة."
-msgstr[5] "سيÙتح هذا %d ناÙذة منÙصلة."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "تعذّر Ùتح المستند \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "تعذّر Ùتح المجلّد \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "مدير الملÙّات نوتلس لا يعمل."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "تعذّر Ùتح التطبيق"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "المستند غير موجود."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "لا يوجد عارض مثبّت قادر على عرض المستند."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "أمتأكدٌ أنّك لا تريد Ùتح أي مجلّدات؟"
-msgstr[1] "أمتأكدٌ أنّك تريد Ùتح مجلّد واحد؟"
-msgstr[2] "أمتأكدٌ أنّك تريد Ùتح مجلّدين؟"
-msgstr[3] "أمتأكدٌ أنّك تريد Ùتح %d مجلّدات؟"
-msgstr[4] "أمتأكدٌ أنّك تريد Ùتح %d مجلّدًا؟"
-msgstr[5] "أمتأكدٌ أنّك تريد Ùتح %d مجلّد؟"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "تعذّر نقل \"%s\" إلى المهملات."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "أتريد حذ٠\"%s\" نهائيّا؟"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "المهملات غير متوÙّرة. تعذّر نقل \"%s\"·إلى المهملات."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "تعذّر حذ٠\"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Ùشل نقل \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Ùشل حذ٠\"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "نشّÙØ· لعرض هذا البريد"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "احÙظ نتائج البحث كـ..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "تعذّر Ø­Ùظ المستند."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "لم تختر اسم مستند."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "تعذّر Ø­Ùظ المستند \"%s\" ÙÙŠ \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "المستند \"%s\" موجود بالÙعل. أتريد استبداله؟"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "سيكتب Ùوق محتويات المل٠إذا استبدلته."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "است_بدÙÙ„"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "اسم المستند الدي حددته مجلّد."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "قد لا تكون لديك تصاريح بالكتابة لهذا المستند."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"ابحث عن المستندات و المجلدات على هذا الحاسوب بالاسم أو المحتوى مستخدما "
-"المÙقتÙÙŠ"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"خطأ GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "اليوم ÙÙŠ %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "أمس ÙÙŠ %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%AØŒ %B %-d %Y ÙÙŠ %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "وصلة (مكسورة)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "وصلة إلى %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "خدمة بحث وقهرسة المÙقتÙÙŠ"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-close"
diff --git a/po/be.po b/po/be.po
deleted file mode 100644
index c53fe8cd3..000000000
--- a/po/be.po
+++ /dev/null
@@ -1,1431 +0,0 @@
-# Belarusian translation for tracker
-# Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007
-# This file is distributed under the same license as the tracker package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker trunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-09 18:07+0000\n"
-"PO-Revision-Date: 2008-03-10 03:30+0200\n"
-"Last-Translator: Alexander Nyakhaychyk <nyakhaychyk@gmail.com>\n"
-"Language-Team: Belarusian <i18n@mova.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "ЗапуÑк %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"ПраглÑд размовы %s \n"
-"%s %s\n"
-"ад %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "ЛіÑÑ‚ ад %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Слухаць музыку %s\n"
-"у %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"ГлÑдзець дакумÑнт %s\n"
-"у %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Ðдкрыць файл %s\n"
-"у %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"ГлÑдзець Ð²Ñ–Ð´Ð°Ñ€Ñ‹Ñ %s\n"
-"у %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"ГлÑдзець відÑа %s\n"
-"у %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Ðдкрыць Ñ‚Ñчку %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "з"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "у канале"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "<b>ІнтÑрактыўны</b> пошук ÑÑрод уÑÑ–Ñ… вашых дакумÑнтаў"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "РаÑпрацоўка"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Музыка"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "ВідарыÑÑ‹"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "ВідÑа"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Пошук \"%s\" інÑтрумÑнтам пошуку Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Пошук уÑÑ–Ñ… вашых дакумÑнтаў із Сродкап пошуку Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Пошук Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Пошук з інÑтрумÑнтам Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Жывы пошук ад Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Пошук з Tracker, таго, што вы ўводзіце"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "ШлÑÑ… : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Зьменены : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Памер : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Ðпошні доÑтуп : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "ÐдпраўлÑльнік : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Дата : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "КамÑнтар : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "КатÑгорыі : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Трываньне : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Жанр : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "БітрÑйт : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Год : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "КодÑк : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " атрымана з <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Памеры : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Дата Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½ÑŒÐ½Ñ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "ÐÑ€Ñ‹ÐµÐ½Ñ‚Ð°Ñ†Ñ‹Ñ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "БліÑк : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "ФокуÑÐ½Ð°Ñ Ð´Ð°ÑžÐ¶Ñ‹Ð½Ñ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Ð§Ð°Ñ Ð½Ð°ÑьвÑÑ‚Ð»ÐµÐ½ÑŒÐ½Ñ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Ðўтар : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "БітрÑйт : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Закадавана ў : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "ЧаÑтата кадраў : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "ТÑма : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "КолькаÑьць Ñтаронак : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "КолькаÑьць Ñлоў : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Створаны : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "КамÑнтары : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f Кб"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f Мб"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f Гб"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1031
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1054
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1076
-msgid "Unknown"
-msgstr "ÐевÑдома"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "УвÑдзіце цÑтлікі, ÑÐºÑ–Ñ Ð¶Ð°Ð´Ð°ÐµÑ†Ðµ, разьмежаваўшы Ñ–Ñ… коÑкамт"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "ЦÑтлікі :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "По_шук цÑтлікаў"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "Ð’Ñ‹_даліць цÑтлік"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Ðбмежаваць колькаÑьць вынікаў"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Пошук характÑрнай паÑлугі"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "ПÐСЛУГÐ"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr ""
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Ð¡ÑŒÐ¿Ñ–Ñ Ñ€Ð°Ñпазнаных паÑлуг:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "ПаÑпрабуйце \"%s --help\" Ð´Ð»Ñ Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ… зьвеÑтак"
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: прапушчаны Ñловы пошуку"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: адÑутнічае ÑувÑзь з Ñлужбай tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "УпÑўніцеÑÑ, што \"trackerd\" працуе, перш чым запуÑьціць гÑÑ‚Ñ‹ загад."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "ПаÑлуга нераÑпазнанаÑ, пошук у Іншых файлах...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Ðа ваш запыт нічога Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð°"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - паказвае колькаÑьць праіндÑкÑаваных файлаў Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ðµ Ñлужбы"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "атрыманьне ÑтатыÑтыкі індÑкÑа"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Дадаць канкрÑтны цÑтлік да файла"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ЦЭТЛІК"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Ðдчапіць вызначаны цÑтлік з файла"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Ðдчапіць уÑе цÑтлікі з файла"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Паказаць уÑе Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ñ†Ñтлікі"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Пошук файлаў з канкрÑтным цÑтлікам"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ФÐЙЛ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ФÐЙЛ... - маніпулюе цÑтлікамі на файлах"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Каб дадаць, выдаліць, альбо адшукаць адшукаць больш за адзін цÑтлік запар, "
-"злучыце опцыі воÑÑŒ так:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: нерÑчаіÑÐ½Ñ‹Ñ Ð°Ñ€Ð³ÑƒÐ¼Ñнты"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: файл %s Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹"
-
-#: ../src/trackerd/trackerd.c:150
-msgid "Directory to exclude from indexing"
-msgstr "ТÑчкі, ÑÐºÑ–Ñ Ð½Ñ Ñ‚Ñ€Ñба індÑкÑаваць"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-#: ../src/trackerd/trackerd.c:152
-msgid "/PATH/DIR"
-msgstr "/ШЛЯХ/ДЫРЭКТОРЫЯ"
-
-#: ../src/trackerd/trackerd.c:151
-msgid "Directory to include in indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:154 ../src/trackerd/trackerd.c:155
-msgid "VALUE"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:155
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:157
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:158
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:158
-msgid "LANG"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Force a re-index of all content"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:160
-msgid "Make tracker errors fatal"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2434
-msgid "- start the tracker daemon"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:2435 ../src/trackerd/trackerd.c:2436
-msgid "DIRECTORY"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:2443
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Ðплет Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker: "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "бÑзьдзейнічае"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "індÑкÑуе"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "аб'Ñдноўвае"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (прыпынены карыÑтальнікам)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (прыпынены ÑÑ‹ÑÑ‚Ñмай)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (прыпынены з-за батарÑÑ–)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "Ñ‚Ñчкі"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "Ð¿Ð°ÑˆÑ‚Ð¾Ð²Ñ‹Ñ Ñкрыні"
-
-#: ../src/tracker-applet/tracker-applet.c:741
-msgid "Re-index your system?"
-msgstr "ПераіндÑкÑаваць вашу ÑÑ‹ÑÑ‚Ñму?"
-
-#: ../src/tracker-applet/tracker-applet.c:742
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:775
-msgid "_Pause All Indexing"
-msgstr "Пр_ыпыніць індÑкÑаваньне"
-
-#: ../src/tracker-applet/tracker-applet.c:784
-msgid "_Search"
-msgstr "По_шук"
-
-#: ../src/tracker-applet/tracker-applet.c:791
-msgid "_Re-index"
-msgstr "П_ераіндÑкÑаваць"
-
-#: ../src/tracker-applet/tracker-applet.c:797
-msgid "_Preferences"
-msgstr "_Перавагі"
-
-#: ../src/tracker-applet/tracker-applet.c:803
-msgid "_Indexer Preferences"
-msgstr "Перавагі _індÑкÑатару"
-
-#: ../src/tracker-applet/tracker-applet.c:809
-msgid "S_tatistics"
-msgstr "С_татыÑтыка"
-
-#: ../src/tracker-applet/tracker-applet.c:815
-msgid "_About"
-msgstr "Пр_а..."
-
-#: ../src/tracker-applet/tracker-applet.c:824
-msgid "_Quit"
-msgstr "Ð’Ñ‹_йÑьці"
-
-#: ../src/tracker-applet/tracker-applet.c:1415
-msgid "Statistics"
-msgstr "СтатыÑтыка"
-
-#: ../src/tracker-applet/tracker-applet.c:1436
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">СтатыÑтыка індÑкÑу</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1550
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1554
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1558
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1573
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1574
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "ÐўтарÑÐºÑ–Ñ Ð¿Ñ€Ð°Ð²Ñ‹ © 2005-2008 аўтары ТрÑкеру"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1584
-msgid "translator-credits"
-msgstr "Alexander Nyakhaychyk"
-
-#: ../src/tracker-applet/tracker-applet.c:1587
-msgid "Tracker Web Site"
-msgstr "Сайт праграмы Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1914 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "ТрÑкер"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1919
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-msgid "Tracker has finished indexing your system"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1923
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1924
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1925
-#, c-format
-msgid " in %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1926
-msgid "You can now perform searches by clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1929
-msgid "Files:"
-msgstr "Файлы:"
-
-#: ../src/tracker-applet/tracker-applet.c:1930
-msgid " Folders:"
-msgstr " ДырÑкторыі:"
-
-#: ../src/tracker-applet/tracker-applet.c:1931
-msgid " Documents:"
-msgstr " ДакумÑнты:"
-
-#: ../src/tracker-applet/tracker-applet.c:1932
-msgid " Images:"
-msgstr " ВідарыÑÑ‹:"
-
-#: ../src/tracker-applet/tracker-applet.c:1933
-msgid " Music:"
-msgstr " Музыка:"
-
-#: ../src/tracker-applet/tracker-applet.c:1934
-msgid " Videos:"
-msgstr " ВідÑа:"
-
-#: ../src/tracker-applet/tracker-applet.c:1935
-msgid " Text:"
-msgstr " ТÑкÑÑ‚:"
-
-#: ../src/tracker-applet/tracker-applet.c:1936
-msgid " Development:"
-msgstr " РаÑпрацоўка:"
-
-#: ../src/tracker-applet/tracker-applet.c:1937
-msgid " Other:"
-msgstr " ІншыÑ:"
-
-#: ../src/tracker-applet/tracker-applet.c:1938
-msgid "Applications:"
-msgstr "ДаÑтаÑаваньні:"
-
-#: ../src/tracker-applet/tracker-applet.c:1939
-msgid "Conversations:"
-msgstr "Гутаркі:"
-
-#: ../src/tracker-applet/tracker-applet.c:1940
-msgid "Emails:"
-msgstr "ЛіÑÑ‚Ñ‹:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>ÐнімацыÑ</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Разумны перапынак</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>БачнаÑьць</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ‹Ñ _значкі Ñž Ñ‡Ð°Ñ Ñ–Ð½Ð´ÑкÑаваннÑ"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Перавагі аплета"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:808
-msgid "Data must be reindexed"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:809
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "_Reindex"
-msgstr "П_ераіндÑкÑаваць"
-
-#: ../src/tracker-preferences/tracker-preferences.c:819
-msgid "Tracker daemon must be restarted"
-msgstr "Ðеабходна перазапуÑьціць дÑмана Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.c:821
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:826
-msgid "_Restart"
-msgstr "Пераза_пуÑьціць"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Пошук Ñ– індÑкÑаваньне"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1229
-msgid "Text"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occurred :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:285
-msgid "Error"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:660
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:691
-msgid "Your search returned no results."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:706
-msgid "Tracker Search Tool-"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:867
-#: ../src/tracker-search-tool/tracker-search-tool.c:2261
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1057
-msgid "Search _results: "
-msgstr ""
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1063
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1123
-#: ../src/tracker-search-tool/tracker-search-tool.c:1283
-msgid "List View"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1195
-msgid "Icon"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1207
-msgid "Name"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1301
-msgid "_Categories"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1581
-#, c-format
-msgid "%d - %d of %d items"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1584
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1632
-#: ../src/tracker-search-tool/tracker-search-tool.c:1827
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2028
-msgid "_Search:"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2042
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2056
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2103
-msgid "Click to perform a search."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
diff --git a/po/be@latin.po b/po/be@latin.po
deleted file mode 100644
index 07114db62..000000000
--- a/po/be@latin.po
+++ /dev/null
@@ -1,1546 +0,0 @@
-# Biełaruski pierakład tracker.
-# Copyright (C) 2007 Ihar Hrachyshka
-# This file is distributed under the same license as the tracker package.
-# Ihar Hrachyshka <ihar.hrachyshka@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-07 12:13+0200\n"
-"PO-Revision-Date: 2008-03-07 12:18+0200\n"
-"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n"
-"Language-Team: Belarusian Latin <i18n@mova.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Uruchom %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Hladzi razmovu %s\n"
-"%s %s\n"
-"ad %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Email ad %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"SÅ‚uchaj muzyku %s\n"
-"u %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Hladzi dakument %s\n"
-"u %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"AdÄyni fajÅ‚ %s\n"
-"u %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Pakažy vyjavu %s\n"
-"u %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Hladzi videa %s\n"
-"u %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"AdÄyni kataloh %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "z"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "u kanale"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Šukaj va ŭsich svaich dakumentach, <b>kali pišaš</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Fajły raspracoŭki"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Muzyka"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Vyjavy"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videa"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Šukaj %s z dapamohaj Pryłady pošuku Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Šukaj va ŭsich svaich dakumentach z dapamohaj Pryłady pošuku Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Pošuk Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Šukaj z dapamohaj Pryłady pošuku Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Žyvy pošuk Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Šukaj z dapamohaj Tracker, kali pišaš"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Ściežka : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Madyfikavany : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Pamier : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Apošni dostup : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "AdpraÅ­nik : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Kamentar : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Katehoryi : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Praciahłaść : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Styl : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "ÄŒastata bitaÅ­ : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Hod : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " vykanana z dapamohaj <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Vymiery : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Data vykanańnia : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Aryjentacyja : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Lampa : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Pamier fokusu : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "ÄŒas vytrymki : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "AÅ­tar : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "ÄŒastata bitaÅ­ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Zakadavana Å­ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "ÄŒastata kadraÅ­ : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Tema : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Kolkaść staronak : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Kolkaść słovaŭ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Stvorany : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Kamentary : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1031
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1054
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1076
-msgid "Unknown"
-msgstr "Nieviadoma"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Uviadzi cetliki, jakija choÄaÅ¡ dadać tut, padzielenyja koskami"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Cetliki :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Å ukaj pa cetliku"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Vydal cetlik"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Abrazaj kolkaść pakazvanych vynikaŭ da N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Šukaj peŭnuju pasłuhu"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "PASÅUHA"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Pakažy padrabiaźniejšyja vyniki taksama z pasłuhaj i typam mime"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERMA... - šukaj fajły z peŭnaj termaj"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Kali akreślenyja niekalki termaŭ, buduć pakazanyja elementy, jakija "
-"Å­trymvajuć USIE akreÅ›lenyja termy (term1 I term2 - lahiÄnaja kanjunkcyja)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Śpis raspaznanych pasłuh:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Pasprabuj \"%s --help\", kab ubaÄyć bolÅ¡ źviestak."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: nie staje termaŭ pošuku"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: niama spaÅ‚uÄeÅ„nia z demanam tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Upeŭnisia, što \"trackerd\" pracuje pierad uruchamleńniem hetaha zahadu."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Pasłuha nie raspaznanaja, pošuk u Inšych fajłach...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: unutranaja pamyłka trackera: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Dla tvajho zapytu niÄoha nia znojdziena"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - pakažy kolkaść zindeksavanych fajłaŭ dla kožnaje pasłuhi"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "zahruzka statystyki indeksavańnia"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Dadaj akreśleny cetlik da fajłu"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "CETLIK"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Vydal akreśleny cetlik dla fajłu"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Vydal usie cetliki dla fajłu"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Pakažy śpis usich akreślenych cetlikaŭ"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Šukaj fajły z akreślenym cetlikam"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FAJÅ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FAJÅ... - manipuluj cetlikami dla fajÅ‚aÅ­"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Kab dadać, vydalić ci Å¡ukać adnaÄasova niekalki cetlikaÅ­, zÅ‚uÄaj niekalki "
-"opcyj takim Äynam:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: niapravilnyja arhumenty"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: fajł %s nia znojdzieny"
-
-#: ../src/trackerd/trackerd.c:150
-msgid "Directory to exclude from indexing"
-msgstr "Kataloh, jaki nia treba indeksavać"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-#: ../src/trackerd/trackerd.c:152
-msgid "/PATH/DIR"
-msgstr "/ŚCIEŽKA/KATALOH"
-
-#: ../src/trackerd/trackerd.c:151
-msgid "Directory to include in indexing"
-msgstr "Kataloh, jaki treba indeksavać"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Kataloh, jaki treba indeksavać tolki pry ŭruchamleńni"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Disable any indexing or watching taking place"
-msgstr "VykluÄ luboje dziejnaje indeksavaÅ„nie ci naziraÅ„nie"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Vartaść, jakaja akreÅ›laje padrabiaznaść viadzieÅ„nia Äasopisu. MahÄymyja "
-"vartaści: 0 (pakazvaje/zapisvaje tolki pamyłki), 1 (minimalna), 2 "
-"(padrabiazna) i 3 (debugavańnie)"
-
-#: ../src/trackerd/trackerd.c:154 ../src/trackerd/trackerd.c:155
-msgid "VALUE"
-msgstr "VARTAŚĆ"
-
-#: ../src/trackerd/trackerd.c:155
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Vartaść dla strymvańnia indeksavańnia. Vartaść musić być u miežach 0-99 "
-"(zmoÅ­Äana 0), mienÅ¡yja vartaÅ›ci pamianÅ¡ajuć chutkaść indeksavaÅ„nia"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimalizuje vykarystańnie pamiaci, ale moža zapavolić indeksavańnie"
-
-#: ../src/trackerd/trackerd.c:157
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Inicyjalny Äas snu, prosta da indeksavaÅ„nia, u sekundach"
-
-#: ../src/trackerd/trackerd.c:158
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Mova dla śpisaŭ karanioŭ i spynnych słovaŭ (dvuchznakavy kod ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "LANG"
-msgstr "MOVA"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Force a re-index of all content"
-msgstr "Vymahaj pieraindeksavańnie ŭsiaho źmieściva"
-
-#: ../src/trackerd/trackerd.c:160
-msgid "Make tracker errors fatal"
-msgstr "Fatalizuj pamyłki trackera"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2434
-msgid "- start the tracker daemon"
-msgstr "- uruchom demana tracker"
-
-#: ../src/trackerd/trackerd.c:2435 ../src/trackerd/trackerd.c:2436
-msgid "DIRECTORY"
-msgstr "KATALOH"
-
-#: ../src/trackerd/trackerd.c:2443
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Kab ukluÄyć ci vykluÄyć adnaÄasova niekalki katalohaÅ­, zÅ‚uÄy niekalki opcyj "
-"takim Äynam:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Kiruj i naziraj za pracaj pasłuhi pošuku i indeksavańnia Trackera"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Aplet Trackera"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "ÄŒakaje"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "Indeksuje"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "Źlivaje źviestki"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (prypynieny karystalnikam)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (prypynieny systemaj)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (prypynieny, kab aÅ¡Äadzić batareju)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "katalohi"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "paštovyja skryni"
-
-#: ../src/tracker-applet/tracker-applet.c:741
-msgid "Re-index your system?"
-msgstr "Pieraindeksavać systemu?"
-
-#: ../src/tracker-applet/tracker-applet.c:742
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"IndeksavaÅ„nie moža być doÅ­haj aperacyjaj. Ci ty sapraÅ­dy choÄaÅ¡ "
-"pieraindeksavać usiu systemu?"
-
-#: ../src/tracker-applet/tracker-applet.c:775
-msgid "_Pause All Indexing"
-msgstr "_Prypyni indeksavańnie"
-
-#: ../src/tracker-applet/tracker-applet.c:784
-msgid "_Search"
-msgstr "_Å ukaj"
-
-#: ../src/tracker-applet/tracker-applet.c:791
-msgid "_Re-index"
-msgstr "_Pieraindeksuj"
-
-#: ../src/tracker-applet/tracker-applet.c:797
-msgid "_Preferences"
-msgstr "_Nałady"
-
-#: ../src/tracker-applet/tracker-applet.c:803
-msgid "_Indexer Preferences"
-msgstr "_Nałady indeksoŭnika"
-
-#: ../src/tracker-applet/tracker-applet.c:809
-msgid "S_tatistics"
-msgstr "_Statystyka"
-
-#: ../src/tracker-applet/tracker-applet.c:815
-msgid "_About"
-msgstr "_Ab prahramie"
-
-#: ../src/tracker-applet/tracker-applet.c:824
-msgid "_Quit"
-msgstr "_Vyjdzi"
-
-#: ../src/tracker-applet/tracker-applet.c:1415
-msgid "Statistics"
-msgstr "Statystyka"
-
-#: ../src/tracker-applet/tracker-applet.c:1436
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Statystyka indeksavańnia</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1550
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker źjaŭlajecca svabodnaj prahramaj; ty možaš raspaŭsiudžvać jaje i/albo "
-"madyfikavać zhodna z umovami Ahulnaj hramadzkaj licenzii GNU (GNU GPL), "
-"apublikavanaj Fundacyjaj svabodnych prahramaÅ­ (Free Software Foundation), u "
-"versii 2 albo (pry žadańni) luboj paźniejšaj."
-
-#: ../src/tracker-applet/tracker-applet.c:1554
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Prahrama Tracker raspaŭsiudžvajecca sa spadziavańniami, što jana budzie "
-"karysnaj, ale BIEŹ NIJAKICH HARANTYJAŬ; navat biez harantavańnia PRYDATNAŚCI "
-"DA KANKRETNAHA VYKARYSTAŃNIA. PadrabiaznaÅ›ci možna praÄytać u Ahulnaj "
-"hramadzkaj licenzii GNU (GNU GPL)."
-
-#: ../src/tracker-applet/tracker-applet.c:1558
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Ty musiŭ atrymać kopiju Ahulnaj hramadzkaj licenzii GNU (GNU GPL) razam z "
-"Trackeram; kali ty nie atrymaŭ jaje, napišy pra heta (pa-anhielsku) pa "
-"adrasie: Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, "
-"MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1573
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker, pryłada, jakaja vymaje infarmacyju ab asabistych źviestkach, jakuju "
-"paśla možna efektyŭna vykarystać dla pošuku"
-
-#: ../src/tracker-applet/tracker-applet.c:1574
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Aŭtarskija pravy © 2005-2008 Aŭtary Trackera"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1584
-msgid "translator-credits"
-msgstr "Ihar HraÄyÅ¡ka <booxter@lacinka.org>"
-
-#: ../src/tracker-applet/tracker-applet.c:1587
-msgid "Tracker Web Site"
-msgstr "Web-staronka Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1914 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1919
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Zaraz tvoj kamputar budzie praindeksavany, kab ty moh chutka šukać u svaich "
-"fajłach i emaiłach"
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Ty možaÅ¡ prypynić indeksavaÅ„nie Å­ luby Äas i skanfihuravać naÅ‚ady "
-"indeksavańnia, kliknuŭšy tut pravaj knopkaj myšy"
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker zakonÄyÅ­ indeksavać tvaju systemu"
-
-#: ../src/tracker-applet/tracker-applet.c:1923
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " za %d hadzin i %d chvilin"
-
-#: ../src/tracker-applet/tracker-applet.c:1924
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " za %d chvilin i %d sekundaÅ­"
-
-#: ../src/tracker-applet/tracker-applet.c:1925
-#, c-format
-msgid " in %d seconds"
-msgstr " za %d sekundaÅ­"
-
-#: ../src/tracker-applet/tracker-applet.c:1926
-msgid "You can now perform searches by clicking here"
-msgstr "Ciapier ty možaš šukać, kliknuŭšy tut"
-
-#: ../src/tracker-applet/tracker-applet.c:1929
-msgid "Files:"
-msgstr "Fajły:"
-
-#: ../src/tracker-applet/tracker-applet.c:1930
-msgid " Folders:"
-msgstr " Katalohi:"
-
-#: ../src/tracker-applet/tracker-applet.c:1931
-msgid " Documents:"
-msgstr " Dakumenty:"
-
-#: ../src/tracker-applet/tracker-applet.c:1932
-msgid " Images:"
-msgstr " Vyjavy:"
-
-#: ../src/tracker-applet/tracker-applet.c:1933
-msgid " Music:"
-msgstr " Muzyka:"
-
-#: ../src/tracker-applet/tracker-applet.c:1934
-msgid " Videos:"
-msgstr " Videa:"
-
-#: ../src/tracker-applet/tracker-applet.c:1935
-msgid " Text:"
-msgstr " Tekst:"
-
-#: ../src/tracker-applet/tracker-applet.c:1936
-msgid " Development:"
-msgstr " RaspracoÅ­ka:"
-
-#: ../src/tracker-applet/tracker-applet.c:1937
-msgid " Other:"
-msgstr " Inšaje:"
-
-#: ../src/tracker-applet/tracker-applet.c:1938
-msgid "Applications:"
-msgstr "Aplikacyi:"
-
-#: ../src/tracker-applet/tracker-applet.c:1939
-msgid "Conversations:"
-msgstr "Razmovy:"
-
-#: ../src/tracker-applet/tracker-applet.c:1940
-msgid "Emails:"
-msgstr "Emaiły:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animacyja</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Razumnyja paÅ­zy</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>BaÄnaść</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "_Animuj ikonu padÄas indeksavaÅ„nia"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Nałady apletu"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"AÅ­tamatyÄna _prypyniaj indeksavaÅ„nie, kali jano moža zapavolić "
-"inÅ¡yja raboÄyja aplikacyi"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "_AÅ­tamatyÄna prypyniaj indeksavaÅ„nie, kali kamputar aktyÅ­na vykarystoÅ­vajecca"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Schavaj ikonu (akramia jak dziela demanstracyi paviedamleńniaŭ karystalniku)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_VykluÄana"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/tracker-preferences/tracker-preferences.c:808
-msgid "Data must be reindexed"
-msgstr "Treba pieraindeksavać źviestki"
-
-#: ../src/tracker-preferences/tracker-preferences.c:809
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Kab užyć źmieny, jakija ty ŭnios, Trackeru treba pieraindeksavać tvaje "
-"fajÅ‚y. Klikni knopku \"Pieraindeksuj\", kab paÄać pieraindeksacyju, inaÄaj "
-"hetaja aperacyja budzie vykananaja pry nastupnym novym Å­kluÄeÅ„nia demana."
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "_Reindex"
-msgstr "_Pieraindeksuj"
-
-#: ../src/tracker-preferences/tracker-preferences.c:819
-msgid "Tracker daemon must be restarted"
-msgstr "Treba pieraÅ­kluÄyć demana Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.c:821
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Kab užyć źmieny, jakija ty Å­nios, Tracker treba nanoÅ­ ukluÄyć. Klikni knopku "
-"\"PierakluÄy\", kab pierakluÄyć demana."
-
-#: ../src/tracker-preferences/tracker-preferences.c:826
-msgid "_Restart"
-msgstr "_PieraÅ­kluÄy"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Skanfihuruj indeksavańnie fajłaŭ Trackeram"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Pošuk i indeksavańnie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Zapavolenyja katalohi</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Ihnaravanyja ŭzory nazvaŭ fajłaŭ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ihnaravanyja ściežki</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Źlićcio indeksaŭ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Abmiežavańni indeksavańnia (dla fajłu)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opcyi indeksavańnia</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indeksavańnie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Kiravańnie siłkavańniem</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Vykarystańnie resursaŭ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Uruchamleńnie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Karani</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Zapavoleńnie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Naziraj za katalohami</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Dadatkovyja paštovyja skryni typu mbox, kab indeksavać:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Dadatkovyja ściežki, kab indeksavać i nazirać:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Dadatkovyja ściežki, kab indeksavać pry ŭruchamleńni (ale nie nazirać za "
-"źmienami):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Dackaja\n"
-"Halandzkaja\n"
-"Anhielskaja\n"
-"Finskaja\n"
-"Francuskaja\n"
-"Niamieckaja\n"
-"Italjanskaja\n"
-"Narveskaja\n"
-"Partuhalskaja\n"
-"Rasiejskaja\n"
-"Hišpanskaja\n"
-"Å vedzkaja"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "VykluÄaj indeksavaÅ„nie, pracujuÄy ad batarei"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "VykluÄaj paÄatkovuju aÄystku indeksu, pracujuÄy ad batarei"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "Email"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "UkluÄy indeksavaÅ„nie emaiÅ‚aÅ­ _Evolution'a"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "UkluÄy indeksavaÅ„nie emaiÅ‚aÅ­ _KMail'a"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "UkluÄy indeksavaÅ„nie emaiÅ‚aÅ­ _Thunderbird'a"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "UkluÄy _naziraÅ„nie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "UkluÄy _indeksavaÅ„nie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "ChutÄej"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Uzory nazvaÅ­ fajÅ‚aÅ­, jakija treba ihnaravać padÄas indeksavaÅ„nia:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Fajły"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Ahulnaje"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Hieneruj _minijatury"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Ihnaravanyja fajły"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "_Zatrymka indeksavańnia: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Indeksuj _źmieściva fajłaŭ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Indeksuj _zmantavanyja katalohi"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Indeksuj i naziraj za maim chatnim _kataloham"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Chutkaść indeksavańnia:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "Maksymalnaja _kolkaść tekstu, kab indeksavać:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Maksymalnaja kolkaść unikalnych _słovaŭ, kab indeksavać:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Karani Å›ciežak, kab ihnaravać padÄas indeksavaÅ„nia:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Vykanaj chutkaje źlićcio indeksaŭ (moža zapavolić systemu)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Chutkaść pracy"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Pavolniej"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Nałady Trackera"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Mova:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimalizuj vykarystańnie pamiaci (pavolniejšaje indeksavańnie)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Užyj jaÅ¡Äe pamiaci dziela chutÄejÅ¡aha indeksavaÅ„nia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "sekundy"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Šukaj z peŭnaj pasłuhi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Emaiły"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Usie fajły"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Katalohi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dakumenty"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1229
-msgid "Text"
-msgstr "Tekst"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "RaspracoÅ­ka"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Zapisy razmovaÅ­"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplikacyi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Historyja Web"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_AdÄyni"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "A_dÄyni kataloh"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Pieraniasi ŭ śmietnicu"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Zapišy vyniki jak..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Pamyłka naboru znakaŭ razmovy dla \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occurred :"
-msgstr "Zdaryłasia nastupnaja pamyłka :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:285
-msgid "Error"
-msgstr "Pamyłka"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:660
-msgid "Did you mean"
-msgstr "Ci ty mieÅ­ na Å­vazie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:691
-msgid "Your search returned no results."
-msgstr "Tvoj pošuk nie viarnuŭ vynikaŭ."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:706
-msgid "Tracker Search Tool-"
-msgstr "Pryłada pošuku Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:867
-#: ../src/tracker-search-tool/tracker-search-tool.c:2261
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Pryłada pošuku Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1057
-msgid "Search _results: "
-msgstr "_Vyniki pošuku: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1063
-msgid "no search performed"
-msgstr "pošuk nia ździejśnieny"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1123
-#: ../src/tracker-search-tool/tracker-search-tool.c:1283
-msgid "List View"
-msgstr "Vyhlad śpisu"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1195
-msgid "Icon"
-msgstr "Ikona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1207
-msgid "Name"
-msgstr "Nazva"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1301
-msgid "_Categories"
-msgstr "_Katehoryi"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1581
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d z %d vynikaÅ­"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1584
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d vynik"
-msgstr[1] "%d vyniki"
-msgstr[2] "%d vynikaÅ­"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1632
-#: ../src/tracker-search-tool/tracker-search-tool.c:1827
-msgid "Could not connect to search service as it may be busy"
-msgstr "NiemahÄyma spaÅ‚uÄycca z pasÅ‚uhaj poÅ¡uku, bo jana zaniataja"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2028
-msgid "_Search:"
-msgstr "_Å ukaj:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2042
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "Tracker jaÅ¡Äe indeksuje, tamu dastupnyja jaÅ¡Äe nia Å­sie vyniki poÅ¡uku"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2056
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Uviadzi termu pošuku ź niekalkich słovaŭ, padzielenych prabiełami."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "search_entry"
-msgstr "element_pošuku"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2103
-msgid "Click to perform a search."
-msgstr "Klikni, kab šukać."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "NiemahÄyma adÄynić dapamožny dakument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Ty sapraÅ­dy choÄaÅ¡ adÄynić %d dakument?"
-msgstr[1] "Ty sapraÅ­dy choÄaÅ¡ adÄynić %d dakumenty?"
-msgstr[2] "Ty sapraÅ­dy choÄaÅ¡ adÄynić %d dakumentaÅ­?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Hetaje dziejaÅ„nie adÄynić %d asobnaje vakno."
-msgstr[1] "Hetaje dziejaÅ„nie adÄynić %d asobnyja vokny."
-msgstr[2] "Hetaje dziejaÅ„nie adÄynić %d asobnych voknaÅ­."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "NiemahÄyma adÄynić dakument \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "NiemahÄyma adÄynić kataloh \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Kiraŭnik fajłaŭ Nautilus nie ŭruchomleny."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "NiemahÄyma adÄynić aplikacyju"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "Dakument nie isnuje."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Niama zainstalavanaha prahladalnika, jaki moža pakazać dakument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Ty sapraÅ­dy choÄaÅ¡ adÄynić %d kataloh?"
-msgstr[1] "Ty sapraÅ­dy choÄaÅ¡ adÄynić %d katalohi?"
-msgstr[2] "Ty sapraÅ­dy choÄaÅ¡ adÄynić %d katalohaÅ­?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "NiemahÄyma pieranieÅ›ci \"%s\" u Å›mietnicu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "ChoÄaÅ¡ nazaŭždy vydalić \"%s\"?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Åšmietnica niedastupnaja. NiemahÄyma pieranieÅ›ci \"%s\" u Å›mietnicu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "NiemahÄyma vydalić \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Niaŭdały pieranos \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Niaŭdałaje vydaleńnie \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Aktyvizuj, kab pahladzieć hety email"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Zapišy vyniki pošuku jak..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "NiemahÄyma zapisać dakument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Ty nia vybraÅ­ nazvy dakumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "NiemahÄyma zapisać dakument \"%s\" u \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dakument \"%s\" užo isnuje. ChoÄaÅ¡ zamianić jaho?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Kali ty zamieniš najaŭny fajł, jaho źmieściva budzie nadpisanaje."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Zamiani"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "Abranaja taboju nazva dakumentu źjaŭlajecca kataloham."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "Tabie moža nie stavać dazvołu na zapis dakumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Znajdzi dakumenty j katalohi na hetym kamputary pa naźvie ci źmieście z "
-"dapamohaj Trackera"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Pamyłka GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "siońnia a %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "uÄora a %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y a %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "spasyłka (złamanaja)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "spasyłka na %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Pasłuha pošuku i indeksavańnia Trackera"
-
-#~ msgid "_Search..."
-#~ msgstr "_Å ukaj..."
-
-#~ msgid "Search:"
-#~ msgstr "Å ukaj:"
-
-#~ msgid "Status:"
-#~ msgstr "Status:"
-
-#~ msgid "Progress:"
-#~ msgstr "Prahres:"
-
-#~ msgid "Indexing in progress"
-#~ msgstr "Vykonvajecca indeksavańnie"
-
-#~ msgid "Indexing completed"
-#~ msgstr "IndeksavaÅ„nie skonÄanaje"
-
-#~ msgid "Indexes are being merged"
-#~ msgstr "Indeksy źlityja"
-
-#~ msgid "Paused while on battery power"
-#~ msgstr "Prypynienaje, pakul pracujem ad batarei"
-
-#~ msgid "Paused temporarily"
-#~ msgstr "ÄŒasova prypynienaje"
-
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "Tracker ciapier źlivaje indeksy, što moža zapavolić systemu na niekalki "
-#~ "chvilin\n"
-#~ "\n"
-#~ "Ty možaš prypynić heta, kliknuŭšy tut pravaj knopkaj myšy"
-
-#~ msgid ""
-#~ "Your system must be re-indexed for your changes to take effect. Re-index "
-#~ "now?"
-#~ msgstr ""
-#~ "Kab prymianić źmieny, treba pieraindeksavać tvaju systemu. Zrabić heta "
-#~ "zaraz?"
-
-#~ msgid ""
-#~ "Tracker indexer needs to be restarted for your changes to take effect. "
-#~ "Restart now?"
-#~ msgstr ""
-#~ "Kab prymianić źmieny, treba pieraŭruchomić indeksatara Tracker. Zrabić "
-#~ "heta zaraz?"
-
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Paštovyja skryni</b>"
-
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Pasłuhi</b>"
diff --git a/po/ca.po b/po/ca.po
deleted file mode 100644
index d85de0071..000000000
--- a/po/ca.po
+++ /dev/null
@@ -1,1612 +0,0 @@
-# Catalan translation of tracker.
-# Copyright © 2005, 2006 Free Software Foundation, Inc.
-# This file is distributed under the same license as the tracker package.
-# Gil Forcada <gilforcada@guifi.net>, 2007, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-11 22:00+0100\n"
-"PO-Revision-Date: 2008-03-11 22:07+0100\n"
-"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
-"Language-Team: Catalan <tradgnome@softcatala.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Executa %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Vegeu la conversa %s\n"
-"%s %s\n"
-"de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Correu electrònic de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Escolta la música %s\n"
-"amb %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Vegeu el document %s\n"
-"amb %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Obre el fitxer %s\n"
-"amb %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Vegeu la imatge %s\n"
-"amb %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Vegeu el vídeo %s\n"
-"amb %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Obre el directori %s\n"
-"amb %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "amb"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "en el canal"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Cerca en tots els documents, <b>mentre teclegeu</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Fitxers de desenvolupament"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Música"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Imatges"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Vídeos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Cerca %s amb l'eina de cerca Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Cerca tots els documents amb l'eina de cerca Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Cerca del Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Cerca amb l'eina de cerca Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Cerca en viu del Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Cerca amb el Tracker, mentre teclegeu"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Camí : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modificat : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Mida : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Accedit : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Remitent : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comentari : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categories : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Durada : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Gènere : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Taxa de bits : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Any : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Còdec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " obtinguda amb una <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensions : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Feta : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientació : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flaix : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Distància focal : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Temps d'exposició : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Taxa de bits : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codificat en : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Velocitat de marc : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Assumpte : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Nombre de pàgines : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Nombre de paraules : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Creat : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comentaris : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f kB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Afegiu aquí les etiquetes que voleu, separades per comes"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Etiquetes :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "Cerca per l'_etiqueta"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Suprimeix l'etiqueta"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limita el nombre de resultats mostrats a N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Cerca un servei específic"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVEI"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Mostra resultats més detallats, també amb serveis i tipus mime"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERME... - cerca fitxers per a termes concrets"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Si s'especifica més d'un terme, es mostraran els elements que continguin "
-"tots els termes especificats (terme1 i terme2 - conjunció lògica)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "La llista de serveis reconeguts és:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Per a més informació escriviu «%s --help»."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: falten termes de cerca"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: no hi ha connexió amb el dimoni del tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Assegureu-vos que està funcionant el «trackerd» abans d'executar aquesta "
-"ordre."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "No s'ha reconegut el servei, s'està cercant en altres fitxers...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: error intern del tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "No s'ha trobat cap resultat que coincideixi amb la vostra consulta"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - mostra el nombre de fitxers indexats per a cada servei"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "s'estan recollint les estadístiques d'índex"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Afegeix l'etiqueta especificada a un fitxer"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ETIQUETA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Suprimeix l'etiqueta especificada d'un fitxer"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Suprimeix totes les etiquetes d'un fitxer"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Llista totes les etiquetes definides"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Cerca fitxers amb l'etiqueta especificada"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FITXER..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FITXER... - gestiona les etiquetes en els fitxers"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Per a afegir, suprimir, o cercar múltiples etiquetes alhora, ajunteu "
-"múltiples opcions d'aquesta manera:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: arguments no vàlids"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: no s'ha trobat el fitxer %s"
-
-#: ../src/trackerd/trackerd.c:150
-msgid "Directory to exclude from indexing"
-msgstr "Directori a excloure de la indexació"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-#: ../src/trackerd/trackerd.c:152
-msgid "/PATH/DIR"
-msgstr "/CAMí/DIRECTORI"
-
-#: ../src/trackerd/trackerd.c:151
-msgid "Directory to include in indexing"
-msgstr "Directori a incloure en la indexació"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Directori que s'ha d'indexar només a l'inici"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-"Inhabilita qualsevol indexació o visualització que s'estigui duent a terme"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Valor que controla el nivell d'enregistrament. Els valors vàlids són 0 "
-"(només mostra/enregistra errors), 1 (mínim) i 2 (detallat) i 3 (depuració)"
-
-#: ../src/trackerd/trackerd.c:154 ../src/trackerd/trackerd.c:155
-msgid "VALUE"
-msgstr "VALOR"
-
-#: ../src/trackerd/trackerd.c:155
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Valor a utilitzar per a regular la velocitat d'indexació. El valor ha "
-"d'estar entre 0-99 (predeterminat a 0) en què els valors baixos incrementen "
-"la velocitat d'indexació"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimitza l'ús de memòria però pot alentir la indexació"
-
-#: ../src/trackerd/trackerd.c:157
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Temps d'espera inicial, abans de començar a indexar, en segons"
-
-#: ../src/trackerd/trackerd.c:158
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Llenguatge a utilitzar per al leximitzador i per a la llista de paraules "
-"buides (codi de 2 caràcters de l'ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "LANG"
-msgstr "LLENG"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Force a re-index of all content"
-msgstr "Força una reindexació de tots els continguts"
-
-#: ../src/trackerd/trackerd.c:160
-msgid "Make tracker errors fatal"
-msgstr "Fes que els errors del Tracker siguin fatals"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2424
-msgid "- start the tracker daemon"
-msgstr "- inicia el dimoni del tracker"
-
-#: ../src/trackerd/trackerd.c:2425 ../src/trackerd/trackerd.c:2426
-msgid "DIRECTORY"
-msgstr "DIRECTORI"
-
-#: ../src/trackerd/trackerd.c:2433
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Per a incloure o excloure múltiples directoris alhora, uniu múltiples "
-"opcions d'aquesta manera:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Controla i fa un seguiment del servei de cerca i d'indexació Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Miniaplicació Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker: "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "Inactiu"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "S'està indexant"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "S'està fusionant"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (en pausa per l'usuari)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (en pausa pel sistema)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (en pausa perquè s'està utilitzant la bateria)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "directoris"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "bústies de correu"
-
-#: ../src/tracker-applet/tracker-applet.c:739
-msgid "Re-index your system?"
-msgstr "Voleu tornar a indexar el sistema?"
-
-#: ../src/tracker-applet/tracker-applet.c:740
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indexar pot ser molt llarg. Segur que ho voleu fer?"
-
-#: ../src/tracker-applet/tracker-applet.c:773
-msgid "_Pause All Indexing"
-msgstr "Posa en _pausa totes les indexacions"
-
-#: ../src/tracker-applet/tracker-applet.c:782
-msgid "_Search"
-msgstr "_Cerca"
-
-#: ../src/tracker-applet/tracker-applet.c:789
-msgid "_Re-index"
-msgstr "_Torna a indexar"
-
-#: ../src/tracker-applet/tracker-applet.c:795
-msgid "_Preferences"
-msgstr "_Preferències"
-
-#: ../src/tracker-applet/tracker-applet.c:801
-msgid "_Indexer Preferences"
-msgstr "Preferències de l'_indexador"
-
-#: ../src/tracker-applet/tracker-applet.c:807
-msgid "S_tatistics"
-msgstr "Es_tadístiques"
-
-#: ../src/tracker-applet/tracker-applet.c:813
-msgid "_About"
-msgstr "_Quant a"
-
-#: ../src/tracker-applet/tracker-applet.c:822
-msgid "_Quit"
-msgstr "_Surt"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "Statistics"
-msgstr "Estadístiques"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Estadístiques de l'índex</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1548
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"El Tracker és programari lliure; podeu redistribuir-lo i/o modificar-lo sota "
-"els termes de la Llicència Pública General GNU tal com ha estat publicada "
-"per la Free Software Foundation; ja sigui la versió 2 de la Llicència o bé "
-"(si ho preferiu) qualsevol altra versió posterior."
-
-#: ../src/tracker-applet/tracker-applet.c:1552
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"El Tracker es distribueix amb l'expectativa que serà útil, però SENSE CAP "
-"GARANTIA; ni tan sols la garantia implícita de COMERCIABILITAT o ADEQUACIÓ "
-"PER UN PROPÒSIT PARTICULAR. Vegeu la Llicència Pública General GNU per "
-"obtenir-ne més detalls."
-
-#: ../src/tracker-applet/tracker-applet.c:1556
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Hauríeu d'haver rebut una còpia de la Llicència Pública General GNU "
-"juntament amb el Tracker; en cas contrari, escriviu a la Free Software "
-"Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1571
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"El Tracker és una eina dissenyada per a extreure informació i metadades de "
-"les vostres dades personals de manera que es pugui cercar ràpid i fàcilment"
-
-#: ../src/tracker-applet/tracker-applet.c:1572
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Els autors del Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1582
-msgid "translator-credits"
-msgstr "Gil Forcada <gilforcada@guifi.net>"
-
-#: ../src/tracker-applet/tracker-applet.c:1585
-msgid "Tracker Web Site"
-msgstr "Lloc web del Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1912 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1917
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"S'indexarà l'ordinador de manera que pugueu realitzar cerques de fitxers i "
-"correus electrònics més ràpidament"
-
-#: ../src/tracker-applet/tracker-applet.c:1918
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Podeu fer una pausa a la indexació en qualsevol moment i configurar els "
-"paràmetres d'indexació si feu clic amb el botó secundari aquí"
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid "Tracker has finished indexing your system"
-msgstr "El Tracker ha acabat d'indexar el sistema"
-
-#: ../src/tracker-applet/tracker-applet.c:1921
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " en %d hores i %d minuts"
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " en %d minuts i %d segons"
-
-#: ../src/tracker-applet/tracker-applet.c:1923
-#, c-format
-msgid " in %d seconds"
-msgstr " en %d segons"
-
-#: ../src/tracker-applet/tracker-applet.c:1924
-msgid "You can now perform searches by clicking here"
-msgstr "Ara ja podeu fer cerques si feu clic aquí"
-
-#: ../src/tracker-applet/tracker-applet.c:1927
-msgid "Files:"
-msgstr "Fitxers:"
-
-#: ../src/tracker-applet/tracker-applet.c:1928
-msgid " Folders:"
-msgstr " Directoris:"
-
-#: ../src/tracker-applet/tracker-applet.c:1929
-msgid " Documents:"
-msgstr " Documents:"
-
-#: ../src/tracker-applet/tracker-applet.c:1930
-msgid " Images:"
-msgstr " Imatges:"
-
-#: ../src/tracker-applet/tracker-applet.c:1931
-msgid " Music:"
-msgstr " Música:"
-
-#: ../src/tracker-applet/tracker-applet.c:1932
-msgid " Videos:"
-msgstr " Vídeos:"
-
-#: ../src/tracker-applet/tracker-applet.c:1933
-msgid " Text:"
-msgstr " Text:"
-
-#: ../src/tracker-applet/tracker-applet.c:1934
-msgid " Development:"
-msgstr " Desenvolupament:"
-
-#: ../src/tracker-applet/tracker-applet.c:1935
-msgid " Other:"
-msgstr " Altres:"
-
-#: ../src/tracker-applet/tracker-applet.c:1936
-msgid "Applications:"
-msgstr "Aplicacions:"
-
-#: ../src/tracker-applet/tracker-applet.c:1937
-msgid "Conversations:"
-msgstr "Converses:"
-
-#: ../src/tracker-applet/tracker-applet.c:1938
-msgid "Emails:"
-msgstr "Correus electrònics:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animació</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-#, fuzzy
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Inici</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Visibilitat</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-#, fuzzy
-msgid "Animate _icon when indexing"
-msgstr "Habilita la indexació dels correus electrònics de l'_Evolution"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-#, fuzzy
-msgid "Applet Preferences"
-msgstr "_Preferències"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/tracker-preferences/tracker-preferences.c:808
-msgid "Data must be reindexed"
-msgstr "S'han de tornar a indexar les dades"
-
-#: ../src/tracker-preferences/tracker-preferences.c:809
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Perquè els canvis tinguin efecte, el Tracker ha de tornar a indexar els "
-"fitxers. Feu clic al botó «Torna a indexar» per a començar l'indexament ara; "
-"si no ho feu ara es farà la pròxima vegada que el dimoni del Tracker es "
-"reiniciï."
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "_Reindex"
-msgstr "_Torna a indexar"
-
-#: ../src/tracker-preferences/tracker-preferences.c:819
-msgid "Tracker daemon must be restarted"
-msgstr "S'ha de reiniciar el dimoni del Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.c:821
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Perquè els canvis tinguin efecte, s'ha de reiniciar-lo. "
-"Feu clic al botó de «Reinicia» per a reiniciar el dimoni ara."
-
-#: ../src/tracker-preferences/tracker-preferences.c:826
-msgid "_Restart"
-msgstr "_Reinicia"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configureu la indexació de fitxers amb el Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Cerca i indexació"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Directoris a indexar</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Patrons de fitxers a ignorar</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Camins a ignorar</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Fusió d'índexs</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Límits d'indexació (per fitxer)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opcions d'indexació</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexació</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Gestió de l'energia</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Utilització dels recursos</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Inici</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Lexemització</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Regulació de la velocitat</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Directoris a vigilar</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Bústies de correu mbox addicionals a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Camins addicionals a indexar i vigilar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Camins addicionals a indexar en iniciar (no es vigilaran per a "
-"actualitzacions):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"danès\n"
-"holandès\n"
-"anglès\n"
-"finès\n"
-"francès\n"
-"alemany\n"
-"italià\n"
-"noruec\n"
-"portuguès\n"
-"rus\n"
-"espanyol\n"
-"suec"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Inhabilita qualsevol indexació quan s'estigui utilitzant la bateria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "Inhabilita la indexació inicial quan s'utilitzi la bateria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "Correu electrònic"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "Habilita la indexació dels correus electrònics de l'_Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "Habilita la indexació de correus electrònics del _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Habilita la indexació de correus electrònics del _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "Habilita la _vigilància"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "Habilita la _indexació"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "Més ràpid"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Patrons de fitxer a ignorar durant la indexació:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Fitxers"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "General"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Genera _miniatures"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Fitxers ignorats"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "_Retard d'indexació: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Indexa els continguts dels _fitxers"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Indexa els directoris _muntats"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Indexa i vigila el _directori d'inici"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Velocitat d'indexació:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "_Quantitat màxima de text a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Nombre màxim de _paraules úniques a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Camins arrel a ignorar en la indexació:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Realitza fusions d'índexs ràpides (pot afectar el rendiment del sistema)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Rendiment"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Més lent"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Preferències del Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Idioma:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimitza l'ús de memòria però pot alentir la indexació"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Utilitza més memòria per a indexar més ràpidament"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "segons"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Cerca des d'un servei en concret"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Correus electrònics"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Tots els fitxers"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Directoris"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documents"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Desenvolupament"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Registres de xat"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplicacions"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Historial web"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Obre"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "O_bre un directori"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Mo_u a la paperera"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Anomena i desa els resultats..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "S'ha produït un error en la conversió del joc de caràcters per a «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "S'ha produït l'error següent:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Error"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Volíeu dir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "La cerca no ha tornat cap resultat."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Eina de cerca Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Eina de cerca Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Resultats de la cerca:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "no s'ha realitzat cap cerca"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Visualitza la llista"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Icona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nom"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Categories"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d de %d elements"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d element"
-msgstr[1] "%d coincidències"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "No s'ha pogut connectar al servei de cerca perquè deu estar ocupat"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Cerca:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"El Tracker encara està indexant de manera que encara no estan disponibles "
-"tots els resultats de cerca"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Entreu un terme de cerca amb múltiples paraules separades per espais."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "entrada_de_cerca"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Feu clic per a iniciar la cerca."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "No s'ha pogut obrir el document d'ajuda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Esteu segur de voler obrir %d document?"
-msgstr[1] "Esteu segur de voler obrir %d documents?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "S'obrirà %d finestra separada."
-msgstr[1] "S'obriran %d finestres separades."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "No s'ha pogut obrir el document «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "No s'ha pogut obrir el directori «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "No s'està executant el gestor de fitxers nautilus."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "No s'ha pogut obrir l'aplicació"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "No existeix el document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "No hi ha instal·lat cap visualitzador capaç de mostrar el document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Esteu segur de voler obrir %d directori?"
-msgstr[1] "Esteu segur de voler obrir %d directoris?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "No s'ha pogut llençar «%s» a la paperera."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Voleu suprimir permanentment «%s»?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "La paperera no està disponible. No s'hi ha pogut llençar «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "No s'ha pogut suprimir «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "S'ha produït un error en moure «%s»: %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "S'ha produït un error en suprimir «%s»: %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Activeu-ho per a visualitzar aquest correu electrònic"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "_Anomena i desa els resultats de la cerca..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "No s'ha pogut desar el document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "No heu seleccionat un nom de document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "No s'ha pogut desar el document «%s» a «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Ja existeix el document «%s». El voleu reemplaçar?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Si reemplaceu un fitxer existent, se'n sobreescriurà el contingut."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Reemplaça"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "El nom del document que heu seleccionat és un directori."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "No deveu tenir permisos d'escriptura sobre el document."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Localitza documents i directoris d'aquest ordinador pel nom o el contingut "
-"utilitzant el Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Error del GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "avui a les %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "ahir a les %H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %d de %B de %Y a les %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "enllaç (trencat)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "enllaç a %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Servei de cerca i d'indexació Tracker"
-
-#~ msgid "_Search..."
-#~ msgstr "_Cerca..."
-
-#~ msgid "Search:"
-#~ msgstr "Cerca:"
-
-#~ msgid "Status:"
-#~ msgstr "Estat:"
-
-#~ msgid "Progress:"
-#~ msgstr "Progrés"
-
-#~ msgid "Indexing in progress"
-#~ msgstr "S'està indexant"
-
-#~ msgid "Indexing completed"
-#~ msgstr "S'ha completat la indexació"
-
-#~ msgid "Indexes are being merged"
-#~ msgstr "S'estan fusionant els índexs"
-
-#~ msgid "Paused while on battery power"
-#~ msgstr "S'ha fet una pausa ja que s'està utilitzant la bateria"
-
-#~ msgid "Paused temporarily"
-#~ msgstr "S'ha fet una pausa temporal"
-
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "El Tracker està fusionant els índexs que pot fer baixar el rendiment del "
-#~ "sistema durant uns quants minuts\n"
-#~ "\n"
-#~ "Podeu fer-hi una pausa si feu clic aquí amb el botó secundari"
-
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Bústies de correu</b>"
-
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Serveis</b>"
-
-#~ msgid "_Emails"
-#~ msgstr "Correus _electrònics"
-
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>Metadades dels fitxers</b>"
-
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>General</b>"
-
-#~ msgid "Enable Index Throttling"
-#~ msgstr "Habilita la regulació de velocitat d'indexació"
-
-#~ msgid "Normal Mode"
-#~ msgstr "Mode normal"
-
-#~ msgid "Polling Interval: "
-#~ msgstr "Interval d'actualització: "
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Mode de memòria reduïda"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "Inicia el servei d'_indexació automàticament"
-
-#~ msgid "Start _mointoring service automatically"
-#~ msgstr "Inicia el servei de _monitorització automàticament"
-
-#~ msgid "Throttling Level: "
-#~ msgstr "Nivell de regulació de velocitat: "
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Mode turbo"
-
-#~ msgid "_Privacy"
-#~ msgstr "_Privadesa"
-
-#~ msgid "gtk-add"
-#~ msgstr "gtk-add"
-
-#~ msgid "gtk-help"
-#~ msgstr "gtk-help"
-
-#~ msgid "gtk-remove"
-#~ msgstr "gtk-remove"
-
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%d resultat"
-#~ msgstr[1] "%d resultats"
-
-#~ msgid "Please enter a search term above"
-#~ msgstr "Introduïu un terme de cerca aquí dalt"
-
-#~ msgid "Plain text"
-#~ msgstr "Text pla"
-
-#~ msgid "No files found"
-#~ msgstr "No s'ha trobat cap fitxer"
-
-#~ msgid "_Previous"
-#~ msgstr "_Anterior"
-
-#~ msgid "_Next"
-#~ msgstr "Se_güent"
-
-#~ msgid "Invalid service type: %s\n"
-#~ msgstr "Tipus de servei no vàlid: %s\n"
-
-#~ msgid "Enables more verbose debug messages"
-#~ msgstr "Habilita missatges de depuració amb més detall"
-
-#~ msgid "Faster indexing, use more memory and CPU"
-#~ msgstr "Indexació més ràpida, utilitza més memòria i processador"
-
-#~ msgid "Slower indexing, use less memory and CPU"
-#~ msgstr "Indexació més lenta, utilitza menys memòria i processador"
diff --git a/po/cs.po b/po/cs.po
deleted file mode 100644
index a451c3b9f..000000000
--- a/po/cs.po
+++ /dev/null
@@ -1,1483 +0,0 @@
-# Czech translation of tracker.
-# Copyright (C) 2008 the author(s) of tracker.
-# This file is distributed under the same license as the tracker package.
-# Kamil Páral <ripper42@gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-02 01:26+0200\n"
-"PO-Revision-Date: 2008-04-02 01:24+0100\n"
-"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
-"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Spustit %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Zobrazit %s konverzaci\n"
-"%s %s\n"
-"od %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mail od %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Poslouchat hudbu %s\n"
-"v %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Zobrazit dokument %s\n"
-"v %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Otevřít soubor %s\n"
-"v %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Prohlédnout obrázek %s\n"
-"v %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Sledovat video %s\n"
-"v %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Otevřít složku %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "s"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "v kanálu"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Prohledávat všechny vaše dokumenty, <b>zatímco píšete</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Vývojové soubory"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Hudba"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Obrázky"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videa"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Hledat %s s prohledávaÄem Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Prohledat vÅ¡echny vaÅ¡e dokumenty s prohledávaÄem Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Vyhledávání Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Hledat s prohledávaÄem Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Živé vyhledávání Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Hledat s Trackerem, zatímco píšete"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Cesta : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Změněno : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Velikost : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Přistoupeno : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Odesilatel : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Datum : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Komentář : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategorie : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Trvání : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Žánr : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitový tok : <b>%s Kb/s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Rok : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " pořízeno s <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Rozměry : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Datum pořízení : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientace : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Blesk : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Ohnisková vzdálenost : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Doba expozice : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitová rychlost : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Zakódováno v : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Snímková rychlost : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Předmět : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "PoÄet stránek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "PoÄet slov : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Vytvořeno : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Komentáře : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Neznámé"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "VepiÅ¡te sem znaÄky, které chcete pÅ™idat, oddÄ›lené mezerami"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "ZnaÄky :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Hledat znaÄku"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "Odst_ranit znaÄku"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Omezit množství zobrazených výsledků na N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Hledat urÄitou službu"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SLUŽBA"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Zobrazit podrobnější výsledky zároveň se službou a typem mime"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "VÃRAZ... - hledat soubory pro urÄité výrazy"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Uvedením více než jednoho výrazu se zobrazí pouze položky obsahující VŠECHNY "
-"uvedené výrazy (výraz1 A ZÃROVEŇ výraz2 - logické spojení)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Seznam rozpoznaných služeb je:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Zkuste \"%s --help\" pro více informací."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: chybí výrazy pro hledání"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: žádné spojení s démonem trackeru"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Před spuštěním tohoto příkazu se ujistěte, že \"trackerd\" běží."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Služba nerozpoznána, hledám v Ostatních souborech...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: vnitřní chyba trackeru: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Nebyly nalezeny žádné výsledky odpovídající vašemu dotazu"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - zobrazit poÄet indexovaných souborů pro každou službu"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "získávám indexovací statistiky"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "PÅ™idat k souboru zvolenou znaÄku"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ZNAÄŒKA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Odstranit ze souboru zvolenou znaÄku"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Odstranit ze souboru vÅ¡echny znaÄky"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Vypsat vÅ¡echny definované znaÄky"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Hledat soubory s uvedenou znaÄkou"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "SOUBOR..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "SOUBOR... - spravovat znaÄky na souborech"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"K pÅ™idání, odstranÄ›ní nebo vyhledání více znaÄek najednou spojte více voleb "
-"takto:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: neplatné parametry"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: soubor %s nenalezen"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Directory to exclude from indexing"
-msgstr "Složka, kterou vyjmout z indexování"
-
-#: ../src/trackerd/trackerd.c:127 ../src/trackerd/trackerd.c:128
-#: ../src/trackerd/trackerd.c:129
-msgid "/PATH/DIR"
-msgstr "/CESTA/ADRESÃŘ"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "Directory to include in indexing"
-msgstr "Složka, kterou zahrnout do indexování"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Složka, kterou procházet pouze při spuštění"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Disable any indexing or watching taking place"
-msgstr "Zakázat jakékoliv probíhající indexování nebo sledování"
-
-#: ../src/trackerd/trackerd.c:131
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Hodnota, která ovládá úroveň protokolování. Platné hodnoty jsou 0 (zobrazit/"
-"zaznamenávat pouze chyby), 1 (minimální), 2 (podrobné) a 3 (ladění)"
-
-#: ../src/trackerd/trackerd.c:131 ../src/trackerd/trackerd.c:132
-msgid "VALUE"
-msgstr "HODNOTA"
-
-#: ../src/trackerd/trackerd.c:132
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Hodnota pro zpomalování indexování. Hodnota musí být v rozsahu 0-99 (výchozí "
-"0) s tím, že nižší hodnoty zvyšují rychlost indexace"
-
-#: ../src/trackerd/trackerd.c:133
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Sníží využití paměti, ale může zpomalit indexování"
-
-#: ../src/trackerd/trackerd.c:134
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Výchozí pauza, před spuštěním indexování, v sekundách"
-
-#: ../src/trackerd/trackerd.c:135
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Jazyk, který používat pro zjišťování slovních kořenů a seznamu stopslov "
-"(dvouznakový kód ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:135
-msgid "LANG"
-msgstr "JAZYK"
-
-#: ../src/trackerd/trackerd.c:136
-msgid "Force a re-index of all content"
-msgstr "Vynutit přeindexování všeho obsahu"
-
-#: ../src/trackerd/trackerd.c:137
-msgid "Make tracker errors fatal"
-msgstr "OznaÄit chyby trackeru jako fatální"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:794
-msgid "- start the tracker daemon"
-msgstr "- spustit démona trackeru"
-
-#: ../src/trackerd/trackerd.c:795 ../src/trackerd/trackerd.c:796
-msgid "DIRECTORY"
-msgstr "ADRESÃŘ"
-
-#: ../src/trackerd/trackerd.c:803
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Pro zahrnutí nebo vyjmutí více adresářů najednou spojte více voleb takto:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Ovládat a sledovat vyhledávací a indexovací službu Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Applet Trackeru"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "NeÄinný"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indexování"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Slévání"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (pozastaveno uživatelem)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (pozastaveno systémem)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (pozastaveno kvůli baterii)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "složky"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "e-mailové schránky"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Přeindexovat váš systém?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indexace může trvat dlouho. Jste si jisti, že chcete přeindexovat?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Statistiky"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Statistiky indexování</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker je svobodný software; můžete jej redistribuovat a/nebo upravovat za "
-"podmínek GNU General Public License zveÅ™ejnÄ›né Free Software Foundation; buÄ "
-"verze 2 této licence, nebo (podle vašeho uvážení) libovolné pozdější verze."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker je distribuován v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLI ZÃRUKY; "
-"a to ani bez předpokládané záruky PRODEJNOSTI nebo VHODNOSTI PRO KONKRÉTNà "
-"ÚČEL. Pro další podrobnosti si pÅ™eÄtÄ›te GNU General Public License."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Kopii GNU General Public License jste měli dostat spolu s Trackerem; pokud "
-"se tak nestalo, napište Free Software Foundation, Inc., 59 Temple Place, "
-"Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker je nástroj urÄený pro extrakci informací a metadat o vaÅ¡ich osobních "
-"údajích, takže mohou být lehce a rychle prohledávána"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Autoři Trackeru"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr "Kamil Páral <ripper42@gmail.com>"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Webová stránka Trackeru"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Pozastavit veškeré indexování"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Hledat"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Přeindexovat"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Volby"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Volby _indexování"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "S_tatistiky"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_O programu"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_UkonÄit"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Váš poÄítaÄ bude nyní indexován, abyste mohli provádÄ›t rychlé hledání ve "
-"svých souborech a e-mailech"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Indexování můžete kdykoli pozastavit a nastavit volby indexování kliknutím "
-"pravým tlaÄítkem zde"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker dokonÄil indexaci vaÅ¡eho systému"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " během %d hodin a %d minut"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " během %d minut a %d sekund"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " během %d sekund"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Nyní můžete provádět hledání kliknutím zde"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Soubory:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Složky:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Dokumenty:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Obrázky:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Hudba:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Videa:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Text:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Vývoj:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Ostatní:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Aplikace:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Rozhovory:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-maily:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animace</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Inteligentní pozastavování</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Viditelnost</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Během indexování animovat _ikonu"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Volby apletu"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"Automaticky _pozastavit, pokud by indexace mohla snížit výkon jiných právě "
-"využívaných aplikací"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-"_Automaticky pozastavit veÅ¡kerou indexaci, pokud je poÄítaÄ aktivnÄ› využíván"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Skrýt ikonu (s výjimkou zobrazování zpráv uživateli)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "Vypnut_o"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "Data must be reindexed"
-msgstr "Data musejí být přeindexována"
-
-#: ../src/tracker-preferences/tracker-preferences.c:817
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Pro uplatnění vašich změn musí Tracker přeindexovat vaše soubory. Klikněte "
-"na tlaÄítko PÅ™eindexovat pro spuÅ¡tÄ›ní pÅ™eindexování nyní, v opaÄném případÄ› "
-"bude tato akce provedena při příštím restartu démona Trackeru."
-
-#: ../src/tracker-preferences/tracker-preferences.c:824
-msgid "_Reindex"
-msgstr "_Přeindexovat"
-
-#: ../src/tracker-preferences/tracker-preferences.c:827
-msgid "Tracker daemon must be restarted"
-msgstr "Démon Trackeru musí být restartován"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Pro uplatnění vašich změn musí být démon Trackeru restartován. Klikněte na "
-"tlaÄítko Restart pro restartování démona nyní."
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid "_Restart"
-msgstr "_Restartovat"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Nastavit indexování souborů Trackerem"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Hledání a indexování"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Procházené složky</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Vzorky ignorovaných souborů</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ignorované cesty</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Slévání indexů</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Limity indexování (na soubor)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Nastavení indexace</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexování</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Správa napájení</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Využití zdrojů</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Spuštění</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Slovní kořeny</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Zpomalování</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Sledované složky</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "DodateÄné e-mailové schránky typu mbox pro indexování:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "DodateÄné cesty pro indexování a sledování:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"DodateÄné cesty pro indexování pÅ™i spuÅ¡tÄ›ní (ale ne pro sledování zmÄ›n):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Dánština\n"
-"Nizozemština\n"
-"AngliÄtina\n"
-"Finština\n"
-"Francouzština\n"
-"NÄ›mÄina\n"
-"Italština\n"
-"Norština\n"
-"Portugalština\n"
-"Ruština\n"
-"Španělština\n"
-"Švédština"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Vypnout veškeré indexování při běhu na baterie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "Vypnout úvodní ÄiÅ¡tÄ›ní indexů pÅ™i bÄ›hu na baterii"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "Povolit indexování e-mailů v _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "Povolit indexování e-mailů v _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Povolit indexování e-mailů v _Thunderbirdu"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "Povolit sledo_vání"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "Povolit i_ndexování"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "Rychleji"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Vzorky souborů, které ignorovat během indexování:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Soubory"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Obecné"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Generovat ná_hledy"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Ignorované soubory"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "Zpož_dění indexování: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Indexovat o_bsah souborů"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Indexovat _připojené složky"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Indexovat a sledovat moji _domovskou složku"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Rychlost indexace:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "Maximální množství textů pro index_aci:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Maximální množství _unikátních slov pro indexaci:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Kořenové cesty ignorované během indexování:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Provádět rychlé slévání indexů (může ovlivnit výkon systému)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Výkon"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Pomaleji"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Nastavení Trackeru"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Jazyk:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "Snížit využití pa_měti (pomalejší indexování)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "Po_užít dodateÄnou paměť pro rychlejší indexování"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "sekund"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Hledat z urÄené služby"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-maily"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "VÅ¡echny soubory"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Složky"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumenty"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Vývoj"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Záznamy konverzací"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplikace"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Webová historie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Otevřít"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "O_tevřít složku"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Pře_sunout do koše"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "Uložit vý_sledky jako..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Převod znakové sady selhal pro \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Došlo k následující chybě :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Chyba"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Mysleli jste"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Pro vaše hledání nebylo nic nalezeno."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "ProhledávaÄ Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "ProhledávaÄ Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Výsledky hledání: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "neprovedeno žádné hledání"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Seznamový pohled"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ikona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Název"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Kategorie"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d z %d položek"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d položka"
-msgstr[1] "%d položky"
-msgstr[2] "%d položek"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "Nelze se připojit k prohledávací službě, může být zaneprázdněna"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Hledat:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker stále provádí indexaci, takže nemusí být dostupné všechny výsledky"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Zadejte hledaný výraz s více slovy oddělenými mezerami."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "položka_hledání"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Kliknutím zaÄnÄ›te hledat."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Nemohu otevřít dokument nápovědy."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Opravdu chcete otevřít %d dokument?"
-msgstr[1] "Opravdu chcete otevřít %d dokumenty?"
-msgstr[2] "Opravdu chcete otevřít %d dokumentů?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Toto otevře %d samostatné okno."
-msgstr[1] "Toto otevře %d samostatná okna."
-msgstr[2] "Toto otevře %d samostatných oken."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Nemohu otevřít dokument \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Nemohu otevřít složku \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Správce souborů Nautilus neběží."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Aplikaci nebylo možné otevřít"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "Dokument neexistuje."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Není nainstalován žádný prohlížeÄ schopný zobrazit tento dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Opravdu chcete otevřít %d složku?"
-msgstr[1] "Opravdu chcete otevřít %d složky?"
-msgstr[2] "Opravdu chcete otevřít %d složek?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Nemohu přesunout \"%s\" do koše."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Chcete trvale odstranit \"%s\"?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Koš není k dispozici. Nemohu přesunout \"%s\" do koše."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Nemohu odstranit \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Přesun \"%s\" selhal: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Odstraňování \"%s\" selhalo: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Spustit pro zobrazení tohoto e-mailu"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Uložit výsledky hledání jako..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "Nemohu uložit dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Nevybrali jste název dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Nemohu uložit dokument \"%s\" do \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokument \"%s\" již existuje. Chcete jej nahradit?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Pokud nahradíte existující soubor, jeho obsah bude přepsán."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "Nah_radit"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "Dokument, který jste vybrali, je složkou."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "Možná nemáte oprávnění zápisu do dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Nalézt dokumenty a složky na tomto poÄítaÄi podle názvu nebo obsahu za "
-"pomoci Trackeru"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Chyba GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "dnes v %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "vÄera v %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %-d. %B %Y v %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "odkaz (neplatný)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "odkaz na %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Prohledávací a indexovací služba Tracker"
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index 4133c241a..000000000
--- a/po/de.po
+++ /dev/null
@@ -1,1444 +0,0 @@
-# translation of de.po to German
-# German translation of Tracker
-# Copyright (C) 2006, 2007, 2008, Free Software Foundation, Inc
-# This file is distributed under the same license as the tracker package.
-#
-#
-# Hendrik Richter <hendrikr@gnome.org>, 2006.
-# Michael Biebl <mbiebl@gmail.com>, 2007, 2008.
-# Marcus Fritzsch <m@fritschy.de>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: de\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-01 23:30+0100\n"
-"PO-Revision-Date: 2008-03-01 23:29+0100\n"
-"Last-Translator: Michael Biebl <mbiebl@gmail.com>\n"
-"Language-Team: German <gnome-de@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural= ( n != 1 );\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Starte %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Zeige %s-Unterhaltung\n"
-"%s %s\n"
-"vom %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Email von %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Spiele Musik %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Betrachte Dokument %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Öffne Datei %s \n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Betrachte Bild %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Spiele Video %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Ordner %s öffnen\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "mit"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "in Kanal"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Durchsuche alle deine Dokumente <b>während du tippst</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Entwicklung"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musik"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Bilder"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Suche nach %s mit Tracker Suche"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Durchsuche alle deine Dokumente mit Tracker Search Tool"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker Suche"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Suche mit Tracker Search Tool"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Tracker Live-Suche"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Durchsuche alle deine Dokumente <b>während du tippst</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Pfad: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Geändert: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Größe: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Zugriff: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Dateityp: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Sender: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Datum: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Kommentar: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategorien: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Dauer: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Genre: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitrate: <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Jahr: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " aufgenommen mit <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Abmessungen: <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Datum der Aufnahme: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Ausrichtung: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Blitz: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Brennweite: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Belichtungszeit: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitrate: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Kodiert in: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Framerate: <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Betreff: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Seitenzahl: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Wortzahl: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Erstellt: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Kommentare: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1031
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1054
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1076
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Geben Sie eine, durch Kommas getrennte, Liste von Schlagworten ein"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Schlagworte:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Nach Schlagworten suchen"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Schlagwort entfernen:"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Die anzuzeigenden Ergebnisse auf N begrenzen"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Einen bestimmten Dienst durchsuchen"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "DIENST"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Erweiterte Ergebnisse mit Dienst und Dateityp anzeigen"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "BEGRIFF - Dateien mit bestimmen Begriffen suchen"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Werden mehrere Suchbegriffe angegeben werden diese logisch UND verknüpft und "
-"nur Treffer angezeigt, die alle Suchbegriffe enthalten."
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Liste der bekannten Dienste:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "»%s --help« liefert ausführlichere Informationen."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: fehlender Suchbegriff"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: Verbindung zu Tracker konnte nicht hergestellt werden"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Stellen Sie sicher, dass »trackerd« läuft bevor Sie diese Anwendung starten."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr ""
-"Dienst konnte nicht erkannt werden, es wird in »Sonstige Dateien« gesucht …\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: es ist ein Fehler aufgetreten: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Es konnten keine Ergebnisse gefunden werden"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr "- zeige Anzahl der indizierten Dateien pro Dienst "
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "hole Indexstatus"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Füge der Datei ein Schlagwort hinzu"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "SCHLAGWORT"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Entferne Schlagwort von einer Datei"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Alle Schlagworte von einer Datei entfernen"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Alle bekannten Schlagworte anzeigen"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Suche nach Dateien mit gegebenem Schlagwort"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "DATEI..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "DATEI... - Schlagworte der Dateien ändern"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Um mehrere Schlagwörter zur selben Zeit zu suchen oder zu ändern, können "
-"mehrere Optionen wie folgt angegeben werden:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: Ungültige Argumente"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: Datei »%s« nicht gefunden"
-
-#: ../src/trackerd/trackerd.c:146
-msgid "Directory to exclude from indexing"
-msgstr "Von der Indizierung auszuschließender Pfad"
-
-#: ../src/trackerd/trackerd.c:146 ../src/trackerd/trackerd.c:147
-#: ../src/trackerd/trackerd.c:148
-msgid "/PATH/DIR"
-msgstr "/PFAD/VERZEICHNIS"
-
-#: ../src/trackerd/trackerd.c:147
-msgid "Directory to include in indexing"
-msgstr "Verzeichnis das indiziert werden soll"
-
-#: ../src/trackerd/trackerd.c:148
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Verzeichnis für einmalige Indexierung"
-
-#: ../src/trackerd/trackerd.c:149
-msgid "Disable any indexing or watching taking place"
-msgstr "Deaktiviere Indizierung und Dateiüberwachung"
-
-#: ../src/trackerd/trackerd.c:150
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Mögliche Protokollierungstufen: 0 (nur Fehler ausgeben/protokollieren), 1 "
-"(minimal), 2 (detailliert) und 3 (Debug)"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-msgid "VALUE"
-msgstr "WERT"
-
-#: ../src/trackerd/trackerd.c:151
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Wert um den die Indizierung gedrosselt wird. Wertebereich 0-99 (Standard 0), "
-"niedrigere Werte bedeuten erhöhte Indizierungsgeschwindigkeit."
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimiert den Speicherverbrauch auf Kosten der Geschwindigkeit"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Verzögert den Programmstart, in Sekunden"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Sprache die für den Wortstamm und die Stopwortliste verwendet wird (ISO 639-"
-"1 2 Zeichen Code)"
-
-#: ../src/trackerd/trackerd.c:154
-msgid "LANG"
-msgstr "SPRACHE"
-
-#: ../src/trackerd/trackerd.c:155
-msgid "Force a re-index of all content"
-msgstr "Erzwingt eine Neuindizierung aller Inhalte"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Make tracker errors fatal"
-msgstr "Beende bei nicht kritischen Fehlern"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2532
-msgid "- start the tracker daemon"
-msgstr "- startet den tracker Dienst"
-
-#: ../src/trackerd/trackerd.c:2533 ../src/trackerd/trackerd.c:2534
-msgid "DIRECTORY"
-msgstr "VERZEICHNIS"
-
-#: ../src/trackerd/trackerd.c:2541
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Um mehrere Verzeichnisse gleichzeitig von der Suche ein- oder "
-"auszuschließen, können mehrere Optionen wie folgt angegeben werden:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Statusanzeige für Tracker Such- und Indizierungsdienst"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Tracker Applet"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "Leerlauf"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "Indizierung"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "Zusammenführung"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (angehalten durch Benutzer)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (angehalten durch System)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (angehalten während Batteriebetriebs)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "Ordner"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "Postfächer"
-
-#: ../src/tracker-applet/tracker-applet.c:739
-msgid "Re-index your system?"
-msgstr "System neu indizieren?"
-
-#: ../src/tracker-applet/tracker-applet.c:740
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"Eine Indizierung kann sehr lange dauern. Wollen Sie das System neu "
-"indizieren?"
-
-#: ../src/tracker-applet/tracker-applet.c:773
-msgid "_Pause All Indexing"
-msgstr "Indizierung _anhalten"
-
-#: ../src/tracker-applet/tracker-applet.c:782
-msgid "_Search"
-msgstr "_Suchen"
-
-#: ../src/tracker-applet/tracker-applet.c:789
-msgid "_Re-index"
-msgstr "_Neu indizieren"
-
-#: ../src/tracker-applet/tracker-applet.c:795
-msgid "_Preferences"
-msgstr "_Einstellungen"
-
-#: ../src/tracker-applet/tracker-applet.c:801
-msgid "_Indexer Preferences"
-msgstr "_Indizierungseinstellungen"
-
-#: ../src/tracker-applet/tracker-applet.c:807
-msgid "S_tatistics"
-msgstr "S_tatistiken"
-
-#: ../src/tracker-applet/tracker-applet.c:813
-msgid "_About"
-msgstr "_Ãœber"
-
-#: ../src/tracker-applet/tracker-applet.c:822
-msgid "_Quit"
-msgstr "_Beenden"
-
-#: ../src/tracker-applet/tracker-applet.c:1398
-msgid "Statistics"
-msgstr "Statistiken"
-
-#: ../src/tracker-applet/tracker-applet.c:1419
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Indizierungsstatistik</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1532
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1536
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1540
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1555
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker indiziert ihre persönlichen Daten und erlaubt das schnelle und "
-"unkomplizierte Suchen von Informationen"
-
-#: ../src/tracker-applet/tracker-applet.c:1556
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr ""
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1566
-msgid "translator-credits"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1569
-msgid "Tracker Web Site"
-msgstr "Tracker Website"
-
-#: ../src/tracker-applet/tracker-applet.c:1896 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1901
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Ihr Rechner wird indiziert damit die Suche nach Dateien und Emails schneller "
-"erfolgen kann"
-
-#: ../src/tracker-applet/tracker-applet.c:1902
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Sie können die Indizierung zu jeder Zeit pausieren und durch Rechtsklick "
-"hier Einstellungen vornehmen"
-
-#: ../src/tracker-applet/tracker-applet.c:1904
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker hat die Indizierung ihres Systems abgeschlossen"
-
-#: ../src/tracker-applet/tracker-applet.c:1905
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " in %d Stunden und %d Minuten"
-
-#: ../src/tracker-applet/tracker-applet.c:1906
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " in %d Minuten und %d Sekunden"
-
-#: ../src/tracker-applet/tracker-applet.c:1907
-#, c-format
-msgid " in %d seconds"
-msgstr " in %d Sekunden"
-
-#: ../src/tracker-applet/tracker-applet.c:1908
-msgid "You can now perform searches by clicking here"
-msgstr "Sie können eine Suche durchführen indem sie hier klicken"
-
-#: ../src/tracker-applet/tracker-applet.c:1911
-msgid "Files:"
-msgstr "Dateien:"
-
-#: ../src/tracker-applet/tracker-applet.c:1912
-msgid " Folders:"
-msgstr " Ordner:"
-
-#: ../src/tracker-applet/tracker-applet.c:1913
-msgid " Documents:"
-msgstr " Dokumente:"
-
-#: ../src/tracker-applet/tracker-applet.c:1914
-msgid " Images:"
-msgstr " Bilder:"
-
-#: ../src/tracker-applet/tracker-applet.c:1915
-msgid " Music:"
-msgstr " Musik:"
-
-#: ../src/tracker-applet/tracker-applet.c:1916
-msgid " Videos:"
-msgstr " Videos:"
-
-#: ../src/tracker-applet/tracker-applet.c:1917
-msgid " Text:"
-msgstr " Text:"
-
-#: ../src/tracker-applet/tracker-applet.c:1918
-msgid " Development:"
-msgstr " Entwicklung:"
-
-#: ../src/tracker-applet/tracker-applet.c:1919
-msgid " Other:"
-msgstr " Sonstige Dateien:"
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid "Applications:"
-msgstr "Anwendungen:"
-
-#: ../src/tracker-applet/tracker-applet.c:1921
-msgid "Conversations:"
-msgstr "Konversationen:"
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-msgid "Emails:"
-msgstr "Emails:"
-
-#: ../src/tracker-preferences/tracker-preferences.c:899
-msgid "Data must be reindexed"
-msgstr "Daten müssen neu indiziert werden"
-
-#: ../src/tracker-preferences/tracker-preferences.c:900
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Damit die Änderungen wirksam werden muss Tracker ihre Daten neu indizieren. "
-"Klicken sie auf \"Neu indizieren\" um diesen Prozess jetzt zu starten. "
-"Ansonsten wird dies bei einem Neustart des Tracker Dienstes geschehen."
-
-#: ../src/tracker-preferences/tracker-preferences.c:907
-msgid "_Reindex"
-msgstr "Neu _indizieren"
-
-#: ../src/tracker-preferences/tracker-preferences.c:910
-msgid "Tracker daemon must be restarted"
-msgstr "Tracker Dienst muss neu gestartet werden"
-
-#: ../src/tracker-preferences/tracker-preferences.c:912
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Damit die Änderungen wirksam werden muss der Tracker Dienst neu gestartet "
-"werden. Klicken Sie auf \"Neu starten\" um den Dienst jetzt neu zu starten."
-
-#: ../src/tracker-preferences/tracker-preferences.c:917
-msgid "_Restart"
-msgstr "Neu _starten"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Tracker Indizierungseinstellugen ändern"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Suche und Indizierung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Verzeichnisse zur einmaligen Indizierung</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Ignorierte Dateimuster</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ignorierte Pfade</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Indexzusammenführung</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indizierungsgrenzen (pro Datei)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indizierungsoptionen</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indizierung</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Energieverwaltung</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Ressourcenverbrauch</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Programmstart</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Suche nach Wortstämmen</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Drosselung</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Zu überwachende Verzeichnisse</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Zusätzliche mbox Postfächer die indiziert werden sollen:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Zusätzliche Verzeichnisse die indiziert und überwacht werden sollen:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "Zusätzliche Verzeichnisse die einmalig indiziert werden sollen:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"dänisch\n"
-"holländisch\n"
-"englisch\n"
-"finnisch\n"
-"französisch\n"
-"deutsch\n"
-"italienisch\n"
-"norwegisch\n"
-"portugiesisch\n"
-"russisch\n"
-"spanisch\n"
-"schwedisch"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Deaktiviere Indizierung während des Batteriebetriebs"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-"Deaktiviere initialen Indizierungsdurchlauf während des Batteriebetriebs"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "Email"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "Aktiviere _Evolution Email Indizierung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "Aktiviere _KMail Email Indizierung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Aktiviere _Thunderbird Email Indizierung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "Aktiviere _Dateiüberwachung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "Aktiviere I_ndizierung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "schneller"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Dateimuster die von der Indizierung ausgeschlossen werden sollen:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Dateien"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Allgemein"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Erzeuge _Miniaturbilder"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Ignorierte Dateien"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "Pause vor Indizierung: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Indiziere D_ateiinhalte"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Indiziere _eingehängte Verzeichnisse"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Indiziere und überwache persönlichen Or_dner"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Indizierungsgeschwindigkeit:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "M_aximal zu indizierende Textgröße:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Maximale Anzahl eindeutiger _Worte:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Verzeichnisse die von der Indizierung ausgeschlossen werden sollen:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Schnelle Indexzusammenführung (kann System verlangsamen)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Leistung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "langsamer"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Tracker Einstellungen"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Sprache:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimiere den Speicherverbrauch auf Kosten der Geschwindigkeit"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Benutze zusätzlichen Speicher für eine schnellere Indizierung"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "KB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "Sekunden"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Einen bestimmten Dienst durchsuchen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Emails"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Alle Dateien"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Ordner"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumente"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1229
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Entwicklung"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Chatprotokoll"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Anwendungen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Webhistorie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "Ö_ffnen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "_Ordner öffnen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "In den _Müll verschieben"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "Ergebnisse _speichern unter …"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Zeichenkonvertierung war für »%s« nicht möglich"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occurred :"
-msgstr "Der folgende Fehler ist aufgetreten:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:285
-msgid "Error"
-msgstr "Fehler"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:660
-msgid "Did you mean"
-msgstr "Meinten Sie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:691
-msgid "Your search returned no results."
-msgstr "Ihre Suche ergab keine Ergebnisse."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:706
-msgid "Tracker Search Tool-"
-msgstr "Tracker Suche-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:867
-#: ../src/tracker-search-tool/tracker-search-tool.c:2261
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker Suche"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1057
-msgid "Search _results: "
-msgstr "Such_ergebnisse: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1063
-msgid "no search performed"
-msgstr "keine Suche ausgeführt"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1123
-#: ../src/tracker-search-tool/tracker-search-tool.c:1283
-msgid "List View"
-msgstr "Listenansicht"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1195
-msgid "Icon"
-msgstr "Symbol"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1207
-msgid "Name"
-msgstr "Name"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1301
-msgid "_Categories"
-msgstr "_Kategorien"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1581
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d von %d Treffern"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1584
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d Treffer"
-msgstr[1] "%d Treffer"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1632
-#: ../src/tracker-search-tool/tracker-search-tool.c:1827
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"Konnte keine Verbindung zum Suchdienst aufnehmen da dieser vermutlich "
-"beschäftigt ist"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2028
-msgid "_Search:"
-msgstr "S_uchen:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2042
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Indizierung noch nicht abgeschlossen. Suchresultate können unvollständig "
-"sein."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2056
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-"Geben Sie einen Suchbegriff mit mehreren Wörtern durch Leerzeichen getrennt "
-"ein."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "search_entry"
-msgstr "Such_begriff"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2103
-msgid "Click to perform a search."
-msgstr "Klicken Sie hier, um die Suche zu starten"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Konnte Hilfe nicht öffnen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Wollen Sie %d Dokument öffnen?"
-msgstr[1] "Wollen Sie %d Dokumente öffnen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Werde %d eigenes Fenster öffen."
-msgstr[1] "Werde %d eigene Fenster öffen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Konnte Dokument »%s« nicht öffnen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Konnte Ordner »%s« nicht öffnen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Der Nautilus Dateimanager ist nicht verfügbar."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Anwendung konnte nicht geöffnet werden"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "Das Dokument existiert nicht."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Keine der installierten Anwendungen ist in der Lage das Dokument anzuzeigen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Wollen Sie %d Ordner öffnen?"
-msgstr[1] "Wollen Sie %d Ordner öffnen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Konnte »%s« nicht in den Müll verschieben."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Wollen Sie »%s« dauerhaft löschen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"Müllkorb ist nicht verfügbar. Konnte »%s« nicht in den Müll verschieben."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Konnte »%s« nicht löschen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Verschieben von »%s« fehlgeschlagen: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Löschen von »%s« fehlgeschlagen: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Email anzeigen"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Ergebnisse _speichern unter..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "Konnte Dokument nicht speichern."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Sie haben keinen Namen für das Dokument ausgewählt."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Konnte Dokument »%s« nicht unter »%s« speichern."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Das Dokument »%s« existiert bereits. Wollen Sie es ersetzen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-"Wenn Sie die bestehende Datei ersetzen, wird deren Inhalt überschrieben."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Ersetzen"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "Der gewählte Name existiert bereits und ist ein Ordner."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "Sie haben vermutlich keine Schreibrechte für das Dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Tracker erlaubt es, Dokumente ausfindig zu machen, indem Sie nach dem Namen "
-"oder Inhalt suchen"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf Fehler:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "heute um %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "gestern um %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y at %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "ungültiger Verweis"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "Verweis nach %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Tracker Such- und Indizierungsdienst"
diff --git a/po/dz.po b/po/dz.po
deleted file mode 100644
index 5595fe9c6..000000000
--- a/po/dz.po
+++ /dev/null
@@ -1,1035 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker.HEAD.pot\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 04:02+0200\n"
-"PO-Revision-Date: 2007-07-03 10:36+0530\n"
-"Last-Translator: yumkee lhamo <yumkeyl08@hotmail.com>\n"
-"Language-Team: Dzongkha <pgeyleg@dit.gov.bt>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Poedit-Language: Dzongkha\n"
-"X-Poedit-Country: Bhutan\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "འགྲུལ་ལམ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "ལེགས་བཅོས་འབད་ཡོདཔ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "ཚད : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "འཛུལ་སྤྱོད་འབད་ཡོདཔ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "མ་ཡིམ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, fuzzy, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "རིགས : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, fuzzy, c-format
-msgid "Date : <b>%s</b>"
-msgstr "འགྲུལ་ལམ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, fuzzy, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "བསམ་བཀོད་ཚུ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, fuzzy, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "གསར་བསà¾à¾²à½´à½“་འབད་ཡོདཔ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "དུས་ཡུན : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "རིགས : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "བའི་ཊེརཊི : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "ལོ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "ཀོ་ཌེཀ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " འབག་ཡོདཔ <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "རྒྱ་à½à¾±à½¼à½“་ཚུ : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "བà½à½–་པའི་ཚེས་གྲངས : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "ཕྱོགས : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "རིབ་སྟོན : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "མà½à½¼à½„་གསལ་གྱི་ཚད : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "མདངས་ཕོག་ཀྱི་དུས : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "རྩོམ་པ་པོ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "བའི་ཊེརཊི : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "ནང་ཨིན་ཀོ་ཌེཌ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "གཞི་à½à¾²à½˜à¼‹à½šà½‘ : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "དོན་ཚན : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "ཤོག་ལེབ་གྱངས་འ: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "མིང་ཚིག་གྱངས་འ: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "གསར་བསà¾à¾²à½´à½“་འབད་ཡོདཔ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "བསམ་བཀོད་ཚུ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr "མ་ཤེསཔ་"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:251
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-"ལྷོད་རྟགས་ཀྱིས་དབྱེ་སེལ་འབད་འབད་ཡོད་པའི་ à½à¾±à½¼à½‘་ཀྱིས་ནཱ་ལུ་à½à¼‹à½¦à¾à½¼à½„་བརà¾à¾±à½–་དགོ་པའི་ངོ་རྟགས་ཚུ་ཡིག་དཔར་བརà¾à¾±à½–་"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:361
-msgid "Tags :"
-msgstr "ངོ་རྟགས་ཚུ:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:383
-msgid "_Search For Tag"
-msgstr "ངོ་རྟགས་ཀྱི་དོན་ལུ་འཚོལ་ཞིབ་འབད༠(_S)"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:395
-msgid "_Remove Tag"
-msgstr "ངོ་རྟགས་རྩ་བསà¾à¾²à½‘་གà½à½„་༠(_R)"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "ཨེན་ལུ་སྟོན་ཡོད་པའི་གྲུབ་འབྲས་ཚུ་གི་ཨང་གྲངས་འདི་བཅད་མཚམས་བཟོ་"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "ཨེན་"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "དམིགས་བསལ་གྱི་ཞབས་à½à½¼à½‚་གི་དོན་ལུ་འཚོལ་ཞིབ་འབད་"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "ཞབས་à½à½¼à½‚་དང་མ་ཡིམ་དབྱེ་ཚུ་དང་ཅིག་à½à½¢à¼‹ རྒྱས་བཤད་གྲུབ་འབྲས་ཧེང་སà¾à½£à¼‹à½¦à¾Ÿà½¼à½“་"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - à½à¼‹à½¦à¾™à½‘་ལ་ལོ་ཅིག་གི་དོན་ལུ་ཡིག་སྣོད་ཚུ་འཚོལ་ཞིབ་འབད་"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"à½à¼‹à½¦à¾™à½‘་གཅིག་ལས་ལྷག་སྟེ་གསལ་བཀོད་འབད་མི་དེ་གིས་ གསལ་བཀོད་འབད་ཡོད་པའི་à½à¼‹à½¦à¾™à½‘་(term1 AND "
-"term2 - གà½à½“་ཚིག་རིག་པའི་འབྲེལ་ཚིག་)ཆ་མཉམ་ཡོད་མི་རྣམ་གྲངས་ཚུ་སྟོནམ་ཨིནà¼"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "ངོས་འཛིན་འབད་དེ་ཡོད་པའི་à½à½¼à¼‹à½¡à½²à½‚་འདི:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr " \"%s --help\" བརྡ་དོན་ཧེང་སà¾à½£à¼‹à½‚ྱི་དོན་ལུ་འབད་རྩོལ་བསà¾à¾±à½ºà½‘à¼"
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: འཚོལ་ཞིབ་འབད་བའི་à½à¼‹à½¦à¾™à½‘་བརླག་སྟོར་ཞུགས་ཡོདཔà¼"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: ཊེ་ཀར་ཌེ་མཱོན་ལུ་མà½à½´à½“་ལམ་མེད་"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"\"trackerd\"འདི་ བརྡ་བཀོད་གཞི་བཙུགས་མ་འབད་བའི་ཧེ་མར་གཡོག་བཀོལ་དོ་ཡོདཔ་སྦེ་ངེས་གà½à½“་བཟོà¼"
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "ཞབས་à½à½¼à½‚་ངོས་འཛིན་མ་འབད་མི་ ཡིག་སྣོད་གཞན་མི་ནང་འཚོལ་ཞིབ་འབད་དོ...\n"
-
-#: ../src/libtracker/tracker-search.c:164 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: ནང་འà½à½¼à½‘་ཊེ་ཀར་འཛོལ་བ: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "à½à¾±à½¼à½‘་ཀྱི་འདྲི་དཔྱད་མà½à½´à½“་པའི་གྲུབ་འབྲས་མ་à½à½¼à½–་"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - ཞབས་à½à½¼à½‚་རེ་རེའི་དོན་ལུ་ ཟུར་à½à½¼à½ à½²à¼‹à½¡à½²à½‚་སྣོད་ཚུ་གི་ཨང་གྲངས་སྟོན་"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "སི་ཊེཊིསི་ཟུར་à½à½¼à¼‹à½£à½ºà½“་དོ་"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "ཡིག་སྣོད་གཅིག་ལུ་གསལ་བཀོད་འབད་ཡོད་པའི་ངོ་རྟགས་à½à¼‹à½¦à¾à½¼à½„་བརà¾à¾±à½–་"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "TAG"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "ཡིག་སྣོད་གཅིག་ལས་གསལ་བཀོད་འབད་དེ་ཡོད་པའི་ངོ་རྟགས་འདི་རྩ་བསà¾à¾²à½‘་གà½à½„་"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "ཡིག་སྣོད་གཅིག་ལས་ ངོ་རྟགས་ཆ་ཚང་རྩ་བསà¾à¾²à½‘་གà½à½„་"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "ངོས་འཛིན་འབད་ཡོད་པའི་ངོ་རྟགས་ཆ་ཚང་à½à½¼à¼‹à½¡à½²à½‚་བརà¾à¾±à½–་"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "གསལ་བཀོད་འབད་དེ་ཡོད་པའི་ངོ་རྟགས་དང་ཅིག་à½à½¢à¼‹ ཡིག་སྣོད་ཚུ་གི་དོན་ལུ་འཚོལ་ཞིབ་འབད་"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FILE..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FILE... - ཡིག་སྣོད་གུ་ངོ་རྟགས་ཚུ་ལག་ལེན་བསྟར་"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"ལག་ལེན་བསྟར་བའི་ངོ་རྟགས་ཀྱི་དོན་ལུ་ à½à¼‹à½¦à¾à½¼à½„་བརà¾à¾±à½–་ནི་ རྩ་བསà¾à¾²à½‘་གà½à½„་ནི་ཡང་ན་ འཚོལ་ཞིབ་འབད་ནི་ དེ་"
-"ལས་ དེ་དང་ཅིག་à½à½¢à¼‹à½¦à¾£à¼‹à½˜à½„་གདམ་à½à¼‹à½˜à½à½´à½‘:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: ནུས་མེད་སྒྲུབ་རྟགས་ཚུ་"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: ཡིག་སྣོད་ %s མ་à½à½¼à½–་"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Directory to exclude from indexing"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་ལས་ཕྱིར་à½à½¼à½“་ནིའི་སྣོད་à½à½¼à¼‹"
-
-#: ../src/trackerd/trackerd.c:158 ../src/trackerd/trackerd.c:159
-#: ../src/trackerd/trackerd.c:160
-msgid "/PATH/DIR"
-msgstr "/PATH/DIR"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Directory to include in indexing"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་ལས་གྲངས་སུ་བརྩི་ནི་ལུ་སྣོད་à½à½¼à¼‹"
-
-#: ../src/trackerd/trackerd.c:160
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་ལས་ཕྱིར་à½à½¼à½“་ནིའི་སྣོད་à½à½¼à¼‹"
-
-#: ../src/trackerd/trackerd.c:161
-msgid "Disable any indexing or watching taking place"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་ཡང་ན་གནས་སོར་གང་རུང་ལྕོགས་མེད་བཟོ་"
-
-#: ../src/trackerd/trackerd.c:162
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"དྲན་དེབ་བཀོད་མིའི་གནས་རིམ་འདི་གི་ཚད་འཛིན་གནས་གོང་༠ནུས་ཅན་གནས་གོང་ཚུ་ ༠ (བཀྲམ་སྟན་ཚུ་/དྲན་"
-"དེབ་ཚུ་འཛོལ་བ་རà¾à¾±à½„མ་ཅིག་), ༡ (ཉུང་ཤོས་) ,༢ (རྒྱས་བཤད་) དང་ ༣(རà¾à¾±à½ºà½“་སེལ་)ཨིན་"
-
-#: ../src/trackerd/trackerd.c:162 ../src/trackerd/trackerd.c:163
-msgid "VALUE"
-msgstr "VALUE"
-
-#: ../src/trackerd/trackerd.c:163
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-20 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནིའི་རྒྱུན་ལམ་གྱི་དོན་ལུ་ལག་ལེན་འà½à½–་ནི་ཨིན་པའི་གནས་གོང་༠གནས་གོང་འདི་à½à¾±à½–་ཚད་0-20 "
-"(སྔོན་སྒྲིག་0)ནང་ ཟུར་à½à½¼à½ à½²à¼‹à½˜à½‚ྱོགས་ཚད་ཡར་འཕར་གནས་གོང་དམའ་མི་དང་ཅིག་à½à½¢à¼‹à½‘གོཔ་ཨིནà¼"
-
-#: ../src/trackerd/trackerd.c:164
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-"དྲན་ཚད་ཀྱི་ལག་ལེན་འདི་ཕབ་ལེན་འབདà½à¼‹à½¨à½²à½“་ དེ་འབདà½à¼‹à½‘་ ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་ཡང་མར་ཕབ་འབད་འོང་"
-
-#: ../src/trackerd/trackerd.c:165
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"སི་ཊི་མར་དང་མིང་ཚིག་à½à½¼à¼‹à½¡à½²à½‚་(ISO 639-1 2 characters code)བཀག་ནིའི་དོན་ལུ་ ལག་ལེན་འà½à½–་ནི་"
-"ལུ་སà¾à½‘་ཡིག་"
-
-#: ../src/trackerd/trackerd.c:166
-msgid "LANG"
-msgstr "LANG"
-
-#: ../src/trackerd/trackerd.c:167
-msgid "Force a re-index of all content"
-msgstr "ནང་དོན་ཆ་མཉམ་གྱི་ཟུར་à½à½¼à¼‹ སླར་བཀོད་ནི་ལུ་བང་བཙོང་འབད་"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2047
-msgid "- start the tracker daemon"
-msgstr "- ཊེ་ཀར་ཌེ་མཱོན་འདི་འགོ་བཙུགས་"
-
-#: ../src/trackerd/trackerd.c:2048 ../src/trackerd/trackerd.c:2049
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../src/trackerd/trackerd.c:2056
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr "དུས་ཡུན་གཅིག་ལུ་ སྣ་མང་སྣོད་à½à½¼à¼‹à½šà½´à¼‹à½–རྩི་ནི་དང་ཕྱིར་à½à½¼à½“་ནི་ལུ་ སྣ་མང་གདམ་à½à¼‹à½˜à½à½´à½‘:"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-#, fuzzy
-msgid "Configure file indexing with Tracker"
-msgstr "ཡིག་སྣོད་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་འདི་རིམ་སྒྲིག་འབད་"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Indexing Preferences"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནིའི་དགའ་གདམ་ཚུ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>ཡིག་སྣོད་དཔེ་གཞི་ཚུ་སྣང་མེད་བཞག་ཡོདཔ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>འགྲུལ་ལམ་ཚུ་སྣང་མེད་བཞག་ཡོདཔ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-#, fuzzy
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>à½à½–ས་ལམ་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-#, fuzzy
-msgid "<b>Indexing options</b>"
-msgstr "<b>à½à½–ས་ལམ་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-#, fuzzy
-msgid "<b>Indexing</b>"
-msgstr "<b>à½à½–ས་ལམ་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Mailboxes</b>"
-msgstr "<b>ཡིག་སྒྲོམ་ཚུ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-#, fuzzy
-msgid "<b>Resource Usage</b>"
-msgstr "<b>ཞབས་à½à½¼à½‚་ཚུ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Services</b>"
-msgstr "<b>ཞབས་à½à½¼à½‚་ཚུ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>འགོ་བཙུགས</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-#, fuzzy
-msgid "<b>Stemming</b>"
-msgstr "<b>པུ་ལིང་</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>རྒྱུན་ལམ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-#, fuzzy
-msgid "<b>Watch Directories</b>"
-msgstr "<b>ཞབས་à½à½¼à½‚་ཚུ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox mailboxes to index:"
-msgstr "ཟུར་à½à½¼à¼‹à½£à½´à¼‹ ཨེམ་སྒྲོམ་ཡིག་སྒྲོམ་ཚུའི་à½à¼‹à½¦à¾à½¼à½„་:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-#, fuzzy
-msgid "Additional paths to index and watch:"
-msgstr "ཟུར་à½à½¼à¼‹à½£à½´à¼‹à½ à½‚ྲུལ་ལམ་à½à¼‹à½¦à¾à½¼à½„་:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid "Enable Evolution email indexing"
-msgstr "གློག་འཕྲིན་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནིའི་ཨི་བོ་ལུ་ཤཱན་ལྕོགས་ཅན་བཟོ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:18
-msgid "Enable KMail email indexing"
-msgstr "ཀེ་ཡིག་འཕྲིན་གློག་འཕྲིན་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་འདི་ལྕོགས་ཅན་བཟོ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:19
-msgid "Enable Thunderbird email indexing"
-msgstr "à½à½±à½“་ཌར་བཌི་གློ་འཕྲིན་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་འདི་ལྕོགས་ཅན་བཟོ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:20
-msgid "Enable _Indexing"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་འདི་ལྕོགས་ཅན་བཟོ༠(_I)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:21
-#, fuzzy
-msgid "Enable _Watching"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་འདི་ལྕོགས་ཅན་བཟོ༠(_I)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:22
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:23
-msgid "File patterns to ignore during indexing:"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་པའི་བསྒང་ སྣང་མེད་བཞག་ནི་ཨིན་པའི་ཡིག་སྣོད་དཔེ་གཞི་ཚུ:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:24
-msgid "Generate _thumbnails"
-msgstr "མà½à½ºà¼‹à½‚ཟེར་ཚུ་བཟོ་བà½à½¼à½“་འབད༠(_t)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:25
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:26
-msgid "Index _file contents"
-msgstr "ཡིག་སྣོད་ནང་དོན་ཟུར་à½à½¼à¼ ( _f)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:27
-#, fuzzy
-msgid "Index and watch my home _directory"
-msgstr "ངེའི་à½à¾±à½²à½˜à¼‹à½‚ྱི་སྣོད་à½à½¼à½ à½²à¼‹à½Ÿà½´à½¢à¼‹à½à½¼à¼‹à½–ཀོད༠(_d)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:28
-msgid "Maximum _amount of text to Index (KB)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Maximum number of unique _words to index"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "P_erformance"
-msgstr "ལཱ་ཤུགས༠(_e)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Path roots to be ignored during indexing:"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་པའི་བསྒང་སྣང་མེད་བཞག་ནི་ཨིན་པའི་ འགྲུལ་ལམ་རྩ་བ:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Seconds"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Tracker Preferences"
-msgstr "ཊེ་ཀར་དགའ་གདམ་ཚུ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-#, fuzzy
-msgid "_Emails"
-msgstr "གློག་འཕྲིན་ཚུ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-#, fuzzy
-msgid "_Files"
-msgstr "ཡིག་སྣོད་ཆ་མཉམ་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "_General"
-msgstr "ཡོངས་à½à¾±à½–༠(_G)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-#, fuzzy
-msgid "_Ignored Files"
-msgstr "<b>ཡིག་སྣོད་དཔེ་གཞི་ཚུ་སྣང་མེད་བཞག་ཡོདཔ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-#, fuzzy
-msgid "_Indexing speed:"
-msgstr "ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི༠(_n)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-#, fuzzy
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-"དྲན་ཚད་ཀྱི་ལག་ལེན་འདི་ཕབ་ལེན་འབདà½à¼‹à½¨à½²à½“་ དེ་འབདà½à¼‹à½‘་ ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་ཡང་མར་ཕབ་འབད་འོང་"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "_Use additonal memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid ""
-"danish\n"
-"dutch\n"
-"english\n"
-"finnish\n"
-"french\n"
-"german\n"
-"italian\n"
-"norwegian\n"
-"portugese\n"
-"russian\n"
-"spanish\n"
-"swedish"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "དམིགས་བསལ་ཞབས་à½à½¼à½‚་གཅིག་ལས་འཚོལ་ཞིབ་འབད་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "གློག་འཕྲིན་ཚུ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "ཡིག་སྣོད་ཆ་མཉམ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "སྣོད་འཛིན་ཚུ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "ཡིག་ཆ་ཚུ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "གཟུགས་བརྙན་ཚུ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "སྙན་ཆ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "à½à½²à¼‹à½Œà½²à½ à½¼à½¦à½²à¼‹"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1224
-msgid "Text"
-msgstr "ཚིག་ཡིག་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "གོང་འཕེལ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "à½à¼‹à½•à¾±à½ºà¼ (_O)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "སྣོད་འཛིན་à½à¼‹à½•à¾±à½ºà¼ (_p)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "ཕྱགས་ཧོད་ལུ་སྤོ་བཤུད་འབད༠(_v)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "གྲུབ་འབྲས་དེ་སྦེ་སྲུང་... (_S)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "\"%s\"དོན་ལུ་ཡིག་འབྲུའི་གཞི་སྒྲིག་གཞི་བསྒྱུར་འབད་མ་ཚུགས་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occured :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:656
-msgid "Did you mean"
-msgstr "à½à¾±à½¼à½‘་འབད་བ་ཅིན་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:687
-msgid "Your search returned no results."
-msgstr "à½à¾±à½¼à½‘་རའི་འཚོལ་ཞིབ་ལུ་གྲུབ་འབྲས་མ་à½à½¼à½“à¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:702
-msgid "Tracker Search Tool-"
-msgstr "ཊེ་ཀར་འཚོལ་ཞིབ་འབད་ནིའི་ལག་ཆས-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:863
-#: ../src/tracker-search-tool/tracker-search-tool.c:2199
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "ཊེ་ཀར་འཚོལ་ཞིབ་འབད་ནིའི་ལག་ཆས་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1053
-#, fuzzy
-msgid "Search _results: "
-msgstr "འཚོལ་ཞིབ་འབད་བའི་གྲུབ་འབྲས་ཚུ:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1059
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1113
-#: ../src/tracker-search-tool/tracker-search-tool.c:1274
-msgid "List View"
-msgstr "མà½à½¼à½„་སྣང་ཚུ་à½à½¼à¼‹à½¡à½²à½‚་བརà¾à¾±à½–་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1185
-msgid "Icon"
-msgstr "ངོས་དཔར་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1197
-msgid "Name"
-msgstr "མིང་"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1292
-msgid "_Categories"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1572
-#, fuzzy, c-format
-msgid "%d - %d of %d hits"
-msgstr "གྲུབ་འབྲས་ཚུ་ %d - %d of %d"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1575
-#, c-format
-msgid "%d item"
-msgid_plural "%d hits"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1976
-msgid "_Search:"
-msgstr "འཚོལ་ཞིབ་འབད: (_S)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1996
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "བར་སྟང་དང་ཅིག་à½à½¢à¼‹à½ à½•à¾±à½£à¼‹à½¡à½¼à½‘་པའི་སྣ་མང་མིང་ཚིག་དང་ཅིག་à½à½¢à¼‹ འཚོལ་ཞིབ་གཅིག་à½à½¼à¼‹à½–ཀོད་འབདà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "search_entry"
-msgstr "à½à½¼à¼‹à½–ཀོད་འཚོལ་ཞིབ་འབད༠(_e)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2043
-msgid "Click to perform a search."
-msgstr "འཚོལ་ཞིབ་གཅིག་ལཱ་འགན་འགྲུབ་ནི་ལུ་ཨེབ་གà½à½„་འབདà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "གྲོགས་རམ་ཡིག་ཆ་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "%dཡིག་ཆ་à½à¼‹à½•à¾±à½ºà¼‹à½“ི་ལུ་à½à¾±à½¼à½‘་ངེས་གà½à½“་ཨིན་ན?"
-msgstr[1] "%dཡིག་ཆ་ཚུ་à½à¼‹à½•à¾±à½ºà¼‹à½“ི་ལུ་à½à¾±à½¼à½‘་ངེས་གà½à½“་ཨིན་ན?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:676
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "འདི་གིས་%dསྒོ་སྒྲིག་སོ་སོ་དང་ཅིག་à½à½¢à¼‹à½à¼‹à½•à¾±à½ºà¼‹à½šà½´à½‚སà¼"
-msgstr[1] "འདི་གིས་ %dསྒོ་སྒྲིག་སོ་སོ་à½à¼‹à½•à¾±à½ºà½à¼‹à½¨à½²à½“à¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "\"%s\" ཡིག་ཆ་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "\"%s\"སྣོད་འཛིན་à½à¼‹à½•à¾±à½ºà¼‹à½˜à¼‹à½šà½´à½‚སà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "ནའུ་ཊི་ལཱསི་ཡིག་སྣོད་འཛིན་སà¾à¾±à½¼à½„་པ་འདི་ལཱ་མི་འབད་བསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:615
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:630
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:950
-msgid "The document does not exist."
-msgstr "ཡིག་ཆ་གནས་à½à½ºà¼‹à½˜à½ºà½‘པ་ཨིནà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:646
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "ཡིག་ཆ་བཀརམ་སྟོན་འབད་ནི་ལུ་ མà½à½¼à½„་བྱེད་ལྕོགས་ཅན་གཞི་བཙུགས་མ་འབད་བསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:671
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "%dསྣོད་འཛིན་à½à¼‹à½•à¾±à½ºà¼‹à½“ི་ལུ་à½à¾±à½¼à½‘་ངེས་གà½à½“་ཨིན་ན?"
-msgstr[1] "%d སྣོད་འཛིན་ཚུ་à½à¼‹à½•à¾±à½ºà¼‹à½“ི་ལུ་à½à¾±à½¼à½‘་ངེས་གà½à½“་ཨིན་ན?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:775
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "\"%s\" འདི་ཕྱགས་ཧོད་ལུ་སྤོ་བཤུད་འབད་མ་ཚུགསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:806
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "\"%s\"འདི་ à½à¾±à½¼à½‘་ཀྱིས་རྟག་བརྟན་སྦེ་བà½à½¼à½“་གà½à½„་ནི་ཨིན་ན?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:809
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "ཕྱགས་ཧོད་འདི་à½à½¼à½–་ཚུགས་མེད༠\"%s\" འདི་ཕྱགས་ཧོད་ནང་སྤོ་བཤུད་འབད་མ་ཚུགསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:848
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "\"%s\"བà½à½¼à½“་གà½à½„་མ་ཚུགསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:972
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "\"%s\" སྤོ་བཤུད་འབད་མ་ཚུགས: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1006
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "\"%s\" བà½à½¼à½“་གà½à½„་མ་ཚུགས: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1292
-msgid "Activate to view this email"
-msgstr "གློག་འཕྲིན་འདི་སྟོན་ནི་ལུ་ཤུགས་ལྡན་བཟོ་"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1468
-msgid "Save Search Results As..."
-msgstr "འཚོལ་ཞིབ་འབད་བའི་གྲུབ་འབྲས་དེ་སྦེ་སྲུང་བཞག་འབད..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1503
-msgid "Could not save document."
-msgstr "ཡིག་ཆ་སྲུང་མ་ཚུགསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1504
-msgid "You did not select a document name."
-msgstr "à½à¾±à½¼à½‘་ཀྱིས་ཡིག་ཆའི་མིང་གཅིག་སེལ་འà½à½´à¼‹à½˜à¼‹à½ à½–ད་བསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1534
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "\"%s\" ཡིག་ཆ་འདི་ \"%s\" ལུ་སྲུང་མ་ཚུགསà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1568
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "\"%s\" ཡིག་ཆ་འདི་ཧེ་མ་ལས་རང་འདུག༠à½à¾±à½¼à½‘་ཀྱིས་ཚབ་མ་བཙུགས་ནི་ཨིན་ན?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1572
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "à½à¾±à½¼à½‘་ཀྱིས་གནས་ཡོད་པའི་ཡིག་སྣོད་འདི་ཚབ་བཙུགས་པ་ཅིན་ དེའི་ནང་དོན་ཚུ་ཚབ་སྲུང་འབད་ཡོདཔ་ཨིནà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1587
-msgid "_Replace"
-msgstr "ཚབ་བཙུགས༠(_R)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1637
-msgid "The document name you selected is a folder."
-msgstr "à½à¾±à½¼à½‘་ཀྱིས་སེལ་འà½à½´à¼‹à½ à½–ད་ཡོད་པའི་ཡིག་ཆའི་མིང་འདི་སྣོད་འཛིན་ཨིནà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1686
-msgid "You may not have write permissions to the document."
-msgstr "ཡིག་ཆ་ལུ་འབྲི་ནིི་གནང་བ་འདི་à½à¾±à½¼à½‘་ལུ་མེདà¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf error:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "today at %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "à½à¼‹à½¢à¾©à½„་ %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y at %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "འབྲེལ་མà½à½´à½‘༠(ཆད་པ་)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "%sལུ་འབྲེལ་མà½à½´à½‘་འབདà¼"
-
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>ཡིག་སྣོད་མེ་ཊ་གནད་སྡུད</b>"
-
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>ཡོངས་à½à¾±à½–</b>"
-
-#~ msgid "Enable Index Throttling"
-#~ msgstr "ཟུར་à½à½¼à¼‹à½¢à¾’ྱུན་ལམ་ལྕོགས་ཅན་བཟོ་"
-
-#~ msgid "Normal Mode"
-#~ msgstr "སྤྱིར་གà½à½„་à½à½–ས་ལམ་"
-
-#~ msgid "Polling Interval: "
-#~ msgstr "པུ་ལིང་བར་མཚམས:"
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "དྲན་ཚད་à½à½–ས་ལམ་མར་ཕབ་འབད་ཡོདཔ་"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "རང་བཞིན་གྱིས་སྦེ་ཞབས་à½à½¼à½‚་ཟུར་à½à½¼à¼‹à½“ང་བཀོད་ནི་འགོ་བཙུགས༠(_i)"
-
-#~ msgid "Start _monitoring service automatically"
-#~ msgstr "རང་བཞིན་གྱིས་སྦེ་ ཞབས་à½à½¼à½‚་ ལྟ་རྟོག་འབད་ནི་ འགོ་བཙུགས་ (_m)"
-
-#~ msgid "Throttling Level: "
-#~ msgstr "རྒྱུན་ལམ་གནས་རིམ:"
-
-#~ msgid "Turbo Mode"
-#~ msgstr "ཊར་བོ་à½à½–ས་ལམ་"
-
-#~ msgid "_Privacy"
-#~ msgstr "སྒེར་གཙང་༠(_P)"
-
-#~ msgid "gtk-add"
-#~ msgstr "gtk-à½à¼‹à½¦à¾à½¼à½„་"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-à½à¼‹à½–སྡམ་"
-
-#~ msgid "gtk-help"
-#~ msgstr "gtk-གྲོགས་རམ་"
-
-#~ msgid "gtk-remove"
-#~ msgstr "gtk-རྩ་བསà¾à¾²à½‘་"
-
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%dགྲུབ་འབྲས་"
-#~ msgstr[1] "%dགྲུབ་འབྲས་ཚུ་"
-
-#~ msgid "Please enter a search term above"
-#~ msgstr "ལྟག་ལུ་འཚོལ་ཞིབ་à½à¼‹à½¦à¾™à½‘་གཅིག་à½à½¼à¼‹à½–ཀོད་འབད་གནང་"
diff --git a/po/el.po b/po/el.po
deleted file mode 100644
index a9ec5659c..000000000
--- a/po/el.po
+++ /dev/null
@@ -1,1934 +0,0 @@
-# translation of el.po to Greek
-# Simos Xenitellis <simos@gnome.org>, 2008.
-# Giannis Katsampirhs <juankatsampirhs@gmail.com>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: el\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-29 22:04+0000\n"
-"PO-Revision-Date: 2008-03-29 22:00+0000\n"
-"Last-Translator: Simos Xenitellis <simos@gnome.org>\n"
-"Language-Team: Greek <team@gnome.gr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Language: Greek\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Εκκίνηση %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Δείτε τη %s συζήτηση\n"
-"%s %s\n"
-"από %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "ΑλληλογÏαφία από %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"ΑκοÏστε τη μουσική %s\n"
-"στο %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Δείτε το έγγÏαφο %s\n"
-"στο %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Ανοίξτε το αÏχείο %s\n"
-"στο %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Δείτε την εικόνα %s\n"
-"στο %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"ΠαÏακολουθήστε το βίντεο %s\n"
-"στο %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Άνοιγμα φακέλου %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "με"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "στο κανάλι"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Αναζήτηση σε όλα τα έγγÏαφά σας, <b>καθώς πληκτÏολογείτε</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "ΑÏχεία ανάπτυξης λογισμικοÏ"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Μουσική"
-
-# #-#-#-#-# gimp.gimp-2-4.el.po (el) #-#-#-#-#
-#
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Εικόνες"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Βίντεο"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "ΕÏÏεση για τη λέξη %s με το ΕÏγαλείο εÏÏεσης"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Αναζήτηση όλων των εγγÏάφων σας με το ΕÏγαλείο εÏÏεσης"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "ΕÏÏεση"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Αναζήτηση με το ΕÏγαλείο εÏÏεσης"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Άμεση εÏÏεση"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "ΕÏÏεση καθώς πληκτÏολογείτε"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Μονοπάτι : <b>%s</b>"
-
-#
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "ΤÏοποποιήθηκε: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Μέγεθος : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "ΠÏοσπελάστηκε : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "ΤÏπος MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Αποστολέας : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "ΗμεÏομηνία : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Σχόλιο: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "ΚατηγοÏίες : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "ΔιάÏκεια : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Είδος : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitrate : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Έτος : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Κωδικοποίηση : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " φωτογÏαφήθηκε με <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Διαστάσεις : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "ΗμεÏομηνία φωτογÏάφησης : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "ΠÏοσανατολισμός :<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "ΧÏήση φλας : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Εστιακή απόσταση : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "ΧÏόνος έκθεσης : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Συντάκτης : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitrate : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Κωδικοποιήθηκε σε : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Ρυθμός πλαισίων : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Θέμα : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "ΑÏιθμός σελίδων : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "ΑÏιθμός λέξεων : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "ΔημιουÏγήθηκε : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Σχόλια : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Άγνωστο"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-"ΠληκτÏολογήστε τις ετικέτες που θέλετε να Ï€Ïοσθέσετε εδώ, διαχωÏισμένες με "
-"κόμμα"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Ετικέτες :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "Ανα_ζήτηση για ετικέτα"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "Α_φαίÏεση ετικέτας"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "ΠεÏιοÏισ_μός αÏÎ¹Î¸Î¼Î¿Ï Ï„Ï‰Î½ αποτελεσμάτων που θα εμφανίζονται σε N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "Î"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Αναζήτηση για συγκεκÏιμένη υπηÏεσία"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "ΥΠΗΡΕΣΙΑ"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-"Εμφάνιση πεÏισσότεÏων λεπτομεÏειακών αποτελεσμάτων με υπηÏεσία και Ï„Ïπο MIME "
-"επίσης"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "ΟΡΟΣ... - αναζήτηση αÏχείων για συγκεκÏιμένους ÏŒÏους"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"ΚαθοÏίζοντας πεÏισσότεÏους από έναν ÏŒÏους, θα εμφανιστοÏν αντικείμενα που θα "
-"πεÏιέχουν ΟΛΟΥΣ τους καθοÏισμένους ÏŒÏους (ÏŒÏος1 ΚΑΙ ÏŒÏος2 - λογικός "
-"συνδυασμός)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Η λίστα αναγνωÏίσιμων λειτουÏγιών είναι:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Δοκιμάστε \"%s --help\" για πεÏισσότεÏες πληÏοφοÏίες."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: ÏŒÏοι αναζήτησης που λείπουν"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: δεν υπάÏχει σÏνδεση στην υπηÏεσία εÏÏεσης"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Βεβαιωθείτε ότι η υπηÏεσία \"trackerd\" εκτελείται Ï€ÏÎ¿Ï„Î¿Ï ÎµÎºÏ„ÎµÎ»Î­ÏƒÎµÏ„Îµ αυτήν "
-"την εντολή."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Δεν αναγνωÏίστηκε η υπηÏεσία, γίνεται αναζήτηση στα Λοιπά αÏχεία...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: εσωτεÏικό σφάλμα εÏÏεσης: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Δεν βÏέθηκαν αποτελέσματα που να ταιÏιάζουν στην αναζήτησή σας"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - εμφάνιση του αÏÎ¹Î¸Î¼Î¿Ï Ï„Ï‰Î½ αÏχείων του ευÏετηÏίου για κάθε υπηÏεσία"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "ανάκτηση στατιστικών ευÏετηÏίασης"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "ΠÏοσθήκη συγκεκÏιμένης ετικέτας σε αÏχείο"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ΕΤΙΚΕΤΑ"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "ΑφαίÏεση συγκεκÏιμένης ετικέτας από αÏχείο"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "ΑπομάκÏυνση όλων των ετικετών από αÏχείο"
-
-#
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Λίστα με όλες τις καθοÏισμένες ετικέτες"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Αναζήτηση αÏχείων με καθοÏισμένη ετικέτα"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ΑΡΧΕΙΟ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ΑΡΧΕΙΟ... - διαχείÏιση ετικετών σε αÏχεία"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Για να Ï€Ïοσθέσετε, να αφαιÏέσετε, ή να κάνετε αναζήτηση για πολλαπλές "
-"ετικέτες ταυτόχÏονα, συγχωνεÏστε τις πολλαπλές επιλογές όπως:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: μη έγκυÏοι παÏάμετÏοι"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: δε βÏέθηκε το αÏχείο %s"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Directory to exclude from indexing"
-msgstr "Φάκελος που θα παÏαληφθεί από την ευÏετηÏίαση"
-
-#: ../src/trackerd/trackerd.c:127 ../src/trackerd/trackerd.c:128
-#: ../src/trackerd/trackerd.c:129
-msgid "/PATH/DIR"
-msgstr "/ΜΟÎΟΠΑΤΙ/ΚΑΤΑΛΟΓΟΣ"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "Directory to include in indexing"
-msgstr "Κατάλογος που θα παÏαληθφεί από την ευÏετηÏίαση"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Κατάλογος για ευÏετηÏίαση μόνο κατά την εκκίνηση"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-"ΑπενεÏγοποίηση ευÏετηÏίασης ή των παÏακολουθήσεων που Ï€ÏαγματοποιοÏνται"
-
-#: ../src/trackerd/trackerd.c:131
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Η τιμή που ελέγχει το επίπεδο καταγÏαφής. Οι έγκυÏες τιμές είναι 0 "
-"(εμφανίζει/καταγÏάφει μόνο σφάλματα), το 1 (ελάχιστη), το 2 (λεπτομεÏειακή) "
-"και, το 3 (αποσφαλμάτωση)"
-
-#: ../src/trackerd/trackerd.c:131 ../src/trackerd/trackerd.c:132
-msgid "VALUE"
-msgstr "ΤΙΜΗ"
-
-#: ../src/trackerd/trackerd.c:132
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Η τιμή που χÏησιμοποιείται για την πεÏιστÏοφή της εÏÏεσης. Η τιμή Ï€Ïέπει να "
-"έχει εÏÏος 0-99 (Ï€Ïοεπιλεγμένο το 0) με χαμηλότεÏες τιμές όταν αυξάνεται η "
-"ταχÏτητα εÏÏεσης"
-
-#: ../src/trackerd/trackerd.c:133
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-"Ελαχιστοποιεί τη χÏήση της μνήμης αλλά μποÏεί να καθυστεÏήσει τη διαδικασία "
-"της ευÏετηÏίασης"
-
-#: ../src/trackerd/trackerd.c:134
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-"ΑÏχικός χÏόνος αδÏανοποίησης, μόλις Ï€Ïιν την ευÏετηÏίαση, σε δευτεÏόλεπτα"
-
-#: ../src/trackerd/trackerd.c:135
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Η γλώσσα που χÏησιμοποιείται για τον εξαγωγέα Ï€Ïοθεμάτων λέξεων και τη λίστα "
-"διακοπής λέξεων (με κωδικοποίηση χαÏακτήÏων ISO 639-1 2)"
-
-#: ../src/trackerd/trackerd.c:135
-msgid "LANG"
-msgstr "ΓΛΩΣΣΑ"
-
-#: ../src/trackerd/trackerd.c:136
-msgid "Force a re-index of all content"
-msgstr "Εξαναγκασμός για ευÏετηÏίαση ξανά όλου του πεÏιεχομένου"
-
-# #-#-#-#-# libbonoboui.HEAD.el.po (el) #-#-#-#-#
-#
-#: ../src/trackerd/trackerd.c:137
-msgid "Make tracker errors fatal"
-msgstr "Îα γίνουν κÏίσιμα όλα τα σφάλματα ευÏετηÏίασης"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:794
-msgid "- start the tracker daemon"
-msgstr "- εκκίνηση της υπηÏεσίας εÏÏεσης"
-
-#: ../src/trackerd/trackerd.c:795 ../src/trackerd/trackerd.c:796
-msgid "DIRECTORY"
-msgstr "ΚΑΤΑΛΟΓΟΣ"
-
-#: ../src/trackerd/trackerd.c:803
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Για να συμπεÏιλάβετε ή να παÏαλείψετε πολλαπλοÏÏ‚ καταλόγους ταυτόχÏονα, "
-"συγχωνεÏστε πολλαπλές επιλογές όπως:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Έλεγχος και παÏακολοÏθηση της ΕÏÏεσης και της ευÏετηÏίασης"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "ΜικÏοεφαÏμογή εÏÏεσης"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "ΕÏÏεση : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "ΑδÏανής"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Γίνεται ευÏετηÏίαση"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Γίνεται συγχώνευση"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (έγινε παÏση από το χÏήστη)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (έγινε παÏση από το σÏστημα)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr "(έγινε παÏση από τη μπαταÏία)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "φάκελοι"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "κουτιά ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου"
-
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-#
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Îα επαναληφθεί η ευÏετηÏίαση στο σÏστημά σας;"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"Η ευÏετηÏίαση συνήθως διαÏκεί αÏκετό χÏόνο για να ολοκληÏωθεί. Είστε "
-"σίγουÏοι ότι θέλετε να την επαναλάβετε;"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Στατιστικά"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Στατιστικά ευÏετηÏίασης</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Η ΕÏÏεση (Tracker) είναι ελεÏθεÏο λογισμικό: ΜποÏείτε να το διανείμετε εκ "
-"νέου και/ή να το Ï„Ïοποποιήσετε κάτω από τους ÏŒÏους της GNU Γενικής Δημόσιας "
-"Άδειας ΧÏήσης (GPL) όπως είναι δημοσιευμένη από το Free Software Foundation: "
-"είτε με την έκδοση 2 της Άδειας, είτε (κατά την επιλογή σας) με οποιαδήποτε "
-"νεότεÏη έκδοση."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Η ΕÏÏεση (Tracker) διανέμεται με την ελπίδα ότι θα είναι χÏήσιμο αλλά ΧΩΡΙΣ "
-"ΚΑΜΜΙΑ ΑΠΟΛΥΤΩΣ ΕΓΓΥΗΣΗ για συγκεκÏιμένο σκοπό. Δείτε για πεÏισσότεÏες "
-"λεπτομέÏειες την GNU General Public License."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Θα·πÏέπει·να·έχετε·λάβει·ένα·αντίγÏαφο·της· "
-"GNU·General·Public·License·μαζί·με·την ΕÏÏεση (Tracker). Αν όχι γÏάψτε στο "
-"Free Software Foundation, Inc., 59 Temple Place, Suite·330,·Boston,"
-"·MA··02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Η ΕÏÏεση (Tracker) είναι ένα εÏγαλείο που σχεδιάστηκε έτσι ώστε να εξάγει "
-"πληÏοφοÏίες και μεταδεδομένα σχετικά με τα Ï€Ïοσωπικά δεδομένα ώστε να "
-"μποÏείτε να κάνετε εÏκολη και γÏήγοÏη αναζήτηση"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Πνευματικά δικαιώματα © 2005-2008 Οι συγγÏαφείς της ΕÏÏεσης (Tracker)"
-
-# #-#-#-#-# accerciser.gnome-2-22.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# window-list.HEAD.el.po (window-list) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# fish.HEAD.el.po (fish) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# workspace-switcher.HEAD.el.po (workspace-switcher) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# clock.HEAD.el.po (clock) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# user-guide.HEAD.el.po (user-guide.docs) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# stickynotes_applet.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# user-guide.HEAD.el.po (user-guide.docs) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# workspace-switcher.HEAD.el.po (workspace-switcher) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# fish.HEAD.el.po (fish) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# window-list.HEAD.el.po (window-list) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# clock.HEAD.el.po (clock) #-#-#-#-#
-# #-#-#-#-# accerciser.HEAD.el.po (accerciser) #-#-#-#-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-monitor.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# procman.HEAD.el.po (el) #-#-#-#-##
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Ελληνική μεταφÏαστική ομάδα GNOME\n"
-" Γιάννης ΚατσαμπίÏης <juankatsampirhs@gmail.com>\n"
-" Σίμος Ξενιτέλλης <simos@gnome.org>\n"
-"\n"
-"Για πεÏισσότεÏα δείτε http://www.gnome.gr/"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Ιστοσελίδα της ΕÏÏεσης (Tracker)"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_ΠαÏση της ευÏετηÏίασης"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "Ανα_ζήτηση"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_ΕυÏετηÏίαση ξανά"
-
-# #-#-#-#-# gimp.gimp-2-4.el.po (el) #-#-#-#-#
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_ΠÏοτιμήσεις"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "ΠÏοτιμήσεις ευÏετη_Ïίασης"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "Σ_τατιστικά"
-
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# memory.el.po (abiword 1.0) #-#-#-#-#
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-#
-#
-# #-#-#-#-# gnome-power-manager.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# memory.el.po (abiword 1.0) #-#-#-#-#
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-#
-#
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_ΠεÏί"
-
-# #-#-#-#-# sabayon.HEAD.el.po (sabayon.HEAD.el) #-#-#-#-#
-# _ΕπεξεÏγασία
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# memory.el.po (abiword 1.0) #-#-#-#-#
-# #-#-#-#-# anjuta-el.po (anjuta 0.1.9) #-#-#-#-#
-#
-# #-#-#-#-# galeon-el.po (galeon 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-#
-#
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "Έ_ξοδος"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "ΕÏÏεση (Tracker)"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Θα γίνει ευÏετηÏίαση στον υπολογιστή σας έτσι ώστε να μποÏείτε να "
-"Ï€Ïαγματοποιείτε γÏήγοÏες αναζητήσεις στα αÏχεία και στα μηνÏματα "
-"ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας "
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"ΜποÏείτε να κάνετε παÏση της ευÏετηÏίασης όποτε θελήσετε καθώς και να "
-"αλλάξετε τις Ïυθμίσεις ευÏετηÏίασης κάνοντας δεξί κλικ εδώ"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Η ΕÏÏεση ολοκλήÏωσε την ευÏετηÏίαση του συστήματός σας"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " σε%d ÏŽÏες και %d λεπτά"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " σε %d λεπτά και %d δευτεÏόλεπτα"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " σε %d δευτεÏόλεπτα"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "ΜποÏείτε να Ï€Ïαγματοποιήσετε αναζητήσεις κάνοντας κλικ εδώ"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "ΑÏχεία:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Φάκελοι:"
-
-# #-#-#-#-# gnome-icon-theme.HEAD.el.po (el) #-#-#-#-#
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# #-#-#-#-# gimmie.HEAD.el.po (gimmie 0.1) #-#-#-#-#
-# #-#-#-#-# gnome-icon-theme.gnome-2-14.el.po (el) #-#-#-#-#
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " ΈγγÏαφα:"
-
-# #-#-#-#-# gimp.gimp-2-4.el.po (el) #-#-#-#-#
-#
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Εικόνες:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Mουσική:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Βίντεο:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Κείμενο:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Ανάπτυξη λογισμικοÏ:"
-
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Άλλα:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "ΕφαÏμογές:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Συζητήσεις:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "ΑλληλογÏαφία:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>ΚινοÏμενο</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Έξυπνη παÏση</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>ΟÏατότητα</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "ΚινοÏμενο _εικονίδιο κατά την ευÏετηÏίαση"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "ΠÏοτιμήσεις μικÏοεφαÏμογής"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"Îα γίνεται αυτόματη _παÏση αν η ευÏετηÏίαση είναι πιθανό να μειώσει την "
-"ταχÏτητα άλλων εφαÏμογών που είναι σε χÏήση"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "Αυτόματη παÏση όλης της ευÏετηÏίασης όταν ο υπολογιστής είναι σε χÏήση"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-"Από_κÏυψη εικονιδίου (εκτός από την πεÏίπτωση εμφάνισης μηνυμάτων στο χÏήστη)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_ΑπενεÏγοποιημένο"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "Data must be reindexed"
-msgstr "ΠÏέπει να επαναληφθεί η ευÏετηÏίαση των δεδομένων"
-
-#: ../src/tracker-preferences/tracker-preferences.c:817
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Για να εφαÏμόσετε τις αλλαγές σας, η ΕÏÏεση Ï€Ïέπει να επαναλάβει την "
-"ευÏετηÏίαση των αÏχείων σας. Κάντε κλικ στο κουμπί Επανάληψη ευÏετηÏίασης "
-"για να το Ï€Ïαγματοποιήσετε, ή αλλιώς αυτή η ενέÏγεια θα Ï€Ïαγματοποιηθεί την "
-"επόμενη φοÏά που θα επανεκκινηθεί η υπηÏεσία ΕÏÏεσης."
-
-#: ../src/tracker-preferences/tracker-preferences.c:824
-msgid "_Reindex"
-msgstr "_Επανάληψη ευÏετηÏίασης"
-
-#: ../src/tracker-preferences/tracker-preferences.c:827
-msgid "Tracker daemon must be restarted"
-msgstr "ΠÏέπει να επανεκκινηθεί η υπηÏεσία ευÏετηÏίασης"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Για να εφαÏμόσετε τις αλλαγές σας, η υπηÏεσία ΕÏÏεσης Ï€Ïέπει να "
-"επαεκκινηθεί. Κάντε κλικ στο κουμπί Επανεκκίνηση για να επανεκκινήσετε άμεσα "
-"την υπηÏεσία."
-
-# #-#-#-#-# gdm.gnome-2-20.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# gimmie.HEAD.el.po (gimmie 0.1) #-#-#-#-#
-# #-#-#-#-# gdm2.gnome-2-14.el.po (el) #-#-#-#-#
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid "_Restart"
-msgstr "_Επανεκκίνηση"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "ΡÏθμιση ευÏετηÏίασης αÏχείων με την ΕÏÏεση"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Αναζήτηση και ευÏετηÏίαση"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Κατάλογοι που έγινε ευÏετηÏίαση</b>"
-
-#
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Αγνοηθέντα αÏχεία βάσει πεÏιγÏαφής ονόματος</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Αγνοηθέντα μονοπάτια</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Συγχώνευση ευÏετηÏίου</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>ΠεÏιοÏισμοί ευÏετηÏίασης (ανά αÏχείο)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Επιλογές ευÏετηÏίασης</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>ΕυÏετηÏίαση</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>ΔιαχείÏιση ενέÏγειας</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>ΧÏήση πόÏων</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Εκκίνηση</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>ΠÏοθέματα ÏŒÏων</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>ΠεÏιοÏισμός λειτουÏγίας</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>ΠαÏακολοÏθηση καταλόγων</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr ""
-"ΠÏόσθετοι λογαÏιασμοί ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου στυλ mbox Ï€Ïος ευÏετηÏίαση:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "ΠÏόσθετα μονοπάτια για ευÏετηÏίαση και παÏακολοÏθηση:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"ΠÏόσθετα μονοπάτια για ευÏετηÏίαση κατά την εκκίνηση (αλλά χωÏίς "
-"παÏακολοÏθηση για ενημεÏώσεις):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Δανέζικα\n"
-"Ολλανδικά\n"
-"Αγγλικά\n"
-"Φινλανδικά\n"
-"Γαλλικά\n"
-"ΓεÏμανικά\n"
-"Ιταλικά\n"
-"ÎοÏβηγικά\n"
-"ΠοÏτογαλικά\n"
-"Ρωσικά\n"
-"Ισπανικά\n"
-"Σουηδικά"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "ΑπενεÏγοποίηση της ευÏετηÏίασης όταν σε λειτουÏγία από μπαταÏία"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-"ΑπενεÏγοποίηση αÏχικής σάÏωσης ευÏετηÏίασης όταν σε λειτουÏγία από μπαταÏία"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "ΑλληλογÏαφία"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "ΕνεÏγοποίηση ευÏετηÏίασης αλληλογÏαφίας _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "ΕνεÏγοποίηση ευÏετηÏίασης αλληλογÏαφίας _ΚMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "ΕνεÏγοποίηση ευÏετηÏίασης αλληλογÏαφίας _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "ΕνεÏγοποίηση _παÏακολοÏθησης"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "ΕνεÏγοποίηση _ευÏετηÏίασης"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "Πιο γÏήγοÏα"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "ΠαÏάβλεψη μοÏφών αÏχείων κατά την ευÏετηÏίαση:"
-
-# #-#-#-#-# anjuta.HEAD.el.po (anjuta 0.1.9) #-#-#-#-#
-#
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "ΑÏχεία"
-
-# #-#-#-#-# gimp.gimp-2-4.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# anjuta.HEAD.el.po (anjuta 0.1.9) #-#-#-#-#
-#
-# #-#-#-#-# ekiga.gnome-2-20.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# system-admin-guide.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# help.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# ekiga.gnome-2-14.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# user-guide.HEAD.el.po (user-guide.docs) #-#-#-#-#
-# #-#-#-#-# ekiga.gnome-2-14.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# ekiga.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# anjuta.HEAD.el.po (anjuta 0.1.9) #-#-#-#-#
-#
-# #-#-#-#-# user-guide.HEAD.el.po (user-guide.docs) #-#-#-#-#
-# #-#-#-#-# ekiga.gnome-2-14.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# help.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# ekiga.gnome-2-14.el.po (el) #-#-#-#-#
-#
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Γενικά"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "ΔημιουÏγία μικÏο_γÏαφιών"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Αγνοηθέντα αÏχεία"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "_ΚαθυστέÏηση ευÏετηÏίασης:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "ΕυÏετηÏίαση πεÏιεχομένου _αÏχείων"
-
-#
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "ΕυÏετηÏίαση Ï€ÏοσαÏτημένων καταλόγων"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "ΕυÏετηÏίαση και παÏακολοÏθηση του αÏÏ‡Î¹ÎºÎ¿Ï Î¼Î¿Ï… _κατάλογου"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "ΤαχÏτητα ευÏετηÏίασης:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "Μέγιστη _ποσότητα κειμένου για ευÏετηÏίαση:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Μέγιστος αÏιθμός μοναδικών _λέξεων στο ευÏετήÏιο:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Τα Ïιζικά μονοπάτια που θα παÏαβλέπονται κατά την ευÏετηÏίαση:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"ΠÏαγματοποίηση γÏήγοÏων συγχωνεÏσεων ευÏετηÏίασης (ίσως επηÏεάσει την "
-"ταχÏτητα του συστήματος)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Επίδοση"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Πιο αÏγά"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "ΠÏοτιμήσεις εÏÏεσης"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Γλώσσα:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Ελαχιστοποίηση χÏήσης μνήμης (πιο αÏγή ευÏετηÏίαση)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_ΧÏήση Ï€Ïόσθετης μνήμης για πιο γÏήγοÏη ευÏετηÏίαση"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "δευτεÏόλεπτα"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "ΕÏÏεση από μια συγκεκÏιμένη υπηÏεσία"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "ΑλληλογÏαφία"
-
-# #-#-#-#-# gnome-terminal.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# anjuta-el.po (anjuta 0.1.9) #-#-#-#-#
-# #-#-#-#-# galeon-el.po (galeon 1.0) #-#-#-#-##
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-##
-# #-#-#-#-# sodipodi-el.po (sodipodi 0.25) #-#-#-#-##
-# #-#-#-#-# toutdoux-el.po (toutdoux 1.0) #-#-#-#-##
-# #-#-#-#-# gaim-el.po (gaim 0.48) #-#-#-#-##
-# #-#-#-#-# gimp-print-el.po (gimp-print 1.0) #-#-#-#-##
-# #-#-#-#-# screem-el.po (screem 1.0) #-#-#-#-##
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Όλα τα αÏχεία"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Φάκελοι"
-
-# #-#-#-#-# gnome-icon-theme.HEAD.el.po (el) #-#-#-#-#
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# #-#-#-#-# gimmie.HEAD.el.po (gimmie 0.1) #-#-#-#-#
-# #-#-#-#-# gnome-icon-theme.gnome-2-14.el.po (el) #-#-#-#-#
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-# 48x48/emblems/emblem-documents.icon.in.h:1
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "ΈγγÏαφα"
-
-# #-#-#-#-# gimp-script-fu.gimp-2-4.el.po (gimp-script-fu 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gimp.gimp-2-4.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# anjuta.HEAD.el.po (anjuta 0.1.9) #-#-#-#-#
-#
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# balsa-el.po (balsa 0.9.3.1) #-#-#-#-#
-#
-# #-#-#-#-# bonobo-el.po (bonobo 0.34) #-#-#-#-#
-#
-# #-#-#-#-# gimp-script-fu-el.po (gimp-script-fu 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gtkhtml-el.po (gtkhtml 0.8.1) #-#-#-#-#
-#
-# #-#-#-#-# gtop-el.po (gtop 1.0.9) #-#-#-#-#
-#
-# #-#-#-#-# guppi3-el.po (guppi3 1.0) #-#-#-#-#
-#
-# #-#-#-#-# nautilus-el.po (nautilus 0.8.3) #-#-#-#-#
-#
-# #-#-#-#-# sodipodi-el.po (sodipodi 0.25) #-#-#-#-#
-#
-# #-#-#-#-# toutdoux-el.po (toutdoux 1.0) #-#-#-#-#
-#
-# #-#-#-#-# achtung-el.po (achtung 0.99.0) #-#-#-#-#
-#
-# #-#-#-#-# gaim-el.po (gaim 0.48) #-#-#-#-#
-#
-# #-#-#-#-# screem-el.po (screem 1.0) #-#-#-#-#
-#
-# #-#-#-#-# orca.gnome-2-22.el.po (el) #-#-#-#-#
-# #-#-#-#-# gtkhtml.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# balsa-el.po (balsa 0.9.3.1) #-#-#-#-#
-#
-# #-#-#-#-# bonobo-el.po (bonobo 0.34) #-#-#-#-#
-#
-# #-#-#-#-# gimp-script-fu-el.po (gimp-script-fu 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gtkhtml-el.po (gtkhtml 0.8.1) #-#-#-#-#
-#
-# #-#-#-#-# gtop-el.po (gtop 1.0.9) #-#-#-#-#
-#
-# #-#-#-#-# guppi3-el.po (guppi3 1.0) #-#-#-#-#
-#
-# #-#-#-#-# nautilus-el.po (nautilus 0.8.3) #-#-#-#-#
-#
-# #-#-#-#-# sodipodi-el.po (sodipodi 0.25) #-#-#-#-#
-#
-# #-#-#-#-# toutdoux-el.po (toutdoux 1.0) #-#-#-#-#
-#
-# #-#-#-#-# achtung-el.po (achtung 0.99.0) #-#-#-#-#
-#
-# #-#-#-#-# gaim-el.po (gaim 0.48) #-#-#-#-#
-#
-# #-#-#-#-# screem-el.po (screem 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gtkhtml.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# gimp-tiny-fu.HEAD.el.po (gimp-script-fu 1.0) #-#-#-#-#
-#
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Κείμενο"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Ανάπτυξη λογισμικοÏ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "ΚαταγÏαφές συνομιλίας"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "ΕφαÏμογές"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "ΙστοÏικό πεÏιήγησης ιστοσελίδων"
-
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "Ά_νοιγμα"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Ά_νοιγμα φακέλου"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Μετα_φοÏά στα αποÏÏίμματα"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "Αποθήκευ_ση αποτελεσμάτων ως..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Αποτυχία μετατÏοπής κωδικοποίησης χαÏακτήÏων για \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Συνέβει το ακόλουθο σφάλμα :"
-
-# #-#-#-#-# libgnomeui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# eel-el.po (eel 1.0.0.1) #-#-#-#-#
-#
-# #-#-#-#-# gabber-el.po (gabber 1.0) #-#-#-#-#
-#
-# #-#-#-#-# galeon-el.po (galeon 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-#
-#
-# #-#-#-#-# gnucash-el.po (abiword 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gtk+-el.po (gtk+ 1.2.9) #-#-#-#-#
-#
-# #-#-#-#-# nautilus-el.po (nautilus 0.8.3) #-#-#-#-#
-#
-# #-#-#-#-# pan-el.po (pan 0.11.1.90) #-#-#-#-#
-#
-# #-#-#-#-# gaim-el.po (gaim 0.48) #-#-#-#-#
-#
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Σφάλμα"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "ΕννοοÏσατε"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Η αναζήτησή σας δεν επέστÏεψε αποτελέσματα."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "ΕÏγαλείο ΕÏÏεσης-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "ΕÏγαλείο ΕÏÏεσης"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "Αποτε_λέσματα αναζήτησης: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "δεν Ï€Ïαγματοποιήθηκε αναζήτηση"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "ΠÏοβολή λίστας"
-
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Εικονίδιο"
-
-# #-#-#-#-# gimp-plug-ins.gimp-2-4.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# gconf-editor.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# atomix-el.po (atomix 1.0) #-#-#-#-#
-#
-# #-#-#-#-# balsa-el.po (balsa 0.9.3.1) #-#-#-#-#
-#
-# #-#-#-#-# bonobo-el.po (bonobo 0.34) #-#-#-#-#
-#
-# #-#-#-#-# bug-buddy-el.po (bug-buddy 2.0.6) #-#-#-#-#
-#
-# #-#-#-#-# galeon-el.po (galeon 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gnome-db-el.po (gnome-db 0.0.91) #-#-#-#-#
-#
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-#
-#
-# #-#-#-#-# gnucash-el.po (abiword 1.0) #-#-#-#-#
-#
-# #-#-#-#-# guppi3-el.po (guppi3 1.0) #-#-#-#-#
-#
-# #-#-#-#-# libgda-el.po (gnome-db 0.0.91) #-#-#-#-#
-#
-# #-#-#-#-# mrproject-el.po (mrproject 0.5) #-#-#-#-#
-#
-# #-#-#-#-# nautilus-el.po (nautilus 0.8.3) #-#-#-#-#
-#
-# #-#-#-#-# pan-el.po (pan 0.11.1.90) #-#-#-#-#
-#
-# #-#-#-#-# toutdoux-el.po (toutdoux 1.0) #-#-#-#-#
-#
-# #-#-#-#-# gnomemeeting-el.po (gnomemeeting 0.12.2) #-#-#-#-#
-#
-# #-#-#-#-# pong-el.po (pong 0.7) #-#-#-#-#
-#
-# #-#-#-#-# screem-el.po (screem 1.0) #-#-#-#-#
-#
-# #-#-#-#-# ximian-setup-tools-el.po (ximian-setup-tools 0.7.0) #-#-#-#-#
-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# ekiga.gnome-2-20.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# libbonoboui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# bonobo.HEAD.el.po (bonobo 0.34) #-#-#-#-#
-#
-# #-#-#-#-# bug-buddy.bug-buddy-2-0.el.po (bug-buddy 2.0.6) #-#-#-#-#
-#
-# #-#-#-#-# gnome-libs.gnome-libs-1-0.el.po (gnome-libs 1.2.12) #-#-#-#-#
-#
-# #-#-#-#-# nautilus.nautilus-gnome-1.el.po (nautilus 0.8.3) #-#-#-#-#
-#
-# #-#-#-#-# gnome-system-tools.HEAD.el.po (el) #-#-#-#-#
-#
-# #-#-#-#-# user-guide.HEAD.el.po (user-guide.docs) #-#-#-#-#
-# #-#-#-#-# nautilus.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# gconf-editor.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# atomix-el.po (atomix 1.0) #-#-#-#-##
-# #-#-#-#-# balsa-el.po (balsa 0.9.3.1) #-#-#-#-##
-# #-#-#-#-# bonobo-el.po (bonobo 0.34) #-#-#-#-##
-# #-#-#-#-# bug-buddy-el.po (bug-buddy 2.0.6) #-#-#-#-##
-# #-#-#-#-# galeon-el.po (galeon 1.0) #-#-#-#-##
-# #-#-#-#-# gnome-db-el.po (gnome-db 0.0.91) #-#-#-#-##
-# #-#-#-#-# gnome-libs-el.po (gnome-libs 1.2.12) #-#-#-#-##
-# #-#-#-#-# gnucash-el.po (abiword 1.0) #-#-#-#-##
-# #-#-#-#-# guppi3-el.po (guppi3 1.0) #-#-#-#-##
-# #-#-#-#-# libgda-el.po (gnome-db 0.0.91) #-#-#-#-##
-# #-#-#-#-# mrproject-el.po (mrproject 0.5) #-#-#-#-##
-# #-#-#-#-# nautilus-el.po (nautilus 0.8.3) #-#-#-#-##
-# #-#-#-#-# pan-el.po (pan 0.11.1.90) #-#-#-#-##
-# #-#-#-#-# toutdoux-el.po (toutdoux 1.0) #-#-#-#-##
-# #-#-#-#-# gnomemeeting-el.po (gnomemeeting 0.12.2) #-#-#-#-##
-# #-#-#-#-# pong-el.po (pong 0.7) #-#-#-#-##
-# #-#-#-#-# screem-el.po (screem 1.0) #-#-#-#-##
-# #-#-#-#-# ximian-setup-tools-el.po (ximian-setup-tools 0.7.0) #-#-#-#-##
-# #-#-#-#-# ekiga.gnome-2-14.el.po (el) #-#-#-#-##
-# #-#-#-#-# gnome-system-tools.HEAD.el.po (el) #-#-#-#-##
-# #-#-#-#-# libbonoboui.HEAD.el.po (el) #-#-#-#-#
-# #-#-#-#-# bonobo.HEAD.el.po (bonobo 0.34) #-#-#-#-##
-# #-#-#-#-# bug-buddy.bug-buddy-2-0.el.po (bug-buddy 2.0.6) #-#-#-#-##
-# #-#-#-#-# gnome-libs.gnome-libs-1-0.el.po (gnome-libs 1.2.12) #-#-#-#-##
-# #-#-#-#-# nautilus.nautilus-gnome-1.el.po (nautilus 0.8.3) #-#-#-#-##
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Όνομα"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_ΚατηγοÏίες"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d από %d αντικείμενα"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d αντικείμενο"
-msgstr[1] "%d αντικείμενα"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"Δεν ήταν δυνατή η σÏνδεση στην υπηÏεσία εÏÏεσης επειδή είναι πιθανό να είναι "
-"απασχολημένη"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "Ανα_ζήτηση:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Η ΕÏÏεση δημιουÏγεί ακόμα το ευÏετήÏιο, έτσι δεν είναι ακόμα διαθέσιμα όλα "
-"τα αποτελέσματα της αναζήτησης"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Εισάγετε ένα ÏŒÏο αναζήτησης με πολλαπλές λέξεις διαχωÏισμένες με κενά."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "search_entry"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Πατήστε για αναζήτηση."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Αδυναμία ανοίγματος αÏχείου βοήθειας."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Είστε σίγουÏοι ότι θέλετε να ανοίξετε %d έγγÏαφο;"
-msgstr[1] "Είστε σίγουÏοι ότι θέλετε να ανοίξετε %d έγγÏαφα;"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Αυτό θα ανοίξει %d διαφοÏετικό παÏάθυÏο."
-msgstr[1] "Αυτό θα ανοίξει %d διαφοÏετικά παÏάθυÏα."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Αδυναμία ανοίγματος εγγÏάφου \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Αδυναμία ανοίγματος φακέλου \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Ο διαχειÏιστής αÏχείων (nautilus) δεν εκτελείται."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Δεν ήταν δυνατό το άνοιγμα της εφαÏμογής"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "Το έγγÏαφο δεν υπάÏχει."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Δεν υπάÏχει εγκατεστημένο Ï€ÏόγÏαμμα Ï€Ïοβολής για την εμφάνιση του εγγÏάφου."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Είστε σίγουÏοι ότι θέλετε να ανοίξετε %d φάκελο;"
-msgstr[1] "Είστε σίγουÏοι ότι θέλετε να ανοίξετε %d φακέλους;"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Αδυναμία μετακίνησης του \"%s\" στα αποÏÏίμματα."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Θέλετε την οÏιστική διαγÏαφή του \"%s\";"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"Τα αποÏÏίμματα δεν είναι Ï€Ïοσβάσιμα. Αδυναμία μετακίνησης\"%s\" στα "
-"αποÏÏίμματα."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Αδυναμία διαγÏαφής \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Η μετακίνηση \"%s\" απέτυχε: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Η διαγÏαφή του \"%s\" απέτυχε: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr ""
-"Κάνετε ενεÏγοποίηση για να Ï€Ïοβάλετε αυτό το μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Αποθήκευση αποτελεσμάτων αναζήτησης ως..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "Αδυναμία αποθήκευσης εγγÏάφου."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Δεν επιλέξατε ένα όνομα εγγÏάφου."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Αδυναμία αποθήκευσης εγγÏάφου \"%s\" σε \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Το έγγÏαφο\"%s\" υπάÏχει ήδη. Θέλετε να το αντικαταστήσετε;"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-"Αν αντικαταστήσετε ένα υπάÏχον αÏχείο, τα πεÏιεχόμενα του θα αντικατασταθοÏν "
-"από το νέο."
-
-# #-#-#-#-# anjuta.HEAD.el.po (anjuta 0.1.9) #-#-#-#-#
-#
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Αντικατάσταση"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "Το όνομα εγγÏάφου που επιλέξατε είναι ένας φάκελος."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "ΜποÏεί να μην έχετε τα απαÏαίτητα δικαιώματα εγγÏαφής για το έγγÏαφο."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Εντοπισμός εγγÏάφων και φακέλων σε αυτό τον υπολογιστή με βάση το όνομα ή το "
-"πεÏιεχόμενο με χÏήση της ΕÏÏεσης"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Σφάλμα GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "σήμεÏα στις %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "χθες στις %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y στις %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "σÏνδεσμος (κατεστÏαμμένος)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "σÏνδεσμος σε %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "ΥπηÏεσία αναζήτησης και ευÏετηÏίασης"
diff --git a/po/en_GB.po b/po/en_GB.po
deleted file mode 100644
index eedefea81..000000000
--- a/po/en_GB.po
+++ /dev/null
@@ -1,1569 +0,0 @@
-# English (British) translation for tracker
-# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the tracker package.
-# David Lodge <dave@cirt.net>, 2006
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-09 18:07+0000\n"
-"PO-Revision-Date: 2008-03-09 18:06+0000\n"
-"Last-Translator: David Lodge <dave@cirt.net>\n"
-"Language-Team: en_GB <en@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Launch %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mail from %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Listen to music %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"See document %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Open file %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"View image %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Watch video %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Open folder %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "with"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "in channel"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Search all of your documents, <b>as you type</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Development Files"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Music"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Images"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Search for %s with Tracker Search Tool"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Search all of your documents with Tracker Search Tool"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker Search"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Search with Tracker Search Tool"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Tracker Live Search"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Search with Tracker, as you type"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Path: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modified: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Size: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Accessed: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Sender : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Date : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comment : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categories : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Duration: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Genre: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitrate: <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Year: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " taken with a <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensions: <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Date Taken: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientation: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Focal Length: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Exposure Time: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Author: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitrate: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Encoded In: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Framerate: <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Subject: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Page Count: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Word Count: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Created: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comments: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1031
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1054
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1076
-msgid "Unknown"
-msgstr "Unknown"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Type tags you want to add here, separated by commas"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Tags:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Search For Tag"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Remove Tag"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limit the number of results showed to N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Search for a specific service"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Show more detailed results with service and mime type as well"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - search files for certain terms"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "The list of recognised services is:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Try \"%s --help\" for more information."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: missing search terms"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: no connection to tracker daemon"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Ensure \"trackerd\" is running before launch this command."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Service not recognised, searching in Other Files...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: internal tracker error: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "No results found matching your query"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - show number of indexed files for each service"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "fetching index stats"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Add specified tag to a file"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "TAG"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Remove specified tag from a file"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Remove all tags from a file"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "List all defined tags"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Search for files with specified tag"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FILE..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FILE... - manipulate tags on files"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: invalid arguments"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: file %s not found"
-
-#: ../src/trackerd/trackerd.c:150
-msgid "Directory to exclude from indexing"
-msgstr "Directory to exclude from indexing"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-#: ../src/trackerd/trackerd.c:152
-msgid "/PATH/DIR"
-msgstr "/PATH/DIR"
-
-#: ../src/trackerd/trackerd.c:151
-msgid "Directory to include in indexing"
-msgstr "Directory to include in indexing"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Directory to crawl for indexing at start up only"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Disable any indexing or watching taking place"
-msgstr "Disable any indexing or watching taking place"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-
-#: ../src/trackerd/trackerd.c:154 ../src/trackerd/trackerd.c:155
-msgid "VALUE"
-msgstr "VALUE"
-
-#: ../src/trackerd/trackerd.c:155
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimises the use of memory but may slow indexing down"
-
-#: ../src/trackerd/trackerd.c:157
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Initial sleep time, just before indexing, in seconds"
-
-#: ../src/trackerd/trackerd.c:158
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "LANG"
-msgstr "LANG"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Force a re-index of all content"
-msgstr "Force a re-index of all content"
-
-#: ../src/trackerd/trackerd.c:160
-msgid "Make tracker errors fatal"
-msgstr "Make Tracker errors fatal"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2434
-msgid "- start the tracker daemon"
-msgstr "- start the tracker daemon"
-
-#: ../src/trackerd/trackerd.c:2435 ../src/trackerd/trackerd.c:2436
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../src/trackerd/trackerd.c:2443
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Control and monitor the Tracker search and indexing service"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Tracker Applet"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "Idle"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "Indexing"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "Merging"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (paused by user)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (paused by system)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (paused by battery)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "folders"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "mailboxes"
-
-#: ../src/tracker-applet/tracker-applet.c:741
-msgid "Re-index your system?"
-msgstr "Re-index your system?"
-
-#: ../src/tracker-applet/tracker-applet.c:742
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indexing can take a long time. Are you sure you want to re-index?"
-
-#: ../src/tracker-applet/tracker-applet.c:775
-msgid "_Pause All Indexing"
-msgstr "_Pause All Indexing"
-
-#: ../src/tracker-applet/tracker-applet.c:784
-msgid "_Search"
-msgstr "_Search"
-
-#: ../src/tracker-applet/tracker-applet.c:791
-msgid "_Re-index"
-msgstr "_Re-index"
-
-#: ../src/tracker-applet/tracker-applet.c:797
-msgid "_Preferences"
-msgstr "_Preferences"
-
-#: ../src/tracker-applet/tracker-applet.c:803
-msgid "_Indexer Preferences"
-msgstr "_Indexer Preferences"
-
-#: ../src/tracker-applet/tracker-applet.c:809
-msgid "S_tatistics"
-msgstr "S_tatistics"
-
-#: ../src/tracker-applet/tracker-applet.c:815
-msgid "_About"
-msgstr "_About"
-
-#: ../src/tracker-applet/tracker-applet.c:824
-msgid "_Quit"
-msgstr "_Quit"
-
-#: ../src/tracker-applet/tracker-applet.c:1415
-msgid "Statistics"
-msgstr "Statistics"
-
-#: ../src/tracker-applet/tracker-applet.c:1436
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1550
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-
-#: ../src/tracker-applet/tracker-applet.c:1554
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-
-#: ../src/tracker-applet/tracker-applet.c:1558
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1573
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-
-#: ../src/tracker-applet/tracker-applet.c:1574
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 The Tracker authors"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1584
-msgid "translator-credits"
-msgstr ""
-"David Lodge <dave@cirt.net>\n"
-"Philip Withnall <pwithnall@svn.gnome.org>"
-
-#: ../src/tracker-applet/tracker-applet.c:1587
-msgid "Tracker Web Site"
-msgstr "Tracker Web Site"
-
-#: ../src/tracker-applet/tracker-applet.c:1914 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1919
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and e-mails"
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"You can pause indexing at any time and configure index settings by right-"
-"clicking here"
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker has finished indexing your system"
-
-#: ../src/tracker-applet/tracker-applet.c:1923
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " in %d hours and %d minutes"
-
-#: ../src/tracker-applet/tracker-applet.c:1924
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " in %d minutes and %d seconds"
-
-#: ../src/tracker-applet/tracker-applet.c:1925
-#, c-format
-msgid " in %d seconds"
-msgstr " in %d seconds"
-
-#: ../src/tracker-applet/tracker-applet.c:1926
-msgid "You can now perform searches by clicking here"
-msgstr "You can now perform searches by clicking here"
-
-#: ../src/tracker-applet/tracker-applet.c:1929
-msgid "Files:"
-msgstr "Files:"
-
-#: ../src/tracker-applet/tracker-applet.c:1930
-msgid " Folders:"
-msgstr " Folders:"
-
-#: ../src/tracker-applet/tracker-applet.c:1931
-msgid " Documents:"
-msgstr " Documents:"
-
-#: ../src/tracker-applet/tracker-applet.c:1932
-msgid " Images:"
-msgstr " Images:"
-
-#: ../src/tracker-applet/tracker-applet.c:1933
-msgid " Music:"
-msgstr " Music:"
-
-#: ../src/tracker-applet/tracker-applet.c:1934
-msgid " Videos:"
-msgstr " Videos:"
-
-#: ../src/tracker-applet/tracker-applet.c:1935
-msgid " Text:"
-msgstr " Text:"
-
-#: ../src/tracker-applet/tracker-applet.c:1936
-msgid " Development:"
-msgstr " Development:"
-
-#: ../src/tracker-applet/tracker-applet.c:1937
-msgid " Other:"
-msgstr " Other:"
-
-#: ../src/tracker-applet/tracker-applet.c:1938
-msgid "Applications:"
-msgstr "Applications:"
-
-#: ../src/tracker-applet/tracker-applet.c:1939
-msgid "Conversations:"
-msgstr "Conversations:"
-
-#: ../src/tracker-applet/tracker-applet.c:1940
-msgid "Emails:"
-msgstr "E-mails:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animation</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Smart Pausing</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Visibility</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animate _icon when indexing"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Applet Preferences"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "_Automatically pause all indexing when computer is in active use"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Hide Icon (except when displaying messages to user)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Off"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/tracker-preferences/tracker-preferences.c:808
-msgid "Data must be reindexed"
-msgstr "Data must be reindexed"
-
-#: ../src/tracker-preferences/tracker-preferences.c:809
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "_Reindex"
-msgstr "_Reindex"
-
-#: ../src/tracker-preferences/tracker-preferences.c:819
-msgid "Tracker daemon must be restarted"
-msgstr "Tracker daemon must be restarted"
-
-#: ../src/tracker-preferences/tracker-preferences.c:821
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-
-#: ../src/tracker-preferences/tracker-preferences.c:826
-msgid "_Restart"
-msgstr "_Restart"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configure file indexing with Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Search and Indexing"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Crawled Directories</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Ignored File Patterns</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ignored Paths</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Index Merging</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indexing Limits (per file)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indexing Options</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexing</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Power management</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Resource Usage</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Startup</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Stemming</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Throttling</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Watch Directories</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Additional mbox style mailboxes to index:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Additional paths to index and watch:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "Additional paths to index on startup (but not watch for updates):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Disable all Indexing when on battery"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "Disable initial index sweep when on battery"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "Enable _Evolution e-mail indexing"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "Enable _KMail e-mail indexing"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Enable _Thunderbird e-mail indexing"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "Enable _watching"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "Enable i_ndexing"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "Faster"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "File patterns to ignore during indexing:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Files"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "General"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Generate thum_bnails"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Ignored Files"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "Index _delay: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Index _file contents"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Index _mounted directories"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Index and watch my home _directory"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Indexing speed:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "Maximum _amount of text to index:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Maximum number of unique _words to index:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Path roots to be ignored during indexing:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Perform fast index merges (may affect system performance)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Performance"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Slower"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Tracker Preferences"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Language:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimise memory usage (slower indexing)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Use additional memory for faster indexing"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "seconds"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Search from a specific service"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-mails"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "All Files"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Folders"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documents"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1229
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Development"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Chat Logs"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Applications"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "WebHistory"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Open"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "O_pen Folder"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Mo_ve to the Wastebasket"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Save Results As..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Character set conversion failed for \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occurred :"
-msgstr "The following error has occurred :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:285
-msgid "Error"
-msgstr "Error"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:660
-msgid "Did you mean"
-msgstr "Did you mean"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:691
-msgid "Your search returned no results."
-msgstr "Your search returned no results."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:706
-msgid "Tracker Search Tool-"
-msgstr "Tracker Search Tool-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:867
-#: ../src/tracker-search-tool/tracker-search-tool.c:2261
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker Search Tool"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1057
-msgid "Search _results: "
-msgstr "Search _results: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1063
-msgid "no search performed"
-msgstr "no search performed"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1123
-#: ../src/tracker-search-tool/tracker-search-tool.c:1283
-msgid "List View"
-msgstr "List View"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1195
-msgid "Icon"
-msgstr "Icon"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1207
-msgid "Name"
-msgstr "Name"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1301
-msgid "_Categories"
-msgstr "_Categories"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1581
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d of %d items"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1584
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d item"
-msgstr[1] "%d items"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1632
-#: ../src/tracker-search-tool/tracker-search-tool.c:1827
-msgid "Could not connect to search service as it may be busy"
-msgstr "Could not connect to search service as it may be busy"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2028
-msgid "_Search:"
-msgstr "_Search:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2042
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "Tracker is still indexing so not all search results are available yet"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2056
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Enter a search term with multiple words seperated with spaces."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "search_entry"
-msgstr "search _entry"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2103
-msgid "Click to perform a search."
-msgstr "Click to perform a search."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Could not open help document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Are you sure you want to open %d document?"
-msgstr[1] "Are you sure you want to open %d documents?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "This will open %d separate window."
-msgstr[1] "This will open %d separate windows."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Could not open document \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Could not open folder \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "The nautilus file manager is not running."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Application could not be opened"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "The document does not exist."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "There is no installed viewer capable of displaying the document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Are you sure you want to open %d folder?"
-msgstr[1] "Are you sure you want to open %d folders?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Could not move \"%s\" to the wastebasket."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Do you want to delete \"%s\" permanently?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"The wastebasket is unavailable. Could not move \"%s\" to the wastebasket."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Could not delete \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Moving \"%s\" failed: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Deleting \"%s\" failed: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Activate to view this e-mail"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Save Search Results As..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "Could not save document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "You did not select a document name."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Could not save \"%s\" document to \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "The document \"%s\" already exists. Would you like to replace it?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "If you replace an existing file, its contents will be overwritten."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Replace"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "The document name you selected is a folder."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "You may not have write permissions to the document."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf error:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "today at %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "yesterday at %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %d %B %Y at %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "link (broken)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "link to %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Tracker search and indexing service"
-
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Mailboxes</b>"
-
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Services</b>"
-
-#, fuzzy
-#~ msgid "_Emails"
-#~ msgstr "Emails"
-
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>File Metadata</b>"
-
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>General</b>"
-
-#~ msgid "Enable Index Throttling"
-#~ msgstr "Enable Index Throttling"
-
-#~ msgid "Normal Mode"
-#~ msgstr "Normal Mode"
-
-#~ msgid "Polling Interval: "
-#~ msgstr "Polling Interval: "
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Reduced Memory Mode"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "Start _indexing service automatically"
-
-#~ msgid "Start _mointoring service automatically"
-#~ msgstr "Start _mointoring service automatically"
-
-#~ msgid "Throttling Level: "
-#~ msgstr "Throttling Level: "
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Turbo Mode"
-
-#~ msgid "_Privacy"
-#~ msgstr "_Privacy"
-
-#~ msgid "gtk-add"
-#~ msgstr "gtk-add"
-
-#~ msgid "gtk-help"
-#~ msgstr "gtk-help"
-
-#~ msgid "gtk-remove"
-#~ msgstr "gtk-remove"
-
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%d result"
-#~ msgstr[1] "%d results"
-
-#~ msgid "Please enter a search term above"
-#~ msgstr "Please enter a search term above"
-
-#~ msgid "Plain text"
-#~ msgstr "Plain text"
-
-#~ msgid "No files found"
-#~ msgstr "No files found"
-
-#~ msgid "_Previous"
-#~ msgstr "_Previous"
-
-#~ msgid "_Next"
-#~ msgstr "_Next"
-
-#~ msgid "Invalid service type: %s\n"
-#~ msgstr "Invalid service type: %s\n"
-
-#~ msgid "value"
-#~ msgstr "value"
-
-#~ msgid "Enables more verbose debug messages"
-#~ msgstr "Enables more verbose debug messages"
-
-#~ msgid "Faster indexing, use more memory and CPU"
-#~ msgstr "Faster indexing, use more memory and CPU"
-
-#~ msgid "Slower indexing, use less memory and CPU"
-#~ msgstr "Slower indexing, use less memory and CPU"
diff --git a/po/es.po b/po/es.po
deleted file mode 100644
index c1e44b317..000000000
--- a/po/es.po
+++ /dev/null
@@ -1,1495 +0,0 @@
-# translation of tracker.HEAD.po to Español
-# translation of tracker to spanish
-# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-17 19:31+0100\n"
-"PO-Revision-Date: 2008-08-29 10:30+0200\n"
-"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
-"Language-Team: Español <gnome-es-list@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Lanzar %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Ver la conversación %s\n"
-"%s %s\n"
-"de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Correo-e de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Escuchar música %s\n"
-"en %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Ver el documento %s\n"
-"en %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Abrir archivo %s\n"
-"en %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Ver imagen %s\n"
-"en %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Ver vídeo %s\n"
-"en %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Abrir carpeta %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "con"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "en el canal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Buscar en todos sus documentos, <b>al escribir</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Archivos de desarrollo"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Música"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Imágenes"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Vídeos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Buscar %s con la herramienta de búsqueda Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Busque en todos sus documentos con la herramienta de búsqueda Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Búsqueda Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Buscar con la herramienta de búsqueda Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Herramienta de búsqueda en vivo Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Buscar con Tracker, al escribir"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Ruta : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modificado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Tamaño : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Accedido : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Remitente : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Fecha : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comentario : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categorías : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Duración : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Género : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Tasa de bits : <b>%s Kbps</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Año : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Códec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " tomado con una <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensiones : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Fecha en que se tomó: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientación : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Longitud focal : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Tiempo de exposición : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Tasa de bits : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codificado con : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Tasa de fotogramas : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Asunto : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Número de páginas : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Número de palabras : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Creado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comentarios : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KiB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MiB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GiB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Escriba aquí las etiquetas que quiere añadir, separadas por comas"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Etiquetas :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Buscar por etiqueta"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Eliminar etiqueta"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limitar el número de resultados mostrados a N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Buscar un servicio específico"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICIO"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Mostrar resultados más detallados con el tipo de servicio y tipo mime"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TÉRMINO: buscar en los archivos un término específico"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Si especifica más de un término, se mostrarán los elementos que contienen "
-"TODOS los términos especificados (término1 Y término 2, conjunción lógica)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "La lista de servicios reconocidos es:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Intente «%s --help» para obtener más información."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: faltan los términos de búsqueda"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: no hay conexión al demonio de tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Asegúrese de que «trackerd» esté funcionando antes de lanzar este comando."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Servicio no reconocido, buscando en Otros archivos...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: error interno de tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "No se encontraron resultados coincidentes con su consulta"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - mostrar el número de archivos indexados para cada servicio"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "obteniendo las estadísticas del índice"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Añadir etiqueta especificada a un archivo"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ETIQUETA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Quitar etiqueta especificada de un archivo"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Quitar todas las etiquetas de un archivo"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Listar todas las etiquetas definidas"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Buscar archivos con la etiqueta especificada"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ARCHIVO..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ARCHIVO... - manipular etiquetas en los archivos"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para añadir, quitar o buscar etiquetas múltiples al mismo tiempo, una varias "
-"opciones como:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: argumentos inválidos"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: archivo %s no encontrado"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Directorio que excluir del indexado"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/RUTA/DIR"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Directorio que incluir en el indexado"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Directorio que arañar para indexar sólo al inicio"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Desactivar cualquier indexado o vista que se esté realizando"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Valor que controla el nivel de registro. Los valores válidos son 0 (sólo "
-"muestra errores), 1 (mínimo), 2 (detallado) y 3 (depuración)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VALOR"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Valores que usar para la aceleración del indexado. Los valores deben estar "
-"comprendidos entre 0 y 99 (de forma predeterminada es 0) dando los valores "
-"bajos una aceleración mayor del indexado"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimiza el uso de memoria pero puede ralentizar el indexado"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Tiempo inicial de latencia, justo antes de indexar, en segundos"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Idioma que usar para stemmer y lista de palabras de parada (código de "
-"caracteres ISO 639-1 2)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "LANG"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Forzar un reindexamiento de todo el contenido"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Hacer que los errores de tracker sean fatales"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:664
-msgid "- start the tracker daemon"
-msgstr "iniciar el demonio de tracker"
-
-#: ../src/trackerd/trackerd.c:665 ../src/trackerd/trackerd.c:666
-msgid "DIRECTORY"
-msgstr "DIRECTORIO"
-
-#: ../src/trackerd/trackerd.c:673
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para incluir o excluir varios directorios a la vez, una varias opciones como:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Controle y monitorice el servicio de búsqueda e indexado Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Miniaplicación Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker: "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Ocioso"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indexando"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Mezclando"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (pausado por el usuario)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (pausado por el sistema)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (pausado por la batería)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "carpetas"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "buzones de correo"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "¿Reindexar su sistema?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"El indexado puede llevar un largo tiempo. ¿Está seguro de que quiere "
-"reindexar?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Estadísticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Estadísticas del indexado</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker es software libre; puede redistribuirlo y/o modificarlo bajo los "
-"términos de la Licencia Pública General GNU tal como se publica por la Free "
-"Software Foundation; ya sea la versión 2 de la Licencia, o (a su elección) "
-"cualquier versión posterior."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker se distribuye con la esperanza de que le sea útil, pero SIN NINGUNA "
-"GARANTÃA; sin incluso la garantía implícita de MERCANTILIDAD o IDONEIDAD "
-"PARA UN PROPÓSITO PARTICULAR. Vea la Licencia Pública General GNU para más "
-"detalles."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Debería haber recibido una copia de la Licencia Pública General GNU junto "
-"con Tracker; si no es el caso, escriba a la Free Software Foundation, Inc., "
-"59 Temple Place, Suite 330, Boston, MA 02111-1307 EE. UU."
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker es una herramienta diseñada para extraer información y metadatos de "
-"sus archivos personales, de tal forma que pueda ser fácil y rápidamente "
-"buscada."
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Los autores de Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr "Jorge González <jorgegonz@svn.gnome.org>, 2007-2008."
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Página web de Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Pausar todos los indexados"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Buscar"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Reindexar"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Preferencias"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Preferencias del _indexado"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "Es_tadísticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "Acerca _de"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Salir"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Su equipo está a punto de ser indexado para que pueda realizar búsquedas "
-"rápidas de sus archivos y correos"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Puede pausar el indexado en cualquier momento y configurar los ajustes de "
-"indexado pulsando con el botón derecho del ratón aquí"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker ha terminado de indexar su sistema"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " en %d horas y %d minutos "
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " en %d minutos y %d segundos"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr "en %d segundos"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Ahora puede realizar búsquedas pulsando aquí"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Archivos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Carpetas:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Documentos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Imágenes:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Música:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Vídeos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Texto:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Desarrollo:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Otros:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Aplicaciones:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Conversaciones:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "Correos-e:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animación</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Pausado inteligente</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Visibilidad</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animar _icono cuanto se esté indexando"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "_Preferencias de la miniaplicación"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"_Pausar automáticamente si el indexado degradará el rendimiento de otras "
-"aplicaciones activas en uso"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-"Pausar todos los indexados _automáticamente cuando el equipo esté en uso"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Ocultar icono (excepto cuando se muestren mensajes al usuario)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "Apaga_r"
-
-#: ../src/tracker-preferences/tracker-preferences.c:833
-msgid "Data must be reindexed"
-msgstr "Los datos deben ser reindexados"
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Para que sus cambios tengan efecto, Tracker debe reindexar sus archivos. "
-"Pulse el botón Reindexar para comenzar el reindexado ahora, de otra forma "
-"esta acción se realizará la próxima vez que se inicie el demonio de Tracker."
-
-#: ../src/tracker-preferences/tracker-preferences.c:841
-msgid "_Reindex"
-msgstr "_Reindexar"
-
-#: ../src/tracker-preferences/tracker-preferences.c:844
-msgid "Tracker daemon must be restarted"
-msgstr "Se debe reiniciar el demonio de Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.c:846
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Para que sus cambios tengan efecto se debe reiniciar el demonio de Tracker. "
-"Pulse el botón Reiniciar para reiniciar el demonio ahora."
-
-#: ../src/tracker-preferences/tracker-preferences.c:851
-msgid "_Restart"
-msgstr "_Reiniciar"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configure el indexado de archivos con Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Búsqueda e indexado"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Directorios arañados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Patrones de archivo ignorados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Rutas ignoradas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Mezclado de índices</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Límites de indexado (por archivo)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opciones de indexado</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexado</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Gestión de energía</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Uso de recursos</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Inicio</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Ramificaciones</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Aceleración</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Directorios vigilados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Buzones de correo adicionales mbox para indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Rutas adicionales que indexar y vigilar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Rutas adicionales que indexar al inicio (pero no vigilar actualizaciones):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"alemán\n"
-"danés\n"
-"español\n"
-"finlandés\n"
-"francés\n"
-"holandés\n"
-"húngaro\n"
-"inglés\n"
-"italiano\n"
-"noruego\n"
-"portugués\n"
-"ruso\n"
-"sueco"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Desactivar cualquier indexado al funcionar con la batería"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "Desactivar la indexación inicial al funcionar con la batería"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "Correo-e"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Activar el indexado de correos-e de _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Activar el indexado de correos-e de _Kmail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Activar el indexado de correos-e de _Modest"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Activar el indexado de correos de _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Activar _vigilancia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Activar i_ndexado"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Más rápido"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Patrones de archivo que ignorar durante el indexado:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Archivos"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "General"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Generar minia_turas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Archivos ignorados"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "_Retardo de indexado: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Indexar el contenido de los _archivos"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indexar directorios _montados"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indexar y vigilar mi ca_rpeta personal"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Velocidad de indexado:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "Máxima _cantidad de texto para indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Máximo número de _palabras únicas que indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Rutas para ser ignoradas durante el indexado:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Realizar mezclas de índices rápidas (puede afectar al rendimiento del "
-"sistema)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Rendimiento"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Más lento"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Preferencias de Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Idioma:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimizar el uso de memoria (indexado más lento)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "_Usar memoria adicional para indexar más rápidamente"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "KiB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "segundos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Buscar en un servicio específico"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Correos-e"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Todos los archivos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Carpetas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documentos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Texto"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Desarrollo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Registros de chat"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplicaciones"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Histórico web"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Abrir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Abrir _carpeta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Mover a la papelera"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Guardar resultado como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Falló la conversión del conjunto de caracteres para «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Ocurrió el siguiente error:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Error"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Quiso decir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Su búsqueda no devolvió ningún resultado."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Herramienta de búsqueda Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Herramienta de búsqueda Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Resultados de la búsqueda: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "no se realizó ninguna búsqueda"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Vista lista"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Icono"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nombre"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Categorías"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d de %d elementos"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d elemento"
-msgstr[1] "%d impactos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"No se pudo conectar con el servicio de búsqueda ya que puede estar ocupado"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Buscar:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker aún está indexando así que no todos los resultados de búsqueda están "
-"disponibles"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-"Introduzca un término de búsqueda con varias palabras separadas por espacios."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "entrada_búsqueda"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Pulse para realizar una búsqueda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "No se pudo abrir el documento de ayuda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "¿Esta seguro de que quiere abrir %d documento?"
-msgstr[1] "¿Esta seguro de que quiere abrir %d documentos?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Esto abrirá %d ventana separada."
-msgstr[1] "Esto abrirá %d ventanas separadas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "No se pudo abrir el documento «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "No se pudo abrir la carpeta «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "El gestor de archivos Nautilus no se está ejecutando."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "No se pudo abrir la aplicación"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "El documento no existe."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "No hay un visor instalado capaz de mostrar el documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "¿Esta seguro de que quiere abrir una carpeta?"
-msgstr[1] "¿Esta seguro de que quiere abrir %d carpetas?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "No se pudo mover «%s» a la papelera."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "¿Quiere borrar «%s» permanentemente?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "La papelera no está disponible. No se pudo mover «%s» a la papelera."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "No se pudo borrar «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Fallo al mover «%s»: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Fallo al borrar «%s»: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Activar para ver este correo-e"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Guardar los resultados de la búsqueda como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "No se pudo guardar el documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "No seleccionó un nombre de documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "No se pudo guardar el documento «%s» en «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "El documento «%s» ya existe. ¿Desea reemplazarlo?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Si reemplaza un archivo existente, su contenido se sobreescribirá."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Reemplazar"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "El nombre de documento que ha seleccionado es una carpeta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Puede que no tenga permisos de escritura sobre el documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Localice documentos y carpetas en este equipo por nombre o contenido usando "
-"Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Error de GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "hoy a las %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "ayer a las %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y a las %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "enlace (roto)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "enlace a %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Servicio de búsqueda e indexado Tracker"
diff --git a/po/et.po b/po/et.po
deleted file mode 100644
index 1146dc83d..000000000
--- a/po/et.po
+++ /dev/null
@@ -1,978 +0,0 @@
-# Tracker'i eesti keele tõlge.
-# Estonian translation of Tracker.
-#
-# Copyright (C) 2007 The GNOME Project.
-# This file is distributed under the same license as the tracker package.
-#
-# Ivar Smolin <okul@linux.ee>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Tracker HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 04:02+0200\n"
-"PO-Revision-Date: 2007-01-26 20:15+0200\n"
-"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
-"Language-Team: Estonian <gnome-et@linux.ee>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:251
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:361
-msgid "Tags :"
-msgstr ""
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:383
-#, fuzzy
-msgid "_Search For Tag"
-msgstr "_Otsing:"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:395
-msgid "_Remove Tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Tulemuste piiramine arvuga N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Määratud teenuse otsimine"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "TEENUS"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TINGIMUS... - tingimustele vastavate failide otsimine"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Rohkema teabe jaoks proovi \"%s --help\"."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: puuduvad otsingutingimused"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:164 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr ""
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Sinu päringule sobivaid vasteid ei leitud"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr ""
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Määratud sildi lisamine failile"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "SILT"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Määratud sildi eemaldamine failist"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Kõikide siltide eemaldamine failist"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Kõigi määratud siltide kuvamine"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Määratud sildiga failide otsimine"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FAIL..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FAIL... - failide siltidega manipuleerimine"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Mitme sildi samaaegseks lisamiseks, eemaldamiseks või otsimiseks ühenda mitu "
-"võtit järgneval moel:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: vigased argumendid"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: faili %s ei leitud"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Directory to exclude from indexing"
-msgstr "Indekseerimisest väljajäetav kataloog"
-
-#: ../src/trackerd/trackerd.c:158 ../src/trackerd/trackerd.c:159
-#: ../src/trackerd/trackerd.c:160
-msgid "/PATH/DIR"
-msgstr "/RADA/KATALOOG"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Directory to include in indexing"
-msgstr "Indekseerimisse kaasatav kataloog"
-
-#: ../src/trackerd/trackerd.c:160
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Indekseerimisest väljajäetav kataloog"
-
-#: ../src/trackerd/trackerd.c:161
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:162
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:162 ../src/trackerd/trackerd.c:163
-msgid "VALUE"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:163
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-20 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:164
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:165
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid "LANG"
-msgstr "KEEL"
-
-#: ../src/trackerd/trackerd.c:167
-msgid "Force a re-index of all content"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2047
-msgid "- start the tracker daemon"
-msgstr "- jälgimisdeemoni käivitamine"
-
-#: ../src/trackerd/trackerd.c:2048 ../src/trackerd/trackerd.c:2049
-msgid "DIRECTORY"
-msgstr "KATALOOG"
-
-#: ../src/trackerd/trackerd.c:2056
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Indexing Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Mailboxes</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Services</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid "Enable Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:18
-msgid "Enable KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:19
-msgid "Enable Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:20
-msgid "Enable _Indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:21
-msgid "Enable _Watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:22
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:23
-#, fuzzy
-msgid "File patterns to ignore during indexing:"
-msgstr "Indekseerimisse kaasatav kataloog"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:24
-msgid "Generate _thumbnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:25
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:26
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:27
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:28
-msgid "Maximum _amount of text to Index (KB)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Maximum number of unique _words to index"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "P_erformance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Seconds"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Tracker Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "_Emails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "_Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "_General"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "_Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "_Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "_Use additonal memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid ""
-"danish\n"
-"dutch\n"
-"english\n"
-"finnish\n"
-"french\n"
-"german\n"
-"italian\n"
-"norwegian\n"
-"portugese\n"
-"russian\n"
-"spanish\n"
-"swedish"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Otsing määratud teenusest"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-#, fuzzy
-msgid "All Files"
-msgstr "Kõik failid"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-#, fuzzy
-msgid "Folders"
-msgstr "Ava _kataloog"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumendid"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Pildid"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Muusika"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videod"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1224
-msgid "Text"
-msgstr "Tekst"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Arendus"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Ava"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Ava _kataloog"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Tõsta _prügikasti"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occured :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:656
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:687
-msgid "Your search returned no results."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:702
-#, fuzzy
-msgid "Tracker Search Tool-"
-msgstr "Tracker otsinguvahend"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:863
-#: ../src/tracker-search-tool/tracker-search-tool.c:2199
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker otsinguvahend"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1053
-#, fuzzy
-msgid "Search _results: "
-msgstr "Otsingu _tulemused:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1059
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1113
-#: ../src/tracker-search-tool/tracker-search-tool.c:1274
-msgid "List View"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1185
-msgid "Icon"
-msgstr "Ikoon"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1197
-msgid "Name"
-msgstr "Nimi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1292
-msgid "_Categories"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1572
-#, c-format
-msgid "%d - %d of %d hits"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1575
-#, c-format
-msgid "%d item"
-msgid_plural "%d hits"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1976
-msgid "_Search:"
-msgstr "_Otsing:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1996
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2043
-msgid "Click to perform a search."
-msgstr "Klõpsa otsingu läbiviimiseks."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Abidokumenti pole võimalik avada."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Kas sa soovid avada %d dokumendi?"
-msgstr[1] "Kas sa soovid avada %d dokumenti?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:676
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Dokumenti \"%s\" pole võimalik avada."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Kataloogi \"%s\" pole võimalik avada."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Nautiluse failihaldur ei tööta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:615
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:630
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:950
-msgid "The document does not exist."
-msgstr "Dokumenti pole olemas"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:646
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:671
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:775
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:806
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Kas soovid \"%s\" jäädavalt kustutada?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:809
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Prügikasti pole saadaval. \"%s\" prügikasti tõstmine pole võimalik."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:848
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:972
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Tõrge \"%s\" ümbertõstmisel: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1006
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Tõrge \"%s\" kustutamisel: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1292
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1468
-msgid "Save Search Results As..."
-msgstr "Salvesta otsingutulemused kui"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1503
-msgid "Could not save document."
-msgstr "Dokumenti pole võimalik salvestada"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1504
-msgid "You did not select a document name."
-msgstr "Sa pole dokumendile nime valinud."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1534
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1568
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokument \"%s\" on juba olemas. Soovid sa seda üle kirjutada?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1572
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Kui sa olemasoleva faili asendad, siis kirjutatakse selle sisu üle."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1587
-msgid "_Replace"
-msgstr "_Kirjuta üle"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1637
-msgid "The document name you selected is a folder."
-msgstr "Sinu valitud dokument on tegelikult kataloog."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1686
-msgid "You may not have write permissions to the document."
-msgstr "Võib-olla pole sul dokumendile kirjutamisõigust."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf'i viga:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "täna kell %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "eile kell %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %-d. %B %Y kell %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "viit (katki)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr ""
-
-#~ msgid "Plain text"
-#~ msgstr "Lihttekst"
-
-#~ msgid "No files found"
-#~ msgstr "Faile ei leitud"
-
-#~ msgid "_Previous"
-#~ msgstr "_Eelmine"
-
-#~ msgid "_Next"
-#~ msgstr "_Järgmine"
-
-#~ msgid "Invalid service type: %s\n"
-#~ msgstr "Vigane teenuseliik: %s\n"
-
-#~ msgid "value"
-#~ msgstr "väärtus"
diff --git a/po/fi.po b/po/fi.po
deleted file mode 100644
index 704f3fc91..000000000
--- a/po/fi.po
+++ /dev/null
@@ -1,1600 +0,0 @@
-# Finnish messages for tracker.
-# Copyright (C) 2006-2008 Free Software Foundation, Inc.
-# Copyright (C) 2007-2008 Timo Jyrinki.
-#
-# Gnomen suomennosryhmä: http://www.gnome.fi/
-#
-# Ilkka Tuohela <hile@iki.fi>, 2006-2008.
-# Timo Jyrinki <timo.jyrinki@iki.fi>, 2007-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-22 13:32+0300\n"
-"PO-Revision-Date: 2008-09-22 13:33+0300\n"
-"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
-"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Käynnistä %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Näytä %s-keskustelu\n"
-"%s %s\n"
-"lähteestä %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Sähköposti lähettäjältä %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Kuuntele musiikkia %s\n"
-"ohjelmassa %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Näytä asiakirja %s\n"
-"ohjelmassa %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Avaa tiedosto %s\n"
-"ohjelmassa %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Näytä kuva %s\n"
-"ohjelmassa %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Näytä video %s\n"
-"ohjelmassa %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Avaa kansio %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "kanssa"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "kanavassa"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Hae kaikista asiakirjoista <b>kirjoitettaessa</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Kehitystiedostot"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musiikki"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Kuvat"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videot"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Etsi kohdetta %s Tracker-hakutyökalulla"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Etsi kaikista asiakirjoista Tracker-hakutyökalulla"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker-haku"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Etsi Tracker-hakutyökalulla"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Tracker live-haku"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Etsi Trackerilla samalla kun kirjoitat"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Polku : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Muokattu : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Koko : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Käytetty : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Lähettäjä : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Päiväys : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Kommentti : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Luokat : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Kesto : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Tyyli : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Laatu : <b>%s Kbit/s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Vuosi : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Koodekki : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " otettu laitteella <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Mitat : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Päiväys : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Suunta : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Salama : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Polttoväli : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Valotusaika : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Tekijä : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Laatu : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Koodausmuoto : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Kuvanopeus : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Aihe : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Sivujen määrä : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Sanojen määrä : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Luotu : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Kommentit : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Tuntematon"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Syötä lisättävät merkinnät, eroteltuina pilkuilla"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Merkinnät :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Etsi merkinnällä"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Poista merkintä"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Rajaa näytettyjen tulosten lukumäärä arvoon N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Etsi annettua palvelua"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "PALVELU"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Näytä yksityiskohtaiset tiedot myös palveluille ja MIME-tyypeille"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERMI... - etsi tiedostoista tiettyjä termejä"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Useampia sanoja annettaessa näyttää kaikki kohteet, jotka sisältävät kaikki "
-"annetut sanat (sana1 JA sana2 - looginen konjuktio)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Seuraavat palvelut on määritelty:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Komennolla \"%s --help\" saat lisää ohjeita."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: puuttuvat hakuehdot"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: ei yhteyttä tracker-palvelimeen"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Varmista, että \"trackerd\" on käynnissä ennen komennon suorittamista."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Palvelua ei tunnistettu, etsitään muista tiedostoista...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: sisäinen trackerin virhe: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Hakuehtoja vastaavia tuloksia ei löytynyt"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - näytä kunkin palvelun indeksoimien tiedostojen lukumäärä"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "noudetaan indeksitilastoja"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Lisää annettu merkintä tiedostoon"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "MERKINTÄ"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Poistaa annetun merkinnän tiedostosta"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Poistaa kaikki merkinnät tiedostosta"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Näyttää kaikki määritellyt merkinnät"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Etsi tiedostoja, joissa on annettu merkintä"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "TIEDOSTO..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "TIEDOSTO... - muokkaa tiedostojen merkintöjä"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Voit lisätä, poistaa tai hakea useita merkintöjä samanaikaisesti "
-"yhdistämällä valitsimia seuraavasti:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: virheellisiä argumentteja"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: tiedostoa %s ei löydy"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Indeksoitaessa ohitettava kansio"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/POLKU/KANSIO"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Indeksoitavaksi liitettävä kansio"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Käynnistettäessä indeksointia varten läpikäytävä kansio"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Poista kaikki indeksointi ja tarkkailu käytöstä"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Arvo joka määrittelee lokiin kirjoitettavan tiedon määrän. Hyväksyttäviä "
-"arvoja ovat 0 (näyttää/kirjoittaa lokiin vain virheet), 1 (minimaalinen), 2 "
-"(yksityiskohtainen), ja 3 (virheenjäljitys)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "ARVO"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Arvo jota käytetään indeksoinnin nopeuden säätelyyn. Arvon tulee olla "
-"välillä 0-99 (oletus 0), pienempien arvojen lisätessä indeksointinopeutta"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimoi käytettävän muistin määrän, mutta voi hidastaa indeksointia"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Odotusaika aluksi ennen indeksointia, sekunneissa"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Kieli jota käytetään louhinta- ja hukkasanaluetteloihin (ISO 639-1 "
-"kaksikirjaiminen koodi)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "KIELI"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Pakota kaiken sisällön uudelleenindeksointi"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Tee trackerin virheistä kriittisiä"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- käynnistä tracker-seurantapalvelin"
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "KANSIO"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Sisällyttääksesi tai poissulkeaksesi useita kansioita samanaikaisesti, "
-"yhdistä useita valitsimia kuten:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Hallitse ja seuraa haku- ja indeksointipalvelu Trackerin toimintaa"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Tracker-sovelma"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Jouten"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indeksoidaan"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Yhdistetään"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (käyttäjän pysäyttämänä)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (järjestelmän pysäyttämänä)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (akkukäytön pysäyttämänä)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "kansiot"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "sähköpostilaatikot"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Indeksoidaanko tietokone uudestaan?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"Indeksointi voi kestää pitkään. Haluatko varmasti indeksoida uudestaan?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Tilastot"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Indeksointitilastot</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker on vapaa ohjelma; voit levittää sitä edelleen ja/tai muokata sitä "
-"GNU:n GPL-lisenssin sallimilla tavoilla siten kuin Free Software Foundation "
-"on sen määritellyt; voit halutessasi käyttää lisenssin versiota 2 taikka "
-"mitä tahansa tämän jälkeen ilmestynyttä versiota."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Trackeria levitetään siinä toivossa, että siitä on hyötyä, mutta ILMAN "
-"MITÄÄN TAKUUTA; jopa ilman konkludenttista takuuta MYYNTIKELPOISUUDESTA TAI "
-"SOVELTUMISESTA TIETTYYN ERITYISEEN TARKOITUKSEEN. Yksityiskohtien osalta "
-"katso GNU:n GPL-lisenssiä."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Sinun olisi pitänyt saada kopio GNU:n GPL-lisenssistä tämän ohjelman mukana; "
-"jos et sitä saanut, niin lähetä kirje Free Software Foundation, Inc. :lle, "
-"59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker on työkalu, joka on suunniteltu erottamaan tietoja ja metatietoja "
-"henkilökohtaisista tiedostoistasi, jotta niitä hakea helposti ja nopeasti"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Tekijänoikeudet © 2005-2008 Trackerin tekijät"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Timo Jyrinki, 2007-2008.\n"
-"Ilkka Tuohela, 2006-2008.\n"
-"\n"
-"http://gnome.fi/"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Tracker-WWW-sivusto"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Pysäytä kaikki indeksointi"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Etsi"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Indeksoi uudelleen"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "A_setukset"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "_Indeksoinnin asetukset"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "_Tilastot"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "Tietoj_a"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Poistu"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Tietokone indeksoidaan, jotta tiedostoista ja sähköposteista voidaan tehdä "
-"nopeita hakuja"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Indeksoinnin voi pysäyttää milloin vain, ja indeksointiasetuksia voi muuttaa "
-"napsauttamalla oikealla hiiren painikkeella"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker on nyt indeksoinut järjestelmän"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " %d tuntia ja %d minuuttia"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " %d minuuttia ja %d sekuntia"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " %d sekuntia"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Voit tehdä hakuja napsauttamalla tästä"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Tiedostot:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Kansiot:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Asiakirjat:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Kuvat:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Musiikki:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Videot:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Teksti:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Kehitys:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Muu:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Sovellukset:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Keskustelut:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "Sähköpostit"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animaatio</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Älykäs pysäytys</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Näkyvyys</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animoi _kuvake indeksointaessa"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Sovelman asetukset"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"K_eskeytä automaattisesti, jos indeksointi saattaisi vaikuttaa muiden "
-"käytössä olevien ohjelmien suorituskykyyn"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "Keskeytä indeksointi _automaattisesti tietokoneen ollessa käytössä"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "P_iiilota kuvake (paitsi näytettäessä viestejä käyttäjälle)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "Ei _käytössä"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "Tiedot tulee indeksoida uudelleen"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Jotta muutokset tulisivat voimaan, Trackerin tulee indeksoida tiedostot "
-"uudelleen. Napsauta Indeksoi uudelleen -painiketta aloittaaksesi sen nyt. "
-"Muussa tapauksessa tämä suoritetaan kun Tracker-palvelu käynnistetään "
-"seuraavan kerran uudelleen."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "_Indeksoi uudelleen"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "Tracker-palvelu tulee käynnistää uudelleen"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Jotta muutokset tulisivat voimaan, Tracker-palvelu tulee käynnistää "
-"uudelleen. Napsauta Käynnistä uudelleen -painiketta käynnistääksesi palvelun "
-"uudelleen nyt."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "_Käynnistä uudelleen"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Muuta Tracker-tiedostoindeksoinnin asetuksia"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Haku ja indeksointi"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Läpikäydyt kansiot</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Sivuutetut tiedostonimityypit</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Sivuutetut polut</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Indeksien yhdistäminen</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indeksoinnin rajoitukset (tiedostoa kohden)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indeksoinnin valinnat</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indeksointi</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Virranhallinta</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Resurssien käyttö</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Käynnistys</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Stemmaus</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Nopeuden säätö</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Tarkkaile kansioita</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Ylimääräiset indeksoitavat mbox-postilaatikot:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Ylimääräiset indeksoitavat ja tarkkailtavat polut:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Ylimääräiset käynnistettäessä indeksoitavat polut (mutta joiden muutoksia ei "
-"tarkkailla):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"tanska\n"
-"hollanti\n"
-"englanti\n"
-"suomi\n"
-"ranska\n"
-"saksa\n"
-"unkari\n"
-"italia\n"
-"norja\n"
-"portugali\n"
-"venäjä\n"
-"espanja\n"
-"ruotsi"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Poista kaikki indeksointi käytöstä, kun ollaan akun varassa"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-"Poista ensimmäinen indeksointiläpikäynti käytöstä, kun ollaan akun varassa"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "Sähköposti"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Käytä _Evolutionin sähköpostien indeksointia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Käytä _KMailin sähköpostien indeksointia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Käytä _Modestin sähköpostien indeksointia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Käytä _Thunderbirdin sähköpostien indeksointia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Käytä _tarkkailua"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Käytä _indeksointia"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Nopeammin"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Indeksoitaessa huomiotta jätettävät tiedostonimityypit:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Tiedostot"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Yleiset"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Luo _pienoiskuvat"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Sivuutetut tiedostot"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "Indeksoinnin _viive: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Indeksoi _tiedostojen sisältö"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indeksoi _liitetyt kansiot"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indeksoi ja tarkkaile koti_kansiotani"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Indeksoinnin nopeus:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "Suurin indeksoitav_a tekstin määrä:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Suurin indeksoitava uniikkien _sanojen määrä:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Indeksoitaessa huomiotta jätettävät juuripolut:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Tee nopeita indeksien yhdistämisiä (voi vaikuttaa järjestelmän nopeuteen)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Suorituskyky"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Hitaammin"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Trackerin asetukset"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Kieli:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimoi muistin käyttö (hitaampi indeksointi)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "_Käytä enemmän muistia nopeampaa indeksointia varten"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "sekuntia"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Etsi tietystä palvelusta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Sähköpostit"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Kaikki tiedostot"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Kansiot"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Asiakirjat"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Teksti"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Kehitys"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Keskustelulokit"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Sovellukset"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Selaushistoria"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Avaa"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "A_vaa kansio"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Siirrä _roskakoriin"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Tallenna tulokset nimellä..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Merkistömuunnos epäonnistui kohteelle \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Tapahtui virhe:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Virhe"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Tarkoititko"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Haku ei tuottanut tuloksia."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Tracker-hakutyökalu-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker-hakutyökalu"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "Haku_tulokset: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "hakua ei suoritettu"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Listanäkymä"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Kuvake"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nimi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Luokat"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d yhteensä %d osumasta"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d osuma"
-msgstr[1] "%d osumaa"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "Hakupalveluun ei voitu yhdistää, se voi olla varattu"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Haku:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker indeksoi edelleen, joten kaikki haun tulokset eivät ole vielä "
-"saatavilla"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Syötä monisainen hakuehto välilyönneillä erotettuina sanoina."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "haku_kohta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Suorita haku napsauttamalla."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Ohjetta ei voi avata."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Haluatko varmasti avata %d asiakirjan?"
-msgstr[1] "Haluatko varmasti avata %d asiakirjaa?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Tämä avaa %d ikkunan"
-msgstr[1] "Tämä avaa %d ikkunaa"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Asiakirjaa \"%s\" ei voi avata."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Kansiota \"%s\" ei voi avata."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Nautilus-tiedostonhallinta ei ole käynnissä."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Sovellusta ei voi avata"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Asiakirja ei ole olemassa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Asennettuna ei ole katseluohjelmaa, jolla asiakirja voitaisiin näyttää."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Haluatko varmasti avata %d kansion?"
-msgstr[1] "Haluatko varmasti avata %d kansiota?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Kohdetta \"%s\" ei voi siirtää roskakoriin."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Haluatko poistaa kohteen \"%s\" pysyvästi?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"Roskakori ei ole käytettävissä. Kohdetta \"%s\" ei voi siirtää roskakoriin."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Kohdetta \"%s\" ei voi poistaa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Kohteen \"%s\" siirtäminen epäonnistui: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Kohteen \"%s\" poistaminen epäonnistui: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Aktivoi näyttääksesi tämän sähköpostin"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "_Tallenna hakutulokset nimellä..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Asiakirjaa ei voi tallentaa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Asiakirjan nimeä ei valittu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Ei voitu tallentaa asiakirjaa \"%s\" kohteeseen \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Asiakirja \"%s\" on jo olemassa. Haluatko korvata sen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Jos olemassa oleva tiedosto korvataan, sen sisältö ylikirjoitetaan."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Korvaa"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "Valittu asiakirjan nimi on kansio."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Asiakirjaan ei ehkä ole kirjoitusoikeuksia."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Paikanna asiakirjoja ja kansioita tällä tietokoneella nimen tai sisällön "
-"perusteella käyttämällä Trackeria"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf-virhe:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "tänään %-H.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "eilen %-H.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %-d. %Bta, %-H.%M.%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "linkki (rikki)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "linkki kohteeseen %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Haku- ja indeksointipalvelu"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-close"
-
-#~ msgid "S_mart Pause"
-#~ msgstr "Ä_lykäs pysäytys"
-
-#~ msgid "Auto _hide"
-#~ msgstr "_Piilota automaattisesti"
-
-#~ msgid "_Search..."
-#~ msgstr "_Haku..."
-
-#~ msgid "Search:"
-#~ msgstr "Haku:"
-
-#~ msgid "Status:"
-#~ msgstr "Tila:"
-
-#~ msgid "Progress:"
-#~ msgstr "Edistyminen:"
-
-#~ msgid "Paused while on battery power"
-#~ msgstr "Pysäytetty akkukäytön vuoksi"
-
-#~ msgid "Paused temporarily"
-#~ msgstr "Pysäytetty väliaikaisesti"
-
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "Tracker yhdistää nyt indeksejä, mikä voi hidastaa tietokoneen toimintaa "
-#~ "usean minuutin ajaksi\n"
-#~ "\n"
-#~ "Voit pysäyttää tämän napsauttamalla täällä hiiren oikealla painikeella"
-
-#~ msgid "Indexes are being merged"
-#~ msgstr "Indeksejä yhdistetään"
-
-#~ msgid "Indexing completed"
-#~ msgstr "Indeksointi valmis"
-
-#~ msgid "Indexing in progress"
-#~ msgstr "Indeksointi käynnissä"
-
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Postilaatikot</b>"
-
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Palvelut</b>"
-
-#~ msgid "_Emails"
-#~ msgstr "_Sähköpostit"
-
-#~ msgid "Plain text"
-#~ msgstr "Tekstitiedosto"
-
-#~ msgid "No files found"
-#~ msgstr "Tiedostoja ei löytynyt"
-
-#~ msgid "_Previous"
-#~ msgstr "E_dellinen"
-
-#~ msgid "_Next"
-#~ msgstr "_Seuraava"
-
-#~ msgid "Invalid service type: %s\n"
-#~ msgstr "Virheellinen palvelutyyppi: %s\n"
-
-#~ msgid "Enables more verbose debug messages"
-#~ msgstr "Ottaa käyttöön suulaammat vianetsintäviestit"
-
-#~ msgid "Faster indexing, use more memory and CPU"
-#~ msgstr "Nopeampi indeksointi, käyttää enemmän muistia ja prosessoria"
-
-#~ msgid "Slower indexing, use less memory and CPU"
-#~ msgstr "Hitaampi indeksointi, käyttää vähemmän muistia ja prosessoria"
-
-#~ msgid "Desktop Search"
-#~ msgstr "Työpöytähaku"
-
-#~ msgid "(stopped)"
-#~ msgstr "(pysäytetty)"
-
-#~ msgid "No Files Found"
-#~ msgstr "Tiedostoja ei löytynyt"
-
-#~ msgid "%d File Found"
-#~ msgid_plural "%d Files Found"
-#~ msgstr[0] "löytyi %d tiedosto"
-#~ msgstr[1] "löytyi %d tiedostoa"
-
-#~ msgid "%d file found"
-#~ msgid_plural "%d files found"
-#~ msgstr[0] "löytyi %d tiedosto"
-#~ msgstr[1] "löytyi %d tiedosto"
diff --git a/po/fr.po b/po/fr.po
deleted file mode 100644
index 73717b29f..000000000
--- a/po/fr.po
+++ /dev/null
@@ -1,1506 +0,0 @@
-# French translation of Tracker
-# Copyright (C) 2006-2008, Free Software Foundation, Inc
-# This file is distributed under the same license as the tracker package.
-#
-# Laurent Aguerreche <laurent.aguerreche@free.fr>, 2006.
-# Claude Paroz <claude@2xlibre.net>, 2007-2008.
-# Robert-André Mauchin <zebob.m@pengzone.org>, 2007.
-# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2008.
-# Bruno Brouard <annoa.b@gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-29 13:33+0200\n"
-"PO-Revision-Date: 2008-04-08 23:13+0200\n"
-"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
-"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n>1;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Lancer %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Voir la conversation %s\n"
-"%s %s\n"
-"de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Courriel de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Écouter la musique %s\n"
-"dans %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Consulter le document %s\n"
-"dans %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Ouvrir le fichier %s\n"
-"dans %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Afficher l'image %s\n"
-"dans %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Regarder la vidéo %s\n"
-"dans %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Ouvrir le dossier %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "avec"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "dans le canal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Recherche tous vos documents, <b>durant la saisie</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Développement"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musique"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Images"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Vidéos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Chercher %s avec l'outil de recherche Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Chercher dans tous les documents avec l'outil de recherche Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Recherche Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Chercher avec l'outil de recherche Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Recherche dynamique Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Recherche avec Tracker, durant la saisie"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Chemin : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modifié le : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Taille : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Accédé le : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Expéditeur : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Date : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Commentaires : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Catégories : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Durée : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Genre : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Débit : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Année : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " prise avec un <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensions : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Prise le : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientation : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Focale : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Temps d'exposition : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Auteur : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Débit : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codée en : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Fréquence d'images : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Sujet : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Nombre de pages : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Nombre de mots : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Créé le : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Commentaires : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f Kio"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f Mio"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f Gio"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Saisissez ici les étiquettes de votre choix, séparées par des virgules"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Étiquettes :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Rechercher des étiquettes"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Supprimer l'étiquette"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limite le nombre de résultats affichés à N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Recherche un service spécifique"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Affiche des résultats plus détaillés, dont le service et le type MIME"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERME... - recherche des fichiers contenant certains termes"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"L'indication de plusieurs termes n'affichera que les éléments contenant TOUS "
-"les termes indiqués (terme1 ET terme2, conjonction logique)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "La liste des services reconnus est :"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Essayez « %s --help » pour plus d'informations."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s : termes à rechercher manquants"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s : aucune connexion au démon Tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Assurez-vous que « trackerd » est lancé avant de saisir cette commande."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Service non reconnu, recherche comme « autre » fichier...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s : erreur interne de Tracker : %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Aucun résultat ne correspond à votre requête"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - affiche le nombre de fichiers indexés pour chaque service"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "récupération des statistiques d'indexation"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Ajoute l'étiquette indiquée à un fichier"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ÉTIQUETTE"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Enlève l'étiquette indiquée d'un fichier"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Enlève toutes les étiquettes d'un fichier"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Liste toutes les étiquettes définies"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Recherche des fichiers avec l'étiquette indiquée"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FICHIER..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FICHIER... - manipule les étiquettes des fichiers"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Pour ajouter, supprimer ou rechercher plusieurs étiquettes simultanément, "
-"combinez plusieurs options comme ceci :"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s : paramètres non valides"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s : fichier %s non trouvé"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Répertoire à exclure de l'indexation"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/CHEMIN/RÉPERTOIRE"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Répertoire à inclure dans l'indexation"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Répertoire à indexer uniquement au démarrage"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Désactive toute indexation ou surveillance"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Valeur contrôlant le niveau de journalisation. Les valeurs possibles sont 0 "
-"(seulement les erreurs), 1 (minimum), 2 (détaillé) et 3 (débogage)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VALEUR"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Valeur utilisée pour contrôler l'indexation. La valeur est comprise dans "
-"l'intervalle 0-99 (0 par défaut), les valeurs basses augmentant la rapidité "
-"d'indexation"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Réduit l'utilisation de la mémoire, mais peut ralentir l'indexation"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Temps de veille initial (en secondes) avant de commencer l'indexation"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Langue à utiliser pour la liste des mots non significatifs et des radicaux "
-"(code de deux caractères ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "LANGUE"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Force une réindexation de tout le contenu"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Rendre fatales les erreurs de tracker"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- démarre le démon tracker"
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "RÉPERTOIRE"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Pour inclure ou exclure plusieurs répertoires simultanément, combinez "
-"plusieurs options comme ceci :"
-
-# Utilisation de l'infinitif dans les infobulles du Bureau
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-"Contrôler et surveiller le service de recherche et d'indexation Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Applet Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Inactif"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indexation"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Fusion"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (suspendu par l'utilisateur)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (suspendu par le système)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (suspendu par la batterie)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "dossiers"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "boîtes aux lettres"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Voulez-vous réindexer votre système ?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"L'indexation est une opération longue. Êtes-vous sûr de vouloir la réaliser ?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Statistiques"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Statistiques d'indexation</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker est un logiciel libre ; vous pouvez le redistribuer et/ou le "
-"modifier selon les termes de la Licence Publique Générale GNU, telle que "
-"publiée par la Free Software Foundation ; version 2 de la licence, ou (à "
-"votre discrétion) toute version ultérieure."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE "
-"GARANTIE ; sans même la garantie implicite de VALEUR MARCHANDE ou "
-"D'ADÉQUATION À UN BESOIN PARTICULIER. Pour plus de détails, voir la Licence "
-"Publique Générale GNU."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Un exemplaire de la Licence Publique Générale GNU doit être fourni avec "
-"Tracker ; si ce n'est pas le cas, écrivez à la Free Software Foundation, "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker est un outil conçu pour extraire des informations et des métadonnées "
-"de vos données personnelles, vous pouvez ainsi les rechercher facilement et "
-"rapidement"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Les auteurs de Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Laurent Aguerreche <laurent.aguerreche@free.fr>, 2006.\n"
-"Claude Paroz <claude@2xlibre.net>, 2007.\n"
-"Robert-André Mauchin <zebob.m@pengzone.org>, 2007-2008.\n"
-"Stéphane Raimbault <stephane.raimbault@gmail.com>, 2008."
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Site Web de Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "Sus_pendre toutes les indexations"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "R_echerche"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Réindexer"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Préférences"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Préférences de l'_indexation"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "_Statistiques"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "À _propos"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Quitter"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Votre ordinateur est sur le point de procéder à l'indexation de son contenu "
-"afin que vous puissiez rechercher rapidement des fichiers et des courriels"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Vous pouvez suspendre l'indexation à tout moment et configurer les "
-"paramètres d'indexation en cliquant ici avec le bouton droit"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker a terminé d'indexer le contenu de votre système"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " en %d heures et %d minutes"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " en %d minutes et %d secondes"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " en %d secondes"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Vous pouvez maintenant effectuer des recherches en cliquant ici"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Fichiers :"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Dossiers :"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Documents :"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Images :"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Musique :"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Vidéos :"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Texte :"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Développement :"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Autre :"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Applications :"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Conversations :"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "Courriels :"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animation</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Suspension intelligente</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Visibilité</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animer l'_icône lors de l'indexation"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Préférences de l'applet"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"_Suspendre automatiquement l'indexation si cela affecte les performances "
-"d'autres applications actives"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-"Suspendre _automatiquement l'indexation lorsque l'ordinateur est utilisé "
-"de manière active"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Masquer l'icône (sauf si des messages doivent être affichés)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Désactivée"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "Les données doivent être réindexées"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Afin que vos modifications prennent effet, Tracker doit réindexer vos "
-"fichiers. Cliquez sur le bouton Réindexer pour réindexer maintenant ; dans "
-"le cas contraire, cette action sera effectuée au prochain redémarrage du "
-"démon Tracker."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "_Réindexer"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "Le démon Tracker doit être redémarré"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Afin que vos modifications prennent effet, le démon Tracker doit être "
-"redémarré. Cliquez sur le bouton Redémarrer pour redémarrer le démon "
-"maintenant."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "_Redémarrer"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configurer l'indexation des fichiers avec Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Recherche et indexation"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Répertoires indexés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Motifs de fichiers ignorés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Chemins ignorés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Fusion d'index</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Limites d'indexation (par fichier)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Options d'indexation</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexation</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Gestion de l'énergie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Utilisation des ressources</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Démarrage</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Indexation par radicaux</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Limitation</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Répertoires surveillés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Boîtes aux lettres mbox supplémentaires à indexer :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Chemins supplémentaires à indexer et surveiller :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Chemins supplémentaires à indexer au démarrage (mais sans surveillance "
-"ensuite) :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"danois\n"
-"néerlandais\n"
-"anglais\n"
-"finlandais\n"
-"français\n"
-"allemand\n"
-"hongrois\n"
-"italien\n"
-"norvégien\n"
-"portugais\n"
-"russe\n"
-"espagnol\n"
-"suédois"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Désactiver toute indexation si fonctionnement sur batterie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "Désactiver la construction initiale des index si fonctionnement sur batterie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "Courriels"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Activer l'indexation du courriel _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Activer l'indexation du courriel _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Activer l'indexation du courriel _Modest"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Activer l'indexation du courriel _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Activer la surv_eillance"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Activer l'_indexation"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Plus rapide"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Motifs de fichiers à ignorer pendant l'indexation :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Fichiers"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Général"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Générer des _vignettes"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Fichiers ignorés"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "_Délai avant indexation :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Indexer le contenu des _fichiers"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indexer les dossiers _montés"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indexer et surveiller mon _dossier personnel"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Vitesse d'indexation :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "Qu_antité maximale de texte à indexer :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Nombre maximum de m_ots uniques à indexer :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Chemins racines à ignorer durant l'indexation :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Effectuer des fusions d'index rapides (peut ralentir les performances "
-"générales)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Performances"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Plus lent"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Préférences de Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Langue :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "Réduit l'utilisation de _mémoire mais ralentit l'indexation"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "_Utilise de la mémoire additionnelle pour une indexation plus rapide"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kio"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "Secondes"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Recherche à partir d'un service spécifique"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Courriels"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Tous les fichiers"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Dossiers"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documents"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Texte"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Développement"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Journaux de conversations"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Applications"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Historique Web"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Ouvrir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "O_uvrir le dossier"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Mettre à la corbeille"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Enregistrer les résultats sous..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "La conversion du jeu de caractères pour « %s » a échoué"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "L'erreur suivante est survenue :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Erreur"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Pensiez-vous à"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Votre recherche n'a donné aucun résultat."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Outil de recherche Tracker - "
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Outil de recherche Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Résultats de la recherche : "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "aucune recherche effectuée"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Vue en liste"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Icône"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nom"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Catégories"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d sur %d éléments"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d élément"
-msgstr[1] "%d éléments"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"Impossible de se connecter au service de recherche, il est peut-être occupé"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "R_echerche :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker est toujours en cours d'indexation, il se peut donc que certains "
-"résultats de recherche ne soient pas encore disponibles."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-"Saisissez plusieurs termes à rechercher en les séparant par des espaces."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "zone_de_recherche"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Cliquez pour effectuer une recherche."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Impossible d'ouvrir l'aide."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Êtes-vous certain de vouloir ouvrir %d document ?"
-msgstr[1] "Êtes-vous certain de vouloir ouvrir %d documents ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Cela ouvrira %d fenêtre séparée."
-msgstr[1] "Cela ouvrira %d fenêtres séparées."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Impossible d'ouvrir le document « %s »."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Impossible d'ouvrir le dossier « %s »."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Le gestionnaire de fichiers Nautilus n'est pas lancé."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "L'application n'a pas pu être lancée"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Le document n'existe pas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Aucun programme installé n'est capable d'afficher le document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Êtes-vous certain de vouloir ouvrir %d dossier ?"
-msgstr[1] "Êtes-vous certain de vouloir ouvrir %d dossiers ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Impossible de mettre « %s » à la corbeille."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Voulez-vous supprimer définitivement « %s » ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"La corbeille est inaccessible. Impossible de mettre « %s » à la corbeille."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Impossible de supprimer « %s »."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Le déplacement de « %s » a échoué : %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "La suppression de « %s » a échoué : %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Cliquez pour voir ce courriel"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Enregistrer les résultats de recherche sous..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Impossible d'enregistrer le document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Vous n'avez pas indiqué de nom pour le document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Impossible d'enregistrer le document « %s » dans « %s »."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Le document « %s » existe déjà. Souhaitez-vous le remplacer ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Si vous remplacez un document existant, son contenu sera écrasé."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Remplacer"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "Le nom de document que vous avez choisi est un dossier."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Il se peut que vous n'ayez pas les droits d'écriture sur le document."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Rechercher des documents/dossiers sur cet ordinateur selon leur nom ou "
-"contenu"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Erreur GConf :\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "aujourd'hui à %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "hier à %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A %-d %B %Y à %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "lien (brisé)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "lien vers %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Service de recherche et d'indexation Tracker"
diff --git a/po/gl.po b/po/gl.po
deleted file mode 100644
index 576367af2..000000000
--- a/po/gl.po
+++ /dev/null
@@ -1,997 +0,0 @@
-# translation of gl.po to Galego
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Ignacio Casal Quinteiro <icq@cvs.gnome.org>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gl\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 04:02+0200\n"
-"PO-Revision-Date: 2007-03-28 13:29+0200\n"
-"Last-Translator: Ignacio Casal Quinteiro <icq@cvs.gnome.org>\n"
-"Language-Team: Galego <trasno@ceu.fi.udc.es>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Ruta : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modificado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Tamaño : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, fuzzy, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Xénero : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, fuzzy, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Ruta : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, fuzzy, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comentarios : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, fuzzy, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Creado : <b> %s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Duración : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Xénero : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Tasa de bits : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Ano : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Códec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensións : <b> %d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientación : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Tasa de bits : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codificado en : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Asunto : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Contaxe de palabras : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Creado : <b> %s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comentarios : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr "Descoñecido"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:251
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:361
-msgid "Tags :"
-msgstr "Etiquetas :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:383
-msgid "_Search For Tag"
-msgstr "_Procurar por etiqueta"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:395
-msgid "_Remove Tag"
-msgstr "_Eliminar etiqueta"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limitar o número de resultados amosados a N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Procurar un servizo específico"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVIZO"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Amosar resultados máis detallados co tipo de servizo e tipo mime"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERMO... - procurar nos ficheiros un termo específico"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Se especifica máis dun termo, amosaranse os elementos que conteñen TODOS os "
-"termos especificados (termo1 E termo2 - conxunción lóxica)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "A lista de servizos recoñecidos é:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Tente \"%s --help\" para mís información."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: faltan os termos de busca"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: non hai conexión ao demonio de tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Asegúrese de que \"trackerd\" esté funcionando antes de lanzar este comando."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Servizo non recoñecido, procurando Noutros ficheiros...\n"
-
-#: ../src/libtracker/tracker-search.c:164 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: erro interno de tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Non se atoparon resultados coincidintes coa súa consulta"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr ""
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Engadir etiqueta especificada a un ficheiro"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ETIQUETA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Eliminar etiqueta especificada dun ficheiro"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Eliminar tódalas etiquetas dun ficheiro"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Listar tódalas etiquetas definidas"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Procurar ficheiros coa etiqueta especificada"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FICHEIRO..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FICHEIRO... - manipular etiquetas nos ficheiros"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para engadir, eliminar, ou procurar etiquetas múltiples ao mesmo tempo, unir "
-"múltiples opcións como:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: argumentos inválidos"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: non atopado o ficheiro %s"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Directory to exclude from indexing"
-msgstr "Directorio a excluír do indexado"
-
-#: ../src/trackerd/trackerd.c:158 ../src/trackerd/trackerd.c:159
-#: ../src/trackerd/trackerd.c:160
-msgid "/PATH/DIR"
-msgstr "/RUTA/DIR"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Directory to include in indexing"
-msgstr "Directorio a incluír no indexado"
-
-#: ../src/trackerd/trackerd.c:160
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Directorio a excluír do indexado"
-
-#: ../src/trackerd/trackerd.c:161
-msgid "Disable any indexing or watching taking place"
-msgstr "Desactivar calquer indexado ou vista que se esté realizando"
-
-#: ../src/trackerd/trackerd.c:162
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:162 ../src/trackerd/trackerd.c:163
-msgid "VALUE"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:163
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-20 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:164
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:165
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Lingua a usar para stemmer e lista de palabras detida (código de caracteres "
-"ISO 639-1 2"
-
-#: ../src/trackerd/trackerd.c:166
-msgid "LANG"
-msgstr "LANG"
-
-#: ../src/trackerd/trackerd.c:167
-msgid "Force a re-index of all content"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2047
-msgid "- start the tracker daemon"
-msgstr "- iniciar o demonio tracker"
-
-#: ../src/trackerd/trackerd.c:2048 ../src/trackerd/trackerd.c:2049
-msgid "DIRECTORY"
-msgstr "DIRECTORIO"
-
-#: ../src/trackerd/trackerd.c:2056
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para incluír ou excluír directorios múltiples ao mesmo tempo, unir varias "
-"opcións como:"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Indexing Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-#, fuzzy
-msgid "<b>Indexing</b>"
-msgstr "I_ndexando"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Mailboxes</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Services</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid "Enable Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:18
-msgid "Enable KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:19
-msgid "Enable Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:20
-msgid "Enable _Indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:21
-msgid "Enable _Watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:22
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:23
-msgid "File patterns to ignore during indexing:"
-msgstr "Patrón de ficheiros a ignorar durante a indexación:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:24
-msgid "Generate _thumbnails"
-msgstr "Xerar _miniaturas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:25
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:26
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:27
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:28
-msgid "Maximum _amount of text to Index (KB)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Maximum number of unique _words to index"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "P_erformance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Seconds"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Tracker Preferences"
-msgstr "Preferencias de Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-#, fuzzy
-msgid "_Emails"
-msgstr "Correos-e"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-#, fuzzy
-msgid "_Files"
-msgstr "Todos os ficheiros"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "_General"
-msgstr "_Xeral"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "_Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-#, fuzzy
-msgid "_Indexing speed:"
-msgstr "I_ndexando"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "_Use additonal memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid ""
-"danish\n"
-"dutch\n"
-"english\n"
-"finnish\n"
-"french\n"
-"german\n"
-"italian\n"
-"norwegian\n"
-"portugese\n"
-"russian\n"
-"spanish\n"
-"swedish"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Procurar nun servizo específico"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Correos-e"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Todos os ficheiros"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Cartafoles"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documentos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Imaxes"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Música"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Vídeos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1224
-msgid "Text"
-msgstr "Texto"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Desenvolvemento"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Abrir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "A_brir cartafol"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Mo_ver ao lixo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Gardar resultados como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Fallou a conversión do conxunto de caracteres para \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occured :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:656
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:687
-msgid "Your search returned no results."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:702
-msgid "Tracker Search Tool-"
-msgstr "Ferramenta de busca Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:863
-#: ../src/tracker-search-tool/tracker-search-tool.c:2199
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Ferramenta de busca Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1053
-#, fuzzy
-msgid "Search _results: "
-msgstr "Resultados da busca:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1059
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1113
-#: ../src/tracker-search-tool/tracker-search-tool.c:1274
-msgid "List View"
-msgstr "Ver como lista"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1185
-msgid "Icon"
-msgstr "Icona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1197
-msgid "Name"
-msgstr "Nome"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1292
-msgid "_Categories"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1572
-#, fuzzy, c-format
-msgid "%d - %d of %d hits"
-msgstr "Resultados %d - %d de %d"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1575
-#, c-format
-msgid "%d item"
-msgid_plural "%d hits"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1976
-msgid "_Search:"
-msgstr "_Procurar:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1996
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Introduza un termo de busca con varias palabras separadas por espazos."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "search_entry"
-msgstr "estrada_busca"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2043
-msgid "Click to perform a search."
-msgstr "Prema para realizar unha busca."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Non se puido abrir o documento de axuda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Está seguro de que quere abrir %d documento?"
-msgstr[1] "Está seguro de que quere abrir %d documentos?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:676
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Non se puido abrir o documento \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Non se puido abrir o cartafol \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "O xestor de ficheiros Nautilus non se está a executar."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:615
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:630
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:950
-msgid "The document does not exist."
-msgstr "O documento non existe."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:646
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:671
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Está seguro de que quere abrir %d cartafol?"
-msgstr[1] "Está seguro de que quere abrir %d cartafoles?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:775
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Non se puido mover \"%s\" ao lixo."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:806
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Quere borrar \"%s\" permanentemente?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:809
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"O colector de lixo non está dispoñible. Non se puido mover \"%s\" ao lixo."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:848
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Non se puido borrar \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:972
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Movendo \"%s\" fallou: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1006
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Borrando \"%s\" fallou: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1292
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1468
-msgid "Save Search Results As..."
-msgstr "Gardar resultados de busca como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1503
-msgid "Could not save document."
-msgstr "Non se puido gardar o documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1504
-msgid "You did not select a document name."
-msgstr "Non seleccionou un nome de documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1534
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Non se puido gardar o documento \"%s\" a \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1568
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "O documento \"%s\" xa existe. Quere reemprazalo?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1572
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1587
-msgid "_Replace"
-msgstr "_Reemprazar"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1637
-msgid "The document name you selected is a folder."
-msgstr "O nome de documento que escolleu é un cartafol."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1686
-msgid "You may not have write permissions to the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Erro de GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "ligazón (rota)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "ligar a %s"
-
-#~ msgid "Normal Mode"
-#~ msgstr "Modo normal"
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Modo de memoria reducida"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "Iniciar o servizo de _indexado automaticamente"
-
-#~ msgid "Start _mointoring service automatically"
-#~ msgstr "Iniciar o servizo de _monitoreo automaticamente"
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Modo turbo"
-
-#~ msgid "gtk-add"
-#~ msgstr "gtk-add"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-close"
-
-#~ msgid "gtk-help"
-#~ msgstr "gtk-help"
-
-#~ msgid "gtk-remove"
-#~ msgstr "gtk-remove"
-
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%d resultado"
-#~ msgstr[1] "%d resultados"
diff --git a/po/he.po b/po/he.po
deleted file mode 100644
index 07b758b27..000000000
--- a/po/he.po
+++ /dev/null
@@ -1,1438 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Yair Hershkovitz, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-08 11:09+0100\n"
-"PO-Revision-Date: 2008-04-08 11:09+0100\n"
-"Last-Translator: Yair Hershkovitz <yairhr@gmail.com>\n"
-"Language-Team: he\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr ""
-"דו×\"ל מ-%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "קבצי פיתוח"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "מוזיקה"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "תמונות"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr ""
-"חפש %s בעזרת כלי החיפוש Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "נתיב : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "שולח : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "ת×ריך : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "הערה : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "קטגוריות : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "משך : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "שנה : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "מקודד : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "יוצר : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "× ×•×©× : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "הערות : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "‎%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "‎%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "‎%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "×œ× ×™×“×•×¢"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr ""
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr ""
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limit the number of results showed to N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Search for a specific service"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Show more detailed results with service and mime type as well"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - search files for certain terms"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "The list of recognized services is:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Try \"%s --help\" for more information."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: missing search terms"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: no connection to tracker daemon"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Ensure \"trackerd\" is running before launch this command."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Service not recognized, searching in Other Files...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: internal tracker error: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "No results found matching your query"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - show number of indexed files for each service"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "fetching index stats"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Add specified tag to a file"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "TAG"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Remove specified tag from a file"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Remove all tags from a file"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "List all defined tags"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Search for files with specified tag"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FILE..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FILE... - manipulate tags on files"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: invalid arguments"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: file %s not found"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Directory to exclude from indexing"
-msgstr "Directory to exclude from indexing"
-
-#: ../src/trackerd/trackerd.c:129 ../src/trackerd/trackerd.c:130
-#: ../src/trackerd/trackerd.c:131
-msgid "/PATH/DIR"
-msgstr "/PATH/DIR"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Directory to include in indexing"
-msgstr "Directory to include in indexing"
-
-#: ../src/trackerd/trackerd.c:131
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Directory to crawl for indexing at start up only"
-
-#: ../src/trackerd/trackerd.c:132
-msgid "Disable any indexing or watching taking place"
-msgstr "Disable any indexing or watching taking place"
-
-#: ../src/trackerd/trackerd.c:133
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-
-#: ../src/trackerd/trackerd.c:133 ../src/trackerd/trackerd.c:134
-msgid "VALUE"
-msgstr "VALUE"
-
-#: ../src/trackerd/trackerd.c:134
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-
-#: ../src/trackerd/trackerd.c:135
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimizes the use of memory but may slow indexing down"
-
-#: ../src/trackerd/trackerd.c:136
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Initial sleep time, just before indexing, in seconds"
-
-#: ../src/trackerd/trackerd.c:137
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-
-#: ../src/trackerd/trackerd.c:137
-msgid "LANG"
-msgstr "LANG"
-
-#: ../src/trackerd/trackerd.c:138
-msgid "Force a re-index of all content"
-msgstr "Force a re-index of all content"
-
-#: ../src/trackerd/trackerd.c:139
-msgid "Make tracker errors fatal"
-msgstr "Make tracker errors fatal"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:795
-msgid "- start the tracker daemon"
-msgstr "- start the tracker daemon"
-
-#: ../src/trackerd/trackerd.c:796 ../src/trackerd/trackerd.c:797
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../src/trackerd/trackerd.c:804
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "יישומון Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr ""
-"â€Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 The Tracker authors"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "×תר ×”×ינטרנט של Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_העדפות"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_×ודות"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_יצי××”"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-"â€Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "קבצי×:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " תיקיות:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " מסמכי×:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " מוזיקה:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " טקסט:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " פיתוח:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " ×חר:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "יישומי×:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>×נימציה</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "העדפות יישומון"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "Data must be reindexed"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:817
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:824
-msgid "_Reindex"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:827
-msgid "Tracker daemon must be restarted"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid "_Restart"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>ניהול צריכת חשמל</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "דו×\"ל"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "מהר יותר"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "קבצי×"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "כללי"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "העדפות Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_שפה:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "שניות"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "כל הקבצי×"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "תיקיות"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "מסמכי×"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "טקסט"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "פיתוח"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "יישומי×"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_פתח"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "שגי××”"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr ""
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "סמל"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "ש×"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_קטגוריות"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_החלף"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr ""
-"קישור (שבור)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "קישור ל-%s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
diff --git a/po/hu.po b/po/hu.po
deleted file mode 100644
index 2a437d4b4..000000000
--- a/po/hu.po
+++ /dev/null
@@ -1,1464 +0,0 @@
-# Hungarian translation of tracker
-# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the tracker package.
-#
-# Gabor Kelemen <kelemeng@gnome.hu>, 2007, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: Tracker HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-06 21:42+0000\n"
-"PO-Revision-Date: 2008-03-16 01:02+0100\n"
-"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
-"Language-Team: Hungarian <gnome@fsf.hu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "%s indítása (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Lásd a(z) %s társalgást\n"
-"%s %s\n"
-"a következővel: %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mail %s feladótól"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"A(z) %s zene hallgatása\n"
-"a következőben: %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Lásd a(z) %s dokumentumot\n"
-"a következőben: %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"A(z) %s fájl megnyitása\n"
-"a következőben: %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"A(z) %s kép megjelenítése\n"
-"a következőben: %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"A(z) %s videó megjelenítése\n"
-"a következőben: %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"A(z) %s mappa megnyitása\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "ezzel:"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "csatornán"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Az összes dokumentum keresése <b>gépelés közben</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Fejlesztési fájlok"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Zene"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Képek"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videók"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "%s keresése a Tracker keresőeszközzel"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Keresés az összes dokumentumban a Tracker keresőeszközzel"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker kereső"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Keresés a Tracker keresőeszközzel"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Tracker élő keresés"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Keresés a Trackerrel gépelés közben"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Útvonal: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Módosítva: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Méret: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Elérés: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Feladó: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Dátum: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Megjegyzés: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategóriák: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Időtartam: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Műfaj: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitsebesség: <b>%s Kb/mp</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Év: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodek: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " készítette: <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Méretek: <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Készítési dátum: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Tájolás: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Vaku: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Fókusztávolság: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Megvilágítási idő: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Szerző: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitsebesség: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Kódolva: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Képkockasebesség: <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Tárgy: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Oldalszám: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Szószám: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Készítette: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Megjegyzések: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1031
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1054
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1076
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Ãrja ide a hozzáadni kívánt címkéket, vesszÅ‘kkel elválasztva"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Címkék:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Címke keresése"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "Címke _eltávolítása"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "A megjelenített találatok számának korlátozása N-re"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Adott szolgáltatás keresése"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SZOLGÃLTATÃS"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Találatok megjelenítése részletesebben, szolgáltatással és mime-típussal"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "KIFEJEZÉS... – megadott kifejezések keresése fájlokban"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Több kifejezés megadásakor az ÖSSZES kifejezést tartalmazó elemek kerülnek "
-"megjelenítésre (kifejezés1 és kifejezés2 - logikai összekapcsolás)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "A felismert szolgáltatások listája:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "További információkért adja ki a „%s --help†parancsot."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: hiányzó keresőkifejezések"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: nincs kapcsolat a keresődémonhoz"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "A parancs indítása előtt győződjön meg róla, hogy a „trackerd†fut."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "A szolgáltatás nem ismerhető fel, keresés az egyéb fájlok között...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: belső tracker hiba: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Nincs a lekérdezésnek megfelelő találat"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " – az indexelt fájlok számának megjelenítése minden szolgáltatáshoz"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "indexstatisztikák lekérése"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Megadott címke fájlhoz adása"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "CÃMKE"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Megadott címke eltávolítása fájlból"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Minden címke eltávolítása egy fájlból"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Minden megadott címke felsorolása"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Adott címkével rendelkező fájlok keresése"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FÃJL..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FÃJL... – fájlok címkéinek kezelése"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Több címke együttes hozzáadásához, eltávolításához vagy kereséséhez fűzzön "
-"össze több kapcsolót, például:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: érvénytelen argumentumok"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: a(z) %s fájl nem található"
-
-#: ../src/trackerd/trackerd.c:150
-msgid "Directory to exclude from indexing"
-msgstr "Az indexelésből kihagyandó könyvtár"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-#: ../src/trackerd/trackerd.c:152
-msgid "/PATH/DIR"
-msgstr "/ÚTVONAL/KÖNYVTÃR"
-
-#: ../src/trackerd/trackerd.c:151
-msgid "Directory to include in indexing"
-msgstr "Az indexelésbe felvenni kívánt könyvtár"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Csak induláskor indexelendő könyvtár"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Disable any indexing or watching taking place"
-msgstr "Minden indexelés vagy figyelés letiltása"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"A naplózás szintjét vezérlő érték. Az érvényes értékek: 0 (csak hibák "
-"megjelenítése/naplózása), 1 (minimális), 2 (részletes) és 3 (hibakeresés)"
-
-#: ../src/trackerd/trackerd.c:154 ../src/trackerd/trackerd.c:155
-msgid "VALUE"
-msgstr "ÉRTÉK"
-
-#: ../src/trackerd/trackerd.c:155
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Az indexelés sebességét szabályozó érték. Az értéknek 0-99 között kell "
-"lennie (alapértelmezésben 0) és az alacsonyabb értékek növelik az indexelés "
-"sebességét"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimalizálja a memóriahasználatot, de lelassíthatja az indexelést"
-
-#: ../src/trackerd/trackerd.c:157
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Kezdeti alvási idő, az indexelés előtt, másodpercben"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"A tövezőhöz és a megállító szavak listájához használandó nyelv (kétbetűs ISO "
-"639-1 kód)"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "LANG"
-msgstr "NYELV"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Force a re-index of all content"
-msgstr "Minden tartalom újraindexelésének kikényszerítése"
-
-#: ../src/trackerd/trackerd.c:160
-msgid "Make tracker errors fatal"
-msgstr "A tracker hibáinak végzetessé tétele"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2434
-msgid "- start the tracker daemon"
-msgstr "- a tracker démon elindítása"
-
-#: ../src/trackerd/trackerd.c:2435 ../src/trackerd/trackerd.c:2436
-msgid "DIRECTORY"
-msgstr "KÖNYVTÃR"
-
-#: ../src/trackerd/trackerd.c:2443
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Több könyvtár egyidejű felvételéhez vagy kihagyásához fűzzön össze több "
-"kapcsolót, például:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "A Tracker kereső- és indexelő szolgáltatás vezérlése és megfigyelése"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Tracker kisalkalmazás"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "Üresjárat"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "Indexelés"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "Összefésülés"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (a felhasználó szüneteltette)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (a rendszer szüneteltette)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (az akkumulátor szüneteltette)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "mappák"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "postafiókok"
-
-#: ../src/tracker-applet/tracker-applet.c:741
-msgid "Re-index your system?"
-msgstr "Újraindexeli a rendszert?"
-
-#: ../src/tracker-applet/tracker-applet.c:742
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Az indexelés sokáig tarthat. Biztosan újra kívánja indexelni?"
-
-#: ../src/tracker-applet/tracker-applet.c:775
-msgid "_Pause All Indexing"
-msgstr "Indexelés s_züneteltetése"
-
-#: ../src/tracker-applet/tracker-applet.c:784
-msgid "_Search"
-msgstr "_Keresés"
-
-#: ../src/tracker-applet/tracker-applet.c:791
-msgid "_Re-index"
-msgstr "Újrainde_xelés"
-
-#: ../src/tracker-applet/tracker-applet.c:797
-msgid "_Preferences"
-msgstr "_Beállítások"
-
-#: ../src/tracker-applet/tracker-applet.c:803
-msgid "_Indexer Preferences"
-msgstr "_Indexelő beállításai"
-
-#: ../src/tracker-applet/tracker-applet.c:809
-msgid "S_tatistics"
-msgstr "_Statisztika"
-
-#: ../src/tracker-applet/tracker-applet.c:815
-msgid "_About"
-msgstr "_Névjegy"
-
-#: ../src/tracker-applet/tracker-applet.c:824
-msgid "_Quit"
-msgstr "_Kilépés"
-
-#: ../src/tracker-applet/tracker-applet.c:1415
-msgid "Statistics"
-msgstr "Statisztika"
-
-#: ../src/tracker-applet/tracker-applet.c:1436
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Indexelési statisztika</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1550
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr "A Tracker szabad szoftver, terjesztheti és/vagy módosíthatja a Free Software Foundation által kiadott GNU General Public License második (vagy bármely későbbi) változatában foglaltak alapján."
-
-#: ../src/tracker-applet/tracker-applet.c:1554
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr "A Tracker programot abban a reményben terjesztjük, hogy hasznos lesz, de nem vállalunk SEMMIFÉLE GARANCIÃT, még olyan értelemben sem, hogy a program alkalmas-e a KÖZREADÃSRA vagy EGY BIZONYOS FELADAT ELVÉGZÉSÉRE. További részletekért tanulmányozza a GNU GPL licencet."
-
-#: ../src/tracker-applet/tracker-applet.c:1558
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr "A Tracker programhoz a GNU General Public License egy példánya is jár, ha nem kapta meg, írjon a Free Software Foundation Inc.-nek. Levélcímük: 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."
-
-#: ../src/tracker-applet/tracker-applet.c:1573
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr "A Trackert a személyes adataival kapcsolatos információk és metaadatok kinyerésére tervezték, azok gyors és egyszerű kereshetővé tétele érdekében."
-
-#: ../src/tracker-applet/tracker-applet.c:1574
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 A Tracker szerzői"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1584
-msgid "translator-credits"
-msgstr "Kelemen Gábor <kelemeng@gnome.hu>"
-
-#: ../src/tracker-applet/tracker-applet.c:1587
-msgid "Tracker Web Site"
-msgstr "A Tracker honlapja"
-
-#: ../src/tracker-applet/tracker-applet.c:1914 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1919
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"A számítógép indexelésre kerül, így gyors kereséseket hajthat végre "
-"fájlokban és e-mailekben"
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Bármikor szüneteltetheti az indexelést és a jobb egérgombbal ide kattintva "
-"módosíthatja az indexelés beállításait"
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-msgid "Tracker has finished indexing your system"
-msgstr "A Tracker befejezte a rendszer indexelését"
-
-#: ../src/tracker-applet/tracker-applet.c:1923
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " %d óra %d perc alatt"
-
-#: ../src/tracker-applet/tracker-applet.c:1924
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " %d perc %d másodperc alatt"
-
-#: ../src/tracker-applet/tracker-applet.c:1925
-#, c-format
-msgid " in %d seconds"
-msgstr " %d másodperc alatt"
-
-#: ../src/tracker-applet/tracker-applet.c:1926
-msgid "You can now perform searches by clicking here"
-msgstr "Mostantól ide kattintva kereséseket végezhet"
-
-#: ../src/tracker-applet/tracker-applet.c:1929
-msgid "Files:"
-msgstr "Fájlok:"
-
-#: ../src/tracker-applet/tracker-applet.c:1930
-msgid " Folders:"
-msgstr "Mappák:"
-
-#: ../src/tracker-applet/tracker-applet.c:1931
-msgid " Documents:"
-msgstr "Dokumentumok:"
-
-#: ../src/tracker-applet/tracker-applet.c:1932
-msgid " Images:"
-msgstr "Képek:"
-
-#: ../src/tracker-applet/tracker-applet.c:1933
-msgid " Music:"
-msgstr "Zene:"
-
-#: ../src/tracker-applet/tracker-applet.c:1934
-msgid " Videos:"
-msgstr "Videók:"
-
-#: ../src/tracker-applet/tracker-applet.c:1935
-msgid " Text:"
-msgstr "Szöveg:"
-
-#: ../src/tracker-applet/tracker-applet.c:1936
-msgid " Development:"
-msgstr "Fejlesztőeszközök:"
-
-#: ../src/tracker-applet/tracker-applet.c:1937
-msgid " Other:"
-msgstr "Egyéb:"
-
-#: ../src/tracker-applet/tracker-applet.c:1938
-msgid "Applications:"
-msgstr "Alkalmazások:"
-
-#: ../src/tracker-applet/tracker-applet.c:1939
-msgid "Conversations:"
-msgstr "Társalgások:"
-
-#: ../src/tracker-applet/tracker-applet.c:1940
-msgid "Emails:"
-msgstr "E-mailek:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animáció</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Intelligens szünet</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Láthatóság</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "I_konanimáció indexeléskor"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Kisalkalmazás beállításai"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr "Automatikus szünet, ha az in_dexelés rontaná más aktív alkalmazások teljesítményét"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "Automatikus s_zünet a számítógép aktív használatakor"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "Iko_n elrejtése, kivéve ha üzeneteket jelenít meg"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Ki"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:808
-msgid "Data must be reindexed"
-msgstr "Az adatokat újra kell indexelni"
-
-#: ../src/tracker-preferences/tracker-preferences.c:809
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr "A módosítások életbe lépéséhez a Trackernek újra kell indexelnie a fájljait. Kattintson az Újraindexelés gombra az újraindexelés elindításához, egyébként ez a művelet a Tracker démon újraindításakor kerül végrehajtásra."
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "_Reindex"
-msgstr "Újrain_dexelés"
-
-#: ../src/tracker-preferences/tracker-preferences.c:819
-msgid "Tracker daemon must be restarted"
-msgstr "A Tracker démont újra kell indítani"
-
-#: ../src/tracker-preferences/tracker-preferences.c:821
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr "A módosítások életbe lépéséhez a Tracker démont újra kell indítani. Kattintson az Újraindítás gombra a démon újraindításához."
-
-#: ../src/tracker-preferences/tracker-preferences.c:826
-msgid "_Restart"
-msgstr "Ú_jraindítás"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "A fájlindexelés beállítása"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Keresés és indexelés"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Bejárt könyvtárak</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Kihagyott fájlok mintája</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Kihagyott útvonalak</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Index-összefésülés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indexelés fájlonkénti korlátai</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indexelés beállításai</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexelés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Energiagazdálkodás</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Erőforrás-használat</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Indulás</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Tövezés</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Teljesítmény</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Könyvtárak figyelése</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "További indexelendő mbox stílusú postafiókok:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "További indexelendő és figyelendő útvonalak:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "További indításkor indexelendő (de nem figyelendő) útvonalak:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Dán\n"
-"Holland\n"
-"Angol\n"
-"Finn\n"
-"Francia\n"
-"Német\n"
-"Olasz\n"
-"Norvég\n"
-"Portugál\n"
-"Orosz\n"
-"Spanyol\n"
-"Svéd"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Minden indexelés letiltása akkumulátoros működés esetén"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "Kiinduló indextörlés letiltása akkumulátoros működés esetén"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "_Evolution e-mail indexelés engedélyezése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "_KMail e-mail indexelés engedélyezése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "_Thunderbird e-mail indexelés engedélyezése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "_Figyelés engedélyezése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "_Indexelés engedélyezése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "Gyorsabb"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Az indexelés során kihagyandó fájlminták:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Fájlok"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Ãltalános"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "_Bélyegképek előállítása"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Mellőzött fájlok"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "In_dexelés késleltetése: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "_Fájltartalom indexelése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "_Csatolt könyvtárak indexelése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "A saját _könyvtáram indexelése és figyelése"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Indexelés sebessége:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "Az in_dexelendő szöveg legnagyobb mennyisége:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Az indexelendő _egyedi szavak legnagyobb mennyisége:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Az indexelés során kihagyandó útvonalgyökerek:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Gyors index-összefésülés végrehajtása (érintheti a rendszer teljesítményét)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Teljesítmény"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Lassabb"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "A Tracker beállításai"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "Nye_lv:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "Memóriahasználat _minimalizálása (lassabb indexelés)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Több memória használata a gyorsabb indexeléshez"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "másodperc"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Keresés adott szolgáltatásból"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-mailek"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Minden fájl"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Mappák"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumentumok"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1229
-msgid "Text"
-msgstr "Szöveg"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Fejlesztőeszközök"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Csevegésnaplók"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Alkalmazások"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Webes előzmények"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Megnyitás"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Mappa m_egnyitása"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Ãt_helyezés a Kukába"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Eredmény mentése..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "A karakterkészlet-konverzió nem sikerült erre: „%sâ€"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occurred :"
-msgstr "A következő hiba történt:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:285
-msgid "Error"
-msgstr "Hiba"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:660
-msgid "Did you mean"
-msgstr "Nem erre gondolt:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:691
-msgid "Your search returned no results."
-msgstr "A keresés nem adott találatot."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:706
-msgid "Tracker Search Tool-"
-msgstr "Tracker keresőeszköz –"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:867
-#: ../src/tracker-search-tool/tracker-search-tool.c:2261
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker keresőeszköz"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1057
-msgid "Search _results: "
-msgstr "_Találatok: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1063
-msgid "no search performed"
-msgstr "nincs keresés végrehajtva"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1123
-#: ../src/tracker-search-tool/tracker-search-tool.c:1283
-msgid "List View"
-msgstr "Listanézet"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1195
-msgid "Icon"
-msgstr "Ikon"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1207
-msgid "Name"
-msgstr "Név"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1301
-msgid "_Categories"
-msgstr "K_ategóriák"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1581
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d – %d, összesen %d elem"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1584
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d elem"
-msgstr[1] "%d elem"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1632
-#: ../src/tracker-search-tool/tracker-search-tool.c:1827
-msgid "Could not connect to search service as it may be busy"
-msgstr "Nem lehet csatlakozni a keresési szolgáltatáshoz, lehet hogy az foglalt"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2028
-msgid "_Search:"
-msgstr "K_eresés:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2042
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "A Tracker még indexel, így még nem minden találat áll rendelkezésre"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2056
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Adjon meg egy keresőkifejezést, a szavakat szóközökkel elválasztva."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "search_entry"
-msgstr "kereső_mező"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2103
-msgid "Click to perform a search."
-msgstr "Kattintson ide a keresés elvégzéséhez."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Nem nyitható meg a súgódokumentum."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Biztosan meg akar nyitni %d dokumentumot?"
-msgstr[1] "Biztosan meg akar nyitni %d dokumentumot?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "%d különálló ablak fog megnyílni."
-msgstr[1] "%d különálló ablak fog megnyílni."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Nem nyitható meg a(z) „%s†dokumentum."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Nem nyitható meg a(z) „%s†mappa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Nem fut a Nautilus fájlkezelő."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Az alkalmazás nem nyitható meg"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "A dokumentum nem létezik."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Nincs olyan nézőprogram telepítve, amely képes lenne megjeleníteni a "
-"dokumentumot."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Biztosan meg akar nyitni %d mappát?"
-msgstr[1] "Biztosan meg akar nyitni %d mappát?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "„%s†nem helyezhető át a Kukába."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Véglegesen törölni akarja a következőt: „%s�"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Nem érhető el a Kuka. „%s†nem helyezhető át a Kukába."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "„%s†nem törölhető."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "„%s†áthelyezése sikertelen: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "„%s†törlése sikertelen: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Aktiválja az e-mail megjelenítéséhez"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Keresés eredményének mentése..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "A dokumentum nem menthető."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Nem választott ki dokumentumnevet."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "A(z) „%s†dokumentum nem menthető a(z) „%s†helyre."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "A(z) „%s†dokumentum már létezik. Lecseréli?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Ha lecserél egy létező fájlt, akkor annak tartalma felülíródik."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Csere"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "A kiválasztott dokumentumnév egy mappa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "Lehet, hogy nincs írási jogosultsága a dokumentumhoz."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Dokumentumok és mappák keresése a számítógépen név vagy tartalom szerint a "
-"Tracker segítségével"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf-hiba:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "ma, %-k.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "tegnap, %-k.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%Y. %B %e., %A, %k.%M.%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "link (törött)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "link erre: %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Tracker kereső- és indexelő szolgáltatás"
-
diff --git a/po/it.po b/po/it.po
deleted file mode 100644
index 426235347..000000000
--- a/po/it.po
+++ /dev/null
@@ -1,1470 +0,0 @@
-# Italian translation of Tracker
-# Copyright (C) 2006-2008, Free Software Foundation, Inc
-# This file is distributed under the same license as the tracker package.
-# Luca Ferretti <elle.uca@libero.it>, 2006-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-22 17:26+0100\n"
-"PO-Revision-Date: 2008-02-22 17:27+0100\n"
-"Last-Translator: Luca Ferretti <elle.uca@libero.it>\n"
-"Language-Team: Italian <tp@lists.linux.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural= ( n != 1 );\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Lancia %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Vedi conversazione %s\n"
-"%s %s\n"
-"da %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Email da %s"
-
-# il primo %s è il nome del file,
-# il seconda la directory in cui si trova
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Ascolta musica di %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Vedi documento %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Apri file %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Visualizza immagine %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Guarda video %s\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Apri cartella %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "con"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "nel canale"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Cerca in tutti i propri documenti <b>mentre si digita</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "File di sviluppo"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musica"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Immagini"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Video"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Cerca %s con Strumento di ricerca Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Cerca in tutti i documenti con Strumento di ricerca Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Ricerca Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Cerca con Strumento di ricerca Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Ricerca Tracker Live"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Cerca con Tracker, mentre si digita"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Percorso: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modificato: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Dimensione: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Accesso: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Mittente: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Commento: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categorie: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Durata: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Genere: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitrate: <b>%s kb/s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Anno: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec: <b>%s</b>"
-
-# relativo a dato EXIF
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " catturata con una <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensione: <b>%d × %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Data cattura: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientamento: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash: <b>%s</b>"
-
-# come scritto in
-# http://www.reflex.it/diz_ingl-it-new.html
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Lunghezza focale: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Tempo esposizione: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autore: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitrate: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codificato in: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Framerate: <b>%s</b>"
-
-# Relativo a Documento (PDF o OOo, credo)
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Oggetto: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Totale pagine: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Totale parole: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Creato: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Commenti: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:865
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f kB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:869
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:873
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:912
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:979
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1002
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1024
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Digitare qui le etichette da aggiungere, separate da virgole"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Etichette:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "C_erca etichetta"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Rimuovi etichetta"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limita il numero di risultati mostrati a N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Cerca per uno specifico servizio"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVIZIO"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Mostra risultati più dettagliati con servizio e tipo MIME"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERMINE... - cerca determinate termini nei file"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Specificando più di un termine, saranno mostrati gli elementi che contengono "
-"TUTTI i termini specificati (termine1 AND termine2 - congiunzione logica)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "L'elenco di servizi riconosciuti è:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Provare \"%s --help\" per maggiori informazioni."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: termini da cercare mancanti"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: nessuna connessione al demone tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Assicurarsi che \"trackerd\" sia in esecuzione prima di avviare questo "
-"comando."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Servizio non riconosciuto, ricerca in \"altri\" file...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: errore interno di tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Nessun risultato trovato che corrisponda all'interrogazione"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - mostra il numero di file indicizzato per ciascun servizio"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "recupero statistiche dell'indice"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Aggiunge l'etichetta specificata a un file"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ETICHETTA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Rimuove l'etichetta specificata da un file"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Rimuove tutte le etichette da un file"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Elenca tutte le etichette definite"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Ricerca i file con l'etichetta specificata"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FILE..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FILE... - manipola le etichette applicate ai file"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Per aggiungere, rimuovere o cercare etichette multiple in una sola volta, "
-"unire più opzioni come in:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: argomenti non validi"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: file %s non trovato"
-
-#: ../src/trackerd/trackerd.c:146
-msgid "Directory to exclude from indexing"
-msgstr "Directory da escludere dall'indicizzazione"
-
-#: ../src/trackerd/trackerd.c:146 ../src/trackerd/trackerd.c:147
-#: ../src/trackerd/trackerd.c:148
-msgid "/PATH/DIR"
-msgstr "/PERCORSO/DIR"
-
-#: ../src/trackerd/trackerd.c:147
-msgid "Directory to include in indexing"
-msgstr "Directory da includere nell'indicizzazione"
-
-# to crawl:
-# 1. strisciare, trascinarsi
-# 2. andar carponi
-# 3. avanzare lentamente
-# 4. brulicare
-#
-#: ../src/trackerd/trackerd.c:148
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-"Directory su cui effettuare il crawl per l'indicizzazione solo all'avvio"
-
-#: ../src/trackerd/trackerd.c:149
-msgid "Disable any indexing or watching taking place"
-msgstr "Disabilita l'esecuzione di ogni indicizzazione o monitoraggio"
-
-#: ../src/trackerd/trackerd.c:150
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Valore che controlla il livello di dati registrati. Valori ammessi sono 0 "
-"(mostra/registra solo gli errori), 1 (minimale), 2 (dettagliato) e 3 (debug)"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-msgid "VALUE"
-msgstr "VALORE"
-
-#: ../src/trackerd/trackerd.c:151
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Valore da usare per la regolazione dell'indice; deve essere nell'intervallo "
-"0~99 (0 come predefinito). Valori più bassi incrementano la velocità di "
-"indicizzazione"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimizza l'uso della memoria, ma potrebbe rallentare l'indicizzazione"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Tempo di attesa iniziale, prima di indicizzare, in secondi"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Linguaggio da usare per lo stemmer e le parole da escludere (codice 2 "
-"caratteri ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:154
-msgid "LANG"
-msgstr "LINGUA"
-
-#: ../src/trackerd/trackerd.c:155
-msgid "Force a re-index of all content"
-msgstr "Forza una re-indicizzazione di tutti i contenuti"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Make tracker errors fatal"
-msgstr "Rende critici gli errori di tracker"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2441
-msgid "- start the tracker daemon"
-msgstr "- avvia il demone di Tracker"
-
-#: ../src/trackerd/trackerd.c:2442 ../src/trackerd/trackerd.c:2443
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../src/trackerd/trackerd.c:2450
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Per includere o escludere directory multiple in una sola volta, unire più "
-"opzioni come in:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-"Tiene sotto controllo il servizio di ricerca e indicizzazione di Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:47
-msgid "Tracker Applet"
-msgstr "Applet Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:228
-msgid "Tracker : "
-msgstr "Tracker - "
-
-#: ../src/tracker-applet/tracker-applet.c:233
-msgid "Idle"
-msgstr "Inattivo"
-
-#: ../src/tracker-applet/tracker-applet.c:237
-msgid "Indexing"
-msgstr "Indicizzazione"
-
-#: ../src/tracker-applet/tracker-applet.c:241
-msgid "Merging"
-msgstr "Unione"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid " (paused by user)"
-msgstr " (in pausa per decisione utente)"
-
-# non ottimale....
-#: ../src/tracker-applet/tracker-applet.c:253
-#: ../src/tracker-applet/tracker-applet.c:264
-msgid " (paused by system)"
-msgstr " (in pausa per sistema)"
-
-# non ottimale...
-#: ../src/tracker-applet/tracker-applet.c:268
-msgid " (paused by battery)"
-msgstr " (in pausa per batteria)"
-
-#: ../src/tracker-applet/tracker-applet.c:279
-msgid "folders"
-msgstr "cartelle"
-
-#: ../src/tracker-applet/tracker-applet.c:748
-msgid "_Off"
-msgstr "_Disattivata"
-
-#: ../src/tracker-applet/tracker-applet.c:753
-msgid "_Index Only When Idle"
-msgstr "_Indicizzare solo quando inattivo"
-
-#: ../src/tracker-applet/tracker-applet.c:758
-msgid "_Merge Indexes Only When Idle"
-msgstr "_Unire gli indici solo quando inattivo"
-
-#: ../src/tracker-applet/tracker-applet.c:765
-msgid "_Pause All Indexing"
-msgstr "_Pausa tutte indicizzazioni"
-
-#: ../src/tracker-applet/tracker-applet.c:770
-msgid "S_mart Pause"
-msgstr "Pa_usa intelligente"
-
-#: ../src/tracker-applet/tracker-applet.c:777
-msgid "A_nimate When Indexing"
-msgstr "Animazione _durante indicizzazione"
-
-#: ../src/tracker-applet/tracker-applet.c:782
-msgid "Auto _Hide"
-msgstr "Nascondere _automaticamente"
-
-#: ../src/tracker-applet/tracker-applet.c:792
-msgid "_Search..."
-msgstr "_Cerca..."
-
-#: ../src/tracker-applet/tracker-applet.c:798
-msgid "Pre_ferences"
-msgstr "Preferen_ze"
-
-#: ../src/tracker-applet/tracker-applet.c:804
-msgid "S_tatistics"
-msgstr "S_tatistiche"
-
-#: ../src/tracker-applet/tracker-applet.c:810
-msgid "_About"
-msgstr "I_nformazioni"
-
-#: ../src/tracker-applet/tracker-applet.c:819
-msgid "_Quit"
-msgstr "_Esci"
-
-#: ../src/tracker-applet/tracker-applet.c:1359
-msgid "Statistics"
-msgstr "Statistiche"
-
-#: ../src/tracker-applet/tracker-applet.c:1380
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Statistiche dell'indice</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1493
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker è software libero; è possibile ridistribuirlo e/o modificarlo "
-"secondo i termini della licenza GNU General Public License, come pubblicata "
-"dalla Free Software Foundation; versione 2 della licenza, o (a scelta) una "
-"versione più recente."
-
-#: ../src/tracker-applet/tracker-applet.c:1497
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker è distribuito nella speranza che possa risultare utile, ma SENZA "
-"ALCUNA GARANZIA, nemmeno la garanzia implicita di COMMERCIABILITÀ o "
-"APPLICABILITÀ PER UNO SCOPO PARTICOLARE. Per maggiori dettagli consultare la "
-"GNU General Public License."
-
-#: ../src/tracker-applet/tracker-applet.c:1501
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Una copia della GNU General Public License dovrebbe essere stata fornita con "
-"Tracker. In caso contrario scrivere a:\n"
-" Free Software Foundation, Inc.\n"
-" 59 Temple Place, Suite 330, Boston, MA\n"
-" 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1516
-msgid ""
-"Tracker is a tool designed to extract information and metadata about your "
-"personal data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker è uno strumento progettato per estrarre informazioni e metadati "
-"relativi ai propri dati in modo da poter cercare in essi facilmente e "
-"rapidamente."
-
-#: ../src/tracker-applet/tracker-applet.c:1520
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Gli autori di Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1530
-msgid "translator-credits"
-msgstr "Luca Ferretti <elle.uca@libero.it>"
-
-#: ../src/tracker-applet/tracker-applet.c:1533
-msgid "Tracker Web Site"
-msgstr "Sito web di Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1586 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1591
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Sta per essere eseguita l'indicizzazione del computer, in modo da poter "
-"compiere ricerche rapide nei propri file ed email"
-
-#: ../src/tracker-applet/tracker-applet.c:1592
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"È possibile mettere in pausa l'indicizzazione in ogni momento e configurare "
-"le impostazioni di indicizzazione facendo clic qui col tasto destro"
-
-#: ../src/tracker-applet/tracker-applet.c:1594
-msgid "Tracker has finished indexing your system"
-msgstr "L'indicizzazione del sistema con Tracker è terminata"
-
-#: ../src/tracker-applet/tracker-applet.c:1595
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " in %d ore e %d minuti"
-
-#: ../src/tracker-applet/tracker-applet.c:1596
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " in %d minuti e %d secondi"
-
-#: ../src/tracker-applet/tracker-applet.c:1597
-#, c-format
-msgid " in %d seconds"
-msgstr " in %d secondi"
-
-#: ../src/tracker-applet/tracker-applet.c:1598
-msgid "You can now perform searches by clicking here"
-msgstr "È ora possibile compiere delle ricerche facendo clic qui"
-
-#: ../src/tracker-applet/tracker-applet.c:1601
-msgid "Files:"
-msgstr "File:"
-
-#: ../src/tracker-applet/tracker-applet.c:1602
-msgid " Folders:"
-msgstr " Cartelle:"
-
-#: ../src/tracker-applet/tracker-applet.c:1603
-msgid " Documents:"
-msgstr " Documenti:"
-
-#: ../src/tracker-applet/tracker-applet.c:1604
-msgid " Images:"
-msgstr " Immagini:"
-
-#: ../src/tracker-applet/tracker-applet.c:1605
-msgid " Music:"
-msgstr " Musica:"
-
-#: ../src/tracker-applet/tracker-applet.c:1606
-msgid " Videos:"
-msgstr " Video:"
-
-#: ../src/tracker-applet/tracker-applet.c:1607
-msgid " Text:"
-msgstr " Testo:"
-
-#: ../src/tracker-applet/tracker-applet.c:1608
-msgid " Development:"
-msgstr " Sviluppo:"
-
-#: ../src/tracker-applet/tracker-applet.c:1609
-msgid " Other:"
-msgstr " Altro:"
-
-#: ../src/tracker-applet/tracker-applet.c:1610
-msgid "Applications:"
-msgstr "Applicazioni:"
-
-#: ../src/tracker-applet/tracker-applet.c:1611
-msgid "Conversations:"
-msgstr "Conversazioni:"
-
-#: ../src/tracker-applet/tracker-applet.c:1612
-msgid "Emails:"
-msgstr "Email:"
-
-#: ../src/tracker-preferences/tracker-preferences.c:899
-msgid "Data must be reindexed"
-msgstr "È necessario reindicizzare i dati"
-
-#: ../src/tracker-preferences/tracker-preferences.c:900
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Affiché i cambiamenti apportati abbiano effetti, è necessario che Tracker "
-"reindicizzi i propri file. Fare clic sul pulsante «Reindicizza» per avviare "
-"adesso la reindicizzazione, altrimenti tale azione sarà compiuta al prossimo "
-"avvio del demone Tracker."
-
-#: ../src/tracker-preferences/tracker-preferences.c:907
-msgid "_Reindex"
-msgstr "_Reindicizza"
-
-#: ../src/tracker-preferences/tracker-preferences.c:910
-msgid "Tracker daemon must be restarted"
-msgstr "È necessario riavviare il demone Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.c:912
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Affinché i cambiamenti apportati abbiano effetto, è necessario riavviare il "
-"demone Tracker. Fare clic sul pulsante «Riavvia» per farlo adesso."
-
-#: ../src/tracker-preferences/tracker-preferences.c:917
-msgid "_Restart"
-msgstr "_Riavvia"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configura l'indicizzazione dei file con Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Ricerca e indicizzazione"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Directory osservate</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Modelli di file ignorati</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Percorsi ignorati</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Unione degli indici</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Limiti di indicizzazione (per file)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opzioni di indicizzazione</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indicizzazione</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Gestione alimentazione</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Utilizzo delle risorse</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Avvio</b>"
-
-# FIXME??
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Stemming</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Regolazione</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Directory controllate</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Caselle di posta tipo mbox aggiuntive da indicizzare:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Percorsi aggiuntivi da indicizzare e controllare:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Percorsi aggiuntivi da indicizzare all'avvio (ma non controllare per "
-"aggiornamenti):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Danese\n"
-"Olandese\n"
-"Inglese\n"
-"Finnico\n"
-"Francese\n"
-"Tedesco\n"
-"Italiano\n"
-"Norvegese\n"
-"Portoghese\n"
-"Russo\n"
-"Spagnolo\n"
-"Svedese"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Disabilitare ogni indicizzazione quando alimentato da batteria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-"Disabilitare il controllo iniziale dell'indice quando alimentato a batteria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "Email"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "Abilitare indicizzazione delle email di _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "Abilitare indicizzazione delle email di _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Abilitare indicizzazione delle email di _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "Abilitare il co_ntrollo"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "Abilitare l'indici_zzazione"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "Veloce"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Modelli di file da ignorare durante l'indicizzazione:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "File"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Generale"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Generare le _miniature"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "File ignorati"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "_Ritardo di indicizzazione: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Indicizzare il contenuto dei _file"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Indicizzare le directory _montate"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Indicizzare e controllare la directory _home"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Velocità di indicizzazione:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "_Quantità massima di testo da indicizzare:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "_Numero massimo di parole uniche da indicizzare:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Radici di percorsi da ignorare durante l'indicizzazione:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Eseguire unioni veloci degli indici (potrebbe influire sulle prestazioni del "
-"sistema)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Prestazioni"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "Lento"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Preferenze di Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Lingua:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimizzare l'uso della memoria (indicizzazione più lenta)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Usare memoria aggiuntiva per indicizzazione più rapida"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "secondi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Cerca per uno specifico servizio"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Email"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Tutti i file"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Cartelle"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documenti"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1228
-msgid "Text"
-msgstr "Testo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Sviluppo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Registri di chat"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Applicazioni"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:206
-msgid "_Open"
-msgstr "_Apri"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "O_pen Folder"
-msgstr "A_pri cartella"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "Mo_ve to Trash"
-msgstr "_Sposta nel cestino"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "_Save Results As..."
-msgstr "_Salva risultati come..."
-
-# appare su console, g_warning, ecco perché "" e non «» -Luca
-#: ../src/tracker-search-tool/tracker-search-tool.c:253
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Conversione del set di caratteri fallita per \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:280
-msgid "The following error has occurred :"
-msgstr "Si sono verificati i seguenti errori:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:284
-msgid "Error"
-msgstr "Errore"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:659
-msgid "Did you mean"
-msgstr "Forse si cercava"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Your search returned no results."
-msgstr "La ricerca non ha restituito alcun risultato."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:705
-msgid "Tracker Search Tool-"
-msgstr "Strumento di ricerca Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:866
-#: ../src/tracker-search-tool/tracker-search-tool.c:2259
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Strumento di ricerca Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1056
-msgid "Search _results: "
-msgstr "_Risultati della ricerca: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1062
-msgid "no search performed"
-msgstr "nessuna ricerca"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1122
-#: ../src/tracker-search-tool/tracker-search-tool.c:1282
-msgid "List View"
-msgstr "Vista a elenco"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1194
-msgid "Icon"
-msgstr "Icona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1206
-msgid "Name"
-msgstr "Nome"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1300
-msgid "_Categories"
-msgstr "_Categorie"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1580
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d su %d corrispondenze"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1583
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d corrispondenza"
-msgstr[1] "%d corrispondenze"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1631
-#: ../src/tracker-search-tool/tracker-search-tool.c:1826
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"Impossibile connettersi al servizio di ricerca, potrebbe essere occupato"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "_Search:"
-msgstr "C_erca:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"È ancora in corso l'indicizzazione con Tracker, è possibile che non tutti i "
-"risultati siano già disponibili"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2054
-#: ../src/tracker-search-tool/tracker-search-tool.c:2055
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Inserire un termine di ricerca con più parole separate da spazi."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2055
-msgid "search_entry"
-msgstr "inserimento_ricerca"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2101
-msgid "Click to perform a search."
-msgstr "Fare clic per eseguire una ricerca."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Impossibile aprire il documento di aiuto."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Aprire veramente %d documento?"
-msgstr[1] "Aprire veramente %d documenti?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Proseguendo, verrà aperta %d finestra separata."
-msgstr[1] "Proseguendo, verranno aperte %d finestre separate."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Impossibile aprire il documento «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Impossibile aprire la cartella «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Il file manager Nautilus non è in esecuzione."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Impossibile aprire l'applicazione"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "Il documento non esiste."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Non è installato alcun visualizzatore in grado di mostrare il documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Aprire veramente %d cartella?"
-msgstr[1] "Aprire veramente %d cartelle?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Impossibile spostare «%s» nel cestino."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Eliminare «%s» in modo permanente?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Cestino non disponibile. Impossibile spostare «%s» nel cestino."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Impossibile eliminare «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Spostamento di «%s» fallito: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Eliminazione di «%s» fallita: %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Attivare per visualizzare questa email"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Salva risultati di ricerca come..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "Impossibile salvare il documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Non è stato selezionato alcun nome di documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Impossibile salvare il documento «%s» in «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Il documento «%s» esiste già. Sostituirlo?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Sostituendo un file esistente, il suo contenuto verrà sovrascritto."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Sostituisci"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "Il nome di documento selezionato è una cartella."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr ""
-"È possibile che non si possieda il permesso di scrittura sul documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Individua per nome o contenuto usando Tracker documenti e cartelle su questo "
-"computer"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Errore di GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "oggi alle %-H.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "ieri alle %k.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %-d %B %Y alle %k.%M.%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "collegamento (interrotto)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "collegamento a %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Servizio di ricerca e indicizzazione di Tracker"
diff --git a/po/ja.po b/po/ja.po
deleted file mode 100644
index 64854bb5d..000000000
--- a/po/ja.po
+++ /dev/null
@@ -1,1427 +0,0 @@
-# tracker ja.po.
-# Copyright (C) 2008, Free Software Foundation, Inc
-# This file is distributed under the same license as the tracker package.
-# Takao Fujiwara <takao.fujiwara@sun.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker trunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-17 00:47+0900\n"
-"PO-Revision-Date: 2008-04-17 00:45+0900\n"
-"Last-Translator: Takao Fujiwara <takao.fujiwara@sun.com>\n"
-"Language-Team: Takao Fujiwara <takao.fujiwara@sun.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural= (n != 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "パス : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "修正日時: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "サイズ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "アクセス日: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "é€ä¿¡è€… : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "日付 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "コメント : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "カテゴリ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "å¹´ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "コーデック : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "追加ã—ãŸã„タグをコンマã§åŒºåˆ‡ã£ã¦å…¥åŠ›ã—ã¦ãã ã•ã„"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "ã‚¿ã‚° :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "ã‚¿ã‚°ã§æ¤œç´¢ã™ã‚‹(_S)"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "タグを削除ã™ã‚‹(_R)"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr ""
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr ""
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr ""
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:664
-msgid "- start the tracker daemon"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:665 ../src/trackerd/trackerd.c:666
-msgid "DIRECTORY"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:673
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Tracker 検索ã¨ç´¢å¼•ã‚µãƒ¼ãƒ“スを制御ã—監視ã—ã¾ã™"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Tracker アプレット"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr ""
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "検索(_S)"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:833
-msgid "Data must be reindexed"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:841
-msgid "_Reindex"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:844
-msgid "Tracker daemon must be restarted"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:846
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:851
-msgid "_Restart"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Tracker ã§ãƒ•ã‚¡ã‚¤ãƒ«ã®ç´¢å¼•ã‚’構æˆã—ã¾ã™"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "検索ã¨ç´¢å¼•"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>索引オプション</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>é›»æºç®¡ç†</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>起動時</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"デンマーク語\n"
-"オランダ語\n"
-"英語\n"
-"フィンランド語\n"
-"フランス語\n"
-"ドイツ語\n"
-"イタリア語\n"
-"ノルウェイ語\n"
-"ãƒãƒ«ãƒˆã‚¬ãƒ«èªž\n"
-"ロシア語\n"
-"スペイン語\n"
-"スウェーデン語"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãŒã‚ªãƒ³ã®æ™‚ã«ã™ã¹ã¦ã®ç´¢å¼•ã‚’無効ã«ã™ã‚‹"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãŒã‚ªãƒ³ã®æ™‚ã«åˆæœŸç´¢å¼•ã‚’無効ã«ã™ã‚‹"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-#, fuzzy
-msgid "Enable _Modest email indexing"
-msgstr "索引を有効ã«ã™ã‚‹(_N)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _watching"
-msgstr "監視を有効ã«ã™ã‚‹(_W)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable i_ndexing"
-msgstr "索引を有効ã«ã™ã‚‹(_N)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "File patterns to ignore during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "Files"
-msgstr "ファイル"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "General"
-msgstr "一般"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Generate thum_bnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Ignored Files"
-msgstr "無視ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _delay: "
-msgstr "索引ã®é…延(_D):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _mounted directories"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum _amount of text to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum number of unique _words to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Performance"
-msgstr "性能"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Tracker Preferences"
-msgstr "Tracker 設定"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Language:"
-msgstr "言語(_L):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Use additional memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "seconds"
-msgstr "秒"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "フォルダ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "ドキュメント"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "テキスト"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "開発"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "ãƒãƒ£ãƒƒãƒˆãƒ­ã‚°"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "アプリケーション"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Web 履歴"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "é–‹ã(_O)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "次ã®ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—㟠:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "エラー"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "次ã¯ã„ã‹ãŒã§ã™ã‹"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "検索ã¯çµæžœãªã—ãŒè¿”ã‚Šã¾ã—ãŸã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Tracker 検索ツール-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker 検索ツール"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "検索çµæžœ(_R): "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "検索ã¯å®Ÿè¡Œã•ã‚Œã¦ã„ã¾ã›ã‚“"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "カテゴリ(_C)"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d é …ç›®"
-msgstr[1] "%d é …ç›®"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "検索(_S):"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Tracker を使ã£ã¦åå‰ã‚„内容ã«ã‚ˆã‚Šã‚³ãƒ³ãƒ”ュータ上ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚„フォルダã®å ´æ‰€"
-"を示ã—ã¾ã™"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Tracker 検索ã¨ç´¢å¼•ã‚µãƒ¼ãƒ“ス"
diff --git a/po/ko.po b/po/ko.po
deleted file mode 100644
index 78c8c7336..000000000
--- a/po/ko.po
+++ /dev/null
@@ -1,1343 +0,0 @@
-# Korean translation of tracker.
-# Copyright (C) 2007 THE tracker'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the tracker package.
-# Namhyung Kim <namhyung@gmail.com>, 2007.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-16 17:25+0000\n"
-"PO-Revision-Date: 2007-12-17 15:53+0900\n"
-"Last-Translator: Namhyung Kim <namhyung@gmail.com>\n"
-"Language-Team: Gnome Korea <gnome-kr-hackers@lists.kldp.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "%s 실행 (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"%s 대화 보기\n"
-"%s %s\n"
-"%s(으)로부터"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "%sì´(ê°€) 보낸 ì „ìžë©”ì¼"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"%s ìŒì•… 듣기\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"%s 문서 보기\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"%s íŒŒì¼ ì—´ê¸°\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"%s ì´ë¯¸ì§€ 보기\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"%s ë™ì˜ìƒ 보기\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"%s í´ë” 열기\n"
-"in %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "<b>ì—¬ëŸ¬ë¶„ì´ ìž…ë ¥í•œ</b> 모든 문서를 찾아ì¤ë‹ˆë‹¤"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "개발 파ì¼"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "ìŒì•…"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "ì´ë¯¸ì§€"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "ë™ì˜ìƒ"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "트래커 찾기 ë„구로 %sì„(를) 찾아봅니다"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "트래커 찾기 ë„구로 모든 문서를 찾아봅니다"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "트래커 찾기"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "트래커 찾기 ë„구로 찾아보기"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "트래커 실시간 찾기"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "입력한 ë‚´ìš©ì„ íŠ¸ëž˜ì»¤ë¡œ 찾아봅니다"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "경로 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "수정한 시간 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "í¬ê¸° : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "접근한 시간 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME í˜•ì‹ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "보낸 사람 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "날짜 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "코멘트 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "분류 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "ìž¬ìƒ ì‹œê°„ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "장르 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "비트레ì´íŠ¸ : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "ë…„ë„ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "ì½”ë± : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr "<span size='large'><i>%s</i></span>(으)ë¡œ ì°íž˜"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "í¬ê¸° : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "ì°ì€ 날짜: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "ë°©í–¥ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "플래시 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "ì´ˆì  ê±°ë¦¬ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "노출 시간 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "ìž‘ì„±ìž : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "비트레ì´íŠ¸ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "ì¸ì½”ë” : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "프레임률 : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "주제 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "페ì´ì§€ 수 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "단어 수 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "만든 날짜 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "코멘트 : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr "ì•Œ 수 ì—†ìŒ"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:249
-msgid "Type tags you want to add here, separated by commas"
-msgstr "붙ì´ê³  ì‹¶ì€ íƒœê·¸ë¥¼ 입력하세요 (여러 ê°œì¸ ê²½ìš° 콤마로 구분)"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:359
-msgid "Tags :"
-msgstr "태그 :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:381
-msgid "_Search For Tag"
-msgstr "태그로 찾기(_S)"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:393
-msgid "_Remove Tag"
-msgstr "태그 지우기(_R)"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "ì°¾ì€ ê²°ê³¼ë¥¼ 보여줄 개수를 N 개로 제한"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "지정한 서비스 찾기"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "서비스와 MIME 형ì‹ì„ í¬í•¨í•˜ì—¬ 결과를 ìƒì„¸ížˆ 표시"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - 파ì¼ì—ì„œ 특정 ìš©ì–´ 찾기"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"하나 ì´ìƒì˜ 용어를 지정하면, 모든 단어를 í¬í•¨í•œ 항목들만 í‘œì‹œë  ê²ƒìž…ë‹ˆë‹¤"
-"(용어1 AND 용어2 - 논리합)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "ì¸ì‹í•  수 있는 ì„œë¹„ìŠ¤ì˜ ëª©ë¡:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "ìžì„¸í•œ 정보는 \"%s --help\"를 입력하십시오."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: ì°¾ì„ ìš©ì–´ê°€ 없습니다"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: 트래커 ëŒ€ëª¬ì— ì—°ê²°ë˜ì–´ 있지 않습니다"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "ì´ ëª…ë ¹ì„ ì‹¤í–‰í•˜ê¸° ì „ì— \"trackerd\" 프로세스가 실행 중ì¸ì§€ 확ì¸í•˜ì‹­ì‹œì˜¤."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "서비스를 ì¸ì‹í•  수 ì—†ìŒ, 다른 파ì¼ì—ì„œ 찾는 중...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: 트래커 내부 오류: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "ì—¬ëŸ¬ë¶„ì´ ìž…ë ¥í•œ ë‚´ìš©ê³¼ ì¼ì¹˜í•˜ëŠ” 결과가 없습니다"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - ê° ì„œë¹„ìŠ¤ì— ëŒ€í•´ ì¸ë±ìŠ¤ëœ 파ì¼ì˜ 수 보기"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "ì¸ë±ìŠ¤ ìƒíƒœ 가져오는 중"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "파ì¼ì— 지정한 태그를 붙입니다"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "TAG"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "파ì¼ì—ì„œ 지정한 태그를 지ì›ë‹ˆë‹¤"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "파ì¼ì—ì„œ 모든 태그를 지ì›ë‹ˆë‹¤"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "ì •ì˜ëœ 모든 태그 ëª©ë¡ ë³´ê¸°"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "지정한 태그가 ë¶™ì€ íŒŒì¼ ì°¾ê¸°"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FILE..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FILE... - 파ì¼ì— ë¶™ì€ íƒœê·¸ë¥¼ 조작합니다"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"í•œ ë²ˆì— ì—¬ëŸ¬ 태그를 붙ì´ê±°ë‚˜, 지우거나, 찾으려면 다ìŒê³¼ ê°™ì´ ì—¬ëŸ¬ ì˜µì…˜ì„ "
-"함께 사용하세요:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: ìž˜ëª»ëœ ë§¤ê°œ 변수"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: %s 파ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ"
-
-#: ../src/trackerd/trackerd.c:146
-msgid "Directory to exclude from indexing"
-msgstr "ì¸ë±ì‹±ì—ì„œ 제외할 디렉토리"
-
-#: ../src/trackerd/trackerd.c:146 ../src/trackerd/trackerd.c:147
-#: ../src/trackerd/trackerd.c:148
-msgid "/PATH/DIR"
-msgstr "/PATH/DIR"
-
-#: ../src/trackerd/trackerd.c:147
-msgid "Directory to include in indexing"
-msgstr "ì¸ë±ì‹±ì— í¬í•¨ì‹œí‚¬ 디렉토리"
-
-#: ../src/trackerd/trackerd.c:148
-msgid "Directory to crawl for indexing at start up only"
-msgstr "시작 ì‹œì—만 ì¸ë±ì‹±ì„ 수행할 디렉토리"
-
-#: ../src/trackerd/trackerd.c:149
-msgid "Disable any indexing or watching taking place"
-msgstr "모든 ì¸ë±ì‹±ê³¼ ê°ì‹œë¥¼ 수행하지 ì•ŠìŒ"
-
-#: ../src/trackerd/trackerd.c:150
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"로그 ìˆ˜ì¤€ì„ ì œì–´í•˜ëŠ” ê°’. 사용할 수 있는 ê°’ì€ 0 (ì—러만 보기/로그 남김), "
-"1 (최소 수준), 2 (ìƒì„¸ ì •ë³´), 3 (디버그)"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-msgid "VALUE"
-msgstr "VALUE"
-
-#: ../src/trackerd/trackerd.c:151
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr "ì¸ë±ì‹±ì˜ ì„±ëŠ¥ì„ ì œì–´í•˜ëŠ” ê°’. 사용할 수 있는 ê°’ì€ 0-99ì´ë©° (ê¸°ë³¸ê°’ì€ 0) "
-"ê°’ì´ ë‚®ì„ìˆ˜ë¡ ì¸ë±ì‹± ì†ë„ê°€ 빨ë¼ì§"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "메모리 ì‚¬ìš©ëŸ‰ì„ ìµœì†Œí™”í•˜ì§€ë§Œ, ì¸ë±ì‹±ì´ ëŠë ¤ì§ˆ 수 있ìŒ"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "ì¸ë±ì‹± 바로 ì§ì „ì˜ ìµœì´ˆ 대기 시간 (ì´ˆ)"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"스테머(stemmer)와 정지 단어 목ë¡ì—ì„œ 사용할 언어 (ISO 639-1 2 문ìžì…‹ 코드)"
-
-#: ../src/trackerd/trackerd.c:154
-msgid "LANG"
-msgstr "LANG"
-
-#: ../src/trackerd/trackerd.c:155
-msgid "Force a re-index of all content"
-msgstr "강제로 모든 ë‚´ìš©ì˜ ì¸ë±ì‹±ì„ 다시 수행"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Make tracker errors fatal"
-msgstr "íŠ¸ëž˜ì»¤ì˜ ì˜¤ë¥˜ë¥¼ 치명ì ì¸ 오류로 만듬"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2439
-msgid "- start the tracker daemon"
-msgstr "- 트래커 ëŒ€ëª¬ì„ ì‹œìž‘í•©ë‹ˆë‹¤"
-
-#: ../src/trackerd/trackerd.c:2440 ../src/trackerd/trackerd.c:2441
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../src/trackerd/trackerd.c:2448
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"ë™ì‹œì— 여러 디렉토리를 í¬í•¨ì‹œí‚¤ê±°ë‚˜ 제외시커려면, 다ìŒê³¼ ê°™ì´ ì—¬ëŸ¬ ì˜µì…˜ì„ "
-"조합하여 사용하세요:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "트래커 찾기 ë° ì¸ë±ì‹± 서비스를 제어하고 ê°ì‹œí•©ë‹ˆë‹¤"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-msgid "Tracker Applet"
-msgstr "트래커 애플릿"
-
-#: ../src/tracker-applet/tracker-applet.c:128
-msgid "_Pause Indexing"
-msgstr "ì¸ë±ì‹± ì¼ì‹œ 정지(_P)"
-
-#: ../src/tracker-applet/tracker-applet.c:136
-msgid "_Search..."
-msgstr "찾기(_S)..."
-
-#: ../src/tracker-applet/tracker-applet.c:142
-msgid "Pre_ferences"
-msgstr "기본 설정(_F)"
-
-#: ../src/tracker-applet/tracker-applet.c:148
-msgid "S_tatistics"
-msgstr "통계(_T)"
-
-#: ../src/tracker-applet/tracker-applet.c:157
-msgid "_Quit"
-msgstr "ë내기(_Q)"
-
-#. search entry row
-#: ../src/tracker-applet/tracker-applet.c:342
-msgid "Search:"
-msgstr "찾기:"
-
-#. status row
-#: ../src/tracker-applet/tracker-applet.c:362
-msgid "Status:"
-msgstr "ìƒíƒœ:"
-
-#. File progress row
-#: ../src/tracker-applet/tracker-applet.c:382
-msgid "Progress:"
-msgstr "진행:"
-
-#: ../src/tracker-applet/tracker-applet.c:941
-msgid "Statistics"
-msgstr "통계"
-
-#: ../src/tracker-applet/tracker-applet.c:962
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">ì¸ë±ìŠ¤ 통계</span>"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1052
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "파ì¼"
-
-#: ../src/tracker-applet/tracker-applet.c:1053
-msgid "folders"
-msgstr "í´ë”"
-
-#: ../src/tracker-applet/tracker-applet.c:1055
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "ì „ìžë©”ì¼"
-
-#: ../src/tracker-applet/tracker-applet.c:1057
-msgid "mail boxes"
-msgstr "ë©”ì¼í•¨"
-
-#: ../src/tracker-applet/tracker-applet.c:1059
-msgid "Indexing in progress"
-msgstr "ì¸ë±ì‹±í•˜ëŠ” 중"
-
-#: ../src/tracker-applet/tracker-applet.c:1060
-msgid "Indexing completed"
-msgstr "ì¸ë±ì‹± 완료"
-
-#: ../src/tracker-applet/tracker-applet.c:1061
-msgid "Indexes are being merged"
-msgstr "ì¸ë±ìŠ¤ë¥¼ 통합하는 중"
-
-#: ../src/tracker-applet/tracker-applet.c:1063
-msgid "Paused by user"
-msgstr "사용ìžê°€ 중지함"
-
-#: ../src/tracker-applet/tracker-applet.c:1064
-msgid "Paused while on battery power"
-msgstr "배터리 ì „ì› ì‚¬ìš© 중 중지ë¨"
-
-#: ../src/tracker-applet/tracker-applet.c:1065
-msgid "Paused temporarily"
-msgstr "임시로 중지ë¨"
-
-#: ../src/tracker-applet/tracker-applet.c:1067
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"ì—¬ëŸ¬ë¶„ì˜ ì»´í“¨í„°ê°€ ì¸ë±ì‹±ë  준비가 ë˜ì—ˆìŠµë‹ˆë‹¤. ì´ì œ ì—¬ëŸ¬ë¶„ì˜ íŒŒì¼ê³¼ ì „ìžë©”ì¼ ë“±ì„ "
-"빠르게 찾아볼 수 있습니다"
-
-#: ../src/tracker-applet/tracker-applet.c:1068
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"ì¸ë±ì‹±ì€ 언제ë¼ë„ 중지할 수 있으며, 여기를 오른쪽 í´ë¦­í•˜ì—¬ ì¸ë±ìŠ¤ ì„¤ì •ì„ "
-"변경할 수 있습니다"
-
-#: ../src/tracker-applet/tracker-applet.c:1070
-msgid "Tracker has finished indexing your system"
-msgstr "트래커가 ì‹œìŠ¤í…œì˜ ì¸ë±ì‹±ì„ 마쳤습니다"
-
-#: ../src/tracker-applet/tracker-applet.c:1071
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " (%d시간 %d분 소요)"
-
-#: ../src/tracker-applet/tracker-applet.c:1072
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " (%d분 %d초 소요)"
-
-#: ../src/tracker-applet/tracker-applet.c:1073
-#, c-format
-msgid " in %d seconds"
-msgstr " (%d초 소요)"
-
-#: ../src/tracker-applet/tracker-applet.c:1074
-msgid "You can now perform searches by clicking here"
-msgstr "여기를 í´ë¦­í•˜ì—¬ 파ì¼ì„ 찾아볼 수 있습니다"
-
-#: ../src/tracker-applet/tracker-applet.c:1076
-msgid ""
-"Tracker is now merging indexes which can degrade system performance for "
-"serveral minutes\n"
-"\n"
-"You can pause this by right clicking here"
-msgstr ""
-"트래커가 ì¸ë±ìŠ¤ë¥¼ 통합하는 중 입니다. ì´ ìž‘ì—…ì€ ëª‡ 분 ë™ì•ˆ ì‹œìŠ¤í…œì˜ ì„±ëŠ¥ì„ "
-"떨어뜨릴 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤\n"
-"\n"
-"여기를 오른쪽 í´ë¦­í•˜ë©´ ì´ ìž‘ì—…ì„ ì¤‘ì§€í•  수 있습니다"
-
-#: ../src/tracker-applet/tracker-applet.c:1078 ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "트래커 찾기 ë° ì¸ë±ì‹± 서비스"
-
-#: ../src/tracker-applet/tracker-applet.c:1080
-msgid "Files:"
-msgstr "파ì¼:"
-
-#: ../src/tracker-applet/tracker-applet.c:1081
-msgid " Folders:"
-msgstr " í´ë”:"
-
-#: ../src/tracker-applet/tracker-applet.c:1082
-msgid " Documents:"
-msgstr " 문서:"
-
-#: ../src/tracker-applet/tracker-applet.c:1083
-msgid " Images:"
-msgstr " ì´ë¯¸ì§€:"
-
-#: ../src/tracker-applet/tracker-applet.c:1084
-msgid " Music:"
-msgstr " ìŒì•…:"
-
-#: ../src/tracker-applet/tracker-applet.c:1085
-msgid " Videos:"
-msgstr " ë™ì˜ìƒ:"
-
-#: ../src/tracker-applet/tracker-applet.c:1086
-msgid " Text:"
-msgstr " í…스트:"
-
-#: ../src/tracker-applet/tracker-applet.c:1087
-msgid " Development:"
-msgstr " 개발:"
-
-#: ../src/tracker-applet/tracker-applet.c:1088
-msgid " Other:"
-msgstr " 기타:"
-
-#: ../src/tracker-applet/tracker-applet.c:1089
-msgid "Applications:"
-msgstr "프로그램:"
-
-#: ../src/tracker-applet/tracker-applet.c:1090
-msgid "Conversations:"
-msgstr "대화:"
-
-#: ../src/tracker-applet/tracker-applet.c:1091
-msgid "Emails:"
-msgstr "ì „ìžë©”ì¼:"
-
-#: ../src/tracker-preferences/tracker-preferences.c:853
-msgid ""
-"Your system must be re-indexed for your changes to take effect. Re-index now?"
-msgstr ""
-"ë°”ë€ ë‚´ìš©ì„ ì ìš©í•˜ë ¤ë©´ ì‹œìŠ¤í…œì˜ ì¸ë±ìŠ¤ë¥¼ 갱신해야 합니다. 지금 갱신하시겠습니까?"
-
-#: ../src/tracker-preferences/tracker-preferences.c:855
-msgid ""
-"Tracker indexer needs to be restarted for your changes to take effect. "
-"Restart now?"
-msgstr ""
-"ë°”ë€ ë‚´ìš©ì„ ì ìš©í•˜ë ¤ë©´ íŠ¸ëž˜ì»¤ì˜ ì¸ë±ì‹± 프로세스를 다시 시작해야 합니다. "
-"지금 다시 시작하시겠습니까?"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "트래커 íŒŒì¼ ì¸ë±ì‹± 설정"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "찾기와 ì¸ë±ì‹±"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>가져올 디렉토리</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>무시할 íŒŒì¼ íŒ¨í„´</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>무시할 경로</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>ì¸ë±ìŠ¤ 통합</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>ì¸ë±ì‹± 제한 (íŒŒì¼ ë‹¹)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>ì¸ë±ì‹± 옵션</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>ì¸ë±ì‹±</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>ì „ì› ê´€ë¦¬</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>ìžì› 사용</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>시작</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>스테ë°(Stemming)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>제어</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>ê°ì‹œí•  디렉토리</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "ì¸ë±ì‹±ì„ 수행할 추가ì ì¸ mbox 형ì‹ì˜ ë©”ì¼í•¨:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "ì¸ë±ì‹±ê³¼ ê°ì‹œë¥¼ 수행할 추가ì ì¸ 경로:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "시작 ì‹œ ì¸ë±ì‹±ì„ 수행할 추가ì ì¸ 경로 (하지만 변경 ì‚¬í•­ì„ ê°ì‹œí•˜ì§€ ì•ŠìŒ):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"ë´ë§ˆí¬ì–´\n"
-"네ëœëž€ë“œì–´\n"
-"ì˜ì–´\n"
-"핀란드어\n"
-"프랑스어\n"
-"ë…ì¼ì–´\n"
-"ì´íƒœë¦¬ì–´\n"
-"노르웨ì´ì–´\n"
-"í¬ë¥´íˆ¬ê°ˆì–´\n"
-"러시아어\n"
-"스페ì¸ì–´\n"
-"스웨ë´ì–´"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "배터리 사용 ì‹œ 모든 ì¸ë±ì‹±ì„ 하지 ì•ŠìŒ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "배터리 사용 ì‹œ 초기 ì¸ë±ìŠ¤ ê°±ì‹ ì„ í•˜ì§€ ì•ŠìŒ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "ì „ìžë©”ì¼"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "ì—볼루션 ì „ìžë©”ì¼ ì¸ë±ì‹± 사용(_E)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "KMail ì „ìžë©”ì¼ ì¸ë±ì‹± 사용(_K)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Thunderbird ì „ìžë©”ì¼ ì¸ë±ì‹± 사용(_T)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "ê°ì‹œ 기능 사용(_W)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "ì¸ë±ì‹± 기능 사용(_N)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "빠름"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "ì¸ë±ì‹± ì‹œ 무시할 íŒŒì¼ íŒ¨í„´:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "ì¼ë°˜"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "미리보기 ìƒì„±(_B)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "무시할 파ì¼"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "ì¸ë±ì‹± 지연(_D): "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "íŒŒì¼ ë‚´ìš© ì¸ë±ì‹±(_F)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "ë§ˆìš´íŠ¸ëœ ë””ë ‰í† ë¦¬ ì¸ë±ì‹±(_M)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "홈 디렉토리를 ì¸ë±ì‹± ë° ê°ì‹œ(_D)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "ì¸ë±ì‹± ì†ë„:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "ì¸ë±ì‹±ì„ 수행할 í…ìŠ¤íŠ¸ì˜ ìµœëŒ€ í¬ê¸°(_A):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "ì¸ë±ì‹±ì„ 수행할 (ì¤‘ë³µì„ ì œì™¸í•œ) ë‹¨ì–´ì˜ ìµœëŒ€ 개수(_W):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "ì¸ë±ì‹± ì‹œ 무시할 ê²½ë¡œì˜ ë£¨íŠ¸:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "빠른 ì¸ë±ìŠ¤ 통합 수행 (시스템 ì„±ëŠ¥ì— ì˜í–¥ì„ 줄 수 있ìŒ)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "성능"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "ëŠë¦¼"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "트래커 기본 설정"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "언어(_L):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "메모리 사용량 최소화 (ì¸ë±ì‹±ì´ ëŠë ¤ì§)(_M)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additonal memory for faster indexing"
-msgstr "빠른 ì¸ë±ì‹±ì„ 위해 추가ì ì¸ 메모리 사용(_U)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "ì´ˆ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "지정한 서비스ì—ì„œ 찾기"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "모든 파ì¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "í´ë”"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "문서"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1222
-msgid "Text"
-msgstr "í…스트"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "개발"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "채팅 로그"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "프로그램"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:206
-msgid "_Open"
-msgstr "열기(_O)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "O_pen Folder"
-msgstr "í´ë” 열기(_P)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "Mo_ve to Trash"
-msgstr "íœ´ì§€í†µì— ë²„ë¦¬ê¸°(_V)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "_Save Results As..."
-msgstr "결과를 다른 ì´ë¦„으로 저장(_S)..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:253
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "\"%s\"ì— ëŒ€í•œ 문ìžì…‹ 변환 실패"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:280
-msgid "The following error has occurred :"
-msgstr "다ìŒê³¼ ê°™ì€ ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤ :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:284
-msgid "Error"
-msgstr "오류"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:659
-msgid "Did you mean"
-msgstr "다ìŒì„ 찾으셨습니까?"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Your search returned no results."
-msgstr "찾기 결과가 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:705
-msgid "Tracker Search Tool-"
-msgstr "트래커 찾기 ë„구-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:866
-#: ../src/tracker-search-tool/tracker-search-tool.c:2252
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "트래커 찾기 ë„구"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1056
-msgid "Search _results: "
-msgstr "찾기 결과(_R): "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1062
-msgid "no search performed"
-msgstr "찾기를 수행하지 ì•ŠìŒ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1116
-#: ../src/tracker-search-tool/tracker-search-tool.c:1276
-msgid "List View"
-msgstr "ëª©ë¡ ë³´ê¸°"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1188
-msgid "Icon"
-msgstr "ì•„ì´ì½˜"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1200
-msgid "Name"
-msgstr "ì´ë¦„"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1294
-msgid "_Categories"
-msgstr "분류(_C)"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1574
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d (전체 %d 항목)"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1577
-#, c-format
-msgid "%d item"
-msgstr "%d 항목"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1625
-#: ../src/tracker-search-tool/tracker-search-tool.c:1820
-msgid "Could not connect to search service as it may be busy"
-msgstr "찾기 ì„œë¹„ìŠ¤ì— ì—°ê²°í•  수 없습니다. 서비스가 ì´ìš© ì¤‘ì¸ ê²ƒ 같습니다"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2020
-msgid "_Search:"
-msgstr "찾기(_S):"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2034
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "트래커가 ì•„ì§ ì¸ë±ì‹±ì„ 수행 중ì´ë¯€ë¡œ 모든 찾기 결과를 ì´ìš©í•  수 없습니다"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2047
-#: ../src/tracker-search-tool/tracker-search-tool.c:2048
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "공백으로 구분한 여러 단어를 입력하십시오."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2048
-msgid "search_entry"
-msgstr "찾기 항목(_E)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2094
-msgid "Click to perform a search."
-msgstr "찾기를 시작하려면 í´ë¦­í•˜ì„¸ìš”."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "ë„ì›€ë§ ë¬¸ì„œë¥¼ ì—´ 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgstr "ì •ë§ë¡œ %d 문서를 여시겠습니까?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgstr "ì´ê²ƒì€ %dê°œì˜ ì°½ì„ ìƒˆë¡œ ì—´ 것입니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "\"%s\" 문서를 열 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "\"%s\" í´ë”를 ì—´ 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "노틸러스 íŒŒì¼ ê´€ë¦¬ìžê°€ 실행ë˜ì§€ 않았습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  수 없습니다"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "문서가 존재하지 않습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "해당 문서를 ì—´ì–´ë³¼ 수 있는 í”„ë¡œê·¸ëž¨ì´ ì„¤ì¹˜ë˜ì§€ 않았습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgstr "ì •ë§ë¡œ %d í´ë”를 여시겠습니까?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "\"%s\"ì„(를) íœ´ì§€í†µì— ë²„ë¦´ 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "\"%s\"ì„(를) 완전히 지우시겠습니까?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "íœ´ì§€í†µì„ ì´ìš©í•  수 없습니다. \"%s\"ì„(를) íœ´ì§€í†µì— ë²„ë¦´ 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "\"%s\"ì„(를) 지울 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "\"%s\"ì„(를) ì´ë™í•˜ì§€ 못했습니다: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "\"%s\"ì„(를) 지우지 못했습니다: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "ì´ ì „ìžë©”ì¼ì„ 보기 위해 활성화"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "ì°¾ì€ ê²°ê³¼ë¥¼ 다른 ì´ë¦„으로 저장..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "문서를 저장할 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "문서 ì´ë¦„ì„ ì„ íƒí•˜ì§€ 않았습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "\"%s\" 문서를 \"%s\"(으)로 저장할 수 없습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "\"%s\" 문서가 ì´ë¯¸ 존재합니다. 파ì¼ì„ 바꾸시겠습니까?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "기존 파ì¼ì„ 바꾸면, ê·¸ ë‚´ìš©ì´ ëª¨ë‘ ë®ì–´ì“°ì—¬ì§ˆ 것입니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "바꾸기(_R)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "ì„ íƒí•œ ë¬¸ì„œì˜ ì´ë¦„ì€ í´ë”입니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "해당 ë¬¸ì„œì— ëŒ€í•œ 쓰기 ê¶Œí•œì„ ê°€ì§€ê³  있지 않습니다."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"트래커를 통해 ì´ë¦„ì´ë‚˜ 내용으로 컴퓨터 ë‚´ì˜ íŒŒì¼ê³¼ í´ë”를 찾아봅니다"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf 오류:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "오늘 %p %-I:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "어제 %p %-I:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%Y %A, %B %-d %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "ë§í¬ (깨ì§)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "%s(으)ë¡œì˜ ë§í¬"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "트래커"
-
diff --git a/po/lt.po b/po/lt.po
deleted file mode 100644
index 5df7cb027..000000000
--- a/po/lt.po
+++ /dev/null
@@ -1,1494 +0,0 @@
-# translation of lt.po to Lithuanian
-# Lithuanian translation of Tracker.
-# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the tracker package.
-#
-# Žygimantas BeruÄka <zygis@gnome.org>, 2007.
-# Gintautas Miliauskas <gintas@akl.lt>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-08 20:49+0200\n"
-"PO-Revision-Date: 2008-03-08 20:49+0200\n"
-"Last-Translator: Žygimantas BeruÄka <zygis@gnome.org>\n"
-"Language-Team: Lithuanian <gnome-lt@lists.akl.lt>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Paleisti %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Žiūrėti %s pokalbį\n"
-"%s %s\n"
-"iš %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "El. laiškas nuo %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:59
-#: ../python/deskbar-handler/tracker-module.py:121
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Klausytis %s muzikos\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:64
-#: ../python/deskbar-handler/tracker-module.py:127
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Peržiūrėti dokumentą %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:69
-#: ../python/deskbar-handler/tracker-handler.py:86
-#: ../python/deskbar-handler/tracker-handler.py:123
-#: ../python/deskbar-handler/tracker-module.py:132
-#: ../python/deskbar-handler/tracker-module.py:154
-#: ../python/deskbar-handler/tracker-module.py:206
-#: ../python/deskbar-handler/tracker-module.py:242
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Atverti failÄ… %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:74
-#: ../python/deskbar-handler/tracker-module.py:137
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Peržiūrėti paveikslėlį %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:80
-#: ../python/deskbar-handler/tracker-module.py:143
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Žiūrėti video %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:91
-#: ../python/deskbar-handler/tracker-module.py:149
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Atverti aplankÄ… %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:209
-#: ../python/deskbar-handler/tracker-module.py:350
-msgid "with"
-msgstr "su"
-
-#: ../python/deskbar-handler/tracker-handler.py:217
-#: ../python/deskbar-handler/tracker-module.py:358
-msgid "in channel"
-msgstr "kanale"
-
-#: ../python/deskbar-handler/tracker-handler.py:384
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Ieškoti visuose savo dokumentuose <b>rašymo metu</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:388
-#: ../python/deskbar-handler/tracker-module.py:294
-msgid "Development Files"
-msgstr "Programavimo failai"
-
-#: ../python/deskbar-handler/tracker-handler.py:391
-#: ../python/deskbar-handler/tracker-module.py:297
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Muzika"
-
-#: ../python/deskbar-handler/tracker-handler.py:394
-#: ../python/deskbar-handler/tracker-module.py:300
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "PaveikslÄ—liai"
-
-#: ../python/deskbar-handler/tracker-handler.py:397
-#: ../python/deskbar-handler/tracker-module.py:303
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Video"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:159
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Ieškoti %s su paieškos įrankiu Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Ieškoti visuose dokumentuose su paieškos įrankiu Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker paieška"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Ieškokite paieškos įrankiu Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:289
-msgid "Tracker Live Search"
-msgstr "Realaus laiko paieška su Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Search with Tracker, as you type"
-msgstr "Ieškokite su Tracker rašymo metu"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Kelias: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Pakeista: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Dydis: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Žiūrėta: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "SiuntÄ—jas: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Komentaras: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategorijos: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "TrukmÄ—: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Žanras: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitų dažnis: <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Metai: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodekas: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " nufotografuota su <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Matmenys: <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Fotografavimo data: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientacija: <b>%s></b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "BlykstÄ—: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Židinio nuotolis: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "IÅ¡laikymo laikas: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autorius: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitų dažnis: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Užkoduota: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Kadrų dažnis: <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Tema: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Puslapių: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Žodžių: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Sukurta: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Komentarai: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1031
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1054
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1076
-msgid "Unknown"
-msgstr "Nežinoma"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Įveskite norimas pridėti žymas, atskirtas kableliais"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Žymos:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "I_eškoti žymos"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Pašalinti žymą"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Apriboti rodomų rezultatų skaiÄių iki N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "IeÅ¡koti konkreÄios tarnybos"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "TARNYBA"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Rodyti išsamesnius rezultatus su tarnyba ir mime tipu"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERMINAS... – ieškoti failuose kokių nors terminų"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Nurodžius daugiau nei vieną terminą, bus parodyti elementai, turintys VISUS "
-"nurodytus terminus (terminą1 IR terminą2 – loginė konjunkcija)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Atpažintų tarnybų sąrašas:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Daugiau informacijos rasite „%s --help“."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: nenurodyti paieškos terminai"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: nėra ryšio su tracker posisteme"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Prieš paleisdami šią komandą įsitikinkite, kad paleista „trackerd“."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Tarnyba neatpažinta, ieškoma Kituose failuose...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: vidinÄ— tracker klaida: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Užklausos atitinkanÄių rezultatų nerasta"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - rodyti kiekvienos tarnybos indeksuojamų failų skaiÄių"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "gaunama indeksavimo statistika"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Pridėti failui specifinę žymą"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ŽYMA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Pašalinti nurodytą failo žymą"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Pašalinti visas failo žymas"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Parodyti visas nurodytas žymas"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "IeÅ¡koti failų, turinÄių nurodytÄ… žymÄ…"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FAILAS..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FAILAS... – keisti failų žymas"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"NorÄ—dami pridÄ—ti, paÅ¡alinti arba tuo paÄiu metu ieÅ¡koti keletos žymų, galite "
-"sunjungti keletÄ… parinkÄių, pvz.:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: netinkami argumentai"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: failas %s nerastas"
-
-#: ../src/trackerd/trackerd.c:150
-msgid "Directory to exclude from indexing"
-msgstr "Neindeksuojamas aplankas"
-
-#: ../src/trackerd/trackerd.c:150 ../src/trackerd/trackerd.c:151
-#: ../src/trackerd/trackerd.c:152
-msgid "/PATH/DIR"
-msgstr "/KELIAS/APLANKAS"
-
-#: ../src/trackerd/trackerd.c:151
-msgid "Directory to include in indexing"
-msgstr "Indeksuojamas aplankas"
-
-#: ../src/trackerd/trackerd.c:152
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Tik paleidimo metu indeksuotinas aplankas"
-
-#: ../src/trackerd/trackerd.c:153
-msgid "Disable any indexing or watching taking place"
-msgstr "Išjungti bet kokį indeksavimą arba stebėjimą"
-
-#: ../src/trackerd/trackerd.c:154
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Reikšmė nurodanti žurnalų išsamumą. Galimos reikšmės yra 0 (rodo/seka tik "
-"klaidas), 1 (minimalus), 2 (išsamus) ir 3 (derinimo)"
-
-#: ../src/trackerd/trackerd.c:154 ../src/trackerd/trackerd.c:155
-msgid "VALUE"
-msgstr "REIKÅ MÄ–"
-
-#: ../src/trackerd/trackerd.c:155
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"ReikÅ¡mÄ—, naudojama indeksavimo greiÄio ribojimui. ReikÅ¡mÄ— turi bÅ«ti tarp 0 "
-"ir 99 (numatytoji – 0); mažesnės reikšmės reiškia greitesnį indeksavimą"
-
-#: ../src/trackerd/trackerd.c:156
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Sumažina atminties naudojimÄ…, taÄiau gali sulÄ—tinti indeksavimÄ…"
-
-#: ../src/trackerd/trackerd.c:157
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Pradinis laukimo laikas sekundėmis prieš indeksavimą"
-
-#: ../src/trackerd/trackerd.c:158
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Kalba, kurią naudoti šaknų analizatoriui, ir sustojimo žodžių sąrašas (ISO "
-"639-1 dviejų simbolių kodas)"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "LANG"
-msgstr "KALBA"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Force a re-index of all content"
-msgstr "Priverstinis viso turinio perindeksavimas"
-
-#: ../src/trackerd/trackerd.c:160
-msgid "Make tracker errors fatal"
-msgstr "Padaryti tracker klaidas kritinÄ—mis"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2434
-msgid "- start the tracker daemon"
-msgstr "- paleisti tracker posistemÄ™"
-
-#: ../src/trackerd/trackerd.c:2435 ../src/trackerd/trackerd.c:2436
-msgid "DIRECTORY"
-msgstr "APLANKAS"
-
-#: ../src/trackerd/trackerd.c:2443
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Norėdami iš karto įtraukti arba išskirti keletą aplankų, galite sujungti "
-"keltÄ… parinkÄių, pvz.:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Valdyti ir stebėti paieškos ir indeksavimo tarnybą Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:48
-msgid "Tracker Applet"
-msgstr "Tracker įtaisas"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:240
-msgid "Tracker : "
-msgstr "Tracker: "
-
-#: ../src/tracker-applet/tracker-applet.c:245
-msgid "Idle"
-msgstr "nedirba"
-
-#: ../src/tracker-applet/tracker-applet.c:249
-msgid "Indexing"
-msgstr "indeksuoja"
-
-#: ../src/tracker-applet/tracker-applet.c:253
-msgid "Merging"
-msgstr "sulieja"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-msgid " (paused by user)"
-msgstr " (sustabdyta naudotojo)"
-
-#: ../src/tracker-applet/tracker-applet.c:265
-#: ../src/tracker-applet/tracker-applet.c:276
-msgid " (paused by system)"
-msgstr " (sustabdyta sistemos)"
-
-#: ../src/tracker-applet/tracker-applet.c:280
-msgid " (paused by battery)"
-msgstr " (sustabdyta dÄ—l baterijos)"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "folders"
-msgstr "aplankai"
-
-#: ../src/tracker-applet/tracker-applet.c:295
-msgid "mailboxes"
-msgstr "pašto dėžutės"
-
-#: ../src/tracker-applet/tracker-applet.c:741
-msgid "Re-index your system?"
-msgstr "Perindeksuoti sistemÄ…?"
-
-#: ../src/tracker-applet/tracker-applet.c:742
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indeksavimas gali ilgai užtrukti. Ar tikrai norite perindeksuoti?"
-
-#: ../src/tracker-applet/tracker-applet.c:775
-msgid "_Pause All Indexing"
-msgstr "Sustabdyti _indeksavimÄ…"
-
-#: ../src/tracker-applet/tracker-applet.c:784
-msgid "_Search"
-msgstr "_Paieška"
-
-#: ../src/tracker-applet/tracker-applet.c:791
-msgid "_Re-index"
-msgstr "Per_indeksuoti"
-
-#: ../src/tracker-applet/tracker-applet.c:797
-msgid "_Preferences"
-msgstr "_Nustatymai"
-
-#: ../src/tracker-applet/tracker-applet.c:803
-msgid "_Indexer Preferences"
-msgstr "_Indeksavimo nustatymai"
-
-#: ../src/tracker-applet/tracker-applet.c:809
-msgid "S_tatistics"
-msgstr "_Statistika"
-
-#: ../src/tracker-applet/tracker-applet.c:815
-msgid "_About"
-msgstr "_Apie"
-
-#: ../src/tracker-applet/tracker-applet.c:824
-msgid "_Quit"
-msgstr "IÅ¡ei_ti"
-
-#: ../src/tracker-applet/tracker-applet.c:1415
-msgid "Statistics"
-msgstr "Statistika"
-
-#: ../src/tracker-applet/tracker-applet.c:1436
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Indekso statistika</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1550
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker yra laisva programinė įranga; galite ją platinti ir/armodifikuoti "
-"GNU bendrosios viešosios licencijos sąlygomis, kuriospaskelbtos Laisvosios "
-"programinės įrangos fondo; 2-osios arba(Jūsų pasirinkimu) bet kurios "
-"vÄ—lesnÄ—s licencijos versijos sÄ…lygomis."
-
-#: ../src/tracker-applet/tracker-applet.c:1554
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker yra platinama tikintis, kad jis bus naudingaa, betBE JOKIŲ "
-"GARANTIJŲ; netgi be numanomų PARDAVIMO arba TINKAMUMOTAM TIKRAM TIKSLUI "
-"garantijų. Dėl išsamesnės informacijosžiūrėkite GNU bendrąją viešąją "
-"licencijÄ…."
-
-#: ../src/tracker-applet/tracker-applet.c:1558
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Jūs turėjote gauti GNU bendrosios viešosios licencijos kopiją kartu "
-"suTracker; jeigu negavote, rašykite Free Software Foundation, Inc., 59 "
-"Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1573
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker yra įrankis, skirtas surinkti informacijai ir metaduomenims apie "
-"asmeninius duomenis, kad būtų galima juose paprastai ir greitai vykdyti "
-"paiešką"
-
-#: ../src/tracker-applet/tracker-applet.c:1574
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Autorinės teisės © 2005-2008 Tracker autoriai"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1584
-msgid "translator-credits"
-msgstr ""
-"Žygimantas BeruÄka <zygis@gnome.org>\n"
-"Gintautas Miliauskas <gintas@akl.lt>"
-
-#: ../src/tracker-applet/tracker-applet.c:1587
-msgid "Tracker Web Site"
-msgstr "Tracker svetainÄ—"
-
-#: ../src/tracker-applet/tracker-applet.c:1914 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#. set translatable strings here
-#: ../src/tracker-applet/tracker-applet.c:1919
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Sistema tuoj bus suindeksuota, kad galėtumėte atlikti greitą failų ir el. "
-"laiškų paiešką"
-
-#: ../src/tracker-applet/tracker-applet.c:1920
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Galite bet kada sustabdyti indeksavimÄ… ir pakeisti indeksavimo nustatymus "
-"spustelÄ—jÄ™ deÅ¡inįjį mygtukÄ… Äia"
-
-#: ../src/tracker-applet/tracker-applet.c:1922
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker baigÄ— indeksuoti sistemÄ…"
-
-#: ../src/tracker-applet/tracker-applet.c:1923
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " per %d valandų ir %d minuÄių"
-
-#: ../src/tracker-applet/tracker-applet.c:1924
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " per %d minuÄių ir %d sekundžių"
-
-#: ../src/tracker-applet/tracker-applet.c:1925
-#, c-format
-msgid " in %d seconds"
-msgstr " per %d sekundžių"
-
-#: ../src/tracker-applet/tracker-applet.c:1926
-msgid "You can now perform searches by clicking here"
-msgstr "Dabar galite vykdyti paieÅ¡kÄ… spustelÄ—jÄ™ Äia"
-
-#: ../src/tracker-applet/tracker-applet.c:1929
-msgid "Files:"
-msgstr "Failai:"
-
-#: ../src/tracker-applet/tracker-applet.c:1930
-msgid " Folders:"
-msgstr " Aplankai:"
-
-#: ../src/tracker-applet/tracker-applet.c:1931
-msgid " Documents:"
-msgstr " Dokumentai:"
-
-#: ../src/tracker-applet/tracker-applet.c:1932
-msgid " Images:"
-msgstr " PaveikslÄ—liai:"
-
-#: ../src/tracker-applet/tracker-applet.c:1933
-msgid " Music:"
-msgstr " Muzika:"
-
-#: ../src/tracker-applet/tracker-applet.c:1934
-msgid " Videos:"
-msgstr " Video:"
-
-#: ../src/tracker-applet/tracker-applet.c:1935
-msgid " Text:"
-msgstr " Tekstas:"
-
-#: ../src/tracker-applet/tracker-applet.c:1936
-msgid " Development:"
-msgstr " Programavimas:"
-
-#: ../src/tracker-applet/tracker-applet.c:1937
-msgid " Other:"
-msgstr " Kita:"
-
-#: ../src/tracker-applet/tracker-applet.c:1938
-msgid "Applications:"
-msgstr "Programos:"
-
-#: ../src/tracker-applet/tracker-applet.c:1939
-msgid "Conversations:"
-msgstr "Pokalbiai:"
-
-#: ../src/tracker-applet/tracker-applet.c:1940
-msgid "Emails:"
-msgstr "El. laiškai:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animacija</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Adaptyvus sustabdymas</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Matomumas</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animuoti _piktogramÄ… indeksavimo metu"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Įtaiso nustatymai"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"A_utomatiškai sustabdyti, jei indeksavimas gali trukdyti kitoms naudojamoms "
-"programoms"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "_Automatiškai sustabdyti indeksavimą, kai kompiuteris naudojamas"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Paslėpti piktogramą (išskyrus kai naudotojui rodomos žinutės)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_IÅ¡jungti"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:10
-msgid "gtk-close"
-msgstr "Užverti"
-
-#: ../src/tracker-preferences/tracker-preferences.c:808
-msgid "Data must be reindexed"
-msgstr "Duomenys turi būti suindeksuoti iš naujo"
-
-#: ../src/tracker-preferences/tracker-preferences.c:809
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Kad pakeitimai įsigaliotų, Tracker turi perindeksuoti failus. Paspauskite "
-"mygtuką „Perindeksuoti“, jei norite tai atlikti dabar, kitaip šis veiksmas "
-"bus atliktas kitÄ… kartÄ… paleidus Tracker tarnybÄ…."
-
-#: ../src/tracker-preferences/tracker-preferences.c:816
-msgid "_Reindex"
-msgstr "_Perindeksuoti"
-
-#: ../src/tracker-preferences/tracker-preferences.c:819
-msgid "Tracker daemon must be restarted"
-msgstr "Reikia įkelti iš naujo Tracker tarnybą"
-
-#: ../src/tracker-preferences/tracker-preferences.c:821
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Kad pakeitimai įsigaliotų, reikia iš naujo paleisti Tracker tarnybą. "
-"Paspauskite mygtuką „Įkelti iš naujo“, jei norite tai atlikti dabar."
-
-#: ../src/tracker-preferences/tracker-preferences.c:826
-msgid "_Restart"
-msgstr "Įkelti _iš naujo"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Konfigūruoti failų indeksavimą su Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Paieška ir indeksavimas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Peržiūrimi aplankai</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Nepaisomi failų šablonai</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Nepaisomi keliai</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Indeksų suliejimas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indeksavimo ribos (failui)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indeksavimo parinktys</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indeksavimas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Energijos valdymas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Išteklių naudojimas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Paleidimas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Žodžių šaknų analizė</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>GreiÄio ribojimas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Stebimi aplankai</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Papildomos indeksuojamos mbox pašto dėžutės:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Papildomi indeksuojami ir stebimi keliai:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Papildomi paleidimo pradžioje indeksuojami keliai (bet nestebimi "
-"atnaujinimai):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"danų\n"
-"olandų\n"
-"anglų\n"
-"suomių\n"
-"prancūzų\n"
-"vokieÄių\n"
-"italų\n"
-"norvegų\n"
-"portugalų\n"
-"rusų\n"
-"ispanų\n"
-"švedų"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "Išjungti bet kokį indeksavimą, kai dirbama iš baterijos"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "Išjungti pirminę indekso peržiūrą, kai dirbama iš baterijos"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "El. paštas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "Įjungti _Evolution el. laiškų indeksavimą"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "Įjungti _KMail el. laiškų indeksavimą"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Thunderbird email indexing"
-msgstr "Įjungti _Thunderbird el. laiškų indeksavimą"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _watching"
-msgstr "Įjungti _stebėjimą"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable i_ndexing"
-msgstr "Įjungti _indeksavimą"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Faster"
-msgstr "GreiÄiau"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "File patterns to ignore during indexing:"
-msgstr "Indeksuojant nepaisomų failų šablonai:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Files"
-msgstr "Failai"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "General"
-msgstr "Bendra"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Generate thum_bnails"
-msgstr "Kurti _miniatiūras"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Ignored Files"
-msgstr "Nepaisomi failai"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Index _delay: "
-msgstr "Indeksavimo _delsa:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _file contents"
-msgstr "Indeksuoti _failų turinį"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _mounted directories"
-msgstr "Indeksuoti _prijungtus aplankus"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index and watch my home _directory"
-msgstr "Indeksuoti ir stebėti mano namų _aplanką"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Indexing speed:"
-msgstr "Indeksavimo greitis:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Maximum _amount of text to index:"
-msgstr "Didžiausias galimas indeksuotino teksto _dydis:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum number of unique _words to index:"
-msgstr "Didžiausias galimas indeksuotinų unikalių ž_odžių skaiÄius:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Path roots to be ignored during indexing:"
-msgstr "Indeksuojant nepaisomų kelių šakniniai aplankai:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Atlikti greitus indeksų suliejimus (gali trukdyti sistemos darbui)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Performance"
-msgstr "Našumas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Slower"
-msgstr "LÄ—Äiau"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Tracker Preferences"
-msgstr "Tracker nustatymai"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "_Language:"
-msgstr "_Kalba:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Sumažinti atminties naudojimą (lėtesnis indeksavimas)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Use additional memory for faster indexing"
-msgstr "_Naudoti daugiau atminties, kad bÅ«tų greiÄiau indeksuojama"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "seconds"
-msgstr "sek."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "IeÅ¡koti iÅ¡ konkreÄios tarnybos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "El. laiškai"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Visi failai"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Aplankai"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumentai"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1229
-msgid "Text"
-msgstr "Tekstas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Programavimas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Pokalbių žurnalai"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Programos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "ŽiniatiklioIstorija"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Atverti"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "At_verti aplankÄ…"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Per_kelti į šiukšlinę"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "IÅ¡_saugoti rezultatus kaip..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "„%s“ simbolių koduotės konvertavimas nesėkmingas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occurred :"
-msgstr "Įvyko ši klaida:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:285
-msgid "Error"
-msgstr "Klaida"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:660
-msgid "Did you mean"
-msgstr "Ar turÄ—jote omenyje"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:691
-msgid "Your search returned no results."
-msgstr "Paieška negrąžino jokių rezultatų."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:706
-msgid "Tracker Search Tool-"
-msgstr "Paieškos įrankis Tracker –"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:867
-#: ../src/tracker-search-tool/tracker-search-tool.c:2261
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Paieškos įrankis Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1057
-msgid "Search _results: "
-msgstr "Paieškos _rezultatai: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1063
-msgid "no search performed"
-msgstr "paieška neatlika"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1123
-#: ../src/tracker-search-tool/tracker-search-tool.c:1283
-msgid "List View"
-msgstr "Sąrašo rodinys"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1195
-msgid "Icon"
-msgstr "Piktograma"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1207
-msgid "Name"
-msgstr "Pavadinimas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1301
-msgid "_Categories"
-msgstr "_Kategorijos"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1581
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d iš %d atitikmenų"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1584
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d atitikmuo"
-msgstr[1] "%d atitikmenys"
-msgstr[2] "%d atitikmenų"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1632
-#: ../src/tracker-search-tool/tracker-search-tool.c:1827
-msgid "Could not connect to search service as it may be busy"
-msgstr "Nepavyko prisijungti prie paieškos tarnybos, ji gali būti užimta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2028
-msgid "_Search:"
-msgstr "_Paieška:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2042
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker vis dar indeksuoja, todėl ne visi paieškos rezultatai prieinami"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2056
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Įveskite ieškomą frazę su tarpais tarp žodžių."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2057
-msgid "search_entry"
-msgstr "paieškos_įrašas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2103
-msgid "Click to perform a search."
-msgstr "Spustelėkite norėdami įvykdyti paiešką."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Nepavyko atverti žinyno dokumento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Ar tikrai norite atverti %d dokumentÄ…?"
-msgstr[1] "Ar tikrai norite atverti %d dokumentus?"
-msgstr[2] "Ar tikrai norite atverti %d dokumentų?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:687
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Tai atvers %d atskirÄ… langÄ…."
-msgstr[1] "Tai atvers %d atskirus langus."
-msgstr[2] "Tai atvers %d atskirų langų."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Nepavyko atverti dokumento „%s“."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Nepavyko atverti aplanko „%s“."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Nautilus failų naršyklė nepaleista."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:626
-msgid "Application could not be opened"
-msgstr "Nepavyko atverti programos"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:641
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:961
-msgid "The document does not exist."
-msgstr "Å io dokumento nÄ—ra."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:657
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Neįdiegta šį dokumentą gebandti parodyti peržiūros programa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:682
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Ar tikrai norite atverti %d aplankÄ…?"
-msgstr[1] "Ar tikrai norite atverti %d aplankus?"
-msgstr[2] "Ar tikrai norite atverti %d aplankų?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:786
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Nepavyko perkelti „%s“ į šiukšlinę."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:817
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Ar tikrai norite nesugrąžinamai ištrinti „%s“?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:820
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Šiukšlinė neprieinama. Nepavyko perkelti „%s“ į šiukšlinę."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:859
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Nepavyko ištrinti „%s“."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:983
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Perkelti „%s“ nepavyko: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1017
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Ištrinti „%s“ nepavyko: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1303
-msgid "Activate to view this email"
-msgstr "Aktyvinkite norėdami peržiūrėti šį el. laišką"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1479
-msgid "Save Search Results As..."
-msgstr "Išsaugoti paieškos rezultatus kaip..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1514
-msgid "Could not save document."
-msgstr "Nepavyko išsaugoti dokumento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1515
-msgid "You did not select a document name."
-msgstr "Nepasirinkote dokumento pavadinimo."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1545
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Nepavyko išsaugoti dokumento „%s“ į „%s“."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1579
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokuments „%s“ jau yra. Ar norite jį perrašyti?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1583
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Jeigu perrašysite esamą failą, jo turinys bus perrašytas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1598
-msgid "_Replace"
-msgstr "_Perrašyti"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1648
-msgid "The document name you selected is a folder."
-msgstr "Pasirinktas dokumento pavadinimas yra aplankas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1697
-msgid "You may not have write permissions to the document."
-msgstr "Gali būti, kad neturite dokumento rašymo teisių."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Naudodamiesi Tracker rasite kompiuteryje dokumentus ir aplankus pagal "
-"pavadinimą arba turinį"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf klaida:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "Å¡iandien %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "vakar %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%Y %B %-d %A %-H:%M:%S "
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "nuoroda (sugadinta)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "nuoroda į %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Paieškos ir indeksavimo tarnyba Tracker"
diff --git a/po/mk.po b/po/mk.po
deleted file mode 100644
index ee1413d47..000000000
--- a/po/mk.po
+++ /dev/null
@@ -1,1046 +0,0 @@
-# translation of tracker.HEAD.po to Macedonian
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Jovan Naumovski <jovan@lugola.net>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 04:02+0200\n"
-"PO-Revision-Date: 2007-04-06 14:03+0200\n"
-"Last-Translator: Jovan Naumovski <jovan@lugola.net>\n"
-"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural= n==1 || n%10==1 ? 0 : 1\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Патека : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Изменето : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Големина : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "ПриÑтапено : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Миме : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, fuzzy, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Жанр : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, fuzzy, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Патека : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, fuzzy, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Коментари : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, fuzzy, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Креирано : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Времетраење : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Жанр : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Битрејт : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Година : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Кодек : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " земено Ñо <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Димензии : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Датум на Ñликање : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Ориентација : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Блиц : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Должина на Ñ„Ð¾ÐºÑƒÑ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Време на екÑпозитура : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Ðвтор : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Битрејт : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Енкодирано во : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Framerate : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "ÐаÑлов : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Број на Ñтраници : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Број на зборови : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Креирано : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Коментари : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr "Ðепознато"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:251
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-"Овде напишете ги етикетите кои што Ñакате да ги додадете, разделени Ñо "
-"запирки"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:361
-msgid "Tags :"
-msgstr "Етикети:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:383
-msgid "_Search For Tag"
-msgstr "_Барај етикета"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:395
-msgid "_Remove Tag"
-msgstr "_ОтÑтрани етикета"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Ограничи го бројот на прикажување на резултати на N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Барај одреден ÑервиÑ"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "СЕРВИС"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Прикажи подетални резултати Ñо ÑервиÑот и миме типовите"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - пребарувајте датотеки за одредени термини"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Одредувањето на повеќе од еден термин ќе прикаже предмети кои ги Ñодржат "
-"СИТЕ одредени термини (термин1 И термин2 - логичка конјункција)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "ЛиÑтата од препознати ÑервиÑи е:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Пробајте \"%s --help\" за повеќе информации."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: недоÑтаÑуваат термини за пребарување"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: нема врÑка Ñо демонот на tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"ОÑигурајте Ñе дека „tracker“ Ñе извршува пред да ја пуштите оваа команда."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "СервиÑот не е препознат, барам во другите датотеки...\n"
-
-#: ../src/libtracker/tracker-search.c:164 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: внатрешна грешка во tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Ðе Ñе пронајдени резултати кои Ñе Ñовпаѓаат Ñо Вашето барање"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - прикажи го бројот на индекÑирани датотеки за Ñекој ÑервиÑ"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "земи ги ÑтатиÑтиките на индекÑирањето"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Додај одредена етикета на некоја датотека"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ЕТИКЕТÐ"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "ОтÑтрани одредена етикета од некоја датотека"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "ОтÑтрани ги Ñите етикети од некоја датотека"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "ИзлиÑтај ги Ñите дефинирани етикети"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Барај датотеки Ñо одредена етикета"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ДÐТОТЕКÐ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ДÐТОТЕКÐ... - манипулирајте Ñо етикетите на датотеките"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"За да отÑтранувате, додавате и пребарувате повеќе етикети иÑтовремено, "
-"кориÑтете Ñпоени опции како:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: невалидни аргументи"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: датотеката %s не е пронајдена"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Directory to exclude from indexing"
-msgstr "Директориум кој ќе Ñе иÑклучи од пребарувањето"
-
-#: ../src/trackerd/trackerd.c:158 ../src/trackerd/trackerd.c:159
-#: ../src/trackerd/trackerd.c:160
-msgid "/PATH/DIR"
-msgstr "/ПÐТЕКÐ/ДИРЕКТОРИУМ"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Directory to include in indexing"
-msgstr "Директориум кој ќе Ñе вклучи во индекÑирањето"
-
-#: ../src/trackerd/trackerd.c:160
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Директориум кој ќе Ñе иÑклучи од пребарувањето"
-
-#: ../src/trackerd/trackerd.c:161
-msgid "Disable any indexing or watching taking place"
-msgstr "Оневозможи да Ñе Ñлучи надгледување или индекÑирање"
-
-#: ../src/trackerd/trackerd.c:162
-#, fuzzy
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"ВредноÑÑ‚ која го контролира нивото на логирање. Валидни вредноÑти Ñе 0 "
-"(Ñтандардно минимално), 1 (детално) и 2 (за дебагирање)"
-
-#: ../src/trackerd/trackerd.c:162 ../src/trackerd/trackerd.c:163
-msgid "VALUE"
-msgstr "ВРЕДÐОСТ"
-
-#: ../src/trackerd/trackerd.c:163
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-20 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"ВредноÑти кои Ñе кориÑтат за пригушување на индекÑирањето. ВредноÑта мора да "
-"биде во опÑегот од 0-20 (Ñтандардно 0) Ñо пониÑки вредноÑти за зголемена "
-"брзина на индекÑирање"
-
-#: ../src/trackerd/trackerd.c:164
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-"Ја минимизира употребата на меморијата, но може да го направи ÑиÑтемот бавен"
-
-#: ../src/trackerd/trackerd.c:165
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Јазикот кој ќе Ñе кориÑти за stemmer и лиÑтата Ñо запрени зборови (код од 2 "
-"ISO 639-1 знаци)"
-
-#: ../src/trackerd/trackerd.c:166
-msgid "LANG"
-msgstr "ЈÐЗИК"
-
-#: ../src/trackerd/trackerd.c:167
-msgid "Force a re-index of all content"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2047
-msgid "- start the tracker daemon"
-msgstr "- Ñтартувај го tracker демонот"
-
-#: ../src/trackerd/trackerd.c:2048 ../src/trackerd/trackerd.c:2049
-msgid "DIRECTORY"
-msgstr "ДИРЕКТОРИУМ"
-
-#: ../src/trackerd/trackerd.c:2056
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"За да вклучите или иÑклучите повеќе директориуми иÑтовремено, Ñпојте повеќе "
-"опции вака:"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-#, fuzzy
-msgid "Configure file indexing with Tracker"
-msgstr "Конфигурирај го индекÑирањето на датотеките"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Indexing Preferences"
-msgstr "Преференции за индекÑирањето"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Игнорирани шеми на датотеки</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Игнорирани патеки</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-#, fuzzy
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Режим на индекÑирање</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-#, fuzzy
-msgid "<b>Indexing options</b>"
-msgstr "<b>Режим на индекÑирање</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-#, fuzzy
-msgid "<b>Indexing</b>"
-msgstr "<b>Режим на индекÑирање</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Mailboxes</b>"
-msgstr "<b>ПоштенÑки Ñандачиња</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-#, fuzzy
-msgid "<b>Resource Usage</b>"
-msgstr "<b>СервиÑи</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Services</b>"
-msgstr "<b>СервиÑи</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Подигнување</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-#, fuzzy
-msgid "<b>Stemming</b>"
-msgstr "<b>Прозив</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Пригушување</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-#, fuzzy
-msgid "<b>Watch Directories</b>"
-msgstr "<b>СервиÑи</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox mailboxes to index:"
-msgstr "Додатни поштенÑки Ñандачиња за индекÑирање:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-#, fuzzy
-msgid "Additional paths to index and watch:"
-msgstr "Додатни патеки за индекÑирање:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid "Enable Evolution email indexing"
-msgstr "Овозможи индекÑирање на поштата од Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:18
-msgid "Enable KMail email indexing"
-msgstr "Овозможи индекÑирање на поштата од КПошта"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:19
-msgid "Enable Thunderbird email indexing"
-msgstr "Овозможи индекÑирање на поштата од Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:20
-msgid "Enable _Indexing"
-msgstr "Овозможи _индекÑирање"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:21
-#, fuzzy
-msgid "Enable _Watching"
-msgstr "Овозможи _индекÑирање"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:22
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:23
-msgid "File patterns to ignore during indexing:"
-msgstr "Шаблони на датотеки кои ќе Ñе игнорираат при индекÑирањето:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:24
-msgid "Generate _thumbnails"
-msgstr "Генерирај _Ñликички"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:25
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:26
-msgid "Index _file contents"
-msgstr "ИндекÑирај ги Ñодржините на _датотеката"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:27
-#, fuzzy
-msgid "Index and watch my home _directory"
-msgstr "ИндекÑирај го мојот домашен _директориум"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:28
-msgid "Maximum _amount of text to Index (KB)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Maximum number of unique _words to index"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "P_erformance"
-msgstr "И_зведување"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Path roots to be ignored during indexing:"
-msgstr "Патеки кои ќе Ñе игнорираат при индекÑирање:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Seconds"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Tracker Preferences"
-msgstr "Преференции на Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-#, fuzzy
-msgid "_Emails"
-msgstr "Е-пошта"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-#, fuzzy
-msgid "_Files"
-msgstr "Сите датотеки"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "_General"
-msgstr "_Оптшо"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-#, fuzzy
-msgid "_Ignored Files"
-msgstr "<b>Игнорирани шеми на датотеки</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-#, fuzzy
-msgid "_Indexing speed:"
-msgstr "И_ндекÑирам"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-#, fuzzy
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-"Ја минимизира употребата на меморијата, но може да го направи ÑиÑтемот бавен"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "_Use additonal memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid ""
-"danish\n"
-"dutch\n"
-"english\n"
-"finnish\n"
-"french\n"
-"german\n"
-"italian\n"
-"norwegian\n"
-"portugese\n"
-"russian\n"
-"spanish\n"
-"swedish"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Пребарај од одреден ÑервиÑ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Е-пошта"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Сите датотеки"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Папки"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Документи"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Слики"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Музика"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Видео"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1224
-msgid "Text"
-msgstr "ТекÑÑ‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Програмирање"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Отвори"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "О_твори ја папката"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Пре_меÑти во ѓубрето"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Зачувај ги резултатите како..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Претворањето на збирот знаци не уÑпеа за \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occured :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:656
-msgid "Did you mean"
-msgstr "Дали миÑлевте"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:687
-msgid "Your search returned no results."
-msgstr "Вашето пребарување нема резултати."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:702
-msgid "Tracker Search Tool-"
-msgstr "Tracker - алатка за пребарување-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:863
-#: ../src/tracker-search-tool/tracker-search-tool.c:2199
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker - алатка за пребарување"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1053
-#, fuzzy
-msgid "Search _results: "
-msgstr "Резултати од пребарувањето:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1059
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1113
-#: ../src/tracker-search-tool/tracker-search-tool.c:1274
-msgid "List View"
-msgstr "Преглед во лиÑта"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1185
-msgid "Icon"
-msgstr "Икона"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1197
-msgid "Name"
-msgstr "Име"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1292
-msgid "_Categories"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1572
-#, fuzzy, c-format
-msgid "%d - %d of %d hits"
-msgstr "Резултати %d - %d од %d"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1575
-#, c-format
-msgid "%d item"
-msgid_plural "%d hits"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1976
-msgid "_Search:"
-msgstr "_Барај:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1996
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-"ВнеÑете термин за пребарување од повеќе зборови разделени Ñо празно меÑто."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "search_entry"
-msgstr "запиÑ_за_пребарување"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2043
-msgid "Click to perform a search."
-msgstr "Кликнете за да Ñе изврши пребарување."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Ðе можам да го отворам документот за помош."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Дали Ñте Ñигурни дека Ñакате да отворите %d документ?"
-msgstr[1] "Дали Ñте Ñигурни дека Ñакате да отворите %d документи?"
-msgstr[2] "Дали Ñте Ñигурни дека Ñакате да отворите %d документи?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:676
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Ова ќе отвори %d одделен прозорец."
-msgstr[1] "Ова ќе отвори %d одделни прозорци."
-msgstr[2] "Ова ќе отвори %d одделни прозорци."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Ðе можев да го отворам документот \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Ðе можев да го отворам \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Менаџерот на папки nautilus не Ñе извршува."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:615
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:630
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:950
-msgid "The document does not exist."
-msgstr "Документот не поÑтои."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:646
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Ðе е инÑталиран прегледувач кој е ÑпоÑобен за прикажување на документот."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:671
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Дали Ñте Ñигурни дека Ñакате да ја отворите папката %d?"
-msgstr[1] "Дали Ñте Ñигурни дека Ñакате да ги отворите папките %d?"
-msgstr[2] "Дали Ñте Ñигурни дека Ñакате да ги отворите папките %d?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:775
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Ðе можев да го премеÑтам \"%s\" во ѓубрето."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:806
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Дали Ñакате да го избришете \"%s\" за Ñекогаш?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:809
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Ѓубрето е недоÑтапно. Ðе можев да го премеÑтам \"%s\" во ѓубрето."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:848
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Ðе можам да го избришам \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:972
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "ПремеÑтувањето на \"%s\" не уÑпеа: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1006
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Бришењето на \"%s\" не уÑпеа: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1292
-msgid "Activate to view this email"
-msgstr "Ðктивирај за прегледување на оваа е-пошта"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1468
-msgid "Save Search Results As..."
-msgstr "Зачувај ги резултатите од пребарувањето како..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1503
-msgid "Could not save document."
-msgstr "Ðе можев да го зачувам документот."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1504
-msgid "You did not select a document name."
-msgstr "Ðе избравте име на документ"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1534
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Ðе можам да го зачувам \"%s\" документот во \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1568
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Документот \"%s\" веќе поÑтои. Дали Ñакате да го замените?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1572
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-"Ðко ја замените поÑтоечката датотека, ќе Ñе запиши над нејзината Ñодржина."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1587
-msgid "_Replace"
-msgstr "_Замени"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1637
-msgid "The document name you selected is a folder."
-msgstr "Името на документот кој го избравте е папка"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1686
-msgid "You may not have write permissions to the document."
-msgstr "Можеби немат дозвола за запишување на документот"
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Грешка Ñо GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "today at %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "вчера во %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y во %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "врÑка (раÑипана)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "врÑка до %s"
-
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>Метаподатоци на датотека</b>"
-
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>Општо</b>"
-
-#~ msgid "Enable Index Throttling"
-#~ msgstr "Овозможи пригушување на индекÑот"
-
-#~ msgid "Normal Mode"
-#~ msgstr "Ðормален режим"
-
-#~ msgid "Polling Interval: "
-#~ msgstr "Интервал на одзив: "
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Режим на намалена меморија"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "ÐвтоматÑки Ñтартувај го ÑервиÑот за _индекÑирање"
-
-#~ msgid "Start _mointoring service automatically"
-#~ msgstr "ÐвтоматÑки Ñтартувај го ÑервиÑот за _надгледување"
-
-#~ msgid "Throttling Level: "
-#~ msgstr "Ðиво на пригушување"
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Турбо режим"
-
-#~ msgid "_Privacy"
-#~ msgstr "_ПриватноÑÑ‚"
-
-#~ msgid "gtk-add"
-#~ msgstr "gtk-add"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-close"
-
-#~ msgid "gtk-help"
-#~ msgstr "gtk-help"
-
-#~ msgid "gtk-remove"
-#~ msgstr "gtk-remove"
-
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%d резултат"
-#~ msgstr[1] "%d резултати"
-#~ msgstr[2] "%d резултати"
-
-#~ msgid "Please enter a search term above"
-#~ msgstr "Ве молам, погоре внеÑете термин за пребарување"
diff --git a/po/nb.po b/po/nb.po
deleted file mode 100644
index f39604dc8..000000000
--- a/po/nb.po
+++ /dev/null
@@ -1,1430 +0,0 @@
-# Norwegian bokmål translation of tracker.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the tracker package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2007-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-07 11:59+0200\n"
-"PO-Revision-Date: 2008-06-07 12:01+0200\n"
-"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
-"Language-Team: Norwegian bokmal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Start %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Se samtaler i %s\n"
-"%s %s\n"
-"fra %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-post fra %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Lytt til musikk %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Se dokument %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Ã…pne fil %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Vis bilde %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Se på video %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Ã…pne mappe %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "med"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "i kanal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Søk i alle dine dokumenter, <b>etter hvert som du skriver</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Utviklingsfiler"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musikk"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Bilder"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videoer"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Søk etter %s med Tracker søkeverktøy"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker søk"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Sti : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Endret : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Størrelse : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr ""
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Søk etter merkelapp"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "Fje_rn merkelapp"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "TJENESTE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr ""
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr ""
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr ""
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FIL..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: fil %s ble ikke funnet"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VERDI"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "KATALOG"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr ""
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "mapper"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "postbokser"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Indekser systemet på nytt?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Statistikk"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr ""
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Søk"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Brukervalg"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "_Brukervalg for indeksering"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "S_tatistikk"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_Om"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "A_vslutt"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Filer:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " mapper:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " dokumenter:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " bilder:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " musikk:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " videoer:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " text:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " utvikling:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Programmer:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Samtaler:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-post:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Brukervalg for panelprogram"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Av"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Filer"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Generelt"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Alle filer"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Mapper"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumenter"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Utvikling"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Programmer"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Ã…pne"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Ã…_pne mappe"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Flytt til papirkurv"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Lagre resultat som..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Feil"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker søkeverktøy"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "Søke_resultater:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Listevisning"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ikon"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Navn"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Kategorier"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d av %d oppføringer"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Søk:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Klikk for å utføre et søk."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Kunne ikke åpne hjelpdokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Kunne ikke åpne dokument «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Kunne ikke åpne mappe «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Dokumentet eksisterer ikke."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Kunne ikke flytte «%s» til papirkurven."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Vil du slette «%s» permanent?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Kunne ikke slette «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Flytting av «%s» feilet: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Sletting av «%s» feilet: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Lagre søkeresultat som..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Kunne ikke lagre dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "E_rstatt"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf-feil:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "lenke (ødelagt)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "lenke til %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Tracker tjeneste for søk og indeksering"
diff --git a/po/nl.po b/po/nl.po
deleted file mode 100644
index 40e828794..000000000
--- a/po/nl.po
+++ /dev/null
@@ -1,1588 +0,0 @@
-# Dutch translation for tracker
-# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the tracker package.
-# Roel Huybrechts <roelhuybrechts@skynet.be>, 2007.
-# Tino Meinen <a.t.meinen@chello.nl>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-16 23:05+0100\n"
-"PO-Revision-Date: 2008-04-30 19:23+0200\n"
-"Last-Translator: Roel Huybrechts <roelhuybrechts@skynet.be>\n"
-"Language-Team: nl\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "%s opstarten (%s)"
-
-# discussie/gesprek/conversatie
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mails van %s"
-
-# Luister naar [muziekbestand] in [programmanaam]?
-# geluidsbestand/muziekbestand
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-
-# bekijken/inzien/bezien/weergeven
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Document %s weergeven\n"
-"met %s"
-
-# met/in [programmanaam]
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Bestand %s openen\n"
-"met %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Afbeelding %s bekijken\n"
-"met %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Video %s kijken\n"
-"met %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Map %s openen\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "met"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "in kanaal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Al uw documenten doorzoeken <b>terwijl u typt</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-#, fuzzy
-msgid "Development Files"
-msgstr "Ontwikkeling"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Muziek"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Afbeeldingen"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Video's"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Zoeken naar %s met het Tracker zoekprogramma"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Al uw documenten doorzoeken met het Tracker zoekprogramma"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker zoekprogramma"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Zoeken met het Tracker zoekprogramma"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-#, fuzzy
-msgid "Tracker Live Search"
-msgstr "Tracker zoekprogramma"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Zoeken met Tracker, terwijl u typt"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Pad: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Gewijzigd: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Grootte: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Geraadpleegd: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Afzender: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Datum: <b>%s</b>"
-
-# opmerking/commentaar/bijschrift
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Commentaar: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categoriën: <b>%s</b>"
-
-# tijdsduur/lengte
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Tijdsduur: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Genre: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitsnelheid: <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Jaar: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " gemaakt met een <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Afmetingen: <b>%d x %d</b>"
-
-# wanneer een foto genomen is
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Opnamedatum: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Oriëntatie: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Focuslengte: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Belichtingstijd: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Auteur: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitsnelheid: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Gecodeerd in: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Framerate: <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Onderwerp: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Aantal pagina's: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Aantal woorden: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Aangemaakt op: <b>%s</b>"
-
-# bijschrift/commentaar/opmerking
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Commentaar: <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Onbekend"
-
-# trefwoorden
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Typ hier de tags die u wenst, gescheiden door komma's"
-
-# trefwoorden
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Tags:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Zoek naar tag"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Verwijder tag"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Beperk het aantal getoonde resultaten tot N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Zoek naar een specifieke service"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICE"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-"Toon meer gedetailleerde resultaten met onder andere service en mime-type"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - zoek bestanden met bepaalde termen"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Als u meer dan één term opgeeft zullen resultaten getoond worden die ALLE "
-"termen bevatten (term1 EN term2 - logische verbinding)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "De lijst van herkende services is:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Probeer \"%s --help\" voor meer informatie."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s ontbrekende zoektermen:"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: geen verbinding met tracker daemon"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Controleer dat \"trackerd\" draait voordat u dit commando gebruikt."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Service niet herkend, bezig met zoeken in Andere Bestanden...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: interne tracker fout: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Geen resultaten gevonden die voldoen aan uw opzoeking"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - toon aantal geïndexeerde bestanden voor elke service"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "index-statistieken ophalen"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Voeg een specifieke tag toe aan een bestand"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "TAG"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Verwijder een specifieke tag van een bestand"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Verwijder alle tags van een bestand"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Toon een lijst van alle gedefinieerde tags"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Zoek naar bestanden met een specifieke tag"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "BESTAND..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "BESTAND... - wijzig tags van bestanden"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Om meerdere tags tegelijkertijd toe te voegen, te verwijderen of op te "
-"zoeken voegt u verschillende opties samen. Bijvoorbeeld:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: ongeldige argumenten"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: bestand %s niet gevonden"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Map die niet geïndexeerd mag worden"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/PAD/MAP"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Map die geïndexeerd moet worden"
-
-#: ../src/trackerd/trackerd.c:122
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Map die niet geïndexeerd mag worden"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Schakel alle indexerings- en controleprocessen uit"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Waarde die de log-level bepaalt. Toegestane waarden zijn 0 (toont/logt enkel "
-"fouten), 1 (minimaal), 2 (gedetailleerd), en 3 (debug)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "WAARDE"
-
-#: ../src/trackerd/trackerd.c:125
-#, fuzzy
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Waarde te gebruiken voor het throttlen van het indexeren. De waarden moet "
-"gelegen zijn tussen 0-20 (standaard 0), lagere waarden versnellen de "
-"indexeringssnelheid"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Verminderd het geheugengebruik maar kan het indexeren vertragen"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Taal om te gebruiken voor de stam- en stop-woordenlijst (ISO 639-1 2 "
-"karakters code)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "TAAL"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Dwing een herindexering van alle data af"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:664
-msgid "- start the tracker daemon"
-msgstr "- start de tracker daemon"
-
-#: ../src/trackerd/trackerd.c:665 ../src/trackerd/trackerd.c:666
-msgid "DIRECTORY"
-msgstr "MAP"
-
-#: ../src/trackerd/trackerd.c:673
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Om meerdere mappen tegelijkertijd bij te voegen of te verwijderen voegt u "
-"meerder opties samen. Bijvoorbeeld:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Tracker-applet"
-
-# tooltip
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker is "
-
-# in rust/niet bezig
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "niet bezig"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "bezig met indexeren"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "bezig met samenvoegen"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (gepauzeerd door de gebruiker)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (gepauzeerd door het systeem)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (gepauzeerd door de accu)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "mappen"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "mailboxen"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Uw systeem opnieuw indexeren?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indexeren kan veel tijd in beslag nemen. Weet u zeker dat u opnieuw wilt indexeren?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Statistiek"
-
-# geen letterlijke vertaling
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Indexeringsoverzicht</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 De auteurs van Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Roel Huybrechts\n"
-"Tino Meinen"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Tracker website"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "Indexeren _pauzeren"
-
-# rechtermuis menu
-# hiermee wordt het zoekvenster/scherm geopend, dus geen zoekopdracht gestart
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Zoekvenster tonen"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Opnieuw indexeren"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Voorkeuren"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Inde_xeringsvoorkeuren"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "_Statistiek"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "I_nfo"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "A_fsluiten"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr "Uw computer wordt zodirekt geïndexeerd zodat u snel naar uw bestanden en e-mails kunt zoeken"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr "U kunt het indexeren altijd pauzeren en configureren door hier met de rechtermuisknop te klikken."
-
-# heeft het indexeren voltooid/afgerond
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker heeft uw systeem geïndexeerd"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " in %d uur en %d minuten"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " in %d minuten en %d seconden"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " in %d seconden"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "U kunt nu zoekopdrachten geven door hier te klikken"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Bestanden:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Mappen:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Documenten:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Afbeeldingen:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Muziek:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Video's:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Tekst:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Ontwikkeling:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Overig:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Toepassingen:"
-
-# conversaties/discussies/gesprekken
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Gesprekken:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-mails:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animatie</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Slim pauzeren</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Zichtbaarheid</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-#, fuzzy
-msgid "Animate _icon when indexing"
-msgstr "Schakel Evolution e-mail indexering in"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Applet voorkeuren"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Pictogram verbergen (behalve wanneer berichten aan de gebruiker getoond worden)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Uit"
-
-#: ../src/tracker-preferences/tracker-preferences.c:833
-msgid "Data must be reindexed"
-msgstr "Data moet opnieuw geïndexeerd worden"
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:841
-msgid "_Reindex"
-msgstr "_Herindexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.c:844
-msgid "Tracker daemon must be restarted"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:846
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:851
-msgid "_Restart"
-msgstr "He_rstarten"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-#, fuzzy
-msgid "Configure file indexing with Tracker"
-msgstr "Configureer bestandsindexering"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Zoeken en indexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Genegeerde bestandspatronen</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Genegeerde paden</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-#, fuzzy
-msgid "<b>Index Merging</b>"
-msgstr "<b>Indexeringsmodus</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indexeringslimieten (per bestand)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indexeringsopties</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexering</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Energiebeheer</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-#, fuzzy
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Services</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Opstarten</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-#, fuzzy
-msgid "<b>Stemming</b>"
-msgstr "<b>Polling</b>"
-
-# beperken/begrenzen
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Begrenzen</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-#, fuzzy
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Services</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-#, fuzzy
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Bijkomende mbox mailboxen om te indexeren:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-#, fuzzy
-msgid "Additional paths to index and watch:"
-msgstr "Bijkomende paden om te indexeren:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-#, fuzzy
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "Bijkomende paden om te indexeren:"
-
-# moet dit alfabetisch blijven? of moet dit op volgorde blijven
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Deens\n"
-"Nederlands\n"
-"Engels\n"
-"Fins\n"
-"Frans\n"
-"Duits\n"
-"Hongaars\n"
-"Italiaans\n"
-"Noors\n"
-"Portugees\n"
-"Russisch\n"
-"Spaans\n"
-"Zweeds"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Bij accustroom al het indexeren uitschakelen"
-
-# aanvankelijke/initiële/controleindex
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "Bij accustroom de aanvankelijke indexering uitschakelen"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-#, fuzzy
-msgid "Enable _Evolution email indexing"
-msgstr "Schakel Evolution e-mail indexering in"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-#, fuzzy
-msgid "Enable _KMail email indexing"
-msgstr "Schakel KMail e-mail indexering in"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-#, fuzzy
-msgid "Enable _Modest email indexing"
-msgstr "Schakel KMail e-mail indexering in"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-#, fuzzy
-msgid "Enable _Thunderbird email indexing"
-msgstr "Schakel Thunderbird e-mail indexering in"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-#, fuzzy
-msgid "Enable _watching"
-msgstr "Schakel _indexering in"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-#, fuzzy
-msgid "Enable i_ndexing"
-msgstr "Schakel _indexering in"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Sneller"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Bestandspatronen om te negeren tijdens het indexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Bestanden"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Algemeen"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "_Miniaturen genereren"
-
-# Genegeerde bestandspatronen/genegeerde bestanden
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Genegeerde bestanden"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "_Bestandsinhoud indexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Aa_ngekoppelde mappen indexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-#, fuzzy
-msgid "Index and watch my home _directory"
-msgstr "Indexeer mijn _thuismap"
-
-# snelheid
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-#, fuzzy
-msgid "Indexing speed:"
-msgstr "I_ndexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Paden om te negeren tijdens de indexering:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Prestaties"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Langzamer"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Tracker voorkeuren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Taal:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Geheugengebruik minimaliseren (langzamer indexeren)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "E_xtra geheugen gebruiken om sneller te indexeren"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "seconden"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Zoek vanaf een speficieke service"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-mails"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Alle bestanden"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Mappen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documenten"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Tekst"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Ontwikkeling"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Toepassingen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Openen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "_Map openen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Verplaatsen naar prullenmand"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Resultaten opslaan als..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Tekensetconversie voor ‘%s’ is mislukt"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Er is een fout opgetreden:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Fout"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Bedoelde u"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Uw zoekopdracht leverde geen resultaten op."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Tracker zoekprogramma-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker zoekprogramma"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "Zoek_resultaten: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "geen zoekopdracht uitgevoerd"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Toon als lijst"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Pictogram"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Naam"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Categoriën"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "Zoekresultaten: %d - %d uit %d items"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d item"
-msgstr[1] "%d items"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Zoek:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-"Typ een zoekterm bestaande uit meerdere woorden gescheiden door spaties."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "zoek_opdracht"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Klik om een opzoeking te doen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Kon het hulpdocument niet openen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Weet u zeker dat u %d document wilt openen?"
-msgstr[1] "Weet u zeker dat u %d documenten wilt openen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Dit zal %d nieuw venster openen."
-msgstr[1] "Dit zal %d nieuwe vensters openen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Kon het document ‘%s’ niet openen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Kon de map ‘%s’ niet openen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "De bestandsbeheerderprogramma: nautilus draait niet."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Toepassing kon niet geopend worden"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Dit document bestaat niet."
-
-# geschikt ipv geïnstalleerd
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Er is geen geschikt programma dat dit document kan weergeven."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Weet u zeker dat u %d map wilt openen?"
-msgstr[1] "Weet u zeker dat u %d mappen wilt openen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Kon ‘%s’ niet naar de prullenmand verplaatsen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Wilt u ‘%s’ definitief verwijderen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "De prullenmand is niet beschikbaar. Kon ‘%s’ niet naar de prullenmand verplaatsen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Kon ‘%s’ niet verwijderen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Het verplaatsen van ‘%s’ is mislukt: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Het verwijderen van ‘%s’ is mislukt: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Activeren om deze e-mail te bekijken"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Zoekresultaten opslaan als..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Kon document niet opslaan."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "U selecteerde geen documentnaam."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Kon \"%s\" document niet opslaan naar \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Het document \"%s\" bestaat reeds. Wilt u het vervangen?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Als u een bestand vervangt zal de inhoud ervan overschreven worden."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Vervang"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "De documentnaam die u selecteerde is een map."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Het is mogelijk dat u geen schrijfrechten heeft op het document."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf fout:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "vandaag om %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "gisteren om %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %d %B %Y om %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "link (niet bereikbaar)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "link naar %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Mailboxen</b>"
-
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Services</b>"
-
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>Metadata van bestand</b>"
-
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>Algemeen</b>"
-
-#~ msgid "Enable Index Throttling"
-#~ msgstr "Schakel index throttlen in"
-
-#~ msgid "Normal Mode"
-#~ msgstr "Normale modus"
-
-#~ msgid "Polling Interval: "
-#~ msgstr "Polling interval: "
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Lage-geheugen modus"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "Start _indexering service automatisch"
-
-#~ msgid "Start _mointoring service automatically"
-#~ msgstr "Start _controle service automatisch"
-
-#~ msgid "Throttling Level: "
-#~ msgstr "Throttling level: "
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Turbo modus"
-
-#~ msgid "_Privacy"
-#~ msgstr "_Privacy"
-
-#~ msgid "gtk-add"
-#~ msgstr "gtk-add"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-close"
-
-#~ msgid "gtk-help"
-#~ msgstr "gtk-help"
-
-#~ msgid "gtk-remove"
-#~ msgstr "gtk-remove"
-
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%d resultaat"
-#~ msgstr[1] "%d resultaten"
-
-#~ msgid "Please enter a search term above"
-#~ msgstr "Typ hierboven een zoekterm alstublieft"
-
-#~ msgid "Plain text"
-#~ msgstr "Plain text"
-
-#~ msgid "No files found"
-#~ msgstr "No files found"
-
-#~ msgid "_Previous"
-#~ msgstr "_Previous"
-
-#~ msgid "_Next"
-#~ msgstr "_Next"
-
-#~ msgid "Invalid service type: %s\n"
-#~ msgstr "Invalid service type: %s\n"
-
-#~ msgid "value"
-#~ msgstr "value"
-
-#~ msgid "Enables more verbose debug messages"
-#~ msgstr "Enables more verbose debug messages"
-
-#~ msgid "Faster indexing, use more memory and CPU"
-#~ msgstr "Faster indexing, use more memory and CPU"
-
-#~ msgid "Slower indexing, use less memory and CPU"
-#~ msgstr "Slower indexing, use less memory and CPU"
diff --git a/po/oc.po b/po/oc.po
deleted file mode 100644
index f020fd495..000000000
--- a/po/oc.po
+++ /dev/null
@@ -1,1428 +0,0 @@
-# Occitan translation of Tracker
-# Copyright (C) 2006, 2007, Free Software Foundation, Inc
-# This file is distributed under the same license as the tracker package.
-#
-# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: oc\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-02 09:01+0200\n"
-"PO-Revision-Date: 2008-06-11 11:58+0200\n"
-"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
-"Language-Team: Occitan <ubuntu-l10n-oci@lists.ubuntu.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Aviar %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Messatge electronic de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "amb"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Desvolopament"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musica"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Imatges"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Camin : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modificat : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Talha : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Accedit : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comentari : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categorias : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Durada : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Mena : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Annada : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensions : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientacion : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Creat : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comentaris : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f ko"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f Mo"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f Go"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr ""
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr ""
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVICI"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr ""
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Ensajatz \"%s --help\" per mai d'entresenhas."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr ""
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr ""
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FICHIÈR..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VALOR"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "LENGA"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "REPERTÃ’RI"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Inactiu"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "Repertòris"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Estadisticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr ""
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-
-#
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Sit web de Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Recercar"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "Pre_feréncias"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "_Estadisticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_A prepaus"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Sortir"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "_Fichièrs"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Repertòris :"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Documents :"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Imatges :"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Musica :"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Tèxt :"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Desvolopament :"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Aplicacions :"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "Messatges electronics :"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animacion</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Aviada</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "Adreça electronica"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Pegar"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Fichièrs"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "General"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Lenga :"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "ko"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "segondas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Messatges electronics"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Totes los fichièrs"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Repertòris"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documents"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Tèxt"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Desvolopament"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplicacions"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Dobrir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "D_obrir lo repertòri"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Des_plaçar dins la banasta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Enregistrar las resultas coma..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Error"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Pas de resulta per vòstra recèrca."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr ""
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Icòna"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nom"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Categorias"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d element"
-msgstr[1] "%d elements"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Recercar :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Impossible de dobrir lo document d'ajuda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Sètz segur que volètz dobrir %d document ?"
-msgstr[1] "Sètz segur que volètz dobrir %d documents ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Impossible de dobrir lo document \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Impossible de dobrir lo repertòri \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Impossible de dobrir l'aplicacion"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Lo document existís pas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Sètz segur que volètz dobrir %d repertòri ?"
-msgstr[1] "Sètz segur que volètz dobrir %d repertòris ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Impossible de suprimir \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Impossible d'enregistrar lo document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Avètz pas seleccionat de nom de document."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Lo document \"%s\" existís ja. Lo volètz remplaçar ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Remplaçar"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "Nom de document qu'avètz seleccionat es un repertòri."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Error GConf :\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "uèi a %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "ièr a %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A %-d %B %Y a %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "ligam (copat)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#~ msgid "_Search..."
-#~ msgstr "_Recercar..."
-
-#~ msgid "Search:"
-#~ msgstr "Recercar :"
-
-#~ msgid "Status:"
-#~ msgstr "Estat :"
-
-#~ msgid "Progress:"
-#~ msgstr "Progression:"
diff --git a/po/pl.po b/po/pl.po
deleted file mode 100644
index b6c32f3be..000000000
--- a/po/pl.po
+++ /dev/null
@@ -1,1482 +0,0 @@
-# Polish translation of tracker.
-# Copyright (C) 2001-2008 Free Software Foundation, Inc.
-# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-# Aviary.pl
-# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
-# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
-# gnomepl@aviary.pl
-# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-# This file is distributed under the same license as the tracker package.
-# Tomasz Dominikowski <tdominikowski@aviary.pl>, 2007, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-16 23:05+0100\n"
-"PO-Revision-Date: 2008-09-08 20:45+0100\n"
-"Last-Translator: Tomasz Dominikowski <dominikowski@gmail.com>\n"
-"Language-Team: Aviary.pl <gnomepl@aviary.pl>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Polish\n"
-"X-Poedit-Country: Poland\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Uruchom %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Wyświetl rozmowę %s\n"
-"%s %s\n"
-"od %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mail od %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"WÅ‚Ä…cz odtwarzanie %s\n"
-"w %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Wyświetl dokument %s\n"
-"w %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Otwórz plik %s\n"
-"w %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Wyświetl obraz %s\n"
-"w %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Wyświetl film %s\n"
-"w %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Otwórz katalog %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "za pomocÄ…"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "na kanale"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Wyszukiwanie dokumentów użytkownika <b>w trakcie wprowadzania danych</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Pliki programistyczne"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Muzyka"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Obrazy"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Filmy"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Szukaj %s za pomocą narzędzia Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Wyszukiwanie wszystkich dokumentów użytkownika za pomocą narzędzia wyszukiwania Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Wyszukiwanie Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Wyszukiwanie za pomocą narzędzia Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Wyszukiwanie na żywo Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Wyszukiwanie za pomocÄ… Tracker, w trakcie wprowadzania danych"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Ścieżka : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Czas modyfikacji : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Rozmiar : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Czas dostępu : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Typ MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Wysyłający : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Komentarz : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategorie : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Czas trwania : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Gatunek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Gęstość bitowa : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Rok : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " wykonane za pomocÄ… <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Rozmiary : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Data wykonania : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Położenie : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Lampa błyskowa : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Długość ogniskowej : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Czas ekspozycji : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Gęstość bitowa : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Zakodowane w : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Klatek na sekundÄ™ : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Temat : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Liczba stron : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Liczba wyrazów : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Utworzono : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Komentarze : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Nieznane"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Proszę wprowadzić żądane etykiety do dodania, oddzielane przecinkami"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Etykiety :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Szukaj etykiety"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Usuń etykietę"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Ograniczenie liczby wyświetlanych wyników do N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Wyszukiwanie określonej usługi"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "USÅUGA"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Wyświetlanie bardziej szczegółowych wyników z usługą i typem MIME"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "OKREŚLENIE... - wyszukiwanie podanych określeń wśród plików"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid "Specifying more then one term, will be showed items containing ALL the specified terms (term1 AND term2 - logical conjunction)"
-msgstr "Podanie więcej niż jednego określenia spowoduje wyświetlenie wyników zawierających OBA te określenia (określenie1 ORAZ określenie2 - związek logiczny)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Lista rozpoznanych usług:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122
-#: ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115
-#: ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Proszę spróbować \"%s --help\", aby wyświetlić więcej informacji"
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: brakuje określeń wyszukiwania"
-
-#: ../src/libtracker/tracker-search.c:133
-#: ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46
-#: ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: brak połączenia z usługą tracker"
-
-#: ../src/libtracker/tracker-search.c:135
-#: ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48
-#: ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Proszę się upewnić, że \"trackerd\" działa przed uruchomieniem tego polecenia."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Usługa nierozpoznana, wyszukiwanie w innych plikach...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56
-#: ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189
-#: ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233
-#: ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: wewnętrzny błąd tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173
-#: ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Nie odnaleziono wyników pasujących do zapytania"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - wyświetlanie ilości zindeksowanych plików dla każdej usługi"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "pobieranie statystyk indeksowania"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Dodanie określonej etykiety do pliku"
-
-#: ../src/libtracker/tracker-tag.c:41
-#: ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45
-#: ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ETYKIETA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Usunięcie określonej etykiety z pliku"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Usunięcie wszystkich etykiet z pliku"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Wyszczególnienie wszystkich określonych etykiet"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Wyszukiwanie plików za pomocą określonych etykiet"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "PLIK..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "PLIK... - obsługa etykiet w plikach"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid "To add, remove, or search for multiple tags at the same time, join multiple options like:"
-msgstr "Aby dodać, usunąć lub wyszukać więcej niż jedną etykietę na raz, należy łączyć opcje:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: niepoprawne argumenty"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: plik %s nie został odnaleziony"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Katalog do wykluczenia z indeksowania"
-
-#: ../src/trackerd/trackerd.c:120
-#: ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/ŚCIEŻKA/KATALOG"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Katalog do włączenia do indeksowania"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Katalog, który ma zostać zindeksowany tylko podczas uruchamiania"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Wyłączenie bieżącego indeksowania i obserwowania"
-
-#: ../src/trackerd/trackerd.c:124
-msgid "Value that controls the level of logging. Valid values are 0 (displays/logs only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr "Wartość sterująca poziomem szczegółowości dziennika. Poprawne wartości to 0 (wyświetlanie/zapisywanie wyłącznie błędów), 1 (minimalny), 2 (szczegółowy) i 3 (do debugowania) "
-
-#: ../src/trackerd/trackerd.c:124
-#: ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "WARTOŚĆ"
-
-#: ../src/trackerd/trackerd.c:125
-msgid "Value to use for throttling indexing. Value must be in range 0-99 (default 0) with lower values increasing indexing speed"
-msgstr "Wartość używana do zmiany prędkości indeksowania. Wartość musi znajdować się w zakresie 0-99 (domyślnie 0), przy czym niższe wartości zwiększają prędkość indeksowania"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Zmniejsza użycie pamięci, ale może spowolnić indeksowanie"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Początkowy okres bezczynności, tuż przed indeksowaniem, w sekundach"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr "Język używany dla listy wyrazów występujących najczęściej, a nie wnoszących nic do treści (\"stopwords\") oraz dla listy rdzeni pozbawionych przedrostków i przyrostków - \"stemmer words\" (dwuznakowy kod ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "JĘZYK"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Wymuszenie ponownego zindeksowania całej zawartości"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Błędy tracker jako błędy poważne"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:664
-msgid "- start the tracker daemon"
-msgstr "- uruchomienie usługi tracker"
-
-#: ../src/trackerd/trackerd.c:665
-#: ../src/trackerd/trackerd.c:666
-msgid "DIRECTORY"
-msgstr "KATALOG"
-
-#: ../src/trackerd/trackerd.c:673
-msgid "To include or exclude multiple directories at the same time, join multiple options like:"
-msgstr "Aby dołączyć lub wyłączyć więcej niż jeden katalog w tym samym czasie, należy połączyć opcje:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Obsługa i monitorowanie usługi indeksowania i wyszukiwania Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Aplet Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker :"
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Bezczynny"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indeksowanie"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "ÅÄ…czenie"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr "(wstrzymane przez użytkownika)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr "(wstrzymane przez system)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr "(wstrzymane przez zasilanie z akumulatora)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "katalogi"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "skrzynki e-mail"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Zindeksować system ponownie?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indeksowanie może potrwać dużo czasu. Na pewno zindeksować ponownie?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Statystyki"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Statystyki indeksowania</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid "Tracker is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
-msgstr "Tracker is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid "Tracker is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
-msgstr "Tracker is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid "You should have received a copy of the GNU General Public License along with Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr "You should have received a copy of the GNU General Public License along with Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid "Tracker is a tool designed to extract info and metadata about your personal data so that it can be searched easily and quickly"
-msgstr "Tracker to narzędzie zaprojektowane do wydobywania informacji i metadanych na temat prywatnych danych użytkownika do ich późniejszego łatwego i szybkiego wyszukiwania"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Autorzy Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Aviary.pl <gnomepl@aviary.pl>, 2008\n"
-"Tomasz Dominikowski <tdominikowski@aviary.pl>, 2008"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Witryna Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Wstrzymanie indeksowania"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "Wy_szukiwanie"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "Indeksu_j ponownie"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "Pre_ferencje"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Preferencje _indeksera"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "S_tatystyki"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "O _programie"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Zakończ"
-
-#: ../src/tracker-applet/tracker-applet.c:1997
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid "Your computer is about to be indexed so you can perform fast searches of your files and emails"
-msgstr "Komputer zostanie zindeksowany, aby można było błyskawicznie przeszukiwać pliki i e-maile"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid "You can pause indexing at any time and configure index settings by right clicking here"
-msgstr "Indeksowanie można wstrzymać w każdej chwili i skonfigurować ustawienia indeksu klikając tutaj prawym przyciskiem"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker ukończył indeksowanie systemu"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " w %d godzin i %d minut"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " w %d minut i %d sekund"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " w %d s"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Można teraz przeszukiwać system klikając tutaj"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Pliki:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Katalogi:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Dokumenty:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Obrazy:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Muzyka:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Filmy:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Tekst:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Programowanie:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Inne:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Programy:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Rozmowy:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-maile:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animacja</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Inteligentne wstrzymywanie</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Widoczność</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "_Animacja ikony w trakcie indeksowania"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Preferencje apletu"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid "Automatically _pause if indexing may degrade performance of other applications in active use"
-msgstr "Automatyczne _wstrzymywanie, jeśli indeksowanie może spowolnić pracę innych aktywnie używanych programów"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "_Automatyczne wstrzymywanie indeksowania podczas aktywnej pracy przy komputerze"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Ukrycie ikony (oprócz wyświetlania informacji dla użytkownika)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Wyłączenie"
-
-#: ../src/tracker-preferences/tracker-preferences.c:833
-msgid "Data must be reindexed"
-msgstr "Dane muszą być zindeksowane ponownie"
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid "In order for your changes to take effect, Tracker must reindex your files. Click the Reindex button to start reindexing now, otherwise this action will be performed the next time the Tracker daemon is restarted."
-msgstr "Aby zmiany weszły w życie, Tracker musi zindeksować pliki ponownie. Proszę kliknąć na przycisk Indeksuj ponownie, aby rozpocząć teraz. Jeśli nie zostanie to wykonane, Tracker zrobi to automatycznie przy następnym uruchomieniu usługi."
-
-#: ../src/tracker-preferences/tracker-preferences.c:841
-msgid "_Reindex"
-msgstr "_Indeksuj ponownie"
-
-#: ../src/tracker-preferences/tracker-preferences.c:844
-msgid "Tracker daemon must be restarted"
-msgstr "Usługa Tracker musi zostać uruchomiona ponownie"
-
-#: ../src/tracker-preferences/tracker-preferences.c:846
-msgid "In order for your changes to take effect, the Tracker daemon has to be restarted. Click the Restart button to restart the daemon now."
-msgstr "Aby zmiany weszły w życie, usługa Tracker musi zostać ponownie uruchomiona. Proszę kliknąć na przycisk Uruchom ponownie, aby usługa została ponownie uruchomiona."
-
-#: ../src/tracker-preferences/tracker-preferences.c:851
-msgid "_Restart"
-msgstr "_Uruchom ponownie"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Konfiguracja indeksowania plików za pomocą Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Wyszukiwanie i indeksowanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Indeksowane katalogi</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Ignorowane wzorce plików</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ignorowane ścieżki</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>ÅÄ…czenie indeksowania</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Ograniczenie indeksowania (na plik)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opcje indeksowania</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indeksowanie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Zasilanie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Użycie zasobów</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Uruchamianie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Stemming</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Kontrola szybkości</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Obserwowanie katalogów</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Dodatkowe skrzynki pocztowe do indeksowania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Dodatkowe ścieżki do indeksowania i obserwacji:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "Dodatkowe ścieżki do indeksowania podczas uruchamiania (bez obserwacji zmian):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"duński\n"
-"holenderski\n"
-"angielski\n"
-"fiński\n"
-"francuski\n"
-"niemiecki\n"
-"węgierski\n"
-"włoski\n"
-"norweski\n"
-"portugalski\n"
-"rosyjski\n"
-"hiszpański\n"
-"szwedzki"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Wyłączenie indeksowania przy zasilaniu z akumulatora"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "Wyłączenie początkowego indeksowania przy zasilaniu z akumulatora"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Indeksowanie poczty _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Indeksowanie poczty _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Indeksowanie poczty _Modest"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Indeksowanie poczty _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Obser_wowanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "I_ndeksowanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Szybciej"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Wzory plików ignorowane podczas indeksowania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Pliki"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Ogólne"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Generowanie _miniaturek"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Pliki ignorowane"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "Opóźnienie _indeksowania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Indeksowanie _zawartości plików"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indeksowanie zam_ontowanych katalogów"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indeksowanie i obserwowanie _katalogu domowego"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Prędkość indeksowania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "Maksym_alna ilość _tekstu do indeksowania (w KB)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Maksymalna liczba unikalnych _wyrazów do indeksowania"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Główne ścieżki ignorowane podczas indeksowania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Wykonywanie szybkich łączeń indeksów (może pogorszyć wydajność systemu)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Wydajność"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Wolniej"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Preferencje Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Język:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Ograniczenie użycia pamięci (wolniejsze indeksowanie)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "_Użycie dodatkowej ilości pamięci dla szybszego indeksowania"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "s"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Wyszukiwanie określonej usługi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-mail"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Wszystkie pliki"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Katalogi"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumenty"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Tekst"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Programowanie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Dzienniki rozmów"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Programy"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Historia odwiedzonych stron WWW"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Otwórz"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "O_twórz katalog"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "PrzenieÅ› do _kosza"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Zapisz wynik jako..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Konwersja zestawu znaków nie powiodła się dla \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Wystąpił następujący błąd :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "BÅ‚Ä…d"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Czy chodziło o"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Wyszukiwanie nie przyniosło żadnych wyników."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Narzędzie wyszukujące Tracker -"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Narzędzie wyszukujące Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "Wyniki _wyszukiwania:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "jeszcze nie przeprowadzono"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Widok listy"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ikona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nazwa"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Kategorie"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d z %d elementów"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d element"
-msgstr[1] "%d trafienia"
-msgstr[2] "%d trafień"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "Nie można się połączyć z usługą wyszukiwania, może być zajęta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "Wy_szukiwanie:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "Tracker nadal indeksuje dane, więc nie wszystkie wyniki wyszukiwania są jeszcze dostępne"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Proszę wprowadzić termin do wyszukania, wyrazy należy oddzielać spacjami."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "pole_wyszukiwania"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Proszę kliknąć, aby rozpocząć wyszukiwanie."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Nie można otworzyć dokumentu pomocy."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Na pewno otworzyć %d dokument?"
-msgstr[1] "Na pewno otworzyć %d dokumenty?"
-msgstr[2] "Na pewno otworzyć %d dokumentów?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Zostanie otwarte %d okno."
-msgstr[1] "ZostanÄ… otwarte %d okna."
-msgstr[2] "Zostanie otwartych %d okien."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Nie można otworzyć dokumentu \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Nie można otworzyć katalogu \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Menedżer plików Nautilus jest wyłączony."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Program nie mógł zostać otwarty"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Ten dokument nie istnieje."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Brak zainstalowanej przeglÄ…darki tego typu dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Na pewno otworzyć %d katalog?"
-msgstr[1] "Na pewno otworzyć %d katalogi?"
-msgstr[2] "Na pewno otworzyć %d katalogów?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Nie można przenieść \"%s\" do kosza."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Na pewno bezpowrotnie usunąć \"%s\"?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Kosz jest niedostępny. Nie można przenieść \"%s\" do kosza."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Nie można usunąć \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Przeniesienie \"%s\" nieudane: %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Usunięcie \"%s\" nieudane: %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Aktywuj, aby wyświetlić ten e-mail"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Zapisz wyniki wyszukiwania jako..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Nie można zapisać dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Nie wybrano nazwy dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Nie można zapisać dokumentu \"%s\" do \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokument \"%s\" już istnieje. Zastąpić go?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "ZastÄ…pienie istniejÄ…cego pliku spowoduje jego nadpisanie."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_ZastÄ…p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "Wybrana nazwa dokumentu jest katalogiem."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Możliwy jest brak uprawnień do zapisu tego dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid "Locate documents and folders on this computer by name or content using Tracker"
-msgstr "Wyszukiwanie dokumentów i katalogów według nazwy lub zawartości używając programu Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"BÅ‚Ä…d GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "dzisiaj o %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "wczoraj o %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y o %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "odnośnik (uszkodzony)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "odnośnik do %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Usługa indeksowania i wyszukiwania Tracker"
-
-#~ msgid "gtk-close"
-#~ msgstr "Zamknij"
-#~ msgid "_Index Only When Idle"
-#~ msgstr "_Indeksowanie tylko podczas bezczynności systemu"
-#~ msgid "_Merge Indexes Only When Idle"
-#~ msgstr "ÅÄ…czenie indeksów tylko podczas bezczynnoÅ›ci syste_mu"
-#~ msgid "S_mart Pause"
-#~ msgstr "Inteligentne w_strzymywanie"
-#~ msgid "Auto _Hide"
-#~ msgstr "Automatyczne _ukrywanie"
-#~ msgid "_Search..."
-#~ msgstr "Wy_szukiwanie..."
-#~ msgid "Search:"
-#~ msgstr "Wyszukiwanie:"
-#~ msgid "Status:"
-#~ msgstr "Stan:"
-#~ msgid "Progress:"
-#~ msgstr "Postęp:"
-#~ msgid "Indexing in progress"
-#~ msgstr "Indeksowanie w trakcie"
-#~ msgid "Indexing completed"
-#~ msgstr "Indeksowanie ukończone"
-#~ msgid "Indexes are being merged"
-#~ msgstr "Indeksy sÄ… teraz Å‚Ä…czone"
-#~ msgid "Paused while on battery power"
-#~ msgstr "Wstrzymane z powodu zasilania z akumulatora"
-#~ msgid "Paused temporarily"
-#~ msgstr "Wstrzymane tymczasowo"
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "Tracker łączy teraz indeksy, co może spowodować spowolnienie "
-#~ "funkcjonowania systemu na wiele minut\n"
-#~ "\n"
-#~ "Te działanie można wstrzymać klikając tutaj"
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Skrzynki pocztowe</b>"
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Usługi</b>"
-#~ msgid "_Emails"
-#~ msgstr "Poczta _e-mail"
-
diff --git a/po/pt.po b/po/pt.po
deleted file mode 100644
index 75d8b5d9e..000000000
--- a/po/pt.po
+++ /dev/null
@@ -1,1506 +0,0 @@
-# tracker's Portuguese translation
-# Copyright © 2007, 2008 tracker
-# This file is distributed under the same license as the tracker package.
-# Nicolau Gonçalves <excentriko@gmail.com>, 2007, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2.20\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-25 23:37+0100\n"
-"PO-Revision-Date: 2008-05-08 11:20+0200\n"
-"Last-Translator: Nicolau Gonçalves <excentriko@gmail.com>\n"
-"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Iniciar %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Ver %s conversação\n"
-"%s %s\n"
-"de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "Email de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Ouvir música %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Consultar documento %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Abrir ficheiro %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Visualizar imagem %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Reproduzir vídeo %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Abrir pasta %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "com"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "no canal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Procurar todos os seus documentos, <b>à medida que escreve</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Ficheiros de desenvolvimento"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Música"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Imagens"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Vídeos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Procurar por %s com Ferramenta de Procura Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Procurar todos os seus documentos com a Ferramenta de Procura Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Procura Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Procurar com a Ferramenta de Procura Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Procura Instantânea Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Procurar com Tracker, à medida que escreve"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Caminho : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Alterado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Tamanho : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Acedido : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Remetente : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comentário : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categorias : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Duração : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Género : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Rácio de Bits : <b>%s Kbps</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Ano : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " obtida com uma <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensões : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Data da Obtenção : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientação : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Distância Focal : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Tempo de Exposição : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Rácio de Bits : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codificado Em : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Rácio de Frames : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Assunto : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Número de Páginas : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Número de Palavras : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Criado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comentários : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KiB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MiB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GiB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-"Escreva aqui as referências que deseja adicionar, separadas por vírgulas"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Referências :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Procurar por Referência"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Eliminar Referência"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limitar o número de resultados apresentados a N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Procurar um serviço específico"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVIÇO"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Apresenta resultados mais detalhados, com o serviço e tipo MIME"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - procurar ficheiros com termos específicos"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Se especificar mais de uma referência, irá visualizar os elementos que "
-"contenham TODAS as referências especificadas (referência1 E referência2 - "
-"junção lógica)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "A lista de serviços reconhecidos é:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Utilize «%s --help» para mais informação."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: faltam os termos para procura"
-
-# ######## FROM HERE ###############
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: não há ligação com o serviço tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Certifique-se de que o serviço «trackerd» está a correr antes de utilizar "
-"este comando."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Serviço não reconhecido, a procurar em Outros Ficheiros...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: erro interno do tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Não foram encontrados resultados para a sua procura"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - apresentar o número de ficheiros indexados para cada serviço"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "a obter as estatísticas do índice"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Adicionar referência específica a um ficheiro"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "REFERÊNCIA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Remover referência especificada de um ficheiro"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Remover todas as referências de um ficheiro"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Listar todas as referências definidas"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Procurar ficheiros com a referência especificada"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FICHEIRO..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FICHEIRO... - manipular referências nos ficheiros"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para adicionar, remover ou procurar referências múltiplas ao mesmo tempo, "
-"utilize várias opções tais como:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: argumentos inválidos"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: ficheiro %s não encontrado"
-
-# # TO VERIFY (indexing)
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Pasta a excluir da indexação"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/CAMINHO/DIR"
-
-# # TO VERIFY
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Pasta a incluir na indexação"
-
-# # TO VERIFY (indexing)
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-"Pasta a pesquisar para a indexação apenas durante o ínicio da aplicação"
-
-# # TO VERIFY
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Desactivar quaisquer indexações ou observações a decorrer"
-
-# # TO VERIFY
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Valor que controla o nível de registo. Valores válidos são 0 (regista apenas "
-"erros), 1 (mínimo), 2 (detalhado) e 3 (depuração)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VALOR"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Valor a utilizar para limitar a indexação. O valor tem de estar entre 0-99 "
-"(por omissão 0), com valores mais baixos a corresponder a um aumento da "
-"velocidade de indexação"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-"Minimiza a utilização de memória mas pode diminuir a velocidade de indexação"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Tempo inicial de espera, antes de indexar, em segundos"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Idioma a utilizar para obtenção de raízes das palavras e lista de palavras "
-"de término (código de caracteres ISO 639-1 2)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "IDIOMA"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Forçar a reindexação de todo o conteúdo"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Tornar errors do tracker fatais"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- iniciar o serviço tracker"
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "PASTA"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para incluir ou excluir várias pastas ao mesmo tempo, una várias opções como:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Controlo e monitorização dos serviços de procura e indexação Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Applet do Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Inactivo"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "A indexar"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "A unir"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (parado pelo utilizador)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (parado pelo sistema)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (parado devido a uso da bateria)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "pastas"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "caixas de correio"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Reindexar o sistema?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"A indexação pode demorar bastante tempo. Tem a certeza que deseja reindexar?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Estatísticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Estatísticas de indexação</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"O Tracker é uma aplicação livre; pode redistribuí-la e/ou alterá-la sob as "
-"condições da Licença Pública Genérica GNU tal como publicada pela Free "
-"Software Foundation; ou a versão 2 da Licença ou (à sua escolha) qualquer "
-"versão posterior."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"O Tracker é distribuído na expectativa de que seja útil, mas SEM QUALQUER "
-"GARANTIA; sem mesmo a garantia implícita de COMERCIABILIDADE ou ADEQUAÇÃO A "
-"UM DETERMINADO PROPÓSITO. Consulte a Licença Pública Genérica GNU para mais "
-"detalhes."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Deverá ter recebido uma cópia da Licença Pública Genérica GNU juntamente com "
-"o Tracker; caso contrário, escreva para a Free Software Foundation, Inc., 59 "
-"Temple Place, Suite 330, Boston, MA 02111-1307 USA (em inglês)"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker é uma ferramenta destinada a extrair informação e metadados dos seus "
-"dados, de maneira a que possam ser procurados fácil e rapidamente."
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Autores do Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr "Nicolau Gonçalves <excentriko@gmail.com>"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Endereço de Internet do Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Parar Toda a Indexação"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Procurar"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Reindexar"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Preferências"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Preferências de _Indexação"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "E_statísticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_Sobre"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Sair"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"O seu computador está prestes a ser indexado de modo a permitir realizar "
-"procuras rápidas dos seu ficheiros e emails"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Pode colocar a indexação em pausa a qualquer momento e configurar as "
-"definições dos índices clicando com o botão direito aqui"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "O Tracker finalizou a indexação do seu sistema"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " em %d horas e %d minutos"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " em %d minutos e %d segundos"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " em %d segundos"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Pode realizar procuras agora clicando aqui"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Ficheiros:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Pastas:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Documentos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Imagens:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Música:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Vídeos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Texto:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Desenvolvimento:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Outros:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Aplicações:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Conversações:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "Emails:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animação</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Pausa Inteligente</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Visibilidade</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "An_imar ícone quando estiver a indexar"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Preferências da Applet"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"_Pára automaticamente se a indexação degrada o desempenho de outras "
-"aplicações em uso activo"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-"Pára _automaticamente toda a indexação enquanto o computador estiver em uso "
-"activo"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr ""
-"_Esconde ícone (excepto quando forem apresentadas mensagens ao utilizador)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Desligar"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "Dados têm de se reindexados"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Para as suas alterações terem efeito, Tracker tem de reindexar os seus "
-"ficheiros. Clique no botão Reindexação para reindexar agora os ficheiros, ou "
-"então esta acção irá ser efectuada da próxima vez que o serviço Tracker for "
-"reiniciado."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "_Reindexação"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "O serviço Tracker tem de ser reiniciado"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Para as suas alterações terem efeito, o serviço Tracker tem de ser "
-"reiniciado. Clique no botão Reiniciar para reiniciar o serviço agora."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "_Reiniciar"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configurar a indexação de ficheiros com o Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Procura e Indexação"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Pastas Observadas no Início</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Padrões de Ficheiros Ignorados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Caminhos Ignorados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Unir Ãndices</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Limites de Indexação (por ficheiro)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opções de Indexação</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>A indexar</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Gestão de energia</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Utilização de Recursos</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Início</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Criação de raízes das palavras</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Limitação</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Pastas Observadas</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Caixas de correio mbox adicionais a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Caminhos adicionais a indexar e pesquisar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Pastas adicionais a indexar durante o ínicio da aplicação (mas onde não se "
-"verifica se ocorreram actualizações posteriores)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Dinamarquês\n"
-"Holandês\n"
-"Inglês\n"
-"Finlandês\n"
-"Francês\n"
-"Alemão\n"
-"Húngaro\n"
-"Italiano\n"
-"Norueguês\n"
-"Português\n"
-"Russo\n"
-"Espanhol\n"
-"Sueco"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Desactivar todas as Indexações quando estiver a usar a bateria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr ""
-"Desactivar a pesquisa inicial dos índices quando estiver a usar a bateria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Activar a indexação de correio _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Activar a indexação de correio _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Activar a indexação de correio _Modest"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Activar a indexação de correio _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Activar _observações"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Activar i_ndexação"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Mais rápido"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Padrões dos ficheiros ignorados durante a indexação:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Ficheiros"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Geral"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Gerar Mini_aturas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Ficheiros ignorados"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "_Atraso na indexação: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Conteúdo do _ficheiro de índice"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indexar _pastas montadas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indexar e observar a minha _pasta pessoal"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Velocidade de indexação:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "_Limite máximo de texto a Indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Número máximo de _palavras únicas a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Raizes de caminhos a serem ignorados durante a indexação:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Realiza junções rápidas dos índices (pode afectar o desempenho do sistema)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Desempenho"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Mais lento"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Preferências do Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Idioma:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimizar a utilização de memória (diminui a velocidade de indexação)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "_Utilizar memória adicional para indexar mais rapidamente"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "segundos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Procurar um serviço específico"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Emails"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Todos os Ficheiros"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Pastas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documentos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Texto"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Desenvolvimento"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Registos de Diálogos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplicações"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Histórico de Internet"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Abrir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Abrir _Pasta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Mover para o Lixo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Guardar Resultado Como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Falhou a conversão de tipo de caracteres para «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Ocorreu o seguinte erro:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Erro"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Quereria dizer"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "A sua pesquisa não obteve resultados."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Ferramenta de Procura Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Ferramenta de Procura Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Resultados da pesquisa: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "nenhuma pesquisa realizada"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Vista em Lista"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ãcone"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nome"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Categorias"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d de %d ítems"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d item"
-msgstr[1] "%d itens"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"Não foi possível estabelecer ligação ao serviço de procura que deve estar "
-"ocupado"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Procurar:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"O Tracker ainda está a indexar pelo que nem todos os resultados da procura "
-"estão disponíveis por enquanto"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr ""
-"Introduza um termo de procura com múltiplas palavras separadas por vírgulas."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "entrada_procura"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Prima para realizar uma procura."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Não foi possível abrir o documento de ajuda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Tem a certeza de que quer abrir %d documento?"
-msgstr[1] "Tem a certeza de que quer abrir %d documentos?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Irá abrir %d nova janela."
-msgstr[1] "Irá abrir %d novas janelas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Não foi possível abrir o documento \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Não foi possível abrir a pasta \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "O gestor de ficheiros nautilus não se encontra em execução."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Incapaz de abrir a aplicação"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "O documento não existe."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr ""
-"Não existe nenhum visualizador instalado capaz de apresentar o documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Tem a certeza de que deseja abrir %d pasta?"
-msgstr[1] "Tem a certeza de que deseja abrir %d pastas?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Incapaz de mover \"%s\" para o lixo."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Deseja apagar \"%s\" definitivamente?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "O Lixo está indisponível. Incapaz de mover \"%s\" para o lixo."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Incapaz de apagar \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Falha ao mover \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Falha ao apagar \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Activar para visualizar este email"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Gravar o Resultado da Pesquisa Como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Incapaz de gravar o documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Não seleccionou um nome de documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Incapaz de gravar o documento \"%s\" em \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "O documento \"%s\" já existe. Deseja substituí-lo?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Se substituir um ficheiro existente, o seu conteúdo será sobreposto."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Substituir"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "O nome do documento que selecionou é uma pasta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Poderá não ter permissões de escrita no documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Localizar documentos e pastas neste computador por nome ou conteúdo "
-"utilizando o Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Erro no GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "hoje às %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "ontem às %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y às %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "atalho (inválido)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "atalho para %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Serviço de procura e indexação Tracker"
diff --git a/po/pt_BR.po b/po/pt_BR.po
deleted file mode 100644
index 08899d52e..000000000
--- a/po/pt_BR.po
+++ /dev/null
@@ -1,1555 +0,0 @@
-# Brazilian Portuguese translation of Tracker.
-# Copyright (C) 2007-2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the tracker package.
-# Luiz Armesto <luiz.armesto@gmail.com>, 2007, 2008.
-# Leonardo Ferreira Fontenelle <leo.fontenelle@gmail.com>, 2008.
-# Henrique P Machado <zehrique@gmail.com>, 2008.
-# Fábio Nogueira <deb-user-ba@ubuntu.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-10 09:51-0300\n"
-"PO-Revision-Date: 2008-06-07 23:34-0300\n"
-"Last-Translator: Henrique P Machado <zehrique@gmail.com>\n"
-"Language-Team: Brazilian Portuguese <gnome-l10n-br@listas.cipsga.org.br>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Language: Portuguese\n"
-"X-Poedit-Country: BRAZIL\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Iniciar %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Ver a conversa %s\n"
-"%s %s\n"
-"de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mail de %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Ouvir a música %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Ver o documento %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Abrir o arquivo %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Ver a imagem %s\n"
-"em %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Assistir o vídeo %s\n"
-"com %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Abrir a pasta %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "com"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "no canal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Pesquisar todos os seus documentos, <b>conforme você digita</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Arquivos de desenvolvimento"
-
-# N.T.: Não existe plural de "music" em inglês, mas por consistência com o restante, colocamos plural no português.
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Músicas"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Imagens"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Vídeos"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Pesquisar por %s com a Ferramenta de pesquisa do Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr ""
-"Pesquisar todos os seus documentos com a Ferramenta de pesquisa do Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Ferramenta de pesquisa do Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Pesquisar com a Ferramenta de pesquisa do Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Pesquisa incremental do Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Pesquisar com o Tracker, conforme você digita"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Caminho : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Modificado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Tamanho : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Acessado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Remetente : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Data : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Comentário : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Categorias : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Duração : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Gênero : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Taxa de bits : <b>%s Kbps</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Ano : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " obtida com uma <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensões : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Data da obtenção : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientação : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Flash : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Distância focal : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Tempo de exposicão : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Taxa de bits : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Codificado em : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Quadros por segundo : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Assunto : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Número de páginas : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Número de palavras : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Criado : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Comentários : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Digite aqui as etiquetas que deseja adicionar, separadas por vírgulas"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Etiquetas :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Pesquisar por etiqueta"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Remover etiqueta"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Limitar o número de resultados exibidos a N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Pesquisar por um serviço específico"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SERVIÇO"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Exibir resultados mais detalhados com serviço e tipo MIME"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - procurar arquivos com termos específicos"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Se mais de um termo for especificado, serão exibidos os itens que contenham "
-"TODOS os termos especificados (termo1 E termo2 - junção lógica)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "A lista de serviços reconhecidos é:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Tente \"%s --help\" para mais informações."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: faltam termos para pesquisa"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: sem conexão com o serviço tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Certifique-se de que o \"trackerd\" esteja sendo executado antes de chamar "
-"este comando."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Serviço não reconhecido, pesquisando em Outros arquivos...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: erro interno do tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Nenhum resultado encontrado correspondente à sua consulta"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - mostrar o número de arquivos indexados para cada serviço"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "obtendo estatísticas do índice"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Adiciona a etiqueta especificada a um arquivo"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "ETIQUETA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Remove a etiqueta especificada de um arquivo"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Remove todas as etiquetas de um arquivo"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Lista todas as etiquetas definidas"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Pesquisa arquivos com a etiqueta especificada"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ARQUIVO..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ARQUIVO... - manipula etiquetas nos arquivos"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para adicionar, remover ou pesquisar várias etiquetas ao mesmo tempo, junte "
-"várias opções como:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: argumentos inválidos"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: arquivo %s não encontrado"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Diretório para excluir da indexação"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/CAMINHO/DIR"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Diretório para incluir na indexação"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Diretório para indexar apenas na inicialização"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Desabilitar qualquer indexação ou monitoramento em atividade"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Valor que controla o nível de registro. Valores válidos são 0 (registra/"
-"exibe apenas erros), 1 (mínimo), 2 (detalhado) e 3 (depuração)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VALOR"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Valor a usar para limitar a indexação. O valor deve estar entre 0-99 (padrão "
-"é 0), valores menores aumentam a velocidade de indexação"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimiza o uso de memória, mas pode diminuir a velocidade de indexação"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Tempo inicial de espera, antes de indexar, em segundos"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Idioma a usar para a lista de palavras derivadas e de parada (código de dois "
-"caracteres ISO 639-1)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "IDIOMA"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Forçar a reindexação de todo o conteúdo"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Tornar fatais os erros do tracker"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- inicia o serviço tracker"
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "DIRETÓRIO"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Para incluir ou excluir vários diretórios ao mesmo tempo, junte várias "
-"opções como:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Controla e monitora o serviço de pesquisa e indexação do Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Miniaplicativo Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Ocioso"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indexando"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Unindo"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (pausado pelo usuário)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (pausado pelo sistema)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (pausado pela bateria)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "pastas"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "caixas de correio"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Reindexar seu sistema?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"A indexação pode levar um um bom tempo. Tem certeza que quer reindexar?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Estatísticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Estatísticas do índice</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker é software livre; você pode redistribuir e/ou modificá-lo sob os "
-"termos da Licença Pública Geral GNU como a publicada pela Free Software "
-"Foundation; mesmo na versão 2 da licença ou (se preferir) qualquer versão "
-"posterior."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Traker é distribuído na esperança de que será útil, mas sem NENHUMA "
-"GARANTIA; sem qualquer garantia implícita de MERCADO ou CONVENIÊNCIA A "
-"QUALQUER PROPÓSITO PARTICULAR. Veja a Licença Pública Geral GNU para maiores "
-"detalhes."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Você deve ter recebido uma cópia da Licença Pública Geral GNU com o Tracker; "
-"se não, escreva para a Free Software Foundation, Inc., 59 Temple Place, "
-"Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker é uma ferramenta desenhada para extrair metadados sobre seus dados "
-"pessoais para que sejam pesquisados fácil e rapidamente"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Os autores do Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Luiz Armesto <luiz.armesto@gmail.com>/nLeonardo Ferreira Fontenelle <leo."
-"fontenelle@gmail.com>/nHenrique P Machado <zehrique@gmail.com>/nFábio "
-"Nogueira <deb-user-ba@ubuntu.com>"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Site do Tracker na web"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Pausar toda indexação"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Pesquisar"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_Reindexar"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "Pre_ferências"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Preferências do i_ndexador"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "Es_tatísticas"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_Sobre"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Sair"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Seu computador está para ser indexado, assim você pode realizar pesquisas "
-"rápidas de seus arquivos e e-mails"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Você pode pausar a indexação a qualquer momento e configurar as preferências "
-"de indexação clicando com o botão direito aqui"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker terminou de indexar seu sistema"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " em %d horas e %d minutos"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " em %d minutos e %d segundos"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " em %d segundos"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Você pode agora realizar pesquisas clicando aqui"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Arquivos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Pastas:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Documentos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Imagens:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Música:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Vídeos:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Texto:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Desenvolvimento:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Outros:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Aplicações:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Conversas:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-mails:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animação</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Pausa inteligente</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Visibilidade</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animar ícone quando estiver _indexando"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Preferências do mini-aplicativo"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"_Pausar automaticamente se a indexação degradar a performance de outros "
-"aplicativos ativos e em uso"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr ""
-"Pausar _automaticamente toda a indexação quando o computador estiver ativo e "
-"em uso"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Esconder ícone (exceto quando exibir mensagens para o usuário)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_Desligado"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "Dados precisam ser reindexados"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Para que suas mudanças tenham efeito, o Tracker precisa reindexar os seus "
-"arquivos. Clique no botão Reindexar para iniciar a reindexação agora, senão "
-"esta ação será realizada a próxima vez que o serviço Tracker for reiniciado."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "_Reindexar"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "O serviço Tracker precisa ser reiniciado"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Para que suas mudanças tenham efeito, o serviço Tracker deve ser reiniciado. "
-"Clique no botão Reiniciar para reiniciar o serviço agora."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "_Reiniciar"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Configurar a indexação de arquivos com o Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Pesquisa e Indexação"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Diretórios Vasculhados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Padrões de arquivo ignorados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Caminhos ignorados</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Mesclagem de índices</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Limites de indexação (por arquivo)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Opções de indexação</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexação</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Gerenciamento de energia</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Uso de recursos</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Início</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Derivado</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Limitação</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Monitorar diretórios</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Caixas de correio mbox adicionais a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Caminhos adicionais a indexar e monitorar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Caminhos adicionais para indexar na inicialização (mas não para monitorar "
-"atualizações):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Dinamarquês\n"
-"Holandês\n"
-"Inglês\n"
-"Finlandês\n"
-"Francês\n"
-"Alemão\n"
-"Húngaro\n"
-"Italiano\n"
-"Norueguês\n"
-"Português\n"
-"Russo\n"
-"Espanhol\n"
-"Sueco"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Desabilitar toda indexação enquanto usa bateria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "Desabilitar limpeza inicial do índice enquanto usa bateria"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Habilitar a indexação de e-mails do _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Habilitar a indexação de e-mails do _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Habilitar indexação de email _modesta"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Habilitar a indexação de e-mails do _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Habilitar _monitoramento"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Habilitar i_ndexação"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Mais Rápido"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Padrões dos arquivos a ignorar durante a indexação:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Arquivos"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Geral"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Gerar _miniaturas"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Arquivos ignorados"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "_Atraso na indexação: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Conteúdo do _arquivo de índice"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indexar _diretórios montados"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indexar e monitorar a minha pasta _pessoal"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Velocidade de indexação:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "_Quantidade máxima de texto a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Número máximo de _palavras únicas a indexar:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Caminhos a serem ignorados durante a indexação:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr ""
-"Realizar mesclagem de índices rápida (pode afetar a performance do sistema)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Desempenho"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Mais lento"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Preferências do Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Idioma:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimizar uso de memória (indexação mais lenta)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "_Usar memória adicional para indexação rápida"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "segundos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Pesquisar um serviço específico"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-mails"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Todos os arquivos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Pastas"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Documentos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Texto"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Desenvolvimento"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Registros de bate-papo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplicações"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Histórico da web"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Abrir"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Abrir _pasta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Mo_ver para a lixeira"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Salvar resultado como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Falha na conversão do tipo de caracteres para \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "O seguinte erro ocorreu:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Erro"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Você quis dizer"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "A sua pesquisa não obteve resultados."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Ferramenta de pesquisa do Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Ferramenta de pesquisa do Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Resultados da pesquisa: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "nenhuma pesquisa realizada"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Visualização em lista"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ãcone"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Nome"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Categorias"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d de %d itens"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d item"
-msgstr[1] "%d itens"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr ""
-"Não foi possível conectar ao serviço de pesquisa, ele pode estar ocupado"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Pesquisar:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker ainda está indexando, então nem todos os resultados da pesquisa "
-"estão disponíveis"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Digite um termo de pesquisa com várias palavras separadas por espaços."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "entrada_pesquisa"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Clique para realizar uma pesquisa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Não foi possível abrir o documento de ajuda."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Tem a certeza de que quer abrir %d documento?"
-msgstr[1] "Tem a certeza de que quer abrir %d documentos?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Isso abrirá %d nova janela."
-msgstr[1] "Isso abrirá %d novas janelas."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Não foi possível abrir o documento \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Não foi possível abrir a pasta \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "O gerenciador de arquivos nautilus não está sendo executado."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Não foi possível abrir a aplicação"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "O documento não existe."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Não existe nenhum visualizador instalado capaz de exibir o documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Tem certeza de que deseja abrir %d pasta?"
-msgstr[1] "Tem certeza de que deseja abrir %d pastas?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Não foi possível mover \"%s\" para lixeira."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Deseja remover \"%s\" definitivamente?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr ""
-"A lixeira não está disponível. Não foi possível mover \"%s\" para a lixeira."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Não foi possível remover \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Falha ao mover \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Falha ao excluir \"%s\": %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Ativar para ver este e-mail"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Salvar o resultado da pesquisa como..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Não foi possível gravar o documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Você não selecionou um nome de documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Não foi possível gravar o documento \"%s\" em \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "O documento \"%s\" já existe. Deseja substituí-lo?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Se substituir um arquivo existente, o seu conteúdo será sobrescrito."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Substituir"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "O nome do documento que você selecionou é uma pasta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Você pode não ter permissões de escrita no documento."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"Localizar documentos e pastas neste computador por nome ou conteúdo usando o "
-"Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Erro no GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "hoje às %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "ontem às %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y às %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "atalho (inválido)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "atalho para %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Serviço de pesquisa e indexação do Tracker"
-
-#~ msgid "_Search..."
-#~ msgstr "_Pesquisar..."
-
-#~ msgid "Search:"
-#~ msgstr "Pesquisar:"
-
-#~ msgid "Status:"
-#~ msgstr "Status:"
-
-#~ msgid "Progress:"
-#~ msgstr "Progresso:"
-
-#~ msgid "Indexing in progress"
-#~ msgstr "Indexação em progresso"
-
-#~ msgid "Indexing completed"
-#~ msgstr "Indexação completa"
-
-#~ msgid "Indexes are being merged"
-#~ msgstr "Ãndices estão sendo mesclados"
-
-#~ msgid "Paused while on battery power"
-#~ msgstr "Pausado enquanto usa bateria"
-
-#~ msgid "Paused temporarily"
-#~ msgstr "Pausado temporariamente"
-
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "Tracker está agora mesclando índices, o que pode diminuir a performance "
-#~ "do sistema por vários minutos\n"
-#~ "\n"
-#~ "Você pode pausá-lo clicando com o botão direito aqui"
-
-#~ msgid ""
-#~ "Your system must be re-indexed for your changes to take effect. Re-index "
-#~ "now?"
-#~ msgstr ""
-#~ "Seu sistema deve ser reindexado para que suas alterações tenham efeito. "
-#~ "Reindexar agora?"
-
-#~ msgid ""
-#~ "Tracker indexer needs to be restarted for your changes to take effect. "
-#~ "Restart now?"
-#~ msgstr ""
-#~ "O indexador do Tracker deve ser reiniciado para que suas alterações "
-#~ "tenham efeito. Reiniciar agora?"
diff --git a/po/ru.po b/po/ru.po
deleted file mode 100644
index cad9a7f14..000000000
--- a/po/ru.po
+++ /dev/null
@@ -1,1031 +0,0 @@
-# translation of ru.po to Russian
-# Copyright (C) 2006, Free Software Foundation
-# This file is distributed under the same license as the tracker package.
-#
-# Vasiliy Faronov <qvvx@yandex.ru>, 2007.
-# Alexandre Rostovtsev <tetromino@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: ru\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 04:02+0200\n"
-"PO-Revision-Date: 2007-07-18 23:07-0400\n"
-"Last-Translator: Alexandre Rostovtsev <tetromino@gmail.com>\n"
-"Language-Team: Russian <gnome-cyr@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Служба поиÑка и индекÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Tracker"
-
-# Со Ñтрочной - в контекÑте интерфейÑа, руÑÑкоÑзычному человеку так приÑтнее
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "путь : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "изменён : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "размер : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "дата доÑтупа : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "тип MIME : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "отправитель : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "дата : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "комментарий : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "категории : <b>%s</b>"
-
-# перевод не идеальный, но Ñлово "продолжительноÑÑ‚ÑŒ"
-# не влизает в интерфейÑ
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "длина : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "жанр : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "битрейт : <b>%s кбит/Ñ</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "год : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "кодек : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ", фотоаппарат — <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "размер : <b>%d × %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "дата Ñнимка : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Ð¾Ñ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "вÑпышка : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "фокуÑное раÑÑтоÑние : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Ð²Ñ€ÐµÐ¼Ñ ÑкÑпозиции : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "автор : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "битрейт : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "кодек : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "чаÑтота кадров : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "тема : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Ñтраниц : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Ñлов : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "комментарии : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f Кбайт"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f Мбайт"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f Гбайт"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr "неизв."
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:251
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Введите ÑпиÑок меток которые вы хотите добавить, отделÑÑ Ð¸Ñ… запÑтыми"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:361
-msgid "Tags :"
-msgstr "метки :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:383
-msgid "_Search For Tag"
-msgstr "_Ðайти файлы Ñ Ð¼ÐµÑ‚ÐºÐ¾Ð¹"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:395
-msgid "_Remove Tag"
-msgstr "_СнÑÑ‚ÑŒ метку"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Показывать не больше N результатов"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "ИÑкать в определённой Ñлужбе"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "СЛУЖБÐ"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Показывать более подробные результаты, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ñлужбу и MIME-тип"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "СЛОВО... - поиÑк файлов по заданным Ñловам"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"При указании более одного Ñлова будут найдены Ñлементы, подходÑщие \n"
-"одновременноко ко ВСЕМ указанным Ñловам (Ñлово1 И Ñлово2, то еÑÑ‚ÑŒ \n"
-"логичеÑÐºÐ°Ñ ÐºÐ¾Ð½ÑŠÑŽÐ½ÐºÑ†Ð¸Ñ)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Перечень раÑпознаваемых Ñлужб:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Чтобы получить больше информации, попробуйте «%s --help»."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: не указаны уÑÐ»Ð¾Ð²Ð¸Ñ Ð¿Ð¾Ð¸Ñка"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: нет ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð´ÐµÐ¼Ð¾Ð½Ð¾Ð¼ tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-"Прежде, чем выполнÑÑ‚ÑŒ данную команду, убедитеÑÑŒ, что запущен «trackerd»."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Служба не опознана, производитÑÑ Ð¿Ð¾Ð¸Ñк в прочих файлах...\n"
-
-#: ../src/libtracker/tracker-search.c:164 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° Tracker: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Ðе найдено ничего, ÑоответÑтвующего вашему запроÑу"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " — показать чиÑло проиндекÑированных файлов Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ñлужбы"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "извлечение ÑтатиÑтики индекÑированиÑ"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Добавить указанную метку к файлу"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "МЕТКÐ"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "СнÑÑ‚ÑŒ указанную метку Ñ Ñ„Ð°Ð¹Ð»Ð°"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "СнÑÑ‚ÑŒ вÑе метки Ñ Ñ„Ð°Ð¹Ð»Ð°"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "ПеречиÑлить метки на файлах"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Ðайти файлы Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ меткой"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "ФÐЙЛ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "ФÐЙЛ... - управление метками на файлах"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Чтобы добавить, удалить или найти Ñразу неÑколько меток, объедините \n"
-"неÑколько параметров таким образом:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: неверные аргументы"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: файл %s не найден"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Directory to exclude from indexing"
-msgstr "Каталог Ð´Ð»Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· индекÑированиÑ"
-
-#: ../src/trackerd/trackerd.c:158 ../src/trackerd/trackerd.c:159
-#: ../src/trackerd/trackerd.c:160
-msgid "/PATH/DIR"
-msgstr "/ПУТЬ/КÐТ"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Directory to include in indexing"
-msgstr "Каталог Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² индекÑирование"
-
-#: ../src/trackerd/trackerd.c:160
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Каталог Ð´Ð»Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· индекÑированиÑ"
-
-#: ../src/trackerd/trackerd.c:161
-msgid "Disable any indexing or watching taking place"
-msgstr "Отключить вÑÑ‘ индекÑирование и наблюдение"
-
-#: ../src/trackerd/trackerd.c:162
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Значение, указывающее уровень подробноÑти журналированиÑ. ДопуÑтимые "
-"значениÑ: 0 (минимально, по умолчанию), 1 (подробно) и 2 (Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸)"
-
-#: ../src/trackerd/trackerd.c:162 ../src/trackerd/trackerd.c:163
-msgid "VALUE"
-msgstr "ЗÐÐЧЕÐИЕ"
-
-#: ../src/trackerd/trackerd.c:163
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-20 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Ограничение ÑкороÑти индекÑированиÑ. Должно быть в интервале 0—20 (по "
-"умолчанию — 0); чем меньше значение, тем выше ÑкороÑÑ‚ÑŒ индекÑированиÑ"
-
-#: ../src/trackerd/trackerd.c:164
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Уменьшает иÑпользование памÑти, но может замедлить индекÑирование"
-
-#: ../src/trackerd/trackerd.c:165
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Пауза перед началом индекÑированиÑ, в Ñекундах"
-
-#: ../src/trackerd/trackerd.c:166
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-"Язык Ð´Ð»Ñ ÑпиÑков корней и Ñтоповых Ñлов (двухбуквенный код ÑоглаÑно ISO 639-"
-"1)"
-
-#: ../src/trackerd/trackerd.c:166
-msgid "LANG"
-msgstr "ЯЗЫК"
-
-#: ../src/trackerd/trackerd.c:167
-msgid "Force a re-index of all content"
-msgstr "Принудительно переиндекÑировать вÑÑ‘"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2047
-msgid "- start the tracker daemon"
-msgstr "- запуÑк демона Tracker"
-
-#: ../src/trackerd/trackerd.c:2048 ../src/trackerd/trackerd.c:2049
-msgid "DIRECTORY"
-msgstr "КÐТÐЛОГ"
-
-#: ../src/trackerd/trackerd.c:2056
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Чтобы включить или иÑключить Ñразу неÑколько каталогов, объедините неÑколько "
-"параметров таким образом:"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "ÐаÑтройка индекÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñлужбой Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Indexing Preferences"
-msgstr "Параметры индекÑированиÑ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Игнорируемые шаблоны имён файлов</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Игнорируемые пути</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-#, fuzzy
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Режим индекÑированиÑ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-#, fuzzy
-msgid "<b>Indexing options</b>"
-msgstr "<b>Режим индекÑированиÑ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-#, fuzzy
-msgid "<b>Indexing</b>"
-msgstr "<b>Режим индекÑированиÑ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Mailboxes</b>"
-msgstr "<b>Почтовые Ñщики</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-#, fuzzy
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Службы</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Services</b>"
-msgstr "<b>Службы</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>ЗапуÑк</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-#, fuzzy
-msgid "<b>Stemming</b>"
-msgstr "<b>Метод опроÑа файловой ÑиÑтемы</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Ограничение ÑкороÑти</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-#, fuzzy
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Службы</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox mailboxes to index:"
-msgstr ""
-"Дополнительные почтовые Ñщики в формате mbox, которые будут индекÑироватьÑÑ:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-#, fuzzy
-msgid "Additional paths to index and watch:"
-msgstr "Дополнительные пути, которые будут индекÑироватьÑÑ:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid "Enable Evolution email indexing"
-msgstr "Включить индекÑирование почтового Ñщика Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:18
-msgid "Enable KMail email indexing"
-msgstr "Включить индекÑирование почтового Ñщика KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:19
-msgid "Enable Thunderbird email indexing"
-msgstr "Включить индекÑирование почтового Ñщика Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:20
-msgid "Enable _Indexing"
-msgstr "Включить _индекÑирование"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:21
-#, fuzzy
-msgid "Enable _Watching"
-msgstr "Включить _индекÑирование"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:22
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:23
-msgid "File patterns to ignore during indexing:"
-msgstr "Игнорировать Ñледующие шаблоны имён файлов при индекÑировании:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:24
-msgid "Generate _thumbnails"
-msgstr "Создавать _миниатюры"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:25
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:26
-msgid "Index _file contents"
-msgstr "ИндекÑировать _Ñодержимое файлов"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:27
-#, fuzzy
-msgid "Index and watch my home _directory"
-msgstr "ИндекÑировать домашний каталог"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:28
-msgid "Maximum _amount of text to Index (KB)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Maximum number of unique _words to index"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "P_erformance"
-msgstr "П_роизводительноÑÑ‚ÑŒ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Path roots to be ignored during indexing:"
-msgstr "Игнорировать Ñледующие корни путей при индекÑировании:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Seconds"
-msgstr "Ñекунд"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Tracker Preferences"
-msgstr "ÐаÑтройки Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-#, fuzzy
-msgid "_Emails"
-msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-#, fuzzy
-msgid "_Files"
-msgstr "Ð’Ñе файлы"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "_General"
-msgstr "_Общие"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-#, fuzzy
-msgid "_Ignored Files"
-msgstr "<b>Игнорируемые шаблоны имён файлов</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-#, fuzzy
-msgid "_Indexing speed:"
-msgstr "И_ндекÑирование"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-#, fuzzy
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "Уменьшает иÑпользование памÑти, но может замедлить индекÑирование"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "_Use additonal memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid ""
-"danish\n"
-"dutch\n"
-"english\n"
-"finnish\n"
-"french\n"
-"german\n"
-"italian\n"
-"norwegian\n"
-"portugese\n"
-"russian\n"
-"spanish\n"
-"swedish"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "ИÑкать в заданной Ñлужбе"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Ð’Ñе файлы"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Папки"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Документы"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "ИзображениÑ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Музыка"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Видео"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1224
-msgid "Text"
-msgstr "ТекÑÑ‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Разработка"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "ИÑтории мгновенных Ñообщений"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "ПриложениÑ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Открыть"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Открыть _папку"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_Удалить в корзину"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Сохранить результаты как..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Ðе удалоÑÑŒ преобразовать набор Ñимволов в «%s»"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occured :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:656
-msgid "Did you mean"
-msgstr "Может, вы имели в виду"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:687
-msgid "Your search returned no results."
-msgstr "Ðе найдено ничего, ÑоответÑтвующего вашему запроÑу."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:702
-msgid "Tracker Search Tool-"
-msgstr "ПоиÑÐºÐ¾Ð²Ð°Ñ ÑиÑтема Tracker — "
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:863
-#: ../src/tracker-search-tool/tracker-search-tool.c:2199
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "ПоиÑÐºÐ¾Ð²Ð°Ñ ÑиÑтема Tracker"
-
-# Ð’ данном интерфейÑе, единÑтвенное лингвиÑтичеÑки-некорÑвое решение —
-# Ñтот Ñрлык лучше оÑтавить пуÑтым, а веÑÑŒ перевод производить в поÑледующем Ñрлыке
-#: ../src/tracker-search-tool/tracker-search-tool.c:1053
-msgid "Search _results: "
-msgstr " "
-
-# У Ð½Ð°Ñ Ð²Ð¼ÐµÑто "Search results:" проÑто " "
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1059
-msgid "no search performed"
-msgstr "ПоиÑк не был произведён"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1113
-#: ../src/tracker-search-tool/tracker-search-tool.c:1274
-msgid "List View"
-msgstr "СпиÑок"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1185
-msgid "Icon"
-msgstr "Значок"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1197
-msgid "Name"
-msgstr "ИмÑ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1292
-msgid "_Categories"
-msgstr "_Категории"
-
-# У Ð½Ð°Ñ Ð²Ð¼ÐµÑто "Search results:" проÑто " "
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1572
-#, c-format
-msgid "%d - %d of %d hits"
-msgstr "%d—%d из %d найденных результатов"
-
-# С пропиÑной, так как у Ð½Ð°Ñ Ð²Ð¼ÐµÑто "Search results:" проÑто " "
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1575
-#, c-format
-msgid "%d item"
-msgid_plural "%d hits"
-msgstr[0] "Ðайден %d результат"
-msgstr[1] "Ðайдено %d результата"
-msgstr[2] "Ðайдено %d результатов"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1976
-msgid "_Search:"
-msgstr "_ИÑкать:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1996
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Введите поиÑковый запроÑ, отделÑÑ Ñлова пробелами."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2043
-msgid "Click to perform a search."
-msgstr "Ðажмите Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¸Ñка."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Ðе удалоÑÑŒ открыть Ñправочный документ."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Ð’Ñ‹ дейÑтвительно хотите открыть %d документ?"
-msgstr[1] "Ð’Ñ‹ дейÑтвительно хотите открыть %d документа?"
-msgstr[2] "Ð’Ñ‹ дейÑтвительно хотите открыть %d документов?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:676
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Это откроет %d отдельное окно."
-msgstr[1] "Это откроет %d отдельных окна."
-msgstr[2] "Это откроет %d отдельных окон."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Ðе удалоÑÑŒ открыть документ «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Ðе удалоÑÑŒ открыть папку «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Файловый менеджер Nautilus не запущен."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:615
-msgid "Application could not be opened"
-msgstr "Ðе удалоÑÑŒ открыть приложение"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:630
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:950
-msgid "The document does not exist."
-msgstr "Документ не ÑущеÑтвует."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:646
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Ðе уÑтановлена программа проÑмотра, ÑпоÑÐ¾Ð±Ð½Ð°Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ‚ÑŒ Ñтот документ."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:671
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Ð’Ñ‹ дейÑтвительно хотите открыть %d папку?"
-msgstr[1] "Ð’Ñ‹ дейÑтвительно хотите открыть %d папки?"
-msgstr[2] "Ð’Ñ‹ дейÑтвительно хотите открыть %d папок?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:775
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Ðе удалоÑÑŒ перемеÑтить «%s» в корзину."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:806
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Ð’Ñ‹ хотите удалить «%s» без возможноÑти воÑÑтановлениÑ?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:809
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Корзина недоÑтупна. Ðе удалоÑÑŒ перемеÑтить «%s» в корзину."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:848
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Ðе удалоÑÑŒ удалить «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:972
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Ðе удалоÑÑŒ перемеÑтить «%s»: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1006
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Ðе удалоÑÑŒ удалить «%s»: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1292
-msgid "Activate to view this email"
-msgstr "Щелкните, чтобы прочеÑÑ‚ÑŒ Ñто пиÑьмо"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1468
-msgid "Save Search Results As..."
-msgstr "Сохранить результаты поиÑка как..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1503
-msgid "Could not save document."
-msgstr "Ðе удалоÑÑŒ Ñохранить документ."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1504
-msgid "You did not select a document name."
-msgstr "Ð’Ñ‹ не выбрали Ð¸Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1534
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Ðе удалоÑÑŒ Ñохранить документ «%s» в «%s»."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1568
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Документ «%s» уже ÑущеÑтвует. Ð’Ñ‹ хотите заменить его?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1572
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "ЕÑли вы замените ÑущеÑтвующий файл, его Ñодержимое будет утерÑно."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1587
-msgid "_Replace"
-msgstr "_Заменить"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1637
-msgid "The document name you selected is a folder."
-msgstr "Ð˜Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°, которое вы выбрали, ÑвлÑетÑÑ Ð¿Ð°Ð¿ÐºÐ¾Ð¹."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1686
-msgid "You may not have write permissions to the document."
-msgstr "Возможно, у Ð²Ð°Ñ Ð½ÐµÑ‚ прав на запиÑÑŒ в Ñтот документ."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"ПоиÑк документов и папок на Ñтом компьютере по имени или Ñодержимому Ñ "
-"помощью Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Ошибка GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "ÑÐµÐ³Ð¾Ð´Ð½Ñ Ð² %X"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "вчера в %X"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%c"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "ÑÑылка (разорваннаÑ)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "ÑÑылка на %s"
-
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>Метаданные о файлах</b>"
-
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>Общие</b>"
-
-#~ msgid "Enable Index Throttling"
-#~ msgstr "Ограничит ÑкороÑÑ‚ÑŒ индекÑирование"
-
-#~ msgid "Initial Sleep: "
-#~ msgstr "Пауза перед началом индекÑированиÑ: "
-
-#~ msgid "Normal Mode"
-#~ msgstr "Обычный режим"
-
-#~ msgid "Polling Interval: "
-#~ msgstr "Интервал опроÑа файловой ÑиÑтемы: "
-
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Режим меньшего иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ð¼Ñти"
-
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "ÐвтоматичеÑки запуÑкать Ñлужбу _индекÑированиÑ"
-
-#~ msgid "Start _monitoring service automatically"
-#~ msgstr "ÐвтоматичеÑки запуÑкать Ñлужбу _наблюдениÑ"
-
-#~ msgid "Throttling Level: "
-#~ msgstr "Ограничение ÑкороÑти: "
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Режим турбо"
-
-#~ msgid "_Privacy"
-#~ msgstr "_КонфиденциальноÑÑ‚ÑŒ"
diff --git a/po/sk.po b/po/sk.po
deleted file mode 100644
index 7c3264173..000000000
--- a/po/sk.po
+++ /dev/null
@@ -1,1537 +0,0 @@
-# translation of tracker to Slovak
-# Slovak translation of Tracker
-# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc
-# This file is distributed under the same license as the tracker package.
-# Pavol KlaÄanský <pavolzetor@gmail.com>, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-18 17:34+0200\n"
-"PO-Revision-Date: 2008-08-08 17:33+0200\n"
-"Last-Translator: Pavol KlaÄanský <pavolzetor@gmail.com>\n"
-"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Spustiť %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Sledovať rozhovor %s\n"
-"%s %s\n"
-"od %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-mail od %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"PoÄúvaÅ¥ hudbu %s\n"
-"pomocou programu %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Prezrieť dokument %s\n"
-"pomocou programu %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Otvoriť súbor %s\n"
-"pomocou programu %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Prezrieť obrázok %s\n"
-"pomocou programu %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Sledovať video %s\n"
-"pomocou programu %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"OtvoriÅ¥ prieÄinok %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "s"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "v kanáli"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Hľadajte vo svojich dokumentoch, <b>hneÄ ako píšete</>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Vývojové súbory"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Hudba"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Obrázky"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videá"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Hľadať %s s nástrojom na hľadanie Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Hľadať všetky vaše dokumenty nástrojom na hľadanie Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Hľadanie Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Hľadať s nástrojom na hľadanie Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Živé hľadanie Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "HľadaÅ¥ s Tracker, to Äo napíšete"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Umiestnenie : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Zmenený : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Veľkosť : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Použitý : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Odosielateľ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Dátum : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Komentár : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategórie : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Trvanie : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Žáner : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitová rýchlosť : <b>%s Kb/s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Rok : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " vytvorený pomocou <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Rozmery : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Dátum vytvorenia : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientácia : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Blesk : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Ohnisková vzdialenosť : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Doba expozície : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Autor : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitová rýchlosť : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Kódované v : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "PoÄet obrázkov za sekundu : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Predmet : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "PoÄet strán : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "PoÄet slov : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Vytvorený : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Komentáre : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Neznámy"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Zadajte emblémy, ktoré chcete sem pridaÅ¥, oddeľujú sa Äiarkami"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Emblémy :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Hľadať emblém"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "O_dstrániť emblém"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Obmedzenie poÄtu zobrazených výsledkov do N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Hľadať konkrétnu službu"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "SLUŽBA"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Zobraziť podrobnosti výsledkov pomocou služby a mime typ tiež"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "VÃRAZ... - hľadaÅ¥ súbory pre urÄité výrazy"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"Špecifikovanie viac než jedného výrazu, zobrazení položky obsahujúce VŠETKY "
-"Å¡pecifikované výrazy (výraz1 AND výraz2 - logický súÄin)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Zoznam odpovedajúcich služieb je:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Skúste \"%s --help\" pre viac informácií."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: chýbajú hľadané výrazy"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: žiadne pripojenie k tracker daemon"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Zaistite pred spustením tohto príkazu Äi beží \"trackerd\"."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Služba neodpovedá, hľadá sa v ostatných súboroch...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: vnútorná tracker chyba: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Nájdené výsledky sa nezhodujú z vašou požiadavkou"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - zobraziÅ¥ poÄet zaindexovaných súborov pre každú službu"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "získavajú sa štatistiky indexovania"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "PridaÅ¥ oznaÄený emblém do súboru"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "EMBLÉM"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "OdstrániÅ¥ oznaÄený emblém zo súboru"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Odstrániť všetky emblémy zo súboru"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Zoznam všetkých definovaných emblémov"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "HľadaÅ¥ súbory s oznaÄeným emblémom"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "SÚBOR..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "SÚBOR... - manipulovať so emblémami súborov"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Pre pridanie, odstránenie, alebo hľadanie poÄetných emblémov v tomto Äase, "
-"pripojiÅ¥ poÄetné voľby ako:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: nesprávne parametre"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: súbor %s nebol nájdený"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "PrieÄinok na vylúÄenie z indexovania"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/CESTA/ADRESÃR"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "PrieÄinok zahrnúť do indexovania"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Zakázať akékoľvek indexovanie alebo sledovanie tohto miesta"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Hodnota, ktorá ovláda úroveň záznamu. Správne hodnoty sú 0 (zobraziť/"
-"zaznamenať len chyby), 1 (minimálny), 2 (podrobný), a 3 (ladenie)"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "HODNOTA"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Hodnota na použitie pre obmedzenie indexovania. Hodnota musí byť v rozsahu 0-"
-"99 (štandartne 0), s nižšími hodnotami sa zvyšuje rýchlosť indexovania"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimalizuje využitie pamäte, ale môže spomaliť indexovanie"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "PoÄiatoÄný Äas uspania, len pred indexovaním, v sekundách"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "JAZYK"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Vynútiť preindexovanie všetkého obsahu"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Urobiť chybu programu tracker nenapraviteľnou"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- spustiť tracker daemon"
-
-#: ../src/trackerd/trackerd.c:669 ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "PRIEÄŒINOK"
-
-#: ../src/trackerd/trackerd.c:677
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Ovládať a sledovať službu Tracker na hľadanie a indexovanie"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Tracker aplet"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "NeÄinný"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indexuje sa"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Triedi sa"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (pozastavené používateľom)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (pozastavené systémom)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (pozastavené batériou)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "prieÄinkov"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "mailové prieÄinky"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Preindexovať váš systém?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr ""
-"Indexovanie môže trvať dlhšiu dobu. Ste si istý, že ho chcete preindexovať?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Å tatistiky"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Å tatistiky indexovania</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker je voľný softvér; môžete ho redistribuovať a/alebo upravovať pod GNU "
-"General Public License vydanou Free Software Foundation; tiež pod verziou 2 "
-"Licencie alebo (podľa vášho výberu) nejakou neskoršou verziou."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker je distribuovaný v dúfaní, že bude užitoÄný, ale BEZ ŽIADNEJ ZÃRUKY; "
-"dokonca bez zahrnutej záruky o PREDAJNOSTI alebo VHODNOSTI PRE Å PECIÃLNY "
-"ÚČEL. Viac podrobností sa doÄítate v GNU General Public License."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"Mali by ste všeobecne uznávať kópiu GNU General Public License spolu s "
-"programom Tracker; ak nie, napíšte do Free Software Foundation, Inc., 59 "
-"Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker je nástroj navrhnutý na získavanie informácií a metaúdajov o vašich "
-"osobných údajoch, tak môže byť vyhľadávanie jednoduchšie a rýchlejšie"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Autorské práva © 2005-2008 autori programu Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr "Pavol KlaÄanský <pavolzetor@gmail.com>"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Domovská stránka"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "Po_zastaviť všetko indexovanie"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Hľadať"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "P_reindexovať"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_Predvoľby"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Predvoľby _indexovania"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "Å _tatistiky"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_O programe..."
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_Koniec"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"Váš poÄítaÄ je neustále indexovaný, takže môžete vykonávaÅ¥ rýchlejÅ¡ie "
-"hľadania vo vašich súboroch a e-mailoch."
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr ""
-"Môžete pozastaviÅ¥ indexovanie v akomkoľvek Äase a konfigurovaÅ¥ nastavenia "
-"indexovania, pravým kliknutím sem"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker dokonÄil indexovanie vášho systému"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " za %d hodín a %d minút"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " za %d minút a %d sekúnd"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " za %d sekúnd"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Teraz môžete vykonať hľadania kliknutím sem"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Súbory:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " PrieÄinky:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Dokumenty:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Obrázky:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Hudba:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Videá:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Texty:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Vyvíjanie:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Iné:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Aplikácie:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Rozhovory:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-maily:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animácia</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Inteligentné pozastavovanie</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Viditeľnosť</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "AnimovaÅ¥ _ikonu poÄas indexovania"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Predvoľby apletu"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr ""
-"Automaticky _pozastaviť, ak by mohlo indexovanie znížíť výkon inej "
-"aplikácie, ktorá je používaná"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "_Automaticky pozastaviÅ¥ vÅ¡etko indexovanie, keÄ je poÄítaÄ používaný"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_SkryÅ¥ ikonu (okrem toho, keÄ sú zobrazované správy pre používateľa)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "V_ypnuté"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "Dáta musia byť preindexované"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"Aby vaše zmeny nadobudli platnosť, Tracker musí preindexovať vaše súbory. "
-"Pre spustenie preindexovania kliknite teraz na tlaÄidlo PreindexovaÅ¥, inak "
-"bude táto akcia výkonaná pri ÄalÅ¡om reÅ¡tartovaní Tracker daemon."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "P_reindexovať"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "Tracker daemon musí byť reštartovaný"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"Aby vaše zmeny nadobudli platnosť, démon programu Tracker musí byť "
-"reÅ¡tartovaný. Pre reÅ¡tartovanie daemon kliknite teraz na tlaÄidlo "
-"Reštartovať."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "_Reštartovať"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Nastavovať indexovanie súborov s programom Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Hľadanie a indexovanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Pomalé prieÄinky</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Ignorované vzory súborov</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ignorované cesty</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Triedenie indexu</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Obmedzenie indexovania (na súbor)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Nastavenie indexovania</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexovanie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Správa napájania</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Používanie zdroja</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Po spustení</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Hľadať slová podľa pôvodu</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Regulovanie</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Sledované prieÄinky</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "ÄŽalÅ¡ie mailové prieÄinky v Å¡týle mbox na indexovanie:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Ďalšie cesty na indexovanie a sledovanie:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr ""
-"Ďalšie cesty na indexovanie pri štarte (ale nebudú skontrolované zmeny):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"DánÄina\n"
-"Holandština\n"
-"AngliÄtina\n"
-"Fínština\n"
-"Francúzština\n"
-"NemÄina\n"
-"TalianÄina\n"
-"NórÄina\n"
-"PortugalÄina\n"
-"Ruština\n"
-"Å panielÄina\n"
-"Švédština"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "ZakázaÅ¥ vÅ¡etko indexovanie poÄas chodu z batérie."
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "ZakázaÅ¥ poÄiatoÄné zhrnutie indexov poÄas chodu z batérie."
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "E-mail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Povoliť indexovanie e-mailov v programe _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Povoliť indexovanie e-mailov v programe _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Povoliť _jednoduché indexovanie e-mailov"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Povoliť indexovanie e-mailov v programe _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Povoliť _sledovanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Povoliť i_ndexovanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Rýchlejšie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Vzory súborov, ktoré budú ignorované poÄas indexovania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Súbory"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Všeobecné"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Generovať ná_hľady"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Ignorované súbory"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "Oneskorenie in_dexovania: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "In_dexovať obsah súboru"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "IndexovaÅ¥ p_ripojené prieÄinky"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "IndexovaÅ¥ a sledovaÅ¥ môj do_movský prieÄinok"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Rýchlosť indexovania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "M_aximálna veľkosť textu na indexovanie:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Maximálny poÄet jedineÄných s_lov na indexovanie:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Korene ciest, ktoré budú ignorované poÄas indexovania:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Vykonávať rýchle triedenie indexov (môže ovplyvniť výkon systému)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Výkon"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "Pomalšie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Predvoľby Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Jazyk:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimalizovať používanie pamäte (pomalšie indexovanie)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "Po_užiÅ¥ ÄalÅ¡iu pamäť pre rýchlejÅ¡ie indexovanie"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "sekúnd"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "HľadaÅ¥ s urÄenou službou"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-maily"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Všetky súbory"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "PrieÄinky"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokumenty"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Vyvíjanie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Záznamy rozhovorov"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Aplikácie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "WebováHistória"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Otvoriť"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "O_tvoriÅ¥ prieÄinok"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Presunúť do _koša"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Uložiť výsledky ako..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Nastavenie prevodu znakov zlyhalo pre \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Vyskytla sa nasledujúca chyba :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Chyba"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Mysleli ste"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Hľadanie nevrátilo žiadne výsledky."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Hľadanie Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Hľadanie Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_Výsledky hľadania: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "nevykonalo sa žiadne hľadanie"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Zobraziť zoznam"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ikona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Názov"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Kategórie"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d z %d položiek"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d položiek"
-msgstr[1] "%d položka"
-msgstr[2] "%d položky"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "Nemohol sa pripojiť k službe hľadania, môže byť zaneprázdnená"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Hľadať:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr ""
-"Tracker eÅ¡te indexuje, preto nebudú vÅ¡etky výsledky hľadania dostupné hneÄ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Vložte hľadaný výraz s viacerými slovami odelenými medzerami."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "položka_hľadania"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Kliknite pre ukutoÄnenie hľadania."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Nemohol byť otvorený dokument pomocníka."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Ste si istý, že chcete otvoriť %d dokumentov?"
-msgstr[1] "Ste si istý, že chcete otvoriť %d dokument?"
-msgstr[2] "Ste si istý, že chcete otvoriť %d dokumenty?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Toto otvorí %d samostatných okien."
-msgstr[1] "Toto otvorí %d samostatné okno."
-msgstr[2] "Toto otvorí %d samostatné okná."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Nemohol byť otvorený dokument \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Nemohol byÅ¥ otvorený prieÄinok \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Správca súborov nautilus nejde."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Aplikácia nemohla byť otvorená"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Dokument neexistuje."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Nie je tu nainÅ¡talovaný žiadny prehliadaÄ schopný zobraziÅ¥ dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Ste si istý, že chcete otvoriÅ¥ %d prieÄinkov?"
-msgstr[1] "Ste si istý, že chcete otvoriÅ¥ %d prieÄinok?"
-msgstr[2] "Ste si istý, že chcete otvoriÅ¥ %d prieÄinky?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "\"%s\" nemohol byť presunutý do koša."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Naozaj chcete úplne odstrániť \"%s\"?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Kôš je nedostupný. \"%s\" nemohol byť presunutý do koša."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Nemohlo byť odstránené \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Presúvanie \"%s\" zlyhalo: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Odstraňovanie \"%s\" zlyhalo: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Aktivovať zobrazenie tohto e-mailu"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Uložiť výsledky hľadania ako..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Dokument nemohol byť uložený."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Nevybrali se názov dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Nemohol byť uložený dokument \"%s\" do \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokument \"%s\" už existuje. Prajete si ho nahradiť?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Ak nahradíte existujúci súbor, jeho obsah bude prepísaný."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "Nah_radiť"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "Vami vybratý názov dokumentu je prieÄinok."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Nemáte oprávnenie na zapisovanie do dokumentu."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"VyhľadávaÅ¥ dokumenty a prieÄinky v tomto poÄítaÄi, podľa názvu alebo obsahu, "
-"použitím programu Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Chyba GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "dnes o %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "vÄera o %-I:%M %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %B %-d %Y v %-I:%M:%S %p"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "odkaz (pokazený)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "odkaz na %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Služba Tracker na hľadanie a indexovanie"
-
-#~ msgid "gtk-close"
-#~ msgstr "gtk-close"
-
-#~ msgid "_Search..."
-#~ msgstr "_Hľadať..."
-
-#~ msgid "Search:"
-#~ msgstr "Hľadať:"
-
-#~ msgid "Status:"
-#~ msgstr "Stav:"
-
-#~ msgid "Progress:"
-#~ msgstr "Priebeh:"
-
-#~ msgid "Indexing in progress"
-#~ msgstr "Indexovanie prebieha"
-
-#~ msgid "Indexing completed"
-#~ msgstr "Indexovanie dokonÄené"
-
-#~ msgid "Indexes are being merged"
-#~ msgstr "Indexy sú spájané"
-
-#~ msgid "Paused while on battery power"
-#~ msgstr "PozastaviÅ¥, keÄ je napájaný s batérie"
-
-#~ msgid "Paused temporarily"
-#~ msgstr "DoÄasne pozastavené"
-
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "Tracker práve triedi indexy, môže to znížiť výkon systému na pár minút\n"
-#~ "\n"
-#~ "Môžete to pozastaviÅ¥ kliknutím sem pravým tlaÄidlom"
-
-#~ msgid ""
-#~ "Your system must be re-indexed for your changes to take effect. Re-index "
-#~ "now?"
-#~ msgstr ""
-#~ "Systém musí byť preindexovaný, aby boli použité zmeny. Preindexovať teraz?"
-
-#~ msgid ""
-#~ "Tracker indexer needs to be restarted for your changes to take effect. "
-#~ "Restart now?"
-#~ msgstr ""
-#~ "Treba reÅ¡tartovaÅ¥ Tracker indexovaÄ, aby boli použité zmeny. ReÅ¡tartovaÅ¥ "
-#~ "teraz?"
diff --git a/po/sl.po b/po/sl.po
deleted file mode 100644
index 554cda80d..000000000
--- a/po/sl.po
+++ /dev/null
@@ -1,1008 +0,0 @@
-# Slovenian translation of Tracker.
-# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the tracker package.
-#
-# Matic Žgur <mr.zgur@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 04:02+0200\n"
-"PO-Revision-Date: 2007-02-12 16:16+0100\n"
-"Last-Translator: Matic Žgur <mr.zgur@gmail.com>\n"
-"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-"X-Poedit-Language: Slovenian\n"
-
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr ""
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:453
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:454
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:455
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:641
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:456
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:457
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:509
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:510
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:550
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:551
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:637
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:742
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:638
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:639
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:640
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:642
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:683
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:688
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:708
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:740
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:709
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:710
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:711
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:712
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:713
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:741
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:774
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:743
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:744
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:745
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr ""
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:773
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:775
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:776
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:777
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:778
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:862
-#, c-format
-msgid "%.1f KB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:866
-#, c-format
-msgid "%.1f MB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:870
-#, c-format
-msgid "%.1f GB"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:908
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:974
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:996
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1016
-msgid "Unknown"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:251
-msgid "Type tags you want to add here, separated by commas"
-msgstr ""
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:361
-msgid "Tags :"
-msgstr ""
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:383
-#, fuzzy
-msgid "_Search For Tag"
-msgstr "_IÅ¡Äi:"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:395
-msgid "_Remove Tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Omeji Å¡tevilo prikazanih zadetkov na N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Iskanje doloÄene storitve"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "STORITEV"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Prikaže podrobnejše zadetke s storitvami in vrsto mime"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "IZRAZ ... - preiÅ¡Äe datoteke za doloÄen izraz"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-"DoloÄanje veÄ kot enega izraza bo prikazalo predmete, ki vsebujejo VSE "
-"podane izraze (izraz1 AND izraz2 - logiÄna konjunkcija)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Seznam prepoznanih storitev je:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Poizkusite \"%s --help\" za veÄ informacij."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: manjkajoÄ iskalni izraz"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: ni povezave z demonom tracker"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Pred zagonom tega ukaza poskrbite, da \"trackerd\" teÄe."
-
-#: ../src/libtracker/tracker-search.c:147
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Storitev ni prepoznana, iskanje v drugih datotekah ...\n"
-
-#: ../src/libtracker/tracker-search.c:164 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: notranja napaka trackerja: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-msgid "No results found matching your query"
-msgstr "Noben zadetek ni bil najden, ki bi se ujemal s poizvedbo"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - prikaže število indeksiranih datotek za vsako storitev"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Doda podano oznako (tag) datoteki"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "OZNAKA"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Odstrani podano oznako (tag) iz datoteke"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Odstrani vse oznake (tag) iz datoteke"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Seznam vseh podanih oznak"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Iskanje datotek s podanimi oznakami"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "DATOTEKA ..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "DATOTEKA ... - manipuliranje z oznakami na datotekah"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-"Za dodajanje, odstranjevanje ali iskanje veÄ oznak istoÄasno, združite veÄ "
-"možnosti, kot:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: neveljavni argumenti"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: datoteka %s ni bila najdena"
-
-#: ../src/trackerd/trackerd.c:158
-msgid "Directory to exclude from indexing"
-msgstr "Imeniki, izloÄeni iz indeksiranja"
-
-#: ../src/trackerd/trackerd.c:158 ../src/trackerd/trackerd.c:159
-#: ../src/trackerd/trackerd.c:160
-msgid "/PATH/DIR"
-msgstr "/POT/IMENIK"
-
-#: ../src/trackerd/trackerd.c:159
-msgid "Directory to include in indexing"
-msgstr "Imenik, ki naj se vkljuÄi v indeksiranje"
-
-#: ../src/trackerd/trackerd.c:160
-#, fuzzy
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Imeniki, izloÄeni iz indeksiranja"
-
-#: ../src/trackerd/trackerd.c:161
-msgid "Disable any indexing or watching taking place"
-msgstr "OnemogoÄi kakrÅ¡nokoli indeksiranje ali opazovanje"
-
-#: ../src/trackerd/trackerd.c:162
-#, fuzzy
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-"Vrednost, ki nadzoruje stopnjo beleženja. Veljavne vrednosti so 0 (privzeto "
-"najmanj), 1 (podrobno) in 2 (razhroÅ¡Äevanje)"
-
-#: ../src/trackerd/trackerd.c:162 ../src/trackerd/trackerd.c:163
-msgid "VALUE"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:163
-#, fuzzy
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-20 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-"Vrednost za oslabljenje indeksiranja. Vrednost mora biti v rangu 0-20 "
-"(privzeto 0), kjer manjÅ¡e vrednosti pomenijo veÄjo hitrost indeksiranja."
-
-#: ../src/trackerd/trackerd.c:164
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "ZmanjÅ¡a porabo pomnilnika, vendar lahko upoÄasni indeksiranje"
-
-#: ../src/trackerd/trackerd.c:165
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:166
-msgid "LANG"
-msgstr "JEZIK"
-
-#: ../src/trackerd/trackerd.c:167
-msgid "Force a re-index of all content"
-msgstr ""
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:2047
-msgid "- start the tracker daemon"
-msgstr "- zažene demona tracker"
-
-#: ../src/trackerd/trackerd.c:2048 ../src/trackerd/trackerd.c:2049
-msgid "DIRECTORY"
-msgstr "IMENIK"
-
-#: ../src/trackerd/trackerd.c:2056
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-"Za vkljuÄitev ali izkljuÄitev veÄ imenikov istoÄasno, združite veÄ možnosti, "
-"kot:"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Indexing Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing options</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Mailboxes</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Resource Usage</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Services</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox mailboxes to index:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid "Enable Evolution email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:18
-msgid "Enable KMail email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:19
-msgid "Enable Thunderbird email indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:20
-msgid "Enable _Indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:21
-msgid "Enable _Watching"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:22
-msgid "Faster"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:23
-#, fuzzy
-msgid "File patterns to ignore during indexing:"
-msgstr "Imenik, ki naj se vkljuÄi v indeksiranje"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:24
-msgid "Generate _thumbnails"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:25
-msgid "Index _delay: "
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:26
-msgid "Index _file contents"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:27
-msgid "Index and watch my home _directory"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:28
-msgid "Maximum _amount of text to Index (KB)"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Maximum number of unique _words to index"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "P_erformance"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Path roots to be ignored during indexing:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Seconds"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Slower"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Tracker Preferences"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "_Emails"
-msgstr "_E-pošta"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-#, fuzzy
-msgid "_Files"
-msgstr "_Mape"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "_General"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "_Ignored Files"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "_Indexing speed:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "_Language:"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-#, fuzzy
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "ZmanjÅ¡a porabo pomnilnika, vendar lahko upoÄasni indeksiranje"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "_Use additonal memory for faster indexing"
-msgstr ""
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid ""
-"danish\n"
-"dutch\n"
-"english\n"
-"finnish\n"
-"french\n"
-"german\n"
-"italian\n"
-"norwegian\n"
-"portugese\n"
-"russian\n"
-"spanish\n"
-"swedish"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Iskanje iz doloÄene storitve"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-#, fuzzy
-msgid "Emails"
-msgstr "_E-pošta"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-#, fuzzy
-msgid "All Files"
-msgstr "_Vse datoteke"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-#, fuzzy
-msgid "Folders"
-msgstr "_Mape"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-#, fuzzy
-msgid "Documents"
-msgstr "_Dokumenti"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-#, fuzzy
-msgid "Images"
-msgstr "_Slike"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-#, fuzzy
-msgid "Music"
-msgstr "_Glasba"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-#, fuzzy
-msgid "Videos"
-msgstr "_Video"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1224
-msgid "Text"
-msgstr "Besedilo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-#, fuzzy
-msgid "Development"
-msgstr "R_azvoj"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Odpri"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Odpri _mapo"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "P_remakni v Smeti"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Shrani zadetke kot ..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:254
-#, fuzzy, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Pretvorba nabora znakov za \"%s\" ni uspela"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:281
-msgid "The following error has occured :"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:656
-msgid "Did you mean"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:687
-msgid "Your search returned no results."
-msgstr "Vaše iskanje ni vrnilo nobenih zadetkov."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:702
-msgid "Tracker Search Tool-"
-msgstr "Orodje za iskanje Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:863
-#: ../src/tracker-search-tool/tracker-search-tool.c:2199
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Orodje za iskanje Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1053
-#, fuzzy
-msgid "Search _results: "
-msgstr "Zadetki pri iskanju:"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1059
-msgid "no search performed"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1113
-#: ../src/tracker-search-tool/tracker-search-tool.c:1274
-msgid "List View"
-msgstr "Seznamski pogled"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1185
-msgid "Icon"
-msgstr "Ikona"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1197
-msgid "Name"
-msgstr "Ime"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1292
-msgid "_Categories"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1572
-#, c-format
-msgid "%d - %d of %d hits"
-msgstr ""
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1575
-#, c-format
-msgid "%d item"
-msgid_plural "%d hits"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1976
-msgid "_Search:"
-msgstr "_IÅ¡Äi:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1996
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "VpiÅ¡ite iskalni izraz z veÄ besedami loÄenimi s presledki."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1997
-msgid "search_entry"
-msgstr "iskalni_vnos"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2043
-msgid "Click to perform a search."
-msgstr "Kliknite za izvedbo iskanja."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Ni mogoÄe odpreti dokumenta pomoÄi."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Ali ste prepriÄani, da želite odpreti %d dokument?"
-msgstr[1] "Ali ste prepriÄani, da želite odpreti %d dokumenta?"
-msgstr[2] "Ali ste prepriÄani, da želite odpreti %d dokumente?"
-msgstr[3] "Ali ste prepriÄani, da želite odpreti %d dokumentov?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:676
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "To bo odprlo %d loÄeno okno."
-msgstr[1] "To bo odprlo %d loÄeni okni."
-msgstr[2] "To bo odprlo %d loÄena okna."
-msgstr[3] "To bo odprlo %d loÄenih oken."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Ni mogoÄe odpreti dokumenta \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Ni mogoÄe odpreti mape \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Upravitelj datotek nautilus ne teÄe."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:615
-msgid "Application could not be opened"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:630
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:950
-msgid "The document does not exist."
-msgstr "Dokument ne obstaja."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:646
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "NameÅ¡Äen ni noben pregledovalnik, sposoben prikaza dokumenta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:671
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Ali ste prepriÄani, da želite odpreti %d mapo?"
-msgstr[1] "Ali ste prepriÄani, da želite odpreti %d mapi?"
-msgstr[2] "Ali ste prepriÄani, da želite odpreti %d mape?"
-msgstr[3] "Ali ste prepriÄani, da želite odpreti %d map?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:775
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Ni mogoÄe premakniti \"%s\" v smeti."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:806
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Ali želite trajno izbrisati \"%s\"?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:809
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Smeti niso na voljo. Ni mogoÄe premakniti \"%s\" v smeti."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:848
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Ni mogoÄe izbrisati \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:972
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "premikanje \"%s\" ni uspelo: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1006
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Brisanje \"%s\" ni uspelo: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1292
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1468
-msgid "Save Search Results As..."
-msgstr "_Shrani zadetke iskanja kot ..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1503
-msgid "Could not save document."
-msgstr "Ni mogoÄe shraniti dokumenta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1504
-msgid "You did not select a document name."
-msgstr "Niste izbrali imena dokumenta."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1534
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Ni mogoÄe shraniti dokumenta \"%s\" v \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1568
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokument \"%s\" že obstaja. Ali ga želite zamenjati?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1572
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "ÄŒe zamenjate obstojeÄo datoteko, bo njena vsebina prepisana."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1587
-msgid "_Replace"
-msgstr "_Zamenjaj"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1637
-msgid "The document name you selected is a folder."
-msgstr "Ime dokumenta, ki ste ga izbrali, je mapa."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1686
-msgid "You may not have write permissions to the document."
-msgstr "Možno je, da nimate dovoljenj za pisanje v dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-"PoiÅ¡Äite dokumente in mape na raÄunalniku po imenu ali vsebini z uporabo "
-"Trackerja"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"Napaka GConf:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "danes ob %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "VÄeraj ob %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A, %-d. %B %Y ob %-H:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "povezava (pokvarjena)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "povezava do %s"
-
-#~ msgid "_Text"
-#~ msgstr "_Besedilo"
-
-#~ msgid "Showing results"
-#~ msgstr "Prikazovanje zadetkov"
-
-#~ msgid "Showing"
-#~ msgstr "Prikazovanje"
-
-#~ msgid "results"
-#~ msgstr "zadetki"
-
-#~ msgid "result"
-#~ msgstr "zadetek"
-
-#~ msgid "Please enter a search term above"
-#~ msgstr "Prosim, zgoraj vnesite iskalni izraz"
-
-#~ msgid "value"
-#~ msgstr "vrednost"
diff --git a/po/sv.po b/po/sv.po
deleted file mode 100644
index ef8822016..000000000
--- a/po/sv.po
+++ /dev/null
@@ -1,1569 +0,0 @@
-# Swedish translation for tracker.
-# Copyright (C) 2006, 2007, 2008 Free Software Foundation
-# This file is distributed under the same license as the tracker package.
-# Daniel Nylander <po@danielnylander.se>, 2007, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-24 16:25+0200\n"
-"PO-Revision-Date: 2008-07-24 16:25+0100\n"
-"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
-"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "Starta %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"Se %s-konversationer\n"
-"%s %s\n"
-"från %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "E-post från %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"Lyssna på musik %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"Se på dokumentet %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"Öppna filen %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"Visa bilden %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"Se på videoklippet %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"Öppna mapp %s\n"
-"i %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "med"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "i kanal"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "Sök i alla dina dokument, <b>när du skriver</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "Utvecklingsfiler"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "Musik"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "Bilder"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "Videoklipp"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "Sök efter %s med Sökverktyget Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "Sök i alla dina dokument med Sökverktyget Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Sökning med Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "Sök med Sökverktyget Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Realtidssökning med Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "Sök med Tracker, när du skriver"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "Sökväg : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "Ändrad : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "Storlek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "Ã…tkommen : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "Mime : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "Avsändare : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "Datum : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "Kommentar : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "Kategorier : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "Längd : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "Genre : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "Bitfrekvens : <b>%s kbit/s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "Ã…r : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Kodek : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " taget med en <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "Dimensioner : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "Taget den : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "Orientering : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "Blixt : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "Brännvidd : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "Slutartid : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "Upphovsman : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "Bitfrekvens : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "Kodad i : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "Bildfrekvens : <b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "Ämne : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "Sidantal : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "Antal ord : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "Skapad : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "Kommentarer : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "Okänd"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "Ange taggar som du vill lägga till här, separera dem med kommatecken"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "Taggar :"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_Sök efter tagg"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_Ta bort tagg"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "Begränsa antalet visade resultat till N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "Sök efter en specifik tjänst"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "TJÄNST"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "Visa mera detaljerade resultat med tjänsten så väl som mime-typen"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "TERM... - sök filer efter vissa villkor"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid "Specifying more then one term, will be showed items containing ALL the specified terms (term1 AND term2 - logical conjunction)"
-msgstr "Om fler än ett villkor anges kommer objekt som innehåller ALLA angivna termer att visas (term1 AND term2 - logiskt konjunktion)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "Listan över kända tjänster är:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122
-#: ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115
-#: ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Prova \"%s --help\" för mer information."
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s: saknar sökvillkor"
-
-#: ../src/libtracker/tracker-search.c:133
-#: ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46
-#: ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s: ingen anslutning till tracker-demonen"
-
-#: ../src/libtracker/tracker-search.c:135
-#: ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48
-#: ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "Kontrollera att \"trackerd\" har startats innan du kör det här kommandot."
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "Tjänsten känns inte igen, söker i Övriga filer...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56
-#: ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189
-#: ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233
-#: ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s: internt tracker-fel: %s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173
-#: ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "Inga resultat hittades som matchade din sökning"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - visa antalet indexerade filer för varje tjänst"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "hämtar indexstatistik"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "Lägg till specifik tagg till en fil"
-
-#: ../src/libtracker/tracker-tag.c:41
-#: ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45
-#: ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "TAGG"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "Ta bort specifik tagg från en fil"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "Ta bort alla taggar från en fil"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "Lista alla definierade taggar"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "Sök efter filer med specifik tagg"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "FIL..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "FIL... - manipulera taggar på filer"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid "To add, remove, or search for multiple tags at the same time, join multiple options like:"
-msgstr "För att lägga till, ta bort eller söka efter flera taggar samtidigt kan flera flaggor sättas samman som:"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s: ogiltiga argument"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s: filen %s hittades inte"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "Katalog att undanta från indexering"
-
-#: ../src/trackerd/trackerd.c:120
-#: ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/SÖKVÄG/KATALOG"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "Katalog att inkludera för indexering"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "Katalog att endast genomsöka för indexering vid uppstart"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "Inaktivera all indexering eller övervakning som sker"
-
-#: ../src/trackerd/trackerd.c:124
-msgid "Value that controls the level of logging. Valid values are 0 (displays/logs only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr "Värde som kontrollerar nivån av loggning. Giltiga värden är 0 (visar/loggar endast fel), 1 (minimal), 2 (detaljerad) och 3 (felsökning)"
-
-#: ../src/trackerd/trackerd.c:124
-#: ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "VÄRDE"
-
-#: ../src/trackerd/trackerd.c:125
-msgid "Value to use for throttling indexing. Value must be in range 0-99 (default 0) with lower values increasing indexing speed"
-msgstr "Värde att använda för att hastighetsbegränsa indexering. Värdet måste vara inom intervallet 0-99 (standard är 0) där lägre värden betyder ökad indexeringshastighet"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "Minimerar minnesanvändningen men kan göra indexeringen långsammare"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "Initial sovtid, precis innan indexering, i sekunder"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr "Språk att använda för \"stemmer and stop\"-ordlista (ISO 639-1 2-teckens kod)"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "SPRÃ…K"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "Tvinga igenom en omindexering av samtligt innehåll"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "Gör fel i tracker till ödesdigra"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:668
-msgid "- start the tracker daemon"
-msgstr "- starta tracker-demonen"
-
-#: ../src/trackerd/trackerd.c:669
-#: ../src/trackerd/trackerd.c:670
-msgid "DIRECTORY"
-msgstr "KATALOG"
-
-#: ../src/trackerd/trackerd.c:677
-msgid "To include or exclude multiple directories at the same time, join multiple options like:"
-msgstr "För att inkludera eller undanta flera kataloger samtidigt kan flera flaggor sättas samman som:"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "Styr och övervaka sök- och indexeringstjänsten Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Panelprogram för Tracker"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker : "
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "Overksam"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "Indexerar"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "Sammanfogar"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (pausad av användaren)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (pausad av systemet)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (pausad efter batteriet)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "mappar"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "postlådor"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "Indexera om ditt system?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "Indexering kan ta lång tid. Är du säker på att du vill indexera om?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "Statistik"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Indexeringsstatistik</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid "Tracker is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
-msgstr "Tracker är fri programvara. Du kan distribuera det och/eller modifiera det under villkoren i GNU General Public License, publicerad av Free Software Foundation, antingen version 2 eller (om du så vill) någon senare version."
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid "Tracker is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
-msgstr "Tracker distribueras i hopp om att det ska vara användbart, men UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för ytterligare information."
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid "You should have received a copy of the GNU General Public License along with Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr "Du bör ha fått en kopia av GNU General Public License tillsammans med Tracker. Om inte, skriv till Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid "Tracker is a tool designed to extract info and metadata about your personal data so that it can be searched easily and quickly"
-msgstr "Tracker är ett verktyg som är designat att extrahera information och metadata från ditt personliga data så att det enkelt och snabbt kan sökas igenom"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 Upphovsmännen bakom Tracker"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr ""
-"Daniel Nylander\n"
-"\n"
-"Skicka synpunkter på översättningen till\n"
-"tp-sv@listor.tp-sv.se"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Webbplats för Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_Pausa all indexering"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_Sök"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "Indexera o_m"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "Inställ_ningar"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "Inställningar för inde_xering"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "S_tatistik"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "_Om"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "A_vsluta"
-
-#: ../src/tracker-applet/tracker-applet.c:1997
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid "Your computer is about to be indexed so you can perform fast searches of your files and emails"
-msgstr "Din dator är på väg att bli indexerad så att du kan genomföra snabba sökningar efter dina filer och e-post"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid "You can pause indexing at any time and configure index settings by right clicking here"
-msgstr "Du kan pausa indexeringen när som helst och ändra konfigurationen genom att högerklicka här "
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker har avslutat indexeringen av ditt system"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " på %d timmar och %d minuter"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " på %d minuter och %d sekunder"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " på %d sekunder"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "Du kan nu genomföra sökningar genom att klicka här"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "Filer:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " Mappar:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " Dokument:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " Bilder:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " Musik:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " Videoklipp:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " Text:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " Utveckling:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " Övriga:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "Program:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "Konversationer:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "E-post:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>Animering</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>Smarta pauser</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>Synlighet</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "Animera _ikon vid indexering"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "Inställningar för panelprogram"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid "Automatically _pause if indexing may degrade performance of other applications in active use"
-msgstr "_Pausa automatiskt vid indexering kan försämra prestandan för andra program som används aktivt"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "Pausa _automatiskt all indexering när datorn används aktivt"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_Dölj ikonen (förutom när meddelanden visas)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "A_v"
-
-#: ../src/tracker-preferences/tracker-preferences.c:829
-msgid "Data must be reindexed"
-msgstr "Data måste indexeras om"
-
-#: ../src/tracker-preferences/tracker-preferences.c:830
-msgid "In order for your changes to take effect, Tracker must reindex your files. Click the Reindex button to start reindexing now, otherwise this action will be performed the next time the Tracker daemon is restarted."
-msgstr "Tracker-demonen måste startas om för att dina ändringar ska bli aktiva. Klicka på Indexera om-knappen för att indexera om nu, annars kommer denna åtgärd att genomföras nästa gång Tracker-demonen startas."
-
-#: ../src/tracker-preferences/tracker-preferences.c:837
-msgid "_Reindex"
-msgstr "Indexera _om"
-
-#: ../src/tracker-preferences/tracker-preferences.c:840
-msgid "Tracker daemon must be restarted"
-msgstr "Tracker-demonen måste startas om"
-
-#: ../src/tracker-preferences/tracker-preferences.c:842
-msgid "In order for your changes to take effect, the Tracker daemon has to be restarted. Click the Restart button to restart the daemon now."
-msgstr "Tracker-demonen måste startas om för att dina ändringar ska bli aktiva. Klicka på Starta om-knappen för att starta om demonen nu."
-
-#: ../src/tracker-preferences/tracker-preferences.c:847
-msgid "_Restart"
-msgstr "Starta _om"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "Konfigurera filindexering med Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "Sökning och indexering"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>Genomsökning av kataloger</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>Ignorerade filmönster</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>Ignorerade sökvägar</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>Indexsammanfogning</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>Indexeringsbegränsningar (per fil)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>Indexeringsalternativ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>Indexering</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>Strömhantering</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>Resursanvändning</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>Uppstart</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>Bildande av ordstam</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>Begränsning</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>Bevakning av kataloger</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "Ytterligare mbox-postlådor att indexera:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "Ytterligare sökvägar att indexera och bevaka:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "Ytterligare sökvägar att indexera vid uppstart (men inte bevaka för uppdateringar):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"Danska\n"
-"Nederländska\n"
-"Engelska\n"
-"Finska\n"
-"Franska\n"
-"Tyska\n"
-"Ungerska\n"
-"Italienska\n"
-"Norska\n"
-"Portugisiska\n"
-"Ryska\n"
-"Spanska\n"
-"Svenska"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "Inaktivera all indexering vid batteridrift"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "Inaktivera initial indexsökning vid batteridrift"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "E-post"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "Aktivera _e-postindexering för Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "Aktivera e-postindexering för _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "Aktivera e-postindexering för _Modest"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "Aktivera e-postindexering för _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "Aktivera _bevakning"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "Aktivera i_ndexering"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "Snabbare"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "Filmönster att ignorera under indexering:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "Filer"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "Allmänt"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "Generera miniatyr_bilder"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "Ignorerade filer"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "Indexerings_fördröjning: "
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "Indexera _filinnehåll"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "Indexera _monterade kataloger"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "Indexera och bevaka min hem_katalog"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "Indexeringshastighet:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "Maximal mäng_d text att indexera:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "Maximalt antal unika ord a_tt indexera:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "Sökvägsrötter som ska ignoreras under indexering:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "Genomför snabba indexsammanfogningar (kan påverka systemprestanda)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "Prestanda"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "LÃ¥ngsammare"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Inställningar för Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "_Språk:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "_Minimera minnesanvändning (långsammare indexering)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "Använd _ytterligare minne för snabbare indexering"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "sekunder"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "Sök från en specifik tjänst"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "E-post"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "Alla filer"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "Mappar"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "Dokument"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "Text"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "Utveckling"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "Chattloggar"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "Program"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "Webbhistorik"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_Öppna"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "Öppna _mapp"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "Flytta till _papperskorg"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "_Spara resultat som..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "Konvertering av teckenkodning misslyckades för \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "Följande fel har inträffat :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "Fel"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "Menade du"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "Din sökning returnerade inga träffar."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Sökverktyget Tracker-"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Sökverktyget Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "Sök_resultat: "
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "ingen sökning genomförd"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "Listvy"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "Ikon"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "Namn"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_Kategorier"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d av %d objekt"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d objekt"
-msgstr[1] "%d objekt"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "Kunde inte ansluta till söktjänsten eftersom den kan vara upptagen"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_Sök:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "Tracker indexerar fortfarande så alla sökresultat är inte tillgängliga än"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "Ange ett sökvillkor med flera ord separerade med blanksteg."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "sökinmatning"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "Klicka för att genomföra en sökning."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "Kunde inte öppna hjälpdokumentet."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "Är du säker på att du vill öppna %d dokument?"
-msgstr[1] "Är du säker på att du vill öppna %d dokument?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "Det här kommer att öppna %d separat fönster."
-msgstr[1] "Det här kommer att öppna %d separata fönster."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "Kunde inte öppna dokumentet \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "Kunde inte öppna mappen \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "Filhanteraren Nautilus kör inte."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "Programmet kunde inte öppnas"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "Dokumentet finns inte."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "Det finns ingen visare installerad som kan visa dokumentet."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "Är du säker på att du vill öppna %d mapp?"
-msgstr[1] "Är du säker på att du vill öppna %d mappar?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "Kunde inte flytta \"%s\" till papperskorgen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "Vill du permanent ta bort \"%s\"?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "Papperskorgen är inte tillgänglig. Kunde inte flytta \"%s\" till papperskorgen."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "Kunde inte ta bort \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "Flyttning av \"%s\" misslyckades: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "Borttagning av \"%s\" misslyckades: %s."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "Aktivera för att visa detta meddelande"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "Spara sökresultat som..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "Kunde inte spara dokument."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "Du valde ingen dokumentnamn."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "Kunde inte spara \"%s\"-dokumentet till \"%s\"."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "Dokumentet \"%s\" finns redan. Vill du ersätta det?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "Om du ersätter en befintlig fil kommer dess innehåll att skrivas över."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_Ersätt"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "Dokumentnamnet du valde är en mapp."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "Du kanske inte har skrivrättigheter till dokumentet."
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid "Locate documents and folders on this computer by name or content using Tracker"
-msgstr "Hitta dokument och mappar på den här datorn efter namn eller innehåll med Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf-fel:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "idag klockan %H.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "igår klockan %H.%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%A %d %B %Y klockan %H.%M.%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "länk (trasig)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "länk till %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Sök- och indexeringstjänsten Tracker"
-
-#~ msgid "gtk-close"
-#~ msgstr "Stäng"
-#~ msgid "_Index Only When Idle"
-#~ msgstr "_Indexera endast när overksam"
-#~ msgid "_Merge Indexes Only When Idle"
-#~ msgstr "Sa_mmanfoga endast när overksam"
-#~ msgid "S_mart Pause"
-#~ msgstr "S_mart paus"
-#~ msgid "Auto _Hide"
-#~ msgstr "Dölj a_utomatiskt"
-#~ msgid "_Search..."
-#~ msgstr "_Sök..."
-#~ msgid "Search:"
-#~ msgstr "Sök:"
-#~ msgid "Status:"
-#~ msgstr "Status:"
-#~ msgid "Progress:"
-#~ msgstr "Förlopp:"
-#~ msgid "Indexing in progress"
-#~ msgstr "Indexering pågår"
-#~ msgid "Indexing completed"
-#~ msgstr "Indexering färdig"
-#~ msgid "Indexes are being merged"
-#~ msgstr "Index sammanfogas nu"
-#~ msgid "Paused while on battery power"
-#~ msgstr "Pausad vid batteridrift"
-#~ msgid "Paused temporarily"
-#~ msgstr "Pausad temporärt"
-#~ msgid ""
-#~ "Tracker is now merging indexes which can degrade system performance for "
-#~ "serveral minutes\n"
-#~ "\n"
-#~ "You can pause this by right clicking here"
-#~ msgstr ""
-#~ "Tracker sammanfogar nu index vilket kan göra ditt system långsamt under "
-#~ "ett par minuter\n"
-#~ "\n"
-#~ "Du kan pausa detta genom att högerklicka här"
-#~ msgid ""
-#~ "Your system must be re-indexed for your changes to take effect. Re-index "
-#~ "now?"
-#~ msgstr ""
-#~ "Ditt system måste indexeras om för att dina ändringar ska bli aktiva. "
-#~ "Indexera om nu?"
-#~ msgid ""
-#~ "Tracker indexer needs to be restarted for your changes to take effect. "
-#~ "Restart now?"
-#~ msgstr ""
-#~ "Trackers indexerare behöver startas om för att dina ändringar ska bli "
-#~ "aktiva. Starta om nu?"
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>Postlådor</b>"
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>Tjänster</b>"
-#~ msgid "_Emails"
-#~ msgstr "_E-post"
-#~ msgid "<b>File Metadata</b>"
-#~ msgstr "<b>Filmetadata</b>"
-#~ msgid "<b>General</b>"
-#~ msgstr "<b>Allmänt</b>"
-#~ msgid "Enable Index Throttling"
-#~ msgstr "Aktivera indexeringsbegränsning"
-#~ msgid "Normal Mode"
-#~ msgstr "Normalt läge"
-#~ msgid "Polling Interval: "
-#~ msgstr "Kontrollintervall: "
-#~ msgid "Reduced Memory Mode"
-#~ msgstr "Reducerat minnesläge"
-#~ msgid "Start _indexing service automatically"
-#~ msgstr "Starta _indexeringstjänsten automatiskt"
-#~ msgid "Start _monitoring service automatically"
-#~ msgstr "Starta ö_vervakningstjänsten automatiskt"
-#~ msgid "Throttling Level: "
-#~ msgstr "Begränsningsnivå: "
-#~ msgid "Turbo Mode"
-#~ msgstr "Turbo-läge"
-#~ msgid "_Privacy"
-#~ msgstr "_Integritet"
-#~ msgid "gtk-add"
-#~ msgstr "Lägg till"
-#~ msgid "gtk-help"
-#~ msgstr "Hjälp"
-#~ msgid "gtk-remove"
-#~ msgstr "Ta bort"
-#~ msgid "%d result"
-#~ msgid_plural "%d results"
-#~ msgstr[0] "%d resultat"
-#~ msgstr[1] "%d resultat"
-#~ msgid "Please enter a search term above"
-#~ msgstr "Ange en sökterm ovan"
-#~ msgid "Plain text"
-#~ msgstr "Vanlig text"
-#~ msgid "No files found"
-#~ msgstr "Inga filer hittades"
-#~ msgid "_Previous"
-#~ msgstr "_Föregående"
-#~ msgid "_Next"
-#~ msgstr "_Nästa"
-#~ msgid "Invalid service type: %s\n"
-#~ msgstr "Ogiltig tjänstetyp: %s\n"
-#~ msgid "value"
-#~ msgstr "värde"
-#~ msgid "Enables more verbose debug messages"
-#~ msgstr "Aktiverar mera informativa felsökningsmeddelanden"
-#~ msgid ""
-#~ "Value to use for throttling indexing and on battery power . Value must be "
-#~ "in range 0-20 (default 15) with lower values increasing indexing speed"
-#~ msgstr ""
-#~ "Värde att använda för att hastighetsbegränsa indexering vid "
-#~ "batteridrift . Värdet måste vara inom intervallet 0-20 (standard är 15) "
-#~ "där lägre värden betyder ökad indexeringshastighet"
-#~ msgid "Faster indexing, use more memory and CPU. Equivalent to --throttle=0"
-#~ msgstr ""
-#~ "Snabbare indexering, använd mer minne och processor. Likvärdig till --"
-#~ "throttle=0"
-#~ msgid "Search all of your documents (using Tracker live), as you type"
-#~ msgstr "Sök i alla dina dokument (med Tracker live), när du skriver"
-#~ msgid "See mail %s"
-#~ msgstr "Se på e-postmeddelandet %s"
-#~ msgid "See more result with t-s-t"
-#~ msgstr "Se fler resultat med t-s-t"
-#~ msgid "Search <b>"
-#~ msgstr "Sök <b>"
-#~ msgid "Slower indexing, use less memory and CPU"
-#~ msgstr "Långsammare indexering, använd mindre minne och processor"
-#~ msgid "(stopped)"
-#~ msgstr "(stoppad)"
-#~ msgid "No Files Found"
-#~ msgstr "Inga filer hittades"
-#~ msgid "%d File Found"
-#~ msgid_plural "%d Files Found"
-#~ msgstr[0] "%d fil hittades"
-#~ msgstr[1] "%d filer hittades"
-#~ msgid "%d file found"
-#~ msgid_plural "%d files found"
-#~ msgstr[0] "%d fil hittades"
-#~ msgstr[1] "%d filer hittades"
-#~ msgid "Entry changed called for a non entry option!"
-#~ msgstr "Inmatning ändrad anropad för en icke-inmatningsflagga!"
-#~ msgid "Desktop Search"
-#~ msgstr "Skrivbordssökning"
-
diff --git a/po/th.po b/po/th.po
deleted file mode 100644
index 2f5204575..000000000
--- a/po/th.po
+++ /dev/null
@@ -1,1455 +0,0 @@
-# Thai translation of tracker
-# Copyright (C) 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the tracker package.
-# Isriya Paireepairit <markpeak@gmail.com>, 2008.
-#
-msgid ""
-""
-msgstr "Project-Id-Version: Tracker\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-13 03:54+0100\n"
-"PO-Revision-Date: 2008-04-15 20:38+0700\n"
-"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
-"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr ""
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "à¹à¸Ÿà¹‰à¸¡à¸žà¸±à¸’นาโปรà¹à¸à¸£à¸¡"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "เพลง"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "ภาพ"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "วิดีโอ"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "ค้นหา %s โดยใช้เครื่องมือสืบค้น Tracker"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "ค้นหาเอà¸à¸ªà¸²à¸£à¸—ั้งหมดของคุณโดยใช้เครื่องมือสืบค้น Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "à¸à¸²à¸£à¸„้น Tracker"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "ค้นหาโดยใช้เครื่องมือสืบค้น Tracker "
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "à¸à¸²à¸£à¸„้น Tracker Live"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "ค้นหาโดยใช้ Tracker ไปพร้อมà¸à¸±à¸šà¸à¸²à¸£à¸›à¹‰à¸­à¸™à¸„ำค้น"
-
-#.then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "พาธ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "à¹à¸à¹‰à¹„ขล่าสุด : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "ขนาด : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "ใช้งานล่าสุด : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "ชนิด : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "ผู้ส่ง : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "วันที่ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "หมายเหตุ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "หมวดหมู่ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "ความยาว : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "à¹à¸™à¸§à¹€à¸žà¸¥à¸‡ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "บิตเรท : <b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "ปี : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "Codec : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " ถ่ายด้วย <span size='large'><i>%s</i></span>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr "<span size='large'><i>%s</i></span>"
-
-#.then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "ขนาดภาพ : <b>%d x %d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "ถ่ายเมื่อ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "à¹à¸™à¸§à¸§à¸²à¸‡à¸ à¸²à¸ž : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "à¹à¸Ÿà¸¥à¸Š : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "ระยะโฟà¸à¸±à¸ª : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "ความเร็วชัตเตอร์ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "ผู้สร้าง : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "บิตเรท : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "เข้ารหัสà¹à¸šà¸š : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "เฟรมเรท : <b>%s</b>"
-
-#.then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "เรื่อง : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "จำนวนหน้า : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "จำนวนคำ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "สร้างเมื่อ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "หมายเหตุ : <b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "ไม่มีข้อมูล"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "ใส่à¹à¸—็à¸à¸—ี่ต้องà¸à¸²à¸£ à¹à¸¢à¸à¸”้วยจุลภาค"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "à¹à¸—็ภ:"
-
-#.Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "_ค้นหาตามà¹à¸—็à¸"
-
-#.Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "_ลบà¹à¸—็à¸"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "จำà¸à¸±à¸”ผลà¸à¸²à¸£à¸„้นหาที่ N รายà¸à¸²à¸£"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr ""
-
-#.Translators: this messagge will apper immediately after the
-#.usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr ""
-
-#.Translators: this message will appear after the usage string
-#.and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122
-#: ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115
-#: ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:133
-#: ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46
-#: ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:135
-#: ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48
-#: ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr ""
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56
-#: ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189
-#: ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233
-#: ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr ""
-
-#.FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173
-#: ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr ""
-
-#.Translators: this messagge will apper immediately after the
-#.usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr ""
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:41
-#: ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45
-#: ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr ""
-
-#.Translators: this messagge will apper immediately after the
-#.usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr ""
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:120
-#: ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:124
-#: ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr ""
-
-#.Translators: this messagge will apper immediately after the
-#.usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:664
-msgid "- start the tracker daemon"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:665
-#: ../src/trackerd/trackerd.c:666
-msgid "DIRECTORY"
-msgstr ""
-
-#: ../src/trackerd/trackerd.c:673
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr ""
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "ควบคุมà¹à¸¥à¸°à¹€à¸à¹‰à¸²à¸ªà¸±à¸‡à¹€à¸à¸•à¸šà¸£à¸´à¸à¸²à¸£à¸„้นหาà¹à¸¥à¸°à¸—ำดัชนี Tracker"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "à¹à¸­à¸žà¹€à¸žà¸¥à¹‡à¸• Tracker"
-
-#.Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker :"
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "ไม่ได้ทำงาน"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸—ำดัชนี"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸¡à¸”ัชนี"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (ผู้ใช้สั่งพัà¸)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (พัà¸à¹‚ดยระบบ)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (พัà¸à¹€à¸žà¸£à¸²à¸°à¹ƒà¸Šà¹‰à¹à¸šà¸•à¹€à¸•à¸­à¸£à¸µà¹ˆ)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "โฟลเดอร์"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "เริ่มทำดัชนีข้อมูลใหม่หมดหรือไม่?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "à¸à¸²à¸£à¸—ำดัชนีอาจà¸à¸´à¸™à¹€à¸§à¸¥à¸²à¸¡à¸²à¸ คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¸—ำดัชนีใหม่หมดหรือไม่?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "สถิติ"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">สถิติà¸à¸²à¸£à¸—ำดัชนี</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker เป็นซอฟต์à¹à¸§à¸£à¹Œà¹€à¸ªà¸£à¸µ คุณสามารถà¹à¸ˆà¸à¸ˆà¹ˆà¸²à¸¢à¸•à¹ˆà¸­ à¹à¸¥à¸°/หรือ à¹à¸à¹‰à¹„ขโปรà¹à¸à¸£à¸¡à¹„ด้ ภายใต้เงื่อนไขของ "
-"GNU General Public License ที่เผยà¹à¸žà¸£à¹ˆà¹‚ดยมูลนิธิซอฟต์à¹à¸§à¸£à¹Œà¹€à¸ªà¸£à¸µ ไม่ว่าจะเป็นสัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•à¸£à¸¸à¹ˆà¸™à¸—ี่ 2 "
-"หรือรุ่นถัดมา (ตามà¹à¸•à¹ˆà¸„ุณจะเลือà¸)"
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Tracker เผยà¹à¸žà¸£à¹ˆà¸”้วยความหวังว่าโปรà¹à¸à¸£à¸¡à¸ˆà¸°à¸¡à¸µà¸›à¸£à¸°à¹‚ยชน์ à¹à¸•à¹ˆ *ไม่มีà¸à¸²à¸£à¸£à¸±à¸šà¸›à¸£à¸°à¸à¸±à¸™à¹ƒà¸”ๆ* "
-"ไม่มีà¹à¸¡à¹‰à¸à¸²à¸£à¸£à¸±à¸šà¸›à¸£à¸°à¸à¸±à¸™ *อรรถประโยชน์เชิงพาณิชย์* หรือ "
-"*ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะà¸à¸´à¸ˆà¹ƒà¸”ๆ* à¸à¸£à¸¸à¸“าอ่าน GNU General Public License "
-"เพื่อดูรายละเอียดเพิ่มเติม"
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr ""
-"คุณควรจะได้รับสำเนาของ GNU General Public License มาพร้อมà¸à¸±à¸š Tracker ถ้าคุณไม่ได้รับ "
-"à¸à¸£à¸¸à¸“าติดต่อไปที่ Free Software Foundation, Inc., 59 Temple Place, Suite 330, "
-"Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr ""
-"Tracker เป็นเครื่องมือที่ออà¸à¹à¸šà¸šà¸¡à¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸”ึงรายละเอียดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸‚้อมูลต่างๆ ในเครื่องของคุณ "
-"เพื่อà¸à¸²à¸£à¸„้นหาข้อมูลที่ง่ายà¹à¸¥à¸°à¸£à¸§à¸”เร็ว"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "สงวนลิขสิทธิ์ © 2005-2008 à¸à¸¥à¸¸à¹ˆà¸¡à¸œà¸¹à¹‰à¸žà¸±à¸’นา Tracker"
-
-#.Translators should localize the following string
-#.* which will be displayed at the bottom of the about
-#.* box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr "Isriya Paireepairit <markpeak@gmail.com>"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "เว็บไซต์ Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "_หยุดพัà¸à¸à¸²à¸£à¸—ำดัชนีทั้งหมด"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "_ค้นหา"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "_ทำดัชนีใหม่"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "_ปรับà¹à¸•à¹ˆà¸‡"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "ปรับà¹à¸•à¹ˆà¸‡à¸•à¸±à¸§à¸—ำ_ดัชนี"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "_สถิติ"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "เ_à¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "_ออà¸"
-
-#: ../src/tracker-applet/tracker-applet.c:1997
-#: ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr ""
-"โปรà¹à¸à¸£à¸¡à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¹€à¸£à¸´à¹ˆà¸¡à¸—ำดัชนีข้อมูลในคอมพิวเตอร์ของคุณ "
-"เพื่อว่าคุณจะสามารถค้นหาà¹à¸Ÿà¹‰à¸¡à¹à¸¥à¸°à¸­à¸µà¹€à¸¡à¸¥à¹„ด้รวดเร็วขึ้น"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr "คุณสามารถหยุดพัà¸à¸à¸²à¸£à¸—ำดัชนีได้ตลอดเวลา à¹à¸¥à¸°à¸•à¸±à¹‰à¸‡à¸„่าà¸à¸²à¸£à¸—ำดัชนีอื่นๆ โดยคลิà¸à¸‚วาที่นี่"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker ทำดัชนีระบบของคุณเสร็จà¹à¸¥à¹‰à¸§"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " ใช้เวลา %d ชั่วโมง %d นาที"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " ใช้เวลา %d นาที %d วินาที"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " ใช้เวลา %d วินาที"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "คุณสามารถค้นหาได้à¹à¸¥à¹‰à¸§ โดยคลิà¸à¸—ี่นี่"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "à¹à¸Ÿà¹‰à¸¡:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " โฟลเดอร์:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " เอà¸à¸ªà¸²à¸£:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " ภาพ:"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " เพลง:"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " วิดีโอ:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " à¹à¸Ÿà¹‰à¸¡à¸‚้อความ:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " à¹à¸Ÿà¹‰à¸¡à¸žà¸±à¸’นาโปรà¹à¸à¸£à¸¡:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " อื่นๆ:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "โปรà¹à¸à¸£à¸¡:"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "บันทึà¸à¸à¸²à¸£à¸ªà¸™à¸—นา:"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "อีเมล:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>ภาพเคลื่อนไหว</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>พัà¸à¸à¸²à¸£à¸—ำดัชนีอัตโนมัติ</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>à¸à¸²à¸£à¹à¸ªà¸”งผล</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "à¹à¸ªà¸”งไ_อคอนเป็นภาพเคลื่อนไหวขณะทำดัชนี"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "ปรับà¹à¸•à¹ˆà¸‡à¹à¸­à¸žà¹€à¸žà¸¥à¹‡à¸•"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr "พัà¸à¸–้าà¸à¸²à¸£à¸—ำดัชนีทำให้โปรà¹à¸à¸£à¸¡à¸­à¸·à¹ˆà¸™_ช้าลง"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "_พัà¸à¹€à¸¡à¸·à¹ˆà¸­à¸„อมพิวเตอร์ถูà¸à¹ƒà¸Šà¹‰à¸‡à¸²à¸™"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "_ซ่อนไอคอน (ยà¸à¹€à¸§à¹‰à¸™à¹€à¸¡à¸·à¹ˆà¸­à¹à¸ªà¸”งข้อความให้ผู้ใช้เห็น)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "_ปิด"
-
-#: ../src/tracker-preferences/tracker-preferences.c:833
-msgid "Data must be reindexed"
-msgstr "ข้อมูลต้องทำดัชนีใหม่"
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr ""
-"เพื่อให้à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹€à¸à¸´à¸”ผล Tracker ต้องทำดัชนีà¹à¸Ÿà¹‰à¸¡à¸‚องคุณใหม่ "
-"ถ้าต้องà¸à¸²à¸£à¹€à¸£à¸´à¹ˆà¸¡à¸—ำดัชนีทันที ให้คลิà¸à¸—ี่ปุ่ม 'ทำดัชนีใหม่' หรือมิฉะนั้น ระบบจะเริ่มทำดัชนีโดยอัตโนมัติ"
-"เมื่อดีมอน Tracker เริ่มทำงานในครั้งต่อไป"
-
-#: ../src/tracker-preferences/tracker-preferences.c:841
-msgid "_Reindex"
-msgstr "_ทำดัชนีใหม่"
-
-#: ../src/tracker-preferences/tracker-preferences.c:844
-msgid "Tracker daemon must be restarted"
-msgstr "ต้องเริ่มà¸à¸²à¸£à¸—ำงานของดีมอน Tracker ใหม่"
-
-#: ../src/tracker-preferences/tracker-preferences.c:846
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr ""
-"เพื่อให้à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹€à¸à¸´à¸”ผล คุณต้องเริ่มà¸à¸²à¸£à¸—ำงานของดีมอน Tracker ใหม่"
-"ถ้าต้องà¸à¸²à¸£à¹€à¸£à¸´à¹ˆà¸¡à¸à¸²à¸£à¸—ำงานของดีมอนทันที ให้คลิà¸à¸—ี่ปุ่ม 'เริ่มทำงานใหม่'"
-
-#: ../src/tracker-preferences/tracker-preferences.c:851
-msgid "_Restart"
-msgstr "เ_ริ่มทำงานใหม่"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "ตั้งค่าà¸à¸²à¸£à¸—ำดัชนีà¹à¸Ÿà¹‰à¸¡à¸‚อง Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "à¸à¸²à¸£à¸„้นหาà¹à¸¥à¸°à¸à¸²à¸£à¸—ำดัชนี"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>ไดเรà¸à¸—อรีที่ทำดัชนีอย่างเดียว</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>à¹à¸žà¸•à¹€à¸—ิร์นของà¹à¸Ÿà¹‰à¸¡à¸—ี่ไม่ทำดัชนี</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>พาธที่ไม่ทำดัชนี</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>à¸à¸²à¸£à¸£à¸§à¸¡à¸”ัชนี</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>ขีดจำà¸à¸±à¸”à¸à¸²à¸£à¸—ำดัชนี (ต่อหนึ่งà¹à¸Ÿà¹‰à¸¡)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>ตัวเลือà¸à¸à¸²à¸£à¸—ำดัชนี</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>à¸à¸²à¸£à¸—ำดัชนี</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>à¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸žà¸¥à¸±à¸‡à¸‡à¸²à¸™</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸—รัพยาà¸à¸£</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>เมื่อเริ่มทำงาน</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>วิธีà¹à¸šà¹ˆà¸‡à¸„ำ</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>à¸à¸²à¸£à¸œà¹ˆà¸­à¸™à¹€à¸„รื่อง</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>ไดเรà¸à¸—อรีที่เà¸à¹‰à¸²à¸ªà¸±à¸‡à¹€à¸à¸•</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "à¸à¸¥à¹ˆà¸­à¸‡à¹€à¸¡à¸¥à¹à¸šà¸š mbox อื่นๆ ที่จะทำดัชนี:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "พาธอื่นๆ ที่จะทำดัชนีà¹à¸¥à¸°à¹€à¸à¹‰à¸²à¸ªà¸±à¸‡à¹€à¸à¸•:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "พาธอื่นๆ ที่จะทำดัชนีเมื่อเริ่มโปรà¹à¸à¸£à¸¡ (à¹à¸•à¹ˆà¹„ม่ต้องเà¸à¹‰à¸²à¸ªà¸±à¸‡à¹€à¸à¸•):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"เดนมาร์à¸\n"
-"ดัตช์\n"
-"อังà¸à¸¤à¸©\n"
-"ฟินà¹à¸¥à¸™à¸”์\n"
-"à¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ª\n"
-"เยอรมัน\n"
-"อิตาลี\n"
-"นอร์เวย์\n"
-"โปรตุเà¸à¸ª\n"
-"รัสเซีย\n"
-"สเปน\n"
-"สวีเดน"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:29
-msgid "Disable all Indexing when on battery"
-msgstr "ปิดà¸à¸²à¸£à¸—ำดัชนีทุà¸à¸Šà¸™à¸´à¸” เมื่อใช้à¹à¸šà¸•à¹€à¸•à¸­à¸£à¸µà¹ˆ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable initial index sweep when on battery"
-msgstr "ปิดà¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸‚้อมูลดัชนีตอนเริ่มต้น เมื่อใช้à¹à¸šà¸•à¹€à¸•à¸­à¸£à¸µà¹ˆ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Email"
-msgstr "อีเมล"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Enable _Evolution email indexing"
-msgstr "ทำดัชนีอีเมลของ _Evolution"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _KMail email indexing"
-msgstr "ทำดัชนีอีเมลของ _KMail"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _Modest email indexing"
-msgstr "ทำดัชนีอีเมลของ _Modest"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Thunderbird email indexing"
-msgstr "ทำดัชนีอีเมลของ _Thunderbird"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _watching"
-msgstr "เ_à¸à¹‰à¸²à¸ªà¸±à¸‡à¹€à¸à¸•à¹à¸Ÿà¹‰à¸¡"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable i_ndexing"
-msgstr "_ทำดัชนี"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Faster"
-msgstr "เร็วขึ้น"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "File patterns to ignore during indexing:"
-msgstr "à¹à¸žà¸•à¹€à¸—ิร์นของà¹à¸Ÿà¹‰à¸¡à¸—ี่ไม่ต้องทำดัชนี:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "Files"
-msgstr "à¹à¸Ÿà¹‰à¸¡"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "General"
-msgstr "ทั่วไป"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "Generate thum_bnails"
-msgstr "สร้าง_ภาพย่อ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Ignored Files"
-msgstr "à¹à¸Ÿà¹‰à¸¡à¸—ี่ไม่ทำดัชนี"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Index _delay: "
-msgstr "เ_ริ่มทำดัชนีเมื่อเวลาผ่านไป:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _file contents"
-msgstr "ทำดัชนีเ_นื้อหาของà¹à¸Ÿà¹‰à¸¡"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _mounted directories"
-msgstr "ทำดัชนีไ_ดเรà¸à¸—อรีที่เมาทน์"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index and watch my home _directory"
-msgstr "ทำดัชนีà¹à¸¥à¸°à¹€à¸à¹‰à¸²à¸ªà¸±à¸‡à¹€à¸à¸•à¹„ดเรà¸à¸—อรี_บ้านของฉัน"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Indexing speed:"
-msgstr "ความเร็วà¸à¸²à¸£à¸—ำดัชนี:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Maximum _amount of text to index:"
-msgstr "_ขนาดข้อความยาวที่สุดที่ทำดัชนี:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum number of unique _words to index:"
-msgstr "จำนวน_คำสูงสุดที่ทำดัชนี:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Path roots to be ignored during indexing:"
-msgstr "พาธที่ไม่ต้องà¸à¸²à¸£à¸—ำดัชนี:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "รวมดัชนีà¹à¸šà¸šà¹€à¸£à¹‡à¸§ (อาจมีผลต่อประสิทธิภาพของระบบ)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Performance"
-msgstr "ประสิทธิภาพ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Slower"
-msgstr "ช้าลง"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Tracker Preferences"
-msgstr "ปรับà¹à¸•à¹ˆà¸‡ Tracker"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "_Language:"
-msgstr "_ภาษา:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "ใช้หน่วยความจำให้_น้อยที่สุด (ทำดัชนีได้ช้า)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Use additional memory for faster indexing"
-msgstr "ใ_ช้หน่วยความจำเพิ่มเติมเพื่อทำดัชนีให้เร็วขึ้น"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "seconds"
-msgstr "วินาที"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "ค้นหาบริà¸à¸²à¸£à¸—ี่ระบุ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "อีเมล"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "à¹à¸Ÿà¹‰à¸¡à¸—ั้งหมด"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "โฟลเดอร์"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "เอà¸à¸ªà¸²à¸£"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "à¹à¸Ÿà¹‰à¸¡à¸‚้อความ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "à¹à¸Ÿà¹‰à¸¡à¸žà¸±à¸’นาโปรà¹à¸à¸£à¸¡"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "บันทึà¸à¸à¸²à¸£à¸ªà¸™à¸—นา"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "โปรà¹à¸à¸£à¸¡"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "ประวัติà¸à¸²à¸£à¸—่องเว็บ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "_เปิด"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "เ_ปิดโฟลเดอร์"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "_ทิ้งลงถังขยะ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "บันทึà¸à¸œà¸¥à¸à¸²à¸£à¸„้นหาเป็_น..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "เà¸à¸´à¸”ข้อผิดพลาดต่อไปนี้ :"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "ผิดพลาด"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "คุณหมายถึง"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "ไม่พบข้อมูลที่ค้นหา"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "เครื่องมือสืบค้น Tracker - "
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "เครื่องมือสืบค้น Tracker"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "_ผลà¸à¸²à¸£à¸„้นหา:"
-
-#.Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "ยังไม่ได้เริ่มค้นหา"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "รายà¸à¸²à¸£"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "ไอคอน"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "ชื่อ"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "_หมวดหมู่"
-
-#.Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%d - %d จาà¸à¸—ั้งหมด %d รายà¸à¸²à¸£"
-
-#.Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d รายà¸à¸²à¸£"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "ไม่สามารถเชื่อมต่อà¸à¸±à¸šà¸šà¸£à¸´à¸à¸²à¸£à¸„้นหา บริà¸à¸²à¸£à¸­à¸²à¸ˆà¸—ำงานอื่นอยู่"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "_ค้นหา:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "Tracker à¸à¸³à¸¥à¸±à¸‡à¸—ำดัชนีอยู่ ยังไม่สามารถเริ่มà¸à¸²à¸£à¸„้นหาได้"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "ป้อนคำที่ต้องà¸à¸²à¸£à¸„้นหา (à¹à¸¢à¸à¸„ำด้วยช่องว่าง)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¹€à¸£à¸´à¹ˆà¸¡à¸„้นหา"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "ไม่สามารถเปิดเอà¸à¸ªà¸²à¸£à¸§à¸´à¸˜à¸µà¹ƒà¸Šà¹‰"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "ยืนยันที่จะเปิดเอà¸à¸ªà¸²à¸£ %d รายà¸à¸²à¸£à¸«à¸£à¸·à¸­à¹„ม่?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "จะเปิดเป็น %d หน้าต่างà¹à¸¢à¸à¸à¸±à¸™"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "ไม่สามารเปิดà¹à¸Ÿà¹‰à¸¡ \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "ไม่สามารเปิดโฟลเดอร์ \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "โปรà¹à¸à¸£à¸¡à¸ˆà¸±à¸”à¸à¸²à¸£à¹à¸Ÿà¹‰à¸¡ nautilus ไม่ได้ทำงานอยู่"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "ไม่สามารถเปิดโปรà¹à¸à¸£à¸¡à¹„ด้"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "ไม่มีเอà¸à¸ªà¸²à¸£à¸™à¸µà¹‰à¸­à¸¢à¸¹à¹ˆ"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "ไม่ได้ติดตั้งโปรà¹à¸à¸£à¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¸”ูเอà¸à¸ªà¸²à¸£à¸Šà¸™à¸´à¸”นี้"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "ยืนยันที่จะเปิด %d โฟลเดอร์หรือไม่?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "ไม่สามารถทิ้ง \"%s\" ลงถังขยะ"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "คุณต้องà¸à¸²à¸£à¸¥à¸š \"%s\" อย่างถาวรหรือไม่?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "ไม่มีถังขยะในระบบ ไม่สามารถทิ้ง \"%s\" ลงถังขยะได้"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "ไม่สามารถลบ \"%s\""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "ไม่สามารถย้าย \"%s\": %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "ไม่สามารถลบ \"%s\": %s"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "บันทึà¸à¸œà¸¥à¸à¸²à¸£à¸„้นหาเป็น..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "ไม่สามารถบันทึà¸à¹€à¸­à¸à¸ªà¸²à¸£"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "คุณไม่ได้ตั้งชื่อเอà¸à¸ªà¸²à¸£"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "ไม่สามารถบันทึà¸à¹€à¸­à¸à¸ªà¸²à¸£ \"%s\" ใน \"%s\" "
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "มีเอà¸à¸ªà¸²à¸£ \"%s\" อยู่à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸à¸—ับหรือไม่?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "ถ้าคุณบันทึà¸à¸—ับà¹à¸Ÿà¹‰à¸¡à¹€à¸à¹ˆà¸² ข้อมูลจะถูà¸à¹€à¸‚ียนทับ"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "_บันทึà¸à¸—ับ"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "เอà¸à¸ªà¸²à¸£à¸—ี่คุณเลือà¸à¹€à¸›à¹‡à¸™à¹‚ฟลเดอร์"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "คุณไม่มีสิทธิ์เขียนเอà¸à¸ªà¸²à¸£à¸™à¸µà¹‰"
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr ""
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-
-#.Translators: Below are the strings displayed in the 'Date Modified'
-#.column of the list view. The format of this string can vary depending
-#.on age of a file. Please modify the format of the timestamp to match
-#.your locale. For example, to display 24 hour time replace the '%-I'
-#.with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "วันนี้ เวลา %-H:%M น."
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "เมื่อวาน เวลา %-H:%M น."
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%Aที่ %-d %B %Ey เวลา %-H:%M:%S น."
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "ลิงà¸à¹Œ (เสีย)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "ลิงà¸à¹Œà¹„ปยัง %s"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "บริà¸à¸²à¸£à¸ªà¸·à¸šà¸„้นà¹à¸¥à¸°à¸—ำดัชนี Tracker"
diff --git a/po/zh_CN.po b/po/zh_CN.po
deleted file mode 100644
index 5269164fa..000000000
--- a/po/zh_CN.po
+++ /dev/null
@@ -1,1487 +0,0 @@
-# Chinese translations for tracker package
-# tracker 软件包的简体中文翻译.
-# Copyright (C) 2007 THE tracker'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the tracker package.
-# <zyangmath@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: trunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-16 23:05+0100\n"
-"PO-Revision-Date: 2008-04-22 13:58+0800\n"
-"Last-Translator: YangZhang <zyangmath@gmail.com>\n"
-"Language-Team: Chinese i18n <i18n-zh@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../python/deskbar-handler/tracker-handler.py:36
-#: ../python/deskbar-handler/tracker-module.py:100
-#, python-format
-msgid "Launch %s (%s)"
-msgstr "å¯åŠ¨ %s (%s)"
-
-#: ../python/deskbar-handler/tracker-handler.py:41
-#: ../python/deskbar-handler/tracker-module.py:105
-#, python-format
-msgid ""
-"See %s conversation\n"
-"%s %s\n"
-"from %s"
-msgstr ""
-"查看 %s 会è¯\n"
-"%s %s\n"
-"开始于 %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:47
-#: ../python/deskbar-handler/tracker-module.py:110
-#, python-format
-msgid "Email from %s"
-msgstr "æ¥è‡ªçš„ %s 邮件"
-
-#: ../python/deskbar-handler/tracker-handler.py:60
-#: ../python/deskbar-handler/tracker-module.py:122
-#, python-format
-msgid ""
-"Listen to music %s\n"
-"in %s"
-msgstr ""
-"收å¬éŸ³ä¹ %s\n"
-"ä½äºŽ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:65
-#: ../python/deskbar-handler/tracker-module.py:128
-#, python-format
-msgid ""
-"See document %s\n"
-"in %s"
-msgstr ""
-"查看文档 %s\n"
-"ä½äºŽ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:70
-#: ../python/deskbar-handler/tracker-handler.py:87
-#: ../python/deskbar-handler/tracker-handler.py:124
-#: ../python/deskbar-handler/tracker-module.py:133
-#: ../python/deskbar-handler/tracker-module.py:155
-#: ../python/deskbar-handler/tracker-module.py:207
-#: ../python/deskbar-handler/tracker-module.py:243
-#, python-format
-msgid ""
-"Open file %s\n"
-"in %s"
-msgstr ""
-"打开文件 %s\n"
-"ä½äºŽ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:75
-#: ../python/deskbar-handler/tracker-module.py:138
-#, python-format
-msgid ""
-"View image %s\n"
-"in %s"
-msgstr ""
-"æŸ¥çœ‹å›¾åƒ %s\n"
-"ä½äºŽ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:81
-#: ../python/deskbar-handler/tracker-module.py:144
-#, python-format
-msgid ""
-"Watch video %s\n"
-"in %s"
-msgstr ""
-"观看视频 %s\n"
-"ä½äºŽ %s"
-
-#: ../python/deskbar-handler/tracker-handler.py:92
-#: ../python/deskbar-handler/tracker-module.py:150
-#, python-format
-msgid ""
-"Open folder %s\n"
-"%s"
-msgstr ""
-"打开文件夹 %s\n"
-"%s"
-
-#: ../python/deskbar-handler/tracker-handler.py:210
-#: ../python/deskbar-handler/tracker-module.py:351
-msgid "with"
-msgstr "和"
-
-#: ../python/deskbar-handler/tracker-handler.py:218
-#: ../python/deskbar-handler/tracker-module.py:359
-msgid "in channel"
-msgstr "频é“"
-
-#: ../python/deskbar-handler/tracker-handler.py:385
-msgid "Search all of your documents, <b>as you type</b>"
-msgstr "æœç´¢æ‚¨çš„所有文档,<b>å³è¾“å³æœ</b>"
-
-#: ../python/deskbar-handler/tracker-handler.py:389
-#: ../python/deskbar-handler/tracker-module.py:295
-msgid "Development Files"
-msgstr "å¼€å‘文件"
-
-#: ../python/deskbar-handler/tracker-handler.py:392
-#: ../python/deskbar-handler/tracker-module.py:298
-#: ../src/tracker-search-tool/tracker-search-tool.c:141
-msgid "Music"
-msgstr "音ä¹"
-
-#: ../python/deskbar-handler/tracker-handler.py:395
-#: ../python/deskbar-handler/tracker-module.py:301
-#: ../src/tracker-search-tool/tracker-search-tool.c:140
-msgid "Images"
-msgstr "图åƒ"
-
-#: ../python/deskbar-handler/tracker-handler.py:398
-#: ../python/deskbar-handler/tracker-module.py:304
-#: ../src/tracker-search-tool/tracker-search-tool.c:142
-msgid "Videos"
-msgstr "视频"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:37
-#: ../python/deskbar-handler/tracker-module.py:65
-#: ../python/deskbar-handler/tracker-module.py:160
-#, python-format
-msgid "Search for %s with Tracker Search Tool"
-msgstr "用 Tracker æœç´¢å·¥å…·æœç´¢ %s"
-
-#: ../python/deskbar-handler/tracker-handler-static.py:68
-msgid "Search all of your documents with Tracker Search Tool"
-msgstr "用 Tracker æœç´¢å·¥å…·æœç´¢æ‚¨çš„所有文档"
-
-#: ../python/deskbar-handler/tracker-module.py:79
-msgid "Tracker Search"
-msgstr "Tracker æœç´¢"
-
-#: ../python/deskbar-handler/tracker-module.py:80
-msgid "Search with Tracker Search Tool"
-msgstr "用 Tracker æœç´¢å·¥å…·æœç´¢"
-
-#: ../python/deskbar-handler/tracker-module.py:290
-msgid "Tracker Live Search"
-msgstr "Tracker å³æ—¶æœç´¢"
-
-#: ../python/deskbar-handler/tracker-module.py:291
-msgid "Search with Tracker, as you type"
-msgstr "用 Tracker æœç´¢ï¼Œå³è¾“å³æœ"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:472
-#, c-format
-msgid "Path : <b>%s</b>"
-msgstr "路径:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:473
-#, c-format
-msgid "Modified : <b>%s</b>"
-msgstr "最åŽä¿®æ”¹ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:474
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:660
-#, c-format
-msgid "Size : <b>%s</b>"
-msgstr "大å°ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:475
-#, c-format
-msgid "Accessed : <b>%s</b>"
-msgstr "最åŽè®¿é—®ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:476
-#, c-format
-msgid "Mime : <b>%s</b>"
-msgstr "MIME 类型:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:528
-#, c-format
-msgid "Sender : <b>%s</b>"
-msgstr "å‘é€è€…:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:529
-#, c-format
-msgid "Date : <b>%s</b>"
-msgstr "日期:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:569
-#, c-format
-msgid "Comment : <b>%s</b>"
-msgstr "备注:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:570
-#, c-format
-msgid "Categories : <b>%s</b>"
-msgstr "类别:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:656
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:761
-#, c-format
-msgid "Duration : <b>%s</b>"
-msgstr "长度:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:657
-#, c-format
-msgid "Genre : <b>%s</b>"
-msgstr "æµæ´¾ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:658
-#, c-format
-msgid "Bitrate : <b>%s Kbs</b>"
-msgstr "比特率:<b>%s Kbs</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:659
-#, c-format
-msgid "Year : <b>%s</b>"
-msgstr "年份:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:661
-#, c-format
-msgid "Codec : <b>%s</b>"
-msgstr "ç¼–ç ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:702
-#, c-format
-msgid " taken with a <span size='large'><i>%s</i></span>"
-msgstr " 用<span size='large'><i>%s</i></span>æ‹æ‘„"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:707
-#, c-format
-msgid " <span size='large'><i>%s</i></span>"
-msgstr " <span size='large'><i>%s</i></span>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:727
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:759
-#, c-format
-msgid "Dimensions : <b>%d x %d</b>"
-msgstr "尺寸:<b>%dx%d</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:728
-#, c-format
-msgid "Date Taken : <b>%s</b>"
-msgstr "æ‹æ‘„日期:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:729
-#, c-format
-msgid "Orientation : <b>%s</b>"
-msgstr "æ–¹å‘:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:730
-#, c-format
-msgid "Flash : <b>%s</b>"
-msgstr "闪光ç¯ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:731
-#, c-format
-msgid "Focal Length : <b>%s</b>"
-msgstr "焦è·ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:732
-#, c-format
-msgid "Exposure Time : <b>%s</b>"
-msgstr "æ›å…‰æ—¶é—´ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:760
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:793
-#, c-format
-msgid "Author : <b>%s</b>"
-msgstr "作者:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:762
-#, c-format
-msgid "Bitrate : <b>%s</b>"
-msgstr "比特率:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:763
-#, c-format
-msgid "Encoded In : <b>%s</b>"
-msgstr "ç¼–ç ï¼š<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:764
-#, c-format
-msgid "Framerate : <b>%s</b>"
-msgstr "帧率:<b>%s</b>"
-
-#. then set the remaining properties
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:792
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:824
-#, c-format
-msgid "Subject : <b>%s</b>"
-msgstr "主题:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:794
-#, c-format
-msgid "Page Count : <b>%s</b>"
-msgstr "页数:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:795
-#, c-format
-msgid "Word Count : <b>%s</b>"
-msgstr "字数:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:796
-#, c-format
-msgid "Created : <b>%s</b>"
-msgstr "创建于:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:797
-#, c-format
-msgid "Comments : <b>%s</b>"
-msgstr "备注:<b>%s</b>"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:917
-#, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:921
-#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:925
-#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:964
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1004
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1027
-#: ../src/libtracker-gtk/tracker-metadata-tile.c:1049
-msgid "Unknown"
-msgstr "未知"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:250
-msgid "Type tags you want to add here, separated by commas"
-msgstr "在此输入您è¦æ·»åŠ çš„标签,以逗å·åˆ†éš”"
-
-#: ../src/libtracker-gtk/tracker-tag-bar.c:365
-msgid "Tags :"
-msgstr "标签:"
-
-#. Search For Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:392
-msgid "_Search For Tag"
-msgstr "æœç´¢æ ‡ç­¾(_S)"
-
-#. Remove Tag
-#: ../src/libtracker-gtk/tracker-tag-bar.c:404
-msgid "_Remove Tag"
-msgstr "删除标签(_R)"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "Limit the number of results showed to N"
-msgstr "é™åˆ¶æ˜¾ç¤ºçš„结果数为 N"
-
-#: ../src/libtracker/tracker-search.c:34
-msgid "N"
-msgstr "N"
-
-#: ../src/libtracker/tracker-search.c:35
-msgid "Search for a specific service"
-msgstr "æœç´¢æŒ‡å®šæœåŠ¡"
-
-#: ../src/libtracker/tracker-search.c:35
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "SERVICE"
-msgstr "æœåŠ¡"
-
-#: ../src/libtracker/tracker-search.c:36
-msgid "Show more detailed results with service and mime type as well"
-msgstr "显示æœåŠ¡ã€MIME 类型等更详细的信æ¯"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-search.c:89
-msgid "TERM... - search files for certain terms"
-msgstr "项... - æœç´¢åŒ…å«æŒ‡å®šé¡¹çš„文件"
-
-#. Translators: this message will appear after the usage string
-#. and before the list of options.
-#: ../src/libtracker/tracker-search.c:93
-msgid ""
-"Specifying more then one term, will be showed items containing ALL the "
-"specified terms (term1 AND term2 - logical conjunction)"
-msgstr "指定一个或多个项,将显示所有包å«æŒ‡å®šé¡¹çš„结果(项1 AND 项2 - 逻辑连接)"
-
-#: ../src/libtracker/tracker-search.c:97
-msgid "The list of recognized services is:"
-msgstr "已识别的æœåŠ¡åˆ—表为:"
-
-#: ../src/libtracker/tracker-search.c:114
-#: ../src/libtracker/tracker-search.c:122 ../src/libtracker/tracker-stats.c:82
-#: ../src/libtracker/tracker-tag.c:115 ../src/libtracker/tracker-tag.c:123
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "å°è¯•â€œ%s --helpâ€ä»¥èŽ·å¾—更多信æ¯ã€‚"
-
-#: ../src/libtracker/tracker-search.c:120
-#, c-format
-msgid "%s: missing search terms"
-msgstr "%s:缺少æœç´¢é¡¹"
-
-#: ../src/libtracker/tracker-search.c:133 ../src/libtracker/tracker-stats.c:90
-#: ../src/libtracker/tracker-status.c:46 ../src/libtracker/tracker-tag.c:132
-#, c-format
-msgid "%s: no connection to tracker daemon"
-msgstr "%s:没有到 tracker 守护进程的连接"
-
-#: ../src/libtracker/tracker-search.c:135 ../src/libtracker/tracker-stats.c:92
-#: ../src/libtracker/tracker-status.c:48 ../src/libtracker/tracker-tag.c:134
-#, c-format
-msgid "Ensure \"trackerd\" is running before launch this command."
-msgstr "è¿è¡Œæ­¤å‘½ä»¤å‰è¯·ç¡®ä¿â€œtrackerdâ€æ­£åœ¨è¿è¡Œã€‚"
-
-#: ../src/libtracker/tracker-search.c:147
-#, c-format
-msgid "Service not recognized, searching in Other Files...\n"
-msgstr "未识别的æœåŠ¡ï¼Œåœ¨â€œå…¶å®ƒæ–‡ä»¶â€ä¸­æœç´¢...\n"
-
-#: ../src/libtracker/tracker-search.c:164
-#: ../src/libtracker/tracker-status.c:56 ../src/libtracker/tracker-tag.c:180
-#: ../src/libtracker/tracker-tag.c:189 ../src/libtracker/tracker-tag.c:198
-#: ../src/libtracker/tracker-tag.c:233 ../src/libtracker/tracker-tag.c:283
-#, c-format
-msgid "%s: internal tracker error: %s"
-msgstr "%s:tracker 内部错误:%s"
-
-#. FIXME!! coreutilus don't print anything on no-results
-#: ../src/libtracker/tracker-search.c:173 ../src/libtracker/tracker-tag.c:268
-#, c-format
-msgid "No results found matching your query"
-msgstr "未找到满足您的查询的结果"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-stats.c:73
-msgid " - show number of indexed files for each service"
-msgstr " - 显示æ¯ä¸ªæœåŠ¡æ‰€ç´¢å¼•çš„文件数目"
-
-#: ../src/libtracker/tracker-stats.c:108
-msgid "fetching index stats"
-msgstr "获å–索引统计信æ¯"
-
-#: ../src/libtracker/tracker-tag.c:41
-msgid "Add specified tag to a file"
-msgstr "给文件添加指定的标签"
-
-#: ../src/libtracker/tracker-tag.c:41 ../src/libtracker/tracker-tag.c:42
-#: ../src/libtracker/tracker-tag.c:45 ../src/libtracker/tracker-tag.c:92
-msgid "TAG"
-msgstr "标签"
-
-#: ../src/libtracker/tracker-tag.c:42
-msgid "Remove specified tag from a file"
-msgstr "从文件中移除指定的标签"
-
-#: ../src/libtracker/tracker-tag.c:43
-msgid "Remove all tags from a file"
-msgstr "移除文件的所有标签"
-
-#: ../src/libtracker/tracker-tag.c:44
-msgid "List all defined tags"
-msgstr "显示所有已定义的标签"
-
-#: ../src/libtracker/tracker-tag.c:45
-msgid "Search for files with specified tag"
-msgstr "æœç´¢åŒ…å«æŒ‡å®šçš„标签的文件"
-
-#: ../src/libtracker/tracker-tag.c:46
-msgid "FILE..."
-msgstr "文件..."
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE>
-#: ../src/libtracker/tracker-tag.c:90
-msgid "FILE... - manipulate tags on files"
-msgstr "文件... - æ“作文件的标签"
-
-#: ../src/libtracker/tracker-tag.c:99
-msgid ""
-"To add, remove, or search for multiple tags at the same time, join multiple "
-"options like:"
-msgstr "è¦åŒæ—¶æ·»åŠ ã€åˆ é™¤æˆ–çš„æœç´¢å¤šä¸ªæ ‡ç­¾ï¼Œåƒè¿™æ ·æ¥è¿žæŽ¥å¤šä¸ªé€‰é¡¹ï¼š"
-
-#: ../src/libtracker/tracker-tag.c:121
-#, c-format
-msgid "%s: invalid arguments"
-msgstr "%s:éžæ³•çš„å‚æ•°"
-
-#: ../src/libtracker/tracker-tag.c:148
-#, c-format
-msgid "%s: file %s not found"
-msgstr "%s:文件 %s 未找到"
-
-#: ../src/trackerd/trackerd.c:120
-msgid "Directory to exclude from indexing"
-msgstr "被排除而无需索引的目录"
-
-#: ../src/trackerd/trackerd.c:120 ../src/trackerd/trackerd.c:121
-#: ../src/trackerd/trackerd.c:122
-msgid "/PATH/DIR"
-msgstr "/路径/目录"
-
-#: ../src/trackerd/trackerd.c:121
-msgid "Directory to include in indexing"
-msgstr "索引时包å«çš„目录"
-
-#: ../src/trackerd/trackerd.c:122
-msgid "Directory to crawl for indexing at start up only"
-msgstr "仅在å¯åŠ¨æ—¶ç´¢å¼•çš„目录"
-
-#: ../src/trackerd/trackerd.c:123
-msgid "Disable any indexing or watching taking place"
-msgstr "ç¦ç”¨æ‰€æœ‰ç´¢å¼•å’Œç›‘视"
-
-#: ../src/trackerd/trackerd.c:124
-msgid ""
-"Value that controls the level of logging. Valid values are 0 (displays/logs "
-"only errors), 1 (minimal), 2 (detailed), and 3 (debug)"
-msgstr "用于控制日志级别的值。å¯ç”¨çš„值为:0ï¼åªæ˜¾ç¤º/记录错误;1ï¼æœ€å°‘ï¼›2ï¼è¯¦ç»†ï¼›3ï¼è°ƒè¯•"
-
-#: ../src/trackerd/trackerd.c:124 ../src/trackerd/trackerd.c:125
-msgid "VALUE"
-msgstr "值"
-
-#: ../src/trackerd/trackerd.c:125
-msgid ""
-"Value to use for throttling indexing. Value must be in range 0-99 (default "
-"0) with lower values increasing indexing speed"
-msgstr "调节索引的值。此值必须在0ï¼99之间(默认0),值越低索引速度越快"
-
-#: ../src/trackerd/trackerd.c:126
-msgid "Minimizes the use of memory but may slow indexing down"
-msgstr "最å°åŒ–内存å ç”¨ï¼Œä½†å¯èƒ½ä¼šé™ä½Žç´¢å¼•é€Ÿåº¦"
-
-#: ../src/trackerd/trackerd.c:127
-msgid "Initial sleep time, just before indexing, in seconds"
-msgstr "在开始索引å‰çš„åˆå§‹ç¡çœ æ—¶é—´ï¼Œä»¥ç§’计"
-
-#: ../src/trackerd/trackerd.c:128
-msgid ""
-"Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"
-msgstr "用以分割和åœé¡¿å•è¯åˆ—表的语言(ISO 639-1 2字节代ç )"
-
-#: ../src/trackerd/trackerd.c:128
-msgid "LANG"
-msgstr "语言"
-
-#: ../src/trackerd/trackerd.c:129
-msgid "Force a re-index of all content"
-msgstr "强制é‡æ–°ç´¢å¼•æ‰€æœ‰å†…容"
-
-#: ../src/trackerd/trackerd.c:130
-msgid "Make tracker errors fatal"
-msgstr "视 tracker 错误为致命错误"
-
-#. Translators: this messagge will apper immediately after the
-#. usage string - Usage: COMMAND <THIS_MESSAGE>
-#: ../src/trackerd/trackerd.c:664
-msgid "- start the tracker daemon"
-msgstr "- å¯åŠ¨ tracker 守护进程"
-
-#: ../src/trackerd/trackerd.c:665 ../src/trackerd/trackerd.c:666
-msgid "DIRECTORY"
-msgstr "目录"
-
-#: ../src/trackerd/trackerd.c:673
-msgid ""
-"To include or exclude multiple directories at the same time, join multiple "
-"options like:"
-msgstr "è¦åŒæ—¶åŒ…å«æˆ–排除多个目录,åƒè¿™æ ·æ¥è¿žæŽ¥å¤šä¸ªé€‰é¡¹ï¼š"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:1
-msgid "Control and monitor the Tracker search and indexing service"
-msgstr "控制并监视 Tracker æœç´¢ä¸Žç´¢å¼•æœåŠ¡"
-
-#: ../src/tracker-applet/tracker-applet.desktop.in.in.h:2
-#: ../src/tracker-applet/tracker-applet.c:54
-msgid "Tracker Applet"
-msgstr "Tracker é¢æ¿å°ç¨‹åº"
-
-#. Translators: this will appear like "Tracker : Idle"
-#: ../src/tracker-applet/tracker-applet.c:238
-msgid "Tracker : "
-msgstr "Tracker:"
-
-#: ../src/tracker-applet/tracker-applet.c:243
-msgid "Idle"
-msgstr "空闲"
-
-#: ../src/tracker-applet/tracker-applet.c:247
-msgid "Indexing"
-msgstr "正在索引"
-
-#: ../src/tracker-applet/tracker-applet.c:251
-msgid "Merging"
-msgstr "正在åˆå¹¶"
-
-#: ../src/tracker-applet/tracker-applet.c:261
-msgid " (paused by user)"
-msgstr " (被用户暂åœ)"
-
-#: ../src/tracker-applet/tracker-applet.c:263
-#: ../src/tracker-applet/tracker-applet.c:274
-msgid " (paused by system)"
-msgstr " (被系统暂åœ)"
-
-#: ../src/tracker-applet/tracker-applet.c:278
-msgid " (paused by battery)"
-msgstr " (使用电池时暂åœ)"
-
-#: ../src/tracker-applet/tracker-applet.c:291
-msgid "folders"
-msgstr "文件夹"
-
-#: ../src/tracker-applet/tracker-applet.c:293
-msgid "mailboxes"
-msgstr "邮箱"
-
-#: ../src/tracker-applet/tracker-applet.c:1021
-msgid "Re-index your system?"
-msgstr "é‡æ–°ç´¢å¼•æ‚¨çš„系统å—?"
-
-#: ../src/tracker-applet/tracker-applet.c:1024
-msgid "Indexing can take a long time. Are you sure you want to re-index?"
-msgstr "索引å¯èƒ½ä¼šæŒç»­è¾ƒé•¿æ—¶é—´ã€‚您确定想è¦é‡æ–°ç´¢å¼•å—?"
-
-#: ../src/tracker-applet/tracker-applet.c:1162
-msgid "Statistics"
-msgstr "统计"
-
-#: ../src/tracker-applet/tracker-applet.c:1188
-msgid "<span weight=\"bold\" size=\"larger\">Index statistics</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">索引统计</span>"
-
-#: ../src/tracker-applet/tracker-applet.c:1313
-msgid ""
-"Tracker is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Tracker 是自由软件;您å¯ä»¥åœ¨è‡ªç”±è½¯ä»¶åŸºé‡‘会å‘布的 GNU 通"
-"用公共许å¯è¯ä¸‹é‡æ–°å‘布或修改它;许å¯è¯åº”使用第二版本或您"
-"所选择的更新的版本。"
-
-#: ../src/tracker-applet/tracker-applet.c:1314
-msgid ""
-"Tracker is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr "å‘布 Tracker 的目的是希望它有用。但我们并ä¸ä¸ºå®ƒæ供任何形å¼çš„æ‹…ä¿ï¼Œä¹Ÿæ— æ³•ä¿è¯å®ƒå¯ä»¥åœ¨ç‰¹å®šç”¨é€”中得到您希望的结果。请å‚看 GNU GPL 许å¯ä¸­çš„更多细节。"
-
-#: ../src/tracker-applet/tracker-applet.c:1315
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Tracker; if not, write to the Free Software Foundation, Inc., 59 Temple "
-"Place, Suite 330, Boston, MA 02111-1307 USA"
-msgstr "您应该在收到 Tracker çš„åŒæ—¶æ”¶åˆ°äº† GNU GPL å议的副本;如果您没有收到的è¯ï¼Œè¯·ç»™è‡ªç”±è½¯ä»¶åŸºé‡‘会写信,地å€æ˜¯ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
-
-#: ../src/tracker-applet/tracker-applet.c:1330
-msgid ""
-"Tracker is a tool designed to extract info and metadata about your personal "
-"data so that it can be searched easily and quickly"
-msgstr "Tracker 工具被设计用æ¥ä»Žæ‚¨çš„个人数æ®ä¸­æå–ä¿¡æ¯å’Œå…ƒæ•°æ®ï¼Œä»¥ä¾¿èƒ½ç®€ä¾¿å¿«é€Ÿåœ°æœç´¢å®ƒä»¬"
-
-#: ../src/tracker-applet/tracker-applet.c:1332
-msgid "Copyright © 2005-2008 The Tracker authors"
-msgstr "Copyright © 2005-2008 The Tracker authors"
-
-#. Translators should localize the following string
-#. * which will be displayed at the bottom of the about
-#. * box to give credit to the translator(s).
-#.
-#: ../src/tracker-applet/tracker-applet.c:1340
-msgid "translator-credits"
-msgstr "YangZhang <zyangmath@gmail.com>, 2007-2008"
-
-#: ../src/tracker-applet/tracker-applet.c:1343
-msgid "Tracker Web Site"
-msgstr "Tracker 网站"
-
-#: ../src/tracker-applet/tracker-applet.c:1363
-msgid "_Pause All Indexing"
-msgstr "æš‚åœæ‰€æœ‰ç´¢å¼•(_P)"
-
-#: ../src/tracker-applet/tracker-applet.c:1374
-msgid "_Search"
-msgstr "æœç´¢(_S)"
-
-#: ../src/tracker-applet/tracker-applet.c:1384
-msgid "_Re-index"
-msgstr "é‡æ–°ç´¢å¼•(_R)"
-
-#: ../src/tracker-applet/tracker-applet.c:1393
-msgid "_Preferences"
-msgstr "首选项(_P)"
-
-#: ../src/tracker-applet/tracker-applet.c:1404
-msgid "_Indexer Preferences"
-msgstr "索引器首选项(_I)"
-
-#: ../src/tracker-applet/tracker-applet.c:1413
-msgid "S_tatistics"
-msgstr "统计(_T)"
-
-#: ../src/tracker-applet/tracker-applet.c:1422
-msgid "_About"
-msgstr "关于(_A)"
-
-#: ../src/tracker-applet/tracker-applet.c:1434
-msgid "_Quit"
-msgstr "退出(_Q)"
-
-#: ../src/tracker-applet/tracker-applet.c:1997 ../trackerd.desktop.in.in.h:1
-msgid "Tracker"
-msgstr "Tracker"
-
-#: ../src/tracker-applet/tracker-applet.c:2004
-msgid ""
-"Your computer is about to be indexed so you can perform fast searches of "
-"your files and emails"
-msgstr "您的计算机将被索引以便您能够快速æœç´¢æ‚¨çš„文件和邮件"
-
-#: ../src/tracker-applet/tracker-applet.c:2007
-msgid ""
-"You can pause indexing at any time and configure index settings by right "
-"clicking here"
-msgstr "您å¯ä»¥åœ¨ä»»ä½•æ—¶å€™ï¼Œé€šè¿‡åœ¨æ­¤å¤„å•å‡»é¼ æ ‡å³é”®ï¼Œæ¥æš‚åœç´¢å¼•å’Œé…置索引设置"
-
-#: ../src/tracker-applet/tracker-applet.c:2010
-msgid "Tracker has finished indexing your system"
-msgstr "Tracker 已完æˆå¯¹æ‚¨çš„系统的索引"
-
-#: ../src/tracker-applet/tracker-applet.c:2011
-#, c-format
-msgid " in %d hours and %d minutes"
-msgstr " 用时%då°æ—¶%d分"
-
-#: ../src/tracker-applet/tracker-applet.c:2012
-#, c-format
-msgid " in %d minutes and %d seconds"
-msgstr " 用时%d分%d秒"
-
-#: ../src/tracker-applet/tracker-applet.c:2013
-#, c-format
-msgid " in %d seconds"
-msgstr " 用时%d秒"
-
-#: ../src/tracker-applet/tracker-applet.c:2015
-msgid "You can now perform searches by clicking here"
-msgstr "您现在å¯ä»¥å•å‡»æ­¤å¤„进行æœç´¢"
-
-#: ../src/tracker-applet/tracker-applet.c:2018
-msgid "Files:"
-msgstr "文件:"
-
-#: ../src/tracker-applet/tracker-applet.c:2019
-msgid " Folders:"
-msgstr " 文件夹:"
-
-#: ../src/tracker-applet/tracker-applet.c:2020
-msgid " Documents:"
-msgstr " 文档:"
-
-#: ../src/tracker-applet/tracker-applet.c:2021
-msgid " Images:"
-msgstr " 图åƒï¼š"
-
-#: ../src/tracker-applet/tracker-applet.c:2022
-msgid " Music:"
-msgstr " 音ä¹ï¼š"
-
-#: ../src/tracker-applet/tracker-applet.c:2023
-msgid " Videos:"
-msgstr " 视频:"
-
-#: ../src/tracker-applet/tracker-applet.c:2024
-msgid " Text:"
-msgstr " 文本:"
-
-#: ../src/tracker-applet/tracker-applet.c:2025
-msgid " Development:"
-msgstr " å¼€å‘:"
-
-#: ../src/tracker-applet/tracker-applet.c:2026
-msgid " Other:"
-msgstr " 其它:"
-
-#: ../src/tracker-applet/tracker-applet.c:2027
-msgid "Applications:"
-msgstr "应用程åºï¼š"
-
-#: ../src/tracker-applet/tracker-applet.c:2028
-msgid "Conversations:"
-msgstr "会è¯ï¼š"
-
-#: ../src/tracker-applet/tracker-applet.c:2029
-msgid "Emails:"
-msgstr "邮件:"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:1
-msgid "<b>Animation</b>"
-msgstr "<b>动画</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:2
-msgid "<b>Smart Pausing</b>"
-msgstr "<b>智能暂åœ</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:3
-msgid "<b>Visibility</b>"
-msgstr "<b>å¯è§æ€§</b>"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:4
-msgid "Animate _icon when indexing"
-msgstr "索引时显示动画图标(_I)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:5
-msgid "Applet Preferences"
-msgstr "å°ç¨‹åºé¦–选项"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:6
-msgid ""
-"Automatically _pause if indexing may degrade performance of other "
-"applications in active use"
-msgstr "å¯èƒ½é™ä½Žå…¶å®ƒæ´»è·ƒçš„应用程åºæ€§èƒ½æ—¶è‡ªåŠ¨æš‚åœç´¢å¼•(_P)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:7
-msgid "_Automatically pause all indexing when computer is in active use"
-msgstr "计算机活跃使用时自动暂åœæ‰€æœ‰ç´¢å¼•(_A)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:8
-msgid "_Hide Icon (except when displaying messages to user)"
-msgstr "éšè—图标(å‘用户显示通知消æ¯æ—¶é™¤å¤–)(_H)"
-
-#: ../src/tracker-applet/tracker-applet-prefs.glade.h:9
-msgid "_Off"
-msgstr "关闭(_O)"
-
-#: ../src/tracker-preferences/tracker-preferences.c:833
-msgid "Data must be reindexed"
-msgstr "æ•°æ®å¿…须被é‡æ–°ç´¢å¼•"
-
-#: ../src/tracker-preferences/tracker-preferences.c:834
-msgid ""
-"In order for your changes to take effect, Tracker must reindex your files. "
-"Click the Reindex button to start reindexing now, otherwise this action will "
-"be performed the next time the Tracker daemon is restarted."
-msgstr "Tracker å¿…é¡»é‡æ–°ç´¢å¼•æ‚¨çš„文件以使您的å˜æ›´ç”Ÿæ•ˆã€‚点击â€é‡æ–°ç´¢å¼•â€œæŒ‰é’®ä»¥ç«‹å³å¼€å§‹é‡æ–°ç´¢å¼•ï¼Œå¦åˆ™æ­¤åŠ¨ä½œå°†åœ¨Tracker 守护进程下一次é‡æ–°å¯åŠ¨æ—¶æ‰§è¡Œã€‚"
-
-#: ../src/tracker-preferences/tracker-preferences.c:841
-msgid "_Reindex"
-msgstr "é‡æ–°ç´¢å¼•(_R)"
-
-#: ../src/tracker-preferences/tracker-preferences.c:844
-msgid "Tracker daemon must be restarted"
-msgstr "å¿…é¡»é‡æ–°å¯åŠ¨ Tracker 守护进程"
-
-#: ../src/tracker-preferences/tracker-preferences.c:846
-msgid ""
-"In order for your changes to take effect, the Tracker daemon has to be "
-"restarted. Click the Restart button to restart the daemon now."
-msgstr "Tracker 守护进程必须被é‡æ–°å¯åŠ¨ä»¥ä½¿æ‚¨çš„å˜æ›´ç”Ÿæ•ˆã€‚点击“é‡æ–°å¯åŠ¨â€æŒ‰é’®ç«‹å³é‡å¯æ­¤è¿›ç¨‹ã€‚"
-
-#: ../Src/tracker-preferences/tracker-preferences.c:851
-msgid "_Restart"
-msgstr "é‡æ–°å¯åŠ¨(_R)"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:1
-msgid "Configure file indexing with Tracker"
-msgstr "é…ç½® Tracker 文件索引"
-
-#: ../src/tracker-preferences/tracker-preferences.desktop.in.in.h:2
-msgid "Search and Indexing"
-msgstr "æœç´¢å’Œç´¢å¼•"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:1
-msgid "<b>Crawled Directories</b>"
-msgstr "<b>索引目录</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:2
-msgid "<b>Ignored File Patterns</b>"
-msgstr "<b>忽略文件模å¼</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:3
-msgid "<b>Ignored Paths</b>"
-msgstr "<b>忽略路径</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:4
-msgid "<b>Index Merging</b>"
-msgstr "<b>索引åˆå¹¶</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:5
-msgid "<b>Indexing Limits (per file)</b>"
-msgstr "<b>索引é™åˆ¶(å•ä¸ªæ–‡ä»¶)</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:6
-msgid "<b>Indexing Options</b>"
-msgstr "<b>索引选项</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:7
-msgid "<b>Indexing</b>"
-msgstr "<b>索引</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:8
-msgid "<b>Power management</b>"
-msgstr "<b>电æºç®¡ç†</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:9
-msgid "<b>Resource Usage</b>"
-msgstr "<b>资æºå ç”¨</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:10
-msgid "<b>Startup</b>"
-msgstr "<b>å¯åŠ¨</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:11
-msgid "<b>Stemming</b>"
-msgstr "<b>è¯å¹²æå–</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:12
-msgid "<b>Throttling</b>"
-msgstr "<b>调节</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:13
-msgid "<b>Watch Directories</b>"
-msgstr "<b>监视目录</b>"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:14
-msgid "Additional mbox style mailboxes to index:"
-msgstr "其它的è¦ç´¢å¼•çš„ mbox 类邮箱:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:15
-msgid "Additional paths to index and watch:"
-msgstr "其它的需索引和监视的路径:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:16
-msgid "Additional paths to index on startup (but not watch for updates):"
-msgstr "其它的需在å¯åŠ¨æ—¶ç´¢å¼•çš„路径(但ä¸ç›‘视其更新):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:17
-msgid ""
-"Danish\n"
-"Dutch\n"
-"English\n"
-"Finnish\n"
-"French\n"
-"German\n"
-"Hungarian\n"
-"Italian\n"
-"Norwegian\n"
-"Portuguese\n"
-"Russian\n"
-"Spanish\n"
-"Swedish"
-msgstr ""
-"丹麦语\n"
-"è·å…°è¯­\n"
-"英语\n"
-"芬兰语\n"
-"法语\n"
-"德语\n"
-"匈牙利语\n"
-"æ„大利语\n"
-"挪å¨è¯­\n"
-"è‘¡è„牙语\n"
-"俄语\n"
-"西ç­ç‰™è¯­\n"
-"瑞典语"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:30
-msgid "Disable all Indexing when on battery"
-msgstr "电池供电时ç¦æ­¢æ‰€æœ‰ç´¢å¼•"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:31
-msgid "Disable initial index sweep when on battery"
-msgstr "电池供电时ç¦æ­¢åˆå§‹ç´¢å¼•æ‰«æ"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:32
-msgid "Email"
-msgstr "邮件"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:33
-msgid "Enable _Evolution email indexing"
-msgstr "å¯ç”¨ _Evolution 邮件索引"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:34
-msgid "Enable _KMail email indexing"
-msgstr "å¯ç”¨ _KMail 邮件索引"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:35
-msgid "Enable _Modest email indexing"
-msgstr "å¯ç”¨ _Modest 邮件索引"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:36
-msgid "Enable _Thunderbird email indexing"
-msgstr "å¯ç”¨ _Thunderbird 邮件索引"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:37
-msgid "Enable _watching"
-msgstr "å¯ç”¨ç›‘视(_W)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:38
-msgid "Enable i_ndexing"
-msgstr "å¯ç”¨ç´¢å¼•(_N)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:39
-msgid "Faster"
-msgstr "å¿«"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:40
-msgid "File patterns to ignore during indexing:"
-msgstr "编制索引时忽略的文件模å¼ï¼š"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:41
-msgid "Files"
-msgstr "文件"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:42
-msgid "General"
-msgstr "常规"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:43
-msgid "Generate thum_bnails"
-msgstr "生æˆç¼©ç•¥å›¾(_B)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:44
-msgid "Ignored Files"
-msgstr "忽略文件"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:45
-msgid "Index _delay: "
-msgstr "索引延时(_D):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:46
-msgid "Index _file contents"
-msgstr "索引文件内容(_F)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:47
-msgid "Index _mounted directories"
-msgstr "索引已挂载的目录(_M)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:48
-msgid "Index and watch my home _directory"
-msgstr "索引并监视我的家目录(_D)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:49
-msgid "Indexing speed:"
-msgstr "索引速度:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:50
-msgid "Maximum _amount of text to index:"
-msgstr "索引的最大文本长度(_A):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:51
-msgid "Maximum number of unique _words to index:"
-msgstr "索引的最大å•è¯æ•°ç›®(_W):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:52
-msgid "Path roots to be ignored during indexing:"
-msgstr "索引时忽略的根路径:"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:53
-msgid "Perform fast index merges (may affect system performance)"
-msgstr "进行快速索引åˆå¹¶(å¯èƒ½ä¼šå½±å“系统性能)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:54
-msgid "Performance"
-msgstr "性能"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:55
-msgid "Slower"
-msgstr "æ…¢"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:56
-msgid "Tracker Preferences"
-msgstr "Tracker 首选项"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:57
-msgid "_Language:"
-msgstr "语言(_L):"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:58
-msgid "_Minimize memory usage (slower indexing)"
-msgstr "最å°åŒ–内存å ç”¨(索引较慢)(_M)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:59
-msgid "_Use additional memory for faster indexing"
-msgstr "使用更多内存以更快地索引(_U)"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:60
-msgid "kB"
-msgstr "kB"
-
-#: ../src/tracker-preferences/tracker-preferences.glade.h:61
-msgid "seconds"
-msgstr "秒"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:65
-msgid "Search from a specific service"
-msgstr "æœç´¢æŒ‡å®šæœåŠ¡"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:136
-msgid "Emails"
-msgstr "邮件"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:137
-msgid "All Files"
-msgstr "所有文件"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:138
-msgid "Folders"
-msgstr "文件夹"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:139
-msgid "Documents"
-msgstr "文档"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:143
-#: ../src/tracker-search-tool/tracker-search-tool.c:1213
-msgid "Text"
-msgstr "文本"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:144
-msgid "Development"
-msgstr "å¼€å‘"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:145
-msgid "Chat Logs"
-msgstr "èŠå¤©è®°å½•"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:146
-msgid "Applications"
-msgstr "应用程åº"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:147
-msgid "WebHistory"
-msgstr "网页历å²"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:207
-msgid "_Open"
-msgstr "打开(_O)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:208
-msgid "O_pen Folder"
-msgstr "打开文件夹(_P)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:209
-msgid "Mo_ve to Trash"
-msgstr "移动到回收站(_V)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:210
-msgid "_Save Results As..."
-msgstr "结果å¦å­˜ä¸º(_S)..."
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:238
-#, c-format
-msgid "Character set conversion failed for \"%s\""
-msgstr "“%sâ€çš„字符集转æ¢å¤±è´¥"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:265
-msgid "The following error has occurred :"
-msgstr "å‘生如下错误:"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:269
-msgid "Error"
-msgstr "错误"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:644
-msgid "Did you mean"
-msgstr "您是想æœç´¢"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:675
-msgid "Your search returned no results."
-msgstr "您的æœç´¢è¿”回零个结果"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:690
-msgid "Tracker Search Tool-"
-msgstr "Tracker æœç´¢å·¥å…·ï¼"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:851
-#: ../src/tracker-search-tool/tracker-search-tool.c:2221
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:2
-msgid "Tracker Search Tool"
-msgstr "Tracker æœç´¢å·¥å…·"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1041
-msgid "Search _results: "
-msgstr "æœç´¢ç»“æžœ(_R):"
-
-#. Translators: this will appears as "Search results: no search performed"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1047
-msgid "no search performed"
-msgstr "未进行æœç´¢"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1107
-#: ../src/tracker-search-tool/tracker-search-tool.c:1267
-msgid "List View"
-msgstr "列表视图"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1179
-msgid "Icon"
-msgstr "图标"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1191
-msgid "Name"
-msgstr "å称"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1285
-msgid "_Categories"
-msgstr "类别(_C)"
-
-#. Translators: this will appear like "Search results: 5 - 10 of 30 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1565
-#, c-format
-msgid "%d - %d of %d items"
-msgstr "%dï¼%d (å…± %d 个结果)"
-
-#. Translators: this will appear like "Search results: 7 items"
-#: ../src/tracker-search-tool/tracker-search-tool.c:1568
-#, c-format
-msgid "%d item"
-msgid_plural "%d items"
-msgstr[0] "%d 个结果"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:1616
-#: ../src/tracker-search-tool/tracker-search-tool.c:1811
-msgid "Could not connect to search service as it may be busy"
-msgstr "无法连接到æœç´¢æœåŠ¡ï¼Œå¯èƒ½æœåŠ¡æ­£å¿™"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2012
-msgid "_Search:"
-msgstr "æœç´¢(_S):"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2026
-msgid "Tracker is still indexing so not all search results are available yet"
-msgstr "Tracker 正在进行索引,因此部分æœç´¢ç»“果将ä¸å¯ç”¨ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2040
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "Enter a search term with multiple words seperated with spaces."
-msgstr "输入æœç´¢é¡¹ï¼Œç”¨ç©ºæ ¼åˆ†éš”多个å•è¯ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2041
-msgid "search_entry"
-msgstr "æœç´¢æ¡ç›®(_E)"
-
-#: ../src/tracker-search-tool/tracker-search-tool.c:2087
-msgid "Click to perform a search."
-msgstr "å•å‡»ä»¥è¿›è¡Œæœç´¢ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:131
-msgid "Could not open help document."
-msgstr "无法打开帮助文档。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:326
-#, c-format
-msgid "Are you sure you want to open %d document?"
-msgid_plural "Are you sure you want to open %d documents?"
-msgstr[0] "您确定您想è¦æ‰“开这 %d 个文档å—?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:331
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:689
-#, c-format
-msgid "This will open %d separate window."
-msgid_plural "This will open %d separate windows."
-msgstr[0] "这将会打开 %d 个新窗å£ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:371
-#, c-format
-msgid "Could not open document \"%s\"."
-msgstr "无法打开文档“%sâ€ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:400
-#, c-format
-msgid "Could not open folder \"%s\"."
-msgstr "无法打开文件夹“%sâ€ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:408
-msgid "The nautilus file manager is not running."
-msgstr "nautilus 文件管ç†å™¨å°šæœªè¿è¡Œã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:628
-msgid "Application could not be opened"
-msgstr "无法打开应用程åº"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:643
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:963
-msgid "The document does not exist."
-msgstr "文档ä¸å­˜åœ¨ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:659
-msgid "There is no installed viewer capable of displaying the document."
-msgstr "尚未安装能显示该文档的阅读器。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:684
-#, c-format
-msgid "Are you sure you want to open %d folder?"
-msgid_plural "Are you sure you want to open %d folders?"
-msgstr[0] "您确定è¦æ‰“开这 %d 个文件夹å—?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:788
-#, c-format
-msgid "Could not move \"%s\" to trash."
-msgstr "无法移动“%sâ€åˆ°å›žæ”¶ç«™ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:819
-#, c-format
-msgid "Do you want to delete \"%s\" permanently?"
-msgstr "您想永久删除“%sâ€å—?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:822
-#, c-format
-msgid "Trash is unavailable. Could not move \"%s\" to the trash."
-msgstr "回收站ä¸å¯ç”¨ã€‚无法移动“%sâ€åˆ°å›žæ”¶ç«™ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:861
-#, c-format
-msgid "Could not delete \"%s\"."
-msgstr "无法删除“%sâ€ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:985
-#, c-format
-msgid "Moving \"%s\" failed: %s."
-msgstr "移动“%sâ€å¤±è´¥ï¼š%s。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1019
-#, c-format
-msgid "Deleting \"%s\" failed: %s."
-msgstr "删除“%sâ€å¤±è´¥ï¼š%s。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1305
-msgid "Activate to view this email"
-msgstr "激活以查看此邮件"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1481
-msgid "Save Search Results As..."
-msgstr "å°†æœç´¢ç»“æžœå¦å­˜ä¸º..."
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1516
-msgid "Could not save document."
-msgstr "无法ä¿å­˜æ–‡æ¡£ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1517
-msgid "You did not select a document name."
-msgstr "您还没有选择文档å称。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1547
-#, c-format
-msgid "Could not save \"%s\" document to \"%s\"."
-msgstr "无法ä¿å­˜æ–‡æ¡£â€œ%sâ€ä¸ºâ€œ%sâ€ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1581
-#, c-format
-msgid "The document \"%s\" already exists. Would you like to replace it?"
-msgstr "文档“%sâ€å·²ç»å­˜åœ¨ã€‚您想è¦æ›¿æ¢å®ƒå—?"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1585
-msgid "If you replace an existing file, its contents will be overwritten."
-msgstr "如果您替æ¢ä¸€ä¸ªå·²ç»å­˜åœ¨çš„文件,其内容将被覆盖。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1600
-msgid "_Replace"
-msgstr "替æ¢(_R)"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1650
-msgid "The document name you selected is a folder."
-msgstr "您选中的文档å是一个文件夹。"
-
-#: ../src/tracker-search-tool/tracker-search-tool-callbacks.c:1699
-msgid "You may not have write permissions to the document."
-msgstr "您å¯èƒ½ä¸å…·æœ‰è¯¥æ–‡æ¡£çš„写入æƒé™ã€‚"
-
-#: ../src/tracker-search-tool/tracker-search-tool.desktop.in.in.h:1
-msgid ""
-"Locate documents and folders on this computer by name or content using "
-"Tracker"
-msgstr "用 Tracker 以å称或内容定ä½æ­¤è®¡ç®—机上的文档和文件夹"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:72
-#, c-format
-msgid ""
-"GConf error:\n"
-" %s"
-msgstr ""
-"GConf 错误:\n"
-" %s"
-
-#. Translators: Below are the strings displayed in the 'Date Modified'
-#. column of the list view. The format of this string can vary depending
-#. on age of a file. Please modify the format of the timestamp to match
-#. your locale. For example, to display 24 hour time replace the '%-I'
-#. with '%-H' and remove the '%p'. (See bugzilla report #120434.)
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:674
-msgid "today at %-I:%M %p"
-msgstr "今天 %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:676
-msgid "yesterday at %-I:%M %p"
-msgstr "昨天 %-H:%M"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:678
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:680
-msgid "%A, %B %-d %Y at %-I:%M:%S %p"
-msgstr "%Y年%m月%D日,%A %p %-I:%M:%S"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:860
-msgid "link (broken)"
-msgstr "å·²æŸå的链接"
-
-#: ../src/tracker-search-tool/tracker-search-tool-support.c:864
-#, c-format
-msgid "link to %s"
-msgstr "到 %s 的链接"
-
-#: ../trackerd.desktop.in.in.h:2
-msgid "Tracker search and indexing service"
-msgstr "Tracker æœç´¢ä¸Žç´¢å¼•æœåŠ¡"
-
-#~ msgid "_Search..."
-#~ msgstr "æœç´¢(_P)..."
-
-#~ msgid "Search:"
-#~ msgstr "æœç´¢ï¼š"
-
-#~ msgid "Status:"
-#~ msgstr "状æ€ï¼š"
-
-#~ msgid "Progress:"
-#~ msgstr "进度:"
-
-#~ msgid "Indexing in progress"
-#~ msgstr "正在索引"
-
-#~ msgid "Indexing completed"
-#~ msgstr "索引完毕"
-
-#~ msgid "Indexes are being merged"
-#~ msgstr "正在åˆå¹¶ç´¢å¼•"
-
-#~ msgid "Paused while on battery power"
-#~ msgstr "电池暂åœ"
-
-#~ msgid "Paused temporarily"
-#~ msgstr "临时暂åœ"
-
-#~ msgid ""
-#~ "Your system must be re-indexed for your changes to take effect. Re-index "
-#~ "now?"
-#~ msgstr ""
-#~ "您的系统需è¦é‡æ–°ç¼–制索引以使您所作的å˜æ›´ç”Ÿæ•ˆã€‚现在就é‡æ–°ç¼–制索引å—?"
-
-#~ msgid ""
-#~ "Tracker indexer needs to be restarted for your changes to take effect. "
-#~ "Restart now?"
-#~ msgstr "Tracker 索引器需è¦é‡æ–°å¯åŠ¨ä»¥ä½¿æ‚¨æ‰€ä½œçš„å˜æ›´ç”Ÿæ•ˆã€‚é‡æ–°å¯åŠ¨å®ƒå—?"
-
-#~ msgid "<b>Mailboxes</b>"
-#~ msgstr "<b>邮箱</b>"
-
-#~ msgid "<b>Services</b>"
-#~ msgstr "<b>æœåŠ¡</b>"
diff --git a/python/FUSE/trackerfs.py b/python/FUSE/trackerfs.py
deleted file mode 100644
index 74e585127..000000000
--- a/python/FUSE/trackerfs.py
+++ /dev/null
@@ -1,279 +0,0 @@
-#!/usr/bin/env python
-# Created by Eugenio Cutolo me at eugesoftware dot com
-#
-# This program can be distributed under the terms of the GNU GPL.
-# See the file COPYING.
-#
-
-from fuse import Fuse
-from optparse import OptionParser
-from errno import *
-from stat import *
-import os,statvfs,logging,dbus,re
-
-#Simple class to interface with tracker dbus function
-class TrackerClient:
-
- def __init__(self):
- #Initialize dbus session and tracker interfaces
- bus = dbus.SessionBus()
- obj = bus.get_object('org.freedesktop.Tracker','/org/freedesktop/tracker')
-
- self.tracker_iface = dbus.Interface(obj, 'org.freedesktop.Tracker')
- self.keywords_iface = dbus.Interface(obj, 'org.freedesktop.Tracker.Keywords')
- self.search_iface = dbus.Interface(obj, 'org.freedesktop.Tracker.Search')
- self.files_iface = dbus.Interface(obj, 'org.freedesktop.Tracker.Files')
-
- self.version = self.tracker_iface.GetVersion()
- self.query_id = -1
-
- def search(self,text,service='Files',offset=0,max_hits=-1):
- self.resultlist = self.search_iface.Text(self.query_id, service, text, offset, max_hits)
- self.resultlist = map(lambda x: str(x),self.resultlist)
-
- def search_by_tag(self,tag,service='Files',offset=0,max_hits=-1):
- self.resultlist = self.keywords_iface.Search(self.query_id, service,tag,offset,max_hits)
- self.resultlist = map(lambda x: str(x),self.resultlist)
-
- def add_db_files(self,path):
- self.files_iface.Exists(path,True)
- self.files_iface.Exists(path,False)
- return True
-
- def add_tag(self,path,tags,service='Files'):
- self.keywords_iface.Add(service,path,tags)
- return
-
- #In future will be implemented live_query support
- def on_tracker_reply(self, results):
- print results
-
- def on_tracker_error(self, e):
- print "Error:"+e
-
-#This class it's an extension of Fuse and TrackerClient
-class TrackerFs (Fuse,TrackerClient):
-
- def __init__(self):
- #Initialize tracker client
- TrackerClient.__init__(self)
-
- #Shell inteface
- usage = "usage: %prog mountpoint [options]"
-
- self.parser = OptionParser(usage)
- self.parser.add_option("-a", "--auto",action="store_true",help="Mount point will be populated with the rdf query in ~/.Tracker/fs", dest="automatic", default=True)
- self.parser.add_option("-s", "--search", dest="keys",help="Use a key to find the contents of mounted dir", metavar="key")
- self.parser.add_option("-t", "--tag",dest="tag",help="Use a tag/s to find the contents of mounted dir", metavar="tag")
- self.parser.add_option("-q", "--query",dest="query",help="Use a rdf file to find the contents of mounted dir", metavar="path")
- self.parser.add_option("-v", "--verbose",action="store_true",help="Verbose the output", dest="verbose", default=False)
- self.params, args = self.parser.parse_args()
-
- if os.path.exists(args[0]) == False:
- print "The mount point doesen't exist make it?"
- #self.log.debug("Create target directory")
- os.mkdir(args[0])
-
- #check old files
- #save_dir = open(args[0], O_RDONLY);
- #fchdir(save_dir);
- #close(save_dir);
-
- #Init fuse
- Fuse.__init__(self,args,{})
-
- if self.params.verbose:
- verbmode = logging.DEBUG
- else:
- verbmode = logging.WARNING
-
- #Setup logger
- self.log = logging.getLogger("trackerfs");self.log.setLevel(verbmode)
- fh = logging.StreamHandler();fh.setLevel(verbmode)
- formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
- fh.setFormatter(formatter)
- self.log.addHandler(fh)
-
- #This is the path when file will be "really" created/moved/edited
- self.realdir = "/media/Dati/.data/"
- self.rdfdir = os.environ["HOME"]+"/.Tracker/fs/"
-
- if os.path.exists(self.realdir) == False:
- self.log.debug("Create target directory")
- os.mkdir(self.realdir)
-
- self.log.debug("mountpoint: %s" % repr(self.mountpoint))
-
- #Get list of rdf query
- #files = os.listdir(self.rdfdir)
- #self.queryfiles = [f for f in files if f[-4:]]
- #print self.queryfiles
- self._refresh_filelist()
- pass
-
- def mythread(self):
- self.log.debug("Start Thread")
-
-
-#Refresh file list calling the TrackerClient function
- def _refresh_filelist(self):
- if self.params.tag != None:
- self.log.debug("Use Tag")
- self.search_by_tag(self.params.tag.split("+"))
- #Command Line support for query soon will be move to d-bus
- elif self.params.query != None:
- self.log.debug("Use Query")
- self.resultlist = os.popen("/usr/bin/tracker-query "+self.params.query,"r").readlines();
- self.resultlist = map(lambda x:(x.split(' : ')),self.resultlist)
- self.resultlist = map(lambda x:(x[0].strip(' \t\r\n')),self.resultlist)
- elif self.params.keys != None:
- self.log.debug("Use Search")
- self.search(self.params.keys)#.search,self.params.service)
- else:
- print 'You must specify an options'
- return 0
- self.log.debug("Refresh Filelist")
-
- def _get_file_path(self,filename):
- if os.path.dirname(filename) == "/":
- for file in self.resultlist:
- if filename== "/"+os.path.basename(file):
- return file
- else:
- path = filename.split("/")
- relpath = filename.replace("/"+path[1],"")
- for file in self.resultlist:
- if path[1] == os.path.basename(file):
- return file+relpath
- return filename
-
- def create_file_or_dir(self,type,path,mode):
- if os.path.dirname(path) == "/" and self.params.tag != None:
- newpath = self.realdir+os.path.basename(path)
- elif os.path.dirname(path) != "/":
- newpath = self._get_file_path(path)
- else:
- self.log.error("Fs based on Search and Query doesen't have write access")
- return 0
- if S_ISREG(mode) and type == 0:
- self.log.debug("MkFile:"+newpath)
- res = os.open(newpath, os.O_CREAT | os.O_WRONLY,mode);
- elif type == 1:
- self.log.debug("MkDir:"+newpath)
- res = os.mkdir(newpath,mode)
- else:
- return -EINVAL
- print "path:"+os.path.dirname(path)
- if os.path.dirname(path) == "/":
- print "Add to fs"
- self.add_to_fs(newpath)
- self._refresh_filelist()
- self.getdir("/")
- return res
-
-#Add file/dir to the tracker database and tag it with used tag
- def add_to_fs(self,path):
- if self.add_db_files(path):
- self.log.debug("Added "+os.path.basename(path)+" to tracker database")
- self.add_tag(path,self.params.tag.split("+"))
- self.log.debug("Added "+os.path.basename(path)+" to fs")
- else:
- self.log.debug("Falied to add "+path+"to tracker database")
-
- def getattr(self,path):
- self.log.debug("GetAttr:"+self._get_file_path(path))
- return os.lstat(self._get_file_path(path))
-
- def readlink(self, path):
- self.log.debug("ReadLink:"+self._get_file_path(path))
- return os.readlink(self._get_file_path(path))
-
- def getdir(self, path):
- if path == "/":
- self._refresh_filelist()
- return map(lambda x: (os.path.basename(x),0),self.resultlist)
- else:
- return map(lambda x: (os.path.basename(x),0),os.listdir(self._get_file_path(path)))
-
-
- def unlink(self, path):
- return os.unlink(path)
-
- def rmdir(self, path):
- return os.rmdir(path)
-
- def symlink(self, path, path1):
- return os.symlink(path, path1)
-
- def rename(self, path, path1):
- return os.rename(path, path1)
-
- def link(self, path, path1):
- return os.link(path, path1)
-
- def chmod(self, path, mode):
- return os.chmod(self._get_file_path(path), mode)
-
- def chown(self, path, user, group):
- return os.chown(self._get_file_path(path), user, group)
-
- def truncate(self, path, size):
- f = open(self._get_file_path(path), "w+")
- return f.truncate(size)
-
- def mknod(self, path, mode, dev):
- res = self.create_file_or_dir(0,path,mode)
-
- def mkdir(self, path, mode):
- return self.create_file_or_dir(1,path,mode)
-
- def utime(self, path, times):
- return os.utime(self._get_file_path(path), times)
-
- def open(self, path, flags):
- path = self._get_file_path(path)
- res = os.open(path,flags)
- self.log.debug("open"+path)
- os.close(res)
- return 0
-
- def read(self, path, length, offset):
- path = self._get_file_path(path)
- self.log.debug("read:"+ path)
- f = open(self._get_file_path(path), "r")
- f.seek(offset)
- return f.read(length)
-
- def write(self, path, buf, off):
- path = self._get_file_path(path)
- self.log.debug(":write:"+path)
- f = open(path, "w")
- f.seek(off)
- f.write(buf)
- return len(buf)
- return 0
-
- def release(self, path, flags):
- self.log.debug("release: %s %s" % (self._get_file_path(path), flags))
- return 0
-
- def statfs(self):
- self.sysconst = os.statvfs(self.realdir)
- self.log.debug("statfs: returning user's home value ")
- block_size = self.sysconst[statvfs.F_BSIZE]
- blocks = self.sysconst[statvfs.F_BLOCKS]
- blocks_free = self.sysconst[statvfs.F_BFREE]
- blocks_avail = self.sysconst[statvfs.F_BAVAIL]
- files = self.sysconst[statvfs.F_FILES]
- files_free = self.sysconst[statvfs.F_FFREE]
- namelen = self.sysconst[statvfs.F_NAMEMAX]
- return (block_size, blocks, blocks_free, blocks_avail, files, files_free, namelen)
-
- def fsync(self, path, isfsyncfile):
- self.log.debug("fsync: path=%s, isfsyncfile=%s" % (path, isfsyncfile))
- return 0
-
-if __name__ == '__main__':
- fs = TrackerFs()
- fs.multithreaded = 0;
- fs.main()
diff --git a/python/Makefile.am b/python/Makefile.am
deleted file mode 100644
index 07b9c43ec..000000000
--- a/python/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-SUBDIRS = deskbar-handler
-
diff --git a/python/SearchTool/COPYING b/python/SearchTool/COPYING
deleted file mode 100644
index 5b6e7c66c..000000000
--- a/python/SearchTool/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/python/SearchTool/README b/python/SearchTool/README
deleted file mode 100644
index c9eb381e3..000000000
--- a/python/SearchTool/README
+++ /dev/null
@@ -1,19 +0,0 @@
-TrackerQt it's a tracker front-end writtend with qt and python
-
-----------Requirements----------
-The qtgui requires recent versions of:
-* Python (>= 2.3)
-* Tracker(>= 5.2)
-* Python Qt3 (can possibly use 3.16)
-* Python Kde3 (>= 3.10)
-* Python DBus
-
-If you use Ubuntu these can be installed via apt-get with this command:
-sudo apt-get install python-qt3 python-kde3 python-dbus
-
-----------Installation-----------
-
-cp ./*.py /usr/local/bin
-
-----------Todo-----------
--Thumbail support in result list
diff --git a/python/SearchTool/mainform.py b/python/SearchTool/mainform.py
deleted file mode 100644
index 83fbe066a..000000000
--- a/python/SearchTool/mainform.py
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/usr/bin/env python
-# Created by Eugenio Cutolo <me@eugesoftware.com> using QtDesinger
-#
-# This program can be distributed under the terms of the GNU GPL.
-# See the file COPYING.
-#
-
-#QtTracker Relase 0.1
-
-from qt import *
-
-class QRichListViewItem(QListViewItem):
- def __init__(self,*args):
- QListViewItem.__init__(self,*args)
- self.richtext = 0
- self.indent = 0
- self.rText = QString()
- self.recreateRichText();
-
- def setText(self,column,text):
- if column == 1:
- self.rText = text
- self.recreateRichText();
- else:
- QListViewItem.setText(self,column,text)
-
- def recreateRichText(self):
- if self.richtext != 0:
- del(self.richtext)
- self.richtext = 0
- self.richtext = QSimpleRichText("<small>"+self.rText+"</small>", self.listView().font())
-
- def widthChanged(self,c):
- if c == -1 or c == 1:
- self.richtext.setWidth(self.listView().columnWidth(1)-15)
- QListViewItem.widthChanged(self,c)
-
- def paintCell(self, p, cg, column, width, align):
- if column == 1:
- paper = QBrush()
-
- palette = self.listView().viewport().palette()
- itemRectangle = self.listView().itemRect(self)
- itemRectangle.setX(self.listView().columnWidth(0))
- self.listView().viewport().erase(itemRectangle)
- colourGroup = QColorGroup(cg)
-
- if self.isSelected() == 1:
- paper = QBrush(cg.highlight())
- else:
- txtcolor = QColor(100,100,100)
- colourGroup.setColor(QColorGroup.Text,txtcolor)
- width = self.listView().width() - self.listView().columnWidth(0)
- self.listView().setColumnWidth(1,width)
- self.richtext.draw( p,self.listView().itemMargin(), 0, QRect( 0, 0, width, self.height() ), colourGroup, paper );
- self.widthChanged(1)
- else:
- QListViewItem.paintCell(self, p, cg, column,width, align)
-
-class MainForm(QDialog):
- def __init__(self,parent = None,name = None,modal = 0,fl = 0):
- QDialog.__init__(self,parent,name,modal,fl)
-
- if not name:
- self.setName("MainForm")
-
- self.setSizePolicy(QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding,0,0,self.sizePolicy().hasHeightForWidth()))
- self.setModal(1)
-
- MainFormLayout = QGridLayout(self,1,1,11,6,"MainFormLayout")
-
- self.mainframe = QFrame(self,"mainframe")
- self.mainframe.setSizePolicy(QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding,0,0,self.mainframe.sizePolicy().hasHeightForWidth()))
- self.mainframe.setFrameShape(QFrame.StyledPanel)
- self.mainframe.setFrameShadow(QFrame.Raised)
- mainframeLayout = QGridLayout(self.mainframe,1,1,11,6,"mainframeLayout")
-
- self.nextbtn = QPushButton(self.mainframe,"nextbtn")
- self.nextbtn.setEnabled(0)
-
- mainframeLayout.addWidget(self.nextbtn,2,5)
-
- self.prevbtn = QPushButton(self.mainframe,"prevbtn")
- self.prevbtn.setEnabled(0)
-
- mainframeLayout.addWidget(self.prevbtn,2,4)
-
- self.mode_combo = QComboBox(0,self.mainframe,"mode_combo")
-
- mainframeLayout.addWidget(self.mode_combo,0,2)
-
- self.searchinp = QLineEdit(self.mainframe,"searchinp")
-
- mainframeLayout.addWidget(self.searchinp,0,1)
-
- self.pagen_display = QLabel(self.mainframe,"pagen_display")
-
- mainframeLayout.addMultiCellWidget(self.pagen_display,2,2,0,3)
-
- self.services_combo = QComboBox(0,self.mainframe,"services_combo")
-
- mainframeLayout.addMultiCellWidget(self.services_combo,0,0,3,4)
-
- self.findbtn = QPushButton(self.mainframe,"findbtn")
-
- mainframeLayout.addWidget(self.findbtn,0,5)
-
- self.textLabel1 = QLabel(self.mainframe,"textLabel1")
-
- mainframeLayout.addWidget(self.textLabel1,0,0)
-
- self.result_list = QListView(self.mainframe,"result_list")
- self.result_list.addColumn(self.__tr("Info"))
- self.result_list.header().setResizeEnabled(0,self.result_list.header().count() - 1)
- self.result_list.addColumn(self.__tr("Text"))
- self.result_list.setSizePolicy(QSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding,0,0,self.result_list.sizePolicy().hasHeightForWidth()))
- self.result_list.setLineWidth(1)
- self.result_list.setResizeMode(QListView.LastColumn)
- self.result_list.setMargin(0)
- self.result_list.setMidLineWidth(0)
- self.result_list.setResizePolicy(QScrollView.Manual)
- self.result_list.setHScrollBarMode(QListView.AlwaysOff)
- self.result_list.header().hide()
- self.result_list.setAllColumnsShowFocus(0)
- self.result_list.setShowSortIndicator(0)
- self.result_list.setItemMargin(5)
- self.result_list.setRootIsDecorated(0)
-
- mainframeLayout.addMultiCellWidget(self.result_list,1,1,0,5)
-
- MainFormLayout.addWidget(self.mainframe,0,0)
-
- self.languageChange()
-
- self.resize(QSize(629,520).expandedTo(self.minimumSizeHint()))
- self.clearWState(Qt.WState_Polished)
-
- self.connect(self.searchinp,SIGNAL("returnPressed()"),self.searchinp_returnPressed)
- self.connect(self.services_combo,SIGNAL("activated(int)"),self.services_combo_textChanged)
- self.connect(self.findbtn,SIGNAL("clicked()"),self.findbtn_clicked)
- self.connect(self.nextbtn,SIGNAL("clicked()"),self.nextbtn_clicked)
- self.connect(self.prevbtn,SIGNAL("clicked()"),self.prevbtn_clicked)
- self.connect(self.result_list,SIGNAL("doubleClicked(QListViewItem*)"),self.result_list_doubleClicked)
- self.connect(self.result_list,SIGNAL("contextMenuRequested(QListViewItem*,const QPoint&,int)"),self.result_list_contextMenuRequested)
-
-
- def languageChange(self):
- self.setCaption(self.__tr("Search Tool"))
- self.nextbtn.setText(self.__tr("Next"))
- self.prevbtn.setText(self.__tr("Previous"))
- self.mode_combo.clear()
- self.mode_combo.insertItem(self.__tr("key"))
- self.mode_combo.insertItem(self.__tr("tag"))
- self.pagen_display.setText(QString.null)
- self.services_combo.clear()
- self.services_combo.insertItem(self.__tr("All Files"))
- self.services_combo.insertItem(self.__tr("Development"))
- self.services_combo.insertItem(self.__tr("Documents"))
- self.services_combo.insertItem(self.__tr("Images"))
- self.services_combo.insertItem(self.__tr("Music"))
- self.services_combo.insertItem(self.__tr("Plain Text"))
- self.services_combo.insertItem(self.__tr("Videos"))
- self.findbtn.setText(self.__tr("Find"))
- self.textLabel1.setText(self.__tr("Search:"))
- self.result_list.header().setLabel(0,self.__tr("Info"))
- self.result_list.header().setLabel(1,self.__tr("Text"))
- QToolTip.add(self.result_list,self.__tr("Lista Risultati"))
-
- def services_combo_textChanged(self,int):
- self.findbtn_clicked()
-
- def findbtn_clicked(self):
- print "MainForm.findbtn_clicked(): Not implemented yet"
-
- def prevbtn_clicked(self):
- print "MainForm.prevbtn_clicked(): Not implemented yet"
-
- def nextbtn_clicked(self):
- print "MainForm.nextbtn_clicked(): Not implemented yet"
-
- def result_list_doubleClicked(self,a0):
- print "MainForm.result_list_doubleClicked(QListViewItem*): Not implemented yet"
-
- def result_list_contextMenuRequested(self,a0,a1,a2):
- print "MainForm.result_list_contextMenuRequested(QListViewItem*,const QPoint&,int): Not implemented yet"
-
- def searchinp_returnPressed(self):
- print "MainForm.searchinp_returnPressed(): Not implemented yet"
-
- def __tr(self,s,c = None):
- return qApp.translate("MainForm",s,c)
diff --git a/python/SearchTool/trackergui.py b/python/SearchTool/trackergui.py
deleted file mode 100755
index e7eebce55..000000000
--- a/python/SearchTool/trackergui.py
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/usr/bin/env python
-# Created by Eugenio Cutolo <me@eugesoftware.com>
-#
-# This program can be distributed under the terms of the GNU GPL.
-# See the file COPYING.
-#
-
-#QtTracker Relase 0.1
-
-import sys,os,dbus,re
-from kdecore import KApplication, KCmdLineArgs, KURL,KIconTheme,KIcon
-from kio import KMimeType, KServiceTypeProfile
-from mainform import *
-
-class TrackerClient:
-
- def __init__(self):
- bus = dbus.SessionBus()
- obj = bus.get_object('org.freedesktop.Tracker','/org/freedesktop/tracker')
- #self.tracker = dbus.Interface(obj, 'org.freedesktop.Tracker')
- self.keywords_iface = dbus.Interface(obj, 'org.freedesktop.Tracker.Keywords')
- self.search_iface = dbus.Interface(obj, 'org.freedesktop.Tracker.Search')
- self.files_iface = dbus.Interface(obj, 'org.freedesktop.Tracker.Files')
-
- #self.version = self.tracker.GetVersion()
-
- #Self service eheheh
- #self.services = self.tracker.GetServices(True)
- self.services = ['Files','Development Files','Documents','Images','Music','Text Files','Videos']
- self.query_id = 0
-
- def search(self,text,service='Files',offset=0,max_hits=-1):
- self.returnedfiles = self.search_iface.TextDetailed(1,service,text,offset,max_hits)
- if len(self.returnedfiles) > 0:
- return self.returnedfiles
- else:
- self.on_tracker_error("Nothing files found")
- return 0
-
- def search_by_tag(self,tag,service='Files',offset=0,max_hits=-1):
- self.returnedfiles = self.keywords_iface.Search(-1,service,[tag,] ,offset,max_hits)
- output = []
- for path in self.returnedfiles:
- output.append([path,self.files_iface.GetServiceType(path),'mime'])
- self.returnedfiles = output
- return output
-
-#Thank you Mikkel
- def text_snippet(self, text, result, service='Files'):
- snippet = self.search_iface.GetSnippet(service, result, text)
- snippet = snippet.replace('<!--', '&lt;!--').strip()
- return snippet
-
- def on_tracker_error(self, e):
- print "Error:",e
-
-class TrackerGui(MainForm,TrackerClient):
-
- def __init__(self):
- MainForm.__init__(self)
- TrackerClient.__init__(self)
- self.searchinp.setFocus();
- self.fatalerr = 0
- self.mip = 6#Max item for page
-
- def refresh_page(self):
- self.result_list.clear()
-
- start = (self.mip*self.pagen)
- end = (self.mip*self.pagen)+self.mip + 1
-
- self.setCursor(QCursor(3))
- if self.mode_combo.currentItem() == 0:
- self.search(self.input,self.service,start,self.mip+1)
- elif self.mode_combo.currentItem() == 1:
- self.search_by_tag(self.input,self.service,start,self.mip+1)
-
- if self.fatalerr:
- return
-
- if self.pagen > 0:
- self.prevbtn.setEnabled(1)
- elif self.pagen == 0:
- self.prevbtn.setEnabled(0)
- if len(self.returnedfiles) > self.mip:
- self.nextbtn.setEnabled(1)
- self.returnedfiles.pop()
- else:
- self.nextbtn.setEnabled(0)
-
- self.pagen_display.setText("Results "+str(start+1)+" - "+str(end-1))
- self.show_result(self.returnedfiles)
-
- def show_result(self,result):
- self.result_list.setSorting(-1)
- self.returnedfiles.reverse()
- for (path,service,mime) in result:
- item = QRichListViewItem(self.result_list,None)
- item.setMultiLinesEnabled(1)
- if len(os.path.dirname(path)) > 40:
- dirname = os.path.dirname(path)[0:40]+"..."
- else:
- dirname = os.path.dirname(path)
- item.setText(0,os.path.basename(path)+"\n"+dirname+"\n"+service)
- item.setPixmap(0,self._get_iconc(path))
- item.setText(1,self.text_snippet(self.input,path))
- self.setCursor(QCursor(0))
- self.returnedfiles.reverse()
-
- def _get_iconc(self,path):
- mobj = KMimeType.findByPath(path)
- return mobj.pixmap(KURL(""),KIcon .Desktop,48)
-
- def on_tracker_error(self, e):
- print "Error:",e
- self.result_list.clear()
- self.pagen_display.setText(e)
- self.fatalerr = 1
-
- def exec_file(self):
- item = self.result_list.currentItem()
- npos = (item.itemPos() / item.totalHeight())
- mime = KMimeType.findByPath(self.returnedfiles[npos][0]).name()
- offer = KServiceTypeProfile.preferredService(mime, "Application")
- offer = re.sub('%.','',str(offer.exec_ ()))
- print offer+" "+self.returnedfiles[npos][0]
- os.system(offer+" '"+self.returnedfiles[npos][0]+"' &")
-
-#----------------Qt Events----------------------------
-
- def findbtn_clicked(self):
- self.pagen = 0
- self.input = str(self.searchinp.text())
- self.service = self.services[self.services_combo.currentItem()]
- self.prevbtn.setEnabled(0)
- self.nextbtn.setEnabled(0)
- self.refresh_page()
-
- def nextbtn_clicked(self):
- self.pagen = self.pagen + 1
- self.refresh_page()
-
- def prevbtn_clicked(self):
- self.pagen = self.pagen - 1
- self.refresh_page()
-
- def result_list_doubleClicked(self,item):
- self.exec_file()
-
- def result_list_contextMenuRequested(self,item):
- if item != self.result_list:
- contextMenu = QPopupMenu(self)
- contextMenu.insertItem( "&Open", self.exec_file, Qt.CTRL+Qt.Key_O )
- contextMenu.insertItem( "&Open with...", self.exec_file, Qt.CTRL+Qt.Key_S )
- contextMenu.exec_loop( QCursor.pos() )
-
-if __name__ == "__main__":
- KCmdLineArgs.init(sys.argv, "qttrackergui", "qtgui", "0.1")
- app = KApplication()
- gui = TrackerGui()
- gui.show()
- app.setMainWidget(gui)
- app.exec_loop() \ No newline at end of file
diff --git a/python/applet/applet.py b/python/applet/applet.py
deleted file mode 100755
index c7d0360b7..000000000
--- a/python/applet/applet.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import gtk
-import dbus
-import gobject
-
-POPUP_TIMEOUT_MILLIS = 3000
-POLL_MILLIS = 5000
-
-class Popup (gtk.Window):
- def __init__ (self, status, widget):
- gtk.Window.__init__ (self)
- self.set_decorated (False)
- self.set_skip_taskbar_hint (True)
- self.set_skip_pager_hint (True)
- self.set_keep_above (True)
- self.set_resizable (False)
- label = gtk.Label ("MetaTracker is " + status)
- label.show ()
- ebox = gtk.EventBox ()
- ebox.set_visible_window (True)
- ebox.set_above_child (True)
- ebox.add (label)
- ebox.modify_bg (gtk.STATE_NORMAL, gtk.gdk.Color (65535, 65535, 56576))
- ebox.set_border_width (1)
- ebox.show ()
- self.add (ebox)
- self.show ()
- scr, rect, orient = widget.get_geometry ()
- wdir = (rect.x > scr.get_width () / 2) and -1 or 1
- hdir = (rect.y > scr.get_height () / 2) and -1 or 1
- width, height = self.get_size ()
- self.modify_bg (gtk.STATE_NORMAL, gtk.gdk.Color (0,0,0))
- self.move (rect.x + (width / 2) * wdir, rect.y + (height / 2) * hdir)
- #self.style.paint_flat_box(self.window, gtk.STATE_NORMAL, gtk.SHADOW_OUT, None, self, 'tooltip', 0, 0, width, height)
-
-class TrackerStatusIcon(gtk.StatusIcon):
- def __init__(self):
- gtk.StatusIcon.__init__(self)
- menu = '''
- <ui>
- <menubar name="Menubar">
- <menu action="Menu">
- <menuitem action="Search"/>
- <menuitem action="Preferences"/>
- <separator/>
- <menuitem action="About"/>
- <separator/>
- <menuitem action="Quit"/>
- </menu>
- </menubar>
- </ui>
- '''
- actions = [
- ('Menu', None, 'Menu'),
- ('Search', None, '_Search...', None, 'Search files with MetaTracker', self.on_activate),
- ('Preferences', gtk.STOCK_PREFERENCES, '_Preferences...', None, 'Change MetaTracker preferences', self.on_preferences),
- ('About', gtk.STOCK_ABOUT, '_About...', None, 'About MetaTracker', self.on_about),
- ('Quit', gtk.STOCK_QUIT, '_Quit...', None, 'Quit Status Applet', gtk.main_quit)]
- ag = gtk.ActionGroup('Actions')
- ag.add_actions(actions)
- self.manager = gtk.UIManager()
- self.manager.insert_action_group(ag, 0)
- self.manager.add_ui_from_string(menu)
- self.menu = self.manager.get_widget('/Menubar/Menu/About').props.parent
- search = self.manager.get_widget('/Menubar/Menu/Search')
- search.get_children()[0].set_markup('<b>_Search...</b>')
- search.get_children()[0].set_use_underline(True)
- search.get_children()[0].set_use_markup(True)
- pixbuf = gtk.gdk.pixbuf_new_from_file_at_size('applet.svg', 16, 16)
- search.get_children()[1].set_from_pixbuf(pixbuf)
- self.set_from_file('applet.svg')
- self.set_tooltip('MetaTracker Desktop Search')
- self.set_visible(True)
- self.connect('activate', self.on_activate)
- self.connect('popup-menu', self.on_popup_menu)
- self.old_status = ""
- self.connectToDBus ()
- gobject.timeout_add (0, self.check_tracker_state)
-
- def connectToDBus (self):
- self.bus = dbus.SessionBus ()
- self.connectToTracker ()
-
- def connectToTracker (self):
- self.obj = self.bus.get_object('org.freedesktop.Tracker','/org/freedesktop/tracker')
- self.tracker = dbus.Interface(self.obj, 'org.freedesktop.Tracker')
-
- def getTrackerStatus (self):
- st = ""
- try: st = str (self.tracker.GetStatus ())
- except:
- st = "Unreachable!"
- try: self.connectToTracker ()
- except: pass
- return st
-
- def check_tracker_state (self):
- stat = self.getTrackerStatus ()
- if stat != self.old_status:
- p = Popup (stat, self)
- gobject.timeout_add (POPUP_TIMEOUT_MILLIS, p.destroy)
- self.old_status = stat
- self.set_tooltip ("MetaTracker is " + stat)
- gobject.timeout_add (POLL_MILLIS, self.check_tracker_state)
-
- def on_activate(self, data):
- tst="tracker-search-tool"
- os.spawnlp (os.P_NOWAIT, tst, tst)
-
- def on_popup_menu(self, status, button, time):
- self.menu.popup(None, None, None, button, time)
-
- def on_preferences(self, data):
- tp="tracker-preferences"
- os.spawnlp (os.P_NOWAIT, tp, tp)
-
- def on_about(self, data):
- dialog = gtk.AboutDialog()
- dialog.set_name('MetaTracker')
- dialog.set_version('0.6.2')
- dialog.set_comments('A desktop indexing and search tool')
- dialog.set_website('http://www.tracker-project.org/')
- dialog.set_logo(gtk.gdk.pixbuf_new_from_file_at_size('applet.svg', 64, 64))
- dialog.run()
- dialog.destroy()
-
-if __name__ == '__main__':
- TrackerStatusIcon()
- gtk.main()
diff --git a/python/applet/applet.svg b/python/applet/applet.svg
deleted file mode 100644
index 848121825..000000000
--- a/python/applet/applet.svg
+++ /dev/null
@@ -1,453 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="system-search.svg"
- sodipodi:docbase="/home/sciyoshi/Build/tracker"
- inkscape:version="0.44"
- sodipodi:version="0.32"
- id="svg11300"
- height="48px"
- width="48px">
- <defs
- id="defs3">
- <linearGradient
- id="linearGradient2846">
- <stop
- id="stop2848"
- offset="0.0000000"
- style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
- <stop
- id="stop2850"
- offset="1.0000000"
- style="stop-color:#484848;stop-opacity:1.0000000;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2366">
- <stop
- id="stop2368"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0.21904762;"
- offset="0.50000000"
- id="stop2374" />
- <stop
- id="stop2370"
- offset="1.0000000"
- style="stop-color:#ffffff;stop-opacity:1.0000000;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4487">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4489" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4491" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4477">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4479" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop4481" />
- </linearGradient>
- <linearGradient
- id="linearGradient4467">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4469" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0.24761905;"
- offset="1.0000000"
- id="stop4471" />
- </linearGradient>
- <linearGradient
- id="linearGradient4454">
- <stop
- style="stop-color:#729fcf;stop-opacity:0.20784314;"
- offset="0.0000000"
- id="stop4456" />
- <stop
- style="stop-color:#729fcf;stop-opacity:0.67619050;"
- offset="1.0000000"
- id="stop4458" />
- </linearGradient>
- <linearGradient
- id="linearGradient4440">
- <stop
- style="stop-color:#7d7d7d;stop-opacity:1;"
- offset="0"
- id="stop4442" />
- <stop
- id="stop4448"
- offset="0.50000000"
- style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
- <stop
- style="stop-color:#686868;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop4444" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4440"
- id="linearGradient4446"
- x1="30.656250"
- y1="34.000000"
- x2="33.218750"
- y2="31.062500"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.334593,0,0,1.291292,-6.973842,-7.460658)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4454"
- id="radialGradient4460"
- cx="18.240929"
- cy="21.817987"
- fx="18.240929"
- fy="21.817987"
- r="8.3085051"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4467"
- id="radialGradient4473"
- cx="15.414371"
- cy="13.078408"
- fx="15.414371"
- fy="13.078408"
- r="6.6562500"
- gradientTransform="matrix(2.592963,0,0,2.252104,-25.05975,-18.941)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4487"
- id="radialGradient4493"
- cx="24.130018"
- cy="37.967922"
- fx="24.130018"
- fy="37.967922"
- r="16.528622"
- gradientTransform="matrix(1,0,0,0.237968,0,28.93278)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="25.743469"
- x2="17.500893"
- y1="13.602121"
- x1="18.292673"
- id="linearGradient2372"
- xlink:href="#linearGradient2366"
- inkscape:collect="always" />
- <radialGradient
- r="16.528622"
- fy="37.967922"
- fx="24.130018"
- cy="37.967922"
- cx="24.130018"
- gradientTransform="matrix(1,0,0,0.237968,0,28.93278)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient2842"
- xlink:href="#linearGradient4477"
- inkscape:collect="always" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="30.557772"
- x2="31.335964"
- y1="26.580296"
- x1="27.366341"
- id="linearGradient2852"
- xlink:href="#linearGradient2846"
- inkscape:collect="always" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="42.5"
- x2="31.5"
- y1="35.75"
- x1="33"
- id="linearGradient2246"
- xlink:href="#linearGradient2240"
- inkscape:collect="always" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="42.5"
- x2="31.5"
- y1="35.75"
- x1="33"
- id="linearGradient2238"
- xlink:href="#linearGradient2232"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1.290127e-2,1.685197,1.713082,1.311475e-2,-1.041499,-10.11571)"
- r="19.0625"
- fy="11.132236"
- fx="16.563837"
- cy="11.132236"
- cx="16.563837"
- id="radialGradient4997"
- xlink:href="#linearGradient4991"
- inkscape:collect="always" />
- <linearGradient
- y2="12.583769"
- x2="12.624337"
- y1="11.39502"
- x1="17.060806"
- gradientTransform="matrix(0,-1.171926,1.171926,0,1.782801,54.10111)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient1764"
- xlink:href="#linearGradient2187"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2187">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2189" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop2191" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
- r="15.644737"
- fy="36.421127"
- fx="24.837126"
- cy="36.421127"
- cx="24.837126"
- id="radialGradient8668"
- xlink:href="#linearGradient8662"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8662"
- inkscape:collect="always">
- <stop
- id="stop8664"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop8666"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4991"
- inkscape:collect="always">
- <stop
- id="stop4993"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop4995"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2232"
- inkscape:collect="always">
- <stop
- id="stop2234"
- offset="0"
- style="stop-color:#788600;stop-opacity:1;" />
- <stop
- id="stop2236"
- offset="1"
- style="stop-color:#788600;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2240"
- inkscape:collect="always">
- <stop
- id="stop2242"
- offset="0"
- style="stop-color:#99b00b;stop-opacity:1;" />
- <stop
- id="stop2244"
- offset="1"
- style="stop-color:#99b00b;stop-opacity:0;" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- stroke="#3465a4"
- inkscape:window-y="0"
- inkscape:window-x="0"
- inkscape:window-height="754"
- inkscape:window-width="1280"
- inkscape:showpageshadow="false"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showgrid="false"
- inkscape:current-layer="layer1"
- inkscape:cy="23.756772"
- inkscape:cx="25.937787"
- inkscape:zoom="15.030623"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="0.25490196"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- fill="#729fcf" />
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Attribution" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- inkscape:label="Layer 1"
- id="layer1">
- <g
- id="g1772"
- transform="matrix(0.826429,0,0,0.826429,8.249162,4.375344)">
- <path
- sodipodi:type="arc"
- style="opacity:0.17112301;color:black;fill:url(#radialGradient2842);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path4475"
- sodipodi:cx="24.130018"
- sodipodi:cy="37.967922"
- sodipodi:rx="16.528622"
- sodipodi:ry="3.9332814"
- d="M 40.65864 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.65864 37.967922 z"
- transform="matrix(1.446431,0,0,1.51999,-10.97453,-17.75168)" />
- <path
- sodipodi:nodetypes="csscccscccscczzzz"
- id="path2844"
- d="M 18.627569,3.1435548 C 10.488439,3.1435548 3.8827682,9.7492259 3.8827682,17.888356 C 3.8827682,26.027486 10.488439,32.633158 18.627569,32.633158 C 22.107124,32.633158 25.17857,31.248765 27.701292,29.230511 C 27.495915,30.237392 27.623257,31.265879 28.457436,31.990436 L 39.42152,41.517846 C 40.654936,42.589175 42.508982,42.448806 43.58031,41.215389 C 44.651638,39.981971 44.511269,38.127927 43.277853,37.056599 L 32.313769,27.529188 C 31.642242,26.945909 30.820891,26.773219 30.007531,26.886466 C 31.994231,24.374044 33.37237,21.337663 33.37237,17.888356 C 33.37237,9.7492259 26.766699,3.1435548 18.627569,3.1435548 z M 18.551954,4.3697381 C 26.191413,4.3697381 31.843729,9.1586886 31.843729,17.661513 C 31.843729,26.336626 26.027039,30.953288 18.551954,30.953288 C 11.249005,30.953288 5.2601806,25.475196 5.2601806,17.661513 C 5.2601806,9.6774061 11.084819,4.369738 18.551954,4.3697381 z "
- style="opacity:1;color:black;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2852);stroke-width:2.00000095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:1;color:black;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 18.602905,3.0803551 C 10.437465,3.0803551 3.8104408,9.7073791 3.8104408,17.872819 C 3.8104408,26.038259 10.437465,32.665283 18.602905,32.665283 C 22.093708,32.665283 25.175082,31.276416 27.70596,29.251638 C 27.499919,30.261774 27.627672,31.293585 28.464547,32.020484 L 39.464073,41.578691 C 40.701476,42.653483 42.561515,42.512661 43.636306,41.275256 C 44.711097,40.037852 44.570274,38.177814 43.332871,37.103023 L 32.333346,27.544815 C 31.659648,26.959651 30.835642,26.786402 30.019653,26.900016 C 32.012775,24.379472 33.395369,21.333276 33.395369,17.872819 C 33.395369,9.7073791 26.768345,3.0803551 18.602905,3.0803551 z M 18.527046,6.2664243 C 24.808154,6.2664245 29.905864,11.364135 29.905864,17.645243 C 29.905864,23.926351 24.808154,29.024061 18.527046,29.024061 C 12.245938,29.024061 7.1482276,23.926351 7.1482276,17.645243 C 7.1482278,11.364135 12.245938,6.2664243 18.527046,6.2664243 z "
- id="path4430" />
- <path
- style="opacity:1;color:black;fill:url(#linearGradient4446);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 39.507004,41.57769 C 39.028332,39.304503 40.904334,36.766268 43.091057,36.789315 C 43.091057,36.789315 32.33069,27.531204 32.33069,27.531204 C 29.385899,27.474498 28.061188,29.80382 28.553876,32.131126 L 39.507004,41.57769 z "
- id="path4438"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:type="arc"
- style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2372);stroke-width:0.8027336;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path4450"
- sodipodi:cx="17.500893"
- sodipodi:cy="18.920233"
- sodipodi:rx="11.048544"
- sodipodi:ry="11.048544"
- d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
- transform="matrix(1.245743,0,0,1.245743,-3.425346,-6.177033)" />
- <path
- transform="matrix(0.497764,0,0,0.609621,8.973526,15.61929)"
- d="M 40.65864 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.65864 37.967922 z"
- sodipodi:ry="3.9332814"
- sodipodi:rx="16.528622"
- sodipodi:cy="37.967922"
- sodipodi:cx="24.130018"
- id="path4485"
- style="opacity:1;color:black;fill:url(#radialGradient4493);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <rect
- style="opacity:0.43315507;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.00003111;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect4495"
- width="19.048439"
- height="4.4404783"
- x="40.373337"
- y="0.14086054"
- rx="2.1366608"
- ry="1.8879365"
- transform="matrix(0.752986,0.658037,-0.648902,0.760872,0,0)" />
- <path
- sodipodi:type="arc"
- style="color:black;fill:url(#radialGradient4460);fill-opacity:1;fill-rule:evenodd;stroke:#3063a3;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dashoffset:0;stroke-opacity:1;visibility:visible"
- id="path4452"
- sodipodi:cx="17.589281"
- sodipodi:cy="18.478292"
- sodipodi:rx="8.3085051"
- sodipodi:ry="8.3085051"
- d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.280776,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
- transform="matrix(1.398614,0,0,1.398614,-6.224338,-8.298958)" />
- <path
- style="opacity:0.83422457;color:black;fill:url(#radialGradient4473);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 18.156915,7.3966938 C 12.949325,7.3966938 8.7323681,11.613651 8.7323681,16.821241 C 8.7323681,18.325216 9.1526753,19.709014 9.77954,20.971144 C 11.03192,21.432757 12.362297,21.746827 13.774307,21.746827 C 19.945262,21.746827 24.873589,16.88519 25.254413,10.809698 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z "
- id="path4462" />
- </g>
- <g
- inkscape:label="Layer 1"
- id="g2194"
- transform="matrix(0.651446,0,0,0.651446,3.41175,11.0539)"
- style="opacity:0.84795323">
- <path
- sodipodi:type="arc"
- style="opacity:0.14117647;color:black;fill:url(#radialGradient8668);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path8660"
- sodipodi:cx="24.837126"
- sodipodi:cy="36.421127"
- sodipodi:rx="15.644737"
- sodipodi:ry="8.3968935"
- d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
- transform="matrix(1.489736,0,0,-1.001252,-12.64716,75.3126)" />
- <path
- sodipodi:nodetypes="ccccccc"
- id="path1432"
- d="M 38.37476,45.034369 C -1.6510486,46.355509 4.6747954,12.29355 25.49479,12.49765 L 25.49479,3.1222396 L 42.143271,17.708819 L 25.49479,33.006349 C 25.49479,33.006349 25.49479,23.337969 25.49479,23.337969 C 11.43168,22.751999 7.3172614,44.770549 38.37476,45.034369 z "
- style="opacity:1;color:black;fill:url(#linearGradient2246);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2238);stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" />
- <path
- style="opacity:0.69886361;color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1764);stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
- d="M 16.92492,39.315519 C 5.2018204,33.235892 8.7371274,13.087489 26.5085,13.549959 L 26.5085,5.4508678 C 26.5085,5.4508678 40.556238,17.714589 40.556238,17.714589 L 26.5085,30.658617 C 26.5085,30.658617 26.5085,22.380979 26.5085,22.380979 C 11.66865,22.032709 12.34859,35.138579 16.92492,39.315519 z "
- id="path2177"
- sodipodi:nodetypes="ccccccc" />
- <path
- sodipodi:nodetypes="ccccccc"
- id="path4989"
- d="M 26.036989,4.5686095 L 36.723727,14.798241 C 29.786227,14.79824 32.036989,23.735424 25.911989,26.610424 L 25.974489,22.943609 C 10.786989,22.881109 11.661989,38.443609 22.724489,42.693609 C 3.6363414,37.811681 6.2869904,13.381109 25.911989,12.88111 L 26.036989,4.5686095 z "
- style="opacity:0.49431817;color:black;fill:url(#radialGradient4997);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
-</svg>
diff --git a/python/deskbar-handler/Makefile.am b/python/deskbar-handler/Makefile.am
deleted file mode 100644
index e7c4c8930..000000000
--- a/python/deskbar-handler/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-
-if USING_DESKBAR_HANDLER
-handlerdir = $(DESKBAR_HANDLER_DIR)
-handler_DATA = tracker-handler.py tracker-handler-static.py
-endif
-
-if USING_DESKBAR_MODULE
-moduledir = $(DESKBAR_MODULE_DIR)
-module_DATA = tracker-module.py
-endif
-
-EXTRA_DIST = \
- tracker-handler.py \
- tracker-handler-static.py \
- tracker-module.py \
- README
diff --git a/python/deskbar-handler/README b/python/deskbar-handler/README
deleted file mode 100644
index e69de29bb..000000000
--- a/python/deskbar-handler/README
+++ /dev/null
diff --git a/python/deskbar-handler/tracker-handler-static.py b/python/deskbar-handler/tracker-handler-static.py
deleted file mode 100644
index 5f797321e..000000000
--- a/python/deskbar-handler/tracker-handler-static.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: utf-8 -*-
-# This handler was originaly created by Mikkel Kamstrup (c) 2006 and updated by Eugenio Cutolo (eulin)
-#
-# The static search Handler was splitted to a separate file by Marcus Fritzsch
-#
-# This program can be distributed under the terms of the GNU GPL version 2 or later.
-# See the file COPYING.
-#
-
-import sys
-import os.path
-import gnome
-import gobject
-
-import gettext
-gettext.install('tracker')
-
-import deskbar.Handler
-import deskbar.Match
-
-
-
-
-class TrackerSearchToolMatch (deskbar.Match.Match):
-
- def __init__(self, backend, **args):
- deskbar.Match.Match.__init__(self, backend, **args)
- self._icon = deskbar.Utils.load_icon ('tracker')
-
- def action(self, text=None):
- try:
- gobject.spawn_async(['tracker-search-tool', self.name], flags=gobject.SPAWN_SEARCH_PATH)
- except gobject.GError, e:
- print >> sys.stderr, "*** Error when executing tracker-search-tool:", e
-
- def get_verb(self):
- return _('Search for %s with Tracker Search Tool') % ('<b>%(name)s</b>')
-
- def get_category (self):
- return 'actions'
-
- def get_hash (self, text=None):
- return 'tst-more-hits-action-'+self.name
-
-
-
-
-class TrackerSearchToolHandler(deskbar.Handler.Handler):
-
- def __init__(self):
- deskbar.Handler.Handler.__init__(self, 'tracker')
-
- def query(self, query):
- return [TrackerSearchToolMatch(self, name=query)]
-
- @staticmethod
- def requirements ():
- if deskbar.Utils.is_program_in_path ('tracker-search-tool'):
- return (deskbar.Handler.HANDLER_IS_HAPPY, None, None)
- return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, 'tracker-search-tool seems not to be installed properly.', None)
-
-
-
-
-HANDLERS = {
- 'TrackerSearchToolHandler': {
- 'name': 'Search for files using Tracker Search Tool',
- 'description': _('Search all of your documents with Tracker Search Tool'),
- 'requirements': TrackerSearchToolHandler.requirements, # XXX makes deskbar 2.18.1 not load the handler!!
- },
-}
diff --git a/python/deskbar-handler/tracker-handler.py b/python/deskbar-handler/tracker-handler.py
deleted file mode 100644
index 3e386ac2f..000000000
--- a/python/deskbar-handler/tracker-handler.py
+++ /dev/null
@@ -1,402 +0,0 @@
-# -*- coding: utf-8 -*-
-# This handler was originaly created by Mikkel Kamstrup (c) 2006 and updated by Eugenio Cutolo (eulin)
-#
-# The handler was rewritten and splitted into live and static search by Marcus Fritzsch
-#
-# This program can be distributed under the terms of the GNU GPL version 2 or later.
-# See the file COPYING.
-#
-
-# Notes on URL escaping and quoting:
-# * Fields displayed in the deskbar applet should be escaped
-# * There _MUST_ be an unescaped 'uri' field in order to open it
-# (see also 'escqped_uri' - this URI however should urllib quoted
-# - Marcus Fritzsch, fritschy@googlemail.com, 2007-08-13
-
-import re
-import cgi
-import sys
-import os.path
-import time
-import urllib
-import string
-import gnome
-import gobject
-
-import gettext
-gettext.install('tracker')
-
-import deskbar, deskbar.Utils, deskbar.gnomedesktop
-import deskbar.Handler
-import deskbar.Match
-
-# For now description param it's not used
-TYPES = {
- 'Applications': {
- 'description': (_('Launch %s (%s)') % ('<b>%(name)s</b>', '%(app_name)s')),
- 'category': 'actions',
- },
-
- 'GaimConversations': {
- 'description': (_('See %s conversation\n%s %s\nfrom %s') % ('<b>%(proto)s</b>', '%(channel)s', '<b>%(conv_to)s</b>', '<i>%(time)s</i>')),
- 'category': 'conversations',
- 'icon': 'stock_people',
- },
-
- 'Emails': {
- 'description': (_('Email from %s') % '<i>%(publisher)s</i>' ) + '\n<b>%(title)s</b>',
- 'category': 'emails',
- 'action': { # more actions for different MUAs
- 'key': 'mua', # see TrackerLiveSearchMatch.action for a demo
- 'Evolution/Email': 'evolution %(uri)s',
- 'Modest/Email': 'modest-open %(uri)s',
- 'Thunderbird/Email': 'thunderbird -viewtracker %(uri)s',
- 'KMail/Email': 'kmail --view %(uri)s',
- },
- 'icon': 'stock_mail',
- },
-
- 'Music': {
- 'description': _('Listen to music %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'music',
- },
-
- 'Documents': {
- 'description': _('See document %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'documents',
- },
-
- 'Development': {
- 'description': _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'develop',
- },
-
- 'Images': {
- 'description': _('View image %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'images',
- 'icon': 'image',
- },
-
- 'Videos': {
- 'description': _('Watch video %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'videos',
- 'icon': 'video',
- },
-
- 'Files': {
- 'description': _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'files',
- },
-
- 'Folders': {
- 'description': _('Open folder %s\n%s') % ('<b>%(name)s</b>', '<i>%(dir)s/%(name)s</i>'),
- 'category': 'places',
- 'icon': 'stock_folder',
- },
-}
-
-
-
-
-class TrackerLiveSearchMatch (deskbar.Match.Match):
-
- def __init__(self, handler,result=None, **args):
- deskbar.Match.Match.__init__ (self, handler,name=result['name'], **args)
- self.result = result
- self.init_names(result['escaped_uri'])
-
- # Set the match icon
- try:
- self._icon = deskbar.Utils.load_icon(TYPES[result['type']]['icon'])
- except:
- if self.result.has_key ('icon'):
- self._icon = deskbar.Utils.load_icon_for_desktop_icon (result ['icon'])
- else:
- self._icon = deskbar.Utils.load_icon_for_file(result['uri'])
-
- def get_name(self, text=None):
- return self.result
-
- def get_verb(self):
- try:
- return TYPES[self.result['type']]['description']
- except:
- return _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>')
-
- def get_hash(self, text=None):
- if self.result ['type'] == 'Applications':
- # return a name that matches the one returned by the Program handler of deskbar
- return 'generic_' + self.result ['app_basename']
- return self.result['uri']
-
- def action(self, text=None):
- try:
- if TYPES[self.result['type']].has_key('action'):
- if isinstance (TYPES[self.result['type']]['action'], dict):
- try:
- key = TYPES[self.result['type']]['action']['key']
- cmd = TYPES[self.result['type']]['action'][self.result[key]]
- except:
- print >> sys.stderr, "Unknown action for URI %s (Error: %s)" % (self.result['uri'], sys.exc_info()[1])
- return
- else:
- cmd = TYPES[self.result['type']]['action']
- cmd = map(lambda arg : arg % self.result, cmd.split()) # we need this to handle spaces correctly
-
- print 'Opening Tracker hit with command:', cmd
- try:
- # deskbar >= 2.17
- deskbar.Utils.spawn_async(cmd)
- except AttributeError:
- # deskbar <= 2.16
- gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH)
- else:
- if 'desktop' in self.result:
- self.result['desktop'].launch([])
- else:
- try:
- # deskbar >= 2.17
- deskbar.Utils.url_show ('file://'+self.result['uri'])
- except AttributeError:
- gnome.url_show('file://'+self.result['uri'])
- print 'Opening Tracker hit:', self.result['uri']
- except:
- print >> sys.stderr, '*** Could not open URL %s: %s' % (self.result['uri'], sys.exc_info ()[1])
-
- def get_category (self):
- try:
- return TYPES[self.result['type']]['category']
- except:
- return 'files'
-
- def init_names (self, fullpath):
- dirname, filename = os.path.split(fullpath)
- if filename == '': #We had a trailing slash
- dirname, filename = os.path.split(dirname)
-
- #Reverse-tilde-expansion
- home = os.path.normpath(os.path.expanduser('~'))
- regexp = re.compile(r'^%s(/|$)' % re.escape(home))
- dirname = re.sub(regexp, r'~\1', dirname)
-
- self.result['base'] = filename
- self.result['dir'] = dirname
-
-
-
-
-class TrackerLiveSearchHandler(deskbar.Handler.SignallingHandler):
-
- def __init__(self):
- deskbar.Handler.SignallingHandler.__init__(self, 'tracker')
- # initing on search request, see self.query
- self.tracker = self.search_iface = self.keywords_iface = self.files_iface = None
- self.set_delay (500)
- self.conv_re = re.compile (r'^.*?/logs/([^/]+)/([^/]+)/([^/]+)/(.+?)\.(:?txt|html)$') # all, proto, account, to-whom, time
-
- def handle_email_hits (self, info, output):
- if len (info) < 5:
- print >> sys.stderr, "*** Hit for Service Emails had incomplete data, ignoring (%s)" % info[0]
- return 0
- output['title'] = cgi.escape(info[3])
- output['publisher'] = cgi.escape(info[4])
- output['mua'] = info[2]
- if output['mua'] == 'Thunderbird/Email':
- output['uri'] = info[0]
- return 1
-
- def handle_conversation_hits (self, info, output):
- m = self.conv_re.match (output['escaped_uri'])
- output['channel']=_('with')
- output['proto']=output['conv_from']=output['conv_to']=output['time']='' # XXX, never happened during tests
- if m:
- output['proto'] = cgi.escape (m.group (1))
- output['conv_from'] = urllib.unquote (cgi.escape (m.group (2)))
- output['conv_to'] = urllib.unquote (cgi.escape (m.group (3)))
- output['time'] = cgi.escape (time_from_purple_log (m.group (4)))
- if output['conv_to'].endswith ('.chat'):
- output['channel'] = _('in channel')
- output['conv_to'] = output['conv_to'].replace ('.chat','')
- if output['proto'] == 'irc':
- nick_server = output['conv_from'].split ('@')
- if len (nick_server) > 1:
- output['conv_to'] = '%s on %s' % (output['conv_to'], nick_server[1])
-
- def handle_application_hits (self, info, output):
- # print info
- # dbus.Array(
- # [
- # dbus.String(u'/usr/share/applications/gksu.desktop'), # TrackerUri 0
- # dbus.String(u'Applications'), # TrackerType 1
- # dbus.String(u'Application'), # DesktopType 2
- # dbus.String(u'Root Terminal'), # DesktopName 3
- # dbus.String(u'gksu /usr/bin/x-terminal-emulator'), # DesktopExec 4
- # dbus.String(u'gksu-root-terminal') # DesktopIcon 5
- # ],
- # signature=dbus.Signature('s'))
- # Strip %U or whatever arguments in Exec field
- if len (info) < 6:
- print >> sys.stderr, "*** Hit for Service Applications had incomplete data, ignoring (%s)" % info[0]
- return 0
- output['app_name'] = re.sub(r'%\w+', '', info [4]).strip ()
- output['app_basename'] = cgi.escape (os.path.basename (output['app_name']))
- output['app_name'] = cgi.escape (output['app_name'])
- if output['app_basename'] == '': # strange // in app_name, e.g. nautilus burn:///
- output['app_basename'] = output['app_name']
- output['name'] = cgi.escape (info [3])
- output['icon'] = info [5] # no escaping, as it is not displayed as a string
-
- desktop = parse_desktop_file (info[0])
- if not desktop:
- print >> sys.stderr, '*** Could not read .desktop file: %s' % info[0]
- else:
- output['desktop'] = desktop
- return 1
-
- def receive_hits (self, qstring, hits, max):
- matches = []
-
- for info in hits:
- output = {}
-
- if len (info) < 2:
- print >> sys.stderr, "*** Hit had incomplete data, ignoring"
- continue
-
- info = [str (i) for i in info]
-
- output['escaped_uri'] = cgi.escape (info[0])
- output['uri'] = url_quote (info[0], ';?:@&=+$,./')
- output['name'] = os.path.basename(output['escaped_uri'])
- output['type'] = info[1]
-
- if not TYPES.has_key(output['type']):
- output['type'] = 'Files'
-
- if output['type'] == 'Emails':
- if not self.handle_email_hits (info, output):
- continue
-
- elif output['type'] in ('GaimConversations', 'Conversations'):
- if not self.handle_conversation_hits (info, output):
- continue
-
- elif output['type'] == 'Applications':
- if not self.handle_application_hits (info, output):
- continue
-
- # applications are launched by .desktop file, if not readable: exclude
- if output['type'] != 'Applications' or output.has_key ('desktop'):
- matches.append(TrackerLiveSearchMatch (self, output))
-
- if len (matches):
- self.emit_query_ready(qstring, matches)
- print 'Tracker response for query "%s" (service %s); %s hits returned, %s shown' % (qstring, hits[0][1], len(hits), len(matches))
-
- def recieve_error (self, error):
- print >> sys.stderr, '*** Tracker dbus error:', error
-
- def query (self, qstring, max):
- if self.tracker:
- try: self.tracker.GetStatus ()
- except: self.tracker = None # reconnect
- if not self.tracker:
- try:
- print "Connecting to Tracker (first search or trackerd restarted)"
- import dbus
- bus = dbus.SessionBus()
- self.tracker = bus.get_object('org.freedesktop.Tracker','/org/freedesktop/tracker')
- self.search_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Search')
- self.keywords_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Keywords')
- self.files_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Files')
- except:
- print >> sys.stderr, '*** DBus connection to tracker failed, check your settings.'
- return
- for service in TYPES.iterkeys ():
- self.search_iface.TextDetailed (-1, service, qstring, 0, max, \
- reply_handler = lambda hits: self.receive_hits (qstring, hits, max), \
- error_handler = self.recieve_error)
- print 'Tracker query:', qstring
-
- @staticmethod
- def requirements ():
- try:
- import dbus
- try :
- if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
- import dbus.glib
-
- # Check that Tracker can be started via dbus activation, we will have trouble if it's not
- bus = dbus.SessionBus()
- proxy_obj = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
- dbus_iface = dbus.Interface(proxy_obj, 'org.freedesktop.DBus')
- activatables = dbus_iface.ListActivatableNames()
- if not 'org.freedesktop.Tracker' in activatables:
- return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, 'Tracker is not activatable via dbus', None)
- except:
- return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, 'Python dbus.glib bindings not found.', None)
- return (deskbar.Handler.HANDLER_IS_HAPPY, None, None)
- except:
- return (deskbar.Handler.HANDLER_IS_NOT_APPLICABLE, 'Python dbus bindings not found.', None)
-
-
-
-
-# this code is stolen from the programs handler of deskbar
-def parse_desktop_file(desktop, only_if_visible=False):
- try:
- desktop = deskbar.gnomedesktop.item_new_from_file(desktop, deskbar.gnomedesktop.LOAD_ONLY_IF_EXISTS)
- except Exception, e:
- print 'Couldn\'t read desktop file:%s:%s' % (desktop, e)
- return None
- if desktop == None or desktop.get_entry_type() != deskbar.gnomedesktop.TYPE_APPLICATION:
- return None
- if only_if_visible and desktop.get_boolean(deskbar.gnomedesktop.KEY_NO_DISPLAY):
- return None
- return desktop
-
-
-
-
-def time_from_purple_log (instr):
- try:
- if instr.find ('+') != -1: # new kind of log timestamp...
- return time.strftime ('%c', time.strptime (re.sub (r'\+\d{4}', '', instr), '%Y-%m-%d.%H%M%S%Z'))
- else: # ...from ancient times
- return time.strftime ('%c', time.strptime (instr, '%Y-%m-%d.%H%M%S'))
- except:
- print >> sys.stderr, '*** time parsing for purple chat log failed: %s' % sys.exc_info ()[1]
- return instr
-
-
-
-
-def url_quote (instr, safe = '/'):
- """A unicode capable quote, see http://bugs.python.org/issue1712522"""
- return ''.join (map (lambda x: x in (safe+string.letters+string.digits) and x or ('%%%02X' % ord(x)), instr.encode ('utf-8')))
-
-
-
-
-
-HANDLERS = {
- 'TrackerLiveSearchHandler': {
- 'name': 'Search for files using Tracker',
- 'description': _('Search all of your documents, <b>as you type</b>'),
- 'requirements': TrackerLiveSearchHandler.requirements,
- 'categories': {
- 'develop': {
- 'name': _('Development Files'),
- },
- 'music': {
- 'name': _('Music'),
- },
- 'images': {
- 'name': _('Images'),
- },
- 'videos': {
- 'name': _('Videos'),
- },
- },
- },
-}
diff --git a/python/deskbar-handler/tracker-module.py b/python/deskbar-handler/tracker-module.py
deleted file mode 100644
index d4d71b111..000000000
--- a/python/deskbar-handler/tracker-module.py
+++ /dev/null
@@ -1,492 +0,0 @@
-# This deskbar module was ported from deskbar <= 2.18 handler by Marcus Fritzsch
-
-import gnome
-import gobject
-import re
-import sys
-import urllib
-import string
-import time
-import cgi
-import os.path
-import deskbar
-import deskbar.core.Utils
-import deskbar.core.gnomedesktop
-import deskbar.interfaces.Module
-import deskbar.interfaces.Match
-import deskbar.interfaces.Action
-from deskbar.core.Utils import is_program_in_path, spawn_async
-from deskbar.handlers.actions.OpenWithApplicationAction import \
- OpenWithApplicationAction
-from deskbar.handlers.actions.OpenDesktopFileAction import \
- OpenDesktopFileAction
-from deskbar.handlers.actions.ShowUrlAction import \
- ShowUrlAction
-from deskbar.handlers.actions.ActionsFactory import \
- get_actions_for_uri
-
-import gettext
-gettext.install('tracker')
-
-
-MAX_RESULTS = 10
-HANDLERS = ['TrackerSearchToolHandler', 'TrackerLiveSearchHandler']
-
-
-class TrackerSearchToolMatch (deskbar.interfaces.Match):
-
- def __init__(self, **kwargs):
- deskbar.interfaces.Match.__init__(self, **kwargs)
- self.add_action (TrackerSearchToolAction (self.get_name ()))
- self._pixbuf = deskbar.core.Utils.load_icon ('tracker')
-
- def get_hash (self, text=None):
- return 'tst-more-hits-action-'+self.get_name ()
-
- def get_category (self):
- return 'actions'
-
-
-
-
-class TrackerSearchToolAction (deskbar.interfaces.Action):
- def __init__(self, name):
- deskbar.interfaces.Action.__init__ (self, name)
- self.name = name
-
- def activate(self, text=None):
- try:
- gobject.spawn_async(['tracker-search-tool', self.name], \
- flags=gobject.SPAWN_SEARCH_PATH)
- except gobject.GError, e:
- print >> sys.stderr, "*** Error when executing tracker-search-tool:", e
-
- def get_verb(self):
- return _('Search for %s with Tracker Search Tool') % '<b>%(name)s</b>'
-
- def get_hash (self):
- return 't-s-t:'+self.name
-
- def get_category (self):
- return 'actions'
-
-
-
-
-class TrackerSearchToolHandler(deskbar.interfaces.Module):
- INFOS = {
- 'icon': deskbar.core.Utils.load_icon ('tracker'),
- 'name': _('Tracker Search'),
- 'description': _('Search with Tracker Search Tool'),
- 'version': '0.6.4',
- }
-
- def __init__(self):
- deskbar.interfaces.Module.__init__(self)
-
- def query(self, query):
- self._emit_query_ready (query, [TrackerSearchToolMatch(name=query, priority=self.get_priority ())])
-
- @staticmethod
- def has_requirements ():
- return is_program_in_path ('tracker-search-tool')
-
-
-
-
-#For now description param it's not used
-TYPES = {
- 'Applications': {
- 'description': (_('Launch %s (%s)') % ('<b>%(name)s</b>', '%(app_name)s') ),
- 'category': 'actions',
- },
-
- 'GaimConversations': {
- 'description': (_('See %s conversation\n%s %s\nfrom %s') % ('<b>%(proto)s</b>', '%(channel)s', '<b>%(conv_to)s</b>', '<i>%(time)s</i>')),
- 'category': 'conversations',
- },
-
- 'Emails': {
- 'description': (_('Email from %s') % '<i>%(publisher)s</i>' ) + '\n<b>%(title)s</b>',
- 'category': 'emails',
- 'action': { # more actions for different MUAs
- 'key': 'mua', # see TrackerLiveSearchAction.action for a demo
- 'Evolution/Email': 'evolution %(uri)s',
- 'Modest/Email': 'modest-open %(uri)s',
- 'Thunderbird/Email': 'thunderbird -viewtracker %(uri)s',
- 'KMail/Email': 'kmail --view %(uri)s',
- },
- },
-
- 'Music': {
- 'description': _('Listen to music %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'music',
- #'icon': 'audio-x-generic',
- },
-
- 'Documents': {
- 'description': _('See document %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'documents',
- },
-
- 'Development': {
- 'description': _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'develop',
- },
-
- 'Images': {
- 'description': _('View image %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'images',
- 'icon': 'image',
- },
-
- 'Videos': {
- 'description': _('Watch video %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'videos',
- #'icon': 'video-x-generic',
- },
-
- 'Folders': {
- 'description': _('Open folder %s\n%s') % ('<b>%(name)s</b>', '<i>%(dir)s/%(name)s</i>'),
- 'category': 'places',
- },
-
- 'Files': {
- 'description': _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>'),
- 'category': 'files',
- },
-
- 'Extra': {
- 'description': _('Search for %s with Tracker Search Tool') % ('<b>%(name)s</b>'),
- },
-}
-
-
-
-
-class TrackerLiveSearchMatch (deskbar.interfaces.Match):
-
- def __init__(self, result, **args):
- deskbar.interfaces.Match.__init__ (self)
- self.result = result
- try:
- desktop = result['desktop']
- del result['desktop']
- except:
- desktop = None
-
- # Set the match icon
- try:
- self._pixbuf = deskbar.core.Utils.load_icon(TYPES[result['type']]['icon'])
- except:
- if self.result.has_key ('icon'):
- self._pixbuf = deskbar.core.Utils.load_icon_for_desktop_icon (result ['icon'])
- else:
- if not self.result['type'] in ('GaimConversations', 'Emails'):
- try:
- self._pixbuf = deskbar.core.Utils.load_icon ('file://'+result['quoted_uri'])
- except:
- pass # some icons cannot be loaded... (e.g. for non existent file or illegal URI)
-
- self.add_action (TrackerLiveSearchAction (result, desktop))
-
- # Add extra default actions where it makes sense
- if not result['type'] in ["Emails", "Applications", "GaimConversations"]:
- try:
- self.add_all_actions (get_actions_for_uri(result['quoted_uri']))
- except:
- print >> sys.stderr, "*** Error when adding all actions for hit %s: %s" % (self.result['uri'], sys.exc_info()[1])
-
- def get_name (self, text = None):
- return self.get_verb() % self.result
-
- def get_verb(self):
- try:
- return TYPES[self.result['type']]['description']
- except:
- return _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>')
-
- def get_hash(self, text=None):
- return self.result['uri']
-
- def get_category (self):
- try:
- return TYPES[self.result['type']]['category']
- except:
- return 'files'
-
-
-
-
-class TrackerLiveSearchAction (deskbar.interfaces.Action):
-
- def __init__ (self, result, desktop):
- deskbar.interfaces.Action (self)
- self.name = result['name']
- self.desktop = desktop
- self.result = result
- self.init_names (result['uri'])
-
- def get_name(self, text=None):
- return self.result
-
- def get_hash(self, text=None):
- if self.result ['type'] == 'Applications':
- # return a name that matches the one returned by the Program handler of deskbar
- return 'generic_' + self.result ['app_basename']
- return self.result['uri']
-
- def get_verb(self):
- try:
- return TYPES[self.result['type']]['description']
- except:
- return _('Open file %s\nin %s') % ('<b>%(base)s</b>', '<i>%(dir)s</i>')
-
- def activate (self, text=None):
- try:
- if TYPES[self.result['type']].has_key('action'):
- if isinstance (TYPES[self.result['type']]['action'], dict):
- try:
- key = TYPES[self.result['type']]['action']['key']
- cmd = TYPES[self.result['type']]['action'][self.result[key]]
- except:
- print >> sys.stderr, "Unknown action for URI %s (Error: %s)" % (self.result['uri'], sys.exc_info()[1])
- return
- else:
- cmd = TYPES[self.result['type']]['action']
- cmd = map(lambda arg : arg % self.result, cmd.split()) # we need this to handle spaces correctly
-
- print 'Opening Tracker hit with command:', cmd
- deskbar.core.Utils.spawn_async(cmd)
- else:
- if self.desktop:
- self.desktop.launch ([])
- else:
- deskbar.core.Utils.url_show ('file://'+self.result['quoted_uri'])
- print 'Opening Tracker hit:', self.result['quoted_uri']
- except:
- print >> sys.stderr, "*** Could not activate Hit %s: %s" % (self.result['uri'], sys.exc_info()[1])
-
- def init_names (self, fullpath):
- dirname, filename = os.path.split(fullpath)
- if filename == '': #We had a trailing slash
- dirname, filename = os.path.split(dirname)
-
- #Reverse-tilde-expansion
- home = os.path.normpath(os.path.expanduser('~'))
- regexp = re.compile(r'^%s(/|$)' % re.escape(home))
- dirname = re.sub(regexp, r'~\1', dirname)
-
- self.result ['base'] = filename
- self.result ['dir'] = dirname
-
-
-
-
-class TrackerLiveSearchHandler(deskbar.interfaces.Module):
-
- INFOS = {
- 'icon': deskbar.core.Utils.load_icon ('tracker'),
- 'name': _('Tracker Live Search'),
- 'description': _('Search with Tracker, as you type'),
- 'version': '0.6.4',
- 'categories': {
- 'develop': {
- 'name': _('Development Files'),
- },
- 'music': {
- 'name': _('Music'),
- },
- 'images': {
- 'name': _('Images'),
- },
- 'videos': {
- 'name': _('Videos'),
- },
- },
- }
-
- @staticmethod
- def has_prerequisites ():
- try:
- import dbus
- try :
- if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
- import dbus.glib
-
- # Check that Tracker can be started via dbus activation, we will have trouble if it's not
- bus = dbus.SessionBus()
- proxy_obj = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
- dbus_iface = dbus.Interface(proxy_obj, 'org.freedesktop.DBus')
- activatables = dbus_iface.ListActivatableNames()
- if not 'org.freedesktop.Tracker' in activatables:
- TrackerLiveSearchHandler.INSTRUCTIONS = ('Tracker is not activatable via dbus')
- return False
- except:
- TrackerLiveSearchHandler.INSTRUCTIONS = ('Python dbus.glib bindings not found.')
- return False
- return True
- except:
- TrackerLiveSearchHandler.INSTRUCTIONS = ('Python dbus bindings not found.')
- return False
-
- def __init__(self):
- deskbar.interfaces.Module.__init__(self)
- # initing on search request, see self.query
- self.tracker = self.search_iface = self.keywords_iface = self.files_iface = None
- self.conv_re = re.compile (r'^.*?/logs/([^/]+)/([^/]+)/([^/]+)/(.+?)\.(:?txt|html)$') # all, proto, account, to-whom, time
-
- def handle_email_hits (self, info, output):
- if len (info) < 5:
- print >> sys.stderr, "*** Hit for Service Emails had incomplete data, ignoring (%s)" % info[0]
- return 0
- output['title'] = info[3]
- output['publisher'] = info[4]
- output['mua'] = info[2]
- return 1
-
- def handle_conversation_hits (self, info, output):
- output ['uri'] = info [0]
- m = self.conv_re.match (output['uri'])
- output['channel']=_('with')
- output['proto']=output['conv_from']=output['conv_to']=output['time']='' # XXX, never happened during tests
- if m:
- output['proto'] = m.group (1)
- output['conv_from'] = urllib.unquote (m.group (2))
- output['conv_to'] = urllib.unquote (m.group (3))
- output['time'] = time_from_purple_log (m.group (4))
- if output['conv_to'].endswith ('.chat'):
- output['channel'] = _('in channel')
- output['conv_to'] = output['conv_to'].replace ('.chat','')
- if output['proto'] == 'irc':
- nick_server = output['conv_from'].split ('@')
- if len (nick_server) > 1:
- output['conv_to'] = '%s on %s' % (output['conv_to'], nick_server[1])
- return 1
-
- def handle_application_hits (self, info, output):
- # print info
- # dbus.Array(
- # [
- # dbus.String(u'/usr/share/applications/gksu.desktop'), # TrackerUri 0
- # dbus.String(u'Applications'), # TrackerType 1
- # dbus.String(u'Application'), # DesktopType 2
- # dbus.String(u'Root Terminal'), # DesktopName 3
- # dbus.String(u'gksu /usr/bin/x-terminal-emulator'), # DesktopExec 4
- # dbus.String(u'gksu-root-terminal') # DesktopIcon 5
- # ],
- # signature=dbus.Signature('s'))
- # Strip %U or whatever arguments in Exec field
- if len (info) < 6:
- print >> sys.stderr, "*** Hit for Service Applications had incomplete data, ignoring (%s)" % info[0]
- return 0
- output['app_name'] = re.sub(r'%\w+', '', info [4]).strip ()
- output['app_basename'] = os.path.basename (output['app_name'])
- output['app_name'] = output['app_name']
- if output['app_basename'] == '': # strange // in app_name, e.g. nautilus burn:///
- output['app_basename'] = output['app_name']
- output['name'] = info [3]
- output['icon'] = info [5]
- desktop = parse_desktop_file (output['uri'])
- if desktop:
- output['desktop'] = desktop
- return 1
-
- def recieve_hits (self, qstring, hits, max):
- matches = []
-
- for info in hits:
- output = {}
-
- if len (info) < 2:
- print >> sys.stderr, "*** Hit had incomplete data, ignoring"
- continue
-
- info = [str (i) for i in info]
-
- output['uri'] = info[0]
- output['name'] = os.path.basename(output['uri'])
- output['type'] = info[1]
- output['quoted_uri'] = url_quote (info[0], ';?@&=+$,./')
-
- if not TYPES.has_key(output['type']):
- output['type'] = 'Files'
-
- if output['type'] == 'Emails':
- if not self.handle_email_hits (info, output):
- continue
-
- elif output['type'] == 'GaimConversations':
- if not self.handle_conversation_hits (info, output):
- continue
-
- elif output['type'] == 'Applications':
- if not self.handle_application_hits (info, output):
- continue
-
- # applications are launched by .desktop file, if not readable: exclude
- if output['type'] != 'Applications' or output.has_key ('desktop'):
- matches.append(TrackerLiveSearchMatch (output))
-
- if len (matches):
- self._emit_query_ready (qstring, matches)
- print 'Tracker response for %s; %d hits returned, %d shown' % \
- (qstring, len(hits), len(matches))
-
- def recieve_error (self, error):
- print >> sys.stderr, '*** Tracker dbus error:', error
-
- def query (self, qstring):
- max = MAX_RESULTS
-
- if self.tracker:
- try: self.tracker.GetStatus ()
- except: self.tracker = None # reconnect
- if not self.tracker:
- try:
- print "Connecting to Tracker (first search or trackerd restarted)"
- import dbus
- bus = dbus.SessionBus()
- self.tracker = bus.get_object('org.freedesktop.Tracker', '/org/freedesktop/tracker')
- self.search_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Search')
- self.keywords_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Keywords')
- self.files_iface = dbus.Interface(self.tracker, 'org.freedesktop.Tracker.Files')
- except:
- print >> sys.stderr, 'DBus connection to tracker failed, check your settings.'
- return
- for service in [key for key in TYPES.iterkeys () if key != 'Extra']:
- print 'Searching %s' % service
- self.search_iface.TextDetailed (-1, service, qstring, 0, max, \
- reply_handler = lambda hits: self.recieve_hits(qstring, hits, max),
- error_handler = self.recieve_error)
- print 'Tracker query:', qstring
-
-
-
-
-# this code is stolen from the programs handler of deskbar
-def parse_desktop_file(desktop, only_if_visible=False):
- try:
- desktop = deskbar.core.gnomedesktop.item_new_from_file(desktop, deskbar.core.gnomedesktop.LOAD_ONLY_IF_EXISTS)
- except Exception, e:
- print 'Couldn\'t read desktop file:%s:%s' % (desktop, e)
- return None
- if desktop == None or desktop.get_entry_type() != deskbar.core.gnomedesktop.TYPE_APPLICATION:
- return None
- if only_if_visible and desktop.get_boolean(deskbar.core.gnomedesktop.KEY_NO_DISPLAY):
- return None
- return desktop
-
-def time_from_purple_log (instr):
- try:
- if instr.find ('+') != -1: # new kind of log timestamp...
- return time.strftime ('%c', time.strptime (re.sub (r'\+\d{4}', '', instr), '%Y-%m-%d.%H%M%S%Z'))
- else: # ...from ancient times
- return time.strftime ('%c', time.strptime (instr, '%Y-%m-%d.%H%M%S'))
- except:
- print >> sys.stderr, '*** time parsing for purple chat log failed: %s' % sys.exc_info ()[1]
- return instr
-
-def url_quote (instr, safe = '/'):
- """A unicode capable quote, see http://bugs.python.org/issue1712522"""
- return ''.join (map (lambda x: x in (safe+string.letters+string.digits) and x or ('%%%02X' % ord(x)), instr.encode ('utf-8')))
diff --git a/python/music/lyrics.py b/python/music/lyrics.py
deleted file mode 100644
index f71f1cf24..000000000
--- a/python/music/lyrics.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import os
-import urllib
-import sys
-import re
-from xml.dom import minidom
-
-LYRIC_TITLE_STRIP = ["\(live[^\)]*\)", "\(acoustic[^\)]*\)", "\([^\)]*mix\)", "\([^\)]*version\)", "\([^\)]*edit\)", "\(feat[^\)]*\)"]
-LYRIC_TITLE_REPLACE = [("/", "-"), (" & ", " and ")]
-LYRIC_ARTIST_REPLACE = [("/", "-"), (" & ", " and ")]
-
-def get_lyrics(artist, title):
- # replace ampersands and the like
- for exp in LYRIC_ARTIST_REPLACE:
- p = re.compile (exp[0])
- artist = p.sub(exp[1], artist)
- for exp in LYRIC_TITLE_REPLACE:
- p = re.compile (exp[0])
- title = p.sub(exp[1], title)
-
- # strip things like "(live at Somewhere)", "(accoustic)", etc
- for exp in LYRIC_TITLE_STRIP:
- p = re.compile (exp)
- title = p.sub ('', title)
-
- # compress spaces
- title = title.strip()
- artist = artist.strip()
-
- url = "http://api.leoslyrics.com/api_search.php?auth=Rhythmbox&artist=%s&songtitle=%s" % (
- urllib.quote(artist.encode('utf-8')),
- urllib.quote(title.encode('utf-8')))
-
- data = urllib.urlopen(url).read()
- xmldoc = minidom.parseString(data).documentElement
-
- result_code = xmldoc.getElementsByTagName('response')[0].getAttribute('code')
- if result_code != '0':
- xmldoc.unlink()
- return
-
- matches = xmldoc.getElementsByTagName('result')[:10]
- hids = map(lambda x: x.getAttribute('hid'), matches)
- if len(hids) == 0:
- self.callback("Unable to find lyrics for this track.")
- xmldoc.unlink()
- return
-
- xmldoc.unlink()
-
- url = "http://api.leoslyrics.com/api_lyrics.php?auth=Rhythmbox&hid=%s" % (urllib.quote(hids[0].encode('utf-8')))
- data = urllib.urlopen(url).read()
- xmldoc = minidom.parseString(data).documentElement
-
- text = xmldoc.getElementsByTagName('title')[0].firstChild.nodeValue
- text += ' - ' + xmldoc.getElementsByTagName('artist')[0].getElementsByTagName('name')[0].firstChild.nodeValue + '\n\n'
- text += xmldoc.getElementsByTagName('text')[0].firstChild.nodeValue
-
- xmldoc.unlink()
- return text
-
-
-if __name__ == '__main__':
- if len(sys.argv) != 4:
- print 'usage: %s artist title output' % (sys.argv[0])
- sys.exit(1)
-
- f = open(sys.argv[3], 'w')
- lyrics = get_lyrics(sys.argv[1], sys.argv[2])
- f.write(lyrics.encode('utf-8'))
- f.close()
diff --git a/python/nautilus/README b/python/nautilus/README
deleted file mode 100644
index 921bf7209..000000000
--- a/python/nautilus/README
+++ /dev/null
@@ -1,15 +0,0 @@
-tracker-tags-tab.py is a nautilus extension providing document tagging interface powered by tracker
-
-----------Requirements----------
-* python-dev (>= 2.3)
-* tracker(>= 5.0)
-* python-nautilus (>=0.4.3)
-
-If you use Ubuntu these can be installed via apt-get with this command:
-sudo apt-get install python-dev python-nautilus
-
-----------Installation-----------
-
-cp ./*.py ~/.nautilus/python-extensions/
-
-
diff --git a/python/nautilus/tracker-tags-tab.py b/python/nautilus/tracker-tags-tab.py
deleted file mode 100644
index 44a26bd44..000000000
--- a/python/nautilus/tracker-tags-tab.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright (C) 2006/7, Edward B. Duffy <eduffy@gmail.com>
-# tracker-tags-tab.py: Tag your files in your Tracker database
-# via Nautilus's property dialog.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-if __name__ == '__main__':
- import os
- import sys
-
- print 'This is nautilus extension, not a standalone application.'
- print 'Please copy this file into your nautulis extensions directory:'
- print
- print '\t# cp %s %s/.nautilus/python-extensions' % \
- (__file__,os.path.expanduser('~'))
-
- sys.exit(1)
-
-
-import gtk
-import dbus
-import urllib
-import operator
-import nautilus
-
-class TrackerTagsPage(nautilus.PropertyPageProvider):
-
- def __init__(self):
- bus = dbus.SessionBus()
- obj = bus.get_object('org.freedesktop.Tracker',
- '/org/freedesktop/tracker')
- self.tracker = dbus.Interface(obj, 'org.freedesktop.Tracker')
- self.keywords = dbus.Interface(obj, 'org.freedesktop.Tracker.Keywords')
-
- def _on_toggle(self, cell, path, files):
- on = not self.store.get_value(self.store.get_iter(path), 0)
- self.store.set_value(self.store.get_iter(path), 0, on)
- tag = self.store.get_value(self.store.get_iter(path), 1)
- if on: func = self.keywords.Add
- else: func = self.keywords.Remove
- for f in files:
- func('Files', f, [tag])
-
- def _on_add_tag(self, button):
- self.store.append([False, ''])
-
- def _on_edit_tag(self, cell, path, text, files):
- old_text = self.store.get_value(self.store.get_iter(path), 1)
- on = self.store.get_value(self.store.get_iter(path), 0)
- if on:
- for f in files:
- self.keywords.Remove('Files', f, [old_text])
- self.keywords.Add('Files', f, [text])
- self.store.set_value(self.store.get_iter(path), 1, text)
-
- def _on_update_tag_summary(self, store, path, iter):
- tags = [ ]
- for row in store:
- if row[0]:
- tags.append(row[1])
- self.entry_tag.handler_block(self.entry_changed_id)
- self.entry_tag.set_text(','.join(tags))
- self.entry_tag.handler_unblock(self.entry_changed_id)
-
- def _on_tag_summary_changed(self, entry, files):
- new_tags = set(entry.get_text().split(','))
- new_tags.discard('') # remove the empty string
- for f in files:
- old_tags = set(self.keywords.Get('Files', f))
- tbr = list(old_tags.difference(new_tags))
- tba = list(new_tags.difference(old_tags))
- if tbr:
- self.keywords.Remove('Files', f, tbr)
- if tba:
- self.keywords.Add('Files', f, tba)
-
- # update check-box list (remove outdated tags, add the new ones)
- self.store.handler_block(self.store_changed_id)
- all_tags = [ t for t,c in self.keywords.GetList('Files') ]
- i = 0
- while i < len(self.store):
- if self.store[i][1] in all_tags:
- self.store[i][0] = (self.store[i][1] in new_tags)
- all_tags.remove(self.store[i][1])
- i += 1
- else:
- del self.store[i]
- # assert len(all_tags) == 1 ???
- for t in all_tags:
- self.store.append([True, t])
- self.store.handler_unblock(self.store_changed_id)
-
- def get_property_pages(self, files):
- property_label = gtk.Label('Tags')
- property_label.show()
-
- # get the list of tags
- all_tags = self.keywords.GetList('Files')
- # convert usage count to an integer
- all_tags = [ (t,int(c)) for t,c in all_tags ]
- # sort by usage count
- all_tags = sorted(all_tags, key=operator.itemgetter(1))
- all_tags.reverse()
- # strip away usage count
- all_tags = [ t for t,c in all_tags ]
-
- files = [ urllib.url2pathname(f.get_uri()[7:]) for f in files ]
- indiv_count = dict([ (t,0) for t in all_tags ])
- tags = { }
- for f in files:
- tags[f] = self.keywords.Get('Files', f)
- for t in tags[f]:
- indiv_count[t] += 1
-
- main = gtk.VBox()
-
- hbox = gtk.HBox()
- hbox.set_border_width(6)
- hbox.set_spacing(12)
- label = gtk.Label('Tags: ')
- self.entry_tag = gtk.Entry()
- # self.entry_tag.props.editable = False
- hbox.pack_start(label, False, False)
- hbox.pack_start(self.entry_tag, True, True)
- main.pack_start(hbox, False, False)
- self.entry_changed_id = self.entry_tag.connect(
- 'changed', self._on_tag_summary_changed, files)
-
- sw = gtk.ScrolledWindow()
- sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- sw.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
-
- self.store = gtk.ListStore(bool, str)
- self.store_changed_id = self.store.connect(
- 'row-changed', self._on_update_tag_summary)
- for tag in all_tags:
- iter = self.store.append([False, tag])
- if indiv_count[tag] == len(files):
- self.store.set_value(iter, 0, True)
- elif indiv_count[tag] == 0:
- self.store.set_value(iter, 0, False)
- else:
- print 'inconsistant'
- tv = gtk.TreeView(self.store)
- tv.set_headers_visible(False)
-
- column = gtk.TreeViewColumn()
- tv.append_column(column)
- cell = gtk.CellRendererToggle()
- column.pack_start(cell, True)
- column.add_attribute(cell, 'active', 0)
- # column.add_attribute(cell, 'inconsistent', 0)
- cell.connect('toggled', self._on_toggle, files)
- cell.set_property('activatable', True)
- # cell.set_property('inconsistent', True)
-
- column = gtk.TreeViewColumn()
- tv.append_column(column)
- cell = gtk.CellRendererText()
- column.pack_start(cell, True)
- column.add_attribute(cell, 'text', 1)
- cell.connect('edited', self._on_edit_tag, files)
- cell.set_property('editable', True)
-
- sw.add(tv)
- main.pack_start(sw)
-
- hbox = gtk.HBox()
- hbox.set_border_width(6)
- btn = gtk.Button(stock='gtk-add')
- btn.get_child().get_child().get_children()[1].props.label = '_Add Tag'
- btn.connect('clicked', self._on_add_tag)
- hbox.pack_end(btn, False, False)
- main.pack_start(hbox, False, False)
-
- main.show_all()
-
- return nautilus.PropertyPage("NautilusPython::tags", property_label, main),
-
diff --git a/rdf-query-examples/80s-music.rdf b/rdf-query-examples/80s-music.rdf
deleted file mode 100644
index 7040c2335..000000000
--- a/rdf-query-examples/80s-music.rdf
+++ /dev/null
@@ -1,15 +0,0 @@
-<rdfq:Condition>
- <rdfq:and>
-
- <rdfq:greaterThan>
- <rdfq:Property name="Audio:ReleaseDate" />
- <rdf:Integer>1979</rdf:Integer>
- </rdfq:greaterThan>
-
- <rdfq:lessThan>
- <rdfq:Property name="Audio:ReleaseDate" />
- <rdf:Integer>1990</rdf:Integer>
- </rdfq:lessThan>
-
- </rdfq:and>
-</rdfq:Condition>
diff --git a/rdf-query-examples/90s-music.rdf b/rdf-query-examples/90s-music.rdf
deleted file mode 100644
index d49fc7bb4..000000000
--- a/rdf-query-examples/90s-music.rdf
+++ /dev/null
@@ -1,15 +0,0 @@
-<rdfq:Condition>
- <rdfq:and>
-
- <rdfq:greaterThan>
- <rdfq:Property name="Audio:ReleaseDate" />
- <rdf:Integer>1989</rdf:Integer>
- </rdfq:greaterThan>
-
- <rdfq:lessThan>
- <rdfq:Property name="Audio:ReleaseDate" />
- <rdf:Integer>2000</rdf:Integer>
- </rdfq:lessThan>
-
- </rdfq:and>
-</rdfq:Condition>
diff --git a/rdf-query-examples/all-documents.rdf b/rdf-query-examples/all-documents.rdf
deleted file mode 100644
index f58b980ec..000000000
--- a/rdf-query-examples/all-documents.rdf
+++ /dev/null
@@ -1,8 +0,0 @@
-<rdfq:Condition>
-
- <rdfq:inSet>
- <rdfq:Property name="File:Mime" />
- <rdf:String>application/msword,application/pdf,application/vnd.ms-excel,application/vnd.oasis.opendocument.text,application/vnd.sun.xml.writer</rdf:String>
- </rdfq:inSet>
-
-</rdfq:Condition>
diff --git a/rdf-query-examples/big-documents.rdf b/rdf-query-examples/big-documents.rdf
deleted file mode 100644
index e003a63e2..000000000
--- a/rdf-query-examples/big-documents.rdf
+++ /dev/null
@@ -1,15 +0,0 @@
-<rdfq:Condition>
- <rdfq:and>
-
- <rdfq:inSet>
- <rdfq:Property name="File:Mime" />
- <rdf:String>application/msword,application/pdf,application/vnd.ms-excel,application/vnd.oasis.opendocument.text,application/vnd.sun.xml.writer</rdf:String>
- </rdfq:inSet>
-
- <rdfq:greaterThan>
- <rdfq:Property name="Doc:PageCount" />
- <rdf:Integer>10</rdf:Integer>
- </rdfq:greaterThan>
-
- </rdfq:and>
-</rdfq:Condition>
diff --git a/rdf-query-examples/wallpapers.rdf b/rdf-query-examples/wallpapers.rdf
deleted file mode 100644
index 7596e117a..000000000
--- a/rdf-query-examples/wallpapers.rdf
+++ /dev/null
@@ -1,16 +0,0 @@
-<rdfq:Condition>
- <rdfq:and>
-
- <rdfq:greaterThan>
- <rdfq:Property name="Image:Width" />
- <rdf:Integer>1023</rdf:Integer>
- </rdfq:greaterThan>
-
- <rdfq:greaterThan>
- <rdfq:Property name="Image:Height" />
- <rdf:Integer>767</rdf:Integer>
- </rdfq:greaterThan>
-
-
- </rdfq:and>
-</rdfq:Condition>
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index 05d8b6cfe..000000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-if HAVE_GNOME
-tracker_gui_dir = tracker-search-tool
-endif
-
-if !USING_EXTERNAL_QDBM
-qdbm_dir = qdbm
-endif
-
-if ENABLE_PREFERENCES
-tracker_preferences_dir = tracker-preferences
-endif
-
-if ENABLE_LIBTRACKERGTK
-libtrackergtk_dir = libtracker-gtk
-endif
-
-if ENABLE_TRACKERAPPLET
-trackerapplet_dir = tracker-applet
-endif
-
-SUBDIRS = libstemmer xdgmime $(qdbm_dir) text-filters libtracker-common trackerd libtracker tracker-extract tracker-thumbnailer $(libtrackergtk_dir) $(tracker_gui_dir) $(trackerapplet_dir) $(tracker_preferences_dir)
-
diff --git a/src/libstemmer/Copyright b/src/libstemmer/Copyright
deleted file mode 100644
index 71de407cf..000000000
--- a/src/libstemmer/Copyright
+++ /dev/null
@@ -1,12 +0,0 @@
-All software in and under this folder is licensed as follows:
-
-Copyright (c) 2001, Dr Martin Porter
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/libstemmer/Makefile.am b/src/libstemmer/Makefile.am
deleted file mode 100644
index 7ac4fc37c..000000000
--- a/src/libstemmer/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-
-noinst_LTLIBRARIES=libstemmer-private.la
-
-libstemmer_private_la_SOURCES = \
- libstemmer/libstemmer.c \
- runtime/api.c \
- runtime/utilities.c \
- src_c/stem_UTF_8_danish.c \
- src_c/stem_UTF_8_dutch.c \
- src_c/stem_UTF_8_english.c \
- src_c/stem_UTF_8_finnish.c \
- src_c/stem_UTF_8_french.c \
- src_c/stem_UTF_8_german.c \
- src_c/stem_UTF_8_hungarian.c \
- src_c/stem_UTF_8_italian.c \
- src_c/stem_UTF_8_norwegian.c \
- src_c/stem_UTF_8_porter.c \
- src_c/stem_UTF_8_portuguese.c \
- src_c/stem_UTF_8_russian.c \
- src_c/stem_UTF_8_spanish.c \
- src_c/stem_UTF_8_swedish.c \
- include/libstemmer.h \
- libstemmer/modules.h \
- runtime/api.h \
- runtime/header.h \
- src_c/stem_UTF_8_danish.h \
- src_c/stem_UTF_8_dutch.h \
- src_c/stem_UTF_8_english.h \
- src_c/stem_UTF_8_finnish.h \
- src_c/stem_UTF_8_french.h \
- src_c/stem_UTF_8_german.h \
- src_c/stem_UTF_8_hungarian.h \
- src_c/stem_UTF_8_italian.h \
- src_c/stem_UTF_8_norwegian.h \
- src_c/stem_UTF_8_porter.h \
- src_c/stem_UTF_8_portuguese.h \
- src_c/stem_UTF_8_russian.h \
- src_c/stem_UTF_8_spanish.h \
- src_c/stem_UTF_8_swedish.h
-
diff --git a/src/libstemmer/include/libstemmer.h b/src/libstemmer/include/libstemmer.h
deleted file mode 100644
index e4e8fc226..000000000
--- a/src/libstemmer/include/libstemmer.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _LIBSTEMMER_H_
-#define _LIBSTEMMER_H_
-
-/* Make header file work when included from C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct sb_stemmer;
-typedef unsigned char sb_symbol;
-
-/* FIXME - should be able to get a version number for each stemming
- * algorithm (which will be incremented each time the output changes). */
-
-/** Returns an array of the names of the available stemming algorithms.
- * Note that these are the canonical names - aliases (ie, other names for
- * the same algorithm) will not be included in the list.
- * The list is terminated with a null pointer.
- *
- * The list must not be modified in any way.
- */
-const char ** sb_stemmer_list(void);
-
-/** Create a new stemmer object, using the specified algorithm, for the
- * specified character encoding.
- *
- * All algorithms will usually be available in UTF-8, but may also be
- * available in other character encodings.
- *
- * @param algorithm The algorithm name. This is either the english
- * name of the algorithm, or the 2 or 3 letter ISO 639 codes for the
- * language. Note that case is significant in this parameter - the
- * value should be supplied in lower case.
- *
- * @param charenc The character encoding. NULL may be passed as
- * this value, in which case UTF-8 encoding will be assumed. Otherwise,
- * the argument may be one of "UTF_8", "ISO_8859_1" (ie, Latin 1),
- * "CP850" (ie, MS-DOS Latin 1) or "KOI8_R" (Russian). Note that
- * case is significant in this parameter.
- *
- * @return NULL if the specified algorithm is not recognised, or the
- * algorithm is not available for the requested encoding. Otherwise,
- * returns a pointer to a newly created stemmer for the requested algorithm.
- * The returned pointer must be deleted by calling sb_stemmer_delete().
- *
- * @note NULL will also be returned if an out of memory error occurs.
- */
-struct sb_stemmer * sb_stemmer_new(const char * algorithm, const char * charenc);
-
-/** Delete a stemmer object.
- *
- * This frees all resources allocated for the stemmer. After calling
- * this function, the supplied stemmer may no longer be used in any way.
- *
- * It is safe to pass a null pointer to this function - this will have
- * no effect.
- */
-void sb_stemmer_delete(struct sb_stemmer * stemmer);
-
-/** Stem a word.
- *
- * The return value is owned by the stemmer - it must not be freed or
- * modified, and it will become invalid when the stemmer is called again,
- * or if the stemmer is freed.
- *
- * The length of the return value can be obtained using sb_stemmer_length().
- *
- * If an out-of-memory error occurs, this will return NULL.
- */
-const sb_symbol * sb_stemmer_stem(struct sb_stemmer * stemmer,
- const sb_symbol * word, int size);
-
-/** Get the length of the result of the last stemmed word.
- * This should not be called before sb_stemmer_stem() has been called.
- */
-int sb_stemmer_length(struct sb_stemmer * stemmer);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/src/libstemmer/libstemmer/libstemmer.c b/src/libstemmer/libstemmer/libstemmer.c
deleted file mode 100644
index 0ed767dbe..000000000
--- a/src/libstemmer/libstemmer/libstemmer.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-#include <stdlib.h>
-#include <string.h>
-#include "../include/libstemmer.h"
-#include "../runtime/api.h"
-#include "modules.h"
-
-struct sb_stemmer {
- struct SN_env * (*create)(void);
- void (*close)(struct SN_env *);
- int (*stem)(struct SN_env *);
-
- struct SN_env * env;
-};
-
-extern const char **
-sb_stemmer_list(void)
-{
- return algorithm_names;
-}
-
-static stemmer_encoding sb_getenc(const char * charenc)
-{
- struct stemmer_encoding * encoding;
- if (charenc == NULL) return ENC_UTF_8;
- for (encoding = encodings; encoding->name != 0; encoding++) {
- if (strcmp(encoding->name, charenc) == 0) break;
- }
- if (encoding->name == NULL) return ENC_UNKNOWN;
- return encoding->enc;
-}
-
-extern struct sb_stemmer *
-sb_stemmer_new(const char * algorithm, const char * charenc)
-{
- stemmer_encoding enc;
- struct stemmer_modules * module;
- struct sb_stemmer * stemmer =
- (struct sb_stemmer *) malloc(sizeof(struct sb_stemmer));
- if (stemmer == NULL) return NULL;
- enc = sb_getenc(charenc);
- if (enc == ENC_UNKNOWN) return NULL;
-
- for (module = modules; module->name != 0; module++) {
- if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break;
- }
- if (module->name == NULL) return NULL;
-
- stemmer->create = module->create;
- stemmer->close = module->close;
- stemmer->stem = module->stem;
-
- stemmer->env = stemmer->create();
- if (stemmer->env == NULL)
- {
- sb_stemmer_delete(stemmer);
- return NULL;
- }
-
- return stemmer;
-}
-
-void
-sb_stemmer_delete(struct sb_stemmer * stemmer)
-{
- if (stemmer == 0) return;
- if (stemmer->close == 0) return;
- stemmer->close(stemmer->env);
- stemmer->close = 0;
- free(stemmer);
-}
-
-const sb_symbol *
-sb_stemmer_stem(struct sb_stemmer * stemmer, const sb_symbol * word, int size)
-{
- int ret;
- if (SN_set_current(stemmer->env, size, (const symbol *)(word)))
- {
- stemmer->env->l = 0;
- return NULL;
- }
- ret = stemmer->stem(stemmer->env);
- if (ret < 0) return NULL;
- stemmer->env->p[stemmer->env->l] = 0;
- return (const sb_symbol *)(stemmer->env->p);
-}
-
-int
-sb_stemmer_length(struct sb_stemmer * stemmer)
-{
- return stemmer->env->l;
-}
diff --git a/src/libstemmer/libstemmer/modules.h b/src/libstemmer/libstemmer/modules.h
deleted file mode 100644
index 0862f4e7c..000000000
--- a/src/libstemmer/libstemmer/modules.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* libstemmer/modules.h: List of stemming modules.
- *
- * This file is generated by mkmodules.pl from a list of module names.
- * Do not edit manually.
- *
- * Modules included by this file are: danish, dutch, english, finnish, french,
- * german, italian, norwegian, porter, portuguese, russian, spanish, swedish
- */
-
-#include "../src_c/stem_UTF_8_danish.h"
-#include "../src_c/stem_UTF_8_dutch.h"
-#include "../src_c/stem_UTF_8_english.h"
-#include "../src_c/stem_UTF_8_finnish.h"
-#include "../src_c/stem_UTF_8_french.h"
-#include "../src_c/stem_UTF_8_german.h"
-#include "../src_c/stem_UTF_8_italian.h"
-#include "../src_c/stem_UTF_8_norwegian.h"
-#include "../src_c/stem_UTF_8_porter.h"
-#include "../src_c/stem_UTF_8_portuguese.h"
-#include "../src_c/stem_UTF_8_russian.h"
-#include "../src_c/stem_UTF_8_spanish.h"
-#include "../src_c/stem_UTF_8_swedish.h"
-
-typedef enum {
- ENC_UNKNOWN,
- ENC_ISO_8859_1,
- ENC_KOI8_R,
- ENC_UTF_8
-} stemmer_encoding;
-
-struct stemmer_encoding {
- const char * name;
- stemmer_encoding enc;
-};
-static struct stemmer_encoding encodings[] = {
- {"ISO_8859_1", ENC_ISO_8859_1},
- {"KOI8_R", ENC_KOI8_R},
- {"UTF_8", ENC_UTF_8},
- {0,0}
-};
-
-struct stemmer_modules {
- const char * name;
- stemmer_encoding enc;
- struct SN_env * (*create)(void);
- void (*close)(struct SN_env *);
- int (*stem)(struct SN_env *);
-};
-static struct stemmer_modules modules[] = {
- {"da", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem},
- {"dan", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem},
- {"danish", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem},
- {"de", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem},
- {"deu", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem},
- {"dut", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
- {"dutch", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
- {"en", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem},
- {"eng", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem},
- {"english", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem},
- {"es", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
- {"esl", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
- {"fi", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem},
- {"fin", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem},
- {"finnish", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem},
- {"fr", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem},
- {"fra", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem},
- {"fre", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem},
- {"french", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem},
- {"ger", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem},
- {"german", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem},
- {"it", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem},
- {"ita", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem},
- {"italian", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem},
- {"nl", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
- {"nld", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
- {"no", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem},
- {"nor", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem},
- {"norwegian", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem},
- {"por", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem},
- {"porter", ENC_UTF_8, porter_UTF_8_create_env, porter_UTF_8_close_env, porter_UTF_8_stem},
- {"portuguese", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem},
- {"pt", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem},
- {"ru", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem},
- {"rus", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem},
- {"russian", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem},
- {"spa", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
- {"spanish", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
- {"sv", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem},
- {"swe", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem},
- {"swedish", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem},
- {0,0,0,0,0}
-};
-static const char * algorithm_names[] = {
- "danish",
- "dutch",
- "english",
- "finnish",
- "french",
- "german",
- "italian",
- "norwegian",
- "porter",
- "portuguese",
- "russian",
- "spanish",
- "swedish",
- 0
-};
diff --git a/src/libstemmer/runtime/api.c b/src/libstemmer/runtime/api.c
deleted file mode 100644
index c57202144..000000000
--- a/src/libstemmer/runtime/api.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-#include <stdlib.h> /* for calloc, free */
-#include "header.h"
-
-extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size)
-{
- struct SN_env * z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
- if (z == NULL) return NULL;
- z->p = create_s();
- if (z->p == NULL) goto error;
- if (S_size)
- {
- int i;
- z->S = (symbol * *) calloc(S_size, sizeof(symbol *));
- if (z->S == NULL) goto error;
-
- for (i = 0; i < S_size; i++)
- {
- z->S[i] = create_s();
- if (z->S[i] == NULL) goto error;
- }
- z->S_size = S_size;
- }
-
- if (I_size)
- {
- z->I = (int *) calloc(I_size, sizeof(int));
- if (z->I == NULL) goto error;
- z->I_size = I_size;
- }
-
- if (B_size)
- {
- z->B = (symbol *) calloc(B_size, sizeof(symbol));
- if (z->B == NULL) goto error;
- z->B_size = B_size;
- }
-
- return z;
-error:
- SN_close_env(z);
- return NULL;
-}
-
-extern void SN_close_env(struct SN_env * z)
-{
- if (z == NULL) return;
- if (z->S_size)
- {
- int i;
- for (i = 0; i < z->S_size; i++)
- {
- lose_s(z->S[i]);
- }
- free(z->S);
- }
- if (z->I_size) free(z->I);
- if (z->B_size) free(z->B);
- if (z->p) lose_s(z->p);
- free(z);
-}
-
-extern int SN_set_current(struct SN_env * z, int size, const symbol * s)
-{
- int err = replace_s(z, 0, z->l, size, s, NULL);
- z->c = 0;
- return err;
-}
-
diff --git a/src/libstemmer/runtime/api.h b/src/libstemmer/runtime/api.h
deleted file mode 100644
index 3a377c696..000000000
--- a/src/libstemmer/runtime/api.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-typedef unsigned char symbol;
-
-/* Or replace 'char' above with 'short' for 16 bit characters.
-
- More precisely, replace 'char' with whatever type guarantees the
- character width you need. Note however that sizeof(symbol) should divide
- HEAD, defined in header.h as 2*sizeof(int), without remainder, otherwise
- there is an alignment problem. In the unlikely event of a problem here,
- consult Martin Porter.
-
-*/
-
-struct SN_env {
- symbol * p;
- int c; int a; int l; int lb; int bra; int ket;
- int S_size; int I_size; int B_size;
- symbol * * S;
- int * I;
- symbol * B;
-};
-
-extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size);
-extern void SN_close_env(struct SN_env * z);
-
-extern int SN_set_current(struct SN_env * z, int size, const symbol * s);
-
diff --git a/src/libstemmer/runtime/header.h b/src/libstemmer/runtime/header.h
deleted file mode 100644
index 4d46711ad..000000000
--- a/src/libstemmer/runtime/header.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-#include <limits.h>
-
-#include "api.h"
-
-#define MAXINT INT_MAX
-#define MININT INT_MIN
-
-#define HEAD 2*sizeof(int)
-
-#define SIZE(p) ((int *)(p))[-1]
-#define SET_SIZE(p, n) ((int *)(p))[-1] = n
-#define CAPACITY(p) ((int *)(p))[-2]
-
-struct among
-{ int s_size; /* number of chars in string */
- symbol * s; /* search string */
- int substring_i;/* index to longest matching substring */
- int result; /* result of the lookup */
- int (* function)(struct SN_env *);
-};
-
-extern symbol * create_s(void);
-extern void lose_s(symbol * p);
-
-extern int skip_utf8(const symbol * p, int c, int lb, int l, int n);
-
-extern int in_grouping_U(struct SN_env * z, unsigned char * s, int min, int max);
-extern int in_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max);
-extern int out_grouping_U(struct SN_env * z, unsigned char * s, int min, int max);
-extern int out_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max);
-
-extern int in_grouping(struct SN_env * z, unsigned char * s, int min, int max);
-extern int in_grouping_b(struct SN_env * z, unsigned char * s, int min, int max);
-extern int out_grouping(struct SN_env * z, unsigned char * s, int min, int max);
-extern int out_grouping_b(struct SN_env * z, unsigned char * s, int min, int max);
-
-extern int eq_s(struct SN_env * z, int s_size, symbol * s);
-extern int eq_s_b(struct SN_env * z, int s_size, symbol * s);
-extern int eq_v(struct SN_env * z, symbol * p);
-extern int eq_v_b(struct SN_env * z, symbol * p);
-
-extern int find_among(struct SN_env * z, struct among * v, int v_size);
-extern int find_among_b(struct SN_env * z, struct among * v, int v_size);
-
-extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s, int * adjustment);
-extern int slice_from_s(struct SN_env * z, int s_size, symbol * s);
-extern int slice_from_v(struct SN_env * z, symbol * p);
-extern int slice_del(struct SN_env * z);
-
-extern int insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s);
-extern int insert_v(struct SN_env * z, int bra, int ket, symbol * p);
-
-extern symbol * slice_to(struct SN_env * z, symbol * p);
-extern symbol * assign_to(struct SN_env * z, symbol * p);
-
-extern void debug(struct SN_env * z, int number, int line_count);
-
diff --git a/src/libstemmer/runtime/utilities.c b/src/libstemmer/runtime/utilities.c
deleted file mode 100644
index bdb09d64e..000000000
--- a/src/libstemmer/runtime/utilities.c
+++ /dev/null
@@ -1,459 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "header.h"
-
-#define unless(C) if(!(C))
-
-#define CREATE_SIZE 1
-
-extern symbol * create_s(void) {
- symbol * p;
- void * mem = malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol));
- if (mem == NULL) return NULL;
- p = (symbol *) (HEAD + (char *) mem);
- CAPACITY(p) = CREATE_SIZE;
- SET_SIZE(p, CREATE_SIZE);
- return p;
-}
-
-extern void lose_s(symbol * p) {
- if (p == NULL) return;
- free((char *) p - HEAD);
-}
-
-/*
- new_p = X_skip_utf8(p, c, lb, l, n); skips n characters forwards from p + c
- if n +ve, or n characters backwards from p +c - 1 if n -ve. new_p is the new
- position, or 0 on failure.
-
- -- used to implement hop and next in the utf8 case.
-*/
-
-extern int skip_utf8(const symbol * p, int c, int lb, int l, int n) {
- int b;
- if (n >= 0) {
- for (; n > 0; n--) {
- if (c >= l) return -1;
- b = p[c++];
- if (b >= 0xC0) { /* 1100 0000 */
- while (c < l) {
- b = p[c];
- if (b >= 0xC0 || b < 0x80) break;
- /* break unless b is 10------ */
- c++;
- }
- }
- }
- } else {
- for (; n < 0; n++) {
- if (c <= lb) return -1;
- b = p[--c];
- if (b >= 0x80) { /* 1000 0000 */
- while (c > lb) {
- b = p[c];
- if (b >= 0xC0) break; /* 1100 0000 */
- c--;
- }
- }
- }
- }
- return c;
-}
-
-/* Code for character groupings: utf8 cases */
-
-static int get_utf8(const symbol * p, int c, int l, int * slot) {
- int b0, b1;
- if (c >= l) return 0;
- b0 = p[c++];
- if (b0 < 0xC0 || c == l) { /* 1100 0000 */
- * slot = b0; return 1;
- }
- b1 = p[c++];
- if (b0 < 0xE0 || c == l) { /* 1110 0000 */
- * slot = (b0 & 0x1F) << 6 | (b1 & 0x3F); return 2;
- }
- * slot = (b0 & 0xF) << 12 | (b1 & 0x3F) << 6 | (*p & 0x3F); return 3;
-}
-
-static int get_b_utf8(const symbol * p, int c, int lb, int * slot) {
- int b0, b1;
- if (c <= lb) return 0;
- b0 = p[--c];
- if (b0 < 0x80 || c == lb) { /* 1000 0000 */
- * slot = b0; return 1;
- }
- b1 = p[--c];
- if (b1 >= 0xC0 || c == lb) { /* 1100 0000 */
- * slot = (b1 & 0x1F) << 6 | (b0 & 0x3F); return 2;
- }
- * slot = (*p & 0xF) << 12 | (b1 & 0x3F) << 6 | (b0 & 0x3F); return 3;
-}
-
-extern int in_grouping_U(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- int w = get_utf8(z->p, z->c, z->l, & ch);
- unless (w) return 0;
- if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c += w; return 1;
-}
-
-extern int in_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- int w = get_b_utf8(z->p, z->c, z->lb, & ch);
- unless (w) return 0;
- if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c -= w; return 1;
-}
-
-extern int out_grouping_U(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- int w = get_utf8(z->p, z->c, z->l, & ch);
- unless (w) return 0;
- unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c += w; return 1;
-}
-
-extern int out_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- int w = get_b_utf8(z->p, z->c, z->lb, & ch);
- unless (w) return 0;
- unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c -= w; return 1;
-}
-
-/* Code for character groupings: non-utf8 cases */
-
-extern int in_grouping(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- if (z->c >= z->l) return 0;
- ch = z->p[z->c];
- if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c++; return 1;
-}
-
-extern int in_grouping_b(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- if (z->c <= z->lb) return 0;
- ch = z->p[z->c - 1];
- if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c--; return 1;
-}
-
-extern int out_grouping(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- if (z->c >= z->l) return 0;
- ch = z->p[z->c];
- unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c++; return 1;
-}
-
-extern int out_grouping_b(struct SN_env * z, unsigned char * s, int min, int max) {
- int ch;
- if (z->c <= z->lb) return 0;
- ch = z->p[z->c - 1];
- unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
- z->c--; return 1;
-}
-
-extern int eq_s(struct SN_env * z, int s_size, symbol * s) {
- if (z->l - z->c < s_size || memcmp(z->p + z->c, s, s_size * sizeof(symbol)) != 0) return 0;
- z->c += s_size; return 1;
-}
-
-extern int eq_s_b(struct SN_env * z, int s_size, symbol * s) {
- if (z->c - z->lb < s_size || memcmp(z->p + z->c - s_size, s, s_size * sizeof(symbol)) != 0) return 0;
- z->c -= s_size; return 1;
-}
-
-extern int eq_v(struct SN_env * z, symbol * p) {
- return eq_s(z, SIZE(p), p);
-}
-
-extern int eq_v_b(struct SN_env * z, symbol * p) {
- return eq_s_b(z, SIZE(p), p);
-}
-
-extern int find_among(struct SN_env * z, struct among * v, int v_size) {
-
- int i = 0;
- int j = v_size;
-
- int c = z->c; int l = z->l;
- symbol * q = z->p + c;
-
- struct among * w;
-
- int common_i = 0;
- int common_j = 0;
-
- int first_key_inspected = 0;
-
- while(1) {
- int k = i + ((j - i) >> 1);
- int diff = 0;
- int common = common_i < common_j ? common_i : common_j; /* smaller */
- w = v + k;
- {
- int i; for (i = common; i < w->s_size; i++) {
- if (c + common == l) { diff = -1; break; }
- diff = q[common] - w->s[i];
- if (diff != 0) break;
- common++;
- }
- }
- if (diff < 0) { j = k; common_j = common; }
- else { i = k; common_i = common; }
- if (j - i <= 1) {
- if (i > 0) break; /* v->s has been inspected */
- if (j == i) break; /* only one item in v */
-
- /* - but now we need to go round once more to get
- v->s inspected. This looks messy, but is actually
- the optimal approach. */
-
- if (first_key_inspected) break;
- first_key_inspected = 1;
- }
- }
- while(1) {
- w = v + i;
- if (common_i >= w->s_size) {
- z->c = c + w->s_size;
- if (w->function == 0) return w->result;
- {
- int res = w->function(z);
- z->c = c + w->s_size;
- if (res) return w->result;
- }
- }
- i = w->substring_i;
- if (i < 0) return 0;
- }
-}
-
-/* find_among_b is for backwards processing. Same comments apply */
-
-extern int find_among_b(struct SN_env * z, struct among * v, int v_size) {
-
- int i = 0;
- int j = v_size;
-
- int c = z->c; int lb = z->lb;
- symbol * q = z->p + c - 1;
-
- struct among * w;
-
- int common_i = 0;
- int common_j = 0;
-
- int first_key_inspected = 0;
-
- while(1) {
- int k = i + ((j - i) >> 1);
- int diff = 0;
- int common = common_i < common_j ? common_i : common_j;
- w = v + k;
- {
- int i; for (i = w->s_size - 1 - common; i >= 0; i--) {
- if (c - common == lb) { diff = -1; break; }
- diff = q[- common] - w->s[i];
- if (diff != 0) break;
- common++;
- }
- }
- if (diff < 0) { j = k; common_j = common; }
- else { i = k; common_i = common; }
- if (j - i <= 1) {
- if (i > 0) break;
- if (j == i) break;
- if (first_key_inspected) break;
- first_key_inspected = 1;
- }
- }
- while(1) {
- w = v + i;
- if (common_i >= w->s_size) {
- z->c = c - w->s_size;
- if (w->function == 0) return w->result;
- {
- int res = w->function(z);
- z->c = c - w->s_size;
- if (res) return w->result;
- }
- }
- i = w->substring_i;
- if (i < 0) return 0;
- }
-}
-
-
-/* Increase the size of the buffer pointed to by p to at least n symbols.
- * If insufficient memory, returns NULL and frees the old buffer.
- */
-static symbol * increase_size(symbol * p, int n) {
- symbol * q;
- int new_size = n + 20;
- void * mem = realloc((char *) p - HEAD,
- HEAD + (new_size + 1) * sizeof(symbol));
- if (mem == NULL) {
- lose_s(p);
- return NULL;
- }
- q = (symbol *) (HEAD + (char *)mem);
- CAPACITY(q) = new_size;
- return q;
-}
-
-/* to replace symbols between c_bra and c_ket in z->p by the
- s_size symbols at s.
- Returns 0 on success, -1 on error.
- Also, frees z->p (and sets it to NULL) on error.
-*/
-extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s, int * adjptr)
-{
- int adjustment;
- int len;
- if (z->p == NULL) {
- z->p = create_s();
- if (z->p == NULL) return -1;
- }
- adjustment = s_size - (c_ket - c_bra);
- len = SIZE(z->p);
- if (adjustment != 0) {
- if (adjustment + len > CAPACITY(z->p)) {
- z->p = increase_size(z->p, adjustment + len);
- if (z->p == NULL) return -1;
- }
- memmove(z->p + c_ket + adjustment,
- z->p + c_ket,
- (len - c_ket) * sizeof(symbol));
- SET_SIZE(z->p, adjustment + len);
- z->l += adjustment;
- if (z->c >= c_ket)
- z->c += adjustment;
- else
- if (z->c > c_bra)
- z->c = c_bra;
- }
- unless (s_size == 0) memmove(z->p + c_bra, s, s_size * sizeof(symbol));
- if (adjptr != NULL)
- *adjptr = adjustment;
- return 0;
-}
-
-static int slice_check(struct SN_env * z) {
-
- if (z->bra < 0 ||
- z->bra > z->ket ||
- z->ket > z->l ||
- z->p == NULL ||
- z->l > SIZE(z->p)) /* this line could be removed */
- {
-#if 0
- fprintf(stderr, "faulty slice operation:\n");
- debug(z, -1, 0);
-#endif
- return -1;
- }
- return 0;
-}
-
-extern int slice_from_s(struct SN_env * z, int s_size, symbol * s) {
- if (slice_check(z)) return -1;
- return replace_s(z, z->bra, z->ket, s_size, s, NULL);
-}
-
-extern int slice_from_v(struct SN_env * z, symbol * p) {
- return slice_from_s(z, SIZE(p), p);
-}
-
-extern int slice_del(struct SN_env * z) {
- return slice_from_s(z, 0, 0);
-}
-
-extern int insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s) {
- int adjustment;
- if (replace_s(z, bra, ket, s_size, s, &adjustment))
- return -1;
- if (bra <= z->bra) z->bra += adjustment;
- if (bra <= z->ket) z->ket += adjustment;
- return 0;
-}
-
-extern int insert_v(struct SN_env * z, int bra, int ket, symbol * p) {
- int adjustment;
- if (replace_s(z, bra, ket, SIZE(p), p, &adjustment))
- return -1;
- if (bra <= z->bra) z->bra += adjustment;
- if (bra <= z->ket) z->ket += adjustment;
- return 0;
-}
-
-extern symbol * slice_to(struct SN_env * z, symbol * p) {
- if (slice_check(z)) {
- lose_s(p);
- return NULL;
- }
- {
- int len = z->ket - z->bra;
- if (CAPACITY(p) < len) {
- p = increase_size(p, len);
- if (p == NULL)
- return NULL;
- }
- memmove(p, z->p + z->bra, len * sizeof(symbol));
- SET_SIZE(p, len);
- }
- return p;
-}
-
-extern symbol * assign_to(struct SN_env * z, symbol * p) {
- int len = z->l;
- if (CAPACITY(p) < len) {
- p = increase_size(p, len);
- if (p == NULL)
- return NULL;
- }
- memmove(p, z->p, len * sizeof(symbol));
- SET_SIZE(p, len);
- return p;
-}
-
-#if 0
-extern void debug(struct SN_env * z, int number, int line_count) {
- int i;
- int limit = SIZE(z->p);
- /*if (number >= 0) printf("%3d (line %4d): '", number, line_count);*/
- if (number >= 0) printf("%3d (line %4d): [%d]'", number, line_count,limit);
- for (i = 0; i <= limit; i++) {
- if (z->lb == i) printf("{");
- if (z->bra == i) printf("[");
- if (z->c == i) printf("|");
- if (z->ket == i) printf("]");
- if (z->l == i) printf("}");
- if (i < limit)
- { int ch = z->p[i];
- if (ch == 0) ch = '#';
- printf("%c", ch);
- }
- }
- printf("'\n");
-}
-#endif
diff --git a/src/libstemmer/src_c/stem_UTF_8_danish.c b/src/libstemmer/src_c/stem_UTF_8_danish.c
deleted file mode 100644
index 6c6ed5e7b..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_danish.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int danish_UTF_8_stem(struct SN_env * z);
-static int r_undouble(struct SN_env * z);
-static int r_other_suffix(struct SN_env * z);
-static int r_consonant_pair(struct SN_env * z);
-static int r_main_suffix(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * danish_UTF_8_create_env(void);
-extern void danish_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[3] = { 'h', 'e', 'd' };
-static symbol s_0_1[5] = { 'e', 't', 'h', 'e', 'd' };
-static symbol s_0_2[4] = { 'e', 'r', 'e', 'd' };
-static symbol s_0_3[1] = { 'e' };
-static symbol s_0_4[5] = { 'e', 'r', 'e', 'd', 'e' };
-static symbol s_0_5[4] = { 'e', 'n', 'd', 'e' };
-static symbol s_0_6[6] = { 'e', 'r', 'e', 'n', 'd', 'e' };
-static symbol s_0_7[3] = { 'e', 'n', 'e' };
-static symbol s_0_8[4] = { 'e', 'r', 'n', 'e' };
-static symbol s_0_9[3] = { 'e', 'r', 'e' };
-static symbol s_0_10[2] = { 'e', 'n' };
-static symbol s_0_11[5] = { 'h', 'e', 'd', 'e', 'n' };
-static symbol s_0_12[4] = { 'e', 'r', 'e', 'n' };
-static symbol s_0_13[2] = { 'e', 'r' };
-static symbol s_0_14[5] = { 'h', 'e', 'd', 'e', 'r' };
-static symbol s_0_15[4] = { 'e', 'r', 'e', 'r' };
-static symbol s_0_16[1] = { 's' };
-static symbol s_0_17[4] = { 'h', 'e', 'd', 's' };
-static symbol s_0_18[2] = { 'e', 's' };
-static symbol s_0_19[5] = { 'e', 'n', 'd', 'e', 's' };
-static symbol s_0_20[7] = { 'e', 'r', 'e', 'n', 'd', 'e', 's' };
-static symbol s_0_21[4] = { 'e', 'n', 'e', 's' };
-static symbol s_0_22[5] = { 'e', 'r', 'n', 'e', 's' };
-static symbol s_0_23[4] = { 'e', 'r', 'e', 's' };
-static symbol s_0_24[3] = { 'e', 'n', 's' };
-static symbol s_0_25[6] = { 'h', 'e', 'd', 'e', 'n', 's' };
-static symbol s_0_26[5] = { 'e', 'r', 'e', 'n', 's' };
-static symbol s_0_27[3] = { 'e', 'r', 's' };
-static symbol s_0_28[3] = { 'e', 't', 's' };
-static symbol s_0_29[5] = { 'e', 'r', 'e', 't', 's' };
-static symbol s_0_30[2] = { 'e', 't' };
-static symbol s_0_31[4] = { 'e', 'r', 'e', 't' };
-
-static struct among a_0[32] =
-{
-/* 0 */ { 3, s_0_0, -1, 1, 0},
-/* 1 */ { 5, s_0_1, 0, 1, 0},
-/* 2 */ { 4, s_0_2, -1, 1, 0},
-/* 3 */ { 1, s_0_3, -1, 1, 0},
-/* 4 */ { 5, s_0_4, 3, 1, 0},
-/* 5 */ { 4, s_0_5, 3, 1, 0},
-/* 6 */ { 6, s_0_6, 5, 1, 0},
-/* 7 */ { 3, s_0_7, 3, 1, 0},
-/* 8 */ { 4, s_0_8, 3, 1, 0},
-/* 9 */ { 3, s_0_9, 3, 1, 0},
-/* 10 */ { 2, s_0_10, -1, 1, 0},
-/* 11 */ { 5, s_0_11, 10, 1, 0},
-/* 12 */ { 4, s_0_12, 10, 1, 0},
-/* 13 */ { 2, s_0_13, -1, 1, 0},
-/* 14 */ { 5, s_0_14, 13, 1, 0},
-/* 15 */ { 4, s_0_15, 13, 1, 0},
-/* 16 */ { 1, s_0_16, -1, 2, 0},
-/* 17 */ { 4, s_0_17, 16, 1, 0},
-/* 18 */ { 2, s_0_18, 16, 1, 0},
-/* 19 */ { 5, s_0_19, 18, 1, 0},
-/* 20 */ { 7, s_0_20, 19, 1, 0},
-/* 21 */ { 4, s_0_21, 18, 1, 0},
-/* 22 */ { 5, s_0_22, 18, 1, 0},
-/* 23 */ { 4, s_0_23, 18, 1, 0},
-/* 24 */ { 3, s_0_24, 16, 1, 0},
-/* 25 */ { 6, s_0_25, 24, 1, 0},
-/* 26 */ { 5, s_0_26, 24, 1, 0},
-/* 27 */ { 3, s_0_27, 16, 1, 0},
-/* 28 */ { 3, s_0_28, 16, 1, 0},
-/* 29 */ { 5, s_0_29, 28, 1, 0},
-/* 30 */ { 2, s_0_30, -1, 1, 0},
-/* 31 */ { 4, s_0_31, 30, 1, 0}
-};
-
-static symbol s_1_0[2] = { 'g', 'd' };
-static symbol s_1_1[2] = { 'd', 't' };
-static symbol s_1_2[2] = { 'g', 't' };
-static symbol s_1_3[2] = { 'k', 't' };
-
-static struct among a_1[4] =
-{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0},
-/* 2 */ { 2, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0}
-};
-
-static symbol s_2_0[2] = { 'i', 'g' };
-static symbol s_2_1[3] = { 'l', 'i', 'g' };
-static symbol s_2_2[4] = { 'e', 'l', 'i', 'g' };
-static symbol s_2_3[3] = { 'e', 'l', 's' };
-static symbol s_2_4[5] = { 'l', 0xC3, 0xB8, 's', 't' };
-
-static struct among a_2[5] =
-{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 3, s_2_1, 0, 1, 0},
-/* 2 */ { 4, s_2_2, 1, 1, 0},
-/* 3 */ { 3, s_2_3, -1, 1, 0},
-/* 4 */ { 5, s_2_4, -1, 2, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
-
-static unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 };
-
-static symbol s_0[] = { 's', 't' };
-static symbol s_1[] = { 'i', 'g' };
-static symbol s_2[] = { 'l', 0xC3, 0xB8, 's' };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- { int c_test = z->c; /* test, line 33 */
- { int c = skip_utf8(z->p, z->c, 0, z->l, + 3);
- if (c < 0) return 0;
- z->c = c; /* hop, line 33 */
- }
- z->I[1] = z->c; /* setmark x, line 33 */
- z->c = c_test;
- }
- while(1) { /* goto, line 34 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 248))) goto lab0;
- z->c = c;
- break;
- lab0:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* goto, line 34 */
- }
- }
- while(1) { /* gopast, line 34 */
- if (!(out_grouping_U(z, g_v, 97, 248))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 34 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 34 */
- /* try, line 35 */
- if (!(z->I[0] < z->I[1])) goto lab2;
- z->I[0] = z->I[1];
-lab2:
- return 1;
-}
-
-static int r_main_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 41 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 41 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 41 */
- among_var = find_among_b(z, a_0, 32); /* substring, line 41 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 41 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 48 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- if (!(in_grouping_b_U(z, g_s_ending, 97, 229))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 50 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_consonant_pair(struct SN_env * z) {
- { int m_test = z->l - z->c; /* test, line 55 */
- { int m3; /* setlimit, line 56 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 56 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 56 */
- if (!(find_among_b(z, a_1, 4))) { z->lb = m3; return 0; } /* substring, line 56 */
- z->bra = z->c; /* ], line 56 */
- z->lb = m3;
- }
- z->c = z->l - m_test;
- }
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 62 */
- }
- z->bra = z->c; /* ], line 62 */
- { int ret;
- ret = slice_del(z); /* delete, line 62 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_other_suffix(struct SN_env * z) {
- int among_var;
- { int m = z->l - z->c; (void) m; /* do, line 66 */
- z->ket = z->c; /* [, line 66 */
- if (!(eq_s_b(z, 2, s_0))) goto lab0;
- z->bra = z->c; /* ], line 66 */
- if (!(eq_s_b(z, 2, s_1))) goto lab0;
- { int ret;
- ret = slice_del(z); /* delete, line 66 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = z->l - m;
- }
- { int m3; /* setlimit, line 67 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 67 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 67 */
- among_var = find_among_b(z, a_2, 5); /* substring, line 67 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 67 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 70 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* do, line 70 */
- { int ret = r_consonant_pair(z);
- if (ret == 0) goto lab1; /* call consonant_pair, line 70 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 4, s_2); /* <-, line 72 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_undouble(struct SN_env * z) {
- { int m3; /* setlimit, line 76 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 76 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 76 */
- if (!(out_grouping_b_U(z, g_v, 97, 248))) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 76 */
- z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 76 */
- if (z->S[0] == 0) return -1; /* -> ch, line 76 */
- z->lb = m3;
- }
- if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 77 */
- { int ret;
- ret = slice_del(z); /* delete, line 78 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-extern int danish_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 84 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 84 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 85 */
-
- { int m = z->l - z->c; (void) m; /* do, line 86 */
- { int ret = r_main_suffix(z);
- if (ret == 0) goto lab1; /* call main_suffix, line 86 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 87 */
- { int ret = r_consonant_pair(z);
- if (ret == 0) goto lab2; /* call consonant_pair, line 87 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 88 */
- { int ret = r_other_suffix(z);
- if (ret == 0) goto lab3; /* call other_suffix, line 88 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 89 */
- { int ret = r_undouble(z);
- if (ret == 0) goto lab4; /* call undouble, line 89 */
- if (ret < 0) return ret;
- }
- lab4:
- z->c = z->l - m;
- }
- z->c = z->lb;
- return 1;
-}
-
-extern struct SN_env * danish_UTF_8_create_env(void) { return SN_create_env(1, 2, 0); }
-
-extern void danish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_danish.h b/src/libstemmer/src_c/stem_UTF_8_danish.h
deleted file mode 100644
index c389869a1..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_danish.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * danish_UTF_8_create_env(void);
-extern void danish_UTF_8_close_env(struct SN_env * z);
-
-extern int danish_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_dutch.c b/src/libstemmer/src_c/stem_UTF_8_dutch.c
deleted file mode 100644
index 8df952968..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_dutch.c
+++ /dev/null
@@ -1,666 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int dutch_UTF_8_stem(struct SN_env * z);
-static int r_standard_suffix(struct SN_env * z);
-static int r_undouble(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_en_ending(struct SN_env * z);
-static int r_e_ending(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * dutch_UTF_8_create_env(void);
-extern void dutch_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_1[2] = { 0xC3, 0xA1 };
-static symbol s_0_2[2] = { 0xC3, 0xA4 };
-static symbol s_0_3[2] = { 0xC3, 0xA9 };
-static symbol s_0_4[2] = { 0xC3, 0xAB };
-static symbol s_0_5[2] = { 0xC3, 0xAD };
-static symbol s_0_6[2] = { 0xC3, 0xAF };
-static symbol s_0_7[2] = { 0xC3, 0xB3 };
-static symbol s_0_8[2] = { 0xC3, 0xB6 };
-static symbol s_0_9[2] = { 0xC3, 0xBA };
-static symbol s_0_10[2] = { 0xC3, 0xBC };
-
-static struct among a_0[11] =
-{
-/* 0 */ { 0, 0, -1, 6, 0},
-/* 1 */ { 2, s_0_1, 0, 1, 0},
-/* 2 */ { 2, s_0_2, 0, 1, 0},
-/* 3 */ { 2, s_0_3, 0, 2, 0},
-/* 4 */ { 2, s_0_4, 0, 2, 0},
-/* 5 */ { 2, s_0_5, 0, 3, 0},
-/* 6 */ { 2, s_0_6, 0, 3, 0},
-/* 7 */ { 2, s_0_7, 0, 4, 0},
-/* 8 */ { 2, s_0_8, 0, 4, 0},
-/* 9 */ { 2, s_0_9, 0, 5, 0},
-/* 10 */ { 2, s_0_10, 0, 5, 0}
-};
-
-static symbol s_1_1[1] = { 'I' };
-static symbol s_1_2[1] = { 'Y' };
-
-static struct among a_1[3] =
-{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 1, s_1_1, 0, 2, 0},
-/* 2 */ { 1, s_1_2, 0, 1, 0}
-};
-
-static symbol s_2_0[2] = { 'd', 'd' };
-static symbol s_2_1[2] = { 'k', 'k' };
-static symbol s_2_2[2] = { 't', 't' };
-
-static struct among a_2[3] =
-{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 2, s_2_2, -1, -1, 0}
-};
-
-static symbol s_3_0[3] = { 'e', 'n', 'e' };
-static symbol s_3_1[2] = { 's', 'e' };
-static symbol s_3_2[2] = { 'e', 'n' };
-static symbol s_3_3[5] = { 'h', 'e', 'd', 'e', 'n' };
-static symbol s_3_4[1] = { 's' };
-
-static struct among a_3[5] =
-{
-/* 0 */ { 3, s_3_0, -1, 2, 0},
-/* 1 */ { 2, s_3_1, -1, 3, 0},
-/* 2 */ { 2, s_3_2, -1, 2, 0},
-/* 3 */ { 5, s_3_3, 2, 1, 0},
-/* 4 */ { 1, s_3_4, -1, 3, 0}
-};
-
-static symbol s_4_0[3] = { 'e', 'n', 'd' };
-static symbol s_4_1[2] = { 'i', 'g' };
-static symbol s_4_2[3] = { 'i', 'n', 'g' };
-static symbol s_4_3[4] = { 'l', 'i', 'j', 'k' };
-static symbol s_4_4[4] = { 'b', 'a', 'a', 'r' };
-static symbol s_4_5[3] = { 'b', 'a', 'r' };
-
-static struct among a_4[6] =
-{
-/* 0 */ { 3, s_4_0, -1, 1, 0},
-/* 1 */ { 2, s_4_1, -1, 2, 0},
-/* 2 */ { 3, s_4_2, -1, 1, 0},
-/* 3 */ { 4, s_4_3, -1, 3, 0},
-/* 4 */ { 4, s_4_4, -1, 4, 0},
-/* 5 */ { 3, s_4_5, -1, 5, 0}
-};
-
-static symbol s_5_0[2] = { 'a', 'a' };
-static symbol s_5_1[2] = { 'e', 'e' };
-static symbol s_5_2[2] = { 'o', 'o' };
-static symbol s_5_3[2] = { 'u', 'u' };
-
-static struct among a_5[4] =
-{
-/* 0 */ { 2, s_5_0, -1, -1, 0},
-/* 1 */ { 2, s_5_1, -1, -1, 0},
-/* 2 */ { 2, s_5_2, -1, -1, 0},
-/* 3 */ { 2, s_5_3, -1, -1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
-
-static unsigned char g_v_I[] = { 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
-
-static unsigned char g_v_j[] = { 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
-
-static symbol s_0[] = { 'a' };
-static symbol s_1[] = { 'e' };
-static symbol s_2[] = { 'i' };
-static symbol s_3[] = { 'o' };
-static symbol s_4[] = { 'u' };
-static symbol s_5[] = { 'y' };
-static symbol s_6[] = { 'Y' };
-static symbol s_7[] = { 'i' };
-static symbol s_8[] = { 'I' };
-static symbol s_9[] = { 'y' };
-static symbol s_10[] = { 'Y' };
-static symbol s_11[] = { 'y' };
-static symbol s_12[] = { 'i' };
-static symbol s_13[] = { 'e' };
-static symbol s_14[] = { 'g', 'e', 'm' };
-static symbol s_15[] = { 'h', 'e', 'i', 'd' };
-static symbol s_16[] = { 'h', 'e', 'i', 'd' };
-static symbol s_17[] = { 'c' };
-static symbol s_18[] = { 'e', 'n' };
-static symbol s_19[] = { 'i', 'g' };
-static symbol s_20[] = { 'e' };
-static symbol s_21[] = { 'e' };
-
-static int r_prelude(struct SN_env * z) {
- int among_var;
- { int c_test = z->c; /* test, line 42 */
- while(1) { /* repeat, line 42 */
- int c = z->c;
- z->bra = z->c; /* [, line 43 */
- among_var = find_among(z, a_0, 11); /* substring, line 43 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 43 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 1, s_0); /* <-, line 45 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_1); /* <-, line 47 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 1, s_2); /* <-, line 49 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 1, s_3); /* <-, line 51 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 1, s_4); /* <-, line 53 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 54 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- z->c = c_test;
- }
- { int c = z->c; /* try, line 57 */
- z->bra = z->c; /* [, line 57 */
- if (!(eq_s(z, 1, s_5))) { z->c = c; goto lab1; }
- z->ket = z->c; /* ], line 57 */
- { int ret;
- ret = slice_from_s(z, 1, s_6); /* <-, line 57 */
- if (ret < 0) return ret;
- }
- lab1:
- ;
- }
- while(1) { /* repeat, line 58 */
- int c = z->c;
- while(1) { /* goto, line 58 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 232))) goto lab3;
- z->bra = z->c; /* [, line 59 */
- { int c = z->c; /* or, line 59 */
- if (!(eq_s(z, 1, s_7))) goto lab5;
- z->ket = z->c; /* ], line 59 */
- if (!(in_grouping_U(z, g_v, 97, 232))) goto lab5;
- { int ret;
- ret = slice_from_s(z, 1, s_8); /* <-, line 59 */
- if (ret < 0) return ret;
- }
- goto lab4;
- lab5:
- z->c = c;
- if (!(eq_s(z, 1, s_9))) goto lab3;
- z->ket = z->c; /* ], line 60 */
- { int ret;
- ret = slice_from_s(z, 1, s_10); /* <-, line 60 */
- if (ret < 0) return ret;
- }
- }
- lab4:
- z->c = c;
- break;
- lab3:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab2;
- z->c = c; /* goto, line 58 */
- }
- }
- continue;
- lab2:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- while(1) { /* gopast, line 69 */
- if (!(in_grouping_U(z, g_v, 97, 232))) goto lab0;
- break;
- lab0:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 69 */
- }
- }
- while(1) { /* gopast, line 69 */
- if (!(out_grouping_U(z, g_v, 97, 232))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 69 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 69 */
- /* try, line 70 */
- if (!(z->I[0] < 3)) goto lab2;
- z->I[0] = 3;
-lab2:
- while(1) { /* gopast, line 71 */
- if (!(in_grouping_U(z, g_v, 97, 232))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 71 */
- }
- }
- while(1) { /* gopast, line 71 */
- if (!(out_grouping_U(z, g_v, 97, 232))) goto lab4;
- break;
- lab4:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 71 */
- }
- }
- z->I[1] = z->c; /* setmark p2, line 71 */
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 75 */
- int c = z->c;
- z->bra = z->c; /* [, line 77 */
- among_var = find_among(z, a_1, 3); /* substring, line 77 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 77 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 1, s_11); /* <-, line 78 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_12); /* <-, line 79 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 80 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_undouble(struct SN_env * z) {
- { int m_test = z->l - z->c; /* test, line 91 */
- if (!(find_among_b(z, a_2, 3))) return 0; /* among, line 91 */
- z->c = z->l - m_test;
- }
- z->ket = z->c; /* [, line 91 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 91 */
- }
- z->bra = z->c; /* ], line 91 */
- { int ret;
- ret = slice_del(z); /* delete, line 91 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_e_ending(struct SN_env * z) {
- z->B[0] = 0; /* unset e_found, line 95 */
- z->ket = z->c; /* [, line 96 */
- if (!(eq_s_b(z, 1, s_13))) return 0;
- z->bra = z->c; /* ], line 96 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 96 */
- if (ret < 0) return ret;
- }
- { int m_test = z->l - z->c; /* test, line 96 */
- if (!(out_grouping_b_U(z, g_v, 97, 232))) return 0;
- z->c = z->l - m_test;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 96 */
- if (ret < 0) return ret;
- }
- z->B[0] = 1; /* set e_found, line 97 */
- { int ret = r_undouble(z);
- if (ret == 0) return 0; /* call undouble, line 98 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_en_ending(struct SN_env * z) {
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 102 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* and, line 102 */
- if (!(out_grouping_b_U(z, g_v, 97, 232))) return 0;
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* not, line 102 */
- if (!(eq_s_b(z, 3, s_14))) goto lab0;
- return 0;
- lab0:
- z->c = z->l - m;
- }
- }
- { int ret;
- ret = slice_del(z); /* delete, line 102 */
- if (ret < 0) return ret;
- }
- { int ret = r_undouble(z);
- if (ret == 0) return 0; /* call undouble, line 103 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_standard_suffix(struct SN_env * z) {
- int among_var;
- { int m = z->l - z->c; (void) m; /* do, line 107 */
- z->ket = z->c; /* [, line 108 */
- among_var = find_among_b(z, a_3, 5); /* substring, line 108 */
- if (!(among_var)) goto lab0;
- z->bra = z->c; /* ], line 108 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret = r_R1(z);
- if (ret == 0) goto lab0; /* call R1, line 110 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 4, s_15); /* <-, line 110 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_en_ending(z);
- if (ret == 0) goto lab0; /* call en_ending, line 113 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = r_R1(z);
- if (ret == 0) goto lab0; /* call R1, line 116 */
- if (ret < 0) return ret;
- }
- if (!(out_grouping_b_U(z, g_v_j, 97, 232))) goto lab0;
- { int ret;
- ret = slice_del(z); /* delete, line 116 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab0:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 120 */
- { int ret = r_e_ending(z);
- if (ret == 0) goto lab1; /* call e_ending, line 120 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 122 */
- z->ket = z->c; /* [, line 122 */
- if (!(eq_s_b(z, 4, s_16))) goto lab2;
- z->bra = z->c; /* ], line 122 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab2; /* call R2, line 122 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* not, line 122 */
- if (!(eq_s_b(z, 1, s_17))) goto lab3;
- goto lab2;
- lab3:
- z->c = z->l - m;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 122 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 123 */
- if (!(eq_s_b(z, 2, s_18))) goto lab2;
- z->bra = z->c; /* ], line 123 */
- { int ret = r_en_ending(z);
- if (ret == 0) goto lab2; /* call en_ending, line 123 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 126 */
- z->ket = z->c; /* [, line 127 */
- among_var = find_among_b(z, a_4, 6); /* substring, line 127 */
- if (!(among_var)) goto lab4;
- z->bra = z->c; /* ], line 127 */
- switch(among_var) {
- case 0: goto lab4;
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) goto lab4; /* call R2, line 129 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 129 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* or, line 130 */
- z->ket = z->c; /* [, line 130 */
- if (!(eq_s_b(z, 2, s_19))) goto lab6;
- z->bra = z->c; /* ], line 130 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab6; /* call R2, line 130 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* not, line 130 */
- if (!(eq_s_b(z, 1, s_20))) goto lab7;
- goto lab6;
- lab7:
- z->c = z->l - m;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 130 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab6:
- z->c = z->l - m;
- { int ret = r_undouble(z);
- if (ret == 0) goto lab4; /* call undouble, line 130 */
- if (ret < 0) return ret;
- }
- }
- lab5:
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) goto lab4; /* call R2, line 133 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* not, line 133 */
- if (!(eq_s_b(z, 1, s_21))) goto lab8;
- goto lab4;
- lab8:
- z->c = z->l - m;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 133 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) goto lab4; /* call R2, line 136 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 136 */
- if (ret < 0) return ret;
- }
- { int ret = r_e_ending(z);
- if (ret == 0) goto lab4; /* call e_ending, line 136 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = r_R2(z);
- if (ret == 0) goto lab4; /* call R2, line 139 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 139 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = r_R2(z);
- if (ret == 0) goto lab4; /* call R2, line 142 */
- if (ret < 0) return ret;
- }
- if (!(z->B[0])) goto lab4; /* Boolean test e_found, line 142 */
- { int ret;
- ret = slice_del(z); /* delete, line 142 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab4:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 146 */
- if (!(out_grouping_b_U(z, g_v_I, 73, 232))) goto lab9;
- { int m_test = z->l - z->c; /* test, line 148 */
- if (!(find_among_b(z, a_5, 4))) goto lab9; /* among, line 149 */
- if (!(out_grouping_b_U(z, g_v, 97, 232))) goto lab9;
- z->c = z->l - m_test;
- }
- z->ket = z->c; /* [, line 152 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) goto lab9;
- z->c = c; /* next, line 152 */
- }
- z->bra = z->c; /* ], line 152 */
- { int ret;
- ret = slice_del(z); /* delete, line 152 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = z->l - m;
- }
- return 1;
-}
-
-extern int dutch_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 159 */
- { int ret = r_prelude(z);
- if (ret == 0) goto lab0; /* call prelude, line 159 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 160 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab1; /* call mark_regions, line 160 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 161 */
-
- { int m = z->l - z->c; (void) m; /* do, line 162 */
- { int ret = r_standard_suffix(z);
- if (ret == 0) goto lab2; /* call standard_suffix, line 162 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 163 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab3; /* call postlude, line 163 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * dutch_UTF_8_create_env(void) { return SN_create_env(0, 2, 1); }
-
-extern void dutch_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_dutch.h b/src/libstemmer/src_c/stem_UTF_8_dutch.h
deleted file mode 100644
index 81e915f09..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_dutch.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * dutch_UTF_8_create_env(void);
-extern void dutch_UTF_8_close_env(struct SN_env * z);
-
-extern int dutch_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_english.c b/src/libstemmer/src_c/stem_UTF_8_english.c
deleted file mode 100644
index 723648fb1..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_english.c
+++ /dev/null
@@ -1,1189 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int english_UTF_8_stem(struct SN_env * z);
-static int r_exception2(struct SN_env * z);
-static int r_exception1(struct SN_env * z);
-static int r_Step_5(struct SN_env * z);
-static int r_Step_4(struct SN_env * z);
-static int r_Step_3(struct SN_env * z);
-static int r_Step_2(struct SN_env * z);
-static int r_Step_1c(struct SN_env * z);
-static int r_Step_1b(struct SN_env * z);
-static int r_Step_1a(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_shortv(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * english_UTF_8_create_env(void);
-extern void english_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[6] = { 'c', 'o', 'm', 'm', 'u', 'n' };
-static symbol s_0_1[5] = { 'g', 'e', 'n', 'e', 'r' };
-
-static struct among a_0[2] =
-{
-/* 0 */ { 6, s_0_0, -1, -1, 0},
-/* 1 */ { 5, s_0_1, -1, -1, 0}
-};
-
-static symbol s_1_0[1] = { '\'' };
-static symbol s_1_1[3] = { '\'', 's', '\'' };
-static symbol s_1_2[2] = { '\'', 's' };
-
-static struct among a_1[3] =
-{
-/* 0 */ { 1, s_1_0, -1, 1, 0},
-/* 1 */ { 3, s_1_1, 0, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 1, 0}
-};
-
-static symbol s_2_0[3] = { 'i', 'e', 'd' };
-static symbol s_2_1[1] = { 's' };
-static symbol s_2_2[3] = { 'i', 'e', 's' };
-static symbol s_2_3[4] = { 's', 's', 'e', 's' };
-static symbol s_2_4[2] = { 's', 's' };
-static symbol s_2_5[2] = { 'u', 's' };
-
-static struct among a_2[6] =
-{
-/* 0 */ { 3, s_2_0, -1, 2, 0},
-/* 1 */ { 1, s_2_1, -1, 3, 0},
-/* 2 */ { 3, s_2_2, 1, 2, 0},
-/* 3 */ { 4, s_2_3, 1, 1, 0},
-/* 4 */ { 2, s_2_4, 1, -1, 0},
-/* 5 */ { 2, s_2_5, 1, -1, 0}
-};
-
-static symbol s_3_1[2] = { 'b', 'b' };
-static symbol s_3_2[2] = { 'd', 'd' };
-static symbol s_3_3[2] = { 'f', 'f' };
-static symbol s_3_4[2] = { 'g', 'g' };
-static symbol s_3_5[2] = { 'b', 'l' };
-static symbol s_3_6[2] = { 'm', 'm' };
-static symbol s_3_7[2] = { 'n', 'n' };
-static symbol s_3_8[2] = { 'p', 'p' };
-static symbol s_3_9[2] = { 'r', 'r' };
-static symbol s_3_10[2] = { 'a', 't' };
-static symbol s_3_11[2] = { 't', 't' };
-static symbol s_3_12[2] = { 'i', 'z' };
-
-static struct among a_3[13] =
-{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_3_1, 0, 2, 0},
-/* 2 */ { 2, s_3_2, 0, 2, 0},
-/* 3 */ { 2, s_3_3, 0, 2, 0},
-/* 4 */ { 2, s_3_4, 0, 2, 0},
-/* 5 */ { 2, s_3_5, 0, 1, 0},
-/* 6 */ { 2, s_3_6, 0, 2, 0},
-/* 7 */ { 2, s_3_7, 0, 2, 0},
-/* 8 */ { 2, s_3_8, 0, 2, 0},
-/* 9 */ { 2, s_3_9, 0, 2, 0},
-/* 10 */ { 2, s_3_10, 0, 1, 0},
-/* 11 */ { 2, s_3_11, 0, 2, 0},
-/* 12 */ { 2, s_3_12, 0, 1, 0}
-};
-
-static symbol s_4_0[2] = { 'e', 'd' };
-static symbol s_4_1[3] = { 'e', 'e', 'd' };
-static symbol s_4_2[3] = { 'i', 'n', 'g' };
-static symbol s_4_3[4] = { 'e', 'd', 'l', 'y' };
-static symbol s_4_4[5] = { 'e', 'e', 'd', 'l', 'y' };
-static symbol s_4_5[5] = { 'i', 'n', 'g', 'l', 'y' };
-
-static struct among a_4[6] =
-{
-/* 0 */ { 2, s_4_0, -1, 2, 0},
-/* 1 */ { 3, s_4_1, 0, 1, 0},
-/* 2 */ { 3, s_4_2, -1, 2, 0},
-/* 3 */ { 4, s_4_3, -1, 2, 0},
-/* 4 */ { 5, s_4_4, 3, 1, 0},
-/* 5 */ { 5, s_4_5, -1, 2, 0}
-};
-
-static symbol s_5_0[4] = { 'a', 'n', 'c', 'i' };
-static symbol s_5_1[4] = { 'e', 'n', 'c', 'i' };
-static symbol s_5_2[3] = { 'o', 'g', 'i' };
-static symbol s_5_3[2] = { 'l', 'i' };
-static symbol s_5_4[3] = { 'b', 'l', 'i' };
-static symbol s_5_5[4] = { 'a', 'b', 'l', 'i' };
-static symbol s_5_6[4] = { 'a', 'l', 'l', 'i' };
-static symbol s_5_7[5] = { 'f', 'u', 'l', 'l', 'i' };
-static symbol s_5_8[6] = { 'l', 'e', 's', 's', 'l', 'i' };
-static symbol s_5_9[5] = { 'o', 'u', 's', 'l', 'i' };
-static symbol s_5_10[5] = { 'e', 'n', 't', 'l', 'i' };
-static symbol s_5_11[5] = { 'a', 'l', 'i', 't', 'i' };
-static symbol s_5_12[6] = { 'b', 'i', 'l', 'i', 't', 'i' };
-static symbol s_5_13[5] = { 'i', 'v', 'i', 't', 'i' };
-static symbol s_5_14[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_5_15[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_5_16[5] = { 'a', 'l', 'i', 's', 'm' };
-static symbol s_5_17[5] = { 'a', 't', 'i', 'o', 'n' };
-static symbol s_5_18[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' };
-static symbol s_5_19[4] = { 'i', 'z', 'e', 'r' };
-static symbol s_5_20[4] = { 'a', 't', 'o', 'r' };
-static symbol s_5_21[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
-static symbol s_5_22[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
-static symbol s_5_23[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
-
-static struct among a_5[24] =
-{
-/* 0 */ { 4, s_5_0, -1, 3, 0},
-/* 1 */ { 4, s_5_1, -1, 2, 0},
-/* 2 */ { 3, s_5_2, -1, 13, 0},
-/* 3 */ { 2, s_5_3, -1, 16, 0},
-/* 4 */ { 3, s_5_4, 3, 12, 0},
-/* 5 */ { 4, s_5_5, 4, 4, 0},
-/* 6 */ { 4, s_5_6, 3, 8, 0},
-/* 7 */ { 5, s_5_7, 3, 14, 0},
-/* 8 */ { 6, s_5_8, 3, 15, 0},
-/* 9 */ { 5, s_5_9, 3, 10, 0},
-/* 10 */ { 5, s_5_10, 3, 5, 0},
-/* 11 */ { 5, s_5_11, -1, 8, 0},
-/* 12 */ { 6, s_5_12, -1, 12, 0},
-/* 13 */ { 5, s_5_13, -1, 11, 0},
-/* 14 */ { 6, s_5_14, -1, 1, 0},
-/* 15 */ { 7, s_5_15, 14, 7, 0},
-/* 16 */ { 5, s_5_16, -1, 8, 0},
-/* 17 */ { 5, s_5_17, -1, 7, 0},
-/* 18 */ { 7, s_5_18, 17, 6, 0},
-/* 19 */ { 4, s_5_19, -1, 6, 0},
-/* 20 */ { 4, s_5_20, -1, 7, 0},
-/* 21 */ { 7, s_5_21, -1, 11, 0},
-/* 22 */ { 7, s_5_22, -1, 9, 0},
-/* 23 */ { 7, s_5_23, -1, 10, 0}
-};
-
-static symbol s_6_0[5] = { 'i', 'c', 'a', 't', 'e' };
-static symbol s_6_1[5] = { 'a', 't', 'i', 'v', 'e' };
-static symbol s_6_2[5] = { 'a', 'l', 'i', 'z', 'e' };
-static symbol s_6_3[5] = { 'i', 'c', 'i', 't', 'i' };
-static symbol s_6_4[4] = { 'i', 'c', 'a', 'l' };
-static symbol s_6_5[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_6_6[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_6_7[3] = { 'f', 'u', 'l' };
-static symbol s_6_8[4] = { 'n', 'e', 's', 's' };
-
-static struct among a_6[9] =
-{
-/* 0 */ { 5, s_6_0, -1, 4, 0},
-/* 1 */ { 5, s_6_1, -1, 6, 0},
-/* 2 */ { 5, s_6_2, -1, 3, 0},
-/* 3 */ { 5, s_6_3, -1, 4, 0},
-/* 4 */ { 4, s_6_4, -1, 4, 0},
-/* 5 */ { 6, s_6_5, -1, 1, 0},
-/* 6 */ { 7, s_6_6, 5, 2, 0},
-/* 7 */ { 3, s_6_7, -1, 5, 0},
-/* 8 */ { 4, s_6_8, -1, 5, 0}
-};
-
-static symbol s_7_0[2] = { 'i', 'c' };
-static symbol s_7_1[4] = { 'a', 'n', 'c', 'e' };
-static symbol s_7_2[4] = { 'e', 'n', 'c', 'e' };
-static symbol s_7_3[4] = { 'a', 'b', 'l', 'e' };
-static symbol s_7_4[4] = { 'i', 'b', 'l', 'e' };
-static symbol s_7_5[3] = { 'a', 't', 'e' };
-static symbol s_7_6[3] = { 'i', 'v', 'e' };
-static symbol s_7_7[3] = { 'i', 'z', 'e' };
-static symbol s_7_8[3] = { 'i', 't', 'i' };
-static symbol s_7_9[2] = { 'a', 'l' };
-static symbol s_7_10[3] = { 'i', 's', 'm' };
-static symbol s_7_11[3] = { 'i', 'o', 'n' };
-static symbol s_7_12[2] = { 'e', 'r' };
-static symbol s_7_13[3] = { 'o', 'u', 's' };
-static symbol s_7_14[3] = { 'a', 'n', 't' };
-static symbol s_7_15[3] = { 'e', 'n', 't' };
-static symbol s_7_16[4] = { 'm', 'e', 'n', 't' };
-static symbol s_7_17[5] = { 'e', 'm', 'e', 'n', 't' };
-
-static struct among a_7[18] =
-{
-/* 0 */ { 2, s_7_0, -1, 1, 0},
-/* 1 */ { 4, s_7_1, -1, 1, 0},
-/* 2 */ { 4, s_7_2, -1, 1, 0},
-/* 3 */ { 4, s_7_3, -1, 1, 0},
-/* 4 */ { 4, s_7_4, -1, 1, 0},
-/* 5 */ { 3, s_7_5, -1, 1, 0},
-/* 6 */ { 3, s_7_6, -1, 1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 3, s_7_8, -1, 1, 0},
-/* 9 */ { 2, s_7_9, -1, 1, 0},
-/* 10 */ { 3, s_7_10, -1, 1, 0},
-/* 11 */ { 3, s_7_11, -1, 2, 0},
-/* 12 */ { 2, s_7_12, -1, 1, 0},
-/* 13 */ { 3, s_7_13, -1, 1, 0},
-/* 14 */ { 3, s_7_14, -1, 1, 0},
-/* 15 */ { 3, s_7_15, -1, 1, 0},
-/* 16 */ { 4, s_7_16, 15, 1, 0},
-/* 17 */ { 5, s_7_17, 16, 1, 0}
-};
-
-static symbol s_8_0[1] = { 'e' };
-static symbol s_8_1[1] = { 'l' };
-
-static struct among a_8[2] =
-{
-/* 0 */ { 1, s_8_0, -1, 1, 0},
-/* 1 */ { 1, s_8_1, -1, 2, 0}
-};
-
-static symbol s_9_0[7] = { 's', 'u', 'c', 'c', 'e', 'e', 'd' };
-static symbol s_9_1[7] = { 'p', 'r', 'o', 'c', 'e', 'e', 'd' };
-static symbol s_9_2[6] = { 'e', 'x', 'c', 'e', 'e', 'd' };
-static symbol s_9_3[7] = { 'c', 'a', 'n', 'n', 'i', 'n', 'g' };
-static symbol s_9_4[6] = { 'i', 'n', 'n', 'i', 'n', 'g' };
-static symbol s_9_5[7] = { 'e', 'a', 'r', 'r', 'i', 'n', 'g' };
-static symbol s_9_6[7] = { 'h', 'e', 'r', 'r', 'i', 'n', 'g' };
-static symbol s_9_7[6] = { 'o', 'u', 't', 'i', 'n', 'g' };
-
-static struct among a_9[8] =
-{
-/* 0 */ { 7, s_9_0, -1, -1, 0},
-/* 1 */ { 7, s_9_1, -1, -1, 0},
-/* 2 */ { 6, s_9_2, -1, -1, 0},
-/* 3 */ { 7, s_9_3, -1, -1, 0},
-/* 4 */ { 6, s_9_4, -1, -1, 0},
-/* 5 */ { 7, s_9_5, -1, -1, 0},
-/* 6 */ { 7, s_9_6, -1, -1, 0},
-/* 7 */ { 6, s_9_7, -1, -1, 0}
-};
-
-static symbol s_10_0[5] = { 'a', 'n', 'd', 'e', 's' };
-static symbol s_10_1[5] = { 'a', 't', 'l', 'a', 's' };
-static symbol s_10_2[4] = { 'b', 'i', 'a', 's' };
-static symbol s_10_3[6] = { 'c', 'o', 's', 'm', 'o', 's' };
-static symbol s_10_4[5] = { 'd', 'y', 'i', 'n', 'g' };
-static symbol s_10_5[5] = { 'e', 'a', 'r', 'l', 'y' };
-static symbol s_10_6[6] = { 'g', 'e', 'n', 't', 'l', 'y' };
-static symbol s_10_7[4] = { 'h', 'o', 'w', 'e' };
-static symbol s_10_8[4] = { 'i', 'd', 'l', 'y' };
-static symbol s_10_9[5] = { 'l', 'y', 'i', 'n', 'g' };
-static symbol s_10_10[4] = { 'n', 'e', 'w', 's' };
-static symbol s_10_11[4] = { 'o', 'n', 'l', 'y' };
-static symbol s_10_12[6] = { 's', 'i', 'n', 'g', 'l', 'y' };
-static symbol s_10_13[5] = { 's', 'k', 'i', 'e', 's' };
-static symbol s_10_14[4] = { 's', 'k', 'i', 's' };
-static symbol s_10_15[3] = { 's', 'k', 'y' };
-static symbol s_10_16[5] = { 't', 'y', 'i', 'n', 'g' };
-static symbol s_10_17[4] = { 'u', 'g', 'l', 'y' };
-
-static struct among a_10[18] =
-{
-/* 0 */ { 5, s_10_0, -1, -1, 0},
-/* 1 */ { 5, s_10_1, -1, -1, 0},
-/* 2 */ { 4, s_10_2, -1, -1, 0},
-/* 3 */ { 6, s_10_3, -1, -1, 0},
-/* 4 */ { 5, s_10_4, -1, 3, 0},
-/* 5 */ { 5, s_10_5, -1, 9, 0},
-/* 6 */ { 6, s_10_6, -1, 7, 0},
-/* 7 */ { 4, s_10_7, -1, -1, 0},
-/* 8 */ { 4, s_10_8, -1, 6, 0},
-/* 9 */ { 5, s_10_9, -1, 4, 0},
-/* 10 */ { 4, s_10_10, -1, -1, 0},
-/* 11 */ { 4, s_10_11, -1, 10, 0},
-/* 12 */ { 6, s_10_12, -1, 11, 0},
-/* 13 */ { 5, s_10_13, -1, 2, 0},
-/* 14 */ { 4, s_10_14, -1, 1, 0},
-/* 15 */ { 3, s_10_15, -1, -1, 0},
-/* 16 */ { 5, s_10_16, -1, 5, 0},
-/* 17 */ { 4, s_10_17, -1, 8, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1 };
-
-static unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
-
-static unsigned char g_valid_LI[] = { 55, 141, 2 };
-
-static symbol s_0[] = { '\'' };
-static symbol s_1[] = { 'y' };
-static symbol s_2[] = { 'Y' };
-static symbol s_3[] = { 'y' };
-static symbol s_4[] = { 'Y' };
-static symbol s_5[] = { 's', 's' };
-static symbol s_6[] = { 'i' };
-static symbol s_7[] = { 'i', 'e' };
-static symbol s_8[] = { 'e', 'e' };
-static symbol s_9[] = { 'e' };
-static symbol s_10[] = { 'e' };
-static symbol s_11[] = { 'y' };
-static symbol s_12[] = { 'Y' };
-static symbol s_13[] = { 'i' };
-static symbol s_14[] = { 't', 'i', 'o', 'n' };
-static symbol s_15[] = { 'e', 'n', 'c', 'e' };
-static symbol s_16[] = { 'a', 'n', 'c', 'e' };
-static symbol s_17[] = { 'a', 'b', 'l', 'e' };
-static symbol s_18[] = { 'e', 'n', 't' };
-static symbol s_19[] = { 'i', 'z', 'e' };
-static symbol s_20[] = { 'a', 't', 'e' };
-static symbol s_21[] = { 'a', 'l' };
-static symbol s_22[] = { 'f', 'u', 'l' };
-static symbol s_23[] = { 'o', 'u', 's' };
-static symbol s_24[] = { 'i', 'v', 'e' };
-static symbol s_25[] = { 'b', 'l', 'e' };
-static symbol s_26[] = { 'l' };
-static symbol s_27[] = { 'o', 'g' };
-static symbol s_28[] = { 'f', 'u', 'l' };
-static symbol s_29[] = { 'l', 'e', 's', 's' };
-static symbol s_30[] = { 't', 'i', 'o', 'n' };
-static symbol s_31[] = { 'a', 't', 'e' };
-static symbol s_32[] = { 'a', 'l' };
-static symbol s_33[] = { 'i', 'c' };
-static symbol s_34[] = { 's' };
-static symbol s_35[] = { 't' };
-static symbol s_36[] = { 'l' };
-static symbol s_37[] = { 's', 'k', 'i' };
-static symbol s_38[] = { 's', 'k', 'y' };
-static symbol s_39[] = { 'd', 'i', 'e' };
-static symbol s_40[] = { 'l', 'i', 'e' };
-static symbol s_41[] = { 't', 'i', 'e' };
-static symbol s_42[] = { 'i', 'd', 'l' };
-static symbol s_43[] = { 'g', 'e', 'n', 't', 'l' };
-static symbol s_44[] = { 'u', 'g', 'l', 'i' };
-static symbol s_45[] = { 'e', 'a', 'r', 'l', 'i' };
-static symbol s_46[] = { 'o', 'n', 'l', 'i' };
-static symbol s_47[] = { 's', 'i', 'n', 'g', 'l' };
-static symbol s_48[] = { 'Y' };
-static symbol s_49[] = { 'y' };
-
-static int r_prelude(struct SN_env * z) {
- z->B[0] = 0; /* unset Y_found, line 26 */
- { int c = z->c; /* do, line 27 */
- z->bra = z->c; /* [, line 27 */
- if (!(eq_s(z, 1, s_0))) goto lab0;
- z->ket = z->c; /* ], line 27 */
- { int ret;
- ret = slice_del(z); /* delete, line 27 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 28 */
- z->bra = z->c; /* [, line 28 */
- if (!(eq_s(z, 1, s_1))) goto lab1;
- z->ket = z->c; /* ], line 28 */
- { int ret;
- ret = slice_from_s(z, 1, s_2); /* <-, line 28 */
- if (ret < 0) return ret;
- }
- z->B[0] = 1; /* set Y_found, line 28 */
- lab1:
- z->c = c;
- }
- { int c = z->c; /* do, line 29 */
- while(1) { /* repeat, line 29 */
- int c = z->c;
- while(1) { /* goto, line 29 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 121))) goto lab4;
- z->bra = z->c; /* [, line 29 */
- if (!(eq_s(z, 1, s_3))) goto lab4;
- z->ket = z->c; /* ], line 29 */
- z->c = c;
- break;
- lab4:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab3;
- z->c = c; /* goto, line 29 */
- }
- }
- { int ret;
- ret = slice_from_s(z, 1, s_4); /* <-, line 29 */
- if (ret < 0) return ret;
- }
- z->B[0] = 1; /* set Y_found, line 29 */
- continue;
- lab3:
- z->c = c;
- break;
- }
- z->c = c;
- }
- return 1;
-}
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- { int c = z->c; /* do, line 35 */
- { int c = z->c; /* or, line 40 */
- if (!(find_among(z, a_0, 2))) goto lab2; /* among, line 36 */
- goto lab1;
- lab2:
- z->c = c;
- while(1) { /* gopast, line 40 */
- if (!(in_grouping_U(z, g_v, 97, 121))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 40 */
- }
- }
- while(1) { /* gopast, line 40 */
- if (!(out_grouping_U(z, g_v, 97, 121))) goto lab4;
- break;
- lab4:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 40 */
- }
- }
- }
- lab1:
- z->I[0] = z->c; /* setmark p1, line 41 */
- while(1) { /* gopast, line 42 */
- if (!(in_grouping_U(z, g_v, 97, 121))) goto lab5;
- break;
- lab5:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 42 */
- }
- }
- while(1) { /* gopast, line 42 */
- if (!(out_grouping_U(z, g_v, 97, 121))) goto lab6;
- break;
- lab6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 42 */
- }
- }
- z->I[1] = z->c; /* setmark p2, line 42 */
- lab0:
- z->c = c;
- }
- return 1;
-}
-
-static int r_shortv(struct SN_env * z) {
- { int m = z->l - z->c; (void) m; /* or, line 50 */
- if (!(out_grouping_b_U(z, g_v_WXY, 89, 121))) goto lab1;
- if (!(in_grouping_b_U(z, g_v, 97, 121))) goto lab1;
- if (!(out_grouping_b_U(z, g_v, 97, 121))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(out_grouping_b_U(z, g_v, 97, 121))) return 0;
- if (!(in_grouping_b_U(z, g_v, 97, 121))) return 0;
- if (z->c > z->lb) return 0; /* atlimit, line 51 */
- }
-lab0:
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_Step_1a(struct SN_env * z) {
- int among_var;
- { int m = z->l - z->c; (void) m; /* try, line 58 */
- z->ket = z->c; /* [, line 59 */
- among_var = find_among_b(z, a_1, 3); /* substring, line 59 */
- if (!(among_var)) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 59 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab0; }
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 61 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab0:
- ;
- }
- z->ket = z->c; /* [, line 64 */
- among_var = find_among_b(z, a_2, 6); /* substring, line 64 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 64 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 2, s_5); /* <-, line 65 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* or, line 67 */
- { int c = skip_utf8(z->p, z->c, z->lb, z->l, - 2);
- if (c < 0) goto lab2;
- z->c = c; /* hop, line 67 */
- }
- { int ret;
- ret = slice_from_s(z, 1, s_6); /* <-, line 67 */
- if (ret < 0) return ret;
- }
- goto lab1;
- lab2:
- z->c = z->l - m;
- { int ret;
- ret = slice_from_s(z, 2, s_7); /* <-, line 67 */
- if (ret < 0) return ret;
- }
- }
- lab1:
- break;
- case 3:
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 68 */
- }
- while(1) { /* gopast, line 68 */
- if (!(in_grouping_b_U(z, g_v, 97, 121))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 68 */
- }
- }
- { int ret;
- ret = slice_del(z); /* delete, line 68 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_1b(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 74 */
- among_var = find_among_b(z, a_4, 6); /* substring, line 74 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 74 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 76 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 2, s_8); /* <-, line 76 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m_test = z->l - z->c; /* test, line 79 */
- while(1) { /* gopast, line 79 */
- if (!(in_grouping_b_U(z, g_v, 97, 121))) goto lab0;
- break;
- lab0:
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 79 */
- }
- }
- z->c = z->l - m_test;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 79 */
- if (ret < 0) return ret;
- }
- { int m_test = z->l - z->c; /* test, line 80 */
- among_var = find_among_b(z, a_3, 13); /* substring, line 80 */
- if (!(among_var)) return 0;
- z->c = z->l - m_test;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- { int c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_9); /* <+, line 82 */
- z->c = c;
- }
- if (ret < 0) return ret;
- }
- break;
- case 2:
- z->ket = z->c; /* [, line 85 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 85 */
- }
- z->bra = z->c; /* ], line 85 */
- { int ret;
- ret = slice_del(z); /* delete, line 85 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- if (z->c != z->I[0]) return 0; /* atmark, line 86 */
- { int m_test = z->l - z->c; /* test, line 86 */
- { int ret = r_shortv(z);
- if (ret == 0) return 0; /* call shortv, line 86 */
- if (ret < 0) return ret;
- }
- z->c = z->l - m_test;
- }
- { int ret;
- { int c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_10); /* <+, line 86 */
- z->c = c;
- }
- if (ret < 0) return ret;
- }
- break;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_1c(struct SN_env * z) {
- z->ket = z->c; /* [, line 93 */
- { int m = z->l - z->c; (void) m; /* or, line 93 */
- if (!(eq_s_b(z, 1, s_11))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_12))) return 0;
- }
-lab0:
- z->bra = z->c; /* ], line 93 */
- if (!(out_grouping_b_U(z, g_v, 97, 121))) return 0;
- { int m = z->l - z->c; (void) m; /* not, line 94 */
- if (z->c > z->lb) goto lab2; /* atlimit, line 94 */
- return 0;
- lab2:
- z->c = z->l - m;
- }
- { int ret;
- ret = slice_from_s(z, 1, s_13); /* <-, line 95 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_Step_2(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 99 */
- among_var = find_among_b(z, a_5, 24); /* substring, line 99 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 99 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 99 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 4, s_14); /* <-, line 100 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 4, s_15); /* <-, line 101 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 4, s_16); /* <-, line 102 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 4, s_17); /* <-, line 103 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 3, s_18); /* <-, line 104 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret;
- ret = slice_from_s(z, 3, s_19); /* <-, line 106 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret;
- ret = slice_from_s(z, 3, s_20); /* <-, line 108 */
- if (ret < 0) return ret;
- }
- break;
- case 8:
- { int ret;
- ret = slice_from_s(z, 2, s_21); /* <-, line 110 */
- if (ret < 0) return ret;
- }
- break;
- case 9:
- { int ret;
- ret = slice_from_s(z, 3, s_22); /* <-, line 111 */
- if (ret < 0) return ret;
- }
- break;
- case 10:
- { int ret;
- ret = slice_from_s(z, 3, s_23); /* <-, line 113 */
- if (ret < 0) return ret;
- }
- break;
- case 11:
- { int ret;
- ret = slice_from_s(z, 3, s_24); /* <-, line 115 */
- if (ret < 0) return ret;
- }
- break;
- case 12:
- { int ret;
- ret = slice_from_s(z, 3, s_25); /* <-, line 117 */
- if (ret < 0) return ret;
- }
- break;
- case 13:
- if (!(eq_s_b(z, 1, s_26))) return 0;
- { int ret;
- ret = slice_from_s(z, 2, s_27); /* <-, line 118 */
- if (ret < 0) return ret;
- }
- break;
- case 14:
- { int ret;
- ret = slice_from_s(z, 3, s_28); /* <-, line 119 */
- if (ret < 0) return ret;
- }
- break;
- case 15:
- { int ret;
- ret = slice_from_s(z, 4, s_29); /* <-, line 120 */
- if (ret < 0) return ret;
- }
- break;
- case 16:
- if (!(in_grouping_b_U(z, g_valid_LI, 99, 116))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 121 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_3(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 126 */
- among_var = find_among_b(z, a_6, 9); /* substring, line 126 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 126 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 126 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 4, s_30); /* <-, line 127 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 3, s_31); /* <-, line 128 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 2, s_32); /* <-, line 129 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 2, s_33); /* <-, line 131 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_del(z); /* delete, line 133 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 135 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 135 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_4(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 140 */
- among_var = find_among_b(z, a_7, 18); /* substring, line 140 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 140 */
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 140 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 143 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* or, line 144 */
- if (!(eq_s_b(z, 1, s_34))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_35))) return 0;
- }
- lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 144 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_5(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 149 */
- among_var = find_among_b(z, a_8, 2); /* substring, line 149 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 149 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* or, line 150 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab1; /* call R2, line 150 */
- if (ret < 0) return ret;
- }
- goto lab0;
- lab1:
- z->c = z->l - m;
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 150 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* not, line 150 */
- { int ret = r_shortv(z);
- if (ret == 0) goto lab2; /* call shortv, line 150 */
- if (ret < 0) return ret;
- }
- return 0;
- lab2:
- z->c = z->l - m;
- }
- }
- lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 150 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 151 */
- if (ret < 0) return ret;
- }
- if (!(eq_s_b(z, 1, s_36))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 151 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_exception2(struct SN_env * z) {
- z->ket = z->c; /* [, line 157 */
- if (!(find_among_b(z, a_9, 8))) return 0; /* substring, line 157 */
- z->bra = z->c; /* ], line 157 */
- if (z->c > z->lb) return 0; /* atlimit, line 157 */
- return 1;
-}
-
-static int r_exception1(struct SN_env * z) {
- int among_var;
- z->bra = z->c; /* [, line 169 */
- among_var = find_among(z, a_10, 18); /* substring, line 169 */
- if (!(among_var)) return 0;
- z->ket = z->c; /* ], line 169 */
- if (z->c < z->l) return 0; /* atlimit, line 169 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 3, s_37); /* <-, line 173 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 3, s_38); /* <-, line 174 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 3, s_39); /* <-, line 175 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 3, s_40); /* <-, line 176 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 3, s_41); /* <-, line 177 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret;
- ret = slice_from_s(z, 3, s_42); /* <-, line 181 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret;
- ret = slice_from_s(z, 5, s_43); /* <-, line 182 */
- if (ret < 0) return ret;
- }
- break;
- case 8:
- { int ret;
- ret = slice_from_s(z, 4, s_44); /* <-, line 183 */
- if (ret < 0) return ret;
- }
- break;
- case 9:
- { int ret;
- ret = slice_from_s(z, 5, s_45); /* <-, line 184 */
- if (ret < 0) return ret;
- }
- break;
- case 10:
- { int ret;
- ret = slice_from_s(z, 4, s_46); /* <-, line 185 */
- if (ret < 0) return ret;
- }
- break;
- case 11:
- { int ret;
- ret = slice_from_s(z, 5, s_47); /* <-, line 186 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- if (!(z->B[0])) return 0; /* Boolean test Y_found, line 202 */
- while(1) { /* repeat, line 202 */
- int c = z->c;
- while(1) { /* goto, line 202 */
- int c = z->c;
- z->bra = z->c; /* [, line 202 */
- if (!(eq_s(z, 1, s_48))) goto lab1;
- z->ket = z->c; /* ], line 202 */
- z->c = c;
- break;
- lab1:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* goto, line 202 */
- }
- }
- { int ret;
- ret = slice_from_s(z, 1, s_49); /* <-, line 202 */
- if (ret < 0) return ret;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-extern int english_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* or, line 206 */
- { int ret = r_exception1(z);
- if (ret == 0) goto lab1; /* call exception1, line 206 */
- if (ret < 0) return ret;
- }
- goto lab0;
- lab1:
- z->c = c;
- { int c = z->c; /* not, line 207 */
- { int c = skip_utf8(z->p, z->c, 0, z->l, + 3);
- if (c < 0) goto lab3;
- z->c = c; /* hop, line 207 */
- }
- goto lab2;
- lab3:
- z->c = c;
- }
- goto lab0;
- lab2:
- z->c = c;
- { int c = z->c; /* do, line 208 */
- { int ret = r_prelude(z);
- if (ret == 0) goto lab4; /* call prelude, line 208 */
- if (ret < 0) return ret;
- }
- lab4:
- z->c = c;
- }
- { int c = z->c; /* do, line 209 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab5; /* call mark_regions, line 209 */
- if (ret < 0) return ret;
- }
- lab5:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 210 */
-
- { int m = z->l - z->c; (void) m; /* do, line 212 */
- { int ret = r_Step_1a(z);
- if (ret == 0) goto lab6; /* call Step_1a, line 212 */
- if (ret < 0) return ret;
- }
- lab6:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* or, line 214 */
- { int ret = r_exception2(z);
- if (ret == 0) goto lab8; /* call exception2, line 214 */
- if (ret < 0) return ret;
- }
- goto lab7;
- lab8:
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* do, line 216 */
- { int ret = r_Step_1b(z);
- if (ret == 0) goto lab9; /* call Step_1b, line 216 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 217 */
- { int ret = r_Step_1c(z);
- if (ret == 0) goto lab10; /* call Step_1c, line 217 */
- if (ret < 0) return ret;
- }
- lab10:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 219 */
- { int ret = r_Step_2(z);
- if (ret == 0) goto lab11; /* call Step_2, line 219 */
- if (ret < 0) return ret;
- }
- lab11:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 220 */
- { int ret = r_Step_3(z);
- if (ret == 0) goto lab12; /* call Step_3, line 220 */
- if (ret < 0) return ret;
- }
- lab12:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 221 */
- { int ret = r_Step_4(z);
- if (ret == 0) goto lab13; /* call Step_4, line 221 */
- if (ret < 0) return ret;
- }
- lab13:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 223 */
- { int ret = r_Step_5(z);
- if (ret == 0) goto lab14; /* call Step_5, line 223 */
- if (ret < 0) return ret;
- }
- lab14:
- z->c = z->l - m;
- }
- }
- lab7:
- z->c = z->lb;
- { int c = z->c; /* do, line 226 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab15; /* call postlude, line 226 */
- if (ret < 0) return ret;
- }
- lab15:
- z->c = c;
- }
- }
-lab0:
- return 1;
-}
-
-extern struct SN_env * english_UTF_8_create_env(void) { return SN_create_env(0, 2, 1); }
-
-extern void english_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_english.h b/src/libstemmer/src_c/stem_UTF_8_english.h
deleted file mode 100644
index 1412d1131..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_english.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * english_UTF_8_create_env(void);
-extern void english_UTF_8_close_env(struct SN_env * z);
-
-extern int english_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_finnish.c b/src/libstemmer/src_c/stem_UTF_8_finnish.c
deleted file mode 100644
index f8d8cb3b3..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_finnish.c
+++ /dev/null
@@ -1,821 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int finnish_UTF_8_stem(struct SN_env * z);
-static int r_tidy(struct SN_env * z);
-static int r_other_endings(struct SN_env * z);
-static int r_t_plural(struct SN_env * z);
-static int r_i_plural(struct SN_env * z);
-static int r_case_ending(struct SN_env * z);
-static int r_VI(struct SN_env * z);
-static int r_LONG(struct SN_env * z);
-static int r_possessive(struct SN_env * z);
-static int r_particle_etc(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * finnish_UTF_8_create_env(void);
-extern void finnish_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[2] = { 'p', 'a' };
-static symbol s_0_1[3] = { 's', 't', 'i' };
-static symbol s_0_2[4] = { 'k', 'a', 'a', 'n' };
-static symbol s_0_3[3] = { 'h', 'a', 'n' };
-static symbol s_0_4[3] = { 'k', 'i', 'n' };
-static symbol s_0_5[4] = { 'h', 0xC3, 0xA4, 'n' };
-static symbol s_0_6[6] = { 'k', 0xC3, 0xA4, 0xC3, 0xA4, 'n' };
-static symbol s_0_7[2] = { 'k', 'o' };
-static symbol s_0_8[3] = { 'p', 0xC3, 0xA4 };
-static symbol s_0_9[3] = { 'k', 0xC3, 0xB6 };
-
-static struct among a_0[10] =
-{
-/* 0 */ { 2, s_0_0, -1, 1, 0},
-/* 1 */ { 3, s_0_1, -1, 2, 0},
-/* 2 */ { 4, s_0_2, -1, 1, 0},
-/* 3 */ { 3, s_0_3, -1, 1, 0},
-/* 4 */ { 3, s_0_4, -1, 1, 0},
-/* 5 */ { 4, s_0_5, -1, 1, 0},
-/* 6 */ { 6, s_0_6, -1, 1, 0},
-/* 7 */ { 2, s_0_7, -1, 1, 0},
-/* 8 */ { 3, s_0_8, -1, 1, 0},
-/* 9 */ { 3, s_0_9, -1, 1, 0}
-};
-
-static symbol s_1_0[3] = { 'l', 'l', 'a' };
-static symbol s_1_1[2] = { 'n', 'a' };
-static symbol s_1_2[3] = { 's', 's', 'a' };
-static symbol s_1_3[2] = { 't', 'a' };
-static symbol s_1_4[3] = { 'l', 't', 'a' };
-static symbol s_1_5[3] = { 's', 't', 'a' };
-
-static struct among a_1[6] =
-{
-/* 0 */ { 3, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0},
-/* 2 */ { 3, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0},
-/* 4 */ { 3, s_1_4, 3, -1, 0},
-/* 5 */ { 3, s_1_5, 3, -1, 0}
-};
-
-static symbol s_2_0[4] = { 'l', 'l', 0xC3, 0xA4 };
-static symbol s_2_1[3] = { 'n', 0xC3, 0xA4 };
-static symbol s_2_2[4] = { 's', 's', 0xC3, 0xA4 };
-static symbol s_2_3[3] = { 't', 0xC3, 0xA4 };
-static symbol s_2_4[4] = { 'l', 't', 0xC3, 0xA4 };
-static symbol s_2_5[4] = { 's', 't', 0xC3, 0xA4 };
-
-static struct among a_2[6] =
-{
-/* 0 */ { 4, s_2_0, -1, -1, 0},
-/* 1 */ { 3, s_2_1, -1, -1, 0},
-/* 2 */ { 4, s_2_2, -1, -1, 0},
-/* 3 */ { 3, s_2_3, -1, -1, 0},
-/* 4 */ { 4, s_2_4, 3, -1, 0},
-/* 5 */ { 4, s_2_5, 3, -1, 0}
-};
-
-static symbol s_3_0[3] = { 'l', 'l', 'e' };
-static symbol s_3_1[3] = { 'i', 'n', 'e' };
-
-static struct among a_3[2] =
-{
-/* 0 */ { 3, s_3_0, -1, -1, 0},
-/* 1 */ { 3, s_3_1, -1, -1, 0}
-};
-
-static symbol s_4_0[3] = { 'n', 's', 'a' };
-static symbol s_4_1[3] = { 'm', 'm', 'e' };
-static symbol s_4_2[3] = { 'n', 'n', 'e' };
-static symbol s_4_3[2] = { 'n', 'i' };
-static symbol s_4_4[2] = { 's', 'i' };
-static symbol s_4_5[2] = { 'a', 'n' };
-static symbol s_4_6[2] = { 'e', 'n' };
-static symbol s_4_7[3] = { 0xC3, 0xA4, 'n' };
-static symbol s_4_8[4] = { 'n', 's', 0xC3, 0xA4 };
-
-static struct among a_4[9] =
-{
-/* 0 */ { 3, s_4_0, -1, 3, 0},
-/* 1 */ { 3, s_4_1, -1, 3, 0},
-/* 2 */ { 3, s_4_2, -1, 3, 0},
-/* 3 */ { 2, s_4_3, -1, 2, 0},
-/* 4 */ { 2, s_4_4, -1, 1, 0},
-/* 5 */ { 2, s_4_5, -1, 4, 0},
-/* 6 */ { 2, s_4_6, -1, 6, 0},
-/* 7 */ { 3, s_4_7, -1, 5, 0},
-/* 8 */ { 4, s_4_8, -1, 3, 0}
-};
-
-static symbol s_5_0[2] = { 'a', 'a' };
-static symbol s_5_1[2] = { 'e', 'e' };
-static symbol s_5_2[2] = { 'i', 'i' };
-static symbol s_5_3[2] = { 'o', 'o' };
-static symbol s_5_4[2] = { 'u', 'u' };
-static symbol s_5_5[4] = { 0xC3, 0xA4, 0xC3, 0xA4 };
-static symbol s_5_6[4] = { 0xC3, 0xB6, 0xC3, 0xB6 };
-
-static struct among a_5[7] =
-{
-/* 0 */ { 2, s_5_0, -1, -1, 0},
-/* 1 */ { 2, s_5_1, -1, -1, 0},
-/* 2 */ { 2, s_5_2, -1, -1, 0},
-/* 3 */ { 2, s_5_3, -1, -1, 0},
-/* 4 */ { 2, s_5_4, -1, -1, 0},
-/* 5 */ { 4, s_5_5, -1, -1, 0},
-/* 6 */ { 4, s_5_6, -1, -1, 0}
-};
-
-static symbol s_6_0[1] = { 'a' };
-static symbol s_6_1[3] = { 'l', 'l', 'a' };
-static symbol s_6_2[2] = { 'n', 'a' };
-static symbol s_6_3[3] = { 's', 's', 'a' };
-static symbol s_6_4[2] = { 't', 'a' };
-static symbol s_6_5[3] = { 'l', 't', 'a' };
-static symbol s_6_6[3] = { 's', 't', 'a' };
-static symbol s_6_7[3] = { 't', 't', 'a' };
-static symbol s_6_8[3] = { 'l', 'l', 'e' };
-static symbol s_6_9[3] = { 'i', 'n', 'e' };
-static symbol s_6_10[3] = { 'k', 's', 'i' };
-static symbol s_6_11[1] = { 'n' };
-static symbol s_6_12[3] = { 'h', 'a', 'n' };
-static symbol s_6_13[3] = { 'd', 'e', 'n' };
-static symbol s_6_14[4] = { 's', 'e', 'e', 'n' };
-static symbol s_6_15[3] = { 'h', 'e', 'n' };
-static symbol s_6_16[4] = { 't', 't', 'e', 'n' };
-static symbol s_6_17[3] = { 'h', 'i', 'n' };
-static symbol s_6_18[4] = { 's', 'i', 'i', 'n' };
-static symbol s_6_19[3] = { 'h', 'o', 'n' };
-static symbol s_6_20[4] = { 'h', 0xC3, 0xA4, 'n' };
-static symbol s_6_21[4] = { 'h', 0xC3, 0xB6, 'n' };
-static symbol s_6_22[2] = { 0xC3, 0xA4 };
-static symbol s_6_23[4] = { 'l', 'l', 0xC3, 0xA4 };
-static symbol s_6_24[3] = { 'n', 0xC3, 0xA4 };
-static symbol s_6_25[4] = { 's', 's', 0xC3, 0xA4 };
-static symbol s_6_26[3] = { 't', 0xC3, 0xA4 };
-static symbol s_6_27[4] = { 'l', 't', 0xC3, 0xA4 };
-static symbol s_6_28[4] = { 's', 't', 0xC3, 0xA4 };
-static symbol s_6_29[4] = { 't', 't', 0xC3, 0xA4 };
-
-static struct among a_6[30] =
-{
-/* 0 */ { 1, s_6_0, -1, 8, 0},
-/* 1 */ { 3, s_6_1, 0, -1, 0},
-/* 2 */ { 2, s_6_2, 0, -1, 0},
-/* 3 */ { 3, s_6_3, 0, -1, 0},
-/* 4 */ { 2, s_6_4, 0, -1, 0},
-/* 5 */ { 3, s_6_5, 4, -1, 0},
-/* 6 */ { 3, s_6_6, 4, -1, 0},
-/* 7 */ { 3, s_6_7, 4, 9, 0},
-/* 8 */ { 3, s_6_8, -1, -1, 0},
-/* 9 */ { 3, s_6_9, -1, -1, 0},
-/* 10 */ { 3, s_6_10, -1, -1, 0},
-/* 11 */ { 1, s_6_11, -1, 7, 0},
-/* 12 */ { 3, s_6_12, 11, 1, 0},
-/* 13 */ { 3, s_6_13, 11, -1, r_VI},
-/* 14 */ { 4, s_6_14, 11, -1, r_LONG},
-/* 15 */ { 3, s_6_15, 11, 2, 0},
-/* 16 */ { 4, s_6_16, 11, -1, r_VI},
-/* 17 */ { 3, s_6_17, 11, 3, 0},
-/* 18 */ { 4, s_6_18, 11, -1, r_VI},
-/* 19 */ { 3, s_6_19, 11, 4, 0},
-/* 20 */ { 4, s_6_20, 11, 5, 0},
-/* 21 */ { 4, s_6_21, 11, 6, 0},
-/* 22 */ { 2, s_6_22, -1, 8, 0},
-/* 23 */ { 4, s_6_23, 22, -1, 0},
-/* 24 */ { 3, s_6_24, 22, -1, 0},
-/* 25 */ { 4, s_6_25, 22, -1, 0},
-/* 26 */ { 3, s_6_26, 22, -1, 0},
-/* 27 */ { 4, s_6_27, 26, -1, 0},
-/* 28 */ { 4, s_6_28, 26, -1, 0},
-/* 29 */ { 4, s_6_29, 26, 9, 0}
-};
-
-static symbol s_7_0[3] = { 'e', 'j', 'a' };
-static symbol s_7_1[3] = { 'm', 'm', 'a' };
-static symbol s_7_2[4] = { 'i', 'm', 'm', 'a' };
-static symbol s_7_3[3] = { 'm', 'p', 'a' };
-static symbol s_7_4[4] = { 'i', 'm', 'p', 'a' };
-static symbol s_7_5[3] = { 'm', 'm', 'i' };
-static symbol s_7_6[4] = { 'i', 'm', 'm', 'i' };
-static symbol s_7_7[3] = { 'm', 'p', 'i' };
-static symbol s_7_8[4] = { 'i', 'm', 'p', 'i' };
-static symbol s_7_9[4] = { 'e', 'j', 0xC3, 0xA4 };
-static symbol s_7_10[4] = { 'm', 'm', 0xC3, 0xA4 };
-static symbol s_7_11[5] = { 'i', 'm', 'm', 0xC3, 0xA4 };
-static symbol s_7_12[4] = { 'm', 'p', 0xC3, 0xA4 };
-static symbol s_7_13[5] = { 'i', 'm', 'p', 0xC3, 0xA4 };
-
-static struct among a_7[14] =
-{
-/* 0 */ { 3, s_7_0, -1, -1, 0},
-/* 1 */ { 3, s_7_1, -1, 1, 0},
-/* 2 */ { 4, s_7_2, 1, -1, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 4, s_7_4, 3, -1, 0},
-/* 5 */ { 3, s_7_5, -1, 1, 0},
-/* 6 */ { 4, s_7_6, 5, -1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 4, s_7_8, 7, -1, 0},
-/* 9 */ { 4, s_7_9, -1, -1, 0},
-/* 10 */ { 4, s_7_10, -1, 1, 0},
-/* 11 */ { 5, s_7_11, 10, -1, 0},
-/* 12 */ { 4, s_7_12, -1, 1, 0},
-/* 13 */ { 5, s_7_13, 12, -1, 0}
-};
-
-static symbol s_8_0[1] = { 'i' };
-static symbol s_8_1[1] = { 'j' };
-
-static struct among a_8[2] =
-{
-/* 0 */ { 1, s_8_0, -1, -1, 0},
-/* 1 */ { 1, s_8_1, -1, -1, 0}
-};
-
-static symbol s_9_0[3] = { 'm', 'm', 'a' };
-static symbol s_9_1[4] = { 'i', 'm', 'm', 'a' };
-
-static struct among a_9[2] =
-{
-/* 0 */ { 3, s_9_0, -1, 1, 0},
-/* 1 */ { 4, s_9_1, 0, -1, 0}
-};
-
-static unsigned char g_AEI[] = { 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 };
-
-static unsigned char g_V1[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
-
-static unsigned char g_V2[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
-
-static unsigned char g_particle_end[] = { 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
-
-static symbol s_0[] = { 'k' };
-static symbol s_1[] = { 'k', 's', 'e' };
-static symbol s_2[] = { 'k', 's', 'i' };
-static symbol s_3[] = { 'i' };
-static symbol s_4[] = { 'a' };
-static symbol s_5[] = { 'e' };
-static symbol s_6[] = { 'i' };
-static symbol s_7[] = { 'o' };
-static symbol s_8[] = { 0xC3, 0xA4 };
-static symbol s_9[] = { 0xC3, 0xB6 };
-static symbol s_10[] = { 'i', 'e' };
-static symbol s_11[] = { 'e' };
-static symbol s_12[] = { 'p', 'o' };
-static symbol s_13[] = { 't' };
-static symbol s_14[] = { 'p', 'o' };
-static symbol s_15[] = { 'j' };
-static symbol s_16[] = { 'o' };
-static symbol s_17[] = { 'u' };
-static symbol s_18[] = { 'o' };
-static symbol s_19[] = { 'j' };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- while(1) { /* goto, line 46 */
- int c = z->c;
- if (!(in_grouping_U(z, g_V1, 97, 246))) goto lab0;
- z->c = c;
- break;
- lab0:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* goto, line 46 */
- }
- }
- while(1) { /* gopast, line 46 */
- if (!(out_grouping_U(z, g_V1, 97, 246))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 46 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 46 */
- while(1) { /* goto, line 47 */
- int c = z->c;
- if (!(in_grouping_U(z, g_V1, 97, 246))) goto lab2;
- z->c = c;
- break;
- lab2:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* goto, line 47 */
- }
- }
- while(1) { /* gopast, line 47 */
- if (!(out_grouping_U(z, g_V1, 97, 246))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 47 */
- }
- }
- z->I[1] = z->c; /* setmark p2, line 47 */
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_particle_etc(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 55 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 55 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 55 */
- among_var = find_among_b(z, a_0, 10); /* substring, line 55 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 55 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- if (!(in_grouping_b_U(z, g_particle_end, 97, 246))) return 0;
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 64 */
- if (ret < 0) return ret;
- }
- break;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 66 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_possessive(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 69 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 69 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 69 */
- among_var = find_among_b(z, a_4, 9); /* substring, line 69 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 69 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* not, line 72 */
- if (!(eq_s_b(z, 1, s_0))) goto lab0;
- return 0;
- lab0:
- z->c = z->l - m;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 72 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_del(z); /* delete, line 74 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 74 */
- if (!(eq_s_b(z, 3, s_1))) return 0;
- z->bra = z->c; /* ], line 74 */
- { int ret;
- ret = slice_from_s(z, 3, s_2); /* <-, line 74 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 78 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- if (!(find_among_b(z, a_1, 6))) return 0; /* among, line 81 */
- { int ret;
- ret = slice_del(z); /* delete, line 81 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- if (!(find_among_b(z, a_2, 6))) return 0; /* among, line 83 */
- { int ret;
- ret = slice_del(z); /* delete, line 84 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- if (!(find_among_b(z, a_3, 2))) return 0; /* among, line 86 */
- { int ret;
- ret = slice_del(z); /* delete, line 86 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_LONG(struct SN_env * z) {
- if (!(find_among_b(z, a_5, 7))) return 0; /* among, line 91 */
- return 1;
-}
-
-static int r_VI(struct SN_env * z) {
- if (!(eq_s_b(z, 1, s_3))) return 0;
- if (!(in_grouping_b_U(z, g_V2, 97, 246))) return 0;
- return 1;
-}
-
-static int r_case_ending(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 96 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 96 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 96 */
- among_var = find_among_b(z, a_6, 30); /* substring, line 96 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 96 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- if (!(eq_s_b(z, 1, s_4))) return 0;
- break;
- case 2:
- if (!(eq_s_b(z, 1, s_5))) return 0;
- break;
- case 3:
- if (!(eq_s_b(z, 1, s_6))) return 0;
- break;
- case 4:
- if (!(eq_s_b(z, 1, s_7))) return 0;
- break;
- case 5:
- if (!(eq_s_b(z, 2, s_8))) return 0;
- break;
- case 6:
- if (!(eq_s_b(z, 2, s_9))) return 0;
- break;
- case 7:
- { int m = z->l - z->c; (void) m; /* try, line 111 */
- { int m = z->l - z->c; (void) m; /* and, line 113 */
- { int m = z->l - z->c; (void) m; /* or, line 112 */
- { int ret = r_LONG(z);
- if (ret == 0) goto lab2; /* call LONG, line 111 */
- if (ret < 0) return ret;
- }
- goto lab1;
- lab2:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m; goto lab0; }
- }
- lab1:
- z->c = z->l - m;
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) { z->c = z->l - m; goto lab0; }
- z->c = c; /* next, line 113 */
- }
- }
- z->bra = z->c; /* ], line 113 */
- lab0:
- ;
- }
- break;
- case 8:
- if (!(in_grouping_b_U(z, g_V1, 97, 246))) return 0;
- if (!(out_grouping_b_U(z, g_V1, 97, 246))) return 0;
- break;
- case 9:
- if (!(eq_s_b(z, 1, s_11))) return 0;
- break;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 138 */
- if (ret < 0) return ret;
- }
- z->B[0] = 1; /* set ending_removed, line 139 */
- return 1;
-}
-
-static int r_other_endings(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 142 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[1]) return 0;
- z->c = z->I[1]; /* tomark, line 142 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 142 */
- among_var = find_among_b(z, a_7, 14); /* substring, line 142 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 142 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* not, line 146 */
- if (!(eq_s_b(z, 2, s_12))) goto lab0;
- return 0;
- lab0:
- z->c = z->l - m;
- }
- break;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 151 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_i_plural(struct SN_env * z) {
- { int m3; /* setlimit, line 154 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 154 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 154 */
- if (!(find_among_b(z, a_8, 2))) { z->lb = m3; return 0; } /* substring, line 154 */
- z->bra = z->c; /* ], line 154 */
- z->lb = m3;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 158 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_t_plural(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 161 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 161 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 162 */
- if (!(eq_s_b(z, 1, s_13))) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 162 */
- { int m_test = z->l - z->c; /* test, line 162 */
- if (!(in_grouping_b_U(z, g_V1, 97, 246))) { z->lb = m3; return 0; }
- z->c = z->l - m_test;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 163 */
- if (ret < 0) return ret;
- }
- z->lb = m3;
- }
- { int m3; /* setlimit, line 165 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[1]) return 0;
- z->c = z->I[1]; /* tomark, line 165 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 165 */
- among_var = find_among_b(z, a_9, 2); /* substring, line 165 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 165 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* not, line 167 */
- if (!(eq_s_b(z, 2, s_14))) goto lab0;
- return 0;
- lab0:
- z->c = z->l - m;
- }
- break;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 170 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_tidy(struct SN_env * z) {
- { int m3; /* setlimit, line 173 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 173 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* do, line 174 */
- { int m = z->l - z->c; (void) m; /* and, line 174 */
- { int ret = r_LONG(z);
- if (ret == 0) goto lab0; /* call LONG, line 174 */
- if (ret < 0) return ret;
- }
- z->c = z->l - m;
- z->ket = z->c; /* [, line 174 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 174 */
- }
- z->bra = z->c; /* ], line 174 */
- { int ret;
- ret = slice_del(z); /* delete, line 174 */
- if (ret < 0) return ret;
- }
- }
- lab0:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 175 */
- z->ket = z->c; /* [, line 175 */
- if (!(in_grouping_b_U(z, g_AEI, 97, 228))) goto lab1;
- z->bra = z->c; /* ], line 175 */
- if (!(out_grouping_b_U(z, g_V1, 97, 246))) goto lab1;
- { int ret;
- ret = slice_del(z); /* delete, line 175 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 176 */
- z->ket = z->c; /* [, line 176 */
- if (!(eq_s_b(z, 1, s_15))) goto lab2;
- z->bra = z->c; /* ], line 176 */
- { int m = z->l - z->c; (void) m; /* or, line 176 */
- if (!(eq_s_b(z, 1, s_16))) goto lab4;
- goto lab3;
- lab4:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_17))) goto lab2;
- }
- lab3:
- { int ret;
- ret = slice_del(z); /* delete, line 176 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 177 */
- z->ket = z->c; /* [, line 177 */
- if (!(eq_s_b(z, 1, s_18))) goto lab5;
- z->bra = z->c; /* ], line 177 */
- if (!(eq_s_b(z, 1, s_19))) goto lab5;
- { int ret;
- ret = slice_del(z); /* delete, line 177 */
- if (ret < 0) return ret;
- }
- lab5:
- z->c = z->l - m;
- }
- z->lb = m3;
- }
- while(1) { /* goto, line 179 */
- int m = z->l - z->c; (void) m;
- if (!(out_grouping_b_U(z, g_V1, 97, 246))) goto lab6;
- z->c = z->l - m;
- break;
- lab6:
- z->c = z->l - m;
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* goto, line 179 */
- }
- }
- z->ket = z->c; /* [, line 179 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 179 */
- }
- z->bra = z->c; /* ], line 179 */
- z->S[0] = slice_to(z, z->S[0]); /* -> x, line 179 */
- if (z->S[0] == 0) return -1; /* -> x, line 179 */
- if (!(eq_v_b(z, z->S[0]))) return 0; /* name x, line 179 */
- { int ret;
- ret = slice_del(z); /* delete, line 179 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-extern int finnish_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 185 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 185 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- z->B[0] = 0; /* unset ending_removed, line 186 */
- z->lb = z->c; z->c = z->l; /* backwards, line 187 */
-
- { int m = z->l - z->c; (void) m; /* do, line 188 */
- { int ret = r_particle_etc(z);
- if (ret == 0) goto lab1; /* call particle_etc, line 188 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 189 */
- { int ret = r_possessive(z);
- if (ret == 0) goto lab2; /* call possessive, line 189 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 190 */
- { int ret = r_case_ending(z);
- if (ret == 0) goto lab3; /* call case_ending, line 190 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 191 */
- { int ret = r_other_endings(z);
- if (ret == 0) goto lab4; /* call other_endings, line 191 */
- if (ret < 0) return ret;
- }
- lab4:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* or, line 192 */
- if (!(z->B[0])) goto lab6; /* Boolean test ending_removed, line 192 */
- { int m = z->l - z->c; (void) m; /* do, line 192 */
- { int ret = r_i_plural(z);
- if (ret == 0) goto lab7; /* call i_plural, line 192 */
- if (ret < 0) return ret;
- }
- lab7:
- z->c = z->l - m;
- }
- goto lab5;
- lab6:
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* do, line 192 */
- { int ret = r_t_plural(z);
- if (ret == 0) goto lab8; /* call t_plural, line 192 */
- if (ret < 0) return ret;
- }
- lab8:
- z->c = z->l - m;
- }
- }
-lab5:
- { int m = z->l - z->c; (void) m; /* do, line 193 */
- { int ret = r_tidy(z);
- if (ret == 0) goto lab9; /* call tidy, line 193 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = z->l - m;
- }
- z->c = z->lb;
- return 1;
-}
-
-extern struct SN_env * finnish_UTF_8_create_env(void) { return SN_create_env(1, 2, 1); }
-
-extern void finnish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_finnish.h b/src/libstemmer/src_c/stem_UTF_8_finnish.h
deleted file mode 100644
index 10ea8d3a3..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_finnish.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * finnish_UTF_8_create_env(void);
-extern void finnish_UTF_8_close_env(struct SN_env * z);
-
-extern int finnish_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_french.c b/src/libstemmer/src_c/stem_UTF_8_french.c
deleted file mode 100644
index 805899da3..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_french.c
+++ /dev/null
@@ -1,1309 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int french_UTF_8_stem(struct SN_env * z);
-static int r_un_accent(struct SN_env * z);
-static int r_un_double(struct SN_env * z);
-static int r_residual_suffix(struct SN_env * z);
-static int r_verb_suffix(struct SN_env * z);
-static int r_i_verb_suffix(struct SN_env * z);
-static int r_standard_suffix(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_RV(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * french_UTF_8_create_env(void);
-extern void french_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_1[1] = { 'I' };
-static symbol s_0_2[1] = { 'U' };
-static symbol s_0_3[1] = { 'Y' };
-
-static struct among a_0[4] =
-{
-/* 0 */ { 0, 0, -1, 4, 0},
-/* 1 */ { 1, s_0_1, 0, 1, 0},
-/* 2 */ { 1, s_0_2, 0, 2, 0},
-/* 3 */ { 1, s_0_3, 0, 3, 0}
-};
-
-static symbol s_1_0[3] = { 'i', 'q', 'U' };
-static symbol s_1_1[3] = { 'a', 'b', 'l' };
-static symbol s_1_2[4] = { 'I', 0xC3, 0xA8, 'r' };
-static symbol s_1_3[4] = { 'i', 0xC3, 0xA8, 'r' };
-static symbol s_1_4[3] = { 'e', 'u', 's' };
-static symbol s_1_5[2] = { 'i', 'v' };
-
-static struct among a_1[6] =
-{
-/* 0 */ { 3, s_1_0, -1, 3, 0},
-/* 1 */ { 3, s_1_1, -1, 3, 0},
-/* 2 */ { 4, s_1_2, -1, 4, 0},
-/* 3 */ { 4, s_1_3, -1, 4, 0},
-/* 4 */ { 3, s_1_4, -1, 2, 0},
-/* 5 */ { 2, s_1_5, -1, 1, 0}
-};
-
-static symbol s_2_0[2] = { 'i', 'c' };
-static symbol s_2_1[4] = { 'a', 'b', 'i', 'l' };
-static symbol s_2_2[2] = { 'i', 'v' };
-
-static struct among a_2[3] =
-{
-/* 0 */ { 2, s_2_0, -1, 2, 0},
-/* 1 */ { 4, s_2_1, -1, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 3, 0}
-};
-
-static symbol s_3_0[4] = { 'i', 'q', 'U', 'e' };
-static symbol s_3_1[6] = { 'a', 't', 'r', 'i', 'c', 'e' };
-static symbol s_3_2[4] = { 'a', 'n', 'c', 'e' };
-static symbol s_3_3[4] = { 'e', 'n', 'c', 'e' };
-static symbol s_3_4[5] = { 'l', 'o', 'g', 'i', 'e' };
-static symbol s_3_5[4] = { 'a', 'b', 'l', 'e' };
-static symbol s_3_6[4] = { 'i', 's', 'm', 'e' };
-static symbol s_3_7[4] = { 'e', 'u', 's', 'e' };
-static symbol s_3_8[4] = { 'i', 's', 't', 'e' };
-static symbol s_3_9[3] = { 'i', 'v', 'e' };
-static symbol s_3_10[2] = { 'i', 'f' };
-static symbol s_3_11[5] = { 'u', 's', 'i', 'o', 'n' };
-static symbol s_3_12[5] = { 'a', 't', 'i', 'o', 'n' };
-static symbol s_3_13[5] = { 'u', 't', 'i', 'o', 'n' };
-static symbol s_3_14[5] = { 'a', 't', 'e', 'u', 'r' };
-static symbol s_3_15[5] = { 'i', 'q', 'U', 'e', 's' };
-static symbol s_3_16[7] = { 'a', 't', 'r', 'i', 'c', 'e', 's' };
-static symbol s_3_17[5] = { 'a', 'n', 'c', 'e', 's' };
-static symbol s_3_18[5] = { 'e', 'n', 'c', 'e', 's' };
-static symbol s_3_19[6] = { 'l', 'o', 'g', 'i', 'e', 's' };
-static symbol s_3_20[5] = { 'a', 'b', 'l', 'e', 's' };
-static symbol s_3_21[5] = { 'i', 's', 'm', 'e', 's' };
-static symbol s_3_22[5] = { 'e', 'u', 's', 'e', 's' };
-static symbol s_3_23[5] = { 'i', 's', 't', 'e', 's' };
-static symbol s_3_24[4] = { 'i', 'v', 'e', 's' };
-static symbol s_3_25[3] = { 'i', 'f', 's' };
-static symbol s_3_26[6] = { 'u', 's', 'i', 'o', 'n', 's' };
-static symbol s_3_27[6] = { 'a', 't', 'i', 'o', 'n', 's' };
-static symbol s_3_28[6] = { 'u', 't', 'i', 'o', 'n', 's' };
-static symbol s_3_29[6] = { 'a', 't', 'e', 'u', 'r', 's' };
-static symbol s_3_30[5] = { 'm', 'e', 'n', 't', 's' };
-static symbol s_3_31[6] = { 'e', 'm', 'e', 'n', 't', 's' };
-static symbol s_3_32[9] = { 'i', 's', 's', 'e', 'm', 'e', 'n', 't', 's' };
-static symbol s_3_33[5] = { 'i', 't', 0xC3, 0xA9, 's' };
-static symbol s_3_34[4] = { 'm', 'e', 'n', 't' };
-static symbol s_3_35[5] = { 'e', 'm', 'e', 'n', 't' };
-static symbol s_3_36[8] = { 'i', 's', 's', 'e', 'm', 'e', 'n', 't' };
-static symbol s_3_37[6] = { 'a', 'm', 'm', 'e', 'n', 't' };
-static symbol s_3_38[6] = { 'e', 'm', 'm', 'e', 'n', 't' };
-static symbol s_3_39[3] = { 'a', 'u', 'x' };
-static symbol s_3_40[4] = { 'e', 'a', 'u', 'x' };
-static symbol s_3_41[3] = { 'e', 'u', 'x' };
-static symbol s_3_42[4] = { 'i', 't', 0xC3, 0xA9 };
-
-static struct among a_3[43] =
-{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 6, s_3_1, -1, 2, 0},
-/* 2 */ { 4, s_3_2, -1, 1, 0},
-/* 3 */ { 4, s_3_3, -1, 5, 0},
-/* 4 */ { 5, s_3_4, -1, 3, 0},
-/* 5 */ { 4, s_3_5, -1, 1, 0},
-/* 6 */ { 4, s_3_6, -1, 1, 0},
-/* 7 */ { 4, s_3_7, -1, 11, 0},
-/* 8 */ { 4, s_3_8, -1, 1, 0},
-/* 9 */ { 3, s_3_9, -1, 8, 0},
-/* 10 */ { 2, s_3_10, -1, 8, 0},
-/* 11 */ { 5, s_3_11, -1, 4, 0},
-/* 12 */ { 5, s_3_12, -1, 2, 0},
-/* 13 */ { 5, s_3_13, -1, 4, 0},
-/* 14 */ { 5, s_3_14, -1, 2, 0},
-/* 15 */ { 5, s_3_15, -1, 1, 0},
-/* 16 */ { 7, s_3_16, -1, 2, 0},
-/* 17 */ { 5, s_3_17, -1, 1, 0},
-/* 18 */ { 5, s_3_18, -1, 5, 0},
-/* 19 */ { 6, s_3_19, -1, 3, 0},
-/* 20 */ { 5, s_3_20, -1, 1, 0},
-/* 21 */ { 5, s_3_21, -1, 1, 0},
-/* 22 */ { 5, s_3_22, -1, 11, 0},
-/* 23 */ { 5, s_3_23, -1, 1, 0},
-/* 24 */ { 4, s_3_24, -1, 8, 0},
-/* 25 */ { 3, s_3_25, -1, 8, 0},
-/* 26 */ { 6, s_3_26, -1, 4, 0},
-/* 27 */ { 6, s_3_27, -1, 2, 0},
-/* 28 */ { 6, s_3_28, -1, 4, 0},
-/* 29 */ { 6, s_3_29, -1, 2, 0},
-/* 30 */ { 5, s_3_30, -1, 15, 0},
-/* 31 */ { 6, s_3_31, 30, 6, 0},
-/* 32 */ { 9, s_3_32, 31, 12, 0},
-/* 33 */ { 5, s_3_33, -1, 7, 0},
-/* 34 */ { 4, s_3_34, -1, 15, 0},
-/* 35 */ { 5, s_3_35, 34, 6, 0},
-/* 36 */ { 8, s_3_36, 35, 12, 0},
-/* 37 */ { 6, s_3_37, 34, 13, 0},
-/* 38 */ { 6, s_3_38, 34, 14, 0},
-/* 39 */ { 3, s_3_39, -1, 10, 0},
-/* 40 */ { 4, s_3_40, 39, 9, 0},
-/* 41 */ { 3, s_3_41, -1, 1, 0},
-/* 42 */ { 4, s_3_42, -1, 7, 0}
-};
-
-static symbol s_4_0[3] = { 'i', 'r', 'a' };
-static symbol s_4_1[2] = { 'i', 'e' };
-static symbol s_4_2[4] = { 'i', 's', 's', 'e' };
-static symbol s_4_3[7] = { 'i', 's', 's', 'a', 'n', 't', 'e' };
-static symbol s_4_4[1] = { 'i' };
-static symbol s_4_5[4] = { 'i', 'r', 'a', 'i' };
-static symbol s_4_6[2] = { 'i', 'r' };
-static symbol s_4_7[4] = { 'i', 'r', 'a', 's' };
-static symbol s_4_8[3] = { 'i', 'e', 's' };
-static symbol s_4_9[5] = { 0xC3, 0xAE, 'm', 'e', 's' };
-static symbol s_4_10[5] = { 'i', 's', 's', 'e', 's' };
-static symbol s_4_11[8] = { 'i', 's', 's', 'a', 'n', 't', 'e', 's' };
-static symbol s_4_12[5] = { 0xC3, 0xAE, 't', 'e', 's' };
-static symbol s_4_13[2] = { 'i', 's' };
-static symbol s_4_14[5] = { 'i', 'r', 'a', 'i', 's' };
-static symbol s_4_15[6] = { 'i', 's', 's', 'a', 'i', 's' };
-static symbol s_4_16[6] = { 'i', 'r', 'i', 'o', 'n', 's' };
-static symbol s_4_17[7] = { 'i', 's', 's', 'i', 'o', 'n', 's' };
-static symbol s_4_18[5] = { 'i', 'r', 'o', 'n', 's' };
-static symbol s_4_19[6] = { 'i', 's', 's', 'o', 'n', 's' };
-static symbol s_4_20[7] = { 'i', 's', 's', 'a', 'n', 't', 's' };
-static symbol s_4_21[2] = { 'i', 't' };
-static symbol s_4_22[5] = { 'i', 'r', 'a', 'i', 't' };
-static symbol s_4_23[6] = { 'i', 's', 's', 'a', 'i', 't' };
-static symbol s_4_24[6] = { 'i', 's', 's', 'a', 'n', 't' };
-static symbol s_4_25[7] = { 'i', 'r', 'a', 'I', 'e', 'n', 't' };
-static symbol s_4_26[8] = { 'i', 's', 's', 'a', 'I', 'e', 'n', 't' };
-static symbol s_4_27[5] = { 'i', 'r', 'e', 'n', 't' };
-static symbol s_4_28[6] = { 'i', 's', 's', 'e', 'n', 't' };
-static symbol s_4_29[5] = { 'i', 'r', 'o', 'n', 't' };
-static symbol s_4_30[3] = { 0xC3, 0xAE, 't' };
-static symbol s_4_31[5] = { 'i', 'r', 'i', 'e', 'z' };
-static symbol s_4_32[6] = { 'i', 's', 's', 'i', 'e', 'z' };
-static symbol s_4_33[4] = { 'i', 'r', 'e', 'z' };
-static symbol s_4_34[5] = { 'i', 's', 's', 'e', 'z' };
-
-static struct among a_4[35] =
-{
-/* 0 */ { 3, s_4_0, -1, 1, 0},
-/* 1 */ { 2, s_4_1, -1, 1, 0},
-/* 2 */ { 4, s_4_2, -1, 1, 0},
-/* 3 */ { 7, s_4_3, -1, 1, 0},
-/* 4 */ { 1, s_4_4, -1, 1, 0},
-/* 5 */ { 4, s_4_5, 4, 1, 0},
-/* 6 */ { 2, s_4_6, -1, 1, 0},
-/* 7 */ { 4, s_4_7, -1, 1, 0},
-/* 8 */ { 3, s_4_8, -1, 1, 0},
-/* 9 */ { 5, s_4_9, -1, 1, 0},
-/* 10 */ { 5, s_4_10, -1, 1, 0},
-/* 11 */ { 8, s_4_11, -1, 1, 0},
-/* 12 */ { 5, s_4_12, -1, 1, 0},
-/* 13 */ { 2, s_4_13, -1, 1, 0},
-/* 14 */ { 5, s_4_14, 13, 1, 0},
-/* 15 */ { 6, s_4_15, 13, 1, 0},
-/* 16 */ { 6, s_4_16, -1, 1, 0},
-/* 17 */ { 7, s_4_17, -1, 1, 0},
-/* 18 */ { 5, s_4_18, -1, 1, 0},
-/* 19 */ { 6, s_4_19, -1, 1, 0},
-/* 20 */ { 7, s_4_20, -1, 1, 0},
-/* 21 */ { 2, s_4_21, -1, 1, 0},
-/* 22 */ { 5, s_4_22, 21, 1, 0},
-/* 23 */ { 6, s_4_23, 21, 1, 0},
-/* 24 */ { 6, s_4_24, -1, 1, 0},
-/* 25 */ { 7, s_4_25, -1, 1, 0},
-/* 26 */ { 8, s_4_26, -1, 1, 0},
-/* 27 */ { 5, s_4_27, -1, 1, 0},
-/* 28 */ { 6, s_4_28, -1, 1, 0},
-/* 29 */ { 5, s_4_29, -1, 1, 0},
-/* 30 */ { 3, s_4_30, -1, 1, 0},
-/* 31 */ { 5, s_4_31, -1, 1, 0},
-/* 32 */ { 6, s_4_32, -1, 1, 0},
-/* 33 */ { 4, s_4_33, -1, 1, 0},
-/* 34 */ { 5, s_4_34, -1, 1, 0}
-};
-
-static symbol s_5_0[1] = { 'a' };
-static symbol s_5_1[3] = { 'e', 'r', 'a' };
-static symbol s_5_2[4] = { 'a', 's', 's', 'e' };
-static symbol s_5_3[4] = { 'a', 'n', 't', 'e' };
-static symbol s_5_4[3] = { 0xC3, 0xA9, 'e' };
-static symbol s_5_5[2] = { 'a', 'i' };
-static symbol s_5_6[4] = { 'e', 'r', 'a', 'i' };
-static symbol s_5_7[2] = { 'e', 'r' };
-static symbol s_5_8[2] = { 'a', 's' };
-static symbol s_5_9[4] = { 'e', 'r', 'a', 's' };
-static symbol s_5_10[5] = { 0xC3, 0xA2, 'm', 'e', 's' };
-static symbol s_5_11[5] = { 'a', 's', 's', 'e', 's' };
-static symbol s_5_12[5] = { 'a', 'n', 't', 'e', 's' };
-static symbol s_5_13[5] = { 0xC3, 0xA2, 't', 'e', 's' };
-static symbol s_5_14[4] = { 0xC3, 0xA9, 'e', 's' };
-static symbol s_5_15[3] = { 'a', 'i', 's' };
-static symbol s_5_16[5] = { 'e', 'r', 'a', 'i', 's' };
-static symbol s_5_17[4] = { 'i', 'o', 'n', 's' };
-static symbol s_5_18[6] = { 'e', 'r', 'i', 'o', 'n', 's' };
-static symbol s_5_19[7] = { 'a', 's', 's', 'i', 'o', 'n', 's' };
-static symbol s_5_20[5] = { 'e', 'r', 'o', 'n', 's' };
-static symbol s_5_21[4] = { 'a', 'n', 't', 's' };
-static symbol s_5_22[3] = { 0xC3, 0xA9, 's' };
-static symbol s_5_23[3] = { 'a', 'i', 't' };
-static symbol s_5_24[5] = { 'e', 'r', 'a', 'i', 't' };
-static symbol s_5_25[3] = { 'a', 'n', 't' };
-static symbol s_5_26[5] = { 'a', 'I', 'e', 'n', 't' };
-static symbol s_5_27[7] = { 'e', 'r', 'a', 'I', 'e', 'n', 't' };
-static symbol s_5_28[6] = { 0xC3, 0xA8, 'r', 'e', 'n', 't' };
-static symbol s_5_29[6] = { 'a', 's', 's', 'e', 'n', 't' };
-static symbol s_5_30[5] = { 'e', 'r', 'o', 'n', 't' };
-static symbol s_5_31[3] = { 0xC3, 0xA2, 't' };
-static symbol s_5_32[2] = { 'e', 'z' };
-static symbol s_5_33[3] = { 'i', 'e', 'z' };
-static symbol s_5_34[5] = { 'e', 'r', 'i', 'e', 'z' };
-static symbol s_5_35[6] = { 'a', 's', 's', 'i', 'e', 'z' };
-static symbol s_5_36[4] = { 'e', 'r', 'e', 'z' };
-static symbol s_5_37[2] = { 0xC3, 0xA9 };
-
-static struct among a_5[38] =
-{
-/* 0 */ { 1, s_5_0, -1, 3, 0},
-/* 1 */ { 3, s_5_1, 0, 2, 0},
-/* 2 */ { 4, s_5_2, -1, 3, 0},
-/* 3 */ { 4, s_5_3, -1, 3, 0},
-/* 4 */ { 3, s_5_4, -1, 2, 0},
-/* 5 */ { 2, s_5_5, -1, 3, 0},
-/* 6 */ { 4, s_5_6, 5, 2, 0},
-/* 7 */ { 2, s_5_7, -1, 2, 0},
-/* 8 */ { 2, s_5_8, -1, 3, 0},
-/* 9 */ { 4, s_5_9, 8, 2, 0},
-/* 10 */ { 5, s_5_10, -1, 3, 0},
-/* 11 */ { 5, s_5_11, -1, 3, 0},
-/* 12 */ { 5, s_5_12, -1, 3, 0},
-/* 13 */ { 5, s_5_13, -1, 3, 0},
-/* 14 */ { 4, s_5_14, -1, 2, 0},
-/* 15 */ { 3, s_5_15, -1, 3, 0},
-/* 16 */ { 5, s_5_16, 15, 2, 0},
-/* 17 */ { 4, s_5_17, -1, 1, 0},
-/* 18 */ { 6, s_5_18, 17, 2, 0},
-/* 19 */ { 7, s_5_19, 17, 3, 0},
-/* 20 */ { 5, s_5_20, -1, 2, 0},
-/* 21 */ { 4, s_5_21, -1, 3, 0},
-/* 22 */ { 3, s_5_22, -1, 2, 0},
-/* 23 */ { 3, s_5_23, -1, 3, 0},
-/* 24 */ { 5, s_5_24, 23, 2, 0},
-/* 25 */ { 3, s_5_25, -1, 3, 0},
-/* 26 */ { 5, s_5_26, -1, 3, 0},
-/* 27 */ { 7, s_5_27, 26, 2, 0},
-/* 28 */ { 6, s_5_28, -1, 2, 0},
-/* 29 */ { 6, s_5_29, -1, 3, 0},
-/* 30 */ { 5, s_5_30, -1, 2, 0},
-/* 31 */ { 3, s_5_31, -1, 3, 0},
-/* 32 */ { 2, s_5_32, -1, 2, 0},
-/* 33 */ { 3, s_5_33, 32, 2, 0},
-/* 34 */ { 5, s_5_34, 33, 2, 0},
-/* 35 */ { 6, s_5_35, 33, 3, 0},
-/* 36 */ { 4, s_5_36, 32, 2, 0},
-/* 37 */ { 2, s_5_37, -1, 2, 0}
-};
-
-static symbol s_6_0[1] = { 'e' };
-static symbol s_6_1[5] = { 'I', 0xC3, 0xA8, 'r', 'e' };
-static symbol s_6_2[5] = { 'i', 0xC3, 0xA8, 'r', 'e' };
-static symbol s_6_3[3] = { 'i', 'o', 'n' };
-static symbol s_6_4[3] = { 'I', 'e', 'r' };
-static symbol s_6_5[3] = { 'i', 'e', 'r' };
-static symbol s_6_6[2] = { 0xC3, 0xAB };
-
-static struct among a_6[7] =
-{
-/* 0 */ { 1, s_6_0, -1, 3, 0},
-/* 1 */ { 5, s_6_1, 0, 2, 0},
-/* 2 */ { 5, s_6_2, 0, 2, 0},
-/* 3 */ { 3, s_6_3, -1, 1, 0},
-/* 4 */ { 3, s_6_4, -1, 2, 0},
-/* 5 */ { 3, s_6_5, -1, 2, 0},
-/* 6 */ { 2, s_6_6, -1, 4, 0}
-};
-
-static symbol s_7_0[3] = { 'e', 'l', 'l' };
-static symbol s_7_1[4] = { 'e', 'i', 'l', 'l' };
-static symbol s_7_2[3] = { 'e', 'n', 'n' };
-static symbol s_7_3[3] = { 'o', 'n', 'n' };
-static symbol s_7_4[3] = { 'e', 't', 't' };
-
-static struct among a_7[5] =
-{
-/* 0 */ { 3, s_7_0, -1, -1, 0},
-/* 1 */ { 4, s_7_1, -1, -1, 0},
-/* 2 */ { 3, s_7_2, -1, -1, 0},
-/* 3 */ { 3, s_7_3, -1, -1, 0},
-/* 4 */ { 3, s_7_4, -1, -1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 };
-
-static unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
-
-static symbol s_0[] = { 'u' };
-static symbol s_1[] = { 'U' };
-static symbol s_2[] = { 'i' };
-static symbol s_3[] = { 'I' };
-static symbol s_4[] = { 'y' };
-static symbol s_5[] = { 'Y' };
-static symbol s_6[] = { 'y' };
-static symbol s_7[] = { 'Y' };
-static symbol s_8[] = { 'q' };
-static symbol s_9[] = { 'u' };
-static symbol s_10[] = { 'U' };
-static symbol s_11[] = { 'i' };
-static symbol s_12[] = { 'u' };
-static symbol s_13[] = { 'y' };
-static symbol s_14[] = { 'i', 'c' };
-static symbol s_15[] = { 'i', 'q', 'U' };
-static symbol s_16[] = { 'l', 'o', 'g' };
-static symbol s_17[] = { 'u' };
-static symbol s_18[] = { 'e', 'n', 't' };
-static symbol s_19[] = { 'a', 't' };
-static symbol s_20[] = { 'e', 'u', 'x' };
-static symbol s_21[] = { 'i' };
-static symbol s_22[] = { 'a', 'b', 'l' };
-static symbol s_23[] = { 'i', 'q', 'U' };
-static symbol s_24[] = { 'a', 't' };
-static symbol s_25[] = { 'i', 'c' };
-static symbol s_26[] = { 'i', 'q', 'U' };
-static symbol s_27[] = { 'e', 'a', 'u' };
-static symbol s_28[] = { 'a', 'l' };
-static symbol s_29[] = { 'e', 'u', 'x' };
-static symbol s_30[] = { 'a', 'n', 't' };
-static symbol s_31[] = { 'e', 'n', 't' };
-static symbol s_32[] = { 'e' };
-static symbol s_33[] = { 's' };
-static symbol s_34[] = { 's' };
-static symbol s_35[] = { 't' };
-static symbol s_36[] = { 'i' };
-static symbol s_37[] = { 'g', 'u' };
-static symbol s_38[] = { 0xC3, 0xA9 };
-static symbol s_39[] = { 0xC3, 0xA8 };
-static symbol s_40[] = { 'e' };
-static symbol s_41[] = { 'Y' };
-static symbol s_42[] = { 'i' };
-static symbol s_43[] = { 0xC3, 0xA7 };
-static symbol s_44[] = { 'c' };
-
-static int r_prelude(struct SN_env * z) {
- while(1) { /* repeat, line 38 */
- int c = z->c;
- while(1) { /* goto, line 38 */
- int c = z->c;
- { int c = z->c; /* or, line 44 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab3;
- z->bra = z->c; /* [, line 40 */
- { int c = z->c; /* or, line 40 */
- if (!(eq_s(z, 1, s_0))) goto lab5;
- z->ket = z->c; /* ], line 40 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab5;
- { int ret;
- ret = slice_from_s(z, 1, s_1); /* <-, line 40 */
- if (ret < 0) return ret;
- }
- goto lab4;
- lab5:
- z->c = c;
- if (!(eq_s(z, 1, s_2))) goto lab6;
- z->ket = z->c; /* ], line 41 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab6;
- { int ret;
- ret = slice_from_s(z, 1, s_3); /* <-, line 41 */
- if (ret < 0) return ret;
- }
- goto lab4;
- lab6:
- z->c = c;
- if (!(eq_s(z, 1, s_4))) goto lab3;
- z->ket = z->c; /* ], line 42 */
- { int ret;
- ret = slice_from_s(z, 1, s_5); /* <-, line 42 */
- if (ret < 0) return ret;
- }
- }
- lab4:
- goto lab2;
- lab3:
- z->c = c;
- z->bra = z->c; /* [, line 45 */
- if (!(eq_s(z, 1, s_6))) goto lab7;
- z->ket = z->c; /* ], line 45 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab7;
- { int ret;
- ret = slice_from_s(z, 1, s_7); /* <-, line 45 */
- if (ret < 0) return ret;
- }
- goto lab2;
- lab7:
- z->c = c;
- if (!(eq_s(z, 1, s_8))) goto lab1;
- z->bra = z->c; /* [, line 47 */
- if (!(eq_s(z, 1, s_9))) goto lab1;
- z->ket = z->c; /* ], line 47 */
- { int ret;
- ret = slice_from_s(z, 1, s_10); /* <-, line 47 */
- if (ret < 0) return ret;
- }
- }
- lab2:
- z->c = c;
- break;
- lab1:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* goto, line 38 */
- }
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- z->I[2] = z->l;
- { int c = z->c; /* do, line 56 */
- { int c = z->c; /* or, line 57 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab2;
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab2;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab2;
- z->c = c; /* next, line 57 */
- }
- goto lab1;
- lab2:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 57 */
- }
- while(1) { /* gopast, line 57 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 57 */
- }
- }
- }
- lab1:
- z->I[0] = z->c; /* setmark pV, line 58 */
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 60 */
- while(1) { /* gopast, line 61 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab5;
- break;
- lab5:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 61 */
- }
- }
- while(1) { /* gopast, line 61 */
- if (!(out_grouping_U(z, g_v, 97, 251))) goto lab6;
- break;
- lab6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 61 */
- }
- }
- z->I[1] = z->c; /* setmark p1, line 61 */
- while(1) { /* gopast, line 62 */
- if (!(in_grouping_U(z, g_v, 97, 251))) goto lab7;
- break;
- lab7:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 62 */
- }
- }
- while(1) { /* gopast, line 62 */
- if (!(out_grouping_U(z, g_v, 97, 251))) goto lab8;
- break;
- lab8:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 62 */
- }
- }
- z->I[2] = z->c; /* setmark p2, line 62 */
- lab4:
- z->c = c;
- }
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 66 */
- int c = z->c;
- z->bra = z->c; /* [, line 68 */
- among_var = find_among(z, a_0, 4); /* substring, line 68 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 68 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 1, s_11); /* <-, line 69 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_12); /* <-, line 70 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 1, s_13); /* <-, line 71 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 72 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_RV(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[2] <= z->c)) return 0;
- return 1;
-}
-
-static int r_standard_suffix(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 83 */
- among_var = find_among_b(z, a_3, 43); /* substring, line 83 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 83 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 87 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 87 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 90 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 90 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 91 */
- z->ket = z->c; /* [, line 91 */
- if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 91 */
- { int m = z->l - z->c; (void) m; /* or, line 91 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab2; /* call R2, line 91 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 91 */
- if (ret < 0) return ret;
- }
- goto lab1;
- lab2:
- z->c = z->l - m;
- { int ret;
- ret = slice_from_s(z, 3, s_15); /* <-, line 91 */
- if (ret < 0) return ret;
- }
- }
- lab1:
- lab0:
- ;
- }
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 95 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_16); /* <-, line 95 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 98 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 1, s_17); /* <-, line 98 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 101 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_18); /* <-, line 101 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 105 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 105 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 106 */
- z->ket = z->c; /* [, line 107 */
- among_var = find_among_b(z, a_1, 6); /* substring, line 107 */
- if (!(among_var)) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 107 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab3; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 108 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 108 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 108 */
- if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 108 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 108 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 108 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* or, line 109 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab5; /* call R2, line 109 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 109 */
- if (ret < 0) return ret;
- }
- goto lab4;
- lab5:
- z->c = z->l - m;
- { int ret = r_R1(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R1, line 109 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_20); /* <-, line 109 */
- if (ret < 0) return ret;
- }
- }
- lab4:
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 111 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 111 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = r_RV(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call RV, line 113 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 1, s_21); /* <-, line 113 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab3:
- ;
- }
- break;
- case 7:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 120 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 120 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 121 */
- z->ket = z->c; /* [, line 122 */
- among_var = find_among_b(z, a_2, 3); /* substring, line 122 */
- if (!(among_var)) { z->c = z->l - m; goto lab6; }
- z->bra = z->c; /* ], line 122 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab6; }
- case 1:
- { int m = z->l - z->c; (void) m; /* or, line 123 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab8; /* call R2, line 123 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 123 */
- if (ret < 0) return ret;
- }
- goto lab7;
- lab8:
- z->c = z->l - m;
- { int ret;
- ret = slice_from_s(z, 3, s_22); /* <-, line 123 */
- if (ret < 0) return ret;
- }
- }
- lab7:
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* or, line 124 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab10; /* call R2, line 124 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 124 */
- if (ret < 0) return ret;
- }
- goto lab9;
- lab10:
- z->c = z->l - m;
- { int ret;
- ret = slice_from_s(z, 3, s_23); /* <-, line 124 */
- if (ret < 0) return ret;
- }
- }
- lab9:
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab6; } /* call R2, line 125 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 125 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab6:
- ;
- }
- break;
- case 8:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 132 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 132 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 133 */
- z->ket = z->c; /* [, line 133 */
- if (!(eq_s_b(z, 2, s_24))) { z->c = z->l - m; goto lab11; }
- z->bra = z->c; /* ], line 133 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab11; } /* call R2, line 133 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 133 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 133 */
- if (!(eq_s_b(z, 2, s_25))) { z->c = z->l - m; goto lab11; }
- z->bra = z->c; /* ], line 133 */
- { int m = z->l - z->c; (void) m; /* or, line 133 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab13; /* call R2, line 133 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 133 */
- if (ret < 0) return ret;
- }
- goto lab12;
- lab13:
- z->c = z->l - m;
- { int ret;
- ret = slice_from_s(z, 3, s_26); /* <-, line 133 */
- if (ret < 0) return ret;
- }
- }
- lab12:
- lab11:
- ;
- }
- break;
- case 9:
- { int ret;
- ret = slice_from_s(z, 3, s_27); /* <-, line 135 */
- if (ret < 0) return ret;
- }
- break;
- case 10:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 136 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 2, s_28); /* <-, line 136 */
- if (ret < 0) return ret;
- }
- break;
- case 11:
- { int m = z->l - z->c; (void) m; /* or, line 138 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab15; /* call R2, line 138 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 138 */
- if (ret < 0) return ret;
- }
- goto lab14;
- lab15:
- z->c = z->l - m;
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 138 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_29); /* <-, line 138 */
- if (ret < 0) return ret;
- }
- }
- lab14:
- break;
- case 12:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 141 */
- if (ret < 0) return ret;
- }
- if (!(out_grouping_b_U(z, g_v, 97, 251))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 141 */
- if (ret < 0) return ret;
- }
- break;
- case 13:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 146 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_30); /* <-, line 146 */
- if (ret < 0) return ret;
- }
- return 0; /* fail, line 146 */
- break;
- case 14:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 147 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_31); /* <-, line 147 */
- if (ret < 0) return ret;
- }
- return 0; /* fail, line 147 */
- break;
- case 15:
- { int m_test = z->l - z->c; /* test, line 149 */
- if (!(in_grouping_b_U(z, g_v, 97, 251))) return 0;
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 149 */
- if (ret < 0) return ret;
- }
- z->c = z->l - m_test;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 149 */
- if (ret < 0) return ret;
- }
- return 0; /* fail, line 149 */
- break;
- }
- return 1;
-}
-
-static int r_i_verb_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 154 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 154 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 155 */
- among_var = find_among_b(z, a_4, 35); /* substring, line 155 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 155 */
- switch(among_var) {
- case 0: { z->lb = m3; return 0; }
- case 1:
- if (!(out_grouping_b_U(z, g_v, 97, 251))) { z->lb = m3; return 0; }
- { int ret;
- ret = slice_del(z); /* delete, line 161 */
- if (ret < 0) return ret;
- }
- break;
- }
- z->lb = m3;
- }
- return 1;
-}
-
-static int r_verb_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 165 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 165 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 166 */
- among_var = find_among_b(z, a_5, 38); /* substring, line 166 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 166 */
- switch(among_var) {
- case 0: { z->lb = m3; return 0; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->lb = m3; return 0; } /* call R2, line 168 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 168 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_del(z); /* delete, line 176 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 181 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 182 */
- z->ket = z->c; /* [, line 182 */
- if (!(eq_s_b(z, 1, s_32))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 182 */
- { int ret;
- ret = slice_del(z); /* delete, line 182 */
- if (ret < 0) return ret;
- }
- lab0:
- ;
- }
- break;
- }
- z->lb = m3;
- }
- return 1;
-}
-
-static int r_residual_suffix(struct SN_env * z) {
- int among_var;
- { int m = z->l - z->c; (void) m; /* try, line 190 */
- z->ket = z->c; /* [, line 190 */
- if (!(eq_s_b(z, 1, s_33))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 190 */
- { int m_test = z->l - z->c; /* test, line 190 */
- if (!(out_grouping_b_U(z, g_keep_with_s, 97, 232))) { z->c = z->l - m; goto lab0; }
- z->c = z->l - m_test;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 190 */
- if (ret < 0) return ret;
- }
- lab0:
- ;
- }
- { int m3; /* setlimit, line 191 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 191 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 192 */
- among_var = find_among_b(z, a_6, 7); /* substring, line 192 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 192 */
- switch(among_var) {
- case 0: { z->lb = m3; return 0; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->lb = m3; return 0; } /* call R2, line 193 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* or, line 193 */
- if (!(eq_s_b(z, 1, s_34))) goto lab2;
- goto lab1;
- lab2:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_35))) { z->lb = m3; return 0; }
- }
- lab1:
- { int ret;
- ret = slice_del(z); /* delete, line 193 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_36); /* <-, line 195 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 196 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- if (!(eq_s_b(z, 2, s_37))) { z->lb = m3; return 0; }
- { int ret;
- ret = slice_del(z); /* delete, line 197 */
- if (ret < 0) return ret;
- }
- break;
- }
- z->lb = m3;
- }
- return 1;
-}
-
-static int r_un_double(struct SN_env * z) {
- { int m_test = z->l - z->c; /* test, line 203 */
- if (!(find_among_b(z, a_7, 5))) return 0; /* among, line 203 */
- z->c = z->l - m_test;
- }
- z->ket = z->c; /* [, line 203 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 203 */
- }
- z->bra = z->c; /* ], line 203 */
- { int ret;
- ret = slice_del(z); /* delete, line 203 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_un_accent(struct SN_env * z) {
- { int i = 1;
- while(1) { /* atleast, line 207 */
- if (!(out_grouping_b_U(z, g_v, 97, 251))) goto lab0;
- i--;
- continue;
- lab0:
- break;
- }
- if (i > 0) return 0;
- }
- z->ket = z->c; /* [, line 208 */
- { int m = z->l - z->c; (void) m; /* or, line 208 */
- if (!(eq_s_b(z, 2, s_38))) goto lab2;
- goto lab1;
- lab2:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_39))) return 0;
- }
-lab1:
- z->bra = z->c; /* ], line 208 */
- { int ret;
- ret = slice_from_s(z, 1, s_40); /* <-, line 208 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-extern int french_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 214 */
- { int ret = r_prelude(z);
- if (ret == 0) goto lab0; /* call prelude, line 214 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 215 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab1; /* call mark_regions, line 215 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 216 */
-
- { int m = z->l - z->c; (void) m; /* do, line 218 */
- { int m = z->l - z->c; (void) m; /* or, line 228 */
- { int m = z->l - z->c; (void) m; /* and, line 224 */
- { int m = z->l - z->c; (void) m; /* or, line 220 */
- { int ret = r_standard_suffix(z);
- if (ret == 0) goto lab6; /* call standard_suffix, line 220 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab6:
- z->c = z->l - m;
- { int ret = r_i_verb_suffix(z);
- if (ret == 0) goto lab7; /* call i_verb_suffix, line 221 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab7:
- z->c = z->l - m;
- { int ret = r_verb_suffix(z);
- if (ret == 0) goto lab4; /* call verb_suffix, line 222 */
- if (ret < 0) return ret;
- }
- }
- lab5:
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* try, line 225 */
- z->ket = z->c; /* [, line 225 */
- { int m = z->l - z->c; (void) m; /* or, line 225 */
- if (!(eq_s_b(z, 1, s_41))) goto lab10;
- z->bra = z->c; /* ], line 225 */
- { int ret;
- ret = slice_from_s(z, 1, s_42); /* <-, line 225 */
- if (ret < 0) return ret;
- }
- goto lab9;
- lab10:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_43))) { z->c = z->l - m; goto lab8; }
- z->bra = z->c; /* ], line 226 */
- { int ret;
- ret = slice_from_s(z, 1, s_44); /* <-, line 226 */
- if (ret < 0) return ret;
- }
- }
- lab9:
- lab8:
- ;
- }
- }
- goto lab3;
- lab4:
- z->c = z->l - m;
- { int ret = r_residual_suffix(z);
- if (ret == 0) goto lab2; /* call residual_suffix, line 229 */
- if (ret < 0) return ret;
- }
- }
- lab3:
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 234 */
- { int ret = r_un_double(z);
- if (ret == 0) goto lab11; /* call un_double, line 234 */
- if (ret < 0) return ret;
- }
- lab11:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 235 */
- { int ret = r_un_accent(z);
- if (ret == 0) goto lab12; /* call un_accent, line 235 */
- if (ret < 0) return ret;
- }
- lab12:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 237 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab13; /* call postlude, line 237 */
- if (ret < 0) return ret;
- }
- lab13:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * french_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); }
-
-extern void french_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_french.h b/src/libstemmer/src_c/stem_UTF_8_french.h
deleted file mode 100644
index 81d1c12fa..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_french.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * french_UTF_8_create_env(void);
-extern void french_UTF_8_close_env(struct SN_env * z);
-
-extern int french_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_german.c b/src/libstemmer/src_c/stem_UTF_8_german.c
deleted file mode 100644
index c0bc6936f..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_german.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int german_UTF_8_stem(struct SN_env * z);
-static int r_standard_suffix(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * german_UTF_8_create_env(void);
-extern void german_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_1[1] = { 'U' };
-static symbol s_0_2[1] = { 'Y' };
-static symbol s_0_3[2] = { 0xC3, 0xA4 };
-static symbol s_0_4[2] = { 0xC3, 0xB6 };
-static symbol s_0_5[2] = { 0xC3, 0xBC };
-
-static struct among a_0[6] =
-{
-/* 0 */ { 0, 0, -1, 6, 0},
-/* 1 */ { 1, s_0_1, 0, 2, 0},
-/* 2 */ { 1, s_0_2, 0, 1, 0},
-/* 3 */ { 2, s_0_3, 0, 3, 0},
-/* 4 */ { 2, s_0_4, 0, 4, 0},
-/* 5 */ { 2, s_0_5, 0, 5, 0}
-};
-
-static symbol s_1_0[1] = { 'e' };
-static symbol s_1_1[2] = { 'e', 'm' };
-static symbol s_1_2[2] = { 'e', 'n' };
-static symbol s_1_3[3] = { 'e', 'r', 'n' };
-static symbol s_1_4[2] = { 'e', 'r' };
-static symbol s_1_5[1] = { 's' };
-static symbol s_1_6[2] = { 'e', 's' };
-
-static struct among a_1[7] =
-{
-/* 0 */ { 1, s_1_0, -1, 1, 0},
-/* 1 */ { 2, s_1_1, -1, 1, 0},
-/* 2 */ { 2, s_1_2, -1, 1, 0},
-/* 3 */ { 3, s_1_3, -1, 1, 0},
-/* 4 */ { 2, s_1_4, -1, 1, 0},
-/* 5 */ { 1, s_1_5, -1, 2, 0},
-/* 6 */ { 2, s_1_6, 5, 1, 0}
-};
-
-static symbol s_2_0[2] = { 'e', 'n' };
-static symbol s_2_1[2] = { 'e', 'r' };
-static symbol s_2_2[2] = { 's', 't' };
-static symbol s_2_3[3] = { 'e', 's', 't' };
-
-static struct among a_2[4] =
-{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 2, s_2_1, -1, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 2, 0},
-/* 3 */ { 3, s_2_3, 2, 1, 0}
-};
-
-static symbol s_3_0[2] = { 'i', 'g' };
-static symbol s_3_1[4] = { 'l', 'i', 'c', 'h' };
-
-static struct among a_3[2] =
-{
-/* 0 */ { 2, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0}
-};
-
-static symbol s_4_0[3] = { 'e', 'n', 'd' };
-static symbol s_4_1[2] = { 'i', 'g' };
-static symbol s_4_2[3] = { 'u', 'n', 'g' };
-static symbol s_4_3[4] = { 'l', 'i', 'c', 'h' };
-static symbol s_4_4[4] = { 'i', 's', 'c', 'h' };
-static symbol s_4_5[2] = { 'i', 'k' };
-static symbol s_4_6[4] = { 'h', 'e', 'i', 't' };
-static symbol s_4_7[4] = { 'k', 'e', 'i', 't' };
-
-static struct among a_4[8] =
-{
-/* 0 */ { 3, s_4_0, -1, 1, 0},
-/* 1 */ { 2, s_4_1, -1, 2, 0},
-/* 2 */ { 3, s_4_2, -1, 1, 0},
-/* 3 */ { 4, s_4_3, -1, 3, 0},
-/* 4 */ { 4, s_4_4, -1, 2, 0},
-/* 5 */ { 2, s_4_5, -1, 2, 0},
-/* 6 */ { 4, s_4_6, -1, 3, 0},
-/* 7 */ { 4, s_4_7, -1, 4, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 };
-
-static unsigned char g_s_ending[] = { 117, 30, 5 };
-
-static unsigned char g_st_ending[] = { 117, 30, 4 };
-
-static symbol s_0[] = { 0xC3, 0x9F };
-static symbol s_1[] = { 's', 's' };
-static symbol s_2[] = { 'u' };
-static symbol s_3[] = { 'U' };
-static symbol s_4[] = { 'y' };
-static symbol s_5[] = { 'Y' };
-static symbol s_6[] = { 'y' };
-static symbol s_7[] = { 'u' };
-static symbol s_8[] = { 'a' };
-static symbol s_9[] = { 'o' };
-static symbol s_10[] = { 'u' };
-static symbol s_11[] = { 'i', 'g' };
-static symbol s_12[] = { 'e' };
-static symbol s_13[] = { 'e' };
-static symbol s_14[] = { 'e', 'r' };
-static symbol s_15[] = { 'e', 'n' };
-
-static int r_prelude(struct SN_env * z) {
- { int c_test = z->c; /* test, line 30 */
- while(1) { /* repeat, line 30 */
- int c = z->c;
- { int c = z->c; /* or, line 33 */
- z->bra = z->c; /* [, line 32 */
- if (!(eq_s(z, 2, s_0))) goto lab2;
- z->ket = z->c; /* ], line 32 */
- { int ret;
- ret = slice_from_s(z, 2, s_1); /* <-, line 32 */
- if (ret < 0) return ret;
- }
- goto lab1;
- lab2:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 33 */
- }
- }
- lab1:
- continue;
- lab0:
- z->c = c;
- break;
- }
- z->c = c_test;
- }
- while(1) { /* repeat, line 36 */
- int c = z->c;
- while(1) { /* goto, line 36 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab4;
- z->bra = z->c; /* [, line 37 */
- { int c = z->c; /* or, line 37 */
- if (!(eq_s(z, 1, s_2))) goto lab6;
- z->ket = z->c; /* ], line 37 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab6;
- { int ret;
- ret = slice_from_s(z, 1, s_3); /* <-, line 37 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab6:
- z->c = c;
- if (!(eq_s(z, 1, s_4))) goto lab4;
- z->ket = z->c; /* ], line 38 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab4;
- { int ret;
- ret = slice_from_s(z, 1, s_5); /* <-, line 38 */
- if (ret < 0) return ret;
- }
- }
- lab5:
- z->c = c;
- break;
- lab4:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab3;
- z->c = c; /* goto, line 36 */
- }
- }
- continue;
- lab3:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- { int c_test = z->c; /* test, line 47 */
- { int c = skip_utf8(z->p, z->c, 0, z->l, + 3);
- if (c < 0) return 0;
- z->c = c; /* hop, line 47 */
- }
- z->I[2] = z->c; /* setmark x, line 47 */
- z->c = c_test;
- }
- while(1) { /* gopast, line 49 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab0;
- break;
- lab0:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 49 */
- }
- }
- while(1) { /* gopast, line 49 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 49 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 49 */
- /* try, line 50 */
- if (!(z->I[0] < z->I[2])) goto lab2;
- z->I[0] = z->I[2];
-lab2:
- while(1) { /* gopast, line 51 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 51 */
- }
- }
- while(1) { /* gopast, line 51 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab4;
- break;
- lab4:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 51 */
- }
- }
- z->I[1] = z->c; /* setmark p2, line 51 */
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 55 */
- int c = z->c;
- z->bra = z->c; /* [, line 57 */
- among_var = find_among(z, a_0, 6); /* substring, line 57 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 57 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 1, s_6); /* <-, line 58 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_7); /* <-, line 59 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 1, s_8); /* <-, line 60 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 1, s_9); /* <-, line 61 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 1, s_10); /* <-, line 62 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 63 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_standard_suffix(struct SN_env * z) {
- int among_var;
- { int m = z->l - z->c; (void) m; /* do, line 74 */
- z->ket = z->c; /* [, line 75 */
- among_var = find_among_b(z, a_1, 7); /* substring, line 75 */
- if (!(among_var)) goto lab0;
- z->bra = z->c; /* ], line 75 */
- { int ret = r_R1(z);
- if (ret == 0) goto lab0; /* call R1, line 75 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 77 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- if (!(in_grouping_b_U(z, g_s_ending, 98, 116))) goto lab0;
- { int ret;
- ret = slice_del(z); /* delete, line 80 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab0:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 84 */
- z->ket = z->c; /* [, line 85 */
- among_var = find_among_b(z, a_2, 4); /* substring, line 85 */
- if (!(among_var)) goto lab1;
- z->bra = z->c; /* ], line 85 */
- { int ret = r_R1(z);
- if (ret == 0) goto lab1; /* call R1, line 85 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: goto lab1;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 87 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- if (!(in_grouping_b_U(z, g_st_ending, 98, 116))) goto lab1;
- { int c = skip_utf8(z->p, z->c, z->lb, z->l, - 3);
- if (c < 0) goto lab1;
- z->c = c; /* hop, line 90 */
- }
- { int ret;
- ret = slice_del(z); /* delete, line 90 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 94 */
- z->ket = z->c; /* [, line 95 */
- among_var = find_among_b(z, a_4, 8); /* substring, line 95 */
- if (!(among_var)) goto lab2;
- z->bra = z->c; /* ], line 95 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab2; /* call R2, line 95 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: goto lab2;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 97 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 98 */
- z->ket = z->c; /* [, line 98 */
- if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 98 */
- { int m = z->l - z->c; (void) m; /* not, line 98 */
- if (!(eq_s_b(z, 1, s_12))) goto lab4;
- { z->c = z->l - m; goto lab3; }
- lab4:
- z->c = z->l - m;
- }
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 98 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 98 */
- if (ret < 0) return ret;
- }
- lab3:
- ;
- }
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* not, line 101 */
- if (!(eq_s_b(z, 1, s_13))) goto lab5;
- goto lab2;
- lab5:
- z->c = z->l - m;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 101 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 104 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 105 */
- z->ket = z->c; /* [, line 106 */
- { int m = z->l - z->c; (void) m; /* or, line 106 */
- if (!(eq_s_b(z, 2, s_14))) goto lab8;
- goto lab7;
- lab8:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m; goto lab6; }
- }
- lab7:
- z->bra = z->c; /* ], line 106 */
- { int ret = r_R1(z);
- if (ret == 0) { z->c = z->l - m; goto lab6; } /* call R1, line 106 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 106 */
- if (ret < 0) return ret;
- }
- lab6:
- ;
- }
- break;
- case 4:
- { int ret;
- ret = slice_del(z); /* delete, line 110 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 111 */
- z->ket = z->c; /* [, line 112 */
- among_var = find_among_b(z, a_3, 2); /* substring, line 112 */
- if (!(among_var)) { z->c = z->l - m; goto lab9; }
- z->bra = z->c; /* ], line 112 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab9; } /* call R2, line 112 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab9; }
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 114 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab9:
- ;
- }
- break;
- }
- lab2:
- z->c = z->l - m;
- }
- return 1;
-}
-
-extern int german_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 125 */
- { int ret = r_prelude(z);
- if (ret == 0) goto lab0; /* call prelude, line 125 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 126 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab1; /* call mark_regions, line 126 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 127 */
-
- { int m = z->l - z->c; (void) m; /* do, line 128 */
- { int ret = r_standard_suffix(z);
- if (ret == 0) goto lab2; /* call standard_suffix, line 128 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 129 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab3; /* call postlude, line 129 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * german_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); }
-
-extern void german_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_german.h b/src/libstemmer/src_c/stem_UTF_8_german.h
deleted file mode 100644
index 5d9bcf2da..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_german.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * german_UTF_8_create_env(void);
-extern void german_UTF_8_close_env(struct SN_env * z);
-
-extern int german_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_hungarian.c b/src/libstemmer/src_c/stem_UTF_8_hungarian.c
deleted file mode 100644
index 5ba74479f..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_hungarian.c
+++ /dev/null
@@ -1,1239 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int hungarian_UTF_8_stem(struct SN_env * z);
-
-static int r_double(struct SN_env * z);
-static int r_undouble(struct SN_env * z);
-static int r_factive(struct SN_env * z);
-static int r_instrum(struct SN_env * z);
-static int r_plur_owner(struct SN_env * z);
-static int r_sing_owner(struct SN_env * z);
-static int r_owned(struct SN_env * z);
-static int r_plural(struct SN_env * z);
-static int r_case_other(struct SN_env * z);
-static int r_case_special(struct SN_env * z);
-static int r_case(struct SN_env * z);
-static int r_v_ending(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * hungarian_UTF_8_create_env(void);
-extern void hungarian_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[2] = { 'c', 's' };
-static symbol s_0_1[3] = { 'd', 'z', 's' };
-static symbol s_0_2[2] = { 'g', 'y' };
-static symbol s_0_3[2] = { 'l', 'y' };
-static symbol s_0_4[2] = { 'n', 'y' };
-static symbol s_0_5[2] = { 's', 'z' };
-static symbol s_0_6[2] = { 't', 'y' };
-static symbol s_0_7[2] = { 'z', 's' };
-
-static struct among a_0[8] =
-{
-/* 0 */ { 2, s_0_0, -1, -1, 0},
-/* 1 */ { 3, s_0_1, -1, -1, 0},
-/* 2 */ { 2, s_0_2, -1, -1, 0},
-/* 3 */ { 2, s_0_3, -1, -1, 0},
-/* 4 */ { 2, s_0_4, -1, -1, 0},
-/* 5 */ { 2, s_0_5, -1, -1, 0},
-/* 6 */ { 2, s_0_6, -1, -1, 0},
-/* 7 */ { 2, s_0_7, -1, -1, 0}
-};
-
-static symbol s_1_0[2] = { 0xC3, 0xA1 };
-static symbol s_1_1[2] = { 0xC3, 0xA9 };
-
-static struct among a_1[2] =
-{
-/* 0 */ { 2, s_1_0, -1, 1, 0},
-/* 1 */ { 2, s_1_1, -1, 2, 0}
-};
-
-static symbol s_2_0[2] = { 'b', 'b' };
-static symbol s_2_1[2] = { 'c', 'c' };
-static symbol s_2_2[2] = { 'd', 'd' };
-static symbol s_2_3[2] = { 'f', 'f' };
-static symbol s_2_4[2] = { 'g', 'g' };
-static symbol s_2_5[2] = { 'j', 'j' };
-static symbol s_2_6[2] = { 'k', 'k' };
-static symbol s_2_7[2] = { 'l', 'l' };
-static symbol s_2_8[2] = { 'm', 'm' };
-static symbol s_2_9[2] = { 'n', 'n' };
-static symbol s_2_10[2] = { 'p', 'p' };
-static symbol s_2_11[2] = { 'r', 'r' };
-static symbol s_2_12[3] = { 'c', 'c', 's' };
-static symbol s_2_13[2] = { 's', 's' };
-static symbol s_2_14[3] = { 'z', 'z', 's' };
-static symbol s_2_15[2] = { 't', 't' };
-static symbol s_2_16[2] = { 'v', 'v' };
-static symbol s_2_17[3] = { 'g', 'g', 'y' };
-static symbol s_2_18[3] = { 'l', 'l', 'y' };
-static symbol s_2_19[3] = { 'n', 'n', 'y' };
-static symbol s_2_20[3] = { 't', 't', 'y' };
-static symbol s_2_21[3] = { 's', 's', 'z' };
-static symbol s_2_22[2] = { 'z', 'z' };
-
-static struct among a_2[23] =
-{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 2, s_2_2, -1, -1, 0},
-/* 3 */ { 2, s_2_3, -1, -1, 0},
-/* 4 */ { 2, s_2_4, -1, -1, 0},
-/* 5 */ { 2, s_2_5, -1, -1, 0},
-/* 6 */ { 2, s_2_6, -1, -1, 0},
-/* 7 */ { 2, s_2_7, -1, -1, 0},
-/* 8 */ { 2, s_2_8, -1, -1, 0},
-/* 9 */ { 2, s_2_9, -1, -1, 0},
-/* 10 */ { 2, s_2_10, -1, -1, 0},
-/* 11 */ { 2, s_2_11, -1, -1, 0},
-/* 12 */ { 3, s_2_12, -1, -1, 0},
-/* 13 */ { 2, s_2_13, -1, -1, 0},
-/* 14 */ { 3, s_2_14, -1, -1, 0},
-/* 15 */ { 2, s_2_15, -1, -1, 0},
-/* 16 */ { 2, s_2_16, -1, -1, 0},
-/* 17 */ { 3, s_2_17, -1, -1, 0},
-/* 18 */ { 3, s_2_18, -1, -1, 0},
-/* 19 */ { 3, s_2_19, -1, -1, 0},
-/* 20 */ { 3, s_2_20, -1, -1, 0},
-/* 21 */ { 3, s_2_21, -1, -1, 0},
-/* 22 */ { 2, s_2_22, -1, -1, 0}
-};
-
-static symbol s_3_0[2] = { 'a', 'l' };
-static symbol s_3_1[2] = { 'e', 'l' };
-
-static struct among a_3[2] =
-{
-/* 0 */ { 2, s_3_0, -1, 1, 0},
-/* 1 */ { 2, s_3_1, -1, 2, 0}
-};
-
-static symbol s_4_0[2] = { 'b', 'a' };
-static symbol s_4_1[2] = { 'r', 'a' };
-static symbol s_4_2[2] = { 'b', 'e' };
-static symbol s_4_3[2] = { 'r', 'e' };
-static symbol s_4_4[2] = { 'i', 'g' };
-static symbol s_4_5[3] = { 'n', 'a', 'k' };
-static symbol s_4_6[3] = { 'n', 'e', 'k' };
-static symbol s_4_7[3] = { 'v', 'a', 'l' };
-static symbol s_4_8[3] = { 'v', 'e', 'l' };
-static symbol s_4_9[2] = { 'u', 'l' };
-static symbol s_4_10[4] = { 'b', 0xC5, 0x91, 'l' };
-static symbol s_4_11[4] = { 'r', 0xC5, 0x91, 'l' };
-static symbol s_4_12[4] = { 't', 0xC5, 0x91, 'l' };
-static symbol s_4_13[4] = { 'n', 0xC3, 0xA1, 'l' };
-static symbol s_4_14[4] = { 'n', 0xC3, 0xA9, 'l' };
-static symbol s_4_15[4] = { 'b', 0xC3, 0xB3, 'l' };
-static symbol s_4_16[4] = { 'r', 0xC3, 0xB3, 'l' };
-static symbol s_4_17[4] = { 't', 0xC3, 0xB3, 'l' };
-static symbol s_4_18[3] = { 0xC3, 0xBC, 'l' };
-static symbol s_4_19[1] = { 'n' };
-static symbol s_4_20[2] = { 'a', 'n' };
-static symbol s_4_21[3] = { 'b', 'a', 'n' };
-static symbol s_4_22[2] = { 'e', 'n' };
-static symbol s_4_23[3] = { 'b', 'e', 'n' };
-static symbol s_4_24[7] = { 'k', 0xC3, 0xA9, 'p', 'p', 'e', 'n' };
-static symbol s_4_25[2] = { 'o', 'n' };
-static symbol s_4_26[3] = { 0xC3, 0xB6, 'n' };
-static symbol s_4_27[5] = { 'k', 0xC3, 0xA9, 'p', 'p' };
-static symbol s_4_28[3] = { 'k', 'o', 'r' };
-static symbol s_4_29[1] = { 't' };
-static symbol s_4_30[2] = { 'a', 't' };
-static symbol s_4_31[2] = { 'e', 't' };
-static symbol s_4_32[5] = { 'k', 0xC3, 0xA9, 'n', 't' };
-static symbol s_4_33[7] = { 'a', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
-static symbol s_4_34[7] = { 'e', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
-static symbol s_4_35[7] = { 'o', 'n', 'k', 0xC3, 0xA9, 'n', 't' };
-static symbol s_4_36[2] = { 'o', 't' };
-static symbol s_4_37[4] = { 0xC3, 0xA9, 'r', 't' };
-static symbol s_4_38[3] = { 0xC3, 0xB6, 't' };
-static symbol s_4_39[3] = { 'h', 'e', 'z' };
-static symbol s_4_40[3] = { 'h', 'o', 'z' };
-static symbol s_4_41[4] = { 'h', 0xC3, 0xB6, 'z' };
-static symbol s_4_42[3] = { 'v', 0xC3, 0xA1 };
-static symbol s_4_43[3] = { 'v', 0xC3, 0xA9 };
-
-static struct among a_4[44] =
-{
-/* 0 */ { 2, s_4_0, -1, -1, 0},
-/* 1 */ { 2, s_4_1, -1, -1, 0},
-/* 2 */ { 2, s_4_2, -1, -1, 0},
-/* 3 */ { 2, s_4_3, -1, -1, 0},
-/* 4 */ { 2, s_4_4, -1, -1, 0},
-/* 5 */ { 3, s_4_5, -1, -1, 0},
-/* 6 */ { 3, s_4_6, -1, -1, 0},
-/* 7 */ { 3, s_4_7, -1, -1, 0},
-/* 8 */ { 3, s_4_8, -1, -1, 0},
-/* 9 */ { 2, s_4_9, -1, -1, 0},
-/* 10 */ { 4, s_4_10, -1, -1, 0},
-/* 11 */ { 4, s_4_11, -1, -1, 0},
-/* 12 */ { 4, s_4_12, -1, -1, 0},
-/* 13 */ { 4, s_4_13, -1, -1, 0},
-/* 14 */ { 4, s_4_14, -1, -1, 0},
-/* 15 */ { 4, s_4_15, -1, -1, 0},
-/* 16 */ { 4, s_4_16, -1, -1, 0},
-/* 17 */ { 4, s_4_17, -1, -1, 0},
-/* 18 */ { 3, s_4_18, -1, -1, 0},
-/* 19 */ { 1, s_4_19, -1, -1, 0},
-/* 20 */ { 2, s_4_20, 19, -1, 0},
-/* 21 */ { 3, s_4_21, 20, -1, 0},
-/* 22 */ { 2, s_4_22, 19, -1, 0},
-/* 23 */ { 3, s_4_23, 22, -1, 0},
-/* 24 */ { 7, s_4_24, 22, -1, 0},
-/* 25 */ { 2, s_4_25, 19, -1, 0},
-/* 26 */ { 3, s_4_26, 19, -1, 0},
-/* 27 */ { 5, s_4_27, -1, -1, 0},
-/* 28 */ { 3, s_4_28, -1, -1, 0},
-/* 29 */ { 1, s_4_29, -1, -1, 0},
-/* 30 */ { 2, s_4_30, 29, -1, 0},
-/* 31 */ { 2, s_4_31, 29, -1, 0},
-/* 32 */ { 5, s_4_32, 29, -1, 0},
-/* 33 */ { 7, s_4_33, 32, -1, 0},
-/* 34 */ { 7, s_4_34, 32, -1, 0},
-/* 35 */ { 7, s_4_35, 32, -1, 0},
-/* 36 */ { 2, s_4_36, 29, -1, 0},
-/* 37 */ { 4, s_4_37, 29, -1, 0},
-/* 38 */ { 3, s_4_38, 29, -1, 0},
-/* 39 */ { 3, s_4_39, -1, -1, 0},
-/* 40 */ { 3, s_4_40, -1, -1, 0},
-/* 41 */ { 4, s_4_41, -1, -1, 0},
-/* 42 */ { 3, s_4_42, -1, -1, 0},
-/* 43 */ { 3, s_4_43, -1, -1, 0}
-};
-
-static symbol s_5_0[3] = { 0xC3, 0xA1, 'n' };
-static symbol s_5_1[3] = { 0xC3, 0xA9, 'n' };
-static symbol s_5_2[8] = { 0xC3, 0xA1, 'n', 'k', 0xC3, 0xA9, 'n', 't' };
-
-static struct among a_5[3] =
-{
-/* 0 */ { 3, s_5_0, -1, 2, 0},
-/* 1 */ { 3, s_5_1, -1, 1, 0},
-/* 2 */ { 8, s_5_2, -1, 3, 0}
-};
-
-static symbol s_6_0[4] = { 's', 't', 'u', 'l' };
-static symbol s_6_1[5] = { 'a', 's', 't', 'u', 'l' };
-static symbol s_6_2[6] = { 0xC3, 0xA1, 's', 't', 'u', 'l' };
-static symbol s_6_3[5] = { 's', 't', 0xC3, 0xBC, 'l' };
-static symbol s_6_4[6] = { 'e', 's', 't', 0xC3, 0xBC, 'l' };
-static symbol s_6_5[7] = { 0xC3, 0xA9, 's', 't', 0xC3, 0xBC, 'l' };
-
-static struct among a_6[6] =
-{
-/* 0 */ { 4, s_6_0, -1, 2, 0},
-/* 1 */ { 5, s_6_1, 0, 1, 0},
-/* 2 */ { 6, s_6_2, 0, 3, 0},
-/* 3 */ { 5, s_6_3, -1, 2, 0},
-/* 4 */ { 6, s_6_4, 3, 1, 0},
-/* 5 */ { 7, s_6_5, 3, 4, 0}
-};
-
-static symbol s_7_0[2] = { 0xC3, 0xA1 };
-static symbol s_7_1[2] = { 0xC3, 0xA9 };
-
-static struct among a_7[2] =
-{
-/* 0 */ { 2, s_7_0, -1, 1, 0},
-/* 1 */ { 2, s_7_1, -1, 2, 0}
-};
-
-static symbol s_8_0[1] = { 'k' };
-static symbol s_8_1[2] = { 'a', 'k' };
-static symbol s_8_2[2] = { 'e', 'k' };
-static symbol s_8_3[2] = { 'o', 'k' };
-static symbol s_8_4[3] = { 0xC3, 0xA1, 'k' };
-static symbol s_8_5[3] = { 0xC3, 0xA9, 'k' };
-static symbol s_8_6[3] = { 0xC3, 0xB6, 'k' };
-
-static struct among a_8[7] =
-{
-/* 0 */ { 1, s_8_0, -1, 7, 0},
-/* 1 */ { 2, s_8_1, 0, 4, 0},
-/* 2 */ { 2, s_8_2, 0, 6, 0},
-/* 3 */ { 2, s_8_3, 0, 5, 0},
-/* 4 */ { 3, s_8_4, 0, 1, 0},
-/* 5 */ { 3, s_8_5, 0, 2, 0},
-/* 6 */ { 3, s_8_6, 0, 3, 0}
-};
-
-static symbol s_9_0[3] = { 0xC3, 0xA9, 'i' };
-static symbol s_9_1[5] = { 0xC3, 0xA1, 0xC3, 0xA9, 'i' };
-static symbol s_9_2[5] = { 0xC3, 0xA9, 0xC3, 0xA9, 'i' };
-static symbol s_9_3[2] = { 0xC3, 0xA9 };
-static symbol s_9_4[3] = { 'k', 0xC3, 0xA9 };
-static symbol s_9_5[4] = { 'a', 'k', 0xC3, 0xA9 };
-static symbol s_9_6[4] = { 'e', 'k', 0xC3, 0xA9 };
-static symbol s_9_7[4] = { 'o', 'k', 0xC3, 0xA9 };
-static symbol s_9_8[5] = { 0xC3, 0xA1, 'k', 0xC3, 0xA9 };
-static symbol s_9_9[5] = { 0xC3, 0xA9, 'k', 0xC3, 0xA9 };
-static symbol s_9_10[5] = { 0xC3, 0xB6, 'k', 0xC3, 0xA9 };
-static symbol s_9_11[4] = { 0xC3, 0xA9, 0xC3, 0xA9 };
-
-static struct among a_9[12] =
-{
-/* 0 */ { 3, s_9_0, -1, 7, 0},
-/* 1 */ { 5, s_9_1, 0, 6, 0},
-/* 2 */ { 5, s_9_2, 0, 5, 0},
-/* 3 */ { 2, s_9_3, -1, 9, 0},
-/* 4 */ { 3, s_9_4, 3, 4, 0},
-/* 5 */ { 4, s_9_5, 4, 1, 0},
-/* 6 */ { 4, s_9_6, 4, 1, 0},
-/* 7 */ { 4, s_9_7, 4, 1, 0},
-/* 8 */ { 5, s_9_8, 4, 3, 0},
-/* 9 */ { 5, s_9_9, 4, 2, 0},
-/* 10 */ { 5, s_9_10, 4, 1, 0},
-/* 11 */ { 4, s_9_11, 3, 8, 0}
-};
-
-static symbol s_10_0[1] = { 'a' };
-static symbol s_10_1[2] = { 'j', 'a' };
-static symbol s_10_2[1] = { 'd' };
-static symbol s_10_3[2] = { 'a', 'd' };
-static symbol s_10_4[2] = { 'e', 'd' };
-static symbol s_10_5[2] = { 'o', 'd' };
-static symbol s_10_6[3] = { 0xC3, 0xA1, 'd' };
-static symbol s_10_7[3] = { 0xC3, 0xA9, 'd' };
-static symbol s_10_8[3] = { 0xC3, 0xB6, 'd' };
-static symbol s_10_9[1] = { 'e' };
-static symbol s_10_10[2] = { 'j', 'e' };
-static symbol s_10_11[2] = { 'n', 'k' };
-static symbol s_10_12[3] = { 'u', 'n', 'k' };
-static symbol s_10_13[4] = { 0xC3, 0xA1, 'n', 'k' };
-static symbol s_10_14[4] = { 0xC3, 0xA9, 'n', 'k' };
-static symbol s_10_15[4] = { 0xC3, 0xBC, 'n', 'k' };
-static symbol s_10_16[2] = { 'u', 'k' };
-static symbol s_10_17[3] = { 'j', 'u', 'k' };
-static symbol s_10_18[5] = { 0xC3, 0xA1, 'j', 'u', 'k' };
-static symbol s_10_19[3] = { 0xC3, 0xBC, 'k' };
-static symbol s_10_20[4] = { 'j', 0xC3, 0xBC, 'k' };
-static symbol s_10_21[6] = { 0xC3, 0xA9, 'j', 0xC3, 0xBC, 'k' };
-static symbol s_10_22[1] = { 'm' };
-static symbol s_10_23[2] = { 'a', 'm' };
-static symbol s_10_24[2] = { 'e', 'm' };
-static symbol s_10_25[2] = { 'o', 'm' };
-static symbol s_10_26[3] = { 0xC3, 0xA1, 'm' };
-static symbol s_10_27[3] = { 0xC3, 0xA9, 'm' };
-static symbol s_10_28[1] = { 'o' };
-static symbol s_10_29[2] = { 0xC3, 0xA1 };
-static symbol s_10_30[2] = { 0xC3, 0xA9 };
-
-static struct among a_10[31] =
-{
-/* 0 */ { 1, s_10_0, -1, 18, 0},
-/* 1 */ { 2, s_10_1, 0, 17, 0},
-/* 2 */ { 1, s_10_2, -1, 16, 0},
-/* 3 */ { 2, s_10_3, 2, 13, 0},
-/* 4 */ { 2, s_10_4, 2, 13, 0},
-/* 5 */ { 2, s_10_5, 2, 13, 0},
-/* 6 */ { 3, s_10_6, 2, 14, 0},
-/* 7 */ { 3, s_10_7, 2, 15, 0},
-/* 8 */ { 3, s_10_8, 2, 13, 0},
-/* 9 */ { 1, s_10_9, -1, 18, 0},
-/* 10 */ { 2, s_10_10, 9, 17, 0},
-/* 11 */ { 2, s_10_11, -1, 4, 0},
-/* 12 */ { 3, s_10_12, 11, 1, 0},
-/* 13 */ { 4, s_10_13, 11, 2, 0},
-/* 14 */ { 4, s_10_14, 11, 3, 0},
-/* 15 */ { 4, s_10_15, 11, 1, 0},
-/* 16 */ { 2, s_10_16, -1, 8, 0},
-/* 17 */ { 3, s_10_17, 16, 7, 0},
-/* 18 */ { 5, s_10_18, 17, 5, 0},
-/* 19 */ { 3, s_10_19, -1, 8, 0},
-/* 20 */ { 4, s_10_20, 19, 7, 0},
-/* 21 */ { 6, s_10_21, 20, 6, 0},
-/* 22 */ { 1, s_10_22, -1, 12, 0},
-/* 23 */ { 2, s_10_23, 22, 9, 0},
-/* 24 */ { 2, s_10_24, 22, 9, 0},
-/* 25 */ { 2, s_10_25, 22, 9, 0},
-/* 26 */ { 3, s_10_26, 22, 10, 0},
-/* 27 */ { 3, s_10_27, 22, 11, 0},
-/* 28 */ { 1, s_10_28, -1, 18, 0},
-/* 29 */ { 2, s_10_29, -1, 19, 0},
-/* 30 */ { 2, s_10_30, -1, 20, 0}
-};
-
-static symbol s_11_0[2] = { 'i', 'd' };
-static symbol s_11_1[3] = { 'a', 'i', 'd' };
-static symbol s_11_2[4] = { 'j', 'a', 'i', 'd' };
-static symbol s_11_3[3] = { 'e', 'i', 'd' };
-static symbol s_11_4[4] = { 'j', 'e', 'i', 'd' };
-static symbol s_11_5[4] = { 0xC3, 0xA1, 'i', 'd' };
-static symbol s_11_6[4] = { 0xC3, 0xA9, 'i', 'd' };
-static symbol s_11_7[1] = { 'i' };
-static symbol s_11_8[2] = { 'a', 'i' };
-static symbol s_11_9[3] = { 'j', 'a', 'i' };
-static symbol s_11_10[2] = { 'e', 'i' };
-static symbol s_11_11[3] = { 'j', 'e', 'i' };
-static symbol s_11_12[3] = { 0xC3, 0xA1, 'i' };
-static symbol s_11_13[3] = { 0xC3, 0xA9, 'i' };
-static symbol s_11_14[4] = { 'i', 't', 'e', 'k' };
-static symbol s_11_15[5] = { 'e', 'i', 't', 'e', 'k' };
-static symbol s_11_16[6] = { 'j', 'e', 'i', 't', 'e', 'k' };
-static symbol s_11_17[6] = { 0xC3, 0xA9, 'i', 't', 'e', 'k' };
-static symbol s_11_18[2] = { 'i', 'k' };
-static symbol s_11_19[3] = { 'a', 'i', 'k' };
-static symbol s_11_20[4] = { 'j', 'a', 'i', 'k' };
-static symbol s_11_21[3] = { 'e', 'i', 'k' };
-static symbol s_11_22[4] = { 'j', 'e', 'i', 'k' };
-static symbol s_11_23[4] = { 0xC3, 0xA1, 'i', 'k' };
-static symbol s_11_24[4] = { 0xC3, 0xA9, 'i', 'k' };
-static symbol s_11_25[3] = { 'i', 'n', 'k' };
-static symbol s_11_26[4] = { 'a', 'i', 'n', 'k' };
-static symbol s_11_27[5] = { 'j', 'a', 'i', 'n', 'k' };
-static symbol s_11_28[4] = { 'e', 'i', 'n', 'k' };
-static symbol s_11_29[5] = { 'j', 'e', 'i', 'n', 'k' };
-static symbol s_11_30[5] = { 0xC3, 0xA1, 'i', 'n', 'k' };
-static symbol s_11_31[5] = { 0xC3, 0xA9, 'i', 'n', 'k' };
-static symbol s_11_32[5] = { 'a', 'i', 't', 'o', 'k' };
-static symbol s_11_33[6] = { 'j', 'a', 'i', 't', 'o', 'k' };
-static symbol s_11_34[6] = { 0xC3, 0xA1, 'i', 't', 'o', 'k' };
-static symbol s_11_35[2] = { 'i', 'm' };
-static symbol s_11_36[3] = { 'a', 'i', 'm' };
-static symbol s_11_37[4] = { 'j', 'a', 'i', 'm' };
-static symbol s_11_38[3] = { 'e', 'i', 'm' };
-static symbol s_11_39[4] = { 'j', 'e', 'i', 'm' };
-static symbol s_11_40[4] = { 0xC3, 0xA1, 'i', 'm' };
-static symbol s_11_41[4] = { 0xC3, 0xA9, 'i', 'm' };
-
-static struct among a_11[42] =
-{
-/* 0 */ { 2, s_11_0, -1, 10, 0},
-/* 1 */ { 3, s_11_1, 0, 9, 0},
-/* 2 */ { 4, s_11_2, 1, 6, 0},
-/* 3 */ { 3, s_11_3, 0, 9, 0},
-/* 4 */ { 4, s_11_4, 3, 6, 0},
-/* 5 */ { 4, s_11_5, 0, 7, 0},
-/* 6 */ { 4, s_11_6, 0, 8, 0},
-/* 7 */ { 1, s_11_7, -1, 15, 0},
-/* 8 */ { 2, s_11_8, 7, 14, 0},
-/* 9 */ { 3, s_11_9, 8, 11, 0},
-/* 10 */ { 2, s_11_10, 7, 14, 0},
-/* 11 */ { 3, s_11_11, 10, 11, 0},
-/* 12 */ { 3, s_11_12, 7, 12, 0},
-/* 13 */ { 3, s_11_13, 7, 13, 0},
-/* 14 */ { 4, s_11_14, -1, 24, 0},
-/* 15 */ { 5, s_11_15, 14, 21, 0},
-/* 16 */ { 6, s_11_16, 15, 20, 0},
-/* 17 */ { 6, s_11_17, 14, 23, 0},
-/* 18 */ { 2, s_11_18, -1, 29, 0},
-/* 19 */ { 3, s_11_19, 18, 26, 0},
-/* 20 */ { 4, s_11_20, 19, 25, 0},
-/* 21 */ { 3, s_11_21, 18, 26, 0},
-/* 22 */ { 4, s_11_22, 21, 25, 0},
-/* 23 */ { 4, s_11_23, 18, 27, 0},
-/* 24 */ { 4, s_11_24, 18, 28, 0},
-/* 25 */ { 3, s_11_25, -1, 20, 0},
-/* 26 */ { 4, s_11_26, 25, 17, 0},
-/* 27 */ { 5, s_11_27, 26, 16, 0},
-/* 28 */ { 4, s_11_28, 25, 17, 0},
-/* 29 */ { 5, s_11_29, 28, 16, 0},
-/* 30 */ { 5, s_11_30, 25, 18, 0},
-/* 31 */ { 5, s_11_31, 25, 19, 0},
-/* 32 */ { 5, s_11_32, -1, 21, 0},
-/* 33 */ { 6, s_11_33, 32, 20, 0},
-/* 34 */ { 6, s_11_34, -1, 22, 0},
-/* 35 */ { 2, s_11_35, -1, 5, 0},
-/* 36 */ { 3, s_11_36, 35, 4, 0},
-/* 37 */ { 4, s_11_37, 36, 1, 0},
-/* 38 */ { 3, s_11_38, 35, 4, 0},
-/* 39 */ { 4, s_11_39, 38, 1, 0},
-/* 40 */ { 4, s_11_40, 35, 2, 0},
-/* 41 */ { 4, s_11_41, 35, 3, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 };
-
-static symbol s_0[] = { 'a' };
-static symbol s_1[] = { 'e' };
-static symbol s_2[] = { 'e' };
-static symbol s_3[] = { 'a' };
-static symbol s_4[] = { 'a' };
-static symbol s_5[] = { 'a' };
-static symbol s_6[] = { 'e' };
-static symbol s_7[] = { 'a' };
-static symbol s_8[] = { 'e' };
-static symbol s_9[] = { 'e' };
-static symbol s_10[] = { 'a' };
-static symbol s_11[] = { 'e' };
-static symbol s_12[] = { 'a' };
-static symbol s_13[] = { 'e' };
-static symbol s_14[] = { 'a' };
-static symbol s_15[] = { 'e' };
-static symbol s_16[] = { 'a' };
-static symbol s_17[] = { 'e' };
-static symbol s_18[] = { 'a' };
-static symbol s_19[] = { 'e' };
-static symbol s_20[] = { 'a' };
-static symbol s_21[] = { 'e' };
-static symbol s_22[] = { 'a' };
-static symbol s_23[] = { 'e' };
-static symbol s_24[] = { 'a' };
-static symbol s_25[] = { 'e' };
-static symbol s_26[] = { 'a' };
-static symbol s_27[] = { 'e' };
-static symbol s_28[] = { 'a' };
-static symbol s_29[] = { 'e' };
-static symbol s_30[] = { 'a' };
-static symbol s_31[] = { 'e' };
-static symbol s_32[] = { 'a' };
-static symbol s_33[] = { 'e' };
-static symbol s_34[] = { 'a' };
-static symbol s_35[] = { 'e' };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- { int c1 = z->c; /* or, line 51 */
- //if (in_grouping_U(z, g_v, 97, 369, 0)) goto lab1;
- if (in_grouping_U(z, g_v, 97, 369)) goto lab1;
- //if (in_grouping_U(z, g_v, 97, 369, 1) < 0) goto lab1; /* goto */ /* non v, line 48 */
- if (in_grouping_U(z, g_v, 97, 369) < 0) goto lab1; /* goto */ /* non v, line 48 */
- { int c2 = z->c; /* or, line 49 */
- if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 3 || !((101187584 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab3;
- if (!(find_among(z, a_0, 8))) goto lab3; /* among, line 49 */
- goto lab2;
- lab3:
- z->c = c2;
- { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (ret < 0) goto lab1;
- z->c = ret; /* next, line 49 */
- }
- }
- lab2:
- z->I[0] = z->c; /* setmark p1, line 50 */
- goto lab0;
- lab1:
- z->c = c1;
- //if (out_grouping_U(z, g_v, 97, 369, 0)) return 0;
- if (out_grouping_U(z, g_v, 97, 369)) return 0;
- { /* gopast */ /* grouping v, line 53 */
- //int ret = out_grouping_U(z, g_v, 97, 369, 1);
- int ret = out_grouping_U(z, g_v, 97, 369);
- if (ret < 0) return 0;
- z->c += ret;
- }
- z->I[0] = z->c; /* setmark p1, line 53 */
- }
-lab0:
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_v_ending(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 61 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0;
- among_var = find_among_b(z, a_1, 2); /* substring, line 61 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 61 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 61 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_from_s(z, 1, s_0); /* <-, line 62 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_from_s(z, 1, s_1); /* <-, line 63 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_double(struct SN_env * z) {
- { int m_test = z->l - z->c; /* test, line 68 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((106790108 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
- if (!(find_among_b(z, a_2, 23))) return 0; /* among, line 68 */
- z->c = z->l - m_test;
- }
- return 1;
-}
-
-static int r_undouble(struct SN_env * z) {
- { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (ret < 0) return 0;
- z->c = ret; /* next, line 73 */
- }
- z->ket = z->c; /* [, line 73 */
- { int ret = skip_utf8(z->p, z->c, z->lb, z->l, - 1);
- if (ret < 0) return 0;
- z->c = ret; /* hop, line 73 */
- }
- z->bra = z->c; /* ], line 73 */
- { int ret = slice_del(z); /* delete, line 73 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_instrum(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 77 */
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0;
- among_var = find_among_b(z, a_3, 2); /* substring, line 77 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 77 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 77 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_double(z);
- if (ret == 0) return 0; /* call double, line 78 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_double(z);
- if (ret == 0) return 0; /* call double, line 79 */
- if (ret < 0) return ret;
- }
- break;
- }
- { int ret = slice_del(z); /* delete, line 81 */
- if (ret < 0) return ret;
- }
- { int ret = r_undouble(z);
- if (ret == 0) return 0; /* call undouble, line 82 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_case(struct SN_env * z) {
- z->ket = z->c; /* [, line 87 */
- if (!(find_among_b(z, a_4, 44))) return 0; /* substring, line 87 */
- z->bra = z->c; /* ], line 87 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 87 */
- if (ret < 0) return ret;
- }
- { int ret = slice_del(z); /* delete, line 111 */
- if (ret < 0) return ret;
- }
- { int ret = r_v_ending(z);
- if (ret == 0) return 0; /* call v_ending, line 112 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_case_special(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 116 */
- if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 110 && z->p[z->c - 1] != 116)) return 0;
- among_var = find_among_b(z, a_5, 3); /* substring, line 116 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 116 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 116 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_from_s(z, 1, s_2); /* <-, line 117 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_from_s(z, 1, s_3); /* <-, line 118 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = slice_from_s(z, 1, s_4); /* <-, line 119 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_case_other(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 124 */
- if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0;
- among_var = find_among_b(z, a_6, 6); /* substring, line 124 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 124 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 124 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_del(z); /* delete, line 125 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_del(z); /* delete, line 126 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = slice_from_s(z, 1, s_5); /* <-, line 127 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = slice_from_s(z, 1, s_6); /* <-, line 128 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_factive(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 133 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0;
- among_var = find_among_b(z, a_7, 2); /* substring, line 133 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 133 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 133 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_double(z);
- if (ret == 0) return 0; /* call double, line 134 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_double(z);
- if (ret == 0) return 0; /* call double, line 135 */
- if (ret < 0) return ret;
- }
- break;
- }
- { int ret = slice_del(z); /* delete, line 137 */
- if (ret < 0) return ret;
- }
- { int ret = r_undouble(z);
- if (ret == 0) return 0; /* call undouble, line 138 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_plural(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 142 */
- if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0;
- among_var = find_among_b(z, a_8, 7); /* substring, line 142 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 142 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 142 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_from_s(z, 1, s_7); /* <-, line 143 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_from_s(z, 1, s_8); /* <-, line 144 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = slice_del(z); /* delete, line 145 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = slice_del(z); /* delete, line 146 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = slice_del(z); /* delete, line 147 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = slice_del(z); /* delete, line 148 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret = slice_del(z); /* delete, line 149 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_owned(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 154 */
- if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 169)) return 0;
- among_var = find_among_b(z, a_9, 12); /* substring, line 154 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 154 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 154 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_del(z); /* delete, line 155 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_from_s(z, 1, s_9); /* <-, line 156 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = slice_from_s(z, 1, s_10); /* <-, line 157 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = slice_del(z); /* delete, line 158 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = slice_from_s(z, 1, s_11); /* <-, line 159 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = slice_from_s(z, 1, s_12); /* <-, line 160 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret = slice_del(z); /* delete, line 161 */
- if (ret < 0) return ret;
- }
- break;
- case 8:
- { int ret = slice_from_s(z, 1, s_13); /* <-, line 162 */
- if (ret < 0) return ret;
- }
- break;
- case 9:
- { int ret = slice_del(z); /* delete, line 163 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_sing_owner(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 168 */
- among_var = find_among_b(z, a_10, 31); /* substring, line 168 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 168 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 168 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_del(z); /* delete, line 169 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_from_s(z, 1, s_14); /* <-, line 170 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = slice_from_s(z, 1, s_15); /* <-, line 171 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = slice_del(z); /* delete, line 172 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = slice_from_s(z, 1, s_16); /* <-, line 173 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = slice_from_s(z, 1, s_17); /* <-, line 174 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret = slice_del(z); /* delete, line 175 */
- if (ret < 0) return ret;
- }
- break;
- case 8:
- { int ret = slice_del(z); /* delete, line 176 */
- if (ret < 0) return ret;
- }
- break;
- case 9:
- { int ret = slice_del(z); /* delete, line 177 */
- if (ret < 0) return ret;
- }
- break;
- case 10:
- { int ret = slice_from_s(z, 1, s_18); /* <-, line 178 */
- if (ret < 0) return ret;
- }
- break;
- case 11:
- { int ret = slice_from_s(z, 1, s_19); /* <-, line 179 */
- if (ret < 0) return ret;
- }
- break;
- case 12:
- { int ret = slice_del(z); /* delete, line 180 */
- if (ret < 0) return ret;
- }
- break;
- case 13:
- { int ret = slice_del(z); /* delete, line 181 */
- if (ret < 0) return ret;
- }
- break;
- case 14:
- { int ret = slice_from_s(z, 1, s_20); /* <-, line 182 */
- if (ret < 0) return ret;
- }
- break;
- case 15:
- { int ret = slice_from_s(z, 1, s_21); /* <-, line 183 */
- if (ret < 0) return ret;
- }
- break;
- case 16:
- { int ret = slice_del(z); /* delete, line 184 */
- if (ret < 0) return ret;
- }
- break;
- case 17:
- { int ret = slice_del(z); /* delete, line 185 */
- if (ret < 0) return ret;
- }
- break;
- case 18:
- { int ret = slice_del(z); /* delete, line 186 */
- if (ret < 0) return ret;
- }
- break;
- case 19:
- { int ret = slice_from_s(z, 1, s_22); /* <-, line 187 */
- if (ret < 0) return ret;
- }
- break;
- case 20:
- { int ret = slice_from_s(z, 1, s_23); /* <-, line 188 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_plur_owner(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 193 */
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((10768 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
- among_var = find_among_b(z, a_11, 42); /* substring, line 193 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 193 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 193 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = slice_del(z); /* delete, line 194 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = slice_from_s(z, 1, s_24); /* <-, line 195 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = slice_from_s(z, 1, s_25); /* <-, line 196 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = slice_del(z); /* delete, line 197 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = slice_del(z); /* delete, line 198 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = slice_del(z); /* delete, line 199 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret = slice_from_s(z, 1, s_26); /* <-, line 200 */
- if (ret < 0) return ret;
- }
- break;
- case 8:
- { int ret = slice_from_s(z, 1, s_27); /* <-, line 201 */
- if (ret < 0) return ret;
- }
- break;
- case 9:
- { int ret = slice_del(z); /* delete, line 202 */
- if (ret < 0) return ret;
- }
- break;
- case 10:
- { int ret = slice_del(z); /* delete, line 203 */
- if (ret < 0) return ret;
- }
- break;
- case 11:
- { int ret = slice_del(z); /* delete, line 204 */
- if (ret < 0) return ret;
- }
- break;
- case 12:
- { int ret = slice_from_s(z, 1, s_28); /* <-, line 205 */
- if (ret < 0) return ret;
- }
- break;
- case 13:
- { int ret = slice_from_s(z, 1, s_29); /* <-, line 206 */
- if (ret < 0) return ret;
- }
- break;
- case 14:
- { int ret = slice_del(z); /* delete, line 207 */
- if (ret < 0) return ret;
- }
- break;
- case 15:
- { int ret = slice_del(z); /* delete, line 208 */
- if (ret < 0) return ret;
- }
- break;
- case 16:
- { int ret = slice_del(z); /* delete, line 209 */
- if (ret < 0) return ret;
- }
- break;
- case 17:
- { int ret = slice_del(z); /* delete, line 210 */
- if (ret < 0) return ret;
- }
- break;
- case 18:
- { int ret = slice_from_s(z, 1, s_30); /* <-, line 211 */
- if (ret < 0) return ret;
- }
- break;
- case 19:
- { int ret = slice_from_s(z, 1, s_31); /* <-, line 212 */
- if (ret < 0) return ret;
- }
- break;
- case 20:
- { int ret = slice_del(z); /* delete, line 214 */
- if (ret < 0) return ret;
- }
- break;
- case 21:
- { int ret = slice_del(z); /* delete, line 215 */
- if (ret < 0) return ret;
- }
- break;
- case 22:
- { int ret = slice_from_s(z, 1, s_32); /* <-, line 216 */
- if (ret < 0) return ret;
- }
- break;
- case 23:
- { int ret = slice_from_s(z, 1, s_33); /* <-, line 217 */
- if (ret < 0) return ret;
- }
- break;
- case 24:
- { int ret = slice_del(z); /* delete, line 218 */
- if (ret < 0) return ret;
- }
- break;
- case 25:
- { int ret = slice_del(z); /* delete, line 219 */
- if (ret < 0) return ret;
- }
- break;
- case 26:
- { int ret = slice_del(z); /* delete, line 220 */
- if (ret < 0) return ret;
- }
- break;
- case 27:
- { int ret = slice_from_s(z, 1, s_34); /* <-, line 221 */
- if (ret < 0) return ret;
- }
- break;
- case 28:
- { int ret = slice_from_s(z, 1, s_35); /* <-, line 222 */
- if (ret < 0) return ret;
- }
- break;
- case 29:
- { int ret = slice_del(z); /* delete, line 223 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-extern int hungarian_UTF_8_stem(struct SN_env * z) {
- { int c1 = z->c; /* do, line 229 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 229 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c1;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 230 */
-
- { int m2 = z->l - z->c; (void)m2; /* do, line 231 */
- { int ret = r_instrum(z);
- if (ret == 0) goto lab1; /* call instrum, line 231 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m2;
- }
- { int m3 = z->l - z->c; (void)m3; /* do, line 232 */
- { int ret = r_case(z);
- if (ret == 0) goto lab2; /* call case, line 232 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m3;
- }
- { int m4 = z->l - z->c; (void)m4; /* do, line 233 */
- { int ret = r_case_special(z);
- if (ret == 0) goto lab3; /* call case_special, line 233 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = z->l - m4;
- }
- { int m5 = z->l - z->c; (void)m5; /* do, line 234 */
- { int ret = r_case_other(z);
- if (ret == 0) goto lab4; /* call case_other, line 234 */
- if (ret < 0) return ret;
- }
- lab4:
- z->c = z->l - m5;
- }
- { int m6 = z->l - z->c; (void)m6; /* do, line 235 */
- { int ret = r_factive(z);
- if (ret == 0) goto lab5; /* call factive, line 235 */
- if (ret < 0) return ret;
- }
- lab5:
- z->c = z->l - m6;
- }
- { int m7 = z->l - z->c; (void)m7; /* do, line 236 */
- { int ret = r_owned(z);
- if (ret == 0) goto lab6; /* call owned, line 236 */
- if (ret < 0) return ret;
- }
- lab6:
- z->c = z->l - m7;
- }
- { int m8 = z->l - z->c; (void)m8; /* do, line 237 */
- { int ret = r_sing_owner(z);
- if (ret == 0) goto lab7; /* call sing_owner, line 237 */
- if (ret < 0) return ret;
- }
- lab7:
- z->c = z->l - m8;
- }
- { int m9 = z->l - z->c; (void)m9; /* do, line 238 */
- { int ret = r_plur_owner(z);
- if (ret == 0) goto lab8; /* call plur_owner, line 238 */
- if (ret < 0) return ret;
- }
- lab8:
- z->c = z->l - m9;
- }
- { int m10 = z->l - z->c; (void)m10; /* do, line 239 */
- { int ret = r_plural(z);
- if (ret == 0) goto lab9; /* call plural, line 239 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = z->l - m10;
- }
- z->c = z->lb;
- return 1;
-}
-
-extern struct SN_env * hungarian_UTF_8_create_env(void) { return SN_create_env(0, 1, 0); }
-
-//extern void hungarian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
-extern void hungarian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_hungarian.h b/src/libstemmer/src_c/stem_UTF_8_hungarian.h
deleted file mode 100644
index d81bd2346..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_hungarian.h
+++ /dev/null
@@ -1,16 +0,0 @@
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * hungarian_UTF_8_create_env(void);
-extern void hungarian_UTF_8_close_env(struct SN_env * z);
-
-extern int hungarian_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_italian.c b/src/libstemmer/src_c/stem_UTF_8_italian.c
deleted file mode 100644
index ae5dbbf08..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_italian.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int italian_UTF_8_stem(struct SN_env * z);
-static int r_vowel_suffix(struct SN_env * z);
-static int r_verb_suffix(struct SN_env * z);
-static int r_standard_suffix(struct SN_env * z);
-static int r_attached_pronoun(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_RV(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * italian_UTF_8_create_env(void);
-extern void italian_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_1[2] = { 'q', 'u' };
-static symbol s_0_2[2] = { 0xC3, 0xA1 };
-static symbol s_0_3[2] = { 0xC3, 0xA9 };
-static symbol s_0_4[2] = { 0xC3, 0xAD };
-static symbol s_0_5[2] = { 0xC3, 0xB3 };
-static symbol s_0_6[2] = { 0xC3, 0xBA };
-
-static struct among a_0[7] =
-{
-/* 0 */ { 0, 0, -1, 7, 0},
-/* 1 */ { 2, s_0_1, 0, 6, 0},
-/* 2 */ { 2, s_0_2, 0, 1, 0},
-/* 3 */ { 2, s_0_3, 0, 2, 0},
-/* 4 */ { 2, s_0_4, 0, 3, 0},
-/* 5 */ { 2, s_0_5, 0, 4, 0},
-/* 6 */ { 2, s_0_6, 0, 5, 0}
-};
-
-static symbol s_1_1[1] = { 'I' };
-static symbol s_1_2[1] = { 'U' };
-
-static struct among a_1[3] =
-{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 1, s_1_1, 0, 1, 0},
-/* 2 */ { 1, s_1_2, 0, 2, 0}
-};
-
-static symbol s_2_0[2] = { 'l', 'a' };
-static symbol s_2_1[4] = { 'c', 'e', 'l', 'a' };
-static symbol s_2_2[6] = { 'g', 'l', 'i', 'e', 'l', 'a' };
-static symbol s_2_3[4] = { 'm', 'e', 'l', 'a' };
-static symbol s_2_4[4] = { 't', 'e', 'l', 'a' };
-static symbol s_2_5[4] = { 'v', 'e', 'l', 'a' };
-static symbol s_2_6[2] = { 'l', 'e' };
-static symbol s_2_7[4] = { 'c', 'e', 'l', 'e' };
-static symbol s_2_8[6] = { 'g', 'l', 'i', 'e', 'l', 'e' };
-static symbol s_2_9[4] = { 'm', 'e', 'l', 'e' };
-static symbol s_2_10[4] = { 't', 'e', 'l', 'e' };
-static symbol s_2_11[4] = { 'v', 'e', 'l', 'e' };
-static symbol s_2_12[2] = { 'n', 'e' };
-static symbol s_2_13[4] = { 'c', 'e', 'n', 'e' };
-static symbol s_2_14[6] = { 'g', 'l', 'i', 'e', 'n', 'e' };
-static symbol s_2_15[4] = { 'm', 'e', 'n', 'e' };
-static symbol s_2_16[4] = { 's', 'e', 'n', 'e' };
-static symbol s_2_17[4] = { 't', 'e', 'n', 'e' };
-static symbol s_2_18[4] = { 'v', 'e', 'n', 'e' };
-static symbol s_2_19[2] = { 'c', 'i' };
-static symbol s_2_20[2] = { 'l', 'i' };
-static symbol s_2_21[4] = { 'c', 'e', 'l', 'i' };
-static symbol s_2_22[6] = { 'g', 'l', 'i', 'e', 'l', 'i' };
-static symbol s_2_23[4] = { 'm', 'e', 'l', 'i' };
-static symbol s_2_24[4] = { 't', 'e', 'l', 'i' };
-static symbol s_2_25[4] = { 'v', 'e', 'l', 'i' };
-static symbol s_2_26[3] = { 'g', 'l', 'i' };
-static symbol s_2_27[2] = { 'm', 'i' };
-static symbol s_2_28[2] = { 's', 'i' };
-static symbol s_2_29[2] = { 't', 'i' };
-static symbol s_2_30[2] = { 'v', 'i' };
-static symbol s_2_31[2] = { 'l', 'o' };
-static symbol s_2_32[4] = { 'c', 'e', 'l', 'o' };
-static symbol s_2_33[6] = { 'g', 'l', 'i', 'e', 'l', 'o' };
-static symbol s_2_34[4] = { 'm', 'e', 'l', 'o' };
-static symbol s_2_35[4] = { 't', 'e', 'l', 'o' };
-static symbol s_2_36[4] = { 'v', 'e', 'l', 'o' };
-
-static struct among a_2[37] =
-{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 4, s_2_1, 0, -1, 0},
-/* 2 */ { 6, s_2_2, 0, -1, 0},
-/* 3 */ { 4, s_2_3, 0, -1, 0},
-/* 4 */ { 4, s_2_4, 0, -1, 0},
-/* 5 */ { 4, s_2_5, 0, -1, 0},
-/* 6 */ { 2, s_2_6, -1, -1, 0},
-/* 7 */ { 4, s_2_7, 6, -1, 0},
-/* 8 */ { 6, s_2_8, 6, -1, 0},
-/* 9 */ { 4, s_2_9, 6, -1, 0},
-/* 10 */ { 4, s_2_10, 6, -1, 0},
-/* 11 */ { 4, s_2_11, 6, -1, 0},
-/* 12 */ { 2, s_2_12, -1, -1, 0},
-/* 13 */ { 4, s_2_13, 12, -1, 0},
-/* 14 */ { 6, s_2_14, 12, -1, 0},
-/* 15 */ { 4, s_2_15, 12, -1, 0},
-/* 16 */ { 4, s_2_16, 12, -1, 0},
-/* 17 */ { 4, s_2_17, 12, -1, 0},
-/* 18 */ { 4, s_2_18, 12, -1, 0},
-/* 19 */ { 2, s_2_19, -1, -1, 0},
-/* 20 */ { 2, s_2_20, -1, -1, 0},
-/* 21 */ { 4, s_2_21, 20, -1, 0},
-/* 22 */ { 6, s_2_22, 20, -1, 0},
-/* 23 */ { 4, s_2_23, 20, -1, 0},
-/* 24 */ { 4, s_2_24, 20, -1, 0},
-/* 25 */ { 4, s_2_25, 20, -1, 0},
-/* 26 */ { 3, s_2_26, 20, -1, 0},
-/* 27 */ { 2, s_2_27, -1, -1, 0},
-/* 28 */ { 2, s_2_28, -1, -1, 0},
-/* 29 */ { 2, s_2_29, -1, -1, 0},
-/* 30 */ { 2, s_2_30, -1, -1, 0},
-/* 31 */ { 2, s_2_31, -1, -1, 0},
-/* 32 */ { 4, s_2_32, 31, -1, 0},
-/* 33 */ { 6, s_2_33, 31, -1, 0},
-/* 34 */ { 4, s_2_34, 31, -1, 0},
-/* 35 */ { 4, s_2_35, 31, -1, 0},
-/* 36 */ { 4, s_2_36, 31, -1, 0}
-};
-
-static symbol s_3_0[4] = { 'a', 'n', 'd', 'o' };
-static symbol s_3_1[4] = { 'e', 'n', 'd', 'o' };
-static symbol s_3_2[2] = { 'a', 'r' };
-static symbol s_3_3[2] = { 'e', 'r' };
-static symbol s_3_4[2] = { 'i', 'r' };
-
-static struct among a_3[5] =
-{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0},
-/* 2 */ { 2, s_3_2, -1, 2, 0},
-/* 3 */ { 2, s_3_3, -1, 2, 0},
-/* 4 */ { 2, s_3_4, -1, 2, 0}
-};
-
-static symbol s_4_0[2] = { 'i', 'c' };
-static symbol s_4_1[4] = { 'a', 'b', 'i', 'l' };
-static symbol s_4_2[2] = { 'o', 's' };
-static symbol s_4_3[2] = { 'i', 'v' };
-
-static struct among a_4[4] =
-{
-/* 0 */ { 2, s_4_0, -1, -1, 0},
-/* 1 */ { 4, s_4_1, -1, -1, 0},
-/* 2 */ { 2, s_4_2, -1, -1, 0},
-/* 3 */ { 2, s_4_3, -1, 1, 0}
-};
-
-static symbol s_5_0[2] = { 'i', 'c' };
-static symbol s_5_1[4] = { 'a', 'b', 'i', 'l' };
-static symbol s_5_2[2] = { 'i', 'v' };
-
-static struct among a_5[3] =
-{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 2, s_5_2, -1, 1, 0}
-};
-
-static symbol s_6_0[3] = { 'i', 'c', 'a' };
-static symbol s_6_1[5] = { 'l', 'o', 'g', 'i', 'a' };
-static symbol s_6_2[3] = { 'o', 's', 'a' };
-static symbol s_6_3[4] = { 'i', 's', 't', 'a' };
-static symbol s_6_4[3] = { 'i', 'v', 'a' };
-static symbol s_6_5[4] = { 'a', 'n', 'z', 'a' };
-static symbol s_6_6[4] = { 'e', 'n', 'z', 'a' };
-static symbol s_6_7[3] = { 'i', 'c', 'e' };
-static symbol s_6_8[6] = { 'a', 't', 'r', 'i', 'c', 'e' };
-static symbol s_6_9[4] = { 'i', 'c', 'h', 'e' };
-static symbol s_6_10[5] = { 'l', 'o', 'g', 'i', 'e' };
-static symbol s_6_11[5] = { 'a', 'b', 'i', 'l', 'e' };
-static symbol s_6_12[5] = { 'i', 'b', 'i', 'l', 'e' };
-static symbol s_6_13[6] = { 'u', 's', 'i', 'o', 'n', 'e' };
-static symbol s_6_14[6] = { 'a', 'z', 'i', 'o', 'n', 'e' };
-static symbol s_6_15[6] = { 'u', 'z', 'i', 'o', 'n', 'e' };
-static symbol s_6_16[5] = { 'a', 't', 'o', 'r', 'e' };
-static symbol s_6_17[3] = { 'o', 's', 'e' };
-static symbol s_6_18[4] = { 'a', 'n', 't', 'e' };
-static symbol s_6_19[5] = { 'm', 'e', 'n', 't', 'e' };
-static symbol s_6_20[6] = { 'a', 'm', 'e', 'n', 't', 'e' };
-static symbol s_6_21[4] = { 'i', 's', 't', 'e' };
-static symbol s_6_22[3] = { 'i', 'v', 'e' };
-static symbol s_6_23[4] = { 'a', 'n', 'z', 'e' };
-static symbol s_6_24[4] = { 'e', 'n', 'z', 'e' };
-static symbol s_6_25[3] = { 'i', 'c', 'i' };
-static symbol s_6_26[6] = { 'a', 't', 'r', 'i', 'c', 'i' };
-static symbol s_6_27[4] = { 'i', 'c', 'h', 'i' };
-static symbol s_6_28[5] = { 'a', 'b', 'i', 'l', 'i' };
-static symbol s_6_29[5] = { 'i', 'b', 'i', 'l', 'i' };
-static symbol s_6_30[4] = { 'i', 's', 'm', 'i' };
-static symbol s_6_31[6] = { 'u', 's', 'i', 'o', 'n', 'i' };
-static symbol s_6_32[6] = { 'a', 'z', 'i', 'o', 'n', 'i' };
-static symbol s_6_33[6] = { 'u', 'z', 'i', 'o', 'n', 'i' };
-static symbol s_6_34[5] = { 'a', 't', 'o', 'r', 'i' };
-static symbol s_6_35[3] = { 'o', 's', 'i' };
-static symbol s_6_36[4] = { 'a', 'n', 't', 'i' };
-static symbol s_6_37[6] = { 'a', 'm', 'e', 'n', 't', 'i' };
-static symbol s_6_38[6] = { 'i', 'm', 'e', 'n', 't', 'i' };
-static symbol s_6_39[4] = { 'i', 's', 't', 'i' };
-static symbol s_6_40[3] = { 'i', 'v', 'i' };
-static symbol s_6_41[3] = { 'i', 'c', 'o' };
-static symbol s_6_42[4] = { 'i', 's', 'm', 'o' };
-static symbol s_6_43[3] = { 'o', 's', 'o' };
-static symbol s_6_44[6] = { 'a', 'm', 'e', 'n', 't', 'o' };
-static symbol s_6_45[6] = { 'i', 'm', 'e', 'n', 't', 'o' };
-static symbol s_6_46[3] = { 'i', 'v', 'o' };
-static symbol s_6_47[4] = { 'i', 't', 0xC3, 0xA0 };
-static symbol s_6_48[5] = { 'i', 's', 't', 0xC3, 0xA0 };
-static symbol s_6_49[5] = { 'i', 's', 't', 0xC3, 0xA8 };
-static symbol s_6_50[5] = { 'i', 's', 't', 0xC3, 0xAC };
-
-static struct among a_6[51] =
-{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 5, s_6_1, -1, 3, 0},
-/* 2 */ { 3, s_6_2, -1, 1, 0},
-/* 3 */ { 4, s_6_3, -1, 1, 0},
-/* 4 */ { 3, s_6_4, -1, 9, 0},
-/* 5 */ { 4, s_6_5, -1, 1, 0},
-/* 6 */ { 4, s_6_6, -1, 5, 0},
-/* 7 */ { 3, s_6_7, -1, 1, 0},
-/* 8 */ { 6, s_6_8, 7, 1, 0},
-/* 9 */ { 4, s_6_9, -1, 1, 0},
-/* 10 */ { 5, s_6_10, -1, 3, 0},
-/* 11 */ { 5, s_6_11, -1, 1, 0},
-/* 12 */ { 5, s_6_12, -1, 1, 0},
-/* 13 */ { 6, s_6_13, -1, 4, 0},
-/* 14 */ { 6, s_6_14, -1, 2, 0},
-/* 15 */ { 6, s_6_15, -1, 4, 0},
-/* 16 */ { 5, s_6_16, -1, 2, 0},
-/* 17 */ { 3, s_6_17, -1, 1, 0},
-/* 18 */ { 4, s_6_18, -1, 1, 0},
-/* 19 */ { 5, s_6_19, -1, 1, 0},
-/* 20 */ { 6, s_6_20, 19, 7, 0},
-/* 21 */ { 4, s_6_21, -1, 1, 0},
-/* 22 */ { 3, s_6_22, -1, 9, 0},
-/* 23 */ { 4, s_6_23, -1, 1, 0},
-/* 24 */ { 4, s_6_24, -1, 5, 0},
-/* 25 */ { 3, s_6_25, -1, 1, 0},
-/* 26 */ { 6, s_6_26, 25, 1, 0},
-/* 27 */ { 4, s_6_27, -1, 1, 0},
-/* 28 */ { 5, s_6_28, -1, 1, 0},
-/* 29 */ { 5, s_6_29, -1, 1, 0},
-/* 30 */ { 4, s_6_30, -1, 1, 0},
-/* 31 */ { 6, s_6_31, -1, 4, 0},
-/* 32 */ { 6, s_6_32, -1, 2, 0},
-/* 33 */ { 6, s_6_33, -1, 4, 0},
-/* 34 */ { 5, s_6_34, -1, 2, 0},
-/* 35 */ { 3, s_6_35, -1, 1, 0},
-/* 36 */ { 4, s_6_36, -1, 1, 0},
-/* 37 */ { 6, s_6_37, -1, 6, 0},
-/* 38 */ { 6, s_6_38, -1, 6, 0},
-/* 39 */ { 4, s_6_39, -1, 1, 0},
-/* 40 */ { 3, s_6_40, -1, 9, 0},
-/* 41 */ { 3, s_6_41, -1, 1, 0},
-/* 42 */ { 4, s_6_42, -1, 1, 0},
-/* 43 */ { 3, s_6_43, -1, 1, 0},
-/* 44 */ { 6, s_6_44, -1, 6, 0},
-/* 45 */ { 6, s_6_45, -1, 6, 0},
-/* 46 */ { 3, s_6_46, -1, 9, 0},
-/* 47 */ { 4, s_6_47, -1, 8, 0},
-/* 48 */ { 5, s_6_48, -1, 1, 0},
-/* 49 */ { 5, s_6_49, -1, 1, 0},
-/* 50 */ { 5, s_6_50, -1, 1, 0}
-};
-
-static symbol s_7_0[4] = { 'i', 's', 'c', 'a' };
-static symbol s_7_1[4] = { 'e', 'n', 'd', 'a' };
-static symbol s_7_2[3] = { 'a', 't', 'a' };
-static symbol s_7_3[3] = { 'i', 't', 'a' };
-static symbol s_7_4[3] = { 'u', 't', 'a' };
-static symbol s_7_5[3] = { 'a', 'v', 'a' };
-static symbol s_7_6[3] = { 'e', 'v', 'a' };
-static symbol s_7_7[3] = { 'i', 'v', 'a' };
-static symbol s_7_8[6] = { 'e', 'r', 'e', 'b', 'b', 'e' };
-static symbol s_7_9[6] = { 'i', 'r', 'e', 'b', 'b', 'e' };
-static symbol s_7_10[4] = { 'i', 's', 'c', 'e' };
-static symbol s_7_11[4] = { 'e', 'n', 'd', 'e' };
-static symbol s_7_12[3] = { 'a', 'r', 'e' };
-static symbol s_7_13[3] = { 'e', 'r', 'e' };
-static symbol s_7_14[3] = { 'i', 'r', 'e' };
-static symbol s_7_15[4] = { 'a', 's', 's', 'e' };
-static symbol s_7_16[3] = { 'a', 't', 'e' };
-static symbol s_7_17[5] = { 'a', 'v', 'a', 't', 'e' };
-static symbol s_7_18[5] = { 'e', 'v', 'a', 't', 'e' };
-static symbol s_7_19[5] = { 'i', 'v', 'a', 't', 'e' };
-static symbol s_7_20[3] = { 'e', 't', 'e' };
-static symbol s_7_21[5] = { 'e', 'r', 'e', 't', 'e' };
-static symbol s_7_22[5] = { 'i', 'r', 'e', 't', 'e' };
-static symbol s_7_23[3] = { 'i', 't', 'e' };
-static symbol s_7_24[6] = { 'e', 'r', 'e', 's', 't', 'e' };
-static symbol s_7_25[6] = { 'i', 'r', 'e', 's', 't', 'e' };
-static symbol s_7_26[3] = { 'u', 't', 'e' };
-static symbol s_7_27[4] = { 'e', 'r', 'a', 'i' };
-static symbol s_7_28[4] = { 'i', 'r', 'a', 'i' };
-static symbol s_7_29[4] = { 'i', 's', 'c', 'i' };
-static symbol s_7_30[4] = { 'e', 'n', 'd', 'i' };
-static symbol s_7_31[4] = { 'e', 'r', 'e', 'i' };
-static symbol s_7_32[4] = { 'i', 'r', 'e', 'i' };
-static symbol s_7_33[4] = { 'a', 's', 's', 'i' };
-static symbol s_7_34[3] = { 'a', 't', 'i' };
-static symbol s_7_35[3] = { 'i', 't', 'i' };
-static symbol s_7_36[6] = { 'e', 'r', 'e', 's', 't', 'i' };
-static symbol s_7_37[6] = { 'i', 'r', 'e', 's', 't', 'i' };
-static symbol s_7_38[3] = { 'u', 't', 'i' };
-static symbol s_7_39[3] = { 'a', 'v', 'i' };
-static symbol s_7_40[3] = { 'e', 'v', 'i' };
-static symbol s_7_41[3] = { 'i', 'v', 'i' };
-static symbol s_7_42[4] = { 'i', 's', 'c', 'o' };
-static symbol s_7_43[4] = { 'a', 'n', 'd', 'o' };
-static symbol s_7_44[4] = { 'e', 'n', 'd', 'o' };
-static symbol s_7_45[4] = { 'Y', 'a', 'm', 'o' };
-static symbol s_7_46[4] = { 'i', 'a', 'm', 'o' };
-static symbol s_7_47[5] = { 'a', 'v', 'a', 'm', 'o' };
-static symbol s_7_48[5] = { 'e', 'v', 'a', 'm', 'o' };
-static symbol s_7_49[5] = { 'i', 'v', 'a', 'm', 'o' };
-static symbol s_7_50[5] = { 'e', 'r', 'e', 'm', 'o' };
-static symbol s_7_51[5] = { 'i', 'r', 'e', 'm', 'o' };
-static symbol s_7_52[6] = { 'a', 's', 's', 'i', 'm', 'o' };
-static symbol s_7_53[4] = { 'a', 'm', 'm', 'o' };
-static symbol s_7_54[4] = { 'e', 'm', 'm', 'o' };
-static symbol s_7_55[6] = { 'e', 'r', 'e', 'm', 'm', 'o' };
-static symbol s_7_56[6] = { 'i', 'r', 'e', 'm', 'm', 'o' };
-static symbol s_7_57[4] = { 'i', 'm', 'm', 'o' };
-static symbol s_7_58[3] = { 'a', 'n', 'o' };
-static symbol s_7_59[6] = { 'i', 's', 'c', 'a', 'n', 'o' };
-static symbol s_7_60[5] = { 'a', 'v', 'a', 'n', 'o' };
-static symbol s_7_61[5] = { 'e', 'v', 'a', 'n', 'o' };
-static symbol s_7_62[5] = { 'i', 'v', 'a', 'n', 'o' };
-static symbol s_7_63[6] = { 'e', 'r', 'a', 'n', 'n', 'o' };
-static symbol s_7_64[6] = { 'i', 'r', 'a', 'n', 'n', 'o' };
-static symbol s_7_65[3] = { 'o', 'n', 'o' };
-static symbol s_7_66[6] = { 'i', 's', 'c', 'o', 'n', 'o' };
-static symbol s_7_67[5] = { 'a', 'r', 'o', 'n', 'o' };
-static symbol s_7_68[5] = { 'e', 'r', 'o', 'n', 'o' };
-static symbol s_7_69[5] = { 'i', 'r', 'o', 'n', 'o' };
-static symbol s_7_70[8] = { 'e', 'r', 'e', 'b', 'b', 'e', 'r', 'o' };
-static symbol s_7_71[8] = { 'i', 'r', 'e', 'b', 'b', 'e', 'r', 'o' };
-static symbol s_7_72[6] = { 'a', 's', 's', 'e', 'r', 'o' };
-static symbol s_7_73[6] = { 'e', 's', 's', 'e', 'r', 'o' };
-static symbol s_7_74[6] = { 'i', 's', 's', 'e', 'r', 'o' };
-static symbol s_7_75[3] = { 'a', 't', 'o' };
-static symbol s_7_76[3] = { 'i', 't', 'o' };
-static symbol s_7_77[3] = { 'u', 't', 'o' };
-static symbol s_7_78[3] = { 'a', 'v', 'o' };
-static symbol s_7_79[3] = { 'e', 'v', 'o' };
-static symbol s_7_80[3] = { 'i', 'v', 'o' };
-static symbol s_7_81[2] = { 'a', 'r' };
-static symbol s_7_82[2] = { 'i', 'r' };
-static symbol s_7_83[4] = { 'e', 'r', 0xC3, 0xA0 };
-static symbol s_7_84[4] = { 'i', 'r', 0xC3, 0xA0 };
-static symbol s_7_85[4] = { 'e', 'r', 0xC3, 0xB2 };
-static symbol s_7_86[4] = { 'i', 'r', 0xC3, 0xB2 };
-
-static struct among a_7[87] =
-{
-/* 0 */ { 4, s_7_0, -1, 1, 0},
-/* 1 */ { 4, s_7_1, -1, 1, 0},
-/* 2 */ { 3, s_7_2, -1, 1, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 3, s_7_4, -1, 1, 0},
-/* 5 */ { 3, s_7_5, -1, 1, 0},
-/* 6 */ { 3, s_7_6, -1, 1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 6, s_7_8, -1, 1, 0},
-/* 9 */ { 6, s_7_9, -1, 1, 0},
-/* 10 */ { 4, s_7_10, -1, 1, 0},
-/* 11 */ { 4, s_7_11, -1, 1, 0},
-/* 12 */ { 3, s_7_12, -1, 1, 0},
-/* 13 */ { 3, s_7_13, -1, 1, 0},
-/* 14 */ { 3, s_7_14, -1, 1, 0},
-/* 15 */ { 4, s_7_15, -1, 1, 0},
-/* 16 */ { 3, s_7_16, -1, 1, 0},
-/* 17 */ { 5, s_7_17, 16, 1, 0},
-/* 18 */ { 5, s_7_18, 16, 1, 0},
-/* 19 */ { 5, s_7_19, 16, 1, 0},
-/* 20 */ { 3, s_7_20, -1, 1, 0},
-/* 21 */ { 5, s_7_21, 20, 1, 0},
-/* 22 */ { 5, s_7_22, 20, 1, 0},
-/* 23 */ { 3, s_7_23, -1, 1, 0},
-/* 24 */ { 6, s_7_24, -1, 1, 0},
-/* 25 */ { 6, s_7_25, -1, 1, 0},
-/* 26 */ { 3, s_7_26, -1, 1, 0},
-/* 27 */ { 4, s_7_27, -1, 1, 0},
-/* 28 */ { 4, s_7_28, -1, 1, 0},
-/* 29 */ { 4, s_7_29, -1, 1, 0},
-/* 30 */ { 4, s_7_30, -1, 1, 0},
-/* 31 */ { 4, s_7_31, -1, 1, 0},
-/* 32 */ { 4, s_7_32, -1, 1, 0},
-/* 33 */ { 4, s_7_33, -1, 1, 0},
-/* 34 */ { 3, s_7_34, -1, 1, 0},
-/* 35 */ { 3, s_7_35, -1, 1, 0},
-/* 36 */ { 6, s_7_36, -1, 1, 0},
-/* 37 */ { 6, s_7_37, -1, 1, 0},
-/* 38 */ { 3, s_7_38, -1, 1, 0},
-/* 39 */ { 3, s_7_39, -1, 1, 0},
-/* 40 */ { 3, s_7_40, -1, 1, 0},
-/* 41 */ { 3, s_7_41, -1, 1, 0},
-/* 42 */ { 4, s_7_42, -1, 1, 0},
-/* 43 */ { 4, s_7_43, -1, 1, 0},
-/* 44 */ { 4, s_7_44, -1, 1, 0},
-/* 45 */ { 4, s_7_45, -1, 1, 0},
-/* 46 */ { 4, s_7_46, -1, 1, 0},
-/* 47 */ { 5, s_7_47, -1, 1, 0},
-/* 48 */ { 5, s_7_48, -1, 1, 0},
-/* 49 */ { 5, s_7_49, -1, 1, 0},
-/* 50 */ { 5, s_7_50, -1, 1, 0},
-/* 51 */ { 5, s_7_51, -1, 1, 0},
-/* 52 */ { 6, s_7_52, -1, 1, 0},
-/* 53 */ { 4, s_7_53, -1, 1, 0},
-/* 54 */ { 4, s_7_54, -1, 1, 0},
-/* 55 */ { 6, s_7_55, 54, 1, 0},
-/* 56 */ { 6, s_7_56, 54, 1, 0},
-/* 57 */ { 4, s_7_57, -1, 1, 0},
-/* 58 */ { 3, s_7_58, -1, 1, 0},
-/* 59 */ { 6, s_7_59, 58, 1, 0},
-/* 60 */ { 5, s_7_60, 58, 1, 0},
-/* 61 */ { 5, s_7_61, 58, 1, 0},
-/* 62 */ { 5, s_7_62, 58, 1, 0},
-/* 63 */ { 6, s_7_63, -1, 1, 0},
-/* 64 */ { 6, s_7_64, -1, 1, 0},
-/* 65 */ { 3, s_7_65, -1, 1, 0},
-/* 66 */ { 6, s_7_66, 65, 1, 0},
-/* 67 */ { 5, s_7_67, 65, 1, 0},
-/* 68 */ { 5, s_7_68, 65, 1, 0},
-/* 69 */ { 5, s_7_69, 65, 1, 0},
-/* 70 */ { 8, s_7_70, -1, 1, 0},
-/* 71 */ { 8, s_7_71, -1, 1, 0},
-/* 72 */ { 6, s_7_72, -1, 1, 0},
-/* 73 */ { 6, s_7_73, -1, 1, 0},
-/* 74 */ { 6, s_7_74, -1, 1, 0},
-/* 75 */ { 3, s_7_75, -1, 1, 0},
-/* 76 */ { 3, s_7_76, -1, 1, 0},
-/* 77 */ { 3, s_7_77, -1, 1, 0},
-/* 78 */ { 3, s_7_78, -1, 1, 0},
-/* 79 */ { 3, s_7_79, -1, 1, 0},
-/* 80 */ { 3, s_7_80, -1, 1, 0},
-/* 81 */ { 2, s_7_81, -1, 1, 0},
-/* 82 */ { 2, s_7_82, -1, 1, 0},
-/* 83 */ { 4, s_7_83, -1, 1, 0},
-/* 84 */ { 4, s_7_84, -1, 1, 0},
-/* 85 */ { 4, s_7_85, -1, 1, 0},
-/* 86 */ { 4, s_7_86, -1, 1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 };
-
-static unsigned char g_AEIO[] = { 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 };
-
-static unsigned char g_CG[] = { 17 };
-
-static symbol s_0[] = { 0xC3, 0xA0 };
-static symbol s_1[] = { 0xC3, 0xA8 };
-static symbol s_2[] = { 0xC3, 0xAC };
-static symbol s_3[] = { 0xC3, 0xB2 };
-static symbol s_4[] = { 0xC3, 0xB9 };
-static symbol s_5[] = { 'q', 'U' };
-static symbol s_6[] = { 'u' };
-static symbol s_7[] = { 'U' };
-static symbol s_8[] = { 'i' };
-static symbol s_9[] = { 'I' };
-static symbol s_10[] = { 'i' };
-static symbol s_11[] = { 'u' };
-static symbol s_12[] = { 'e' };
-static symbol s_13[] = { 'i', 'c' };
-static symbol s_14[] = { 'l', 'o', 'g' };
-static symbol s_15[] = { 'u' };
-static symbol s_16[] = { 'e', 'n', 't', 'e' };
-static symbol s_17[] = { 'a', 't' };
-static symbol s_18[] = { 'a', 't' };
-static symbol s_19[] = { 'i', 'c' };
-static symbol s_20[] = { 'i' };
-static symbol s_21[] = { 'h' };
-
-static int r_prelude(struct SN_env * z) {
- int among_var;
- { int c_test = z->c; /* test, line 35 */
- while(1) { /* repeat, line 35 */
- int c = z->c;
- z->bra = z->c; /* [, line 36 */
- among_var = find_among(z, a_0, 7); /* substring, line 36 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 36 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 2, s_0); /* <-, line 37 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 2, s_1); /* <-, line 38 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 2, s_2); /* <-, line 39 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 2, s_3); /* <-, line 40 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 2, s_4); /* <-, line 41 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret;
- ret = slice_from_s(z, 2, s_5); /* <-, line 42 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 43 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- z->c = c_test;
- }
- while(1) { /* repeat, line 46 */
- int c = z->c;
- while(1) { /* goto, line 46 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab2;
- z->bra = z->c; /* [, line 47 */
- { int c = z->c; /* or, line 47 */
- if (!(eq_s(z, 1, s_6))) goto lab4;
- z->ket = z->c; /* ], line 47 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab4;
- { int ret;
- ret = slice_from_s(z, 1, s_7); /* <-, line 47 */
- if (ret < 0) return ret;
- }
- goto lab3;
- lab4:
- z->c = c;
- if (!(eq_s(z, 1, s_8))) goto lab2;
- z->ket = z->c; /* ], line 48 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab2;
- { int ret;
- ret = slice_from_s(z, 1, s_9); /* <-, line 48 */
- if (ret < 0) return ret;
- }
- }
- lab3:
- z->c = c;
- break;
- lab2:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab1;
- z->c = c; /* goto, line 46 */
- }
- }
- continue;
- lab1:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- z->I[2] = z->l;
- { int c = z->c; /* do, line 58 */
- { int c = z->c; /* or, line 60 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab2;
- { int c = z->c; /* or, line 59 */
- if (!(out_grouping_U(z, g_v, 97, 249))) goto lab4;
- while(1) { /* gopast, line 59 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab5;
- break;
- lab5:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 59 */
- }
- }
- goto lab3;
- lab4:
- z->c = c;
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab2;
- while(1) { /* gopast, line 59 */
- if (!(out_grouping_U(z, g_v, 97, 249))) goto lab6;
- break;
- lab6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab2;
- z->c = c; /* gopast, line 59 */
- }
- }
- }
- lab3:
- goto lab1;
- lab2:
- z->c = c;
- if (!(out_grouping_U(z, g_v, 97, 249))) goto lab0;
- { int c = z->c; /* or, line 61 */
- if (!(out_grouping_U(z, g_v, 97, 249))) goto lab8;
- while(1) { /* gopast, line 61 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab9;
- break;
- lab9:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab8;
- z->c = c; /* gopast, line 61 */
- }
- }
- goto lab7;
- lab8:
- z->c = c;
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab0;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 61 */
- }
- }
- lab7:
- ;
- }
- lab1:
- z->I[0] = z->c; /* setmark pV, line 62 */
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 64 */
- while(1) { /* gopast, line 65 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab11;
- break;
- lab11:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 65 */
- }
- }
- while(1) { /* gopast, line 65 */
- if (!(out_grouping_U(z, g_v, 97, 249))) goto lab12;
- break;
- lab12:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 65 */
- }
- }
- z->I[1] = z->c; /* setmark p1, line 65 */
- while(1) { /* gopast, line 66 */
- if (!(in_grouping_U(z, g_v, 97, 249))) goto lab13;
- break;
- lab13:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 66 */
- }
- }
- while(1) { /* gopast, line 66 */
- if (!(out_grouping_U(z, g_v, 97, 249))) goto lab14;
- break;
- lab14:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 66 */
- }
- }
- z->I[2] = z->c; /* setmark p2, line 66 */
- lab10:
- z->c = c;
- }
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 70 */
- int c = z->c;
- z->bra = z->c; /* [, line 72 */
- among_var = find_among(z, a_1, 3); /* substring, line 72 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 72 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 1, s_10); /* <-, line 73 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_11); /* <-, line 74 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 75 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_RV(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[2] <= z->c)) return 0;
- return 1;
-}
-
-static int r_attached_pronoun(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 87 */
- if (!(find_among_b(z, a_2, 37))) return 0; /* substring, line 87 */
- z->bra = z->c; /* ], line 87 */
- among_var = find_among_b(z, a_3, 5); /* among, line 97 */
- if (!(among_var)) return 0;
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 97 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 98 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_12); /* <-, line 99 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_standard_suffix(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 104 */
- among_var = find_among_b(z, a_6, 51); /* substring, line 104 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 104 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 111 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 111 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 113 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 113 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 114 */
- z->ket = z->c; /* [, line 114 */
- if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 114 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call R2, line 114 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 114 */
- if (ret < 0) return ret;
- }
- lab0:
- ;
- }
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 117 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_14); /* <-, line 117 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 119 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 1, s_15); /* <-, line 119 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 121 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 4, s_16); /* <-, line 121 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 123 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 123 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 125 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 125 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 126 */
- z->ket = z->c; /* [, line 127 */
- among_var = find_among_b(z, a_4, 4); /* substring, line 127 */
- if (!(among_var)) { z->c = z->l - m; goto lab1; }
- z->bra = z->c; /* ], line 127 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab1; } /* call R2, line 127 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 127 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab1; }
- case 1:
- z->ket = z->c; /* [, line 128 */
- if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m; goto lab1; }
- z->bra = z->c; /* ], line 128 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab1; } /* call R2, line 128 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 128 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab1:
- ;
- }
- break;
- case 8:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 134 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 134 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 135 */
- z->ket = z->c; /* [, line 136 */
- among_var = find_among_b(z, a_5, 3); /* substring, line 136 */
- if (!(among_var)) { z->c = z->l - m; goto lab2; }
- z->bra = z->c; /* ], line 136 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab2; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab2; } /* call R2, line 137 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 137 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab2:
- ;
- }
- break;
- case 9:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 142 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 142 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 143 */
- z->ket = z->c; /* [, line 143 */
- if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 143 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 143 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 143 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 143 */
- if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 143 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 143 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 143 */
- if (ret < 0) return ret;
- }
- lab3:
- ;
- }
- break;
- }
- return 1;
-}
-
-static int r_verb_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 148 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 148 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 149 */
- among_var = find_among_b(z, a_7, 87); /* substring, line 149 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 149 */
- switch(among_var) {
- case 0: { z->lb = m3; return 0; }
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 163 */
- if (ret < 0) return ret;
- }
- break;
- }
- z->lb = m3;
- }
- return 1;
-}
-
-static int r_vowel_suffix(struct SN_env * z) {
- { int m = z->l - z->c; (void) m; /* try, line 171 */
- z->ket = z->c; /* [, line 172 */
- if (!(in_grouping_b_U(z, g_AEIO, 97, 242))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 172 */
- { int ret = r_RV(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call RV, line 172 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 172 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 173 */
- if (!(eq_s_b(z, 1, s_20))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 173 */
- { int ret = r_RV(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call RV, line 173 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 173 */
- if (ret < 0) return ret;
- }
- lab0:
- ;
- }
- { int m = z->l - z->c; (void) m; /* try, line 175 */
- z->ket = z->c; /* [, line 176 */
- if (!(eq_s_b(z, 1, s_21))) { z->c = z->l - m; goto lab1; }
- z->bra = z->c; /* ], line 176 */
- if (!(in_grouping_b_U(z, g_CG, 99, 103))) { z->c = z->l - m; goto lab1; }
- { int ret = r_RV(z);
- if (ret == 0) { z->c = z->l - m; goto lab1; } /* call RV, line 176 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 176 */
- if (ret < 0) return ret;
- }
- lab1:
- ;
- }
- return 1;
-}
-
-extern int italian_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 182 */
- { int ret = r_prelude(z);
- if (ret == 0) goto lab0; /* call prelude, line 182 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 183 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab1; /* call mark_regions, line 183 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 184 */
-
- { int m = z->l - z->c; (void) m; /* do, line 185 */
- { int ret = r_attached_pronoun(z);
- if (ret == 0) goto lab2; /* call attached_pronoun, line 185 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 186 */
- { int m = z->l - z->c; (void) m; /* or, line 186 */
- { int ret = r_standard_suffix(z);
- if (ret == 0) goto lab5; /* call standard_suffix, line 186 */
- if (ret < 0) return ret;
- }
- goto lab4;
- lab5:
- z->c = z->l - m;
- { int ret = r_verb_suffix(z);
- if (ret == 0) goto lab3; /* call verb_suffix, line 186 */
- if (ret < 0) return ret;
- }
- }
- lab4:
- lab3:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 187 */
- { int ret = r_vowel_suffix(z);
- if (ret == 0) goto lab6; /* call vowel_suffix, line 187 */
- if (ret < 0) return ret;
- }
- lab6:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 189 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab7; /* call postlude, line 189 */
- if (ret < 0) return ret;
- }
- lab7:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * italian_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); }
-
-extern void italian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_italian.h b/src/libstemmer/src_c/stem_UTF_8_italian.h
deleted file mode 100644
index 44c67f744..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_italian.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * italian_UTF_8_create_env(void);
-extern void italian_UTF_8_close_env(struct SN_env * z);
-
-extern int italian_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_norwegian.c b/src/libstemmer/src_c/stem_UTF_8_norwegian.c
deleted file mode 100644
index 651b17844..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_norwegian.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int norwegian_UTF_8_stem(struct SN_env * z);
-static int r_other_suffix(struct SN_env * z);
-static int r_consonant_pair(struct SN_env * z);
-static int r_main_suffix(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * norwegian_UTF_8_create_env(void);
-extern void norwegian_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[1] = { 'a' };
-static symbol s_0_1[1] = { 'e' };
-static symbol s_0_2[3] = { 'e', 'd', 'e' };
-static symbol s_0_3[4] = { 'a', 'n', 'd', 'e' };
-static symbol s_0_4[4] = { 'e', 'n', 'd', 'e' };
-static symbol s_0_5[3] = { 'a', 'n', 'e' };
-static symbol s_0_6[3] = { 'e', 'n', 'e' };
-static symbol s_0_7[6] = { 'h', 'e', 't', 'e', 'n', 'e' };
-static symbol s_0_8[4] = { 'e', 'r', 't', 'e' };
-static symbol s_0_9[2] = { 'e', 'n' };
-static symbol s_0_10[5] = { 'h', 'e', 't', 'e', 'n' };
-static symbol s_0_11[2] = { 'a', 'r' };
-static symbol s_0_12[2] = { 'e', 'r' };
-static symbol s_0_13[5] = { 'h', 'e', 't', 'e', 'r' };
-static symbol s_0_14[1] = { 's' };
-static symbol s_0_15[2] = { 'a', 's' };
-static symbol s_0_16[2] = { 'e', 's' };
-static symbol s_0_17[4] = { 'e', 'd', 'e', 's' };
-static symbol s_0_18[5] = { 'e', 'n', 'd', 'e', 's' };
-static symbol s_0_19[4] = { 'e', 'n', 'e', 's' };
-static symbol s_0_20[7] = { 'h', 'e', 't', 'e', 'n', 'e', 's' };
-static symbol s_0_21[3] = { 'e', 'n', 's' };
-static symbol s_0_22[6] = { 'h', 'e', 't', 'e', 'n', 's' };
-static symbol s_0_23[3] = { 'e', 'r', 's' };
-static symbol s_0_24[3] = { 'e', 't', 's' };
-static symbol s_0_25[2] = { 'e', 't' };
-static symbol s_0_26[3] = { 'h', 'e', 't' };
-static symbol s_0_27[3] = { 'e', 'r', 't' };
-static symbol s_0_28[3] = { 'a', 's', 't' };
-
-static struct among a_0[29] =
-{
-/* 0 */ { 1, s_0_0, -1, 1, 0},
-/* 1 */ { 1, s_0_1, -1, 1, 0},
-/* 2 */ { 3, s_0_2, 1, 1, 0},
-/* 3 */ { 4, s_0_3, 1, 1, 0},
-/* 4 */ { 4, s_0_4, 1, 1, 0},
-/* 5 */ { 3, s_0_5, 1, 1, 0},
-/* 6 */ { 3, s_0_6, 1, 1, 0},
-/* 7 */ { 6, s_0_7, 6, 1, 0},
-/* 8 */ { 4, s_0_8, 1, 3, 0},
-/* 9 */ { 2, s_0_9, -1, 1, 0},
-/* 10 */ { 5, s_0_10, 9, 1, 0},
-/* 11 */ { 2, s_0_11, -1, 1, 0},
-/* 12 */ { 2, s_0_12, -1, 1, 0},
-/* 13 */ { 5, s_0_13, 12, 1, 0},
-/* 14 */ { 1, s_0_14, -1, 2, 0},
-/* 15 */ { 2, s_0_15, 14, 1, 0},
-/* 16 */ { 2, s_0_16, 14, 1, 0},
-/* 17 */ { 4, s_0_17, 16, 1, 0},
-/* 18 */ { 5, s_0_18, 16, 1, 0},
-/* 19 */ { 4, s_0_19, 16, 1, 0},
-/* 20 */ { 7, s_0_20, 19, 1, 0},
-/* 21 */ { 3, s_0_21, 14, 1, 0},
-/* 22 */ { 6, s_0_22, 21, 1, 0},
-/* 23 */ { 3, s_0_23, 14, 1, 0},
-/* 24 */ { 3, s_0_24, 14, 1, 0},
-/* 25 */ { 2, s_0_25, -1, 1, 0},
-/* 26 */ { 3, s_0_26, 25, 1, 0},
-/* 27 */ { 3, s_0_27, -1, 3, 0},
-/* 28 */ { 3, s_0_28, -1, 1, 0}
-};
-
-static symbol s_1_0[2] = { 'd', 't' };
-static symbol s_1_1[2] = { 'v', 't' };
-
-static struct among a_1[2] =
-{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0}
-};
-
-static symbol s_2_0[3] = { 'l', 'e', 'g' };
-static symbol s_2_1[4] = { 'e', 'l', 'e', 'g' };
-static symbol s_2_2[2] = { 'i', 'g' };
-static symbol s_2_3[3] = { 'e', 'i', 'g' };
-static symbol s_2_4[3] = { 'l', 'i', 'g' };
-static symbol s_2_5[4] = { 'e', 'l', 'i', 'g' };
-static symbol s_2_6[3] = { 'e', 'l', 's' };
-static symbol s_2_7[3] = { 'l', 'o', 'v' };
-static symbol s_2_8[4] = { 'e', 'l', 'o', 'v' };
-static symbol s_2_9[4] = { 's', 'l', 'o', 'v' };
-static symbol s_2_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
-
-static struct among a_2[11] =
-{
-/* 0 */ { 3, s_2_0, -1, 1, 0},
-/* 1 */ { 4, s_2_1, 0, 1, 0},
-/* 2 */ { 2, s_2_2, -1, 1, 0},
-/* 3 */ { 3, s_2_3, 2, 1, 0},
-/* 4 */ { 3, s_2_4, 2, 1, 0},
-/* 5 */ { 4, s_2_5, 4, 1, 0},
-/* 6 */ { 3, s_2_6, -1, 1, 0},
-/* 7 */ { 3, s_2_7, -1, 1, 0},
-/* 8 */ { 4, s_2_8, 7, 1, 0},
-/* 9 */ { 4, s_2_9, 7, 1, 0},
-/* 10 */ { 7, s_2_10, 9, 1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
-
-static unsigned char g_s_ending[] = { 119, 125, 149, 1 };
-
-static symbol s_0[] = { 'k' };
-static symbol s_1[] = { 'e', 'r' };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- { int c_test = z->c; /* test, line 30 */
- { int c = skip_utf8(z->p, z->c, 0, z->l, + 3);
- if (c < 0) return 0;
- z->c = c; /* hop, line 30 */
- }
- z->I[1] = z->c; /* setmark x, line 30 */
- z->c = c_test;
- }
- while(1) { /* goto, line 31 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 248))) goto lab0;
- z->c = c;
- break;
- lab0:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* goto, line 31 */
- }
- }
- while(1) { /* gopast, line 31 */
- if (!(out_grouping_U(z, g_v, 97, 248))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 31 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 31 */
- /* try, line 32 */
- if (!(z->I[0] < z->I[1])) goto lab2;
- z->I[0] = z->I[1];
-lab2:
- return 1;
-}
-
-static int r_main_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 38 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 38 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 38 */
- among_var = find_among_b(z, a_0, 29); /* substring, line 38 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 38 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 44 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* or, line 46 */
- if (!(in_grouping_b_U(z, g_s_ending, 98, 122))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_0))) return 0;
- if (!(out_grouping_b_U(z, g_v, 97, 248))) return 0;
- }
- lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 46 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 2, s_1); /* <-, line 48 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_consonant_pair(struct SN_env * z) {
- { int m_test = z->l - z->c; /* test, line 53 */
- { int m3; /* setlimit, line 54 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 54 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 54 */
- if (!(find_among_b(z, a_1, 2))) { z->lb = m3; return 0; } /* substring, line 54 */
- z->bra = z->c; /* ], line 54 */
- z->lb = m3;
- }
- z->c = z->l - m_test;
- }
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 59 */
- }
- z->bra = z->c; /* ], line 59 */
- { int ret;
- ret = slice_del(z); /* delete, line 59 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_other_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 63 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 63 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 63 */
- among_var = find_among_b(z, a_2, 11); /* substring, line 63 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 63 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 67 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-extern int norwegian_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 74 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 74 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 75 */
-
- { int m = z->l - z->c; (void) m; /* do, line 76 */
- { int ret = r_main_suffix(z);
- if (ret == 0) goto lab1; /* call main_suffix, line 76 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 77 */
- { int ret = r_consonant_pair(z);
- if (ret == 0) goto lab2; /* call consonant_pair, line 77 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 78 */
- { int ret = r_other_suffix(z);
- if (ret == 0) goto lab3; /* call other_suffix, line 78 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = z->l - m;
- }
- z->c = z->lb;
- return 1;
-}
-
-extern struct SN_env * norwegian_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); }
-
-extern void norwegian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_norwegian.h b/src/libstemmer/src_c/stem_UTF_8_norwegian.h
deleted file mode 100644
index a50cd1f2f..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_norwegian.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * norwegian_UTF_8_create_env(void);
-extern void norwegian_UTF_8_close_env(struct SN_env * z);
-
-extern int norwegian_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_porter.c b/src/libstemmer/src_c/stem_UTF_8_porter.c
deleted file mode 100644
index e921b5c81..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_porter.c
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int porter_UTF_8_stem(struct SN_env * z);
-static int r_Step_5b(struct SN_env * z);
-static int r_Step_5a(struct SN_env * z);
-static int r_Step_4(struct SN_env * z);
-static int r_Step_3(struct SN_env * z);
-static int r_Step_2(struct SN_env * z);
-static int r_Step_1c(struct SN_env * z);
-static int r_Step_1b(struct SN_env * z);
-static int r_Step_1a(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_shortv(struct SN_env * z);
-
-extern struct SN_env * porter_UTF_8_create_env(void);
-extern void porter_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[1] = { 's' };
-static symbol s_0_1[3] = { 'i', 'e', 's' };
-static symbol s_0_2[4] = { 's', 's', 'e', 's' };
-static symbol s_0_3[2] = { 's', 's' };
-
-static struct among a_0[4] =
-{
-/* 0 */ { 1, s_0_0, -1, 3, 0},
-/* 1 */ { 3, s_0_1, 0, 2, 0},
-/* 2 */ { 4, s_0_2, 0, 1, 0},
-/* 3 */ { 2, s_0_3, 0, -1, 0}
-};
-
-static symbol s_1_1[2] = { 'b', 'b' };
-static symbol s_1_2[2] = { 'd', 'd' };
-static symbol s_1_3[2] = { 'f', 'f' };
-static symbol s_1_4[2] = { 'g', 'g' };
-static symbol s_1_5[2] = { 'b', 'l' };
-static symbol s_1_6[2] = { 'm', 'm' };
-static symbol s_1_7[2] = { 'n', 'n' };
-static symbol s_1_8[2] = { 'p', 'p' };
-static symbol s_1_9[2] = { 'r', 'r' };
-static symbol s_1_10[2] = { 'a', 't' };
-static symbol s_1_11[2] = { 't', 't' };
-static symbol s_1_12[2] = { 'i', 'z' };
-
-static struct among a_1[13] =
-{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_1_1, 0, 2, 0},
-/* 2 */ { 2, s_1_2, 0, 2, 0},
-/* 3 */ { 2, s_1_3, 0, 2, 0},
-/* 4 */ { 2, s_1_4, 0, 2, 0},
-/* 5 */ { 2, s_1_5, 0, 1, 0},
-/* 6 */ { 2, s_1_6, 0, 2, 0},
-/* 7 */ { 2, s_1_7, 0, 2, 0},
-/* 8 */ { 2, s_1_8, 0, 2, 0},
-/* 9 */ { 2, s_1_9, 0, 2, 0},
-/* 10 */ { 2, s_1_10, 0, 1, 0},
-/* 11 */ { 2, s_1_11, 0, 2, 0},
-/* 12 */ { 2, s_1_12, 0, 1, 0}
-};
-
-static symbol s_2_0[2] = { 'e', 'd' };
-static symbol s_2_1[3] = { 'e', 'e', 'd' };
-static symbol s_2_2[3] = { 'i', 'n', 'g' };
-
-static struct among a_2[3] =
-{
-/* 0 */ { 2, s_2_0, -1, 2, 0},
-/* 1 */ { 3, s_2_1, 0, 1, 0},
-/* 2 */ { 3, s_2_2, -1, 2, 0}
-};
-
-static symbol s_3_0[4] = { 'a', 'n', 'c', 'i' };
-static symbol s_3_1[4] = { 'e', 'n', 'c', 'i' };
-static symbol s_3_2[4] = { 'a', 'b', 'l', 'i' };
-static symbol s_3_3[3] = { 'e', 'l', 'i' };
-static symbol s_3_4[4] = { 'a', 'l', 'l', 'i' };
-static symbol s_3_5[5] = { 'o', 'u', 's', 'l', 'i' };
-static symbol s_3_6[5] = { 'e', 'n', 't', 'l', 'i' };
-static symbol s_3_7[5] = { 'a', 'l', 'i', 't', 'i' };
-static symbol s_3_8[6] = { 'b', 'i', 'l', 'i', 't', 'i' };
-static symbol s_3_9[5] = { 'i', 'v', 'i', 't', 'i' };
-static symbol s_3_10[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_3_11[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_3_12[5] = { 'a', 'l', 'i', 's', 'm' };
-static symbol s_3_13[5] = { 'a', 't', 'i', 'o', 'n' };
-static symbol s_3_14[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' };
-static symbol s_3_15[4] = { 'i', 'z', 'e', 'r' };
-static symbol s_3_16[4] = { 'a', 't', 'o', 'r' };
-static symbol s_3_17[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
-static symbol s_3_18[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
-static symbol s_3_19[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
-
-static struct among a_3[20] =
-{
-/* 0 */ { 4, s_3_0, -1, 3, 0},
-/* 1 */ { 4, s_3_1, -1, 2, 0},
-/* 2 */ { 4, s_3_2, -1, 4, 0},
-/* 3 */ { 3, s_3_3, -1, 6, 0},
-/* 4 */ { 4, s_3_4, -1, 9, 0},
-/* 5 */ { 5, s_3_5, -1, 12, 0},
-/* 6 */ { 5, s_3_6, -1, 5, 0},
-/* 7 */ { 5, s_3_7, -1, 10, 0},
-/* 8 */ { 6, s_3_8, -1, 14, 0},
-/* 9 */ { 5, s_3_9, -1, 13, 0},
-/* 10 */ { 6, s_3_10, -1, 1, 0},
-/* 11 */ { 7, s_3_11, 10, 8, 0},
-/* 12 */ { 5, s_3_12, -1, 10, 0},
-/* 13 */ { 5, s_3_13, -1, 8, 0},
-/* 14 */ { 7, s_3_14, 13, 7, 0},
-/* 15 */ { 4, s_3_15, -1, 7, 0},
-/* 16 */ { 4, s_3_16, -1, 8, 0},
-/* 17 */ { 7, s_3_17, -1, 13, 0},
-/* 18 */ { 7, s_3_18, -1, 11, 0},
-/* 19 */ { 7, s_3_19, -1, 12, 0}
-};
-
-static symbol s_4_0[5] = { 'i', 'c', 'a', 't', 'e' };
-static symbol s_4_1[5] = { 'a', 't', 'i', 'v', 'e' };
-static symbol s_4_2[5] = { 'a', 'l', 'i', 'z', 'e' };
-static symbol s_4_3[5] = { 'i', 'c', 'i', 't', 'i' };
-static symbol s_4_4[4] = { 'i', 'c', 'a', 'l' };
-static symbol s_4_5[3] = { 'f', 'u', 'l' };
-static symbol s_4_6[4] = { 'n', 'e', 's', 's' };
-
-static struct among a_4[7] =
-{
-/* 0 */ { 5, s_4_0, -1, 2, 0},
-/* 1 */ { 5, s_4_1, -1, 3, 0},
-/* 2 */ { 5, s_4_2, -1, 1, 0},
-/* 3 */ { 5, s_4_3, -1, 2, 0},
-/* 4 */ { 4, s_4_4, -1, 2, 0},
-/* 5 */ { 3, s_4_5, -1, 3, 0},
-/* 6 */ { 4, s_4_6, -1, 3, 0}
-};
-
-static symbol s_5_0[2] = { 'i', 'c' };
-static symbol s_5_1[4] = { 'a', 'n', 'c', 'e' };
-static symbol s_5_2[4] = { 'e', 'n', 'c', 'e' };
-static symbol s_5_3[4] = { 'a', 'b', 'l', 'e' };
-static symbol s_5_4[4] = { 'i', 'b', 'l', 'e' };
-static symbol s_5_5[3] = { 'a', 't', 'e' };
-static symbol s_5_6[3] = { 'i', 'v', 'e' };
-static symbol s_5_7[3] = { 'i', 'z', 'e' };
-static symbol s_5_8[3] = { 'i', 't', 'i' };
-static symbol s_5_9[2] = { 'a', 'l' };
-static symbol s_5_10[3] = { 'i', 's', 'm' };
-static symbol s_5_11[3] = { 'i', 'o', 'n' };
-static symbol s_5_12[2] = { 'e', 'r' };
-static symbol s_5_13[3] = { 'o', 'u', 's' };
-static symbol s_5_14[3] = { 'a', 'n', 't' };
-static symbol s_5_15[3] = { 'e', 'n', 't' };
-static symbol s_5_16[4] = { 'm', 'e', 'n', 't' };
-static symbol s_5_17[5] = { 'e', 'm', 'e', 'n', 't' };
-static symbol s_5_18[2] = { 'o', 'u' };
-
-static struct among a_5[19] =
-{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 4, s_5_2, -1, 1, 0},
-/* 3 */ { 4, s_5_3, -1, 1, 0},
-/* 4 */ { 4, s_5_4, -1, 1, 0},
-/* 5 */ { 3, s_5_5, -1, 1, 0},
-/* 6 */ { 3, s_5_6, -1, 1, 0},
-/* 7 */ { 3, s_5_7, -1, 1, 0},
-/* 8 */ { 3, s_5_8, -1, 1, 0},
-/* 9 */ { 2, s_5_9, -1, 1, 0},
-/* 10 */ { 3, s_5_10, -1, 1, 0},
-/* 11 */ { 3, s_5_11, -1, 2, 0},
-/* 12 */ { 2, s_5_12, -1, 1, 0},
-/* 13 */ { 3, s_5_13, -1, 1, 0},
-/* 14 */ { 3, s_5_14, -1, 1, 0},
-/* 15 */ { 3, s_5_15, -1, 1, 0},
-/* 16 */ { 4, s_5_16, 15, 1, 0},
-/* 17 */ { 5, s_5_17, 16, 1, 0},
-/* 18 */ { 2, s_5_18, -1, 1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1 };
-
-static unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
-
-static symbol s_0[] = { 's', 's' };
-static symbol s_1[] = { 'i' };
-static symbol s_2[] = { 'e', 'e' };
-static symbol s_3[] = { 'e' };
-static symbol s_4[] = { 'e' };
-static symbol s_5[] = { 'y' };
-static symbol s_6[] = { 'Y' };
-static symbol s_7[] = { 'i' };
-static symbol s_8[] = { 't', 'i', 'o', 'n' };
-static symbol s_9[] = { 'e', 'n', 'c', 'e' };
-static symbol s_10[] = { 'a', 'n', 'c', 'e' };
-static symbol s_11[] = { 'a', 'b', 'l', 'e' };
-static symbol s_12[] = { 'e', 'n', 't' };
-static symbol s_13[] = { 'e' };
-static symbol s_14[] = { 'i', 'z', 'e' };
-static symbol s_15[] = { 'a', 't', 'e' };
-static symbol s_16[] = { 'a', 'l' };
-static symbol s_17[] = { 'a', 'l' };
-static symbol s_18[] = { 'f', 'u', 'l' };
-static symbol s_19[] = { 'o', 'u', 's' };
-static symbol s_20[] = { 'i', 'v', 'e' };
-static symbol s_21[] = { 'b', 'l', 'e' };
-static symbol s_22[] = { 'a', 'l' };
-static symbol s_23[] = { 'i', 'c' };
-static symbol s_24[] = { 's' };
-static symbol s_25[] = { 't' };
-static symbol s_26[] = { 'e' };
-static symbol s_27[] = { 'l' };
-static symbol s_28[] = { 'l' };
-static symbol s_29[] = { 'y' };
-static symbol s_30[] = { 'Y' };
-static symbol s_31[] = { 'y' };
-static symbol s_32[] = { 'Y' };
-static symbol s_33[] = { 'Y' };
-static symbol s_34[] = { 'y' };
-
-static int r_shortv(struct SN_env * z) {
- if (!(out_grouping_b_U(z, g_v_WXY, 89, 121))) return 0;
- if (!(in_grouping_b_U(z, g_v, 97, 121))) return 0;
- if (!(out_grouping_b_U(z, g_v, 97, 121))) return 0;
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_Step_1a(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 25 */
- among_var = find_among_b(z, a_0, 4); /* substring, line 25 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 25 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 2, s_0); /* <-, line 26 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_1); /* <-, line 27 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 29 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_1b(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 34 */
- among_var = find_among_b(z, a_2, 3); /* substring, line 34 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 34 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 35 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 2, s_2); /* <-, line 35 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m_test = z->l - z->c; /* test, line 38 */
- while(1) { /* gopast, line 38 */
- if (!(in_grouping_b_U(z, g_v, 97, 121))) goto lab0;
- break;
- lab0:
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 38 */
- }
- }
- z->c = z->l - m_test;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 38 */
- if (ret < 0) return ret;
- }
- { int m_test = z->l - z->c; /* test, line 39 */
- among_var = find_among_b(z, a_1, 13); /* substring, line 39 */
- if (!(among_var)) return 0;
- z->c = z->l - m_test;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- { int c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_3); /* <+, line 41 */
- z->c = c;
- }
- if (ret < 0) return ret;
- }
- break;
- case 2:
- z->ket = z->c; /* [, line 44 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* next, line 44 */
- }
- z->bra = z->c; /* ], line 44 */
- { int ret;
- ret = slice_del(z); /* delete, line 44 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- if (z->c != z->I[0]) return 0; /* atmark, line 45 */
- { int m_test = z->l - z->c; /* test, line 45 */
- { int ret = r_shortv(z);
- if (ret == 0) return 0; /* call shortv, line 45 */
- if (ret < 0) return ret;
- }
- z->c = z->l - m_test;
- }
- { int ret;
- { int c = z->c;
- ret = insert_s(z, z->c, z->c, 1, s_4); /* <+, line 45 */
- z->c = c;
- }
- if (ret < 0) return ret;
- }
- break;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_1c(struct SN_env * z) {
- z->ket = z->c; /* [, line 52 */
- { int m = z->l - z->c; (void) m; /* or, line 52 */
- if (!(eq_s_b(z, 1, s_5))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_6))) return 0;
- }
-lab0:
- z->bra = z->c; /* ], line 52 */
- while(1) { /* gopast, line 53 */
- if (!(in_grouping_b_U(z, g_v, 97, 121))) goto lab2;
- break;
- lab2:
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 53 */
- }
- }
- { int ret;
- ret = slice_from_s(z, 1, s_7); /* <-, line 54 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_Step_2(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 58 */
- among_var = find_among_b(z, a_3, 20); /* substring, line 58 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 58 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 58 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 4, s_8); /* <-, line 59 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 4, s_9); /* <-, line 60 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 4, s_10); /* <-, line 61 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 4, s_11); /* <-, line 62 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 3, s_12); /* <-, line 63 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret;
- ret = slice_from_s(z, 1, s_13); /* <-, line 64 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- { int ret;
- ret = slice_from_s(z, 3, s_14); /* <-, line 66 */
- if (ret < 0) return ret;
- }
- break;
- case 8:
- { int ret;
- ret = slice_from_s(z, 3, s_15); /* <-, line 68 */
- if (ret < 0) return ret;
- }
- break;
- case 9:
- { int ret;
- ret = slice_from_s(z, 2, s_16); /* <-, line 69 */
- if (ret < 0) return ret;
- }
- break;
- case 10:
- { int ret;
- ret = slice_from_s(z, 2, s_17); /* <-, line 71 */
- if (ret < 0) return ret;
- }
- break;
- case 11:
- { int ret;
- ret = slice_from_s(z, 3, s_18); /* <-, line 72 */
- if (ret < 0) return ret;
- }
- break;
- case 12:
- { int ret;
- ret = slice_from_s(z, 3, s_19); /* <-, line 74 */
- if (ret < 0) return ret;
- }
- break;
- case 13:
- { int ret;
- ret = slice_from_s(z, 3, s_20); /* <-, line 76 */
- if (ret < 0) return ret;
- }
- break;
- case 14:
- { int ret;
- ret = slice_from_s(z, 3, s_21); /* <-, line 77 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_3(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 82 */
- among_var = find_among_b(z, a_4, 7); /* substring, line 82 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 82 */
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 82 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 2, s_22); /* <-, line 83 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 2, s_23); /* <-, line 85 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 87 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_4(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 92 */
- among_var = find_among_b(z, a_5, 19); /* substring, line 92 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 92 */
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 92 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 95 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int m = z->l - z->c; (void) m; /* or, line 96 */
- if (!(eq_s_b(z, 1, s_24))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_25))) return 0;
- }
- lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 96 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_Step_5a(struct SN_env * z) {
- z->ket = z->c; /* [, line 101 */
- if (!(eq_s_b(z, 1, s_26))) return 0;
- z->bra = z->c; /* ], line 101 */
- { int m = z->l - z->c; (void) m; /* or, line 102 */
- { int ret = r_R2(z);
- if (ret == 0) goto lab1; /* call R2, line 102 */
- if (ret < 0) return ret;
- }
- goto lab0;
- lab1:
- z->c = z->l - m;
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 102 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* not, line 102 */
- { int ret = r_shortv(z);
- if (ret == 0) goto lab2; /* call shortv, line 102 */
- if (ret < 0) return ret;
- }
- return 0;
- lab2:
- z->c = z->l - m;
- }
- }
-lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 103 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-static int r_Step_5b(struct SN_env * z) {
- z->ket = z->c; /* [, line 107 */
- if (!(eq_s_b(z, 1, s_27))) return 0;
- z->bra = z->c; /* ], line 107 */
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 108 */
- if (ret < 0) return ret;
- }
- if (!(eq_s_b(z, 1, s_28))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 109 */
- if (ret < 0) return ret;
- }
- return 1;
-}
-
-extern int porter_UTF_8_stem(struct SN_env * z) {
- z->B[0] = 0; /* unset Y_found, line 115 */
- { int c = z->c; /* do, line 116 */
- z->bra = z->c; /* [, line 116 */
- if (!(eq_s(z, 1, s_29))) goto lab0;
- z->ket = z->c; /* ], line 116 */
- { int ret;
- ret = slice_from_s(z, 1, s_30); /* <-, line 116 */
- if (ret < 0) return ret;
- }
- z->B[0] = 1; /* set Y_found, line 116 */
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 117 */
- while(1) { /* repeat, line 117 */
- int c = z->c;
- while(1) { /* goto, line 117 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 121))) goto lab3;
- z->bra = z->c; /* [, line 117 */
- if (!(eq_s(z, 1, s_31))) goto lab3;
- z->ket = z->c; /* ], line 117 */
- z->c = c;
- break;
- lab3:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab2;
- z->c = c; /* goto, line 117 */
- }
- }
- { int ret;
- ret = slice_from_s(z, 1, s_32); /* <-, line 117 */
- if (ret < 0) return ret;
- }
- z->B[0] = 1; /* set Y_found, line 117 */
- continue;
- lab2:
- z->c = c;
- break;
- }
- z->c = c;
- }
- z->I[0] = z->l;
- z->I[1] = z->l;
- { int c = z->c; /* do, line 121 */
- while(1) { /* gopast, line 122 */
- if (!(in_grouping_U(z, g_v, 97, 121))) goto lab5;
- break;
- lab5:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 122 */
- }
- }
- while(1) { /* gopast, line 122 */
- if (!(out_grouping_U(z, g_v, 97, 121))) goto lab6;
- break;
- lab6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 122 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 122 */
- while(1) { /* gopast, line 123 */
- if (!(in_grouping_U(z, g_v, 97, 121))) goto lab7;
- break;
- lab7:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 123 */
- }
- }
- while(1) { /* gopast, line 123 */
- if (!(out_grouping_U(z, g_v, 97, 121))) goto lab8;
- break;
- lab8:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 123 */
- }
- }
- z->I[1] = z->c; /* setmark p2, line 123 */
- lab4:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 126 */
-
- { int m = z->l - z->c; (void) m; /* do, line 127 */
- { int ret = r_Step_1a(z);
- if (ret == 0) goto lab9; /* call Step_1a, line 127 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 128 */
- { int ret = r_Step_1b(z);
- if (ret == 0) goto lab10; /* call Step_1b, line 128 */
- if (ret < 0) return ret;
- }
- lab10:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 129 */
- { int ret = r_Step_1c(z);
- if (ret == 0) goto lab11; /* call Step_1c, line 129 */
- if (ret < 0) return ret;
- }
- lab11:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 130 */
- { int ret = r_Step_2(z);
- if (ret == 0) goto lab12; /* call Step_2, line 130 */
- if (ret < 0) return ret;
- }
- lab12:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 131 */
- { int ret = r_Step_3(z);
- if (ret == 0) goto lab13; /* call Step_3, line 131 */
- if (ret < 0) return ret;
- }
- lab13:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 132 */
- { int ret = r_Step_4(z);
- if (ret == 0) goto lab14; /* call Step_4, line 132 */
- if (ret < 0) return ret;
- }
- lab14:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 133 */
- { int ret = r_Step_5a(z);
- if (ret == 0) goto lab15; /* call Step_5a, line 133 */
- if (ret < 0) return ret;
- }
- lab15:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 134 */
- { int ret = r_Step_5b(z);
- if (ret == 0) goto lab16; /* call Step_5b, line 134 */
- if (ret < 0) return ret;
- }
- lab16:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 137 */
- if (!(z->B[0])) goto lab17; /* Boolean test Y_found, line 137 */
- while(1) { /* repeat, line 137 */
- int c = z->c;
- while(1) { /* goto, line 137 */
- int c = z->c;
- z->bra = z->c; /* [, line 137 */
- if (!(eq_s(z, 1, s_33))) goto lab19;
- z->ket = z->c; /* ], line 137 */
- z->c = c;
- break;
- lab19:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab18;
- z->c = c; /* goto, line 137 */
- }
- }
- { int ret;
- ret = slice_from_s(z, 1, s_34); /* <-, line 137 */
- if (ret < 0) return ret;
- }
- continue;
- lab18:
- z->c = c;
- break;
- }
- lab17:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * porter_UTF_8_create_env(void) { return SN_create_env(0, 2, 1); }
-
-extern void porter_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_porter.h b/src/libstemmer/src_c/stem_UTF_8_porter.h
deleted file mode 100644
index 3ade111ff..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_porter.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * porter_UTF_8_create_env(void);
-extern void porter_UTF_8_close_env(struct SN_env * z);
-
-extern int porter_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_portuguese.c b/src/libstemmer/src_c/stem_UTF_8_portuguese.c
deleted file mode 100644
index 8d360de46..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_portuguese.c
+++ /dev/null
@@ -1,1068 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int portuguese_UTF_8_stem(struct SN_env * z);
-static int r_residual_form(struct SN_env * z);
-static int r_residual_suffix(struct SN_env * z);
-static int r_verb_suffix(struct SN_env * z);
-static int r_standard_suffix(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_RV(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * portuguese_UTF_8_create_env(void);
-extern void portuguese_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_1[2] = { 0xC3, 0xA3 };
-static symbol s_0_2[2] = { 0xC3, 0xB5 };
-
-static struct among a_0[3] =
-{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_0_1, 0, 1, 0},
-/* 2 */ { 2, s_0_2, 0, 2, 0}
-};
-
-static symbol s_1_1[2] = { 'a', '~' };
-static symbol s_1_2[2] = { 'o', '~' };
-
-static struct among a_1[3] =
-{
-/* 0 */ { 0, 0, -1, 3, 0},
-/* 1 */ { 2, s_1_1, 0, 1, 0},
-/* 2 */ { 2, s_1_2, 0, 2, 0}
-};
-
-static symbol s_2_0[2] = { 'i', 'c' };
-static symbol s_2_1[2] = { 'a', 'd' };
-static symbol s_2_2[2] = { 'o', 's' };
-static symbol s_2_3[2] = { 'i', 'v' };
-
-static struct among a_2[4] =
-{
-/* 0 */ { 2, s_2_0, -1, -1, 0},
-/* 1 */ { 2, s_2_1, -1, -1, 0},
-/* 2 */ { 2, s_2_2, -1, -1, 0},
-/* 3 */ { 2, s_2_3, -1, 1, 0}
-};
-
-static symbol s_3_0[4] = { 'a', 'n', 't', 'e' };
-static symbol s_3_1[4] = { 'a', 'v', 'e', 'l' };
-static symbol s_3_2[5] = { 0xC3, 0xAD, 'v', 'e', 'l' };
-
-static struct among a_3[3] =
-{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0},
-/* 2 */ { 5, s_3_2, -1, 1, 0}
-};
-
-static symbol s_4_0[2] = { 'i', 'c' };
-static symbol s_4_1[4] = { 'a', 'b', 'i', 'l' };
-static symbol s_4_2[2] = { 'i', 'v' };
-
-static struct among a_4[3] =
-{
-/* 0 */ { 2, s_4_0, -1, 1, 0},
-/* 1 */ { 4, s_4_1, -1, 1, 0},
-/* 2 */ { 2, s_4_2, -1, 1, 0}
-};
-
-static symbol s_5_0[3] = { 'i', 'c', 'a' };
-static symbol s_5_1[6] = { 0xC3, 0xA2, 'n', 'c', 'i', 'a' };
-static symbol s_5_2[6] = { 0xC3, 0xAA, 'n', 'c', 'i', 'a' };
-static symbol s_5_3[3] = { 'i', 'r', 'a' };
-static symbol s_5_4[5] = { 'a', 'd', 'o', 'r', 'a' };
-static symbol s_5_5[3] = { 'o', 's', 'a' };
-static symbol s_5_6[4] = { 'i', 's', 't', 'a' };
-static symbol s_5_7[3] = { 'i', 'v', 'a' };
-static symbol s_5_8[3] = { 'e', 'z', 'a' };
-static symbol s_5_9[6] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a' };
-static symbol s_5_10[5] = { 'i', 'd', 'a', 'd', 'e' };
-static symbol s_5_11[4] = { 'a', 'n', 't', 'e' };
-static symbol s_5_12[5] = { 'm', 'e', 'n', 't', 'e' };
-static symbol s_5_13[6] = { 'a', 'm', 'e', 'n', 't', 'e' };
-static symbol s_5_14[5] = { 0xC3, 0xA1, 'v', 'e', 'l' };
-static symbol s_5_15[5] = { 0xC3, 0xAD, 'v', 'e', 'l' };
-static symbol s_5_16[6] = { 'u', 'c', 'i', 0xC3, 0xB3, 'n' };
-static symbol s_5_17[3] = { 'i', 'c', 'o' };
-static symbol s_5_18[4] = { 'i', 's', 'm', 'o' };
-static symbol s_5_19[3] = { 'o', 's', 'o' };
-static symbol s_5_20[6] = { 'a', 'm', 'e', 'n', 't', 'o' };
-static symbol s_5_21[6] = { 'i', 'm', 'e', 'n', 't', 'o' };
-static symbol s_5_22[3] = { 'i', 'v', 'o' };
-static symbol s_5_23[6] = { 'a', 0xC3, 0xA7, 'a', '~', 'o' };
-static symbol s_5_24[4] = { 'a', 'd', 'o', 'r' };
-static symbol s_5_25[4] = { 'i', 'c', 'a', 's' };
-static symbol s_5_26[7] = { 0xC3, 0xAA, 'n', 'c', 'i', 'a', 's' };
-static symbol s_5_27[4] = { 'i', 'r', 'a', 's' };
-static symbol s_5_28[6] = { 'a', 'd', 'o', 'r', 'a', 's' };
-static symbol s_5_29[4] = { 'o', 's', 'a', 's' };
-static symbol s_5_30[5] = { 'i', 's', 't', 'a', 's' };
-static symbol s_5_31[4] = { 'i', 'v', 'a', 's' };
-static symbol s_5_32[4] = { 'e', 'z', 'a', 's' };
-static symbol s_5_33[7] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a', 's' };
-static symbol s_5_34[6] = { 'i', 'd', 'a', 'd', 'e', 's' };
-static symbol s_5_35[7] = { 'u', 'c', 'i', 'o', 'n', 'e', 's' };
-static symbol s_5_36[6] = { 'a', 'd', 'o', 'r', 'e', 's' };
-static symbol s_5_37[5] = { 'a', 'n', 't', 'e', 's' };
-static symbol s_5_38[7] = { 'a', 0xC3, 0xA7, 'o', '~', 'e', 's' };
-static symbol s_5_39[4] = { 'i', 'c', 'o', 's' };
-static symbol s_5_40[5] = { 'i', 's', 'm', 'o', 's' };
-static symbol s_5_41[4] = { 'o', 's', 'o', 's' };
-static symbol s_5_42[7] = { 'a', 'm', 'e', 'n', 't', 'o', 's' };
-static symbol s_5_43[7] = { 'i', 'm', 'e', 'n', 't', 'o', 's' };
-static symbol s_5_44[4] = { 'i', 'v', 'o', 's' };
-
-static struct among a_5[45] =
-{
-/* 0 */ { 3, s_5_0, -1, 1, 0},
-/* 1 */ { 6, s_5_1, -1, 1, 0},
-/* 2 */ { 6, s_5_2, -1, 4, 0},
-/* 3 */ { 3, s_5_3, -1, 9, 0},
-/* 4 */ { 5, s_5_4, -1, 1, 0},
-/* 5 */ { 3, s_5_5, -1, 1, 0},
-/* 6 */ { 4, s_5_6, -1, 1, 0},
-/* 7 */ { 3, s_5_7, -1, 8, 0},
-/* 8 */ { 3, s_5_8, -1, 1, 0},
-/* 9 */ { 6, s_5_9, -1, 2, 0},
-/* 10 */ { 5, s_5_10, -1, 7, 0},
-/* 11 */ { 4, s_5_11, -1, 1, 0},
-/* 12 */ { 5, s_5_12, -1, 6, 0},
-/* 13 */ { 6, s_5_13, 12, 5, 0},
-/* 14 */ { 5, s_5_14, -1, 1, 0},
-/* 15 */ { 5, s_5_15, -1, 1, 0},
-/* 16 */ { 6, s_5_16, -1, 3, 0},
-/* 17 */ { 3, s_5_17, -1, 1, 0},
-/* 18 */ { 4, s_5_18, -1, 1, 0},
-/* 19 */ { 3, s_5_19, -1, 1, 0},
-/* 20 */ { 6, s_5_20, -1, 1, 0},
-/* 21 */ { 6, s_5_21, -1, 1, 0},
-/* 22 */ { 3, s_5_22, -1, 8, 0},
-/* 23 */ { 6, s_5_23, -1, 1, 0},
-/* 24 */ { 4, s_5_24, -1, 1, 0},
-/* 25 */ { 4, s_5_25, -1, 1, 0},
-/* 26 */ { 7, s_5_26, -1, 4, 0},
-/* 27 */ { 4, s_5_27, -1, 9, 0},
-/* 28 */ { 6, s_5_28, -1, 1, 0},
-/* 29 */ { 4, s_5_29, -1, 1, 0},
-/* 30 */ { 5, s_5_30, -1, 1, 0},
-/* 31 */ { 4, s_5_31, -1, 8, 0},
-/* 32 */ { 4, s_5_32, -1, 1, 0},
-/* 33 */ { 7, s_5_33, -1, 2, 0},
-/* 34 */ { 6, s_5_34, -1, 7, 0},
-/* 35 */ { 7, s_5_35, -1, 3, 0},
-/* 36 */ { 6, s_5_36, -1, 1, 0},
-/* 37 */ { 5, s_5_37, -1, 1, 0},
-/* 38 */ { 7, s_5_38, -1, 1, 0},
-/* 39 */ { 4, s_5_39, -1, 1, 0},
-/* 40 */ { 5, s_5_40, -1, 1, 0},
-/* 41 */ { 4, s_5_41, -1, 1, 0},
-/* 42 */ { 7, s_5_42, -1, 1, 0},
-/* 43 */ { 7, s_5_43, -1, 1, 0},
-/* 44 */ { 4, s_5_44, -1, 8, 0}
-};
-
-static symbol s_6_0[3] = { 'a', 'd', 'a' };
-static symbol s_6_1[3] = { 'i', 'd', 'a' };
-static symbol s_6_2[2] = { 'i', 'a' };
-static symbol s_6_3[4] = { 'a', 'r', 'i', 'a' };
-static symbol s_6_4[4] = { 'e', 'r', 'i', 'a' };
-static symbol s_6_5[4] = { 'i', 'r', 'i', 'a' };
-static symbol s_6_6[3] = { 'a', 'r', 'a' };
-static symbol s_6_7[3] = { 'e', 'r', 'a' };
-static symbol s_6_8[3] = { 'i', 'r', 'a' };
-static symbol s_6_9[3] = { 'a', 'v', 'a' };
-static symbol s_6_10[4] = { 'a', 's', 's', 'e' };
-static symbol s_6_11[4] = { 'e', 's', 's', 'e' };
-static symbol s_6_12[4] = { 'i', 's', 's', 'e' };
-static symbol s_6_13[4] = { 'a', 's', 't', 'e' };
-static symbol s_6_14[4] = { 'e', 's', 't', 'e' };
-static symbol s_6_15[4] = { 'i', 's', 't', 'e' };
-static symbol s_6_16[2] = { 'e', 'i' };
-static symbol s_6_17[4] = { 'a', 'r', 'e', 'i' };
-static symbol s_6_18[4] = { 'e', 'r', 'e', 'i' };
-static symbol s_6_19[4] = { 'i', 'r', 'e', 'i' };
-static symbol s_6_20[2] = { 'a', 'm' };
-static symbol s_6_21[3] = { 'i', 'a', 'm' };
-static symbol s_6_22[5] = { 'a', 'r', 'i', 'a', 'm' };
-static symbol s_6_23[5] = { 'e', 'r', 'i', 'a', 'm' };
-static symbol s_6_24[5] = { 'i', 'r', 'i', 'a', 'm' };
-static symbol s_6_25[4] = { 'a', 'r', 'a', 'm' };
-static symbol s_6_26[4] = { 'e', 'r', 'a', 'm' };
-static symbol s_6_27[4] = { 'i', 'r', 'a', 'm' };
-static symbol s_6_28[4] = { 'a', 'v', 'a', 'm' };
-static symbol s_6_29[2] = { 'e', 'm' };
-static symbol s_6_30[4] = { 'a', 'r', 'e', 'm' };
-static symbol s_6_31[4] = { 'e', 'r', 'e', 'm' };
-static symbol s_6_32[4] = { 'i', 'r', 'e', 'm' };
-static symbol s_6_33[5] = { 'a', 's', 's', 'e', 'm' };
-static symbol s_6_34[5] = { 'e', 's', 's', 'e', 'm' };
-static symbol s_6_35[5] = { 'i', 's', 's', 'e', 'm' };
-static symbol s_6_36[3] = { 'a', 'd', 'o' };
-static symbol s_6_37[3] = { 'i', 'd', 'o' };
-static symbol s_6_38[4] = { 'a', 'n', 'd', 'o' };
-static symbol s_6_39[4] = { 'e', 'n', 'd', 'o' };
-static symbol s_6_40[4] = { 'i', 'n', 'd', 'o' };
-static symbol s_6_41[5] = { 'a', 'r', 'a', '~', 'o' };
-static symbol s_6_42[5] = { 'e', 'r', 'a', '~', 'o' };
-static symbol s_6_43[5] = { 'i', 'r', 'a', '~', 'o' };
-static symbol s_6_44[2] = { 'a', 'r' };
-static symbol s_6_45[2] = { 'e', 'r' };
-static symbol s_6_46[2] = { 'i', 'r' };
-static symbol s_6_47[2] = { 'a', 's' };
-static symbol s_6_48[4] = { 'a', 'd', 'a', 's' };
-static symbol s_6_49[4] = { 'i', 'd', 'a', 's' };
-static symbol s_6_50[3] = { 'i', 'a', 's' };
-static symbol s_6_51[5] = { 'a', 'r', 'i', 'a', 's' };
-static symbol s_6_52[5] = { 'e', 'r', 'i', 'a', 's' };
-static symbol s_6_53[5] = { 'i', 'r', 'i', 'a', 's' };
-static symbol s_6_54[4] = { 'a', 'r', 'a', 's' };
-static symbol s_6_55[4] = { 'e', 'r', 'a', 's' };
-static symbol s_6_56[4] = { 'i', 'r', 'a', 's' };
-static symbol s_6_57[4] = { 'a', 'v', 'a', 's' };
-static symbol s_6_58[2] = { 'e', 's' };
-static symbol s_6_59[5] = { 'a', 'r', 'd', 'e', 's' };
-static symbol s_6_60[5] = { 'e', 'r', 'd', 'e', 's' };
-static symbol s_6_61[5] = { 'i', 'r', 'd', 'e', 's' };
-static symbol s_6_62[4] = { 'a', 'r', 'e', 's' };
-static symbol s_6_63[4] = { 'e', 'r', 'e', 's' };
-static symbol s_6_64[4] = { 'i', 'r', 'e', 's' };
-static symbol s_6_65[5] = { 'a', 's', 's', 'e', 's' };
-static symbol s_6_66[5] = { 'e', 's', 's', 'e', 's' };
-static symbol s_6_67[5] = { 'i', 's', 's', 'e', 's' };
-static symbol s_6_68[5] = { 'a', 's', 't', 'e', 's' };
-static symbol s_6_69[5] = { 'e', 's', 't', 'e', 's' };
-static symbol s_6_70[5] = { 'i', 's', 't', 'e', 's' };
-static symbol s_6_71[2] = { 'i', 's' };
-static symbol s_6_72[3] = { 'a', 'i', 's' };
-static symbol s_6_73[3] = { 'e', 'i', 's' };
-static symbol s_6_74[5] = { 'a', 'r', 'e', 'i', 's' };
-static symbol s_6_75[5] = { 'e', 'r', 'e', 'i', 's' };
-static symbol s_6_76[5] = { 'i', 'r', 'e', 'i', 's' };
-static symbol s_6_77[6] = { 0xC3, 0xA1, 'r', 'e', 'i', 's' };
-static symbol s_6_78[6] = { 0xC3, 0xA9, 'r', 'e', 'i', 's' };
-static symbol s_6_79[6] = { 0xC3, 0xAD, 'r', 'e', 'i', 's' };
-static symbol s_6_80[7] = { 0xC3, 0xA1, 's', 's', 'e', 'i', 's' };
-static symbol s_6_81[7] = { 0xC3, 0xA9, 's', 's', 'e', 'i', 's' };
-static symbol s_6_82[7] = { 0xC3, 0xAD, 's', 's', 'e', 'i', 's' };
-static symbol s_6_83[6] = { 0xC3, 0xA1, 'v', 'e', 'i', 's' };
-static symbol s_6_84[5] = { 0xC3, 0xAD, 'e', 'i', 's' };
-static symbol s_6_85[7] = { 'a', 'r', 0xC3, 0xAD, 'e', 'i', 's' };
-static symbol s_6_86[7] = { 'e', 'r', 0xC3, 0xAD, 'e', 'i', 's' };
-static symbol s_6_87[7] = { 'i', 'r', 0xC3, 0xAD, 'e', 'i', 's' };
-static symbol s_6_88[4] = { 'a', 'd', 'o', 's' };
-static symbol s_6_89[4] = { 'i', 'd', 'o', 's' };
-static symbol s_6_90[4] = { 'a', 'm', 'o', 's' };
-static symbol s_6_91[7] = { 0xC3, 0xA1, 'r', 'a', 'm', 'o', 's' };
-static symbol s_6_92[7] = { 0xC3, 0xA9, 'r', 'a', 'm', 'o', 's' };
-static symbol s_6_93[7] = { 0xC3, 0xAD, 'r', 'a', 'm', 'o', 's' };
-static symbol s_6_94[7] = { 0xC3, 0xA1, 'v', 'a', 'm', 'o', 's' };
-static symbol s_6_95[6] = { 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_6_96[8] = { 'a', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_6_97[8] = { 'e', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_6_98[8] = { 'i', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_6_99[4] = { 'e', 'm', 'o', 's' };
-static symbol s_6_100[6] = { 'a', 'r', 'e', 'm', 'o', 's' };
-static symbol s_6_101[6] = { 'e', 'r', 'e', 'm', 'o', 's' };
-static symbol s_6_102[6] = { 'i', 'r', 'e', 'm', 'o', 's' };
-static symbol s_6_103[8] = { 0xC3, 0xA1, 's', 's', 'e', 'm', 'o', 's' };
-static symbol s_6_104[8] = { 0xC3, 0xAA, 's', 's', 'e', 'm', 'o', 's' };
-static symbol s_6_105[8] = { 0xC3, 0xAD, 's', 's', 'e', 'm', 'o', 's' };
-static symbol s_6_106[4] = { 'i', 'm', 'o', 's' };
-static symbol s_6_107[5] = { 'a', 'r', 'm', 'o', 's' };
-static symbol s_6_108[5] = { 'e', 'r', 'm', 'o', 's' };
-static symbol s_6_109[5] = { 'i', 'r', 'm', 'o', 's' };
-static symbol s_6_110[5] = { 0xC3, 0xA1, 'm', 'o', 's' };
-static symbol s_6_111[5] = { 'a', 'r', 0xC3, 0xA1, 's' };
-static symbol s_6_112[5] = { 'e', 'r', 0xC3, 0xA1, 's' };
-static symbol s_6_113[5] = { 'i', 'r', 0xC3, 0xA1, 's' };
-static symbol s_6_114[2] = { 'e', 'u' };
-static symbol s_6_115[2] = { 'i', 'u' };
-static symbol s_6_116[2] = { 'o', 'u' };
-static symbol s_6_117[4] = { 'a', 'r', 0xC3, 0xA1 };
-static symbol s_6_118[4] = { 'e', 'r', 0xC3, 0xA1 };
-static symbol s_6_119[4] = { 'i', 'r', 0xC3, 0xA1 };
-
-static struct among a_6[120] =
-{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 3, s_6_1, -1, 1, 0},
-/* 2 */ { 2, s_6_2, -1, 1, 0},
-/* 3 */ { 4, s_6_3, 2, 1, 0},
-/* 4 */ { 4, s_6_4, 2, 1, 0},
-/* 5 */ { 4, s_6_5, 2, 1, 0},
-/* 6 */ { 3, s_6_6, -1, 1, 0},
-/* 7 */ { 3, s_6_7, -1, 1, 0},
-/* 8 */ { 3, s_6_8, -1, 1, 0},
-/* 9 */ { 3, s_6_9, -1, 1, 0},
-/* 10 */ { 4, s_6_10, -1, 1, 0},
-/* 11 */ { 4, s_6_11, -1, 1, 0},
-/* 12 */ { 4, s_6_12, -1, 1, 0},
-/* 13 */ { 4, s_6_13, -1, 1, 0},
-/* 14 */ { 4, s_6_14, -1, 1, 0},
-/* 15 */ { 4, s_6_15, -1, 1, 0},
-/* 16 */ { 2, s_6_16, -1, 1, 0},
-/* 17 */ { 4, s_6_17, 16, 1, 0},
-/* 18 */ { 4, s_6_18, 16, 1, 0},
-/* 19 */ { 4, s_6_19, 16, 1, 0},
-/* 20 */ { 2, s_6_20, -1, 1, 0},
-/* 21 */ { 3, s_6_21, 20, 1, 0},
-/* 22 */ { 5, s_6_22, 21, 1, 0},
-/* 23 */ { 5, s_6_23, 21, 1, 0},
-/* 24 */ { 5, s_6_24, 21, 1, 0},
-/* 25 */ { 4, s_6_25, 20, 1, 0},
-/* 26 */ { 4, s_6_26, 20, 1, 0},
-/* 27 */ { 4, s_6_27, 20, 1, 0},
-/* 28 */ { 4, s_6_28, 20, 1, 0},
-/* 29 */ { 2, s_6_29, -1, 1, 0},
-/* 30 */ { 4, s_6_30, 29, 1, 0},
-/* 31 */ { 4, s_6_31, 29, 1, 0},
-/* 32 */ { 4, s_6_32, 29, 1, 0},
-/* 33 */ { 5, s_6_33, 29, 1, 0},
-/* 34 */ { 5, s_6_34, 29, 1, 0},
-/* 35 */ { 5, s_6_35, 29, 1, 0},
-/* 36 */ { 3, s_6_36, -1, 1, 0},
-/* 37 */ { 3, s_6_37, -1, 1, 0},
-/* 38 */ { 4, s_6_38, -1, 1, 0},
-/* 39 */ { 4, s_6_39, -1, 1, 0},
-/* 40 */ { 4, s_6_40, -1, 1, 0},
-/* 41 */ { 5, s_6_41, -1, 1, 0},
-/* 42 */ { 5, s_6_42, -1, 1, 0},
-/* 43 */ { 5, s_6_43, -1, 1, 0},
-/* 44 */ { 2, s_6_44, -1, 1, 0},
-/* 45 */ { 2, s_6_45, -1, 1, 0},
-/* 46 */ { 2, s_6_46, -1, 1, 0},
-/* 47 */ { 2, s_6_47, -1, 1, 0},
-/* 48 */ { 4, s_6_48, 47, 1, 0},
-/* 49 */ { 4, s_6_49, 47, 1, 0},
-/* 50 */ { 3, s_6_50, 47, 1, 0},
-/* 51 */ { 5, s_6_51, 50, 1, 0},
-/* 52 */ { 5, s_6_52, 50, 1, 0},
-/* 53 */ { 5, s_6_53, 50, 1, 0},
-/* 54 */ { 4, s_6_54, 47, 1, 0},
-/* 55 */ { 4, s_6_55, 47, 1, 0},
-/* 56 */ { 4, s_6_56, 47, 1, 0},
-/* 57 */ { 4, s_6_57, 47, 1, 0},
-/* 58 */ { 2, s_6_58, -1, 1, 0},
-/* 59 */ { 5, s_6_59, 58, 1, 0},
-/* 60 */ { 5, s_6_60, 58, 1, 0},
-/* 61 */ { 5, s_6_61, 58, 1, 0},
-/* 62 */ { 4, s_6_62, 58, 1, 0},
-/* 63 */ { 4, s_6_63, 58, 1, 0},
-/* 64 */ { 4, s_6_64, 58, 1, 0},
-/* 65 */ { 5, s_6_65, 58, 1, 0},
-/* 66 */ { 5, s_6_66, 58, 1, 0},
-/* 67 */ { 5, s_6_67, 58, 1, 0},
-/* 68 */ { 5, s_6_68, 58, 1, 0},
-/* 69 */ { 5, s_6_69, 58, 1, 0},
-/* 70 */ { 5, s_6_70, 58, 1, 0},
-/* 71 */ { 2, s_6_71, -1, 1, 0},
-/* 72 */ { 3, s_6_72, 71, 1, 0},
-/* 73 */ { 3, s_6_73, 71, 1, 0},
-/* 74 */ { 5, s_6_74, 73, 1, 0},
-/* 75 */ { 5, s_6_75, 73, 1, 0},
-/* 76 */ { 5, s_6_76, 73, 1, 0},
-/* 77 */ { 6, s_6_77, 73, 1, 0},
-/* 78 */ { 6, s_6_78, 73, 1, 0},
-/* 79 */ { 6, s_6_79, 73, 1, 0},
-/* 80 */ { 7, s_6_80, 73, 1, 0},
-/* 81 */ { 7, s_6_81, 73, 1, 0},
-/* 82 */ { 7, s_6_82, 73, 1, 0},
-/* 83 */ { 6, s_6_83, 73, 1, 0},
-/* 84 */ { 5, s_6_84, 73, 1, 0},
-/* 85 */ { 7, s_6_85, 84, 1, 0},
-/* 86 */ { 7, s_6_86, 84, 1, 0},
-/* 87 */ { 7, s_6_87, 84, 1, 0},
-/* 88 */ { 4, s_6_88, -1, 1, 0},
-/* 89 */ { 4, s_6_89, -1, 1, 0},
-/* 90 */ { 4, s_6_90, -1, 1, 0},
-/* 91 */ { 7, s_6_91, 90, 1, 0},
-/* 92 */ { 7, s_6_92, 90, 1, 0},
-/* 93 */ { 7, s_6_93, 90, 1, 0},
-/* 94 */ { 7, s_6_94, 90, 1, 0},
-/* 95 */ { 6, s_6_95, 90, 1, 0},
-/* 96 */ { 8, s_6_96, 95, 1, 0},
-/* 97 */ { 8, s_6_97, 95, 1, 0},
-/* 98 */ { 8, s_6_98, 95, 1, 0},
-/* 99 */ { 4, s_6_99, -1, 1, 0},
-/*100 */ { 6, s_6_100, 99, 1, 0},
-/*101 */ { 6, s_6_101, 99, 1, 0},
-/*102 */ { 6, s_6_102, 99, 1, 0},
-/*103 */ { 8, s_6_103, 99, 1, 0},
-/*104 */ { 8, s_6_104, 99, 1, 0},
-/*105 */ { 8, s_6_105, 99, 1, 0},
-/*106 */ { 4, s_6_106, -1, 1, 0},
-/*107 */ { 5, s_6_107, -1, 1, 0},
-/*108 */ { 5, s_6_108, -1, 1, 0},
-/*109 */ { 5, s_6_109, -1, 1, 0},
-/*110 */ { 5, s_6_110, -1, 1, 0},
-/*111 */ { 5, s_6_111, -1, 1, 0},
-/*112 */ { 5, s_6_112, -1, 1, 0},
-/*113 */ { 5, s_6_113, -1, 1, 0},
-/*114 */ { 2, s_6_114, -1, 1, 0},
-/*115 */ { 2, s_6_115, -1, 1, 0},
-/*116 */ { 2, s_6_116, -1, 1, 0},
-/*117 */ { 4, s_6_117, -1, 1, 0},
-/*118 */ { 4, s_6_118, -1, 1, 0},
-/*119 */ { 4, s_6_119, -1, 1, 0}
-};
-
-static symbol s_7_0[1] = { 'a' };
-static symbol s_7_1[1] = { 'i' };
-static symbol s_7_2[1] = { 'o' };
-static symbol s_7_3[2] = { 'o', 's' };
-static symbol s_7_4[2] = { 0xC3, 0xA1 };
-static symbol s_7_5[2] = { 0xC3, 0xAD };
-static symbol s_7_6[2] = { 0xC3, 0xB3 };
-
-static struct among a_7[7] =
-{
-/* 0 */ { 1, s_7_0, -1, 1, 0},
-/* 1 */ { 1, s_7_1, -1, 1, 0},
-/* 2 */ { 1, s_7_2, -1, 1, 0},
-/* 3 */ { 2, s_7_3, -1, 1, 0},
-/* 4 */ { 2, s_7_4, -1, 1, 0},
-/* 5 */ { 2, s_7_5, -1, 1, 0},
-/* 6 */ { 2, s_7_6, -1, 1, 0}
-};
-
-static symbol s_8_0[1] = { 'e' };
-static symbol s_8_1[2] = { 0xC3, 0xA7 };
-static symbol s_8_2[2] = { 0xC3, 0xA9 };
-static symbol s_8_3[2] = { 0xC3, 0xAA };
-
-static struct among a_8[4] =
-{
-/* 0 */ { 1, s_8_0, -1, 1, 0},
-/* 1 */ { 2, s_8_1, -1, 2, 0},
-/* 2 */ { 2, s_8_2, -1, 1, 0},
-/* 3 */ { 2, s_8_3, -1, 1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 };
-
-static symbol s_0[] = { 'a', '~' };
-static symbol s_1[] = { 'o', '~' };
-static symbol s_2[] = { 0xC3, 0xA3 };
-static symbol s_3[] = { 0xC3, 0xB5 };
-static symbol s_4[] = { 'l', 'o', 'g' };
-static symbol s_5[] = { 'u' };
-static symbol s_6[] = { 'e', 'n', 't', 'e' };
-static symbol s_7[] = { 'a', 't' };
-static symbol s_8[] = { 'a', 't' };
-static symbol s_9[] = { 'e' };
-static symbol s_10[] = { 'i', 'r' };
-static symbol s_11[] = { 'u' };
-static symbol s_12[] = { 'g' };
-static symbol s_13[] = { 'i' };
-static symbol s_14[] = { 'c' };
-static symbol s_15[] = { 'c' };
-static symbol s_16[] = { 'i' };
-static symbol s_17[] = { 'c' };
-
-static int r_prelude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 36 */
- int c = z->c;
- z->bra = z->c; /* [, line 37 */
- among_var = find_among(z, a_0, 3); /* substring, line 37 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 37 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 2, s_0); /* <-, line 38 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 2, s_1); /* <-, line 39 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 40 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- z->I[2] = z->l;
- { int c = z->c; /* do, line 50 */
- { int c = z->c; /* or, line 52 */
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab2;
- { int c = z->c; /* or, line 51 */
- if (!(out_grouping_U(z, g_v, 97, 250))) goto lab4;
- while(1) { /* gopast, line 51 */
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab5;
- break;
- lab5:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 51 */
- }
- }
- goto lab3;
- lab4:
- z->c = c;
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab2;
- while(1) { /* gopast, line 51 */
- if (!(out_grouping_U(z, g_v, 97, 250))) goto lab6;
- break;
- lab6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab2;
- z->c = c; /* gopast, line 51 */
- }
- }
- }
- lab3:
- goto lab1;
- lab2:
- z->c = c;
- if (!(out_grouping_U(z, g_v, 97, 250))) goto lab0;
- { int c = z->c; /* or, line 53 */
- if (!(out_grouping_U(z, g_v, 97, 250))) goto lab8;
- while(1) { /* gopast, line 53 */
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab9;
- break;
- lab9:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab8;
- z->c = c; /* gopast, line 53 */
- }
- }
- goto lab7;
- lab8:
- z->c = c;
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab0;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 53 */
- }
- }
- lab7:
- ;
- }
- lab1:
- z->I[0] = z->c; /* setmark pV, line 54 */
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 56 */
- while(1) { /* gopast, line 57 */
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab11;
- break;
- lab11:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 57 */
- }
- }
- while(1) { /* gopast, line 57 */
- if (!(out_grouping_U(z, g_v, 97, 250))) goto lab12;
- break;
- lab12:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 57 */
- }
- }
- z->I[1] = z->c; /* setmark p1, line 57 */
- while(1) { /* gopast, line 58 */
- if (!(in_grouping_U(z, g_v, 97, 250))) goto lab13;
- break;
- lab13:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 58 */
- }
- }
- while(1) { /* gopast, line 58 */
- if (!(out_grouping_U(z, g_v, 97, 250))) goto lab14;
- break;
- lab14:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 58 */
- }
- }
- z->I[2] = z->c; /* setmark p2, line 58 */
- lab10:
- z->c = c;
- }
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 62 */
- int c = z->c;
- z->bra = z->c; /* [, line 63 */
- among_var = find_among(z, a_1, 3); /* substring, line 63 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 63 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 2, s_2); /* <-, line 64 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 2, s_3); /* <-, line 65 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 66 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_RV(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[2] <= z->c)) return 0;
- return 1;
-}
-
-static int r_standard_suffix(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 77 */
- among_var = find_among_b(z, a_5, 45); /* substring, line 77 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 77 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 93 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 93 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 98 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_4); /* <-, line 98 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 102 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 1, s_5); /* <-, line 102 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 106 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 4, s_6); /* <-, line 106 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 110 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 110 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 111 */
- z->ket = z->c; /* [, line 112 */
- among_var = find_among_b(z, a_2, 4); /* substring, line 112 */
- if (!(among_var)) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 112 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call R2, line 112 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 112 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab0; }
- case 1:
- z->ket = z->c; /* [, line 113 */
- if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 113 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call R2, line 113 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 113 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab0:
- ;
- }
- break;
- case 6:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 122 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 122 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 123 */
- z->ket = z->c; /* [, line 124 */
- among_var = find_among_b(z, a_3, 3); /* substring, line 124 */
- if (!(among_var)) { z->c = z->l - m; goto lab1; }
- z->bra = z->c; /* ], line 124 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab1; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab1; } /* call R2, line 127 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 127 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab1:
- ;
- }
- break;
- case 7:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 134 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 134 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 135 */
- z->ket = z->c; /* [, line 136 */
- among_var = find_among_b(z, a_4, 3); /* substring, line 136 */
- if (!(among_var)) { z->c = z->l - m; goto lab2; }
- z->bra = z->c; /* ], line 136 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab2; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab2; } /* call R2, line 139 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 139 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab2:
- ;
- }
- break;
- case 8:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 146 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 146 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 147 */
- z->ket = z->c; /* [, line 148 */
- if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 148 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 148 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 148 */
- if (ret < 0) return ret;
- }
- lab3:
- ;
- }
- break;
- case 9:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 153 */
- if (ret < 0) return ret;
- }
- if (!(eq_s_b(z, 1, s_9))) return 0;
- { int ret;
- ret = slice_from_s(z, 2, s_10); /* <-, line 154 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_verb_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 159 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 159 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 160 */
- among_var = find_among_b(z, a_6, 120); /* substring, line 160 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 160 */
- switch(among_var) {
- case 0: { z->lb = m3; return 0; }
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 179 */
- if (ret < 0) return ret;
- }
- break;
- }
- z->lb = m3;
- }
- return 1;
-}
-
-static int r_residual_suffix(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 184 */
- among_var = find_among_b(z, a_7, 7); /* substring, line 184 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 184 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 187 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 187 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_residual_form(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 192 */
- among_var = find_among_b(z, a_8, 4); /* substring, line 192 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 192 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 194 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 194 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 194 */
- { int m = z->l - z->c; (void) m; /* or, line 194 */
- if (!(eq_s_b(z, 1, s_11))) goto lab1;
- z->bra = z->c; /* ], line 194 */
- { int m_test = z->l - z->c; /* test, line 194 */
- if (!(eq_s_b(z, 1, s_12))) goto lab1;
- z->c = z->l - m_test;
- }
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 1, s_13))) return 0;
- z->bra = z->c; /* ], line 195 */
- { int m_test = z->l - z->c; /* test, line 195 */
- if (!(eq_s_b(z, 1, s_14))) return 0;
- z->c = z->l - m_test;
- }
- }
- lab0:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 195 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 195 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_15); /* <-, line 196 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-extern int portuguese_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 202 */
- { int ret = r_prelude(z);
- if (ret == 0) goto lab0; /* call prelude, line 202 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 203 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab1; /* call mark_regions, line 203 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 204 */
-
- { int m = z->l - z->c; (void) m; /* do, line 205 */
- { int m = z->l - z->c; (void) m; /* or, line 209 */
- { int m = z->l - z->c; (void) m; /* and, line 207 */
- { int m = z->l - z->c; (void) m; /* or, line 206 */
- { int ret = r_standard_suffix(z);
- if (ret == 0) goto lab6; /* call standard_suffix, line 206 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab6:
- z->c = z->l - m;
- { int ret = r_verb_suffix(z);
- if (ret == 0) goto lab4; /* call verb_suffix, line 206 */
- if (ret < 0) return ret;
- }
- }
- lab5:
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* do, line 207 */
- z->ket = z->c; /* [, line 207 */
- if (!(eq_s_b(z, 1, s_16))) goto lab7;
- z->bra = z->c; /* ], line 207 */
- { int m_test = z->l - z->c; /* test, line 207 */
- if (!(eq_s_b(z, 1, s_17))) goto lab7;
- z->c = z->l - m_test;
- }
- { int ret = r_RV(z);
- if (ret == 0) goto lab7; /* call RV, line 207 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 207 */
- if (ret < 0) return ret;
- }
- lab7:
- z->c = z->l - m;
- }
- }
- goto lab3;
- lab4:
- z->c = z->l - m;
- { int ret = r_residual_suffix(z);
- if (ret == 0) goto lab2; /* call residual_suffix, line 209 */
- if (ret < 0) return ret;
- }
- }
- lab3:
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 211 */
- { int ret = r_residual_form(z);
- if (ret == 0) goto lab8; /* call residual_form, line 211 */
- if (ret < 0) return ret;
- }
- lab8:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 213 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab9; /* call postlude, line 213 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * portuguese_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); }
-
-extern void portuguese_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_portuguese.h b/src/libstemmer/src_c/stem_UTF_8_portuguese.h
deleted file mode 100644
index 39878e280..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_portuguese.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * portuguese_UTF_8_create_env(void);
-extern void portuguese_UTF_8_close_env(struct SN_env * z);
-
-extern int portuguese_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_russian.c b/src/libstemmer/src_c/stem_UTF_8_russian.c
deleted file mode 100644
index 17457880d..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_russian.c
+++ /dev/null
@@ -1,722 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int russian_UTF_8_stem(struct SN_env * z);
-static int r_tidy_up(struct SN_env * z);
-static int r_derivational(struct SN_env * z);
-static int r_noun(struct SN_env * z);
-static int r_verb(struct SN_env * z);
-static int r_reflexive(struct SN_env * z);
-static int r_adjectival(struct SN_env * z);
-static int r_adjective(struct SN_env * z);
-static int r_perfective_gerund(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * russian_UTF_8_create_env(void);
-extern void russian_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[10] = { 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8, 0xD1, 0x81, 0xD1, 0x8C };
-static symbol s_0_1[12] = { 0xD1, 0x8B, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8, 0xD1, 0x81, 0xD1, 0x8C };
-static symbol s_0_2[12] = { 0xD0, 0xB8, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8, 0xD1, 0x81, 0xD1, 0x8C };
-static symbol s_0_3[2] = { 0xD0, 0xB2 };
-static symbol s_0_4[4] = { 0xD1, 0x8B, 0xD0, 0xB2 };
-static symbol s_0_5[4] = { 0xD0, 0xB8, 0xD0, 0xB2 };
-static symbol s_0_6[6] = { 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8 };
-static symbol s_0_7[8] = { 0xD1, 0x8B, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8 };
-static symbol s_0_8[8] = { 0xD0, 0xB8, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8 };
-
-static struct among a_0[9] =
-{
-/* 0 */ { 10, s_0_0, -1, 1, 0},
-/* 1 */ { 12, s_0_1, 0, 2, 0},
-/* 2 */ { 12, s_0_2, 0, 2, 0},
-/* 3 */ { 2, s_0_3, -1, 1, 0},
-/* 4 */ { 4, s_0_4, 3, 2, 0},
-/* 5 */ { 4, s_0_5, 3, 2, 0},
-/* 6 */ { 6, s_0_6, -1, 1, 0},
-/* 7 */ { 8, s_0_7, 6, 2, 0},
-/* 8 */ { 8, s_0_8, 6, 2, 0}
-};
-
-static symbol s_1_0[6] = { 0xD0, 0xB5, 0xD0, 0xBC, 0xD1, 0x83 };
-static symbol s_1_1[6] = { 0xD0, 0xBE, 0xD0, 0xBC, 0xD1, 0x83 };
-static symbol s_1_2[4] = { 0xD1, 0x8B, 0xD1, 0x85 };
-static symbol s_1_3[4] = { 0xD0, 0xB8, 0xD1, 0x85 };
-static symbol s_1_4[4] = { 0xD1, 0x83, 0xD1, 0x8E };
-static symbol s_1_5[4] = { 0xD1, 0x8E, 0xD1, 0x8E };
-static symbol s_1_6[4] = { 0xD0, 0xB5, 0xD1, 0x8E };
-static symbol s_1_7[4] = { 0xD0, 0xBE, 0xD1, 0x8E };
-static symbol s_1_8[4] = { 0xD1, 0x8F, 0xD1, 0x8F };
-static symbol s_1_9[4] = { 0xD0, 0xB0, 0xD1, 0x8F };
-static symbol s_1_10[4] = { 0xD1, 0x8B, 0xD0, 0xB5 };
-static symbol s_1_11[4] = { 0xD0, 0xB5, 0xD0, 0xB5 };
-static symbol s_1_12[4] = { 0xD0, 0xB8, 0xD0, 0xB5 };
-static symbol s_1_13[4] = { 0xD0, 0xBE, 0xD0, 0xB5 };
-static symbol s_1_14[6] = { 0xD1, 0x8B, 0xD0, 0xBC, 0xD0, 0xB8 };
-static symbol s_1_15[6] = { 0xD0, 0xB8, 0xD0, 0xBC, 0xD0, 0xB8 };
-static symbol s_1_16[4] = { 0xD1, 0x8B, 0xD0, 0xB9 };
-static symbol s_1_17[4] = { 0xD0, 0xB5, 0xD0, 0xB9 };
-static symbol s_1_18[4] = { 0xD0, 0xB8, 0xD0, 0xB9 };
-static symbol s_1_19[4] = { 0xD0, 0xBE, 0xD0, 0xB9 };
-static symbol s_1_20[4] = { 0xD1, 0x8B, 0xD0, 0xBC };
-static symbol s_1_21[4] = { 0xD0, 0xB5, 0xD0, 0xBC };
-static symbol s_1_22[4] = { 0xD0, 0xB8, 0xD0, 0xBC };
-static symbol s_1_23[4] = { 0xD0, 0xBE, 0xD0, 0xBC };
-static symbol s_1_24[6] = { 0xD0, 0xB5, 0xD0, 0xB3, 0xD0, 0xBE };
-static symbol s_1_25[6] = { 0xD0, 0xBE, 0xD0, 0xB3, 0xD0, 0xBE };
-
-static struct among a_1[26] =
-{
-/* 0 */ { 6, s_1_0, -1, 1, 0},
-/* 1 */ { 6, s_1_1, -1, 1, 0},
-/* 2 */ { 4, s_1_2, -1, 1, 0},
-/* 3 */ { 4, s_1_3, -1, 1, 0},
-/* 4 */ { 4, s_1_4, -1, 1, 0},
-/* 5 */ { 4, s_1_5, -1, 1, 0},
-/* 6 */ { 4, s_1_6, -1, 1, 0},
-/* 7 */ { 4, s_1_7, -1, 1, 0},
-/* 8 */ { 4, s_1_8, -1, 1, 0},
-/* 9 */ { 4, s_1_9, -1, 1, 0},
-/* 10 */ { 4, s_1_10, -1, 1, 0},
-/* 11 */ { 4, s_1_11, -1, 1, 0},
-/* 12 */ { 4, s_1_12, -1, 1, 0},
-/* 13 */ { 4, s_1_13, -1, 1, 0},
-/* 14 */ { 6, s_1_14, -1, 1, 0},
-/* 15 */ { 6, s_1_15, -1, 1, 0},
-/* 16 */ { 4, s_1_16, -1, 1, 0},
-/* 17 */ { 4, s_1_17, -1, 1, 0},
-/* 18 */ { 4, s_1_18, -1, 1, 0},
-/* 19 */ { 4, s_1_19, -1, 1, 0},
-/* 20 */ { 4, s_1_20, -1, 1, 0},
-/* 21 */ { 4, s_1_21, -1, 1, 0},
-/* 22 */ { 4, s_1_22, -1, 1, 0},
-/* 23 */ { 4, s_1_23, -1, 1, 0},
-/* 24 */ { 6, s_1_24, -1, 1, 0},
-/* 25 */ { 6, s_1_25, -1, 1, 0}
-};
-
-static symbol s_2_0[4] = { 0xD0, 0xB2, 0xD1, 0x88 };
-static symbol s_2_1[6] = { 0xD1, 0x8B, 0xD0, 0xB2, 0xD1, 0x88 };
-static symbol s_2_2[6] = { 0xD0, 0xB8, 0xD0, 0xB2, 0xD1, 0x88 };
-static symbol s_2_3[2] = { 0xD1, 0x89 };
-static symbol s_2_4[4] = { 0xD1, 0x8E, 0xD1, 0x89 };
-static symbol s_2_5[6] = { 0xD1, 0x83, 0xD1, 0x8E, 0xD1, 0x89 };
-static symbol s_2_6[4] = { 0xD0, 0xB5, 0xD0, 0xBC };
-static symbol s_2_7[4] = { 0xD0, 0xBD, 0xD0, 0xBD };
-
-static struct among a_2[8] =
-{
-/* 0 */ { 4, s_2_0, -1, 1, 0},
-/* 1 */ { 6, s_2_1, 0, 2, 0},
-/* 2 */ { 6, s_2_2, 0, 2, 0},
-/* 3 */ { 2, s_2_3, -1, 1, 0},
-/* 4 */ { 4, s_2_4, 3, 1, 0},
-/* 5 */ { 6, s_2_5, 4, 2, 0},
-/* 6 */ { 4, s_2_6, -1, 1, 0},
-/* 7 */ { 4, s_2_7, -1, 1, 0}
-};
-
-static symbol s_3_0[4] = { 0xD1, 0x81, 0xD1, 0x8C };
-static symbol s_3_1[4] = { 0xD1, 0x81, 0xD1, 0x8F };
-
-static struct among a_3[2] =
-{
-/* 0 */ { 4, s_3_0, -1, 1, 0},
-/* 1 */ { 4, s_3_1, -1, 1, 0}
-};
-
-static symbol s_4_0[4] = { 0xD1, 0x8B, 0xD1, 0x82 };
-static symbol s_4_1[4] = { 0xD1, 0x8E, 0xD1, 0x82 };
-static symbol s_4_2[6] = { 0xD1, 0x83, 0xD1, 0x8E, 0xD1, 0x82 };
-static symbol s_4_3[4] = { 0xD1, 0x8F, 0xD1, 0x82 };
-static symbol s_4_4[4] = { 0xD0, 0xB5, 0xD1, 0x82 };
-static symbol s_4_5[6] = { 0xD1, 0x83, 0xD0, 0xB5, 0xD1, 0x82 };
-static symbol s_4_6[4] = { 0xD0, 0xB8, 0xD1, 0x82 };
-static symbol s_4_7[4] = { 0xD0, 0xBD, 0xD1, 0x8B };
-static symbol s_4_8[6] = { 0xD0, 0xB5, 0xD0, 0xBD, 0xD1, 0x8B };
-static symbol s_4_9[4] = { 0xD1, 0x82, 0xD1, 0x8C };
-static symbol s_4_10[6] = { 0xD1, 0x8B, 0xD1, 0x82, 0xD1, 0x8C };
-static symbol s_4_11[6] = { 0xD0, 0xB8, 0xD1, 0x82, 0xD1, 0x8C };
-static symbol s_4_12[6] = { 0xD0, 0xB5, 0xD1, 0x88, 0xD1, 0x8C };
-static symbol s_4_13[6] = { 0xD0, 0xB8, 0xD1, 0x88, 0xD1, 0x8C };
-static symbol s_4_14[2] = { 0xD1, 0x8E };
-static symbol s_4_15[4] = { 0xD1, 0x83, 0xD1, 0x8E };
-static symbol s_4_16[4] = { 0xD0, 0xBB, 0xD0, 0xB0 };
-static symbol s_4_17[6] = { 0xD1, 0x8B, 0xD0, 0xBB, 0xD0, 0xB0 };
-static symbol s_4_18[6] = { 0xD0, 0xB8, 0xD0, 0xBB, 0xD0, 0xB0 };
-static symbol s_4_19[4] = { 0xD0, 0xBD, 0xD0, 0xB0 };
-static symbol s_4_20[6] = { 0xD0, 0xB5, 0xD0, 0xBD, 0xD0, 0xB0 };
-static symbol s_4_21[6] = { 0xD0, 0xB5, 0xD1, 0x82, 0xD0, 0xB5 };
-static symbol s_4_22[6] = { 0xD0, 0xB8, 0xD1, 0x82, 0xD0, 0xB5 };
-static symbol s_4_23[6] = { 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5 };
-static symbol s_4_24[8] = { 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5 };
-static symbol s_4_25[8] = { 0xD0, 0xB5, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5 };
-static symbol s_4_26[4] = { 0xD0, 0xBB, 0xD0, 0xB8 };
-static symbol s_4_27[6] = { 0xD1, 0x8B, 0xD0, 0xBB, 0xD0, 0xB8 };
-static symbol s_4_28[6] = { 0xD0, 0xB8, 0xD0, 0xBB, 0xD0, 0xB8 };
-static symbol s_4_29[2] = { 0xD0, 0xB9 };
-static symbol s_4_30[4] = { 0xD1, 0x83, 0xD0, 0xB9 };
-static symbol s_4_31[4] = { 0xD0, 0xB5, 0xD0, 0xB9 };
-static symbol s_4_32[2] = { 0xD0, 0xBB };
-static symbol s_4_33[4] = { 0xD1, 0x8B, 0xD0, 0xBB };
-static symbol s_4_34[4] = { 0xD0, 0xB8, 0xD0, 0xBB };
-static symbol s_4_35[4] = { 0xD1, 0x8B, 0xD0, 0xBC };
-static symbol s_4_36[4] = { 0xD0, 0xB5, 0xD0, 0xBC };
-static symbol s_4_37[4] = { 0xD0, 0xB8, 0xD0, 0xBC };
-static symbol s_4_38[2] = { 0xD0, 0xBD };
-static symbol s_4_39[4] = { 0xD0, 0xB5, 0xD0, 0xBD };
-static symbol s_4_40[4] = { 0xD0, 0xBB, 0xD0, 0xBE };
-static symbol s_4_41[6] = { 0xD1, 0x8B, 0xD0, 0xBB, 0xD0, 0xBE };
-static symbol s_4_42[6] = { 0xD0, 0xB8, 0xD0, 0xBB, 0xD0, 0xBE };
-static symbol s_4_43[4] = { 0xD0, 0xBD, 0xD0, 0xBE };
-static symbol s_4_44[6] = { 0xD0, 0xB5, 0xD0, 0xBD, 0xD0, 0xBE };
-static symbol s_4_45[6] = { 0xD0, 0xBD, 0xD0, 0xBD, 0xD0, 0xBE };
-
-static struct among a_4[46] =
-{
-/* 0 */ { 4, s_4_0, -1, 2, 0},
-/* 1 */ { 4, s_4_1, -1, 1, 0},
-/* 2 */ { 6, s_4_2, 1, 2, 0},
-/* 3 */ { 4, s_4_3, -1, 2, 0},
-/* 4 */ { 4, s_4_4, -1, 1, 0},
-/* 5 */ { 6, s_4_5, 4, 2, 0},
-/* 6 */ { 4, s_4_6, -1, 2, 0},
-/* 7 */ { 4, s_4_7, -1, 1, 0},
-/* 8 */ { 6, s_4_8, 7, 2, 0},
-/* 9 */ { 4, s_4_9, -1, 1, 0},
-/* 10 */ { 6, s_4_10, 9, 2, 0},
-/* 11 */ { 6, s_4_11, 9, 2, 0},
-/* 12 */ { 6, s_4_12, -1, 1, 0},
-/* 13 */ { 6, s_4_13, -1, 2, 0},
-/* 14 */ { 2, s_4_14, -1, 2, 0},
-/* 15 */ { 4, s_4_15, 14, 2, 0},
-/* 16 */ { 4, s_4_16, -1, 1, 0},
-/* 17 */ { 6, s_4_17, 16, 2, 0},
-/* 18 */ { 6, s_4_18, 16, 2, 0},
-/* 19 */ { 4, s_4_19, -1, 1, 0},
-/* 20 */ { 6, s_4_20, 19, 2, 0},
-/* 21 */ { 6, s_4_21, -1, 1, 0},
-/* 22 */ { 6, s_4_22, -1, 2, 0},
-/* 23 */ { 6, s_4_23, -1, 1, 0},
-/* 24 */ { 8, s_4_24, 23, 2, 0},
-/* 25 */ { 8, s_4_25, 23, 2, 0},
-/* 26 */ { 4, s_4_26, -1, 1, 0},
-/* 27 */ { 6, s_4_27, 26, 2, 0},
-/* 28 */ { 6, s_4_28, 26, 2, 0},
-/* 29 */ { 2, s_4_29, -1, 1, 0},
-/* 30 */ { 4, s_4_30, 29, 2, 0},
-/* 31 */ { 4, s_4_31, 29, 2, 0},
-/* 32 */ { 2, s_4_32, -1, 1, 0},
-/* 33 */ { 4, s_4_33, 32, 2, 0},
-/* 34 */ { 4, s_4_34, 32, 2, 0},
-/* 35 */ { 4, s_4_35, -1, 2, 0},
-/* 36 */ { 4, s_4_36, -1, 1, 0},
-/* 37 */ { 4, s_4_37, -1, 2, 0},
-/* 38 */ { 2, s_4_38, -1, 1, 0},
-/* 39 */ { 4, s_4_39, 38, 2, 0},
-/* 40 */ { 4, s_4_40, -1, 1, 0},
-/* 41 */ { 6, s_4_41, 40, 2, 0},
-/* 42 */ { 6, s_4_42, 40, 2, 0},
-/* 43 */ { 4, s_4_43, -1, 1, 0},
-/* 44 */ { 6, s_4_44, 43, 2, 0},
-/* 45 */ { 6, s_4_45, 43, 1, 0}
-};
-
-static symbol s_5_0[2] = { 0xD1, 0x83 };
-static symbol s_5_1[4] = { 0xD1, 0x8F, 0xD1, 0x85 };
-static symbol s_5_2[6] = { 0xD0, 0xB8, 0xD1, 0x8F, 0xD1, 0x85 };
-static symbol s_5_3[4] = { 0xD0, 0xB0, 0xD1, 0x85 };
-static symbol s_5_4[2] = { 0xD1, 0x8B };
-static symbol s_5_5[2] = { 0xD1, 0x8C };
-static symbol s_5_6[2] = { 0xD1, 0x8E };
-static symbol s_5_7[4] = { 0xD1, 0x8C, 0xD1, 0x8E };
-static symbol s_5_8[4] = { 0xD0, 0xB8, 0xD1, 0x8E };
-static symbol s_5_9[2] = { 0xD1, 0x8F };
-static symbol s_5_10[4] = { 0xD1, 0x8C, 0xD1, 0x8F };
-static symbol s_5_11[4] = { 0xD0, 0xB8, 0xD1, 0x8F };
-static symbol s_5_12[2] = { 0xD0, 0xB0 };
-static symbol s_5_13[4] = { 0xD0, 0xB5, 0xD0, 0xB2 };
-static symbol s_5_14[4] = { 0xD0, 0xBE, 0xD0, 0xB2 };
-static symbol s_5_15[2] = { 0xD0, 0xB5 };
-static symbol s_5_16[4] = { 0xD1, 0x8C, 0xD0, 0xB5 };
-static symbol s_5_17[4] = { 0xD0, 0xB8, 0xD0, 0xB5 };
-static symbol s_5_18[2] = { 0xD0, 0xB8 };
-static symbol s_5_19[4] = { 0xD0, 0xB5, 0xD0, 0xB8 };
-static symbol s_5_20[4] = { 0xD0, 0xB8, 0xD0, 0xB8 };
-static symbol s_5_21[6] = { 0xD1, 0x8F, 0xD0, 0xBC, 0xD0, 0xB8 };
-static symbol s_5_22[8] = { 0xD0, 0xB8, 0xD1, 0x8F, 0xD0, 0xBC, 0xD0, 0xB8 };
-static symbol s_5_23[6] = { 0xD0, 0xB0, 0xD0, 0xBC, 0xD0, 0xB8 };
-static symbol s_5_24[2] = { 0xD0, 0xB9 };
-static symbol s_5_25[4] = { 0xD0, 0xB5, 0xD0, 0xB9 };
-static symbol s_5_26[6] = { 0xD0, 0xB8, 0xD0, 0xB5, 0xD0, 0xB9 };
-static symbol s_5_27[4] = { 0xD0, 0xB8, 0xD0, 0xB9 };
-static symbol s_5_28[4] = { 0xD0, 0xBE, 0xD0, 0xB9 };
-static symbol s_5_29[4] = { 0xD1, 0x8F, 0xD0, 0xBC };
-static symbol s_5_30[6] = { 0xD0, 0xB8, 0xD1, 0x8F, 0xD0, 0xBC };
-static symbol s_5_31[4] = { 0xD0, 0xB0, 0xD0, 0xBC };
-static symbol s_5_32[4] = { 0xD0, 0xB5, 0xD0, 0xBC };
-static symbol s_5_33[6] = { 0xD0, 0xB8, 0xD0, 0xB5, 0xD0, 0xBC };
-static symbol s_5_34[4] = { 0xD0, 0xBE, 0xD0, 0xBC };
-static symbol s_5_35[2] = { 0xD0, 0xBE };
-
-static struct among a_5[36] =
-{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 6, s_5_2, 1, 1, 0},
-/* 3 */ { 4, s_5_3, -1, 1, 0},
-/* 4 */ { 2, s_5_4, -1, 1, 0},
-/* 5 */ { 2, s_5_5, -1, 1, 0},
-/* 6 */ { 2, s_5_6, -1, 1, 0},
-/* 7 */ { 4, s_5_7, 6, 1, 0},
-/* 8 */ { 4, s_5_8, 6, 1, 0},
-/* 9 */ { 2, s_5_9, -1, 1, 0},
-/* 10 */ { 4, s_5_10, 9, 1, 0},
-/* 11 */ { 4, s_5_11, 9, 1, 0},
-/* 12 */ { 2, s_5_12, -1, 1, 0},
-/* 13 */ { 4, s_5_13, -1, 1, 0},
-/* 14 */ { 4, s_5_14, -1, 1, 0},
-/* 15 */ { 2, s_5_15, -1, 1, 0},
-/* 16 */ { 4, s_5_16, 15, 1, 0},
-/* 17 */ { 4, s_5_17, 15, 1, 0},
-/* 18 */ { 2, s_5_18, -1, 1, 0},
-/* 19 */ { 4, s_5_19, 18, 1, 0},
-/* 20 */ { 4, s_5_20, 18, 1, 0},
-/* 21 */ { 6, s_5_21, 18, 1, 0},
-/* 22 */ { 8, s_5_22, 21, 1, 0},
-/* 23 */ { 6, s_5_23, 18, 1, 0},
-/* 24 */ { 2, s_5_24, -1, 1, 0},
-/* 25 */ { 4, s_5_25, 24, 1, 0},
-/* 26 */ { 6, s_5_26, 25, 1, 0},
-/* 27 */ { 4, s_5_27, 24, 1, 0},
-/* 28 */ { 4, s_5_28, 24, 1, 0},
-/* 29 */ { 4, s_5_29, -1, 1, 0},
-/* 30 */ { 6, s_5_30, 29, 1, 0},
-/* 31 */ { 4, s_5_31, -1, 1, 0},
-/* 32 */ { 4, s_5_32, -1, 1, 0},
-/* 33 */ { 6, s_5_33, 32, 1, 0},
-/* 34 */ { 4, s_5_34, -1, 1, 0},
-/* 35 */ { 2, s_5_35, -1, 1, 0}
-};
-
-static symbol s_6_0[6] = { 0xD0, 0xBE, 0xD1, 0x81, 0xD1, 0x82 };
-static symbol s_6_1[8] = { 0xD0, 0xBE, 0xD1, 0x81, 0xD1, 0x82, 0xD1, 0x8C };
-
-static struct among a_6[2] =
-{
-/* 0 */ { 6, s_6_0, -1, 1, 0},
-/* 1 */ { 8, s_6_1, -1, 1, 0}
-};
-
-static symbol s_7_0[6] = { 0xD0, 0xB5, 0xD0, 0xB9, 0xD1, 0x88 };
-static symbol s_7_1[2] = { 0xD1, 0x8C };
-static symbol s_7_2[8] = { 0xD0, 0xB5, 0xD0, 0xB9, 0xD1, 0x88, 0xD0, 0xB5 };
-static symbol s_7_3[2] = { 0xD0, 0xBD };
-
-static struct among a_7[4] =
-{
-/* 0 */ { 6, s_7_0, -1, 1, 0},
-/* 1 */ { 2, s_7_1, -1, 3, 0},
-/* 2 */ { 8, s_7_2, -1, 1, 0},
-/* 3 */ { 2, s_7_3, -1, 2, 0}
-};
-
-static unsigned char g_v[] = { 33, 65, 8, 232 };
-
-static symbol s_0[] = { 0xD0, 0xB0 };
-static symbol s_1[] = { 0xD1, 0x8F };
-static symbol s_2[] = { 0xD0, 0xB0 };
-static symbol s_3[] = { 0xD1, 0x8F };
-static symbol s_4[] = { 0xD0, 0xB0 };
-static symbol s_5[] = { 0xD1, 0x8F };
-static symbol s_6[] = { 0xD0, 0xBD };
-static symbol s_7[] = { 0xD0, 0xBD };
-static symbol s_8[] = { 0xD0, 0xBD };
-static symbol s_9[] = { 0xD0, 0xB8 };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- { int c = z->c; /* do, line 61 */
- while(1) { /* gopast, line 62 */
- if (!(in_grouping_U(z, g_v, 1072, 1103))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 62 */
- }
- }
- z->I[0] = z->c; /* setmark pV, line 62 */
- while(1) { /* gopast, line 62 */
- if (!(out_grouping_U(z, g_v, 1072, 1103))) goto lab2;
- break;
- lab2:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 62 */
- }
- }
- while(1) { /* gopast, line 63 */
- if (!(in_grouping_U(z, g_v, 1072, 1103))) goto lab3;
- break;
- lab3:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 63 */
- }
- }
- while(1) { /* gopast, line 63 */
- if (!(out_grouping_U(z, g_v, 1072, 1103))) goto lab4;
- break;
- lab4:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* gopast, line 63 */
- }
- }
- z->I[1] = z->c; /* setmark p2, line 63 */
- lab0:
- z->c = c;
- }
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_perfective_gerund(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 72 */
- among_var = find_among_b(z, a_0, 9); /* substring, line 72 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 72 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* or, line 76 */
- if (!(eq_s_b(z, 2, s_0))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_1))) return 0;
- }
- lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 76 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_del(z); /* delete, line 83 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_adjective(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 88 */
- among_var = find_among_b(z, a_1, 26); /* substring, line 88 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 88 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 97 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_adjectival(struct SN_env * z) {
- int among_var;
- { int ret = r_adjective(z);
- if (ret == 0) return 0; /* call adjective, line 102 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 109 */
- z->ket = z->c; /* [, line 110 */
- among_var = find_among_b(z, a_2, 8); /* substring, line 110 */
- if (!(among_var)) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 110 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab0; }
- case 1:
- { int m = z->l - z->c; (void) m; /* or, line 115 */
- if (!(eq_s_b(z, 2, s_2))) goto lab2;
- goto lab1;
- lab2:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_3))) { z->c = z->l - m; goto lab0; }
- }
- lab1:
- { int ret;
- ret = slice_del(z); /* delete, line 115 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_del(z); /* delete, line 122 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab0:
- ;
- }
- return 1;
-}
-
-static int r_reflexive(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 129 */
- among_var = find_among_b(z, a_3, 2); /* substring, line 129 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 129 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 132 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_verb(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 137 */
- among_var = find_among_b(z, a_4, 46); /* substring, line 137 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 137 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* or, line 143 */
- if (!(eq_s_b(z, 2, s_4))) goto lab1;
- goto lab0;
- lab1:
- z->c = z->l - m;
- if (!(eq_s_b(z, 2, s_5))) return 0;
- }
- lab0:
- { int ret;
- ret = slice_del(z); /* delete, line 143 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_del(z); /* delete, line 151 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_noun(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 160 */
- among_var = find_among_b(z, a_5, 36); /* substring, line 160 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 160 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 167 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_derivational(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 176 */
- among_var = find_among_b(z, a_6, 2); /* substring, line 176 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 176 */
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 176 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 179 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_tidy_up(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 184 */
- among_var = find_among_b(z, a_7, 4); /* substring, line 184 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 184 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 188 */
- if (ret < 0) return ret;
- }
- z->ket = z->c; /* [, line 189 */
- if (!(eq_s_b(z, 2, s_6))) return 0;
- z->bra = z->c; /* ], line 189 */
- if (!(eq_s_b(z, 2, s_7))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 189 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- if (!(eq_s_b(z, 2, s_8))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 192 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_del(z); /* delete, line 194 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-extern int russian_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 201 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 201 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 202 */
-
- { int m3; /* setlimit, line 202 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 202 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* do, line 203 */
- { int m = z->l - z->c; (void) m; /* or, line 204 */
- { int ret = r_perfective_gerund(z);
- if (ret == 0) goto lab3; /* call perfective_gerund, line 204 */
- if (ret < 0) return ret;
- }
- goto lab2;
- lab3:
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* try, line 205 */
- { int ret = r_reflexive(z);
- if (ret == 0) { z->c = z->l - m; goto lab4; } /* call reflexive, line 205 */
- if (ret < 0) return ret;
- }
- lab4:
- ;
- }
- { int m = z->l - z->c; (void) m; /* or, line 206 */
- { int ret = r_adjectival(z);
- if (ret == 0) goto lab6; /* call adjectival, line 206 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab6:
- z->c = z->l - m;
- { int ret = r_verb(z);
- if (ret == 0) goto lab7; /* call verb, line 206 */
- if (ret < 0) return ret;
- }
- goto lab5;
- lab7:
- z->c = z->l - m;
- { int ret = r_noun(z);
- if (ret == 0) goto lab1; /* call noun, line 206 */
- if (ret < 0) return ret;
- }
- }
- lab5:
- ;
- }
- lab2:
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* try, line 209 */
- z->ket = z->c; /* [, line 209 */
- if (!(eq_s_b(z, 2, s_9))) { z->c = z->l - m; goto lab8; }
- z->bra = z->c; /* ], line 209 */
- { int ret;
- ret = slice_del(z); /* delete, line 209 */
- if (ret < 0) return ret;
- }
- lab8:
- ;
- }
- { int m = z->l - z->c; (void) m; /* do, line 212 */
- { int ret = r_derivational(z);
- if (ret == 0) goto lab9; /* call derivational, line 212 */
- if (ret < 0) return ret;
- }
- lab9:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 213 */
- { int ret = r_tidy_up(z);
- if (ret == 0) goto lab10; /* call tidy_up, line 213 */
- if (ret < 0) return ret;
- }
- lab10:
- z->c = z->l - m;
- }
- z->lb = m3;
- }
- z->c = z->lb;
- return 1;
-}
-
-extern struct SN_env * russian_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); }
-
-extern void russian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_russian.h b/src/libstemmer/src_c/stem_UTF_8_russian.h
deleted file mode 100644
index af60fcd2c..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_russian.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * russian_UTF_8_create_env(void);
-extern void russian_UTF_8_close_env(struct SN_env * z);
-
-extern int russian_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_spanish.c b/src/libstemmer/src_c/stem_UTF_8_spanish.c
deleted file mode 100644
index cb71fa5b7..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_spanish.c
+++ /dev/null
@@ -1,1150 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int spanish_UTF_8_stem(struct SN_env * z);
-static int r_residual_suffix(struct SN_env * z);
-static int r_verb_suffix(struct SN_env * z);
-static int r_y_verb_suffix(struct SN_env * z);
-static int r_standard_suffix(struct SN_env * z);
-static int r_attached_pronoun(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_RV(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-
-extern struct SN_env * spanish_UTF_8_create_env(void);
-extern void spanish_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_1[2] = { 0xC3, 0xA1 };
-static symbol s_0_2[2] = { 0xC3, 0xA9 };
-static symbol s_0_3[2] = { 0xC3, 0xAD };
-static symbol s_0_4[2] = { 0xC3, 0xB3 };
-static symbol s_0_5[2] = { 0xC3, 0xBA };
-
-static struct among a_0[6] =
-{
-/* 0 */ { 0, 0, -1, 6, 0},
-/* 1 */ { 2, s_0_1, 0, 1, 0},
-/* 2 */ { 2, s_0_2, 0, 2, 0},
-/* 3 */ { 2, s_0_3, 0, 3, 0},
-/* 4 */ { 2, s_0_4, 0, 4, 0},
-/* 5 */ { 2, s_0_5, 0, 5, 0}
-};
-
-static symbol s_1_0[2] = { 'l', 'a' };
-static symbol s_1_1[4] = { 's', 'e', 'l', 'a' };
-static symbol s_1_2[2] = { 'l', 'e' };
-static symbol s_1_3[2] = { 'm', 'e' };
-static symbol s_1_4[2] = { 's', 'e' };
-static symbol s_1_5[2] = { 'l', 'o' };
-static symbol s_1_6[4] = { 's', 'e', 'l', 'o' };
-static symbol s_1_7[3] = { 'l', 'a', 's' };
-static symbol s_1_8[5] = { 's', 'e', 'l', 'a', 's' };
-static symbol s_1_9[3] = { 'l', 'e', 's' };
-static symbol s_1_10[3] = { 'l', 'o', 's' };
-static symbol s_1_11[5] = { 's', 'e', 'l', 'o', 's' };
-static symbol s_1_12[3] = { 'n', 'o', 's' };
-
-static struct among a_1[13] =
-{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 4, s_1_1, 0, -1, 0},
-/* 2 */ { 2, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0},
-/* 4 */ { 2, s_1_4, -1, -1, 0},
-/* 5 */ { 2, s_1_5, -1, -1, 0},
-/* 6 */ { 4, s_1_6, 5, -1, 0},
-/* 7 */ { 3, s_1_7, -1, -1, 0},
-/* 8 */ { 5, s_1_8, 7, -1, 0},
-/* 9 */ { 3, s_1_9, -1, -1, 0},
-/* 10 */ { 3, s_1_10, -1, -1, 0},
-/* 11 */ { 5, s_1_11, 10, -1, 0},
-/* 12 */ { 3, s_1_12, -1, -1, 0}
-};
-
-static symbol s_2_0[4] = { 'a', 'n', 'd', 'o' };
-static symbol s_2_1[5] = { 'i', 'e', 'n', 'd', 'o' };
-static symbol s_2_2[5] = { 'y', 'e', 'n', 'd', 'o' };
-static symbol s_2_3[5] = { 0xC3, 0xA1, 'n', 'd', 'o' };
-static symbol s_2_4[6] = { 'i', 0xC3, 0xA9, 'n', 'd', 'o' };
-static symbol s_2_5[2] = { 'a', 'r' };
-static symbol s_2_6[2] = { 'e', 'r' };
-static symbol s_2_7[2] = { 'i', 'r' };
-static symbol s_2_8[3] = { 0xC3, 0xA1, 'r' };
-static symbol s_2_9[3] = { 0xC3, 0xA9, 'r' };
-static symbol s_2_10[3] = { 0xC3, 0xAD, 'r' };
-
-static struct among a_2[11] =
-{
-/* 0 */ { 4, s_2_0, -1, 6, 0},
-/* 1 */ { 5, s_2_1, -1, 6, 0},
-/* 2 */ { 5, s_2_2, -1, 7, 0},
-/* 3 */ { 5, s_2_3, -1, 2, 0},
-/* 4 */ { 6, s_2_4, -1, 1, 0},
-/* 5 */ { 2, s_2_5, -1, 6, 0},
-/* 6 */ { 2, s_2_6, -1, 6, 0},
-/* 7 */ { 2, s_2_7, -1, 6, 0},
-/* 8 */ { 3, s_2_8, -1, 3, 0},
-/* 9 */ { 3, s_2_9, -1, 4, 0},
-/* 10 */ { 3, s_2_10, -1, 5, 0}
-};
-
-static symbol s_3_0[2] = { 'i', 'c' };
-static symbol s_3_1[2] = { 'a', 'd' };
-static symbol s_3_2[2] = { 'o', 's' };
-static symbol s_3_3[2] = { 'i', 'v' };
-
-static struct among a_3[4] =
-{
-/* 0 */ { 2, s_3_0, -1, -1, 0},
-/* 1 */ { 2, s_3_1, -1, -1, 0},
-/* 2 */ { 2, s_3_2, -1, -1, 0},
-/* 3 */ { 2, s_3_3, -1, 1, 0}
-};
-
-static symbol s_4_0[4] = { 'a', 'b', 'l', 'e' };
-static symbol s_4_1[4] = { 'i', 'b', 'l', 'e' };
-static symbol s_4_2[4] = { 'a', 'n', 't', 'e' };
-
-static struct among a_4[3] =
-{
-/* 0 */ { 4, s_4_0, -1, 1, 0},
-/* 1 */ { 4, s_4_1, -1, 1, 0},
-/* 2 */ { 4, s_4_2, -1, 1, 0}
-};
-
-static symbol s_5_0[2] = { 'i', 'c' };
-static symbol s_5_1[4] = { 'a', 'b', 'i', 'l' };
-static symbol s_5_2[2] = { 'i', 'v' };
-
-static struct among a_5[3] =
-{
-/* 0 */ { 2, s_5_0, -1, 1, 0},
-/* 1 */ { 4, s_5_1, -1, 1, 0},
-/* 2 */ { 2, s_5_2, -1, 1, 0}
-};
-
-static symbol s_6_0[3] = { 'i', 'c', 'a' };
-static symbol s_6_1[5] = { 'a', 'n', 'c', 'i', 'a' };
-static symbol s_6_2[5] = { 'e', 'n', 'c', 'i', 'a' };
-static symbol s_6_3[5] = { 'a', 'd', 'o', 'r', 'a' };
-static symbol s_6_4[3] = { 'o', 's', 'a' };
-static symbol s_6_5[4] = { 'i', 's', 't', 'a' };
-static symbol s_6_6[3] = { 'i', 'v', 'a' };
-static symbol s_6_7[4] = { 'a', 'n', 'z', 'a' };
-static symbol s_6_8[6] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a' };
-static symbol s_6_9[4] = { 'i', 'd', 'a', 'd' };
-static symbol s_6_10[4] = { 'a', 'b', 'l', 'e' };
-static symbol s_6_11[4] = { 'i', 'b', 'l', 'e' };
-static symbol s_6_12[4] = { 'a', 'n', 't', 'e' };
-static symbol s_6_13[5] = { 'm', 'e', 'n', 't', 'e' };
-static symbol s_6_14[6] = { 'a', 'm', 'e', 'n', 't', 'e' };
-static symbol s_6_15[6] = { 'a', 'c', 'i', 0xC3, 0xB3, 'n' };
-static symbol s_6_16[6] = { 'u', 'c', 'i', 0xC3, 0xB3, 'n' };
-static symbol s_6_17[3] = { 'i', 'c', 'o' };
-static symbol s_6_18[4] = { 'i', 's', 'm', 'o' };
-static symbol s_6_19[3] = { 'o', 's', 'o' };
-static symbol s_6_20[7] = { 'a', 'm', 'i', 'e', 'n', 't', 'o' };
-static symbol s_6_21[7] = { 'i', 'm', 'i', 'e', 'n', 't', 'o' };
-static symbol s_6_22[3] = { 'i', 'v', 'o' };
-static symbol s_6_23[4] = { 'a', 'd', 'o', 'r' };
-static symbol s_6_24[4] = { 'i', 'c', 'a', 's' };
-static symbol s_6_25[6] = { 'a', 'n', 'c', 'i', 'a', 's' };
-static symbol s_6_26[6] = { 'e', 'n', 'c', 'i', 'a', 's' };
-static symbol s_6_27[6] = { 'a', 'd', 'o', 'r', 'a', 's' };
-static symbol s_6_28[4] = { 'o', 's', 'a', 's' };
-static symbol s_6_29[5] = { 'i', 's', 't', 'a', 's' };
-static symbol s_6_30[4] = { 'i', 'v', 'a', 's' };
-static symbol s_6_31[5] = { 'a', 'n', 'z', 'a', 's' };
-static symbol s_6_32[7] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a', 's' };
-static symbol s_6_33[6] = { 'i', 'd', 'a', 'd', 'e', 's' };
-static symbol s_6_34[5] = { 'a', 'b', 'l', 'e', 's' };
-static symbol s_6_35[5] = { 'i', 'b', 'l', 'e', 's' };
-static symbol s_6_36[7] = { 'a', 'c', 'i', 'o', 'n', 'e', 's' };
-static symbol s_6_37[7] = { 'u', 'c', 'i', 'o', 'n', 'e', 's' };
-static symbol s_6_38[6] = { 'a', 'd', 'o', 'r', 'e', 's' };
-static symbol s_6_39[5] = { 'a', 'n', 't', 'e', 's' };
-static symbol s_6_40[4] = { 'i', 'c', 'o', 's' };
-static symbol s_6_41[5] = { 'i', 's', 'm', 'o', 's' };
-static symbol s_6_42[4] = { 'o', 's', 'o', 's' };
-static symbol s_6_43[8] = { 'a', 'm', 'i', 'e', 'n', 't', 'o', 's' };
-static symbol s_6_44[8] = { 'i', 'm', 'i', 'e', 'n', 't', 'o', 's' };
-static symbol s_6_45[4] = { 'i', 'v', 'o', 's' };
-
-static struct among a_6[46] =
-{
-/* 0 */ { 3, s_6_0, -1, 1, 0},
-/* 1 */ { 5, s_6_1, -1, 2, 0},
-/* 2 */ { 5, s_6_2, -1, 5, 0},
-/* 3 */ { 5, s_6_3, -1, 2, 0},
-/* 4 */ { 3, s_6_4, -1, 1, 0},
-/* 5 */ { 4, s_6_5, -1, 1, 0},
-/* 6 */ { 3, s_6_6, -1, 9, 0},
-/* 7 */ { 4, s_6_7, -1, 1, 0},
-/* 8 */ { 6, s_6_8, -1, 3, 0},
-/* 9 */ { 4, s_6_9, -1, 8, 0},
-/* 10 */ { 4, s_6_10, -1, 1, 0},
-/* 11 */ { 4, s_6_11, -1, 1, 0},
-/* 12 */ { 4, s_6_12, -1, 2, 0},
-/* 13 */ { 5, s_6_13, -1, 7, 0},
-/* 14 */ { 6, s_6_14, 13, 6, 0},
-/* 15 */ { 6, s_6_15, -1, 2, 0},
-/* 16 */ { 6, s_6_16, -1, 4, 0},
-/* 17 */ { 3, s_6_17, -1, 1, 0},
-/* 18 */ { 4, s_6_18, -1, 1, 0},
-/* 19 */ { 3, s_6_19, -1, 1, 0},
-/* 20 */ { 7, s_6_20, -1, 1, 0},
-/* 21 */ { 7, s_6_21, -1, 1, 0},
-/* 22 */ { 3, s_6_22, -1, 9, 0},
-/* 23 */ { 4, s_6_23, -1, 2, 0},
-/* 24 */ { 4, s_6_24, -1, 1, 0},
-/* 25 */ { 6, s_6_25, -1, 2, 0},
-/* 26 */ { 6, s_6_26, -1, 5, 0},
-/* 27 */ { 6, s_6_27, -1, 2, 0},
-/* 28 */ { 4, s_6_28, -1, 1, 0},
-/* 29 */ { 5, s_6_29, -1, 1, 0},
-/* 30 */ { 4, s_6_30, -1, 9, 0},
-/* 31 */ { 5, s_6_31, -1, 1, 0},
-/* 32 */ { 7, s_6_32, -1, 3, 0},
-/* 33 */ { 6, s_6_33, -1, 8, 0},
-/* 34 */ { 5, s_6_34, -1, 1, 0},
-/* 35 */ { 5, s_6_35, -1, 1, 0},
-/* 36 */ { 7, s_6_36, -1, 2, 0},
-/* 37 */ { 7, s_6_37, -1, 4, 0},
-/* 38 */ { 6, s_6_38, -1, 2, 0},
-/* 39 */ { 5, s_6_39, -1, 2, 0},
-/* 40 */ { 4, s_6_40, -1, 1, 0},
-/* 41 */ { 5, s_6_41, -1, 1, 0},
-/* 42 */ { 4, s_6_42, -1, 1, 0},
-/* 43 */ { 8, s_6_43, -1, 1, 0},
-/* 44 */ { 8, s_6_44, -1, 1, 0},
-/* 45 */ { 4, s_6_45, -1, 9, 0}
-};
-
-static symbol s_7_0[2] = { 'y', 'a' };
-static symbol s_7_1[2] = { 'y', 'e' };
-static symbol s_7_2[3] = { 'y', 'a', 'n' };
-static symbol s_7_3[3] = { 'y', 'e', 'n' };
-static symbol s_7_4[5] = { 'y', 'e', 'r', 'o', 'n' };
-static symbol s_7_5[5] = { 'y', 'e', 'n', 'd', 'o' };
-static symbol s_7_6[2] = { 'y', 'o' };
-static symbol s_7_7[3] = { 'y', 'a', 's' };
-static symbol s_7_8[3] = { 'y', 'e', 's' };
-static symbol s_7_9[4] = { 'y', 'a', 'i', 's' };
-static symbol s_7_10[5] = { 'y', 'a', 'm', 'o', 's' };
-static symbol s_7_11[3] = { 'y', 0xC3, 0xB3 };
-
-static struct among a_7[12] =
-{
-/* 0 */ { 2, s_7_0, -1, 1, 0},
-/* 1 */ { 2, s_7_1, -1, 1, 0},
-/* 2 */ { 3, s_7_2, -1, 1, 0},
-/* 3 */ { 3, s_7_3, -1, 1, 0},
-/* 4 */ { 5, s_7_4, -1, 1, 0},
-/* 5 */ { 5, s_7_5, -1, 1, 0},
-/* 6 */ { 2, s_7_6, -1, 1, 0},
-/* 7 */ { 3, s_7_7, -1, 1, 0},
-/* 8 */ { 3, s_7_8, -1, 1, 0},
-/* 9 */ { 4, s_7_9, -1, 1, 0},
-/* 10 */ { 5, s_7_10, -1, 1, 0},
-/* 11 */ { 3, s_7_11, -1, 1, 0}
-};
-
-static symbol s_8_0[3] = { 'a', 'b', 'a' };
-static symbol s_8_1[3] = { 'a', 'd', 'a' };
-static symbol s_8_2[3] = { 'i', 'd', 'a' };
-static symbol s_8_3[3] = { 'a', 'r', 'a' };
-static symbol s_8_4[4] = { 'i', 'e', 'r', 'a' };
-static symbol s_8_5[3] = { 0xC3, 0xAD, 'a' };
-static symbol s_8_6[5] = { 'a', 'r', 0xC3, 0xAD, 'a' };
-static symbol s_8_7[5] = { 'e', 'r', 0xC3, 0xAD, 'a' };
-static symbol s_8_8[5] = { 'i', 'r', 0xC3, 0xAD, 'a' };
-static symbol s_8_9[2] = { 'a', 'd' };
-static symbol s_8_10[2] = { 'e', 'd' };
-static symbol s_8_11[2] = { 'i', 'd' };
-static symbol s_8_12[3] = { 'a', 's', 'e' };
-static symbol s_8_13[4] = { 'i', 'e', 's', 'e' };
-static symbol s_8_14[4] = { 'a', 's', 't', 'e' };
-static symbol s_8_15[4] = { 'i', 's', 't', 'e' };
-static symbol s_8_16[2] = { 'a', 'n' };
-static symbol s_8_17[4] = { 'a', 'b', 'a', 'n' };
-static symbol s_8_18[4] = { 'a', 'r', 'a', 'n' };
-static symbol s_8_19[5] = { 'i', 'e', 'r', 'a', 'n' };
-static symbol s_8_20[4] = { 0xC3, 0xAD, 'a', 'n' };
-static symbol s_8_21[6] = { 'a', 'r', 0xC3, 0xAD, 'a', 'n' };
-static symbol s_8_22[6] = { 'e', 'r', 0xC3, 0xAD, 'a', 'n' };
-static symbol s_8_23[6] = { 'i', 'r', 0xC3, 0xAD, 'a', 'n' };
-static symbol s_8_24[2] = { 'e', 'n' };
-static symbol s_8_25[4] = { 'a', 's', 'e', 'n' };
-static symbol s_8_26[5] = { 'i', 'e', 's', 'e', 'n' };
-static symbol s_8_27[4] = { 'a', 'r', 'o', 'n' };
-static symbol s_8_28[5] = { 'i', 'e', 'r', 'o', 'n' };
-static symbol s_8_29[5] = { 'a', 'r', 0xC3, 0xA1, 'n' };
-static symbol s_8_30[5] = { 'e', 'r', 0xC3, 0xA1, 'n' };
-static symbol s_8_31[5] = { 'i', 'r', 0xC3, 0xA1, 'n' };
-static symbol s_8_32[3] = { 'a', 'd', 'o' };
-static symbol s_8_33[3] = { 'i', 'd', 'o' };
-static symbol s_8_34[4] = { 'a', 'n', 'd', 'o' };
-static symbol s_8_35[5] = { 'i', 'e', 'n', 'd', 'o' };
-static symbol s_8_36[2] = { 'a', 'r' };
-static symbol s_8_37[2] = { 'e', 'r' };
-static symbol s_8_38[2] = { 'i', 'r' };
-static symbol s_8_39[2] = { 'a', 's' };
-static symbol s_8_40[4] = { 'a', 'b', 'a', 's' };
-static symbol s_8_41[4] = { 'a', 'd', 'a', 's' };
-static symbol s_8_42[4] = { 'i', 'd', 'a', 's' };
-static symbol s_8_43[4] = { 'a', 'r', 'a', 's' };
-static symbol s_8_44[5] = { 'i', 'e', 'r', 'a', 's' };
-static symbol s_8_45[4] = { 0xC3, 0xAD, 'a', 's' };
-static symbol s_8_46[6] = { 'a', 'r', 0xC3, 0xAD, 'a', 's' };
-static symbol s_8_47[6] = { 'e', 'r', 0xC3, 0xAD, 'a', 's' };
-static symbol s_8_48[6] = { 'i', 'r', 0xC3, 0xAD, 'a', 's' };
-static symbol s_8_49[2] = { 'e', 's' };
-static symbol s_8_50[4] = { 'a', 's', 'e', 's' };
-static symbol s_8_51[5] = { 'i', 'e', 's', 'e', 's' };
-static symbol s_8_52[5] = { 'a', 'b', 'a', 'i', 's' };
-static symbol s_8_53[5] = { 'a', 'r', 'a', 'i', 's' };
-static symbol s_8_54[6] = { 'i', 'e', 'r', 'a', 'i', 's' };
-static symbol s_8_55[5] = { 0xC3, 0xAD, 'a', 'i', 's' };
-static symbol s_8_56[7] = { 'a', 'r', 0xC3, 0xAD, 'a', 'i', 's' };
-static symbol s_8_57[7] = { 'e', 'r', 0xC3, 0xAD, 'a', 'i', 's' };
-static symbol s_8_58[7] = { 'i', 'r', 0xC3, 0xAD, 'a', 'i', 's' };
-static symbol s_8_59[5] = { 'a', 's', 'e', 'i', 's' };
-static symbol s_8_60[6] = { 'i', 'e', 's', 'e', 'i', 's' };
-static symbol s_8_61[6] = { 'a', 's', 't', 'e', 'i', 's' };
-static symbol s_8_62[6] = { 'i', 's', 't', 'e', 'i', 's' };
-static symbol s_8_63[4] = { 0xC3, 0xA1, 'i', 's' };
-static symbol s_8_64[4] = { 0xC3, 0xA9, 'i', 's' };
-static symbol s_8_65[6] = { 'a', 'r', 0xC3, 0xA9, 'i', 's' };
-static symbol s_8_66[6] = { 'e', 'r', 0xC3, 0xA9, 'i', 's' };
-static symbol s_8_67[6] = { 'i', 'r', 0xC3, 0xA9, 'i', 's' };
-static symbol s_8_68[4] = { 'a', 'd', 'o', 's' };
-static symbol s_8_69[4] = { 'i', 'd', 'o', 's' };
-static symbol s_8_70[4] = { 'a', 'm', 'o', 's' };
-static symbol s_8_71[7] = { 0xC3, 0xA1, 'b', 'a', 'm', 'o', 's' };
-static symbol s_8_72[7] = { 0xC3, 0xA1, 'r', 'a', 'm', 'o', 's' };
-static symbol s_8_73[8] = { 'i', 0xC3, 0xA9, 'r', 'a', 'm', 'o', 's' };
-static symbol s_8_74[6] = { 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_8_75[8] = { 'a', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_8_76[8] = { 'e', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_8_77[8] = { 'i', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' };
-static symbol s_8_78[4] = { 'e', 'm', 'o', 's' };
-static symbol s_8_79[6] = { 'a', 'r', 'e', 'm', 'o', 's' };
-static symbol s_8_80[6] = { 'e', 'r', 'e', 'm', 'o', 's' };
-static symbol s_8_81[6] = { 'i', 'r', 'e', 'm', 'o', 's' };
-static symbol s_8_82[7] = { 0xC3, 0xA1, 's', 'e', 'm', 'o', 's' };
-static symbol s_8_83[8] = { 'i', 0xC3, 0xA9, 's', 'e', 'm', 'o', 's' };
-static symbol s_8_84[4] = { 'i', 'm', 'o', 's' };
-static symbol s_8_85[5] = { 'a', 'r', 0xC3, 0xA1, 's' };
-static symbol s_8_86[5] = { 'e', 'r', 0xC3, 0xA1, 's' };
-static symbol s_8_87[5] = { 'i', 'r', 0xC3, 0xA1, 's' };
-static symbol s_8_88[3] = { 0xC3, 0xAD, 's' };
-static symbol s_8_89[4] = { 'a', 'r', 0xC3, 0xA1 };
-static symbol s_8_90[4] = { 'e', 'r', 0xC3, 0xA1 };
-static symbol s_8_91[4] = { 'i', 'r', 0xC3, 0xA1 };
-static symbol s_8_92[4] = { 'a', 'r', 0xC3, 0xA9 };
-static symbol s_8_93[4] = { 'e', 'r', 0xC3, 0xA9 };
-static symbol s_8_94[4] = { 'i', 'r', 0xC3, 0xA9 };
-static symbol s_8_95[3] = { 'i', 0xC3, 0xB3 };
-
-static struct among a_8[96] =
-{
-/* 0 */ { 3, s_8_0, -1, 2, 0},
-/* 1 */ { 3, s_8_1, -1, 2, 0},
-/* 2 */ { 3, s_8_2, -1, 2, 0},
-/* 3 */ { 3, s_8_3, -1, 2, 0},
-/* 4 */ { 4, s_8_4, -1, 2, 0},
-/* 5 */ { 3, s_8_5, -1, 2, 0},
-/* 6 */ { 5, s_8_6, 5, 2, 0},
-/* 7 */ { 5, s_8_7, 5, 2, 0},
-/* 8 */ { 5, s_8_8, 5, 2, 0},
-/* 9 */ { 2, s_8_9, -1, 2, 0},
-/* 10 */ { 2, s_8_10, -1, 2, 0},
-/* 11 */ { 2, s_8_11, -1, 2, 0},
-/* 12 */ { 3, s_8_12, -1, 2, 0},
-/* 13 */ { 4, s_8_13, -1, 2, 0},
-/* 14 */ { 4, s_8_14, -1, 2, 0},
-/* 15 */ { 4, s_8_15, -1, 2, 0},
-/* 16 */ { 2, s_8_16, -1, 2, 0},
-/* 17 */ { 4, s_8_17, 16, 2, 0},
-/* 18 */ { 4, s_8_18, 16, 2, 0},
-/* 19 */ { 5, s_8_19, 16, 2, 0},
-/* 20 */ { 4, s_8_20, 16, 2, 0},
-/* 21 */ { 6, s_8_21, 20, 2, 0},
-/* 22 */ { 6, s_8_22, 20, 2, 0},
-/* 23 */ { 6, s_8_23, 20, 2, 0},
-/* 24 */ { 2, s_8_24, -1, 1, 0},
-/* 25 */ { 4, s_8_25, 24, 2, 0},
-/* 26 */ { 5, s_8_26, 24, 2, 0},
-/* 27 */ { 4, s_8_27, -1, 2, 0},
-/* 28 */ { 5, s_8_28, -1, 2, 0},
-/* 29 */ { 5, s_8_29, -1, 2, 0},
-/* 30 */ { 5, s_8_30, -1, 2, 0},
-/* 31 */ { 5, s_8_31, -1, 2, 0},
-/* 32 */ { 3, s_8_32, -1, 2, 0},
-/* 33 */ { 3, s_8_33, -1, 2, 0},
-/* 34 */ { 4, s_8_34, -1, 2, 0},
-/* 35 */ { 5, s_8_35, -1, 2, 0},
-/* 36 */ { 2, s_8_36, -1, 2, 0},
-/* 37 */ { 2, s_8_37, -1, 2, 0},
-/* 38 */ { 2, s_8_38, -1, 2, 0},
-/* 39 */ { 2, s_8_39, -1, 2, 0},
-/* 40 */ { 4, s_8_40, 39, 2, 0},
-/* 41 */ { 4, s_8_41, 39, 2, 0},
-/* 42 */ { 4, s_8_42, 39, 2, 0},
-/* 43 */ { 4, s_8_43, 39, 2, 0},
-/* 44 */ { 5, s_8_44, 39, 2, 0},
-/* 45 */ { 4, s_8_45, 39, 2, 0},
-/* 46 */ { 6, s_8_46, 45, 2, 0},
-/* 47 */ { 6, s_8_47, 45, 2, 0},
-/* 48 */ { 6, s_8_48, 45, 2, 0},
-/* 49 */ { 2, s_8_49, -1, 1, 0},
-/* 50 */ { 4, s_8_50, 49, 2, 0},
-/* 51 */ { 5, s_8_51, 49, 2, 0},
-/* 52 */ { 5, s_8_52, -1, 2, 0},
-/* 53 */ { 5, s_8_53, -1, 2, 0},
-/* 54 */ { 6, s_8_54, -1, 2, 0},
-/* 55 */ { 5, s_8_55, -1, 2, 0},
-/* 56 */ { 7, s_8_56, 55, 2, 0},
-/* 57 */ { 7, s_8_57, 55, 2, 0},
-/* 58 */ { 7, s_8_58, 55, 2, 0},
-/* 59 */ { 5, s_8_59, -1, 2, 0},
-/* 60 */ { 6, s_8_60, -1, 2, 0},
-/* 61 */ { 6, s_8_61, -1, 2, 0},
-/* 62 */ { 6, s_8_62, -1, 2, 0},
-/* 63 */ { 4, s_8_63, -1, 2, 0},
-/* 64 */ { 4, s_8_64, -1, 1, 0},
-/* 65 */ { 6, s_8_65, 64, 2, 0},
-/* 66 */ { 6, s_8_66, 64, 2, 0},
-/* 67 */ { 6, s_8_67, 64, 2, 0},
-/* 68 */ { 4, s_8_68, -1, 2, 0},
-/* 69 */ { 4, s_8_69, -1, 2, 0},
-/* 70 */ { 4, s_8_70, -1, 2, 0},
-/* 71 */ { 7, s_8_71, 70, 2, 0},
-/* 72 */ { 7, s_8_72, 70, 2, 0},
-/* 73 */ { 8, s_8_73, 70, 2, 0},
-/* 74 */ { 6, s_8_74, 70, 2, 0},
-/* 75 */ { 8, s_8_75, 74, 2, 0},
-/* 76 */ { 8, s_8_76, 74, 2, 0},
-/* 77 */ { 8, s_8_77, 74, 2, 0},
-/* 78 */ { 4, s_8_78, -1, 1, 0},
-/* 79 */ { 6, s_8_79, 78, 2, 0},
-/* 80 */ { 6, s_8_80, 78, 2, 0},
-/* 81 */ { 6, s_8_81, 78, 2, 0},
-/* 82 */ { 7, s_8_82, 78, 2, 0},
-/* 83 */ { 8, s_8_83, 78, 2, 0},
-/* 84 */ { 4, s_8_84, -1, 2, 0},
-/* 85 */ { 5, s_8_85, -1, 2, 0},
-/* 86 */ { 5, s_8_86, -1, 2, 0},
-/* 87 */ { 5, s_8_87, -1, 2, 0},
-/* 88 */ { 3, s_8_88, -1, 2, 0},
-/* 89 */ { 4, s_8_89, -1, 2, 0},
-/* 90 */ { 4, s_8_90, -1, 2, 0},
-/* 91 */ { 4, s_8_91, -1, 2, 0},
-/* 92 */ { 4, s_8_92, -1, 2, 0},
-/* 93 */ { 4, s_8_93, -1, 2, 0},
-/* 94 */ { 4, s_8_94, -1, 2, 0},
-/* 95 */ { 3, s_8_95, -1, 2, 0}
-};
-
-static symbol s_9_0[1] = { 'a' };
-static symbol s_9_1[1] = { 'e' };
-static symbol s_9_2[1] = { 'o' };
-static symbol s_9_3[2] = { 'o', 's' };
-static symbol s_9_4[2] = { 0xC3, 0xA1 };
-static symbol s_9_5[2] = { 0xC3, 0xA9 };
-static symbol s_9_6[2] = { 0xC3, 0xAD };
-static symbol s_9_7[2] = { 0xC3, 0xB3 };
-
-static struct among a_9[8] =
-{
-/* 0 */ { 1, s_9_0, -1, 1, 0},
-/* 1 */ { 1, s_9_1, -1, 2, 0},
-/* 2 */ { 1, s_9_2, -1, 1, 0},
-/* 3 */ { 2, s_9_3, -1, 1, 0},
-/* 4 */ { 2, s_9_4, -1, 1, 0},
-/* 5 */ { 2, s_9_5, -1, 2, 0},
-/* 6 */ { 2, s_9_6, -1, 1, 0},
-/* 7 */ { 2, s_9_7, -1, 1, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 };
-
-static symbol s_0[] = { 'a' };
-static symbol s_1[] = { 'e' };
-static symbol s_2[] = { 'i' };
-static symbol s_3[] = { 'o' };
-static symbol s_4[] = { 'u' };
-static symbol s_5[] = { 'i', 'e', 'n', 'd', 'o' };
-static symbol s_6[] = { 'a', 'n', 'd', 'o' };
-static symbol s_7[] = { 'a', 'r' };
-static symbol s_8[] = { 'e', 'r' };
-static symbol s_9[] = { 'i', 'r' };
-static symbol s_10[] = { 'u' };
-static symbol s_11[] = { 'i', 'c' };
-static symbol s_12[] = { 'l', 'o', 'g' };
-static symbol s_13[] = { 'u' };
-static symbol s_14[] = { 'e', 'n', 't', 'e' };
-static symbol s_15[] = { 'a', 't' };
-static symbol s_16[] = { 'a', 't' };
-static symbol s_17[] = { 'u' };
-static symbol s_18[] = { 'u' };
-static symbol s_19[] = { 'g' };
-static symbol s_20[] = { 'u' };
-static symbol s_21[] = { 'g' };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- z->I[1] = z->l;
- z->I[2] = z->l;
- { int c = z->c; /* do, line 37 */
- { int c = z->c; /* or, line 39 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab2;
- { int c = z->c; /* or, line 38 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab4;
- while(1) { /* gopast, line 38 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab5;
- break;
- lab5:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab4;
- z->c = c; /* gopast, line 38 */
- }
- }
- goto lab3;
- lab4:
- z->c = c;
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab2;
- while(1) { /* gopast, line 38 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab6;
- break;
- lab6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab2;
- z->c = c; /* gopast, line 38 */
- }
- }
- }
- lab3:
- goto lab1;
- lab2:
- z->c = c;
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab0;
- { int c = z->c; /* or, line 40 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab8;
- while(1) { /* gopast, line 40 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab9;
- break;
- lab9:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab8;
- z->c = c; /* gopast, line 40 */
- }
- }
- goto lab7;
- lab8:
- z->c = c;
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab0;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 40 */
- }
- }
- lab7:
- ;
- }
- lab1:
- z->I[0] = z->c; /* setmark pV, line 41 */
- lab0:
- z->c = c;
- }
- { int c = z->c; /* do, line 43 */
- while(1) { /* gopast, line 44 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab11;
- break;
- lab11:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 44 */
- }
- }
- while(1) { /* gopast, line 44 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab12;
- break;
- lab12:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 44 */
- }
- }
- z->I[1] = z->c; /* setmark p1, line 44 */
- while(1) { /* gopast, line 45 */
- if (!(in_grouping_U(z, g_v, 97, 252))) goto lab13;
- break;
- lab13:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 45 */
- }
- }
- while(1) { /* gopast, line 45 */
- if (!(out_grouping_U(z, g_v, 97, 252))) goto lab14;
- break;
- lab14:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab10;
- z->c = c; /* gopast, line 45 */
- }
- }
- z->I[2] = z->c; /* setmark p2, line 45 */
- lab10:
- z->c = c;
- }
- return 1;
-}
-
-static int r_postlude(struct SN_env * z) {
- int among_var;
- while(1) { /* repeat, line 49 */
- int c = z->c;
- z->bra = z->c; /* [, line 50 */
- among_var = find_among(z, a_0, 6); /* substring, line 50 */
- if (!(among_var)) goto lab0;
- z->ket = z->c; /* ], line 50 */
- switch(among_var) {
- case 0: goto lab0;
- case 1:
- { int ret;
- ret = slice_from_s(z, 1, s_0); /* <-, line 51 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 1, s_1); /* <-, line 52 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 1, s_2); /* <-, line 53 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret;
- ret = slice_from_s(z, 1, s_3); /* <-, line 54 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret;
- ret = slice_from_s(z, 1, s_4); /* <-, line 55 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) goto lab0;
- z->c = c; /* next, line 57 */
- }
- break;
- }
- continue;
- lab0:
- z->c = c;
- break;
- }
- return 1;
-}
-
-static int r_RV(struct SN_env * z) {
- if (!(z->I[0] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R1(struct SN_env * z) {
- if (!(z->I[1] <= z->c)) return 0;
- return 1;
-}
-
-static int r_R2(struct SN_env * z) {
- if (!(z->I[2] <= z->c)) return 0;
- return 1;
-}
-
-static int r_attached_pronoun(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 68 */
- if (!(find_among_b(z, a_1, 13))) return 0; /* substring, line 68 */
- z->bra = z->c; /* ], line 68 */
- among_var = find_among_b(z, a_2, 11); /* substring, line 72 */
- if (!(among_var)) return 0;
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 72 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- z->bra = z->c; /* ], line 73 */
- { int ret;
- ret = slice_from_s(z, 5, s_5); /* <-, line 73 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- z->bra = z->c; /* ], line 74 */
- { int ret;
- ret = slice_from_s(z, 4, s_6); /* <-, line 74 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- z->bra = z->c; /* ], line 75 */
- { int ret;
- ret = slice_from_s(z, 2, s_7); /* <-, line 75 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- z->bra = z->c; /* ], line 76 */
- { int ret;
- ret = slice_from_s(z, 2, s_8); /* <-, line 76 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- z->bra = z->c; /* ], line 77 */
- { int ret;
- ret = slice_from_s(z, 2, s_9); /* <-, line 77 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret;
- ret = slice_del(z); /* delete, line 81 */
- if (ret < 0) return ret;
- }
- break;
- case 7:
- if (!(eq_s_b(z, 1, s_10))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 82 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_standard_suffix(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 87 */
- among_var = find_among_b(z, a_6, 46); /* substring, line 87 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 87 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 99 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 99 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 105 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 105 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 106 */
- z->ket = z->c; /* [, line 106 */
- if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 106 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call R2, line 106 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 106 */
- if (ret < 0) return ret;
- }
- lab0:
- ;
- }
- break;
- case 3:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 111 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 3, s_12); /* <-, line 111 */
- if (ret < 0) return ret;
- }
- break;
- case 4:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 115 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 1, s_13); /* <-, line 115 */
- if (ret < 0) return ret;
- }
- break;
- case 5:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 119 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_from_s(z, 4, s_14); /* <-, line 119 */
- if (ret < 0) return ret;
- }
- break;
- case 6:
- { int ret = r_R1(z);
- if (ret == 0) return 0; /* call R1, line 123 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 123 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 124 */
- z->ket = z->c; /* [, line 125 */
- among_var = find_among_b(z, a_3, 4); /* substring, line 125 */
- if (!(among_var)) { z->c = z->l - m; goto lab1; }
- z->bra = z->c; /* ], line 125 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab1; } /* call R2, line 125 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 125 */
- if (ret < 0) return ret;
- }
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab1; }
- case 1:
- z->ket = z->c; /* [, line 126 */
- if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m; goto lab1; }
- z->bra = z->c; /* ], line 126 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab1; } /* call R2, line 126 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 126 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab1:
- ;
- }
- break;
- case 7:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 135 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 135 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 136 */
- z->ket = z->c; /* [, line 137 */
- among_var = find_among_b(z, a_4, 3); /* substring, line 137 */
- if (!(among_var)) { z->c = z->l - m; goto lab2; }
- z->bra = z->c; /* ], line 137 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab2; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab2; } /* call R2, line 140 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 140 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab2:
- ;
- }
- break;
- case 8:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 147 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 147 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 148 */
- z->ket = z->c; /* [, line 149 */
- among_var = find_among_b(z, a_5, 3); /* substring, line 149 */
- if (!(among_var)) { z->c = z->l - m; goto lab3; }
- z->bra = z->c; /* ], line 149 */
- switch(among_var) {
- case 0: { z->c = z->l - m; goto lab3; }
- case 1:
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab3; } /* call R2, line 152 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 152 */
- if (ret < 0) return ret;
- }
- break;
- }
- lab3:
- ;
- }
- break;
- case 9:
- { int ret = r_R2(z);
- if (ret == 0) return 0; /* call R2, line 159 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 159 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 160 */
- z->ket = z->c; /* [, line 161 */
- if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - m; goto lab4; }
- z->bra = z->c; /* ], line 161 */
- { int ret = r_R2(z);
- if (ret == 0) { z->c = z->l - m; goto lab4; } /* call R2, line 161 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 161 */
- if (ret < 0) return ret;
- }
- lab4:
- ;
- }
- break;
- }
- return 1;
-}
-
-static int r_y_verb_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 168 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 168 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 168 */
- among_var = find_among_b(z, a_7, 12); /* substring, line 168 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 168 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- if (!(eq_s_b(z, 1, s_17))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 171 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_verb_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 176 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 176 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 176 */
- among_var = find_among_b(z, a_8, 96); /* substring, line 176 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 176 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int m = z->l - z->c; (void) m; /* try, line 179 */
- if (!(eq_s_b(z, 1, s_18))) { z->c = z->l - m; goto lab0; }
- { int m_test = z->l - z->c; /* test, line 179 */
- if (!(eq_s_b(z, 1, s_19))) { z->c = z->l - m; goto lab0; }
- z->c = z->l - m_test;
- }
- lab0:
- ;
- }
- z->bra = z->c; /* ], line 179 */
- { int ret;
- ret = slice_del(z); /* delete, line 179 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_del(z); /* delete, line 200 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_residual_suffix(struct SN_env * z) {
- int among_var;
- z->ket = z->c; /* [, line 205 */
- among_var = find_among_b(z, a_9, 8); /* substring, line 205 */
- if (!(among_var)) return 0;
- z->bra = z->c; /* ], line 205 */
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 208 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 208 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret = r_RV(z);
- if (ret == 0) return 0; /* call RV, line 210 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 210 */
- if (ret < 0) return ret;
- }
- { int m = z->l - z->c; (void) m; /* try, line 210 */
- z->ket = z->c; /* [, line 210 */
- if (!(eq_s_b(z, 1, s_20))) { z->c = z->l - m; goto lab0; }
- z->bra = z->c; /* ], line 210 */
- { int m_test = z->l - z->c; /* test, line 210 */
- if (!(eq_s_b(z, 1, s_21))) { z->c = z->l - m; goto lab0; }
- z->c = z->l - m_test;
- }
- { int ret = r_RV(z);
- if (ret == 0) { z->c = z->l - m; goto lab0; } /* call RV, line 210 */
- if (ret < 0) return ret;
- }
- { int ret;
- ret = slice_del(z); /* delete, line 210 */
- if (ret < 0) return ret;
- }
- lab0:
- ;
- }
- break;
- }
- return 1;
-}
-
-extern int spanish_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 216 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 216 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 217 */
-
- { int m = z->l - z->c; (void) m; /* do, line 218 */
- { int ret = r_attached_pronoun(z);
- if (ret == 0) goto lab1; /* call attached_pronoun, line 218 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 219 */
- { int m = z->l - z->c; (void) m; /* or, line 219 */
- { int ret = r_standard_suffix(z);
- if (ret == 0) goto lab4; /* call standard_suffix, line 219 */
- if (ret < 0) return ret;
- }
- goto lab3;
- lab4:
- z->c = z->l - m;
- { int ret = r_y_verb_suffix(z);
- if (ret == 0) goto lab5; /* call y_verb_suffix, line 220 */
- if (ret < 0) return ret;
- }
- goto lab3;
- lab5:
- z->c = z->l - m;
- { int ret = r_verb_suffix(z);
- if (ret == 0) goto lab2; /* call verb_suffix, line 221 */
- if (ret < 0) return ret;
- }
- }
- lab3:
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 223 */
- { int ret = r_residual_suffix(z);
- if (ret == 0) goto lab6; /* call residual_suffix, line 223 */
- if (ret < 0) return ret;
- }
- lab6:
- z->c = z->l - m;
- }
- z->c = z->lb;
- { int c = z->c; /* do, line 225 */
- { int ret = r_postlude(z);
- if (ret == 0) goto lab7; /* call postlude, line 225 */
- if (ret < 0) return ret;
- }
- lab7:
- z->c = c;
- }
- return 1;
-}
-
-extern struct SN_env * spanish_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); }
-
-extern void spanish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_spanish.h b/src/libstemmer/src_c/stem_UTF_8_spanish.h
deleted file mode 100644
index ed98228c7..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_spanish.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * spanish_UTF_8_create_env(void);
-extern void spanish_UTF_8_close_env(struct SN_env * z);
-
-extern int spanish_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_swedish.c b/src/libstemmer/src_c/stem_UTF_8_swedish.c
deleted file mode 100644
index 37f2f83cc..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_swedish.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#include "../runtime/header.h"
-
-extern int swedish_UTF_8_stem(struct SN_env * z);
-static int r_other_suffix(struct SN_env * z);
-static int r_consonant_pair(struct SN_env * z);
-static int r_main_suffix(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * swedish_UTF_8_create_env(void);
-extern void swedish_UTF_8_close_env(struct SN_env * z);
-
-static symbol s_0_0[1] = { 'a' };
-static symbol s_0_1[4] = { 'a', 'r', 'n', 'a' };
-static symbol s_0_2[4] = { 'e', 'r', 'n', 'a' };
-static symbol s_0_3[7] = { 'h', 'e', 't', 'e', 'r', 'n', 'a' };
-static symbol s_0_4[4] = { 'o', 'r', 'n', 'a' };
-static symbol s_0_5[2] = { 'a', 'd' };
-static symbol s_0_6[1] = { 'e' };
-static symbol s_0_7[3] = { 'a', 'd', 'e' };
-static symbol s_0_8[4] = { 'a', 'n', 'd', 'e' };
-static symbol s_0_9[4] = { 'a', 'r', 'n', 'e' };
-static symbol s_0_10[3] = { 'a', 'r', 'e' };
-static symbol s_0_11[4] = { 'a', 's', 't', 'e' };
-static symbol s_0_12[2] = { 'e', 'n' };
-static symbol s_0_13[5] = { 'a', 'n', 'd', 'e', 'n' };
-static symbol s_0_14[4] = { 'a', 'r', 'e', 'n' };
-static symbol s_0_15[5] = { 'h', 'e', 't', 'e', 'n' };
-static symbol s_0_16[3] = { 'e', 'r', 'n' };
-static symbol s_0_17[2] = { 'a', 'r' };
-static symbol s_0_18[2] = { 'e', 'r' };
-static symbol s_0_19[5] = { 'h', 'e', 't', 'e', 'r' };
-static symbol s_0_20[2] = { 'o', 'r' };
-static symbol s_0_21[1] = { 's' };
-static symbol s_0_22[2] = { 'a', 's' };
-static symbol s_0_23[5] = { 'a', 'r', 'n', 'a', 's' };
-static symbol s_0_24[5] = { 'e', 'r', 'n', 'a', 's' };
-static symbol s_0_25[5] = { 'o', 'r', 'n', 'a', 's' };
-static symbol s_0_26[2] = { 'e', 's' };
-static symbol s_0_27[4] = { 'a', 'd', 'e', 's' };
-static symbol s_0_28[5] = { 'a', 'n', 'd', 'e', 's' };
-static symbol s_0_29[3] = { 'e', 'n', 's' };
-static symbol s_0_30[5] = { 'a', 'r', 'e', 'n', 's' };
-static symbol s_0_31[6] = { 'h', 'e', 't', 'e', 'n', 's' };
-static symbol s_0_32[4] = { 'e', 'r', 'n', 's' };
-static symbol s_0_33[2] = { 'a', 't' };
-static symbol s_0_34[5] = { 'a', 'n', 'd', 'e', 't' };
-static symbol s_0_35[3] = { 'h', 'e', 't' };
-static symbol s_0_36[3] = { 'a', 's', 't' };
-
-static struct among a_0[37] =
-{
-/* 0 */ { 1, s_0_0, -1, 1, 0},
-/* 1 */ { 4, s_0_1, 0, 1, 0},
-/* 2 */ { 4, s_0_2, 0, 1, 0},
-/* 3 */ { 7, s_0_3, 2, 1, 0},
-/* 4 */ { 4, s_0_4, 0, 1, 0},
-/* 5 */ { 2, s_0_5, -1, 1, 0},
-/* 6 */ { 1, s_0_6, -1, 1, 0},
-/* 7 */ { 3, s_0_7, 6, 1, 0},
-/* 8 */ { 4, s_0_8, 6, 1, 0},
-/* 9 */ { 4, s_0_9, 6, 1, 0},
-/* 10 */ { 3, s_0_10, 6, 1, 0},
-/* 11 */ { 4, s_0_11, 6, 1, 0},
-/* 12 */ { 2, s_0_12, -1, 1, 0},
-/* 13 */ { 5, s_0_13, 12, 1, 0},
-/* 14 */ { 4, s_0_14, 12, 1, 0},
-/* 15 */ { 5, s_0_15, 12, 1, 0},
-/* 16 */ { 3, s_0_16, -1, 1, 0},
-/* 17 */ { 2, s_0_17, -1, 1, 0},
-/* 18 */ { 2, s_0_18, -1, 1, 0},
-/* 19 */ { 5, s_0_19, 18, 1, 0},
-/* 20 */ { 2, s_0_20, -1, 1, 0},
-/* 21 */ { 1, s_0_21, -1, 2, 0},
-/* 22 */ { 2, s_0_22, 21, 1, 0},
-/* 23 */ { 5, s_0_23, 22, 1, 0},
-/* 24 */ { 5, s_0_24, 22, 1, 0},
-/* 25 */ { 5, s_0_25, 22, 1, 0},
-/* 26 */ { 2, s_0_26, 21, 1, 0},
-/* 27 */ { 4, s_0_27, 26, 1, 0},
-/* 28 */ { 5, s_0_28, 26, 1, 0},
-/* 29 */ { 3, s_0_29, 21, 1, 0},
-/* 30 */ { 5, s_0_30, 29, 1, 0},
-/* 31 */ { 6, s_0_31, 29, 1, 0},
-/* 32 */ { 4, s_0_32, 21, 1, 0},
-/* 33 */ { 2, s_0_33, -1, 1, 0},
-/* 34 */ { 5, s_0_34, -1, 1, 0},
-/* 35 */ { 3, s_0_35, -1, 1, 0},
-/* 36 */ { 3, s_0_36, -1, 1, 0}
-};
-
-static symbol s_1_0[2] = { 'd', 'd' };
-static symbol s_1_1[2] = { 'g', 'd' };
-static symbol s_1_2[2] = { 'n', 'n' };
-static symbol s_1_3[2] = { 'd', 't' };
-static symbol s_1_4[2] = { 'g', 't' };
-static symbol s_1_5[2] = { 'k', 't' };
-static symbol s_1_6[2] = { 't', 't' };
-
-static struct among a_1[7] =
-{
-/* 0 */ { 2, s_1_0, -1, -1, 0},
-/* 1 */ { 2, s_1_1, -1, -1, 0},
-/* 2 */ { 2, s_1_2, -1, -1, 0},
-/* 3 */ { 2, s_1_3, -1, -1, 0},
-/* 4 */ { 2, s_1_4, -1, -1, 0},
-/* 5 */ { 2, s_1_5, -1, -1, 0},
-/* 6 */ { 2, s_1_6, -1, -1, 0}
-};
-
-static symbol s_2_0[2] = { 'i', 'g' };
-static symbol s_2_1[3] = { 'l', 'i', 'g' };
-static symbol s_2_2[3] = { 'e', 'l', 's' };
-static symbol s_2_3[5] = { 'f', 'u', 'l', 'l', 't' };
-static symbol s_2_4[5] = { 'l', 0xC3, 0xB6, 's', 't' };
-
-static struct among a_2[5] =
-{
-/* 0 */ { 2, s_2_0, -1, 1, 0},
-/* 1 */ { 3, s_2_1, 0, 1, 0},
-/* 2 */ { 3, s_2_2, -1, 1, 0},
-/* 3 */ { 5, s_2_3, -1, 3, 0},
-/* 4 */ { 5, s_2_4, -1, 2, 0}
-};
-
-static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
-
-static unsigned char g_s_ending[] = { 119, 127, 149 };
-
-static symbol s_0[] = { 'l', 0xC3, 0xB6, 's' };
-static symbol s_1[] = { 'f', 'u', 'l', 'l' };
-
-static int r_mark_regions(struct SN_env * z) {
- z->I[0] = z->l;
- { int c_test = z->c; /* test, line 29 */
- { int c = skip_utf8(z->p, z->c, 0, z->l, + 3);
- if (c < 0) return 0;
- z->c = c; /* hop, line 29 */
- }
- z->I[1] = z->c; /* setmark x, line 29 */
- z->c = c_test;
- }
- while(1) { /* goto, line 30 */
- int c = z->c;
- if (!(in_grouping_U(z, g_v, 97, 246))) goto lab0;
- z->c = c;
- break;
- lab0:
- z->c = c;
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* goto, line 30 */
- }
- }
- while(1) { /* gopast, line 30 */
- if (!(out_grouping_U(z, g_v, 97, 246))) goto lab1;
- break;
- lab1:
- { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
- if (c < 0) return 0;
- z->c = c; /* gopast, line 30 */
- }
- }
- z->I[0] = z->c; /* setmark p1, line 30 */
- /* try, line 31 */
- if (!(z->I[0] < z->I[1])) goto lab2;
- z->I[0] = z->I[1];
-lab2:
- return 1;
-}
-
-static int r_main_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 37 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 37 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 37 */
- among_var = find_among_b(z, a_0, 37); /* substring, line 37 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 37 */
- z->lb = m3;
- }
- switch(among_var) {
- case 0: return 0;
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 44 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- if (!(in_grouping_b_U(z, g_s_ending, 98, 121))) return 0;
- { int ret;
- ret = slice_del(z); /* delete, line 46 */
- if (ret < 0) return ret;
- }
- break;
- }
- return 1;
-}
-
-static int r_consonant_pair(struct SN_env * z) {
- { int m3; /* setlimit, line 50 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 50 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- { int m = z->l - z->c; (void) m; /* and, line 52 */
- if (!(find_among_b(z, a_1, 7))) { z->lb = m3; return 0; } /* among, line 51 */
- z->c = z->l - m;
- z->ket = z->c; /* [, line 52 */
- { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
- if (c < 0) { z->lb = m3; return 0; }
- z->c = c; /* next, line 52 */
- }
- z->bra = z->c; /* ], line 52 */
- { int ret;
- ret = slice_del(z); /* delete, line 52 */
- if (ret < 0) return ret;
- }
- }
- z->lb = m3;
- }
- return 1;
-}
-
-static int r_other_suffix(struct SN_env * z) {
- int among_var;
- { int m3; /* setlimit, line 55 */
- int m = z->l - z->c; (void) m;
- if (z->c < z->I[0]) return 0;
- z->c = z->I[0]; /* tomark, line 55 */
- m3 = z->lb; z->lb = z->c;
- z->c = z->l - m;
- z->ket = z->c; /* [, line 56 */
- among_var = find_among_b(z, a_2, 5); /* substring, line 56 */
- if (!(among_var)) { z->lb = m3; return 0; }
- z->bra = z->c; /* ], line 56 */
- switch(among_var) {
- case 0: { z->lb = m3; return 0; }
- case 1:
- { int ret;
- ret = slice_del(z); /* delete, line 57 */
- if (ret < 0) return ret;
- }
- break;
- case 2:
- { int ret;
- ret = slice_from_s(z, 4, s_0); /* <-, line 58 */
- if (ret < 0) return ret;
- }
- break;
- case 3:
- { int ret;
- ret = slice_from_s(z, 4, s_1); /* <-, line 59 */
- if (ret < 0) return ret;
- }
- break;
- }
- z->lb = m3;
- }
- return 1;
-}
-
-extern int swedish_UTF_8_stem(struct SN_env * z) {
- { int c = z->c; /* do, line 66 */
- { int ret = r_mark_regions(z);
- if (ret == 0) goto lab0; /* call mark_regions, line 66 */
- if (ret < 0) return ret;
- }
- lab0:
- z->c = c;
- }
- z->lb = z->c; z->c = z->l; /* backwards, line 67 */
-
- { int m = z->l - z->c; (void) m; /* do, line 68 */
- { int ret = r_main_suffix(z);
- if (ret == 0) goto lab1; /* call main_suffix, line 68 */
- if (ret < 0) return ret;
- }
- lab1:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 69 */
- { int ret = r_consonant_pair(z);
- if (ret == 0) goto lab2; /* call consonant_pair, line 69 */
- if (ret < 0) return ret;
- }
- lab2:
- z->c = z->l - m;
- }
- { int m = z->l - z->c; (void) m; /* do, line 70 */
- { int ret = r_other_suffix(z);
- if (ret == 0) goto lab3; /* call other_suffix, line 70 */
- if (ret < 0) return ret;
- }
- lab3:
- z->c = z->l - m;
- }
- z->c = z->lb;
- return 1;
-}
-
-extern struct SN_env * swedish_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); }
-
-extern void swedish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
-
diff --git a/src/libstemmer/src_c/stem_UTF_8_swedish.h b/src/libstemmer/src_c/stem_UTF_8_swedish.h
deleted file mode 100644
index b88efd6c7..000000000
--- a/src/libstemmer/src_c/stem_UTF_8_swedish.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2001, Dr Martin Porter
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-
-/* This file was generated automatically by the Snowball to ANSI C compiler */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern struct SN_env * swedish_UTF_8_create_env(void);
-extern void swedish_UTF_8_close_env(struct SN_env * z);
-
-extern int swedish_UTF_8_stem(struct SN_env * z);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/src/libtracker-common/Makefile.am b/src/libtracker-common/Makefile.am
deleted file mode 100644
index 0b65faa03..000000000
--- a/src/libtracker-common/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-INCLUDES = \
- $(GLIB2_CFLAGS) \
- -DSHAREDIR=\""$(datadir)"\"
-
-noinst_LTLIBRARIES = libtracker-common.la
-
-libtracker_common_la_SOURCES = \
- tracker-configuration.c \
- tracker-configuration.h \
- tracker-config.c \
- tracker-config.h \
- tracker-language.c \
- tracker-language.h \
- tracker-log.c \
- tracker-log.h
-
-libtracker_common_la_LDFLAGS = -version-info 0:0:0
-libtracker_common_la_LIBADD = $(GLIB2_LIBS)
-
diff --git a/src/libtracker-common/tracker-config.c b/src/libtracker-common/tracker-config.c
deleted file mode 100644
index 683f931c3..000000000
--- a/src/libtracker-common/tracker-config.c
+++ /dev/null
@@ -1,2318 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2007, Michal Pryc (Michal.Pryc@Sun.Com)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <glib.h>
-
-#include "tracker-language.h"
-#include "tracker-config.h"
-
-#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_CONFIG, TrackerConfigPriv))
-
-/* GKeyFile defines */
-#define GROUP_GENERAL "General"
-#define KEY_VERBOSITY "Verbosity"
-#define KEY_INITIAL_SLEEP "InitialSleep"
-#define KEY_LOW_MEMORY_MODE "LowMemoryMode"
-
-#define GROUP_WATCHES "Watches"
-#define KEY_WATCH_DIRECTORY_ROOTS "WatchDirectoryRoots"
-#define KEY_CRAWL_DIRECTORY_ROOTS "CrawlDirectory"
-#define KEY_NO_WATCH_DIRECTORY_ROOTS "NoWatchDirectory"
-#define KEY_ENABLE_WATCHES "EnableWatching"
-
-#define GROUP_INDEXING "Indexing"
-#define KEY_THROTTLE "Throttle"
-#define KEY_ENABLE_INDEXING "EnableIndexing"
-#define KEY_ENABLE_CONTENT_INDEXING "EnableFileContentIndexing"
-#define KEY_ENABLE_THUMBNAILS "EnableThumbnails"
-#define KEY_FAST_MERGES "FastMerges"
-#define KEY_NO_INDEX_FILE_TYPES "NoIndexFileTypes"
-#define KEY_MIN_WORD_LENGTH "MinWorldLength"
-#define KEY_MAX_WORD_LENGTH "MaxWorldLength"
-#define KEY_LANGUAGE "Language"
-#define KEY_ENABLE_STEMMER "EnableStemmer"
-#define KEY_DISABLE_INDEXING_ON_BATTERY "BatteryIndex"
-#define KEY_DISABLE_INDEXING_ON_BATTERY_INIT "BatteryIndexInitial"
-#define KEY_LOW_DISK_SPACE_LIMIT "LowDiskSpaceLimit"
-#define KEY_INDEX_MOUNTED_DIRECTORIES "IndexMountedDirectories"
-#define KEY_INDEX_REMOVABLE_DEVICES "IndexRemovableMedia"
-
-#define GROUP_EMAILS "Emails"
-#define KEY_EMAIL_CLIENT "IndexEMailClient"
-
-#define GROUP_PERFORMANCE "Performance"
-#define KEY_MAX_TEXT_TO_INDEX "MaxTextToIndex"
-#define KEY_MAX_WORDS_TO_INDEX "MaxWordsToIndex"
-#define KEY_OPTIMIZATION_SWEEP_COUNT "OptimizationSweepCount"
-#define KEY_MAX_BUCKET_COUNT "MaxBucketCount"
-#define KEY_MIN_BUCKET_COUNT "MinBucketCount"
-#define KEY_DIVISIONS "Divisions"
-#define KEY_BUCKET_RATIO "BucketRatio"
-#define KEY_PADDING "Padding"
-#define KEY_THREAD_STACK_SIZE "ThreadStackSize"
-
-/* Default values */
-#define DEFAULT_VERBOSITY 0
-#define DEFAULT_INITIAL_SLEEP 45 /* 0->1000 */
-#define DEFAULT_LOW_MEMORY_MODE TRUE
-#define DEFAULT_ENABLE_WATCHES TRUE
-#define DEFAULT_THROTTLE 0 /* 0->20 */
-#define DEFAULT_ENABLE_INDEXING TRUE
-#define DEFAULT_ENABLE_CONTENT_INDEXING TRUE
-#define DEFAULT_ENABLE_THUMBNAILS TRUE
-#define DEFAULT_FAST_MERGES FALSE
-#define DEFAULT_MIN_WORD_LENGTH 3 /* 0->30 */
-#define DEFAULT_MAX_WORD_LENGTH 30 /* 0->200 */
-#define DEFAULT_ENABLE_STEMMER TRUE
-#define DEFAULT_DISABLE_INDEXING_ON_BATTERY TRUE
-#define DEFAULT_DISABLE_INDEXING_ON_BATTERY_INIT FALSE
-#define DEFAULT_INDEX_MOUNTED_DIRECTORIES TRUE
-#define DEFAULT_INDEX_REMOVABLE_DEVICES TRUE
-#define DEFAULT_INDEX_EMAIL_CLIENT "evolution"
-#define DEFAULT_LOW_DISK_SPACE_LIMIT 1 /* 0->100 / -1 */
-#define DEFAULT_MAX_TEXT_TO_INDEX 1048576 /* Bytes */
-#define DEFAULT_MAX_WORDS_TO_INDEX 10000
-#define DEFAULT_OPTIMIZATION_SWEEP_COUNT 10000
-#define DEFAULT_MAX_BUCKET_COUNT 524288
-#define DEFAULT_MIN_BUCKET_COUNT 65536
-#define DEFAULT_DIVISIONS 4 /* 1->64 */
-#define DEFAULT_BUCKET_RATIO 1 /* 0=50%, 1=100%, 2=200%, 3=300%, 4=400% */
-#define DEFAULT_PADDING 2 /* 1->8 */
-#define DEFAULT_THREAD_STACK_SIZE 0 /* 0 is the default for the platform */
-
-typedef struct _ConfigLanguages ConfigLanguages;
-typedef struct _TrackerConfigPriv TrackerConfigPriv;
-
-struct _TrackerConfigPriv {
- /* General */
- gint verbosity;
- gint initial_sleep;
- gboolean low_memory_mode;
-
- /* Watches */
- GSList *watch_directory_roots;
- GSList *crawl_directory_roots;
- GSList *no_watch_directory_roots;
- gboolean enable_watches;
-
- /* Indexing */
- gint throttle;
- gboolean enable_indexing;
- gboolean enable_content_indexing;
- gboolean enable_thumbnails;
- gboolean fast_merges;
- GSList *no_index_file_types;
- gint min_word_length;
- gint max_word_length;
- gchar *language;
- gboolean enable_stemmer;
- gboolean disable_indexing_on_battery;
- gboolean disable_indexing_on_battery_init;
- gint low_disk_space_limit;
- gboolean index_mounted_directories;
- gboolean index_removable_devices;
-
- /* Emails */
- gchar *email_client;
-
- /* Performance */
- gint max_text_to_index;
- gint max_words_to_index;
- gint optimization_sweep_count;
- gint max_bucket_count;
- gint min_bucket_count;
- gint divisions;
- gint bucket_ratio;
- gint padding;
- gint thread_stack_size;
-};
-
-static void config_finalize (GObject *object);
-static void config_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec);
-static void config_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
-
-/* GObject properties */
-enum {
- PROP_0,
-
- /* General */
- PROP_VERBOSITY,
- PROP_INITIAL_SLEEP,
- PROP_LOW_MEMORY_MODE,
-
- /* Watches */
- PROP_WATCH_DIRECTORY_ROOTS,
- PROP_CRAWL_DIRECTORY_ROOTS,
- PROP_NO_WATCH_DIRECTORY_ROOTS,
- PROP_ENABLE_WATCHES,
-
- /* Indexing */
- PROP_THROTTLE,
- PROP_ENABLE_INDEXING,
- PROP_ENABLE_CONTENT_INDEXING,
- PROP_ENABLE_THUMBNAILS,
- PROP_FAST_MERGES,
- PROP_NO_INDEX_FILE_TYPES,
- PROP_MIN_WORD_LENGTH,
- PROP_MAX_WORD_LENGTH,
- PROP_LANGUAGE,
- PROP_ENABLE_STEMMER,
- PROP_DISABLE_INDEXING_ON_BATTERY,
- PROP_DISABLE_INDEXING_ON_BATTERY_INIT,
- PROP_LOW_DISK_SPACE_LIMIT,
- PROP_INDEX_MOUNTED_DIRECTORIES,
- PROP_INDEX_REMOVABLE_DEVICES,
-
- /* Emails */
- PROP_EMAIL_CLIENT,
-
- /* Performance */
- PROP_MAX_TEXT_TO_INDEX,
- PROP_MAX_WORDS_TO_INDEX,
- PROP_OPTIMIZATION_SWEEP_COUNT,
- PROP_MAX_BUCKET_COUNT,
- PROP_MIN_BUCKET_COUNT,
- PROP_DIVISIONS,
- PROP_BUCKET_RATIO,
- PROP_PADDING,
- PROP_THREAD_STACK_SIZE
-};
-
-G_DEFINE_TYPE (TrackerConfig, tracker_config, G_TYPE_OBJECT);
-
-static void
-tracker_config_class_init (TrackerConfigClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = config_finalize;
- object_class->get_property = config_get_property;
- object_class->set_property = config_set_property;
-
- /* General */
- g_object_class_install_property (object_class,
- PROP_VERBOSITY,
- g_param_spec_int ("verbosity",
- "Log verbosity",
- "How much logging we have "
- "(0=errors, 1=minimal, 2=detailed, 3=debug)",
- 0,
- 3,
- DEFAULT_VERBOSITY,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_INITIAL_SLEEP,
- g_param_spec_int ("initial-sleep",
- "Initial sleep",
- "Initial sleep time in seconds "
- "(0->1000)",
- 0,
- 1000,
- DEFAULT_INITIAL_SLEEP,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_LOW_MEMORY_MODE,
- g_param_spec_boolean ("low-memory-mode",
- "Use extra memory",
- "Use extra memory at the "
- "expense of indexing speed",
- DEFAULT_LOW_MEMORY_MODE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- /* Watches */
- g_object_class_install_property (object_class,
- PROP_WATCH_DIRECTORY_ROOTS,
- g_param_spec_pointer ("watch-directory-roots",
- "Watched directory roots",
- "This is a GSList of directory roots "
- "to index and watch",
- G_PARAM_READABLE));
- g_object_class_install_property (object_class,
- PROP_CRAWL_DIRECTORY_ROOTS,
- g_param_spec_pointer ("crawl-directory-roots",
- "Crawl directory roots",
- "This is a GSList of directory roots "
- "to index but NOT watch",
- G_PARAM_READABLE));
- g_object_class_install_property (object_class,
- PROP_NO_WATCH_DIRECTORY_ROOTS,
- g_param_spec_pointer ("no-watch-directory-roots",
- "Not watched directory roots",
- "This is a GSList of directory roots "
- "to NOT index and NOT watch",
- G_PARAM_READABLE));
- g_object_class_install_property (object_class,
- PROP_ENABLE_WATCHES,
- g_param_spec_boolean ("enable-watches",
- "Enable watches",
- "You can disable all watches "
- "by setting this FALSE",
- DEFAULT_ENABLE_WATCHES,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- /* Indexing */
- g_object_class_install_property (object_class,
- PROP_THROTTLE,
- g_param_spec_int ("throttle",
- "Throttle",
- "Throttle indexing, higher value "
- "is slower (0->20)",
- 0,
- 20,
- DEFAULT_THROTTLE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_ENABLE_INDEXING,
- g_param_spec_boolean ("enable-indexing",
- "Enable indexing",
- "All indexing",
- DEFAULT_ENABLE_INDEXING,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_ENABLE_CONTENT_INDEXING,
- g_param_spec_boolean ("enable-content-indexing",
- "Enable content indexing",
- "Content specific indexing "
- "(i.e. file content)",
- DEFAULT_ENABLE_CONTENT_INDEXING,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_ENABLE_THUMBNAILS,
- g_param_spec_boolean ("enable-thumbnails",
- "Enable thumbnails",
- "Create thumbnails from image based files",
- DEFAULT_ENABLE_THUMBNAILS,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_FAST_MERGES,
- g_param_spec_boolean ("fast-merges",
- "Fast merges",
- "Spends more disk usage if TRUE",
- DEFAULT_FAST_MERGES,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_NO_INDEX_FILE_TYPES,
- g_param_spec_pointer ("no-index-file-types",
- "File types to not index",
- "This is a GSList of file types "
- "to NOT index",
- G_PARAM_READABLE));
- g_object_class_install_property (object_class,
- PROP_MIN_WORD_LENGTH,
- g_param_spec_int ("min-word-length",
- "Minimum word length",
- "Minimum word length used to index "
- "(0->30)",
- 0,
- 30,
- DEFAULT_MIN_WORD_LENGTH,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_MAX_WORD_LENGTH,
- g_param_spec_int ("max-word-length",
- "Maximum word length",
- "Maximum word length used to index",
- 0,
- 200, /* Is this a reasonable limit? */
- DEFAULT_MAX_WORD_LENGTH,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_LANGUAGE,
- g_param_spec_string ("language",
- "Language",
- "Language to use with stemming "
- "('en', 'fr', 'sv', etc)",
- "en",
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_ENABLE_STEMMER,
- g_param_spec_boolean ("enable-stemmer",
- "Enable stemmer",
- "Language specific stemmer",
- DEFAULT_ENABLE_STEMMER,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_DISABLE_INDEXING_ON_BATTERY,
- g_param_spec_boolean ("disable-indexing-on-battery",
- "Disable indexing on battery",
- "Don't index when using AC battery",
- DEFAULT_DISABLE_INDEXING_ON_BATTERY,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_DISABLE_INDEXING_ON_BATTERY_INIT,
- g_param_spec_boolean ("disable-indexing-on-battery-init",
- "Disable indexing on battery",
- "Don't index when using AC "
- "battery initially",
- DEFAULT_DISABLE_INDEXING_ON_BATTERY_INIT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_LOW_DISK_SPACE_LIMIT,
- g_param_spec_int ("low-disk-space-limit",
- "Low disk space limit",
- "Pause the indexer when the "
- "disk space is below this percentage "
- "(-1=off, 0->100)",
- -1,
- 100,
- DEFAULT_LOW_DISK_SPACE_LIMIT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_INDEX_MOUNTED_DIRECTORIES,
- g_param_spec_boolean ("index-mounted-directories",
- "Index mounted directories",
- "Don't traverse mounted directories "
- "which are not on the same file system",
- DEFAULT_INDEX_MOUNTED_DIRECTORIES,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_INDEX_REMOVABLE_DEVICES,
- g_param_spec_boolean ("index-removable-devices",
- "index removable devices",
- "Don't traverse mounted directories "
- "which are for removable devices",
- DEFAULT_INDEX_REMOVABLE_DEVICES,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- /* Emails */
- g_object_class_install_property (object_class,
- PROP_EMAIL_CLIENT,
- g_param_spec_string ("email-client",
- "Email client",
- "Email client to index",
- DEFAULT_INDEX_EMAIL_CLIENT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- /* Performance */
- g_object_class_install_property (object_class,
- PROP_MAX_TEXT_TO_INDEX,
- g_param_spec_int ("max-text-to-index",
- "Maximum text to index",
- "Maximum text in bytes to index "
- "from file's content",
- 0,
- G_MAXINT,
- DEFAULT_MAX_TEXT_TO_INDEX,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_MAX_TEXT_TO_INDEX,
- g_param_spec_int ("max-words-to-index",
- "Maximum words to index",
- "Maximum unique words to index "
- "from file's content",
- 0,
- G_MAXINT,
- DEFAULT_MAX_WORDS_TO_INDEX,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_OPTIMIZATION_SWEEP_COUNT,
- g_param_spec_int ("optimization-sweep-count",
- "Optimization Sweep Count",
- "Number of entities to index "
- "before deciding to try to optimize "
- "(1000->10000)",
- 1000,
- G_MAXINT,
- DEFAULT_OPTIMIZATION_SWEEP_COUNT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_MAX_BUCKET_COUNT,
- g_param_spec_int ("max-bucket-count",
- "Maximum bucket count",
- "Maximum bucket count (1000->524288)",
- 1000,
- G_MAXINT, /* FIXME: Is this reasonable? */
- DEFAULT_MAX_BUCKET_COUNT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_MIN_BUCKET_COUNT,
- g_param_spec_int ("min-bucket-count",
- "Minimum bucket count",
- "Minimum bucket count (1000->65536)",
- 1000,
- G_MAXINT,
- DEFAULT_MIN_BUCKET_COUNT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_DIVISIONS,
- g_param_spec_int ("divisions",
- "Divisions",
- "Number of divisions of the index file (1->64)",
- 1,
- 64,
- DEFAULT_DIVISIONS,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_BUCKET_RATIO,
- g_param_spec_int ("bucket-ratio",
- "Bucket Ratio",
- "Number of used records to buckets ratio "
- "when optimizing the index "
- "(0=50%, 1=100%, 2=200%, 3=300%, 4=400%)",
- 0,
- 4,
- DEFAULT_BUCKET_RATIO,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_PADDING,
- g_param_spec_int ("padding",
- "Padding",
- "How much space is used to prevent "
- "index relocations, higher values use "
- "more disk space (1->8)",
- 1,
- 8,
- DEFAULT_PADDING,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_THREAD_STACK_SIZE,
- g_param_spec_int ("thread-stack-size",
- "Thread stack size",
- "Thread stack size to use inside tracker. "
- "Use this carefully, as it may lead to misterious crashes. "
- "The default is 0, which uses the default for the platform.",
- 0, G_MAXINT,
- DEFAULT_THREAD_STACK_SIZE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_type_class_add_private (object_class, sizeof (TrackerConfigPriv));
-}
-
-static void
-tracker_config_init (TrackerConfig *config)
-{
-}
-
-static void
-config_finalize (GObject *object)
-{
- TrackerConfigPriv *priv;
-
- priv = GET_PRIV (object);
-
- (G_OBJECT_CLASS (tracker_config_parent_class)->finalize) (object);
-}
-
-static void
-config_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TrackerConfigPriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- /* General */
- case PROP_VERBOSITY:
- g_value_set_int (value, priv->verbosity);
- break;
- case PROP_INITIAL_SLEEP:
- g_value_set_int (value, priv->initial_sleep);
- break;
- case PROP_LOW_MEMORY_MODE:
- g_value_set_boolean (value, priv->low_memory_mode);
- break;
-
- /* Watches */
- case PROP_WATCH_DIRECTORY_ROOTS:
- g_value_set_pointer (value, priv->watch_directory_roots);
- break;
- case PROP_CRAWL_DIRECTORY_ROOTS:
- g_value_set_pointer (value, priv->crawl_directory_roots);
- break;
- case PROP_NO_WATCH_DIRECTORY_ROOTS:
- g_value_set_pointer (value, priv->no_watch_directory_roots);
- break;
- case PROP_ENABLE_WATCHES:
- g_value_set_boolean (value, priv->enable_watches);
- break;
-
- /* Indexing */
- case PROP_THROTTLE:
- g_value_set_int (value, priv->throttle);
- break;
- case PROP_ENABLE_INDEXING:
- g_value_set_boolean (value, priv->enable_indexing);
- break;
- case PROP_ENABLE_CONTENT_INDEXING:
- g_value_set_boolean (value, priv->enable_content_indexing);
- break;
- case PROP_ENABLE_THUMBNAILS:
- g_value_set_boolean (value, priv->enable_thumbnails);
- break;
- case PROP_FAST_MERGES:
- g_value_set_boolean (value, priv->fast_merges);
- break;
- case PROP_NO_INDEX_FILE_TYPES:
- g_value_set_pointer (value, priv->no_index_file_types);
- break;
- case PROP_MIN_WORD_LENGTH:
- g_value_set_int (value, priv->min_word_length);
- break;
- case PROP_MAX_WORD_LENGTH:
- g_value_set_int (value, priv->max_word_length);
- break;
- case PROP_LANGUAGE:
- g_value_set_string (value, priv->language);
- break;
- case PROP_ENABLE_STEMMER:
- g_value_set_boolean (value, priv->enable_stemmer);
- break;
- case PROP_DISABLE_INDEXING_ON_BATTERY:
- g_value_set_boolean (value, priv->disable_indexing_on_battery);
- break;
- case PROP_DISABLE_INDEXING_ON_BATTERY_INIT:
- g_value_set_boolean (value, priv->disable_indexing_on_battery_init);
- break;
- case PROP_LOW_DISK_SPACE_LIMIT:
- g_value_set_int (value, priv->low_disk_space_limit);
- break;
- case PROP_INDEX_MOUNTED_DIRECTORIES:
- g_value_set_boolean (value, priv->index_mounted_directories);
- break;
- case PROP_INDEX_REMOVABLE_DEVICES:
- g_value_set_boolean (value, priv->index_removable_devices);
- break;
-
- /* Emails */
- case PROP_EMAIL_CLIENT:
- g_value_set_string (value, priv->email_client);
- break;
-
- /* Performance */
- case PROP_MAX_TEXT_TO_INDEX:
- g_value_set_int (value, priv->max_text_to_index);
- break;
- case PROP_MAX_WORDS_TO_INDEX:
- g_value_set_int (value, priv->max_words_to_index);
- break;
- case PROP_OPTIMIZATION_SWEEP_COUNT:
- g_value_set_int (value, priv->optimization_sweep_count);
- break;
- case PROP_MAX_BUCKET_COUNT:
- g_value_set_int (value, priv->max_bucket_count);
- break;
- case PROP_MIN_BUCKET_COUNT:
- g_value_set_int (value, priv->min_bucket_count);
- break;
- case PROP_DIVISIONS:
- g_value_set_int (value, priv->divisions);
- break;
- case PROP_BUCKET_RATIO:
- g_value_set_int (value, priv->bucket_ratio);
- break;
- case PROP_PADDING:
- g_value_set_int (value, priv->padding);
- break;
- case PROP_THREAD_STACK_SIZE:
- g_value_set_int (value, priv->thread_stack_size);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static void
-config_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TrackerConfigPriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- /* General */
- case PROP_VERBOSITY:
- tracker_config_set_verbosity (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_INITIAL_SLEEP:
- tracker_config_set_initial_sleep (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_LOW_MEMORY_MODE:
- tracker_config_set_low_memory_mode (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
-
- /* Watches */
- case PROP_WATCH_DIRECTORY_ROOTS: /* Not writable */
- case PROP_CRAWL_DIRECTORY_ROOTS: /* Not writable */
- case PROP_NO_WATCH_DIRECTORY_ROOTS: /* Not writable */
- break;
- case PROP_ENABLE_WATCHES:
- tracker_config_set_enable_watches (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
-
- /* Indexing */
- case PROP_THROTTLE:
- tracker_config_set_throttle (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_ENABLE_INDEXING:
- tracker_config_set_enable_indexing (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_ENABLE_CONTENT_INDEXING:
- tracker_config_set_enable_content_indexing (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_ENABLE_THUMBNAILS:
- tracker_config_set_enable_thumbnails (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_FAST_MERGES:
- tracker_config_set_fast_merges (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_NO_INDEX_FILE_TYPES: /* Not writable */
- break;
- case PROP_MIN_WORD_LENGTH:
- tracker_config_set_min_word_length (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_MAX_WORD_LENGTH:
- tracker_config_set_max_word_length (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_LANGUAGE:
- tracker_config_set_language (TRACKER_CONFIG (object),
- g_value_get_string (value));
- break;
- case PROP_ENABLE_STEMMER:
- tracker_config_set_enable_stemmer (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_DISABLE_INDEXING_ON_BATTERY:
- tracker_config_set_disable_indexing_on_battery (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_DISABLE_INDEXING_ON_BATTERY_INIT:
- tracker_config_set_disable_indexing_on_battery_init (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_LOW_DISK_SPACE_LIMIT:
- tracker_config_set_low_disk_space_limit (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_INDEX_MOUNTED_DIRECTORIES:
- tracker_config_set_index_mounted_directories (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
- case PROP_INDEX_REMOVABLE_DEVICES:
- tracker_config_set_index_removable_devices (TRACKER_CONFIG (object),
- g_value_get_boolean (value));
- break;
-
- /* Emails */
- case PROP_EMAIL_CLIENT:
- tracker_config_set_email_client (TRACKER_CONFIG (object),
- g_value_get_string (value));
- break;
-
- /* Performance */
- case PROP_MAX_TEXT_TO_INDEX:
- tracker_config_set_max_text_to_index (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_MAX_WORDS_TO_INDEX:
- tracker_config_set_max_words_to_index (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_OPTIMIZATION_SWEEP_COUNT:
- tracker_config_set_optimization_sweep_count (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_MAX_BUCKET_COUNT:
- tracker_config_set_max_bucket_count (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_MIN_BUCKET_COUNT:
- tracker_config_set_min_bucket_count (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_DIVISIONS:
- tracker_config_set_divisions (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_BUCKET_RATIO:
- tracker_config_set_bucket_ratio (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_PADDING:
- tracker_config_set_padding (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- case PROP_THREAD_STACK_SIZE:
- tracker_config_set_thread_stack_size (TRACKER_CONFIG (object),
- g_value_get_int (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static gchar *
-config_dir_ensure_exists_and_return (void)
-{
- gchar *directory;
-
- directory = g_build_filename (g_get_user_config_dir (),
- "tracker",
- NULL);
-
- if (!g_file_test (directory, G_FILE_TEST_EXISTS)) {
- g_print ("Creating config directory:'%s'\n", directory);
-
- if (g_mkdir_with_parents (directory, 0700) == -1) {
- g_warning ("Could not create configuration directory");
- g_free (directory);
- return NULL;
- }
- }
-
- return directory;
-}
-
-static gchar *
-config_dir_validate_name (const gchar *original_path)
-{
- gchar resolved_path[PATH_MAX + 2];
-
- if (!original_path || original_path[0] == '\0') {
- return NULL;
- }
-
- if (original_path[0] == '~') {
- const char *home = g_get_home_dir ();
-
- if (!home || home[0] == '\0') {
- return NULL;
- }
-
- return g_build_path (G_DIR_SEPARATOR_S,
- home,
- original_path + 1,
- NULL);
- }
-
- return g_strdup (realpath (original_path, resolved_path));
-}
-
-static gboolean
-config_dir_is_child_of (const char *dir,
- const char *dir_to_test)
-{
- gchar *path;
- gboolean result;
-
- if (!dir_to_test) {
- return FALSE;
- }
-
- if (dir[strlen (dir)-1] != '/') {
- path = g_strconcat (dir, "/", NULL);
- } else {
- path = g_strdup (dir);
- }
-
- result = g_str_has_prefix (dir_to_test, path);
- g_free (path);
-
- return result;
-}
-
-static void
-config_dir_check_roots_for_conflicts (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
- GSList *final_list = NULL;
- GSList *l1, *l2;
-
- priv = GET_PRIV (config);
-
- for (l1 = priv->watch_directory_roots; l1; l1 = l1->next) {
- gboolean add = TRUE;
-
- if (!final_list) {
- final_list = g_slist_prepend (NULL, l1->data);
- continue;
- }
-
- for (l2 = final_list; l2 && add; l2 = l2->next) {
- if (!l2->data) {
- continue;
- }
-
- /* Is new directory a child of another in
- * current list already?
- */
- if (config_dir_is_child_of (l2->data, l1->data)) {
- add = FALSE;
- continue;
- }
-
- /* Is current directory a child of the new
- * directory we are adding?
- */
- if (config_dir_is_child_of (l1->data, l2->data)) {
- l2->data = NULL;
- }
- }
-
- if (add) {
- final_list = g_slist_prepend (final_list, l1->data);
- }
- }
-
- g_slist_free (priv->watch_directory_roots);
- priv->watch_directory_roots = NULL;
-
- for (l1 = final_list; l1; l1 = l1->next) {
- gchar *root;
-
- root = l1->data;
-
- if (!root || root[0] != G_DIR_SEPARATOR) {
- continue;
- }
-
- priv->watch_directory_roots =
- g_slist_prepend (priv->watch_directory_roots, root);
- }
-
- priv->watch_directory_roots = g_slist_reverse (priv->watch_directory_roots);
- g_slist_free (final_list);
-}
-
-static gboolean
-config_create_with_defaults (const gchar *filename)
-{
- GKeyFile *key_file;
- GError *error = NULL;
- gchar *content = NULL;
- gchar *language;
- const gchar *watch_directory_roots[2] = { NULL, NULL };
- const gchar *empty_string_list[] = { NULL };
-
- key_file = g_key_file_new ();
-
- /* Get default values */
- language = tracker_language_get_default_code ();
-
- watch_directory_roots[0] = g_get_home_dir ();
-
- /* General */
- g_key_file_set_integer (key_file, GROUP_GENERAL, KEY_VERBOSITY, DEFAULT_VERBOSITY);
- g_key_file_set_comment (key_file, GROUP_GENERAL, KEY_VERBOSITY,
- " Log Verbosity (0=errors, 1=minimal, 2=detailed, 3=debug)",
- NULL);
- g_key_file_set_integer (key_file, GROUP_GENERAL, KEY_INITIAL_SLEEP, DEFAULT_INITIAL_SLEEP);
- g_key_file_set_comment (key_file, GROUP_GENERAL, KEY_INITIAL_SLEEP,
- " Initial sleep time in seconds (0->1000)",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_GENERAL, KEY_LOW_MEMORY_MODE, DEFAULT_LOW_MEMORY_MODE);
- g_key_file_set_comment (key_file, GROUP_GENERAL, KEY_LOW_MEMORY_MODE,
- " Minimizes memory use at the expense of indexing speed",
- NULL);
-
- /* Watches */
- g_key_file_set_string_list (key_file, GROUP_WATCHES, KEY_WATCH_DIRECTORY_ROOTS,
- watch_directory_roots, 1);
- g_key_file_set_comment (key_file, GROUP_WATCHES, KEY_WATCH_DIRECTORY_ROOTS,
- " List of directory roots to index and watch (separator=;)",
- NULL);
- g_key_file_set_string_list (key_file, GROUP_WATCHES, KEY_CRAWL_DIRECTORY_ROOTS,
- empty_string_list, 0);
- g_key_file_set_comment (key_file, GROUP_WATCHES, KEY_CRAWL_DIRECTORY_ROOTS,
- " List of directory roots to index but NOT watch (separator=;)",
- NULL);
- g_key_file_set_string_list (key_file, GROUP_WATCHES, KEY_NO_WATCH_DIRECTORY_ROOTS,
- empty_string_list, 0);
- g_key_file_set_comment (key_file, GROUP_WATCHES, KEY_NO_WATCH_DIRECTORY_ROOTS,
- " List of directory roots NOT to index and NOT to watch (separator=;)",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_WATCHES, KEY_ENABLE_WATCHES, DEFAULT_ENABLE_WATCHES);
- g_key_file_set_comment (key_file, GROUP_WATCHES, KEY_ENABLE_WATCHES,
- " Set to false to completely disable any watching",
- NULL);
-
- /* Indexing */
- g_key_file_set_integer (key_file, GROUP_INDEXING, KEY_THROTTLE, DEFAULT_THROTTLE);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_THROTTLE,
- " Sets the indexing speed (0->20, where 20=slowest speed)",
- NULL);
-
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_ENABLE_INDEXING, DEFAULT_ENABLE_INDEXING);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_ENABLE_INDEXING,
- " Set to false to completely disable any indexing",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_ENABLE_CONTENT_INDEXING, DEFAULT_ENABLE_CONTENT_INDEXING);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_ENABLE_CONTENT_INDEXING,
- " Set to false to completely disable file content indexing",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_ENABLE_THUMBNAILS, DEFAULT_ENABLE_THUMBNAILS);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_ENABLE_THUMBNAILS,
- " Set to false to completely disable thumbnail generation",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_FAST_MERGES, DEFAULT_FAST_MERGES);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_FAST_MERGES,
- " Set to false to NOT hog the disk for extended periods",
- NULL);
- g_key_file_set_string_list (key_file, GROUP_INDEXING, KEY_NO_INDEX_FILE_TYPES,
- empty_string_list, 0);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_NO_INDEX_FILE_TYPES,
- " List of partial file pattern globs (separator=;)\n"
- " This is for files to NOT index\n"
- " (basic stat info is only extended for files that match the patterns)",
- NULL);
- g_key_file_set_integer (key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH, DEFAULT_MIN_WORD_LENGTH);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH,
- " Set the minimum length of words to index (0->30, default=3)",
- NULL);
- g_key_file_set_integer (key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH, DEFAULT_MAX_WORD_LENGTH);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH,
- " Set the maximum length of words to index (0->200, default=30)",
- NULL);
- g_key_file_set_string (key_file, GROUP_INDEXING, KEY_LANGUAGE, language);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_LANGUAGE,
- " Set the language specific stemmer and stopword list to use\n"
- " Values include:\n"
- " - en (English)\n"
- " - da (Danish)\n"
- " - nl (Dutch)\n"
- " - fi (Finish)\n"
- " - fr (French)\n"
- " - de (German)\n"
- " - it (Italian)\n"
- " - nb (Norwegian)\n"
- " - pt (Portuguese)\n"
- " - ru (Russian)\n"
- " - es (Spanish)\n"
- " - sv (Swedish)",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_ENABLE_STEMMER, DEFAULT_ENABLE_STEMMER);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_ENABLE_STEMMER,
- " Set to false to disable language specific stemmer",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_DISABLE_INDEXING_ON_BATTERY, DEFAULT_DISABLE_INDEXING_ON_BATTERY);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_DISABLE_INDEXING_ON_BATTERY,
- " Set to true to disable indexing when running on battery",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_DISABLE_INDEXING_ON_BATTERY_INIT, DEFAULT_DISABLE_INDEXING_ON_BATTERY_INIT);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_DISABLE_INDEXING_ON_BATTERY_INIT,
- " Set to true to disable initial indexing when running on battery",
- NULL);
- g_key_file_set_integer (key_file, GROUP_INDEXING, KEY_LOW_DISK_SPACE_LIMIT, DEFAULT_LOW_DISK_SPACE_LIMIT);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_LOW_DISK_SPACE_LIMIT,
- " Pause indexer when disk space is <= this value\n"
- " (0->100, value is in % of $HOME file system, -1=disable pausing)",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_INDEX_MOUNTED_DIRECTORIES, DEFAULT_INDEX_MOUNTED_DIRECTORIES);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_INDEX_MOUNTED_DIRECTORIES,
- " Set to true to enable traversing mounted directories on other file systems\n"
- " (this excludes removable devices)",
- NULL);
- g_key_file_set_boolean (key_file, GROUP_INDEXING, KEY_INDEX_REMOVABLE_DEVICES, DEFAULT_INDEX_REMOVABLE_DEVICES);
- g_key_file_set_comment (key_file, GROUP_INDEXING, KEY_INDEX_REMOVABLE_DEVICES,
- " Set to true to enable traversing mounted directories for removable devices",
- NULL);
-
- /* Emails */
- g_key_file_set_string (key_file, GROUP_EMAILS, KEY_EMAIL_CLIENT, DEFAULT_INDEX_EMAIL_CLIENT);
-
- /* Performance */
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_MAX_TEXT_TO_INDEX, DEFAULT_MAX_TEXT_TO_INDEX);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_MAX_TEXT_TO_INDEX,
- " Maximum text size in bytes to index from a file's content",
- NULL);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX, DEFAULT_MAX_WORDS_TO_INDEX);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX,
- " Maximum unique words to index from a file's content",
- NULL);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_OPTIMIZATION_SWEEP_COUNT, DEFAULT_OPTIMIZATION_SWEEP_COUNT);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_OPTIMIZATION_SWEEP_COUNT,
- " Number of entities to index before deciding to trying to optimize"
- " (1000->10000)",
- NULL);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_MAX_BUCKET_COUNT, DEFAULT_MAX_BUCKET_COUNT);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_MIN_BUCKET_COUNT, DEFAULT_MIN_BUCKET_COUNT);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_DIVISIONS, DEFAULT_DIVISIONS);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_DIVISIONS,
- " Number of divisions of the index file (1->64, default=4)",
- NULL);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_BUCKET_RATIO, DEFAULT_BUCKET_RATIO);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_BUCKET_RATIO,
- " Number of used records to buckets ratio when optimising the index.\n"
- " (0=50%, 1=100%, 2=200%, 3=300%, 4=400%)",
- NULL);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_PADDING, DEFAULT_PADDING);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_PADDING,
- " How much space is used to prevent index relocations.\n"
- " Higher values improve indexing speed but waste more disk space.\n"
- " Values should be between 1 and 8.",
- NULL);
- g_key_file_set_integer (key_file, GROUP_PERFORMANCE, KEY_THREAD_STACK_SIZE, DEFAULT_THREAD_STACK_SIZE);
- g_key_file_set_comment (key_file, GROUP_PERFORMANCE, KEY_THREAD_STACK_SIZE,
- " Stack size to use in threads inside Tracker.\n"
- " Use this carefully, or expect misterious crashes.\n"
- " 0 uses the default stack size for this platform",
- NULL);
-
- content = g_key_file_to_data (key_file, NULL, &error);
- g_free (language);
- g_key_file_free (key_file);
-
- if (error) {
- g_warning ("Couldn't produce default configuration, %s", error->message);
- g_clear_error (&error);
- return FALSE;
- }
-
- if (!g_file_set_contents (filename, content, -1, &error)) {
- g_warning ("Couldn't write default configuration, %s", error->message);
- g_clear_error (&error);
- g_free (content);
- return FALSE;
- }
-
- g_print ("Writting default configuration to file:'%s'\n", filename);
- g_free (content);
-
- return TRUE;
-}
-
-static GSList *
-config_string_list_to_gslist (const gchar **value,
- gboolean is_directory_list)
-{
- GSList *list = NULL;
- gint i;
-
- for (i = 0; value[i]; i++) {
- const gchar *str;
- gchar *validated;
-
- str = value[i];
- if (!str || str[0] == '\0') {
- continue;
- }
-
- if (!is_directory_list) {
- list = g_slist_prepend (list, g_strdup (str));
- continue;
- }
-
- /* For directories we validate any special characters,
- * for example '~' and '../../'
- */
- validated = config_dir_validate_name (str);
- if (validated) {
- list = g_slist_prepend (list, validated);
- }
- }
-
- return g_slist_reverse (list);
-}
-
-static void
-config_load_int (TrackerConfig *config,
- const gchar *property,
- GKeyFile *key_file,
- const gchar *group,
- const gchar *key)
-{
- GError *error = NULL;
- gint value;
-
- value = g_key_file_get_integer (key_file, group, key, &error);
- if (!error) {
- g_object_set (G_OBJECT (config), property, value, NULL);
- } else {
- g_clear_error (&error);
- }
-}
-
-static void
-config_load_boolean (TrackerConfig *config,
- const gchar *property,
- GKeyFile *key_file,
- const gchar *group,
- const gchar *key)
-{
- GError *error = NULL;
- gboolean value;
-
- value = g_key_file_get_boolean (key_file, group, key, &error);
- if (!error) {
- g_object_set (G_OBJECT (config), property, value, NULL);
- } else {
- g_clear_error (&error);
- }
-}
-
-static void
-config_load_string (TrackerConfig *config,
- const gchar *property,
- GKeyFile *key_file,
- const gchar *group,
- const gchar *key)
-{
- GError *error = NULL;
- gchar *value;
-
- value = g_key_file_get_string (key_file, group, key, &error);
- if (!error) {
- g_object_set (G_OBJECT (config), property, value, NULL);
- } else {
- g_clear_error (&error);
- }
-
- g_free (value);
-}
-
-static void
-config_load_string_list (TrackerConfig *config,
- const gchar *property,
- GKeyFile *key_file,
- const gchar *group,
- const gchar *key)
-{
- TrackerConfigPriv *priv;
- gchar **value;
-
- priv = GET_PRIV (config);
-
- value = g_key_file_get_string_list (key_file, group, key, NULL, NULL);
-
- if (strcmp (property, "watch-directory-roots") == 0) {
- if (!value) {
- priv->watch_directory_roots =
- g_slist_prepend (NULL, g_strdup (g_get_home_dir ()));
- } else {
- priv->watch_directory_roots =
- config_string_list_to_gslist ((const gchar **) value, TRUE);
- }
-
- /* We only do this for watch directory roots right now, not
- * sure why.
- */
- config_dir_check_roots_for_conflicts (config);
- }
- else if (strcmp (property, "crawl-directory-roots") == 0) {
- if (value) {
- priv->crawl_directory_roots =
- config_string_list_to_gslist ((const gchar **) value, TRUE);
- }
- }
- else if (strcmp (property, "no-watch-directory-roots") == 0) {
- if (value) {
- priv->no_watch_directory_roots =
- config_string_list_to_gslist ((const gchar **) value, TRUE);
- }
- }
- else if (strcmp (property, "no-index-file-types") == 0) {
- if (value) {
- priv->no_index_file_types =
- config_string_list_to_gslist ((const gchar **) value, FALSE);
- }
- }
- else {
- g_warning ("Property '%s' not recognized to set string list from key '%s'",
- property, key);
- }
-
- g_strfreev (value);
-}
-
-static void
-config_load (TrackerConfig *config)
-{
- GKeyFile *key_file;
- GError *error = NULL;
- gchar *filename;
- gchar *directory;
-
- key_file = g_key_file_new ();
-
- /* Check we have a config file and if not, create it based on
- * the default settings.
- */
- directory = config_dir_ensure_exists_and_return ();
- if (!directory) {
- return;
- }
-
- filename = g_build_filename (directory, "tracker.cfg", NULL);
- g_free (directory);
-
- /* Load options */
- g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, &error);
- if (error) {
- config_create_with_defaults (filename);
- g_clear_error (&error);
- }
-
- g_free (filename);
-
- /* General */
- config_load_int (config, "verbosity", key_file, GROUP_GENERAL, KEY_VERBOSITY);
- config_load_int (config, "initial-sleep", key_file, GROUP_GENERAL, KEY_INITIAL_SLEEP);
- config_load_boolean (config, "low-memory-mode", key_file, GROUP_GENERAL, KEY_LOW_MEMORY_MODE);
-
- /* Watches */
- config_load_string_list (config, "watch-directory-roots", key_file, GROUP_WATCHES, KEY_WATCH_DIRECTORY_ROOTS);
- config_load_string_list (config, "crawl-directory-roots", key_file, GROUP_WATCHES, KEY_CRAWL_DIRECTORY_ROOTS);
- config_load_string_list (config, "no-watch-directory-roots", key_file, GROUP_WATCHES, KEY_NO_WATCH_DIRECTORY_ROOTS);
- config_load_boolean (config, "enable-watches", key_file, GROUP_WATCHES, KEY_ENABLE_WATCHES);
-
- /* Indexing */
- config_load_int (config, "throttle", key_file, GROUP_INDEXING, KEY_THROTTLE);
- config_load_boolean (config, "enable-indexing", key_file, GROUP_INDEXING, KEY_ENABLE_INDEXING);
- config_load_boolean (config, "enable-content-indexing", key_file, GROUP_INDEXING, KEY_ENABLE_CONTENT_INDEXING);
- config_load_boolean (config, "enable-thumbnails", key_file, GROUP_INDEXING, KEY_ENABLE_THUMBNAILS);
- config_load_boolean (config, "fast-merges", key_file, GROUP_INDEXING, KEY_FAST_MERGES);
- config_load_string_list (config, "no-index-file-types", key_file, GROUP_INDEXING, KEY_NO_INDEX_FILE_TYPES);
- config_load_int (config, "min-word-length", key_file, GROUP_INDEXING, KEY_MIN_WORD_LENGTH);
- config_load_int (config, "max-word-length", key_file, GROUP_INDEXING, KEY_MAX_WORD_LENGTH);
- config_load_string (config, "language", key_file, GROUP_INDEXING, KEY_LANGUAGE);
- config_load_boolean (config, "enable-stemmer", key_file, GROUP_INDEXING, KEY_ENABLE_STEMMER);
- config_load_boolean (config, "disable-indexing-on-battery", key_file, GROUP_INDEXING, KEY_DISABLE_INDEXING_ON_BATTERY);
- config_load_boolean (config, "disable-indexing-on-battery-init", key_file, GROUP_INDEXING, KEY_DISABLE_INDEXING_ON_BATTERY_INIT);
- config_load_int (config, "low-disk-space-limit", key_file, GROUP_INDEXING, KEY_LOW_DISK_SPACE_LIMIT);
- config_load_boolean (config, "index-mounted-directories", key_file, GROUP_INDEXING, KEY_INDEX_MOUNTED_DIRECTORIES);
- config_load_boolean (config, "index-removable-devices", key_file, GROUP_INDEXING, KEY_INDEX_REMOVABLE_DEVICES);
-
- /* Emails */
- config_load_string (config, "email-client", key_file, GROUP_EMAILS, KEY_EMAIL_CLIENT);
-
- /* Performance */
- config_load_int (config, "max-text-to-index", key_file, GROUP_PERFORMANCE, KEY_MAX_TEXT_TO_INDEX);
- config_load_int (config, "max-words-to-index", key_file, GROUP_PERFORMANCE, KEY_MAX_WORDS_TO_INDEX);
- config_load_int (config, "optimization-sweep-count", key_file, GROUP_PERFORMANCE, KEY_OPTIMIZATION_SWEEP_COUNT);
- config_load_int (config, "max-bucket-count", key_file, GROUP_PERFORMANCE, KEY_MAX_BUCKET_COUNT);
- config_load_int (config, "min-bucket-count", key_file, GROUP_PERFORMANCE, KEY_MIN_BUCKET_COUNT);
- config_load_int (config, "divisions", key_file, GROUP_PERFORMANCE, KEY_DIVISIONS);
- config_load_int (config, "bucket-ratio", key_file, GROUP_PERFORMANCE, KEY_BUCKET_RATIO);
- config_load_int (config, "padding", key_file, GROUP_PERFORMANCE, KEY_PADDING);
- config_load_int (config, "thread-stack-size", key_file, GROUP_PERFORMANCE, KEY_THREAD_STACK_SIZE);
-
- g_key_file_free (key_file);
-}
-
-static gboolean
-config_int_validate (TrackerConfig *config,
- const gchar *property,
- gint value)
-{
-#ifdef G_DISABLE_CHECKS
- GParamSpec *spec;
- GValue value = { 0 };
- gboolean valid;
-
- spec = g_object_class_find_property (G_OBJECT_CLASS (config), property);
- g_return_val_if_fail (spec != NULL, FALSE);
-
- g_value_init (&value, spec->value_type);
- g_value_set_int (&value, verbosity);
- valid = g_param_value_validate (spec, &value);
- g_value_unset (&value);
-
- g_return_val_if_fail (valid != TRUE, FALSE);
-#endif
-
- return TRUE;
-}
-
-TrackerConfig *
-tracker_config_new (void)
-{
- TrackerConfig *config;
-
- config = g_object_new (TRACKER_TYPE_CONFIG, NULL);
- config_load (config);
-
- return config;
-}
-
-gint
-tracker_config_get_verbosity (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_VERBOSITY);
-
- priv = GET_PRIV (config);
-
- return priv->verbosity;
-}
-
-gint
-tracker_config_get_initial_sleep (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_INITIAL_SLEEP);
-
- priv = GET_PRIV (config);
-
- return priv->initial_sleep;
-}
-
-gboolean
-tracker_config_get_low_memory_mode (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_LOW_MEMORY_MODE);
-
- priv = GET_PRIV (config);
-
- return priv->low_memory_mode;
-}
-
-GSList *
-tracker_config_get_watch_directory_roots (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
-
- priv = GET_PRIV (config);
-
- return priv->watch_directory_roots;
-}
-
-GSList *
-tracker_config_get_crawl_directory_roots (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
-
- priv = GET_PRIV (config);
-
- return priv->crawl_directory_roots;
-}
-
-GSList *
-tracker_config_get_no_watch_directory_roots (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
-
- priv = GET_PRIV (config);
-
- return priv->no_watch_directory_roots;
-}
-
-gboolean
-tracker_config_get_enable_watches (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_ENABLE_WATCHES);
-
- priv = GET_PRIV (config);
-
- return priv->enable_watches;
-}
-
-gint
-tracker_config_get_throttle (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_THROTTLE);
-
- priv = GET_PRIV (config);
-
- return priv->throttle;
-}
-
-gboolean
-tracker_config_get_enable_indexing (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_ENABLE_INDEXING);
-
- priv = GET_PRIV (config);
-
- return priv->enable_indexing;
-}
-
-gboolean
-tracker_config_get_enable_content_indexing (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_ENABLE_CONTENT_INDEXING);
-
- priv = GET_PRIV (config);
-
- return priv->enable_content_indexing;
-}
-
-gboolean
-tracker_config_get_enable_thumbnails (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_ENABLE_THUMBNAILS);
-
- priv = GET_PRIV (config);
-
- return priv->enable_thumbnails;
-}
-
-gboolean
-tracker_config_get_fast_merges (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_FAST_MERGES);
-
- priv = GET_PRIV (config);
-
- return priv->fast_merges;
-}
-
-GSList *
-tracker_config_get_no_index_file_types (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
-
- priv = GET_PRIV (config);
-
- return priv->no_index_file_types;
-}
-
-gint
-tracker_config_get_min_word_length (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MIN_WORD_LENGTH);
-
- priv = GET_PRIV (config);
-
- return priv->min_word_length;
-}
-
-gint
-tracker_config_get_max_word_length (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MAX_WORD_LENGTH);
-
- priv = GET_PRIV (config);
-
- return priv->max_word_length;
-}
-
-const gchar *
-tracker_config_get_language (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), "en");
-
- priv = GET_PRIV (config);
-
- return priv->language;
-}
-
-gboolean
-tracker_config_get_enable_stemmer (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_ENABLE_STEMMER);
-
- priv = GET_PRIV (config);
-
- return priv->enable_stemmer;
-}
-
-gboolean
-tracker_config_get_disable_indexing_on_battery (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_DISABLE_INDEXING_ON_BATTERY);
-
- priv = GET_PRIV (config);
-
- return priv->disable_indexing_on_battery;
-}
-
-gboolean
-tracker_config_get_disable_indexing_on_battery_init (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_DISABLE_INDEXING_ON_BATTERY_INIT);
-
- priv = GET_PRIV (config);
-
- return priv->disable_indexing_on_battery_init;
-}
-
-gint
-tracker_config_get_low_disk_space_limit (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_LOW_DISK_SPACE_LIMIT);
-
- priv = GET_PRIV (config);
-
- return priv->low_disk_space_limit;
-}
-
-gboolean
-tracker_config_get_index_mounted_directories (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_INDEX_MOUNTED_DIRECTORIES);
-
- priv = GET_PRIV (config);
-
- return priv->index_mounted_directories;
-}
-
-gboolean
-tracker_config_get_index_removable_devices (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_INDEX_REMOVABLE_DEVICES);
-
- priv = GET_PRIV (config);
-
- return priv->index_removable_devices;
-}
-
-const gchar *
-tracker_config_get_email_client (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_INDEX_EMAIL_CLIENT);
-
- priv = GET_PRIV (config);
-
- return priv->email_client;
-}
-
-gint
-tracker_config_get_max_text_to_index (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MAX_TEXT_TO_INDEX);
-
- priv = GET_PRIV (config);
-
- return priv->max_text_to_index;
-}
-
-gint
-tracker_config_get_max_words_to_index (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MAX_WORDS_TO_INDEX);
-
- priv = GET_PRIV (config);
-
- return priv->max_words_to_index;
-}
-
-gint
-tracker_config_get_optimization_sweep_count (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_OPTIMIZATION_SWEEP_COUNT);
-
- priv = GET_PRIV (config);
-
- return priv->optimization_sweep_count;
-}
-
-gint
-tracker_config_get_max_bucket_count (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MAX_BUCKET_COUNT);
-
- priv = GET_PRIV (config);
-
- return priv->max_bucket_count;
-}
-
-gint
-tracker_config_get_min_bucket_count (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_MIN_BUCKET_COUNT);
-
- priv = GET_PRIV (config);
-
- return priv->min_bucket_count;
-}
-
-gint
-tracker_config_get_divisions (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_DIVISIONS);
-
- priv = GET_PRIV (config);
-
- return priv->divisions;
-}
-
-gint
-tracker_config_get_bucket_ratio (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_BUCKET_RATIO);
-
- priv = GET_PRIV (config);
-
- return priv->bucket_ratio;
-}
-
-gint
-tracker_config_get_padding (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_PADDING);
-
- priv = GET_PRIV (config);
-
- return priv->padding;
-}
-
-gint
-tracker_config_get_thread_stack_size (TrackerConfig *config)
-{
- TrackerConfigPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), DEFAULT_THREAD_STACK_SIZE);
-
- priv = GET_PRIV (config);
-
- return priv->thread_stack_size;
-}
-
-void
-tracker_config_set_verbosity (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "verbosity", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->verbosity = value;
- g_object_notify (G_OBJECT (config), "verbosity");
-}
-
-void
-tracker_config_set_initial_sleep (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "initial-sleep", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->initial_sleep = value;
- g_object_notify (G_OBJECT (config), "initial-sleep");
-}
-
-void
-tracker_config_set_low_memory_mode (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->low_memory_mode = value;
- g_object_notify (G_OBJECT (config), "low-memory-mode");
-}
-
-void
-tracker_config_set_enable_watches (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->enable_watches = value;
- g_object_notify (G_OBJECT (config), "enable-watches");
-}
-
-void
-tracker_config_set_throttle (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "throttle", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->throttle = value;
- g_object_notify (G_OBJECT (config), "throttle");
-}
-
-void
-tracker_config_set_enable_indexing (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->enable_indexing = value;
- g_object_notify (G_OBJECT (config), "enable-indexing");
-}
-
-void
-tracker_config_set_enable_content_indexing (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->enable_content_indexing = value;
- g_object_notify (G_OBJECT (config), "enable-content-indexing");
-}
-
-void
-tracker_config_set_enable_thumbnails (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->enable_thumbnails = value;
- g_object_notify (G_OBJECT (config), "enable-thumbnails");
-}
-
-void
-tracker_config_set_fast_merges (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->fast_merges = value;
- g_object_notify (G_OBJECT (config), "fast-merges");
-}
-
-void
-tracker_config_set_min_word_length (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "min-word-length", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->min_word_length = value;
- g_object_notify (G_OBJECT (config), "min-word-length");
-}
-
-void
-tracker_config_set_max_word_length (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "max-word-length", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->max_word_length = value;
- g_object_notify (G_OBJECT (config), "max-word-length");
-}
-
-void
-tracker_config_set_language (TrackerConfig *config,
- const gchar *value)
-{
- TrackerConfigPriv *priv;
- gboolean use_default = FALSE;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- g_free (priv->language);
-
- /* Validate language */
- use_default |= !value;
- use_default |= strlen (value) < 2;
- use_default |= !tracker_language_check_exists (value);
-
- if (use_default) {
- priv->language = tracker_language_get_default_code ();
- } else {
- priv->language = g_strdup (value);
- }
-
- g_object_notify (G_OBJECT (config), "language");
-}
-
-void
-tracker_config_set_enable_stemmer (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->enable_stemmer = value;
- g_object_notify (G_OBJECT (config), "enable-stemmer");
-}
-
-void
-tracker_config_set_disable_indexing_on_battery (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->disable_indexing_on_battery = value;
- g_object_notify (G_OBJECT (config), "disable-indexing-on-battery");
-}
-
-void
-tracker_config_set_disable_indexing_on_battery_init (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->disable_indexing_on_battery_init = value;
- g_object_notify (G_OBJECT (config), "disable-indexing-on-battery-init");
-}
-
-void
-tracker_config_set_low_disk_space_limit (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "low-disk-space-limit", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->low_disk_space_limit = value;
- g_object_notify (G_OBJECT (config), "low-disk-space-limit");
-}
-
-void
-tracker_config_set_index_mounted_directories (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->index_mounted_directories = value;
- g_object_notify (G_OBJECT (config), "index-mounted-directories");
-}
-
-void
-tracker_config_set_index_removable_devices (TrackerConfig *config,
- gboolean value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- priv->index_removable_devices = value;
- g_object_notify (G_OBJECT (config), "index-removable-devices");
-}
-
-void
-tracker_config_set_email_client (TrackerConfig *config,
- const gchar *value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (config);
-
- g_free (priv->email_client);
-
- if (value) {
- priv->email_client = g_strdup (value);
- } else {
- priv->email_client = NULL;
- }
-
- g_object_notify (G_OBJECT (config), "email-client");
-}
-
-void
-tracker_config_set_max_text_to_index (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "max-text-to-index", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->max_text_to_index = value;
- g_object_notify (G_OBJECT (config), "max_text_to_index");
-}
-
-void
-tracker_config_set_max_words_to_index (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "max-words-to-index", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->max_words_to_index = value;
- g_object_notify (G_OBJECT (config), "max_words_to_index");
-}
-
-void
-tracker_config_set_optimization_sweep_count (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "optimization-sweep-count", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->optimization_sweep_count = value;
- g_object_notify (G_OBJECT (config), "optimization-sweep-count");
-}
-
-void
-tracker_config_set_max_bucket_count (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "max-bucket-count", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->max_bucket_count = value;
- g_object_notify (G_OBJECT (config), "max-bucket-count");
-}
-
-void
-tracker_config_set_min_bucket_count (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "min-bucket-count", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->min_bucket_count = value;
- g_object_notify (G_OBJECT (config), "min-bucket-count");
-}
-
-void
-tracker_config_set_divisions (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "divisions", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->divisions = value;
- g_object_notify (G_OBJECT (config), "divisions");
-}
-
-void
-tracker_config_set_bucket_ratio (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "bucket-ratio", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->bucket_ratio = value;
- g_object_notify (G_OBJECT (config), "bucket-ratio");
-}
-
-void
-tracker_config_set_padding (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "padding", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->padding = value;
- g_object_notify (G_OBJECT (config), "padding");
-}
-
-void
-tracker_config_set_thread_stack_size (TrackerConfig *config,
- gint value)
-{
- TrackerConfigPriv *priv;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- if (!config_int_validate (config, "thread-stack-size", value)) {
- return;
- }
-
- priv = GET_PRIV (config);
-
- priv->padding = value;
- g_object_notify (G_OBJECT (config), "thread-stack-size");
-}
-
-void
-tracker_config_add_watch_directory_roots (TrackerConfig *config,
- gchar * const *roots)
-{
- TrackerConfigPriv *priv;
- gchar *validated_root;
- gchar * const *p;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
- g_return_if_fail (roots != NULL);
-
- priv = GET_PRIV (config);
-
- for (p = roots; *p; p++) {
- validated_root = config_dir_validate_name (*p);
- if (!validated_root) {
- g_print ("Root '%s' is not valid to add to watch directory list\n",
- validated_root);
- continue;
- }
-
- priv->watch_directory_roots = g_slist_append (priv->watch_directory_roots,
- validated_root);
- }
-
- /* We only do this for watch directory roots right now, not
- * sure why.
- */
- config_dir_check_roots_for_conflicts (config);
-
- g_object_notify (G_OBJECT (config), "watch-directory-roots");
-}
-
-void
-tracker_config_add_crawl_directory_roots (TrackerConfig *config,
- gchar * const *roots)
-{
- TrackerConfigPriv *priv;
- gchar *validated_root;
- gchar * const *p;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
- g_return_if_fail (roots != NULL);
-
- priv = GET_PRIV (config);
-
- for (p = roots; *p; p++) {
- validated_root = config_dir_validate_name (*p);
- if (!validated_root) {
- g_print ("Root '%s' is not valid to add to crawl directory list\n",
- validated_root);
- continue;
- }
-
- priv->crawl_directory_roots = g_slist_append (priv->crawl_directory_roots,
- validated_root);
- }
-
- g_object_notify (G_OBJECT (config), "crawl-directory-roots");
-}
-
-void
-tracker_config_add_no_watch_directory_roots (TrackerConfig *config,
- gchar * const *roots)
-{
- TrackerConfigPriv *priv;
- gchar *validated_root;
- gchar * const *p;
-
- g_return_if_fail (TRACKER_IS_CONFIG (config));
- g_return_if_fail (roots != NULL);
-
- priv = GET_PRIV (config);
-
- for (p = roots; *p; p++) {
- validated_root = config_dir_validate_name (*p);
- if (!validated_root) {
- g_print ("Root '%s' is not valid to add to no_watch directory list\n",
- validated_root);
- continue;
- }
-
- priv->no_watch_directory_roots = g_slist_append (priv->no_watch_directory_roots,
- validated_root);
- }
-
- g_object_notify (G_OBJECT (config), "no-watch-directory-roots");
-}
diff --git a/src/libtracker-common/tracker-config.h b/src/libtracker-common/tracker-config.h
deleted file mode 100644
index 1690c7ed9..000000000
--- a/src/libtracker-common/tracker-config.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2007, Michal Pryc (Michal.Pryc@Sun.Com)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_CONFIG_H__
-#define __TRACKER_CONFIG_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_CONFIG (tracker_config_get_type ())
-#define TRACKER_CONFIG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_CONFIG, TrackerConfig))
-#define TRACKER_CONFIG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TRACKER_TYPE_CONFIG, TrackerConfigClass))
-#define TRACKER_IS_CONFIG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_CONFIG))
-#define TRACKER_IS_CONFIG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TRACKER_TYPE_CONFIG))
-#define TRACKER_CONFIG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_CONFIG, TrackerConfigClass))
-
-typedef struct _TrackerConfig TrackerConfig;
-typedef struct _TrackerConfigClass TrackerConfigClass;
-
-struct _TrackerConfig {
- GObject parent;
-};
-
-struct _TrackerConfigClass {
- GObjectClass parent_class;
-};
-
-GType tracker_config_get_type (void) G_GNUC_CONST;
-
-void tracker_config_load_file (void);
-
-TrackerConfig *tracker_config_new (void);
-
-gint tracker_config_get_verbosity (TrackerConfig *config);
-gint tracker_config_get_initial_sleep (TrackerConfig *config);
-gboolean tracker_config_get_low_memory_mode (TrackerConfig *config);
-GSList * tracker_config_get_watch_directory_roots (TrackerConfig *config);
-GSList * tracker_config_get_crawl_directory_roots (TrackerConfig *config);
-GSList * tracker_config_get_no_watch_directory_roots (TrackerConfig *config);
-gboolean tracker_config_get_enable_watches (TrackerConfig *config);
-gint tracker_config_get_throttle (TrackerConfig *config);
-gboolean tracker_config_get_enable_indexing (TrackerConfig *config);
-gboolean tracker_config_get_enable_content_indexing (TrackerConfig *config);
-gboolean tracker_config_get_enable_thumbnails (TrackerConfig *config);
-gboolean tracker_config_get_fast_merges (TrackerConfig *config);
-GSList * tracker_config_get_no_index_file_types (TrackerConfig *config);
-gint tracker_config_get_min_word_length (TrackerConfig *config);
-gint tracker_config_get_max_word_length (TrackerConfig *config);
-const gchar * tracker_config_get_language (TrackerConfig *config);
-gboolean tracker_config_get_enable_stemmer (TrackerConfig *config);
-gboolean tracker_config_get_disable_indexing_on_battery (TrackerConfig *config);
-gboolean tracker_config_get_disable_indexing_on_battery_init (TrackerConfig *config);
-gint tracker_config_get_low_disk_space_limit (TrackerConfig *config);
-gboolean tracker_config_get_index_removable_devices (TrackerConfig *config);
-gboolean tracker_config_get_index_mounted_directories (TrackerConfig *config);
-const gchar * tracker_config_get_email_client (TrackerConfig *config);
-gint tracker_config_get_max_text_to_index (TrackerConfig *config);
-gint tracker_config_get_max_words_to_index (TrackerConfig *config);
-gint tracker_config_get_optimization_sweep_count (TrackerConfig *config);
-gint tracker_config_get_max_bucket_count (TrackerConfig *config);
-gint tracker_config_get_min_bucket_count (TrackerConfig *config);
-gint tracker_config_get_divisions (TrackerConfig *config);
-gint tracker_config_get_bucket_ratio (TrackerConfig *config);
-gint tracker_config_get_padding (TrackerConfig *config);
-gint tracker_config_get_thread_stack_size (TrackerConfig *config);
-void tracker_config_set_verbosity (TrackerConfig *config,
- gint value);
-void tracker_config_set_initial_sleep (TrackerConfig *config,
- gint value);
-void tracker_config_set_low_memory_mode (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_enable_watches (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_throttle (TrackerConfig *config,
- gint value);
-void tracker_config_set_enable_indexing (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_enable_content_indexing (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_enable_thumbnails (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_fast_merges (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_min_word_length (TrackerConfig *config,
- gint value);
-void tracker_config_set_max_word_length (TrackerConfig *config,
- gint value);
-void tracker_config_set_language (TrackerConfig *config,
- const gchar *value);
-void tracker_config_set_enable_stemmer (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_disable_indexing_on_battery (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_disable_indexing_on_battery_init (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_low_disk_space_limit (TrackerConfig *config,
- gint value);
-void tracker_config_set_index_removable_devices (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_index_mounted_directories (TrackerConfig *config,
- gboolean value);
-void tracker_config_set_email_client (TrackerConfig *config,
- const gchar *value);
-void tracker_config_set_max_text_to_index (TrackerConfig *config,
- gint value);
-void tracker_config_set_max_words_to_index (TrackerConfig *config,
- gint value);
-void tracker_config_set_optimization_sweep_count (TrackerConfig *config,
- gint value);
-void tracker_config_set_max_bucket_count (TrackerConfig *config,
- gint value);
-void tracker_config_set_min_bucket_count (TrackerConfig *config,
- gint value);
-void tracker_config_set_divisions (TrackerConfig *config,
- gint value);
-void tracker_config_set_bucket_ratio (TrackerConfig *config,
- gint value);
-void tracker_config_set_padding (TrackerConfig *config,
- gint value);
-void tracker_config_set_thread_stack_size (TrackerConfig *config,
- gint value);
-/* Directory root APIs*/
-void tracker_config_add_watch_directory_roots (TrackerConfig *config,
- gchar * const *roots);
-void tracker_config_add_crawl_directory_roots (TrackerConfig *config,
- gchar * const *roots);
-void tracker_config_add_no_watch_directory_roots (TrackerConfig *config,
- gchar * const *roots);
-
-G_END_DECLS
-
-#endif /* __TRACKER_CONFIG_H__ */
-
diff --git a/src/libtracker-common/tracker-configuration.c b/src/libtracker-common/tracker-configuration.c
deleted file mode 100644
index e1877717b..000000000
--- a/src/libtracker-common/tracker-configuration.c
+++ /dev/null
@@ -1,487 +0,0 @@
-/**
- * Tracker - indexer and metadata database engine
- * Copyright (c) 2007 Saleem Abdulrasool (compnerd@compnerd.org)
- *
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the license, or (at your otpion) any later
- * version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- **/
-
-#include "tracker-configuration.h"
-
-#include <string.h>
-
-static gboolean dirty = FALSE;
-static gchar *filename = NULL;
-static GKeyFile *configuration = NULL;
-
-const LanguageMapEntry LanguageMap[] = {
- { "da", "Danish" },
- { "nl", "Duch" },
- { "en", "English" },
- { "fi", "Finnish" },
- { "fr", "French" },
- { "de", "German" },
- { "it", "Italian" },
- { "nb", "Norwegian" },
- { "pt", "Portuguese" },
- { "ru", "Russian" },
- { "es", "Spanish" },
- { "sv", "Swedish" },
- { NULL, NULL },
-};
-
-
-static gchar *
-get_default_language_code (void)
-{
- gchar **langs, **lang;
-
- /* get languages for user's locale */
- langs = (char **)g_get_language_names ();
-
- for (lang = langs; *lang; lang++) {
- if (strlen (*lang) > 1) {
- gint i;
- for (i = 0; LanguageMap[i].language; i++) {
- if (g_str_has_prefix (*lang, LanguageMap[i].language)) {
- return g_strndup (*lang, 2);
- }
- }
- }
- }
-
- return g_strdup ("en");
-}
-
-static void
-write_default_config (void)
-{
- gchar * contents = NULL, * language = NULL;
-
- language = get_default_language_code ();
- contents = g_strconcat ("[General]\n",
- "# Log verbosity"
- "# Valid values are:\n"
- "# 0 (displays/logs only errors)\n"
- "# 1 (minimal)\n"
- "# 2 (detailed)\n"
- "# 3 (debug)\n",
- "Verbosity = 0\n",
- "# Set the initial sleeping time, in seconds\n",
- "InitialSleep = 45\n\n",
- "# Minimizes the use of memory but may slow indexing down\n",
- "LowMemoryMode = false\n",
- "[Watches]\n",
- "# List of directory roots to index and watch separated by semicolons\n",
- "WatchDirectoryRoots =", g_get_home_dir (), ";\n",
- "# List of directory roots to index but not watch (no live updates but are\n"
- "# refreshed when trackerd is next restarted) separated by semicolons\n",
- "CrawlDirectory =\n",
- "# List of directory roots to not index and not watch separated by semicolons\n",
- "NoWatchDirectory =\n",
- "# Set to false to prevent watching of any kind\n",
- "EnableWatching = true\n\n",
- "[Indexing]\n",
- "# Throttles the indexing process. Allowable values are 0 - 20. Higher values\n"
- "# decrease indexing speed\n",
- "Throttle = 0\n",
- "# Disables the indexing process\n",
- "EnableIndexing = true\n",
- "# Enables indexing of a file's text contents\n",
- "EnableFileContentIndexing = true\n",
- "# Enables generation of thumbnails\n",
- "EnableThumbnails = false\n",
- "# Enables fast index merges but may hog the disk for extended periods.\n",
- "EnableFastMerges = false\n",
- "# List of partial file patterns (glob) separated by semicolons that specify files\n"
- "# to not index (basic stat info is only indexed for files that match these patterns)\n",
- "NoIndexFileTypes =;\n",
- "# Sets minimum length of words to index\n",
- "MinWordLength = 3\n",
- "# Sets the maximum length of words to index (words are cropped if bigger than this)\n",
- "MaxWordLength = 30\n",
- "# Sets the language specific stemmer and stopword list to use\n"
- "# Valid values are:\n"
- "# 'en' (english)\n"
- "# 'da' (danish)\n"
- "# 'nl' (dutch)\n"
- "# 'fi' (finnish)\n"
- "# 'fr' (french)\n"
- "# 'de' (german)\n"
- "# 'it' (italian)\n"
- "# 'nb' (norwegian)\n"
- "# 'pt' (portuguese)\n"
- "# 'ru' (russian)\n"
- "# 'es' (spanish)\n"
- "# 'sv' (swedish)\n",
- "Language = ", language, "\n",
- "# Enables use of language-specific stemmer\n",
- "EnableStemmer = true\n",
- "# Set to true to prevent tracker from descending into mounted directory trees\n",
- "SkipMountPoints = false\n",
- "# Disable all indexing when on battery\n",
- "BatteryIndex = true\n",
- "# Disable initial index sweep when on battery\n",
- "BatteryIndexInitial = false\n",
- "# Pause indexer when disk space equals or goes below this value in %% of the $HOME filesystem\n"
- "# Set it to a value smaller than zero to disable pausing at all.\n",
- "LowDiskSpaceLimit = 1\n\n",
- "[Emails]\n",
- "# Index email messages from Evolution\n",
- "IndexEvolutionEmails = true\n",
- "# Index email messages from Modest\n",
- "IndexModestEmails = false\n",
- "# Index email messages from Thunderbird\n",
- "IndexThunderbirdEmails = true\n\n",
- "[Performance]\n",
- "# Maximum size of text in bytes to index from a file's text contents\n",
- "MaxTextToIndex = 1048576\n",
- "# Maximum number of unique words to index from a file's text contents\n",
- "MaxWordsToIndex = 10000\n",
- "# Specifies the number of entities to index before determining whether to perform\n"
- "# index optimization\n",
- "OptimizationSweepCount = 10000\n",
- "# Sets the maximum bucket count for the indexer\n",
- "MaxBucketCount = 524288\n",
- "# Sets the minimum bucket count for the indexer\n",
- "MinBucketCount = 65536\n",
- "# Sets number of divisions of the index file\n",
- "Divisions = 4\n",
- "# Selects the desired ratio of used records to buckets to be used when optimizing\n"
- "# the index (should be a value between 0 and 4)\n",
- "BucketRatio = 1\n",
- "# Alters how much padding is used to prevent index relocations. Higher values improve\n"
- "# indexing speed but waste more disk space. Values should be in the range 1-8.\n",
- "Padding = 2\n",
- "# sets stack size of trackerd threads in bytes. The default on Linux is 8Mb (0 will use\n"
- "# the system default).\n",
- "ThreadStackSize = 0\n",
- NULL);
-
- g_file_set_contents (filename, contents, strlen (contents), NULL);
- g_free (contents);
-}
-
-static gchar *
-string_replace (const gchar * haystack, gchar * needle, gchar * replacement)
-{
- GString *str;
- char *start_pos = NULL, *end_pos = NULL;
- gint needle_len = 0;
-
- g_return_val_if_fail (haystack, NULL);
- g_return_val_if_fail (needle, NULL);
- g_return_val_if_fail (g_utf8_validate (haystack, -1, NULL), NULL);
-
- str = g_string_new ("");
- needle_len = g_utf8_strlen(needle, -1);
- start_pos = haystack;
-
- while ((end_pos = strstr (start_pos, needle)) != NULL) {
- str = g_string_append_len (str, start_pos, end_pos - start_pos);
- if (replacement) {
- str = g_string_append (str, replacement);
- }
-
- start_pos = end_pos + needle_len;
- }
-
- str = g_string_append_len (str, start_pos, g_utf8_strlen(start_pos, -1));
- return g_string_free (str, FALSE);
-}
-
-
-void
-tracker_configuration_load (void)
-{
- GError *error = NULL;
-
- filename = g_build_filename (g_get_user_config_dir (), "tracker", "tracker.cfg", NULL);
-
- if (! g_file_test (filename, G_FILE_TEST_EXISTS)) {
- gchar *tracker_dir = g_build_filename (g_get_user_config_dir (), "tracker", NULL);
-
- if (! g_file_test (tracker_dir, G_FILE_TEST_EXISTS)) {
- g_mkdir_with_parents (tracker_dir, 0700);
- }
-
- g_free (tracker_dir);
-
- write_default_config();
- }
-
- if (configuration) {
- g_key_file_free(configuration);
- }
-
- configuration = g_key_file_new();
- g_key_file_load_from_file (configuration, filename, G_KEY_FILE_KEEP_COMMENTS, &error);
- if (error) {
- g_error ("failed: g_key_file_load_from_file(): %s\n", error->message);
- }
-}
-
-void
-tracker_configuration_save (void)
-{
- gsize length = 0;
- GError *error = NULL;
- gchar *data = NULL, *contents = NULL;
-
- if (! dirty)
- return;
-
- data = g_key_file_to_data (configuration, &length, &error);
- if (error)
- g_error ("failed: g_key_file_to_data(): %s\n", error->message);
-
- contents = string_replace (data, "\n\n\n", "\n\n");
- g_free (data);
-
- g_file_set_contents (filename, contents, -1, NULL);
- g_free (contents);
-
- dirty = FALSE;
-}
-
-void
-tracker_configuration_free (void)
-{
- if (dirty)
- tracker_configuration_save ();
-
- g_free (filename);
- g_key_file_free (configuration);
-}
-
-#define TRACKER_CONFIGURATION_GET_(TypeName, GTypeName, Null) \
-GTypeName \
-tracker_configuration_get_##TypeName (const gchar * const key, GError ** error) \
-{ \
- gchar **data = g_strsplit (key, "/", 3); \
- GTypeName value = Null; \
- \
- if (g_key_file_has_key (configuration, data[1], data[2], error)) { \
- value = g_key_file_get_##TypeName (configuration, data[1], data[2], error); \
- } \
- \
- g_strfreev (data); \
- return value; \
-}
-
-#define TRACKER_CONFIGURATION_SET_(TypeName, GTypeName) \
-void \
-tracker_configuration_set_##TypeName (const gchar * const key, const GTypeName value) \
-{ \
- gchar **data = g_strsplit (key, "/", 3); \
- \
- g_key_file_set_##TypeName (configuration, data[1], data[2], value); \
- \
- g_strfreev (data); \
- dirty = TRUE; \
-}
-
-TRACKER_CONFIGURATION_GET_(boolean, gboolean, FALSE)
-TRACKER_CONFIGURATION_SET_(boolean, gboolean)
-
-TRACKER_CONFIGURATION_GET_(integer, gint, 0)
-TRACKER_CONFIGURATION_SET_(integer, gint)
-
-TRACKER_CONFIGURATION_GET_(string, gchar *, NULL)
-TRACKER_CONFIGURATION_SET_(string, gchar *)
-
-#undef TRACKER_CONFIGURATION_GET_
-#undef TRACKER_CONFIGURATION_SET_
-
-#define TRACKER_CONFIGURATION_LIST_GET_(TypeName, GTypeName) \
-static GSList * \
-tracker_configuration_get_##TypeName##_list (const gchar * const key, GError ** error) \
-{ \
- gchar **data = NULL; \
- GSList *retval = NULL; \
- \
- g_return_val_if_fail (key, NULL); \
- \
- data = g_strsplit (key, "/", 3); \
- \
- if (g_key_file_has_key (configuration, data[1], data[2], error)) { \
- gsize length = 0; \
- GTypeName *values = NULL; \
- \
- values = g_key_file_get_##TypeName##_list (configuration, data[1], data[2], &length, error); \
- \
- if (values) { \
- gsize i = 0; \
- \
- for (i = 0; i < length; i++) { \
- GTypeName *value = g_new0 (GTypeName, 1); \
- *value = values[i]; \
- \
- retval = g_slist_prepend (retval, value); \
- } \
- \
- g_free (values); \
- } \
- } \
- \
- g_strfreev (data); \
- return g_slist_reverse (retval); \
-}
-
-#define TRACKER_CONFIGURATION_LIST_SET_(TypeName, GTypeName) \
-static void \
-tracker_configuration_set_##TypeName##_list (const gchar * const key, GSList * value) \
-{ \
- gchar **data = NULL; \
- GTypeName *list = NULL; \
- guint length = 0; \
- \
- g_return_if_fail (key); \
- g_return_if_fail (value); \
- \
- data = g_strsplit (key, "/", 3); \
- length = g_slist_length (value); \
- list = g_new0 (GTypeName, length); \
- \
- guint i; \
- const GSList *tmp; \
- for (i = 0, tmp = value; tmp; tmp = tmp->next, i++) { \
- if (tmp->data) { \
- GTypeName *n = tmp->data; \
- list[i] = *n; \
- } \
- } \
- \
- g_key_file_set_##TypeName##_list (configuration, data[1], data[2], list, length); \
- \
- g_free (list); \
- g_strfreev (data); \
-}
-
-TRACKER_CONFIGURATION_LIST_GET_(boolean, gboolean)
-TRACKER_CONFIGURATION_LIST_SET_(boolean, gboolean)
-
-TRACKER_CONFIGURATION_LIST_GET_(double, gdouble)
-TRACKER_CONFIGURATION_LIST_SET_(double, gdouble)
-
-TRACKER_CONFIGURATION_LIST_GET_(integer, gint)
-TRACKER_CONFIGURATION_LIST_SET_(integer, gint)
-
-#undef TRACKER_CONFIGURATION_LIST_GET_
-#undef TRACKER_CONFIGURATION_LIST_SET_
-
-/* Implement string lists manually for strings are special you see */
-
-static GSList *
-tracker_configuration_get_string_list (const gchar * const key, GError ** error)
-{
- gchar **data = NULL;
- GSList *retval = NULL;
-
- g_return_val_if_fail (key, NULL);
-
- data = g_strsplit (key, "/", 3);
-
- if (g_key_file_has_key (configuration, data[1], data[2], error)) {
- gsize length = 0;
- gchar **values = NULL;
-
- values = g_key_file_get_string_list (configuration, data[1], data[2], &length, error);
-
- if (values) {
- gsize i = 0;
-
- for (i = 0; i < length; i++) {
- gchar *value = g_strdup (values[i]);
- retval = g_slist_prepend (retval, value);
- }
-
- g_strfreev (values);
- }
- }
-
- g_strfreev (data);
- return g_slist_reverse (retval);
-}
-
-static void
-tracker_configuration_set_string_list (const gchar * const key, GSList * value)
-{
- gchar **data = NULL;
- gchar **list = NULL;
- guint length = 0;
-
- g_return_if_fail (key);
- g_return_if_fail (value);
-
- data = g_strsplit (key, "/", 3);
- length = g_slist_length (value);
- list = g_new0 (gchar *, length + 1);
-
- guint i;
- const GSList *tmp;
- for (i = 0, tmp = value; tmp; tmp = tmp->next, i++) {
- if (tmp->data) {
- gchar *value = g_strdup (tmp->data);
- list[i] = value;
- }
- }
-
- g_key_file_set_string_list (configuration, data[1], data[2], (const gchar * const *)list, length);
-
- g_strfreev (list);
- g_strfreev (data);
-}
-
-GSList *
-tracker_configuration_get_list (const gchar * const key, GType g_type, GError ** error)
-{
- switch (g_type) {
- case G_TYPE_BOOLEAN:
- return tracker_configuration_get_boolean_list (key, error);
- break;
- case G_TYPE_DOUBLE:
- return tracker_configuration_get_double_list (key, error);
- break;
- case G_TYPE_INT:
- return tracker_configuration_get_integer_list (key, error);
- break;
- case G_TYPE_STRING:
- return tracker_configuration_get_string_list (key, error);
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
-void
-tracker_configuration_set_list (const gchar * const key, GType g_type, GSList * value)
-{
- switch (g_type) {
- case G_TYPE_BOOLEAN:
- tracker_configuration_set_boolean_list (key, value);
- break;
- case G_TYPE_DOUBLE:
- tracker_configuration_set_double_list (key, value);
- break;
- case G_TYPE_INT:
- tracker_configuration_set_integer_list (key, value);
- break;
- case G_TYPE_STRING:
- tracker_configuration_set_string_list (key, value);
- break;
- default:
- g_assert_not_reached ();
- }
-}
diff --git a/src/libtracker-common/tracker-configuration.h b/src/libtracker-common/tracker-configuration.h
deleted file mode 100644
index 855c56c36..000000000
--- a/src/libtracker-common/tracker-configuration.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Tracker - indexer and metadata database engine
- * Copyright (c) 2007 Saleem Abdulrasool (compnerd@compnerd.org)
- *
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the license, or (at your otpion) any later
- * version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- **/
-
-#ifndef __TRACKER_CONFIGURATION_H__
-#define __TRACKER_CONFIGURATION_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-typedef struct _LanguageMapEntry
-{
- const gchar * const code;
- const gchar * const language;
-} LanguageMapEntry;
-
-extern const LanguageMapEntry LanguageMap[];
-
-void
-tracker_configuration_load (void);
-
-void
-tracker_configuration_save (void);
-
-void
-tracker_configuration_free (void);
-
-gboolean
-tracker_configuration_get_boolean (const gchar * const key,
- GError ** error);
-
-void
-tracker_configuration_set_boolean (const gchar * const key,
- const gboolean value);
-
-gint
-tracker_configuration_get_integer (const gchar * const key,
- GError ** error);
-
-void
-tracker_configuration_set_integer (const gchar * const key,
- const gint value);
-
-gchar *
-tracker_configuration_get_string (const gchar * const key,
- GError ** error);
-
-void
-tracker_configuration_set_string (const gchar * const key,
- const gchar * const value);
-
-GSList *
-tracker_configuration_get_list (const gchar * const key, GType g_type,
- GError ** error);
-
-void
-tracker_configuration_set_list (const gchar * const key, GType g_type,
- GSList * value);
-
-G_END_DECLS
-
-#endif
diff --git a/src/libtracker-common/tracker-language.c b/src/libtracker-common/tracker-language.c
deleted file mode 100644
index 65a54c585..000000000
--- a/src/libtracker-common/tracker-language.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <glib.h>
-
-#include "../libstemmer/include/libstemmer.h"
-
-#include "tracker-log.h"
-#include "tracker-language.h"
-
-typedef struct _Languages Languages;
-
-struct _TrackerLanguage {
- GHashTable *stop_words;
-
- GMutex *stemmer_mutex;
- gpointer stemmer;
-
- TrackerConfig *config;
-};
-
-struct _Languages {
- gchar *code;
- gchar *name;
-};
-
-static Languages all_langs[] = {
- { "da", "danish" },
- { "nl", "dutch" },
- { "en", "english" },
- { "fi", "finnish" },
- { "fr", "french" },
- { "de", "german" },
- { "hu", "hungarian" },
- { "it", "italian" },
- { "nb", "norwegian" },
- { "pt", "portuguese" },
- { "ru", "russian" },
- { "es", "spanish" },
- { "sv", "swedish" },
- { NULL, NULL },
-};
-
-static gchar *
-language_get_stopword_filename (const gchar *language_code)
-{
- gchar *str;
- gchar *filename;
-
- str = g_strconcat (".", language_code, NULL);
- filename = g_build_filename (SHAREDIR,
- "tracker",
- "languages",
- "stopwords",
- str,
- NULL);
- g_free (str);
-
- return filename;
-}
-
-static const gchar *
-language_get_name_for_code (const gchar *language_code)
-{
- gint i;
-
- if (!language_code || language_code[0] == '\0') {
- return "english";
- }
-
- for (i = 0; all_langs[i].code; i++) {
- if (g_str_has_prefix (language_code, all_langs[i].code)) {
- return all_langs[i].name;
- }
- }
-
- return "";
-}
-
-static void
-language_add_stopwords (TrackerLanguage *language,
- const gchar *filename)
-{
- GMappedFile *mapped_file;
- GError *error = NULL;
- gchar *content;
- gchar **words, **p;
-
- mapped_file = g_mapped_file_new (filename, FALSE, &error);
- if (error) {
- tracker_log ("Tracker couldn't read stopword file:'%s', %s",
- filename, error->message);
- g_clear_error (&error);
- return;
- }
-
- content = g_mapped_file_get_contents (mapped_file);
- words = g_strsplit_set (content, "\n" , -1);
- g_free (content);
- g_mapped_file_free (mapped_file);
-
- /* FIXME: Shouldn't clear the hash table first? */
- for (p = words; *p; p++) {
- g_hash_table_insert (language->stop_words,
- g_strdup (g_strstrip (*p)),
- GINT_TO_POINTER (1));
- }
-
- g_strfreev (words);
-}
-
-static void
-language_set_stopword_list (TrackerLanguage *language,
- const gchar *language_code)
-{
- gchar *stopword_filename;
- const gchar *stem_language;
-
- g_return_if_fail (language != NULL);
-
- /* Set up stopwords list */
- tracker_log ("Setting up stopword list for language code:'%s'", language_code);
-
- stopword_filename = language_get_stopword_filename (language_code);
- language_add_stopwords (language, stopword_filename);
- g_free (stopword_filename);
-
- if (!language_code || strcmp (language_code, "en") != 0) {
- stopword_filename = language_get_stopword_filename ("en");
- language_add_stopwords (language, stopword_filename);
- g_free (stopword_filename);
- }
-
- tracker_log ("Setting up stemmer for language code:'%s'", language_code);
-
- stem_language = language_get_name_for_code (language_code);
-
- g_mutex_lock (language->stemmer_mutex);
-
- if (language->stemmer) {
- sb_stemmer_delete (language->stemmer);
- }
-
- language->stemmer = sb_stemmer_new (stem_language, NULL);
- if (!language->stemmer) {
- tracker_log ("No stemmer could be found for language:'%s'",
- stem_language);
- }
-
- g_mutex_unlock (language->stemmer_mutex);
-}
-
-static void
-language_notify_cb (TrackerConfig *config,
- GParamSpec *param,
- gpointer user_data)
-{
- TrackerLanguage *language;
-
- language = (TrackerLanguage*) user_data;
-
- language_set_stopword_list (language,
- tracker_config_get_language (config));
-}
-
-TrackerLanguage *
-tracker_language_new (TrackerConfig *config)
-{
- TrackerLanguage *language;
- const gchar *stem_language;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
-
- language = g_new0 (TrackerLanguage, 1);
-
- language->stop_words = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- NULL);
-
- language->stemmer_mutex = g_mutex_new ();
-
- stem_language = language_get_name_for_code (NULL);
- language->stemmer = sb_stemmer_new (stem_language, NULL);
-
- language->config = g_object_ref (config);
-
- g_signal_connect (language->config, "notify::language",
- G_CALLBACK (language_notify_cb),
- language);
-
- return language;
-}
-
-void
-tracker_language_free (TrackerLanguage *language)
-{
- if (!language) {
- return;
- }
-
- g_signal_handlers_disconnect_by_func (language->config,
- language_notify_cb,
- language);
- g_object_unref (language->config);
-
- if (language->stemmer) {
- g_mutex_lock (language->stemmer_mutex);
- sb_stemmer_delete (language->stemmer);
- g_mutex_unlock (language->stemmer_mutex);
- }
-
- g_mutex_free (language->stemmer_mutex);
-
- g_hash_table_destroy (language->stop_words);
-
- g_free (language);
-}
-
-gboolean
-tracker_language_check_exists (const gchar *language_code)
-{
- gint i;
-
- if (!language_code || language_code[0] == '\0') {
- return FALSE;
- }
-
- for (i = 0; all_langs[i].code; i++) {
- if (g_str_has_prefix (language_code, all_langs[i].code)) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-gchar *
-tracker_language_get_default_code (void)
-{
- const gchar **local_languages;
- const gchar **p;
-
- /* Get langauges for user's locale */
- local_languages = (const gchar**) g_get_language_names ();
-
- for (p = local_languages; *p; p++) {
- const gchar *code;
- gint i = 0;
-
- if (!*p || *p[0] == '\0') {
- continue;
- }
-
- code = all_langs[i].code;
-
- while (code) {
- if (g_str_has_prefix (*p, code)) {
- return g_strndup (*p, strlen (code));
- }
-
- code = all_langs[i++].code;
- }
- }
-
- return g_strdup ("en");
-}
-
-gchar *
-tracker_language_stem_word (TrackerLanguage *language,
- const gchar *word,
- gint word_length)
-{
- const gchar *stem_word;
-
- g_return_val_if_fail (language != NULL, NULL);
-
- if (!tracker_config_get_enable_stemmer (language->config)) {
- return NULL;
- }
-
- g_mutex_lock (language->stemmer_mutex);
- if (!language->stemmer) {
-
- }
-
- stem_word = (const gchar *) sb_stemmer_stem (language->stemmer,
- (guchar*) word,
- word_length);
- g_mutex_unlock (language->stemmer_mutex);
-
- return g_strdup (stem_word);
-}
diff --git a/src/libtracker-common/tracker-language.h b/src/libtracker-common/tracker-language.h
deleted file mode 100644
index f189b9639..000000000
--- a/src/libtracker-common/tracker-language.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_LANGUAGE_H__
-#define __TRACKER_LANGUAGE_H__
-
-#include "tracker-config.h"
-
-G_BEGIN_DECLS
-
-typedef struct _TrackerLanguage TrackerLanguage;
-
-TrackerLanguage *tracker_language_new (TrackerConfig *config);
-void tracker_language_free (TrackerLanguage *language);
-
-gboolean tracker_language_check_exists (const gchar *language_code);
-gchar * tracker_language_get_default_code (void);
-gchar * tracker_language_stem_word (TrackerLanguage *language,
- const gchar *word,
- gint word_length);
-
-G_END_DECLS
-
-#endif /* __TRACKER_LANGUAGE_H__ */
diff --git a/src/libtracker-common/tracker-log.c b/src/libtracker-common/tracker-log.c
deleted file mode 100644
index d863f25e5..000000000
--- a/src/libtracker-common/tracker-log.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <glib/gstdio.h>
-
-#ifdef OS_WIN32
-#include <conio.h>
-#include "mingw-compat.h"
-#else
-#include <sys/resource.h>
-#endif
-
-#include "tracker-log.h"
-
-typedef struct {
- GMutex *mutex;
- gchar *filename;
- gint verbosity;
- gboolean abort_on_error;
-} TrackerLog;
-
-static TrackerLog *log = NULL;
-
-static inline void
-log_output (const char *message)
-{
- FILE *fd;
- time_t now;
- gchar time_str[64];
- gchar usec_str[20];
- gchar *output;
- struct tm *local_time;
- GTimeVal current_time;
- static size_t size = 0;
-
- g_return_if_fail (log != NULL);
- g_return_if_fail (message != NULL && message[0] != '\0');
-
- g_print ("%s\n", message);
-
- /* Ensure file logging is thread safe */
- g_mutex_lock (log->mutex);
-
- fd = g_fopen (log->filename, "a");
- if (!fd) {
- g_warning ("Could not open log: '%s'", log->filename);
- g_mutex_unlock (log->mutex);
- return;
- }
-
- /* Check log size, 10MiB limit */
- if (size > (10 << 20)) {
- rewind (fd);
- ftruncate (fileno (fd), 0);
- size = 0;
- }
-
- g_get_current_time (&current_time);
-
- now = time ((time_t *) NULL);
- local_time = localtime (&now);
- strftime (time_str, 64, "%d %b %Y, %H:%M:%S:", local_time);
- g_sprintf (usec_str, "%03ld", current_time.tv_usec / 1000);
-
- output = g_strdup_printf ("%s%s - %s",
- time_str,
- usec_str,
- message);
-
- size += g_fprintf (fd, "%s\n", output);
- g_free (output);
-
- fclose (fd);
-
- g_mutex_unlock (log->mutex);
-}
-
-void
-tracker_log_init (const gchar *filename,
- gint verbosity,
- gboolean abort_on_error)
-{
- g_return_if_fail (filename != NULL);
-
- if (log != NULL) {
- tracker_error ("Logger already initialized (%s)", log->filename);
- return;
- }
-
- log = g_new0 (TrackerLog, 1);
-
- log->verbosity = verbosity;
-
- log->filename = g_strdup (filename);
-
- log->mutex = g_mutex_new ();
- log->abort_on_error = abort_on_error;
-}
-
-void
-tracker_log_term (void)
-{
- g_return_if_fail (log != NULL);
-
- g_mutex_free (log->mutex);
- g_free (log->filename);
-
- g_free (log);
-
- /* Reset the log pointer so we can re-initialise if we want */
- log = NULL;
-}
-
-void
-tracker_log (const char *message, ...)
-{
- va_list args;
- gchar *str;
-
- g_return_if_fail (log != NULL);
-
- if (log->verbosity < 1) {
- return;
- }
-
- va_start (args, message);
- str = g_strdup_vprintf (message, args);
- va_end (args);
-
- log_output (str);
- g_free (str);
-}
-
-void
-tracker_info (const char *message, ...)
-{
- va_list args;
- gchar *str;
-
- g_return_if_fail (log != NULL);
-
- if (log->verbosity < 2) {
- return;
- }
-
- va_start (args, message);
- str = g_strdup_vprintf (message, args);
- va_end (args);
-
- log_output (str);
- g_free (str);
-}
-
-void
-tracker_debug (const char *message, ...)
-{
- va_list args;
- gchar *str;
-
- g_return_if_fail (log != NULL);
-
- if (log->verbosity < 3) {
- return;
- }
-
- va_start (args, message);
- str = g_strdup_vprintf (message, args);
- va_end (args);
-
- log_output (str);
- g_free (str);
-}
-
-void
-tracker_error (const char *message, ...)
-{
- va_list args;
- gchar *str;
-
- g_return_if_fail (log != NULL);
-
- va_start (args, message);
- str = g_strdup_vprintf (message, args);
- va_end (args);
-
- log_output (str);
- g_free (str);
-
- if (log->abort_on_error) {
- g_assert (FALSE);
- }
-}
diff --git a/src/libtracker-common/tracker-log.h b/src/libtracker-common/tracker-log.h
deleted file mode 100644
index 6b65ac490..000000000
--- a/src/libtracker-common/tracker-log.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_LOG_H__
-#define __TRACKER_LOG_H__
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-void tracker_log_init (const char *filename,
- gint verbosity,
- gboolean abort_on_error);
-void tracker_log_term (void);
-void tracker_log (const char *message,
- ...);
-void tracker_info (const char *message,
- ...);
-void tracker_debug (const char *message,
- ...);
-void tracker_error (const char *message,
- ...);
-
-G_END_DECLS
-
-#endif /* __TRACKER_LOG_H__ */
diff --git a/src/libtracker-gtk/Makefile.am b/src/libtracker-gtk/Makefile.am
deleted file mode 100644
index 7ee43e989..000000000
--- a/src/libtracker-gtk/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-
-INCLUDES = \
- -I$(top_srcdir)/src/libtracker \
- $(LIBTRACKERGTK_CFLAGS)
-
-
-libtracker_gtkincdir = $(includedir)/libtracker-gtk
-
-lib_LTLIBRARIES = libtracker-gtk.la
-
-libtracker_gtkinc_HEADERS = \
- tracker-gtk.h \
- tracker-utils.h \
- tracker-ui.h \
- tracker-metadata-tile.h \
- tracker-tag-bar.h \
- tracker-keyword-store.h
-
-libtracker_gtk_la_SOURCES = \
- tracker-utils.c \
- tracker-ui.c \
- tracker-metadata-tile.c \
- tracker-tag-bar.c \
- tracker-keyword-store.c
-
-libtracker_gtk_la_LIBADD = \
- $(top_builddir)/src/libtracker/libtrackerclient.la \
- $(LIBTRACKERGTK_LIBS)
-
-libtracker_gtk_la_LDFLAGS = -version-info 0:0:0
-
diff --git a/src/libtracker-gtk/tracker-gtk.h b/src/libtracker-gtk/tracker-gtk.h
deleted file mode 100644
index b8cd9bf37..000000000
--- a/src/libtracker-gtk/tracker-gtk.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * @file libtracker-gtk/tracker-gtk.h Main include file
- *
- * @Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TRACKER_GTK_H
-#define TRACKER_GTK_H
-
-#include <tracker-utils.h>
-#include <tracker-ui.h>
-#include <tracker-keyword-store.h>
-#include <tracker-metadata-tile.h>
-#include <tracker-tag-bar.h>
-
-#endif /* TRACKER_GTK_H */
-
diff --git a/src/libtracker-gtk/tracker-keyword-store.c b/src/libtracker-gtk/tracker-keyword-store.c
deleted file mode 100644
index 231c582d9..000000000
--- a/src/libtracker-gtk/tracker-keyword-store.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * tracker-gtk/keyword-store.c - A derived GtkListStore that maintians a
- * DBus connection to tracker such that when a new keyword is created it
- * is automatically inserted here.
- *
- * Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-
-#include <gtk/gtk.h>
-
-#include "tracker-keyword-store.h"
-#include "tracker-utils.h"
-
-typedef struct _TrackerKeywordStore TrackerKeywordStore;
-
-static void tracker_keyword_store_tree_drag_source_init (GtkTreeDragSourceIface *iface);
-
-static void tracker_keyword_store_finalize (GObject *object);
-
-
-static void tracker_keyword_store_populate_cb (GPtrArray *result, GError *error, gpointer user_data);
-
-G_DEFINE_TYPE_WITH_CODE (TrackerKeywordStore, tracker_keyword_store, GTK_TYPE_LIST_STORE,
- G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
- tracker_keyword_store_tree_drag_source_init))
-
-#define parent_class tracker_keyword_store_parent_class
-
-static void
-tracker_keyword_store_class_init (TrackerKeywordStoreClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = tracker_keyword_store_finalize;
-}
-
-static void
-tracker_keyword_store_init (TrackerKeywordStore *store)
-{
- /* setup the basic class list store properties */
- GType types[TRACKER_KEYWORD_STORE_NUM_COLUMNS];
- types[TRACKER_KEYWORD_STORE_KEYWORD] = G_TYPE_STRING;
- types[TRACKER_KEYWORD_STORE_IMAGE_URI] = G_TYPE_STRING;
-
- gtk_list_store_set_column_types (GTK_LIST_STORE (store),
- TRACKER_KEYWORD_STORE_NUM_COLUMNS, types);
-
- //setup private members
- store->keywords = g_hash_table_new (g_str_hash, g_str_equal);
- store->tracker_client = tracker_connect (TRUE);
-
- //populate the liststore asyncronously
- tracker_keywords_get_list_async (store->tracker_client,
- SERVICE_FILES,
- tracker_keyword_store_populate_cb,
- store);
-}
-
-static gboolean
-tracker_keyword_store_row_draggable (GtkTreeDragSource *drag_source,
- GtkTreePath *path)
-{
- printf ("ROW DRAGGABLE\n");
- return TRUE;
-}
-
-static gboolean
-tracker_keyword_store_drag_data_get (GtkTreeDragSource *drag_source,
- GtkTreePath *path,
- GtkSelectionData *data)
-{
- gchar *keyword;
- GtkTreeIter iter;
- TrackerKeywordStore *store;
-
- printf ("DRAG DATA GET %s\n",gdk_atom_name (data->target));
-
- store = TRACKER_KEYWORD_STORE (drag_source);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL(store), &iter, path);
-
- gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, TRACKER_KEYWORD_STORE_KEYWORD, &keyword, -1);
-
- gtk_selection_data_set_text (data, keyword, strlen (keyword));
- g_free (keyword);
- return TRUE;
-}
-
-static gboolean
-tracker_keyword_store_drag_data_delete (GtkTreeDragSource *drag_source,
- GtkTreePath *path)
-{
- printf ("DRAG DATA DELETE\n");
- return FALSE;
-}
-
-static void
-tracker_keyword_store_tree_drag_source_init (GtkTreeDragSourceIface *iface)
-{
- iface->row_draggable = tracker_keyword_store_row_draggable;
- iface->drag_data_get = tracker_keyword_store_drag_data_get;
- iface->drag_data_delete = tracker_keyword_store_drag_data_delete;
-}
-
-static void
-tracker_keyword_store_populate_cb (GPtrArray *result, GError *error, gpointer user_data) {
- GtkTreeIter iter;
- GtkListStore *list_store = GTK_LIST_STORE (user_data);
-
- if (!error && result) {
- gchar *name = NULL;
- guint i;
- for (i = 0; i < result->len; i++) {
- name = ((gchar **)result->pdata[i])[0];
- if (strlen (name) > 2) {
- //FIXME: Modify this function when tracker stores emblem images
- gtk_list_store_insert_with_values (list_store, &iter, 0,
- TRACKER_KEYWORD_STORE_KEYWORD, name,
- -1);
-
- }
- }
- g_ptr_array_free (result, TRUE);
- }
- g_clear_error (&error);
-}
-
-static void
-tracker_keyword_store_finalize (GObject *object)
-{
- TrackerKeywordStore *store = TRACKER_KEYWORD_STORE (object);
-
- if (store->keywords) {
- g_hash_table_unref (store->keywords);
- }
-
- if (store->tracker_client) {
- tracker_disconnect (store->tracker_client);
- }
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-/**
- * tracker_keyword_store_new:
- *
- * Creates a #GtkListStore with several columns. This store is especially
- * useful because it also contais a hashtable which retains a gtk_tree_iter
- * indexed by keyword, for O(1) fast lookups of liststore contents.
- *
- * Return value: a new #TrackerKeywordStore.
- *
- **/
-GtkListStore *
-tracker_keyword_store_new (void)
-{
- return g_object_new (TRACKER_TYPE_KEYWORD_STORE, NULL);
-}
-
-/**
- * Inserts keyword into the liststore
- * returns true if successful
- **/
-gboolean
-tracker_keyword_store_insert ( GtkListStore *store,
- const char *keyword,
- const char *stock_id
-)
-{
- GtkTreeIter *iter;
- TrackerKeywordStore *self;
-
- g_return_val_if_fail (TRACKER_IS_KEYWORD_STORE(store), FALSE);
- g_return_val_if_fail (keyword != NULL, FALSE);
-
- self = TRACKER_KEYWORD_STORE (store);
-
- if (g_hash_table_lookup (self->keywords, keyword) == NULL)
- {
- iter = (GtkTreeIter *)g_new0 (GtkTreeIter, 1);
- gtk_list_store_insert_with_values (store,
- iter, 0,
- TRACKER_KEYWORD_STORE_KEYWORD, keyword,
- TRACKER_KEYWORD_STORE_IMAGE_URI, stock_id,
- -1);
- g_hash_table_insert (self->keywords, g_strdup (keyword), iter);
- return TRUE;
-
- }
- return FALSE;
-}
-
-/**
- * O(1) lookup of items by keyword from the store
- * Returns the GtkTreeIter corresponding to the item with keyword or
- * NULL of it cant be found
- **/
-GtkTreeIter *
-tracker_keyword_store_lookup ( GtkListStore *store,
- const char *keyword)
-{
- TrackerKeywordStore *self;
-
- g_return_val_if_fail (TRACKER_IS_KEYWORD_STORE(store), FALSE);
- g_return_val_if_fail (keyword != NULL, FALSE);
-
- self = TRACKER_KEYWORD_STORE (store);
- return (GtkTreeIter *)g_hash_table_lookup (self->keywords, keyword);
-}
-
-/**
- * O(1) removal of items by keyword
- **/
-gboolean
-tracker_keyword_store_remove ( GtkListStore *store,
- const char *keyword)
-{
- GtkTreeIter *iter;
- TrackerKeywordStore *self;
- gboolean a,b;
-
- iter = tracker_keyword_store_lookup (store, keyword);
- self = TRACKER_KEYWORD_STORE (store);
-
- if (iter != NULL) {
- a = gtk_list_store_remove (store, iter);
- b = g_hash_table_remove (self->keywords, keyword);
- return a && b;
- }
- return FALSE;
-}
-
-
-
-
-
-
-
-
diff --git a/src/libtracker-gtk/tracker-keyword-store.h b/src/libtracker-gtk/tracker-keyword-store.h
deleted file mode 100644
index 8d425f688..000000000
--- a/src/libtracker-gtk/tracker-keyword-store.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * tracker-gtk/keyword-store.h - A derived GtkListStore that maintians a
- * DBus connection to tracker such that when a new keyword is created it
- * is automatically inserted here.
- *
- * Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TRACKER_KEYWORD_STORE_H
-#define TRACKER_KEYWORD_STORE_H
-
-#include <gtk/gtkliststore.h>
-
-#include <tracker.h>
-
-G_BEGIN_DECLS
-
-typedef enum
-{
- TRACKER_KEYWORD_STORE_KEYWORD,
- TRACKER_KEYWORD_STORE_IMAGE_URI,
- TRACKER_KEYWORD_STORE_NUM_COLUMNS
-} TrackerKeywordStoreColumns;
-
-
-#define TRACKER_TYPE_KEYWORD_STORE (tracker_keyword_store_get_type ())
-#define TRACKER_KEYWORD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_TYPE_KEYWORD_STORE, TrackerKeywordStore))
-#define TRACKER_KEYWORD_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_TYPE_KEYWORD_STORE, TrackerKeywordStoreClass))
-#define TRACKER_IS_KEYWORD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_TYPE_KEYWORD_STORE))
-#define TRACKER_IS_KEYWORD_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_TYPE_KEYWORD_STORE))
-#define TRACKER_KEYWORD_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TYPE_KEYWORD_STORE, TrackerKeywordStoreClass))
-
-
-typedef struct _TrackerKeywordStoreClass TrackerKeywordStoreClass;
-
-struct _TrackerKeywordStore
-{
- GtkListStore parent_instance;
-
- /*< private >*/
- GHashTable *keywords;
- TrackerClient *tracker_client;
-};
-
-struct _TrackerKeywordStoreClass
-{
- GtkListStoreClass parent_class;
-};
-
-
-GType tracker_keyword_store_get_type (void) G_GNUC_CONST;
-
-GtkListStore * tracker_keyword_store_new (void);
-
-gboolean
-tracker_keyword_store_insert (GtkListStore *store,
- const char *keyword,
- const char *stock_id );
-
-GtkTreeIter *
-tracker_keyword_store_lookup (GtkListStore *store,
- const char *keyword);
-
-gboolean
-tracker_keyword_store_remove (GtkListStore *store,
- const char *keyword);
-
-G_END_DECLS
-
-#endif /* TRACKER_KEYWORD_STORE_H */
diff --git a/src/libtracker-gtk/tracker-metadata-tile.c b/src/libtracker-gtk/tracker-metadata-tile.c
deleted file mode 100644
index 400cb3355..000000000
--- a/src/libtracker-gtk/tracker-metadata-tile.c
+++ /dev/null
@@ -1,1484 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * Copyright (C) 2007 Neil Jagdish Patel <njpatel@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author : Neil Jagdish Patel <njpatel@gmail.com>
- */
-
-#include <config.h>
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <glib/gi18n-lib.h>
-
-#include "tracker-metadata-tile.h"
-#include "tracker-tag-bar.h"
-
-#define TRACKER_METADATA_TILE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_METADATA_TILE, TrackerMetadataTilePrivate))
-
-#ifndef HAVE_RECENT_GLIB
-/**********************************************************************
- *
- * The following functions are copied from the GLIB 2.12
- * source code, to lower requirement on glib to 2.10 that ships with
- * Dapper
- *
- **********************************************************************/
-
-/* converts a broken down date representation, relative to UTC, to
- * a timestamp; it uses timegm() if it's available. */
-static time_t
-mktime_utc (struct tm *tm)
-{
- time_t retval;
-
-#ifndef HAVE_TIMEGM
- static const gint days_before[] =
- {
- 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
- };
-#endif
-
-#ifndef HAVE_TIMEGM
- if (tm->tm_mon < 0 || tm->tm_mon > 11)
- return (time_t) -1;
-
- retval = (tm->tm_year - 70) * 365;
- retval += (tm->tm_year - 68) / 4;
- retval += days_before[tm->tm_mon] + tm->tm_mday - 1;
-
- if (tm->tm_year % 4 == 0 && tm->tm_mon < 2)
- retval -= 1;
-
- retval = ((((retval * 24) + tm->tm_hour) * 60) + tm->tm_min) * 60 + tm->tm_sec;
-#else
- retval = timegm (tm);
-#endif /* !HAVE_TIMEGM */
-
- return retval;
-}
-
-
-
-/**
-* g_time_val_from_iso8601:
-* @iso_date: a ISO 8601 encoded date string
-* @time_: a #GTimeVal
-*
-* Converts a string containing an ISO 8601 encoded date and time
-* to a #GTimeVal and puts it into @time_.
-*
-* Return value: %TRUE if the conversion was successful.
-*
-*/
-gboolean
-g_time_val_from_iso8601 (const gchar *iso_date,
- GTimeVal *time_)
-{
- struct tm tm;
- long val;
-
- g_return_val_if_fail (iso_date != NULL, FALSE);
- g_return_val_if_fail (time_ != NULL, FALSE);
-
- val = strtoul (iso_date, (char **)&iso_date, 10);
- if (*iso_date == '-')
- {
- /* YYYY-MM-DD */
- tm.tm_year = val - 1900;
- iso_date++;
- tm.tm_mon = strtoul (iso_date, (char **)&iso_date, 10) - 1;
-
- if (*iso_date++ != '-')
- return FALSE;
-
- tm.tm_mday = strtoul (iso_date, (char **)&iso_date, 10);
- }
- else
- {
- /* YYYYMMDD */
- tm.tm_mday = val % 100;
- tm.tm_mon = (val % 10000) / 100 - 1;
- tm.tm_year = val / 10000 - 1900;
- }
-
- if (*iso_date++ != 'T')
- return FALSE;
-
- val = strtoul (iso_date, (char **)&iso_date, 10);
- if (*iso_date == ':')
- {
- /* hh:mm:ss */
- tm.tm_hour = val;
- iso_date++;
- tm.tm_min = strtoul (iso_date, (char **)&iso_date, 10);
-
- if (*iso_date++ != ':')
- return FALSE;
-
- tm.tm_sec = strtoul (iso_date, (char **)&iso_date, 10);
- }
- else
- {
- /* hhmmss */
- tm.tm_sec = val % 100;
- tm.tm_min = (val % 10000) / 100;
- tm.tm_hour = val / 10000;
- }
-
- time_->tv_sec = mktime_utc (&tm);
- time_->tv_usec = 1;
-
- if (*iso_date == '.')
- time_->tv_usec = strtoul (iso_date + 1, (char **)&iso_date, 10);
-
- if (*iso_date == '+' || *iso_date == '-')
- {
- gint sign = (*iso_date == '+') ? -1 : 1;
-
- val = 60 * strtoul (iso_date + 1, (char **)&iso_date, 10);
-
- if (*iso_date == ':')
- val = 60 * val + strtoul (iso_date + 1, NULL, 10);
- else
- val = 60 * (val / 100) + (val % 100);
-
- time_->tv_sec += (time_t) (val * sign);
- }
-
- return TRUE;
-}
-/**********************************************************************
- *
- * End of copied functions.
- *
- **********************************************************************/
-#endif /* HAVE_RECENT_GLIB */
-
-
-G_DEFINE_TYPE (TrackerMetadataTile, tracker_metadata_tile, GTK_TYPE_EVENT_BOX)
-
-struct TrackerMetadataTilePrivate {
- TrackerClient *client;
-
- gboolean visible;
- gboolean lock;
-
- gboolean expanded;
- gchar *type;
- GdkPixbuf *preview;
-
- GtkWidget *align;
-
- GtkWidget *image;
- GtkWidget *size;
-
- GtkWidget *expander;
- GtkWidget *arrow;
- GtkWidget *title;
-
- GtkWidget *table;
-
- GtkWidget *info1;
- GtkWidget *info2;
-
- GtkWidget *info3;
- GtkWidget *info4;
-
- GtkWidget *info5;
- GtkWidget *info6;
-
- GtkWidget *tag_bar;
-};
-
-static GObjectClass *parent_class = NULL;
-
-#define KILOBYTE_FACTOR 1024.0
-#define MEGABYTE_FACTOR (1024.0 * 1024.0)
-#define GIGABYTE_FACTOR (1024.0 * 1024.0 * 1024.0)
-
-/* forward declerations */
-static void tracker_metadata_tile_class_init (TrackerMetadataTileClass *class);
-static void tracker_metadata_tile_init (TrackerMetadataTile *tile);
-static gboolean tracker_metadata_tile_expose_event(GtkWidget *widget, GdkEventExpose *event);
-static void tracker_metadata_tile_show (TrackerMetadataTile *tile);
-static void _property_to_label (GtkWidget *label, const char *prop, const char *string);
-static void _date_to_label (GtkWidget *label, const char *prop, const char *string);
-static void _year_to_label (GtkWidget *label, const char *prop, const char *string);
-static void _size_to_label (GtkWidget *label, const char *prop, const char *string);
-static void _dimensions_to_label (GtkWidget *label, const char *width, const char *height, const char *string);
-static void _seconds_to_label (GtkWidget *label, const char *prop, const char *string);
-static void _bitrate_to_label (GtkWidget *label, const char *prop, const char *string);
-static void _int_to_label (GtkWidget *label, const char *prop, const char *string);
-
-static inline gboolean is_empty_string (const char *s);
-
-/* structs & enums */
-
-static char *default_keys[] =
-{
- "File:Name",
- "File:Path",
- "File:Modified",
- "File:Size",
- "File:Accessed",
- "File:Mime",
- NULL
-};
-
-enum {
- DEFAULT_NAME,
- DEFAULT_PATH,
- DEFAULT_MODIFIED,
- DEFAULT_SIZE,
- DEFAULT_ACCESSED,
- DEFAULT_MIME,
- DEFAULT_N_KEYS
-};
-
-static char *doc_keys[] =
-{
- "File:Name",
- "Doc:Subject",
- "Doc:Author",
- "Doc:Comments",
- "Doc:PageCount",
- "Doc:WordCount",
- "Doc:Created",
- NULL
-};
-
-enum {
- DOC_NAME,
- DOC_SUBJECT,
- DOC_AUTHOR,
- DOC_COMMENTS,
- DOC_PAGECOUNT,
- DOC_WORDCOUNT,
- DOC_CREATED,
- DOC_N_KEYS
-};
-
-
-
-static char *email_keys[] =
-{
- "Email:Sender",
- "Email:Subject",
- "Email:Date",
- "Email:SentTo",
- "Email:CC",
- "Email:Attachments",
- NULL
-};
-
-enum {
- EMAIL_SENDER,
- EMAIL_SUBJECT,
- EMAIL_DATE,
- EMAIL_SENTTO,
- EMAIL_CC,
- EMAIL_ATTACHMENTS,
- EMAIL_N_KEYS
-};
-
-static char *webhistory_keys[] =
-{
- "Doc:URL",
- "Doc:Title",
- "File:Size",
- "File:Mime",
- "Doc:Keywords",
- NULL
-};
-
-enum {
- WEBHISTORY_URL,
- WEBHISTORY_TITLE,
- WEBHISTORY_SIZE,
- WEBHISTORY_MIME,
- WEBHISTORY_KEYWORDS,
- WEBHISTORY_N_KEYS
-};
-
-
-static char *app_keys[] =
-{
- "App:DisplayName",
- "App:GenericName",
- "App:Comment",
- "App:Categories",
- NULL
-};
-
-enum {
- APP_DISPLAYNAME,
- APP_GENERIC_NAME,
- APP_COMMENT,
- APP_CATEGORIES,
- APP_N_KEYS
-};
-
-
-static char *audio_keys[] =
-{
- "Audio:Title",
- "Audio:Artist",
- "Audio:Album",
- "Audio:Duration",
- "Audio:Genre",
- "Audio:Bitrate",
- "Audio:ReleaseDate",
- "Audio:Codec",
- "File:Size",
- NULL
-};
-
-enum {
- AUDIO_TITLE,
- AUDIO_ARTIST,
- AUDIO_ALBUM,
- AUDIO_DURATION,
- AUDIO_GENRE,
- AUDIO_BITRATE,
- AUDIO_RELEASEDATE,
- AUDIO_CODEC,
- AUDIO_SIZE,
- AUDIO_N_KEYS
-};
-
-static char *image_keys[] =
-{
- "File:Name",
- "Image:Height",
- "Image:Width",
- "Image:Date",
- "Image:CameraMake",
- "Image:CameraModel",
- "Image:Orientation",
- "Image:Flash",
- "Image:FocalLength",
- "Image:ExposureTime",
- NULL
-};
-
-enum {
- IMAGE_TITLE,
- IMAGE_HEIGHT,
- IMAGE_WIDTH,
- IMAGE_DATE,
- IMAGE_CAMERA,
- IMAGE_MODEL,
- IMAGE_ORIENT,
- IMAGE_FLASH,
- IMAGE_FOCAL,
- IMAGE_EXPO,
- IMAGE_N_KEYS
-};
-
-static char *video_keys[] =
-{
- "File:Name",
- "Video:Height",
- "Video:Width",
- "Video:Author",
- "Video:FrameRate",
- "Video:Codec",
- "Video:Bitrate",
- "Video:Duration",
- NULL
-};
-
-enum {
- VIDEO_TITLE,
- VIDEO_HEIGHT,
- VIDEO_WIDTH,
- VIDEO_AUTHOR,
- VIDEO_FRAMERATE,
- VIDEO_CODEC,
- VIDEO_BITRATE,
- VIDEO_DURATION,
- VIDEO_N_KEYS
-};
-
-static inline gboolean
-is_empty_string (const char *s)
-{
- return s == NULL || s[0] == '\0';
-}
-
-
-static void
-_show_labels (TrackerMetadataTile *tile, gboolean label_visible)
-{
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- if (!label_visible) {
- gtk_widget_hide (priv->info1);
- gtk_widget_hide (priv->info2);
- gtk_widget_hide (priv->info3);
- gtk_widget_hide (priv->info4);
- gtk_widget_hide (priv->info5);
- gtk_widget_hide (priv->info6);
- } else {
- gtk_widget_show (priv->info1);
- gtk_widget_show (priv->info2);
- gtk_widget_show (priv->info3);
- gtk_widget_show (priv->info4);
- gtk_widget_show (priv->info5);
- gtk_widget_show (priv->info6);
- }
-}
-
-/* populates the metadata tile for a default file */
-static void
-_tile_tracker_populate_default (char **array, GError *error, TrackerMetadataTile *tile )
-{
- if (error) {
- g_print ("Error : %s\n", error->message);
- g_clear_error (&error);
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- /* create title */
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile); /* create title */
-
- _property_to_label ( priv->title, array[DEFAULT_NAME] , "<span size='large'><b>%s</b></span>");
-
- /* then set the remaining properties */
- _property_to_label ( priv->info1, array[DEFAULT_PATH] , _("Path : <b>%s</b>"));
- _date_to_label ( priv->info2, array[DEFAULT_MODIFIED] , _("Modified : <b>%s</b>"));
- _size_to_label ( priv->info3, array[DEFAULT_SIZE] , _("Size : <b>%s</b>"));
- _date_to_label ( priv->info4, array[DEFAULT_ACCESSED] , _("Accessed : <b>%s</b>"));
- _property_to_label ( priv->info5, array[DEFAULT_MIME] , _("Mime : <b>%s</b>"));
- _property_to_label ( priv->info6, " " , "%s");
-
-
-
- tracker_metadata_tile_show (tile);
- g_strfreev (array);
-}
-
-
-static void
-_tile_tracker_populate_blank (TrackerMetadataTile *tile)
-{
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- _show_labels (tile, FALSE);
-
- /* create title */
- _property_to_label ( priv->title, " " , "%s");
- _property_to_label ( priv->info1, " " , "%s");
- _property_to_label ( priv->info2, " " , "%s");
- _property_to_label ( priv->info3, " " , "%s");
- _property_to_label ( priv->info4, " " , "%s");
- _property_to_label ( priv->info5, " " , "%s");
- _property_to_label ( priv->info6, " " , "%s");
-
- tracker_metadata_tile_show (tile);
-}
-
-
-static void
-_tile_tracker_populate_email (char **array, GError *error, TrackerMetadataTile *tile)
-{
- /* format properties */
- if (error) {
- g_print ("META_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- /* hide widget */
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
-
- /* create title */
- _property_to_label ( priv->title, array[EMAIL_SUBJECT] , "<span size='large'><b>%s</b></span>");
-
- _property_to_label ( priv->info1, array[EMAIL_SENDER] , _("Sender : <b>%s</b>"));
- _date_to_label ( priv->info2, array[EMAIL_DATE] , _("Date : <b>%s</b>"));
- _property_to_label ( priv->info3, " " , "%s");
- _property_to_label ( priv->info4, " " , "%s");
- _property_to_label ( priv->info5, " " , "%s");
- _property_to_label ( priv->info6, " " , "%s");
-
-
- /* free properties */
- g_strfreev (array);
-
- tracker_metadata_tile_show (tile);
-
- _show_labels (tile, FALSE);
- gtk_widget_show (priv->info1);
- gtk_widget_show (priv->info2);
-}
-
-
-static void
-_tile_tracker_populate_applications (char **array, GError *error, TrackerMetadataTile *tile)
-{
- /* format properties */
- if (error) {
- g_print ("META_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- /* hide widget */
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
-
-
- /* create title */
- _property_to_label ( priv->title, array[APP_DISPLAYNAME] , "<span size='large'><b>%s</b></span>");
-
-
- _property_to_label ( priv->info1, array[APP_COMMENT] , _("Comment : <b>%s</b>"));
- _property_to_label ( priv->info2, array[APP_CATEGORIES] , _("Categories : <b>%s</b>"));
- _property_to_label ( priv->info4, " " , "%s");
- _property_to_label ( priv->info5, " " , "%s");
- _property_to_label ( priv->info6, " " , "%s");
-
-
- /* free properties */
- g_strfreev (array);
-
- tracker_metadata_tile_show (tile);
- _show_labels (tile, FALSE);
- gtk_widget_show (priv->info1);
- gtk_widget_show (priv->info2);
-
-}
-
-
-
-static void
-_tile_tracker_populate_audio (char **array, GError *error, TrackerMetadataTile *tile)
-{
- /* format properties */
- if (error) {
- g_print ("META_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- /* hide widget */
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile); /* create title */
-
- char *prop = NULL;
- /* make nice looking description */
- GString *str;
- gboolean artist = FALSE;
- gboolean album = FALSE;
-
- str = g_string_new ("<span size='large'><b>%s</b></span>");
-
- if (!is_empty_string (array[AUDIO_ARTIST])) {
- artist = TRUE;
- str = g_string_append (str, " by <span size='large'><i>%s</i></span>");
- }
-
- if (!is_empty_string (array[AUDIO_ALBUM])) {
- album = TRUE;
- str = g_string_append (str, " from <span size='large'><i>%s</i></span>");
- }
-
- if (artist && album) {
- char *temp1, *temp2, *temp3;
- temp1 = g_markup_escape_text (array[AUDIO_TITLE], -1);
- temp2 = g_markup_escape_text (array[AUDIO_ARTIST], -1);
- temp3 = g_markup_escape_text (array[AUDIO_ALBUM], -1);
- prop = g_strdup_printf (str->str, temp1, temp2, temp3);
- g_free (temp1);
- g_free (temp2);
- g_free (temp3);
- } else if (artist) {
- char *temp1, *temp2;
- temp1 = g_markup_escape_text (array[AUDIO_TITLE], -1);
- temp2 = g_markup_escape_text (array[AUDIO_ARTIST], -1);
- prop = g_strdup_printf (str->str, temp1, temp2);
- g_free (temp1);
- g_free (temp2);
- } else if (album) {
- char *temp1, *temp2;
- temp1 = g_markup_escape_text (array[AUDIO_TITLE], -1);
- temp2 = g_markup_escape_text (array[AUDIO_ALBUM], -1);
- prop = g_strdup_printf (str->str, temp1, temp2);
- g_free (temp1);
- g_free (temp2);
- } else {
- char *temp1;
- temp1 = g_markup_escape_text (array[AUDIO_TITLE], -1);
- prop = g_strdup_printf (str->str, temp1);
- g_free (temp1);
- }
-
- gtk_label_set_markup (GTK_LABEL (priv->title), prop);
- g_free (prop);
- g_string_free (str, TRUE);
-
- _seconds_to_label ( priv->info1, array[AUDIO_DURATION] , _("Duration : <b>%s</b>"));
- _property_to_label ( priv->info2, array[AUDIO_GENRE] , _("Genre : <b>%s</b>"));
- _bitrate_to_label ( priv->info3, array[AUDIO_BITRATE] , _("Bitrate : <b>%s Kbs</b>"));
- _year_to_label ( priv->info4, array[AUDIO_RELEASEDATE] , _("Year : <b>%s</b>"));
- _size_to_label ( priv->info5, array[AUDIO_SIZE] , _("Size : <b>%s</b>"));
- _property_to_label ( priv->info6, array[AUDIO_CODEC] , _("Codec : <b>%s</b>"));
-
-
-
-
- /* free properties */
- g_strfreev (array);
-
- tracker_metadata_tile_show (tile);
-}
-
-/* populates the metadata tile for a image file */
-static void
-_tile_tracker_populate_image (char **array, GError *error, TrackerMetadataTile *tile )
-{
- if (error) {
- g_print ("METADATA_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- /* TODO : check for a normal image file, not all images are photos */
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile); /* create title */
-
- /* create title */
- _property_to_label ( priv->title, array[IMAGE_TITLE] , "<span size='large'><b>%s</b></span>");
-
- char *prop = NULL;
- /* make nice looking description */
- GString *str;
- gboolean camera = TRUE;
- gboolean model = TRUE;
-
- str = g_string_new ("<span size='large'><b>%s</b></span>");
-
- if (!is_empty_string (array[IMAGE_CAMERA])) {
- camera = TRUE;
- str = g_string_append (str, _(" taken with a <span size='large'><i>%s</i></span>"));
- }
-
- if (!is_empty_string (array[IMAGE_MODEL])) {
- model = TRUE;
- str = g_string_append (str, _(" <span size='large'><i>%s</i></span>"));
- }
- if (camera && model) {
- prop = g_strdup_printf (str->str, g_markup_escape_text (array[IMAGE_TITLE], -1),
- g_markup_escape_text (array[IMAGE_CAMERA], -1),
- g_markup_escape_text (array[IMAGE_MODEL], -1));
- } else if (camera) {
- prop = g_strdup_printf (str->str, g_markup_escape_text (array[IMAGE_TITLE], -1),
- g_markup_escape_text (array[IMAGE_CAMERA], -1));
- } else if (model) {
- prop = g_strdup_printf (str->str, g_markup_escape_text (array[IMAGE_TITLE], -1),
- g_markup_escape_text (array[IMAGE_MODEL], -1));
- } else {
- prop = g_strdup_printf (str->str, g_markup_escape_text (array[IMAGE_TITLE], -1));
- }
- gtk_label_set_markup (GTK_LABEL (priv->title), prop);
- g_free (prop);
- g_string_free (str, TRUE);
-
- /* then set the remaining properties */
- _dimensions_to_label ( priv->info1, array[IMAGE_WIDTH], array[IMAGE_HEIGHT] , _("Dimensions : <b>%d x %d</b>"));
- _date_to_label ( priv->info2, array[IMAGE_DATE] , _("Date Taken : <b>%s</b>"));
- _property_to_label ( priv->info3, array[IMAGE_ORIENT] , _("Orientation : <b>%s</b>"));
- _property_to_label ( priv->info4, array[IMAGE_FLASH] , _("Flash : <b>%s</b>"));
- _property_to_label ( priv->info5, array[IMAGE_FOCAL] , _("Focal Length : <b>%s</b>"));
- _property_to_label ( priv->info6, array[IMAGE_EXPO] , _("Exposure Time : <b>%s</b>"));
-
-
-
-
- tracker_metadata_tile_show (tile);
- g_strfreev (array);
-}
-
-/* populates the metadata tile for a video file */
-static void
-_tile_tracker_populate_video (char **array, GError *error, TrackerMetadataTile *tile )
-{
- if (error) {
- g_print ("METADATA_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile); /* create title */
-
- _property_to_label ( priv->title, array[VIDEO_TITLE] , "<span size='large'><b>%s</b></span>");
-
- /* then set the remaining properties */
- _dimensions_to_label ( priv->info1, array[VIDEO_WIDTH], array[VIDEO_HEIGHT] , _("Dimensions : <b>%d x %d</b>"));
- _property_to_label ( priv->info2, array[VIDEO_AUTHOR] , _("Author : <b>%s</b>"));
- _seconds_to_label ( priv->info3, array[VIDEO_DURATION] , _("Duration : <b>%s</b>"));
- _property_to_label ( priv->info4, array[VIDEO_BITRATE] , _("Bitrate : <b>%s</b>"));
- _property_to_label ( priv->info5, array[VIDEO_CODEC] , _("Encoded In : <b>%s</b>"));
- _property_to_label ( priv->info6, array[VIDEO_FRAMERATE] , _("Framerate : <b>%s</b>"));
-
-
-
- tracker_metadata_tile_show (tile);
- g_strfreev (array);
-
-}
-
-/* populates the metadata tile for a document */
-static void
-_tile_tracker_populate_documents (char **array, GError *error, TrackerMetadataTile *tile )
-{
- if (error) {
- g_print ("METADATA_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- /* create title */
- _property_to_label ( priv->title, array[DOC_NAME] , "<span size='large'><b>%s</b></span>");
-
- /* then set the remaining properties */
- _property_to_label ( priv->info1, array[DOC_SUBJECT] , _("Subject : <b>%s</b>"));
- _property_to_label ( priv->info2, array[DOC_AUTHOR] , _("Author : <b>%s</b>"));
- _int_to_label ( priv->info3, array[DOC_PAGECOUNT] , _("Page Count : <b>%s</b>"));
- _int_to_label ( priv->info4, array[DOC_WORDCOUNT] , _("Word Count : <b>%s</b>"));
- _date_to_label ( priv->info5, array[DOC_CREATED] , _("Created : <b>%s</b>"));
- _property_to_label ( priv->info6, array[DOC_COMMENTS] , _("Comments : <b>%s</b>"));
-
-
- tracker_metadata_tile_show (tile);
- g_strfreev (array);
-}
-
-
-/*populates the metadata tile for a web history url */
-static void
-_tile_tracker_populate_webhistory(char **array, GError *error, TrackerMetadataTile *tile )
-{
- if (error) {
- g_print ("METADATA_TILE_ERROR : %s", error->message);
- g_clear_error (&error);
- gtk_widget_hide (GTK_WIDGET(tile));
- return;
- }
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- /* create title */
- _property_to_label ( priv->title, array[WEBHISTORY_URL] , "<span size='large'><b>%s</b></span>");
-
- /* then set the remaining properties */
- _property_to_label ( priv->info1, array[WEBHISTORY_TITLE] , _("Subject : <b>%s</b>"));
- _property_to_label ( priv->info2, array[WEBHISTORY_KEYWORDS] , "Keywords: <b>%s</b>");
-
- tracker_metadata_tile_show (tile);
- g_strfreev (array);
-
- _show_labels (tile, FALSE);
- gtk_widget_show (priv->info1);
- gtk_widget_show (priv->info2);
-
-}
-
-
-
-/* UTILILTY FUNCTIONS FOR CONVERSIONS */
-
-/* Converts bitrate to kbs */
-static void
-_bitrate_to_label (GtkWidget *label, const char *prop, const char *string)
-{
- int size;
- char *format;
- char *temp;
-
- size = atoi (prop);
- size = size/1000;
-
- format = g_strdup_printf ("%d", size);
- temp = g_strdup_printf (string, format);
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- g_free (temp);
- g_free (format);
-}
-
-/* Converts seconds to time */
-static void
-_seconds_to_label (GtkWidget *label, const char *prop, const char *string)
-{
- gulong size;
- char *format;
- char *temp;
-
- size = atol (prop);
- int hours = (int) (size / 3600);
- int minutes = (int)(size/60) - (hours * 60);
- int seconds = (int) (size % 60);
-
- if ( hours > 0 ) {
- format = g_strdup_printf ("%02d:%02d:%02d", hours, minutes, seconds);
- } else {
- format = g_strdup_printf ("%02d:%02d", minutes, seconds);
- }
-
- temp = g_strdup_printf (string, format);
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- g_free (temp);
- g_free (format);
-}
-
-/* Converts width and height into WxH */
-static void
-_dimensions_to_label (GtkWidget *label, const char *width, const char *height, const char *string)
-{
- gulong w;
- gulong h;
- char *temp;
-
- w = atol (width);
- h = atol (height);
-
- temp = g_strdup_printf (string, w, h);
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- g_free (temp);
-}
-
-/* taken from gnome_vfs, formats a file size to something normal */
-gchar*
-tracker_vfs_format_file_size_for_display (gulong size)
-{
- if (size < KILOBYTE_FACTOR) {
- //return g_strdup_printf (dngettext(GETTEXT_PACKAGE, "%u byte", "%u bytes",(guint) size), (guint) size);
- return g_strdup_printf ("%u bytes", (guint) size);
- } else {
- gdouble displayed_size;
-
- if (size < MEGABYTE_FACTOR) {
- displayed_size = (gdouble) size / KILOBYTE_FACTOR;
- return g_strdup_printf (_("%.1f KB"),
- displayed_size);
- } else if (size < GIGABYTE_FACTOR) {
- displayed_size = (gdouble) size / MEGABYTE_FACTOR;
- return g_strdup_printf (_("%.1f MB"),
- displayed_size);
- } else {
- displayed_size = (gdouble) size / GIGABYTE_FACTOR;
- return g_strdup_printf (_("%.1f GB"),
- displayed_size);
- }
- }
-}
-
-/* Converts text size to something human readable */
-static void
-_size_to_label (GtkWidget *label, const char *prop, const char *string)
-{
- gulong size;
- char *format;
- char *temp;
-
- size = atol (prop);
- format = tracker_vfs_format_file_size_for_display (size);
-
- temp = g_strdup_printf (string, format);
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- g_free (format);
- g_free (temp);
-}
-
-/* Converts text size to something human readable */
-static void
-_int_to_label (GtkWidget *label, const char *prop, const char *string)
-{
- gulong size;
- char *temp;
- char *format;
-
- size = atol (prop);
- format = g_strdup_printf ("%ld", size);
-
- if (size) {
- temp = g_strdup_printf (string, format);
- } else {
- temp = g_strdup_printf (string, _("Unknown"));
- }
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
-
- g_free (temp);
- g_free (format);
-}
-
-/* Converts ISO date to something human readable */
-static gboolean
-get_time_from_iso (const char *iso, GDate *val)
-{
- g_return_val_if_fail (val, FALSE);
-
- time_t my_time = atoi (iso);
-
- if (my_time != 0) {
- g_date_set_time_t (val, my_time);
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-static void
-_date_to_label (GtkWidget *label, const char *iso, const char *string)
-{
- GDate val;
- char *temp = NULL;
-
- if (string) {
- if (get_time_from_iso (iso, &val)) {
- gchar buf[256];
- g_date_strftime (buf, 256, "%a %d %b %Y", &val);
- temp = g_strdup_printf (string, buf);
- }
- }
-
- if (!temp) {
- temp = g_strdup_printf (string, _("Unknown"));
- }
-
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
- g_free (temp);
-}
-
-static void
-_year_to_label (GtkWidget *label, const char *iso, const char *string)
-{
- GDate val;
- char *temp = NULL;
-
- if (string) {
- if (get_time_from_iso (iso, &val)) {
- gchar buf[32];
- g_date_strftime (buf, 32, "%Y", &val);
- temp = g_strdup_printf (string, buf);
- }
- }
-
- if (!temp) {
- temp = g_strdup_printf (string, _("Unknown"));
- }
-
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
- g_free (temp);
-}
-
-/* Checks that a property is valid, parses it to play nicely wth pango */
-static void
-_property_to_label (GtkWidget *label, const char *prop, const char *string)
-{
- if (!is_empty_string(prop)) {
- char * temp, *temp2;
- temp2 = g_markup_escape_text (prop, -1);
- temp = g_strdup_printf (string, temp2);
- g_free (temp2);
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
- g_free (temp);
- } else {
- char * temp;
- temp = g_strdup_printf (string, _("Unknown"));
- gtk_label_set_markup (GTK_LABEL (label), temp);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
- g_free (temp);
- }
-}
-
-
-
-/**
- * tracker_metadata_tile_set_uri:
- * @tile: a #TrackerMetadataTile
- * @uri: the local uri of a file
- * @type: the tracker type or mime type of the file
- * @icon: a GdkPixbuf representing the file, or #NULL
- *
- * Replaces the current metadata in the tile with metadata for the
- * uri specified. Can optionally also update the #GtkImage in the tile with
- * the icon specified.
- *
- **/
-
-void
-tracker_metadata_tile_set_uri (TrackerMetadataTile *tile, const gchar *uri,
- ServiceType service_type,
- const gchar *type,
- GdkPixbuf *icon)
-{
- TrackerMetadataTilePrivate *priv;
-
- g_return_if_fail (TRACKER_IS_METADATA_TILE (tile));
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- gtk_image_clear (GTK_IMAGE (priv->image));
-
- if (icon) {
- gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), icon);
- } else {
- gtk_widget_hide (priv->image);
- }
-
- /* call correct function according to service type */
- switch (service_type) {
-
- case SERVICE_MUSIC:
-
- tracker_metadata_get_async (priv->client, SERVICE_MUSIC,
- uri, audio_keys,
- (TrackerArrayReply)_tile_tracker_populate_audio,
- (gpointer)tile);
-
- break;
-
- case SERVICE_EMAILS:
-
- tracker_metadata_get_async (priv->client, SERVICE_EMAILS,
- uri, email_keys,
- (TrackerArrayReply)_tile_tracker_populate_email,
- (gpointer)tile);
- break;
-
-
- case SERVICE_DOCUMENTS:
-
- tracker_metadata_get_async (priv->client, SERVICE_DOCUMENTS,
- uri, doc_keys,
- (TrackerArrayReply)_tile_tracker_populate_documents,
- (gpointer)tile);
- break;
-
- case SERVICE_WEBHISTORY:
-
- tracker_metadata_get_async (priv->client, SERVICE_WEBHISTORY,
- uri, webhistory_keys,
- (TrackerArrayReply)_tile_tracker_populate_webhistory,
- (gpointer)tile);
- break;
-
-
- case SERVICE_IMAGES:
-
- tracker_metadata_get_async (priv->client, SERVICE_IMAGES,
- uri, image_keys,
- (TrackerArrayReply)_tile_tracker_populate_image,
- (gpointer)tile);
-
- break;
-
- case SERVICE_VIDEOS:
- tracker_metadata_get_async (priv->client, SERVICE_VIDEOS,
- uri, video_keys,
- (TrackerArrayReply)_tile_tracker_populate_video,
- (gpointer)tile);
-
- break;
-
- case SERVICE_APPLICATIONS:
-
- tracker_metadata_get_async (priv->client, SERVICE_APPLICATIONS,
- uri, app_keys,
- (TrackerArrayReply)_tile_tracker_populate_applications,
- (gpointer)tile);
-
- break;
-
-
- default:
-
- if (!uri) {
- _tile_tracker_populate_blank (tile);
- } else {
-
- tracker_metadata_get_async (priv->client, SERVICE_FILES,
- uri, default_keys,
- (TrackerArrayReply)_tile_tracker_populate_default,
- (gpointer)tile);
- }
-
- break;
- }
-
-
-
- if (uri) {
- gtk_widget_show (priv->tag_bar);
- tracker_tag_bar_set_uri (TRACKER_TAG_BAR (priv->tag_bar), service_type, uri);
- } else {
- gtk_widget_hide (priv->tag_bar);
- }
-
- gtk_widget_queue_draw (GTK_WIDGET (tile));
-}
-
-static void
-tracker_metadata_tile_show (TrackerMetadataTile *tile)
-{
- g_return_if_fail (TRACKER_IS_METADATA_TILE (tile));
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- if (priv->expanded) {
- gtk_widget_show_all (GTK_WIDGET (tile));
- } else {
- gtk_widget_show_all (GTK_WIDGET (tile));
- gtk_widget_hide (priv->table);
- gtk_widget_hide (priv->image);
- }
-}
-
-static gboolean
-tracker_metadata_tile_toggle_view (GtkWidget *button, TrackerMetadataTile *tile)
-{
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- if (priv->expanded) {
- gtk_widget_hide (priv->image);
- gtk_widget_hide (priv->table);
- gtk_arrow_set (GTK_ARROW (priv->arrow),
- GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
- gtk_alignment_set_padding (GTK_ALIGNMENT (priv->align), 1, 1, 4, 4);
- } else {
- gtk_widget_show (priv->image);
- gtk_widget_show (priv->table);
- gtk_arrow_set (GTK_ARROW (priv->arrow),
- GTK_ARROW_DOWN, GTK_SHADOW_NONE);
- gtk_alignment_set_padding (GTK_ALIGNMENT (priv->align), 6, 6, 4, 4);
- }
- priv->expanded = !priv->expanded;
- return FALSE;
-}
-
-static void
-draw (GtkWidget *widget, cairo_t *cr)
-{
- TrackerMetadataTile *tile;
- TrackerMetadataTilePrivate *priv;
- double width, height;
- GtkStyle *style;
- GdkColor step1;
- GdkColor step2;
-
- tile = TRACKER_METADATA_TILE (widget);
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- width = widget->allocation.width;
- height = widget->allocation.height;
-
- style = gtk_widget_get_style (widget);
- step1 = style->base[GTK_STATE_NORMAL];
- step2 = style->bg[GTK_STATE_SELECTED];
-
- /* clear window to base[NORMAL] */
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- gdk_cairo_set_source_color (cr, &step1);
- cairo_paint (cr);
-
- cairo_move_to(cr, 0, 0);
- cairo_set_line_width(cr, 1.0);
-
- cairo_pattern_t *pat;
- cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
-
- /* main gradient */
- pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, height);
- cairo_pattern_add_color_stop_rgba (pat, 0.0, step2.red/65535.0,
- step2.green/65535.0,
- step2.blue/65535.0,
- 0.05);
- cairo_pattern_add_color_stop_rgba ( pat, 1.0, step2.red/65535.0,
- step2.green/65535.0,
- step2.blue/65535.0,
- 0.5);
-
- cairo_rectangle (cr, 0, 0, width, height);
- cairo_set_source(cr, pat);
- cairo_fill(cr);
- cairo_pattern_destroy(pat);
-
- /* border line */
- cairo_set_source_rgba (cr, step2.red/65535.0,
- step2.green/65535.0,
- step2.blue/65535.0,
- 0.7);
- cairo_move_to (cr, 0, 0);
- cairo_line_to (cr, width, 0);
- cairo_stroke (cr);
-
- /* highlight line */
- cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.5);
- cairo_move_to (cr, 0, 1);
- cairo_line_to (cr, width, 1);
- cairo_stroke (cr);
-
- if (!priv->expanded)
- return;
- /* mime icon */
- if (priv->preview != NULL) {
- double x, y;
- x = width - gdk_pixbuf_get_width (priv->preview);
- y = height - gdk_pixbuf_get_height (priv->preview)+5;
- gdk_cairo_set_source_pixbuf (cr, priv->preview, x, y);
- cairo_paint_with_alpha (cr, 0.2);
- }
- /* watermark */
- if (priv->type == NULL)
- return;
-
- cairo_text_extents_t extents;
- double x,y;
- int font_slant = CAIRO_FONT_SLANT_NORMAL;
- int font_weight = CAIRO_FONT_WEIGHT_NORMAL;
-
- cairo_select_font_face (cr, "Sans",font_slant, font_weight);
- cairo_set_font_size (cr, 40);
-
- cairo_text_extents (cr, priv->type, &extents);
- x = (width)-(extents.width + extents.x_bearing)-90;
- y = (height)-(extents.height + extents.y_bearing)-5;
-
-
- /* shadow */
- cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.05);
- cairo_move_to (cr, x-1, y-1);
- cairo_show_text (cr, priv->type);
-
- /*main text */
- cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.1);
- cairo_move_to (cr, x, y);
- cairo_show_text (cr, priv->type);
-}
-
-static gboolean
-tracker_metadata_tile_expose_event (GtkWidget *widget, GdkEventExpose *event)
-{
- cairo_t *cr;
- cr = gdk_cairo_create (widget->window);
- draw (widget, cr);
- cairo_destroy (cr);
-
- return GTK_WIDGET_CLASS(parent_class)->expose_event(widget, event);
-}
-
-static void
-tracker_metadata_tile_class_init (TrackerMetadataTileClass *klass)
-{
- GObjectClass *gobject_class;
- GtkWidgetClass *widget_class;
-
- parent_class = g_type_class_peek_parent (klass);
- widget_class = GTK_WIDGET_CLASS(klass);
-
- gobject_class = G_OBJECT_CLASS (klass);
- //gobject_class->finalize = finalize;
-
- widget_class->expose_event = tracker_metadata_tile_expose_event;
-
- g_type_class_add_private (gobject_class, sizeof (TrackerMetadataTilePrivate));
-}
-
-static void
-tracker_metadata_tile_init (TrackerMetadataTile *tile)
-{
- GtkWidget *align, *button, *image;
- GtkWidget *label, *table, *arrow;
- GtkWidget *tag_bar;
- GtkWidget *hbox, *vbox, *box;
-
- TrackerMetadataTilePrivate *priv;
-
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- gtk_widget_set_app_paintable (GTK_WIDGET(tile), TRUE);
-
- priv->expanded = TRUE;
- priv->type = NULL;
- priv->preview = NULL;
-
- align = gtk_alignment_new (0.5, 0.5, 1, 1);
- priv->align = align;
- gtk_alignment_set_padding (GTK_ALIGNMENT (align), 6, 6, 4, 4);
- gtk_container_add (GTK_CONTAINER (tile), align);
- gtk_widget_show (align);
-
- /* main hbox */
- box = gtk_hbox_new (FALSE, 6);
- gtk_container_add (GTK_CONTAINER (align), box);
- gtk_widget_show (box);
-
- /* Image widget */
- image = gtk_image_new ();
- priv->image = image;
- gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
- gtk_widget_show (image);
-
- /* center vbox */
- vbox = gtk_vbox_new (FALSE, 4);
- gtk_box_pack_start (GTK_BOX (box), vbox, TRUE, TRUE, 0);
- gtk_widget_show (vbox);
-
- /* arrow & title */
- button = gtk_button_new ();
- priv->expander = button;
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
- gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
- gtk_widget_show (button);
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (tracker_metadata_tile_toggle_view), (gpointer)tile);
-
- hbox = gtk_hbox_new (FALSE, 4);
- gtk_container_add (GTK_CONTAINER(button), hbox);
- gtk_widget_show (hbox);
-
- arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
- priv->arrow = arrow;
- gtk_box_pack_start (GTK_BOX(hbox), arrow, FALSE, FALSE, 0);
- gtk_widget_show (arrow);
-
- label = gtk_label_new (" ");
- priv->title = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
- gtk_widget_show (label);
-
- /* info table */
- table = gtk_table_new (3, 3, FALSE);
- priv->table = table;
- gtk_table_set_row_spacings (GTK_TABLE (table), 6);
- gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
- gtk_widget_show (table);
-
- label = gtk_label_new (" ");
- priv->info1 = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE(table), label, 0, 1, 0, 1);
-
- label = gtk_label_new (" ");
- priv->info2 = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE(table), label, 0, 1, 1, 2);
-
- label = gtk_label_new (" ");
- priv->info3 = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE(table), label, 1, 2, 0, 1);
-
- label = gtk_label_new (" ");
- priv->info4 = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE(table), label, 1, 2, 1, 2);
-
- label = gtk_label_new (" ");
- priv->info5 = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE(table), label, 2, 3, 0, 1);
-
- label = gtk_label_new (" ");
- priv->info6 = label;
- gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE(table), label, 2, 3, 1, 2);
-
- /* tag bar */
- tag_bar = tracker_tag_bar_new ();
- priv->tag_bar = tag_bar;
- gtk_widget_show_all (tag_bar);
-
- gtk_table_attach_defaults (GTK_TABLE (table), tag_bar, 0, 3, 2, 3);
- gtk_widget_show_all (table);
-}
-
-GtkWidget *
-tracker_metadata_tile_new (void)
-{
- TrackerClient *client;
- GtkWidget *tile;
- TrackerMetadataTilePrivate *priv;
-
- tile = g_object_new (TRACKER_TYPE_METADATA_TILE, NULL);
- priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
-
- client = tracker_connect (TRUE);
- priv->client = client;
- return tile;
-}
diff --git a/src/libtracker-gtk/tracker-metadata-tile.h b/src/libtracker-gtk/tracker-metadata-tile.h
deleted file mode 100644
index c7bd77eb1..000000000
--- a/src/libtracker-gtk/tracker-metadata-tile.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * Copyright (C) 2007 Neil Jagdish Patel <njpatel@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author : Neil Jagdish Patel <njpatel@gmail.com>
- */
-
-#ifndef TRACKER_METADATA_TILE_H
-#define TRACKER_METADATA_TILE_H
-
-#include <gtk/gtk.h>
-#include <tracker.h>
-
-
-#define TRACKER_TYPE_METADATA_TILE (tracker_metadata_tile_get_type ())
-#define TRACKER_METADATA_TILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_TYPE_METADATA_TILE, TrackerMetadataTile))
-#define TRACKER_METADATA_TILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_TYPE_METADATA_TILE, TrackerMetadataTileClass))
-#define TRACKER_IS_METADATA_TILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_TYPE_METADATA_TILE))
-#define TRACKER_IS_METADATA_TILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_TYPE_METADATA_TILE))
-#define TRACKER_METADATA_TILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TYPE_METADATA_TILE, TrackerMetadataTileClass))
-
-typedef struct TrackerMetadataTilePrivate TrackerMetadataTilePrivate;
-
-typedef struct TrackerMetadataTile {
- GtkEventBox parent;
-
-} TrackerMetadataTile;
-
-typedef struct {
- GtkEventBoxClass parent_class;
-
-} TrackerMetadataTileClass;
-
-GType tracker_metadata_tile_get_type (void);
-
-GtkWidget* tracker_metadata_tile_new (void);
-
-void tracker_metadata_tile_set_uri (TrackerMetadataTile *tile,
- const gchar *uri,
- ServiceType service_type,
- const gchar *type,
- GdkPixbuf *icon);
-
-#endif /* TRACKER_METADATA_TILE_H */
diff --git a/src/libtracker-gtk/tracker-tag-bar.c b/src/libtracker-gtk/tracker-tag-bar.c
deleted file mode 100644
index 51ca1e223..000000000
--- a/src/libtracker-gtk/tracker-tag-bar.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * Copyright (C) 2007 Neil Jagdish Patel <njpatel@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author : Neil Jagdish Patel <njpatel@gmail.com>
- */
-
-#include <config.h>
-
-#include <string.h>
-
-#include <glib/gi18n-lib.h>
-
-#include "tracker-tag-bar.h"
-#include "tracker-utils.h"
-
-
-#define TRACKER_TAG_BAR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_TAG_BAR, TrackerTagBarPrivate))
-
-G_DEFINE_TYPE (TrackerTagBar, tracker_tag_bar, GTK_TYPE_HBOX);
-
-/* FORWARD DECLARATIONS */
-
-static void _tag_bar_add_tag (TrackerTagBar *bar, GtkWidget *box, const char *tag);
-static void _tag_launch_search (const gchar *tag);
-
-/* STRUCTS & ENUMS */
-typedef struct _TrackerTagBarPrivate TrackerTagBarPrivate;
-
-struct _TrackerTagBarPrivate
-{
- TrackerClient *client;
-
- gchar *uri;
- const gchar *active_tag;
-
- ServiceType type;
-
- GtkWidget *tag_box;
- GtkWidget *add_button;
- GtkWidget *menu;
-
- GtkWidget *entry_box;
- GtkWidget *entry;
-};
-
-/* CALLBACKS */
-static void
-_keywords_reply (char **array, GError *error, TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
- gchar **meta = NULL;
- gchar * tag = NULL;
- gint i = 0;
- GtkWidget *hbox;
-
- if (error) {
- g_print ("%s\n", error->message);
- g_clear_error(&error);
- return;
- }
- if (array == NULL) {
- return;
- }
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- hbox = gtk_hbox_new (FALSE, 5);
- for (meta = array; *meta; meta++) {
- tag = meta[0];
- if (strlen (tag) > 0) {
- _tag_bar_add_tag (bar, hbox, tag);
- i++;
- }
-
- }
- if (priv->tag_box) {
- gtk_widget_destroy(priv->tag_box);
- }
- priv->tag_box = hbox;
- gtk_box_pack_start (GTK_BOX(bar), hbox, FALSE, FALSE, 0);
-
- gtk_widget_show_all (hbox);
-
- g_strfreev (array);
-}
-
-static gboolean
-_on_tag_button_press_event (GtkWidget *button,
- GdkEventButton *event,
- TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
- GtkWidget *label;
- const gchar *tag;
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- label = gtk_bin_get_child (GTK_BIN (button));
- tag = gtk_label_get_text (GTK_LABEL (label));
-
- switch (event->button) {
- case 1:
- _tag_launch_search (tag);
- break;
- case 3:
- priv->active_tag = tag;
- gtk_menu_popup (GTK_MENU (priv->menu),
- NULL, NULL, NULL, bar, 3, event->time);
-
- break;
- default:
- break;
-
- }
- return FALSE;
-}
-
-static void
-_tag_launch_search (const gchar *tag)
-{
- GdkScreen *screen;
- gchar *command;
- GError *error = NULL;
-
- screen = gdk_screen_get_default ();
- command = g_strdup_printf ("tracker-search-tool %s", tag);
-
- if (! gdk_spawn_command_line_on_screen (screen, command, &error)) {
- if (error) {
- g_print ("Error : %s", error->message);
- g_error_free (error);
- }
- }
- g_free (command);
-}
-
-static void
-search_tag_activate_cb(GtkMenuItem *menu_item, TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- _tag_launch_search (priv->active_tag);
-}
-
-static void
-remove_tag_activate_cb(GtkMenuItem *menu_item, TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
- GError *error = NULL;
- char *args[1];
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- args[0] = g_strdup (priv->active_tag);
-
- tracker_keywords_remove(priv->client, priv->type, priv->uri,
- args, &error);
- if (error) {
- g_print ("Tag Removal Error : %s", error->message);
- return;
- }
- gchar *temp = g_strdup (priv->uri);
- tracker_tag_bar_set_uri (bar, priv->type, temp);
- g_free (temp);
-}
-
-static void
-_on_close_add_tag (GtkButton *but, TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- gtk_widget_destroy (priv->entry_box);
- priv->entry_box = priv->entry = NULL;
-
- gtk_widget_show (priv->tag_box);
- gtk_widget_show (priv->add_button);
-}
-
-static void
-_on_apply_add_tag (GtkButton *but, TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
- const gchar *text;
- gchar **tags;
- GError *error = NULL;
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- text = gtk_entry_get_text (GTK_ENTRY (priv->entry));
-
- if (strcmp (text, "Type tags you want to add here, separated by commas") != 0) {
-
- tags = g_strsplit (text, ",", 0);
-
- tracker_keywords_add(priv->client, priv->type, priv->uri,
- tags, &error);
- if (error) {
- g_print ("Tag Addition Error : %s", error->message);
- return;
- }
- }
-
- _on_close_add_tag (but, bar);
- gchar *temp = g_strdup (priv->uri);
- tracker_tag_bar_set_uri (bar, priv->type, temp);
- g_free (temp);
-}
-
-static void
-_on_entry_activate (GtkEntry *entry, TrackerTagBar *bar)
-{
- _on_apply_add_tag (NULL, bar);
-}
-
-static void
-_on_add_tag_clicked (GtkButton *but, TrackerTagBar *bar)
-{
- TrackerTagBarPrivate *priv;
- GtkWidget *hbox;
- GtkWidget *entry;
- GtkWidget *image;
- GtkWidget *button;
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- hbox = gtk_hbox_new (FALSE, 4);
- priv->entry_box = hbox;
-
- entry = gtk_entry_new ();
- priv->entry = entry;
- gtk_entry_set_text (GTK_ENTRY (entry), _("Type tags you want to add here, separated by commas"));
- gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
- gtk_box_pack_start (GTK_BOX(hbox), entry, TRUE, TRUE, 0);
-
- g_signal_connect (G_OBJECT (entry), "activate",
- G_CALLBACK (_on_entry_activate), bar);
-
- image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
-
- button = gtk_button_new ();
- gtk_box_pack_start (GTK_BOX(hbox), button, FALSE, FALSE, 0);
- gtk_button_set_image (GTK_BUTTON (button), image);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (_on_close_add_tag), bar);
-
- image = gtk_image_new_from_stock (GTK_STOCK_APPLY, GTK_ICON_SIZE_MENU);
-
- button = gtk_button_new ();
- gtk_box_pack_start (GTK_BOX(hbox), button, FALSE, FALSE, 0);
- gtk_button_set_image (GTK_BUTTON (button), image);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-
-
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (_on_apply_add_tag), bar);
-
- gtk_box_pack_start (GTK_BOX (bar), hbox, TRUE, TRUE, 0);
- gtk_widget_show_all (hbox);
- gtk_widget_hide (priv->tag_box);
- gtk_widget_hide (priv->add_button);
- gtk_widget_grab_focus (entry);
-}
-
-/* UTILS */
-
-static void
-_tag_bar_add_tag (TrackerTagBar *bar, GtkWidget *box, const char *tag)
-{
- GtkWidget *button;
- GtkWidget *label;
- gchar *temp;
-
- temp = g_strdup_printf ("<b><u>%s</u></b>", tag);
-
- label = gtk_label_new (" ");
- gtk_label_set_markup (GTK_LABEL (label), temp);
-
- button = gtk_button_new ();
- gtk_container_add (GTK_CONTAINER (button), label);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
- gtk_box_pack_start (GTK_BOX(box), button, FALSE, FALSE, 0);
-
- tracker_set_atk_relationship(button, ATK_RELATION_LABELLED_BY,
- label);
- tracker_set_atk_relationship(label, ATK_RELATION_LABEL_FOR,
- button);
-
- g_signal_connect (G_OBJECT (button), "button-press-event",
- G_CALLBACK (_on_tag_button_press_event), bar);
-
- g_free (temp);
-}
-
-/* HEADER FUNCTIONS */
-void
-tracker_tag_bar_set_uri (TrackerTagBar *bar, ServiceType type, const gchar *uri)
-{
- TrackerTagBarPrivate *priv;
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (bar);
-
- if (priv->uri)
- g_free (priv->uri);
- priv->uri = g_strdup (uri);
- priv->type = type;
-
- tracker_keywords_get_async (priv->client, priv->type, uri,
- (TrackerArrayReply)_keywords_reply,
- bar);
-}
-
-/* TRACKER TAG BAR NEW */
-static void
-tracker_tag_bar_class_init (TrackerTagBarClass *class)
-{
- GObjectClass *obj_class;
- GtkWidgetClass *widget_class;
-
- obj_class = G_OBJECT_CLASS (class);
- widget_class = GTK_WIDGET_CLASS (class);
-
- g_type_class_add_private (obj_class, sizeof (TrackerTagBarPrivate));
-}
-
-static void
-tracker_tag_bar_init (TrackerTagBar *tag_bar)
-{
- TrackerTagBarPrivate *priv;
- GtkWidget *hbox;
- GtkWidget *label;
- GtkWidget *button;
- GtkWidget *image;
- GtkWidget *menu;
- GtkWidget *item;
-
- priv = TRACKER_TAG_BAR_GET_PRIVATE (tag_bar);
-
- priv->uri = NULL;
- priv->active_tag = NULL;
-
- gtk_container_set_border_width (GTK_CONTAINER(tag_bar), 0);
-
- label = gtk_label_new (_("Tags :"));
- gtk_box_pack_start (GTK_BOX(tag_bar), label, FALSE, TRUE, 0);
-
- hbox = gtk_hbox_new (FALSE, 4);
- priv->tag_box = hbox;
- gtk_box_pack_start (GTK_BOX(tag_bar), hbox, FALSE, TRUE, 0);
-
- image = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_MENU);
-
- button = gtk_button_new ();
- priv->add_button = button;
- gtk_box_pack_start (GTK_BOX(tag_bar), button, FALSE, FALSE, 0);
- gtk_button_set_image (GTK_BUTTON (button), image);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-
- tracker_set_atk_relationship(button, ATK_RELATION_LABELLED_BY,
- label);
- tracker_set_atk_relationship(label, ATK_RELATION_LABEL_FOR,
- button);
-
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (_on_add_tag_clicked), tag_bar);
-
- menu = gtk_menu_new();
- priv->menu = menu;
-
- /* Search For Tag */
- item = gtk_image_menu_item_new_with_mnemonic(_("_Search For Tag"));
- gtk_widget_show(item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(search_tag_activate_cb), tag_bar);
-
- image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
- gtk_widget_show(image);
-
- /* Remove Tag */
- item = gtk_image_menu_item_new_with_mnemonic(_("_Remove Tag"));
- gtk_widget_show(item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(remove_tag_activate_cb), tag_bar);
-
- image = gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
- gtk_widget_show(image);
-}
-
-GtkWidget *
-tracker_tag_bar_new (void)
-{
- TrackerClient *client;
- GtkWidget *tag_bar;
- TrackerTagBarPrivate *priv;
-
- tag_bar = g_object_new (TRACKER_TYPE_TAG_BAR,
- "homogeneous", FALSE,
- "spacing", 0 ,
- NULL);
- priv = TRACKER_TAG_BAR_GET_PRIVATE (tag_bar);
-
- client = tracker_connect (TRUE);
- priv->client = client;
- return tag_bar;
-}
diff --git a/src/libtracker-gtk/tracker-tag-bar.h b/src/libtracker-gtk/tracker-tag-bar.h
deleted file mode 100644
index b6c067009..000000000
--- a/src/libtracker-gtk/tracker-tag-bar.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * Copyright (C) 2007 Neil Jagdish Patel <njpatel@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author : Neil Jagdish Patel <njpatel@gmail.com>
- */
-
-#ifndef TRACKER_TAG_BAR_H
-#define TRACKER_TAG_BAR_H
-
-#include <gtk/gtk.h>
-#include <tracker.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_TAG_BAR (tracker_tag_bar_get_type ())
-#define TRACKER_TAG_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_TYPE_TAG_BAR, TrackerTagBar))
-#define TRACKER_TAG_BAR_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), TRACKER_TAG_BAR, TrackerTagBarClass))
-#define TRACKER_IS_TAG_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_TYPE_TAG_BAR))
-#define TRACKER_IS_TAG_BAR_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), TRACKER_TYPE_TAG_BAR))
-#define TRACKER_TAG_BAR_GET_CLASS (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TYPE_TAG_BAR, TrackerTagBarClass))
-
-typedef struct _TrackerTagBar TrackerTagBar;
-typedef struct _TrackerTagBarClass TrackerTagBarClass;
-
-struct _TrackerTagBar
-{
- GtkHBox parent;
-};
-
-struct _TrackerTagBarClass
-{
- GtkHBoxClass parent_class;
-};
-
-GtkWidget *tracker_tag_bar_new (void);
-
-/*
-uri has to be a local uri i.e.
-'/home/john/doe.mp3' not 'file:///home/john/doe.mp3'
-*/
-void tracker_tag_bar_set_uri (TrackerTagBar *bar,
- ServiceType type,
- const gchar *uri
- );
-
-GType tracker_tag_bar_get_type (void);
-
-G_END_DECLS
-
-#endif /* TRACKER_TAG_BAR_H */
diff --git a/src/libtracker-gtk/tracker-ui.c b/src/libtracker-gtk/tracker-ui.c
deleted file mode 100644
index 66d4c2390..000000000
--- a/src/libtracker-gtk/tracker-ui.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * libtracker-gtk/tracker-ui.c - Functions for creating tracker centric UI
- * elemetents.
- *
- * Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#include "tracker-keyword-store.h"
-#include "tracker-ui.h"
-
-/**
- * tracker_render_emblem_pixbuf_cb:
- *
- * designed to be used as a gtk_cell_layout_set_cell_data_func. Returns the
- * emblem pixbuf for the keyword in the ListStore to which it is rendering
- *
- **/
-void
-tracker_render_emblem_pixbuf_cb (GtkCellLayout *cell_layout,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gpointer icon_theme)
-{
- char *stock_id;
- GdkPixbuf *pixbuf;
- GtkIconTheme *theme;
-
- theme = GTK_ICON_THEME (icon_theme);
-
- gtk_tree_model_get (tree_model, iter, TRACKER_KEYWORD_STORE_IMAGE_URI, &stock_id, -1);
- if (stock_id == NULL) {
- stock_id = g_strdup ("emblem-generic");
- }
-
- pixbuf = gtk_icon_theme_load_icon (theme, stock_id, 24, 0, NULL);
- if (pixbuf != NULL) {
- g_object_set (cell, "pixbuf", pixbuf, NULL);
- g_object_unref (pixbuf);
- } else {
- g_warning("ICON NOT FOUND\n");
- }
-
- g_free (stock_id);
-}
diff --git a/src/libtracker-gtk/tracker-ui.h b/src/libtracker-gtk/tracker-ui.h
deleted file mode 100644
index d4d3a612d..000000000
--- a/src/libtracker-gtk/tracker-ui.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * libtracker-gtk/tracker-ui.c - Functions for creating tracker centric UI
- * elemetents.
- *
- * Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TRACKER_UI_H
-#define TRACKER_UI_H
-
-#include <glib.h>
-#include <gtk/gtk.h>
-
-/**
- * The GtkTargetEntry to use as the drag type when
- * dragging and dropping keywords
- **/
-const GtkTargetEntry KEYWORD_DRAG_TYPES[] = {
- {"property/keyword", 0, 0 }
-};
-
-void
-tracker_render_emblem_pixbuf_cb (GtkCellLayout *cell_layout,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gpointer user_data);
-
-#endif /* TRACKER_UI_H */
diff --git a/src/libtracker-gtk/tracker-utils.c b/src/libtracker-gtk/tracker-utils.c
deleted file mode 100644
index 20ae42c84..000000000
--- a/src/libtracker-gtk/tracker-utils.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * libtracker-gtk/tracker-utils.c - Grab bag of functions for manuipulating
- * tracker results into more Gtk friedly types.
- *
- * Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-
-#include "tracker-utils.h"
-
-
-GList *
-tracker_keyword_array_to_glist (gchar **array)
-{
- GList *list = NULL;
- gchar **meta = NULL;
-
- if (!array) {
- return NULL;
- }
-
- for (meta = array; *meta; meta++) {
- gchar *name = g_strdup (*meta);
- list = g_list_prepend (list, name);
- }
-
- return list;
-}
-
-GList *
-tracker_get_all_keywords (TrackerClient *tracker_client)
-{
- GPtrArray *out_array;
- GList *list = NULL;
- GError *error = NULL;
-
- out_array = tracker_keywords_get_list (tracker_client, SERVICE_FILES, &error);
-
- if (!error && out_array) {
- guint i;
- for (i = 0; i < out_array->len; i++) {
- gchar **names = out_array->pdata[i];
- if (names) {
- gchar *name = names[0];
- if (strlen (name) > 2) {
- list = g_list_prepend(list, name);
- }
- }
- }
- g_ptr_array_free (out_array, TRUE);
- }
-
- g_clear_error (&error);
-
- return list;
-}
-
-/* Creates a tree model containing the keywords in List
-this simple treemodel has a single column containing the keyword name*/
-GtkTreeModel *
-tracker_create_simple_keyword_liststore (const GList *list)
-{
- GtkListStore *store;
- const GList *tmp;
-
- store = gtk_list_store_new (1, G_TYPE_STRING);
-
- for (tmp = list; tmp; tmp = tmp->next) {
- gchar *keyword = keyword = tmp->data;
-
- gtk_list_store_insert_with_values (store,
- NULL,
- 0,
- 0,
- keyword,
- -1);
- }
-
- return GTK_TREE_MODEL (store);
-}
-
-void
-tracker_set_atk_relationship(GtkWidget *obj1, int relation_type,
- GtkWidget *obj2)
-{
- AtkObject *atk_obj1, *atk_obj2, *targets[1];
- AtkRelationSet *atk_rel_set;
- AtkRelation *atk_rel;
-
- atk_obj1 = gtk_widget_get_accessible (GTK_WIDGET (obj1));
- atk_obj2 = gtk_widget_get_accessible (GTK_WIDGET (obj2));
- atk_rel_set = atk_object_ref_relation_set (atk_obj1);
- targets[0] = atk_obj2;
- atk_rel = atk_relation_new (targets, 1, relation_type);
- atk_relation_set_add (atk_rel_set, atk_rel);
- g_object_unref (G_OBJECT (atk_rel));
-}
diff --git a/src/libtracker-gtk/tracker-utils.h b/src/libtracker-gtk/tracker-utils.h
deleted file mode 100644
index 6fe3192fa..000000000
--- a/src/libtracker-gtk/tracker-utils.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
- *
- * libtracker-gtk/tracker-utils.c - Grab bag of functions for manuipulating
- * tracker results into more Gtk friedly types.
- *
- * Copyright (C) 2007 John Stowers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TRACKER_UTILS_H
-#define TRACKER_UTILS_H
-
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#include <tracker.h>
-
-GList * tracker_keyword_array_to_glist (gchar **array);
-GList * tracker_get_all_keywords (TrackerClient *tracker_client);
-GtkTreeModel * tracker_create_simple_keyword_liststore (const GList *list);
-void tracker_set_atk_relationship(GtkWidget *obj1, int relation_type,
- GtkWidget *obj2);
-#endif /* TRACKER_UTILS_H */
diff --git a/src/libtracker/COPYING.LIB b/src/libtracker/COPYING.LIB
deleted file mode 100644
index 2d2d780e6..000000000
--- a/src/libtracker/COPYING.LIB
+++ /dev/null
@@ -1,510 +0,0 @@
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations
-below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it
-becomes a de-facto standard. To achieve this, non-free programs must
-be allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control
-compilation and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at least
- three years, to give the same user the materials specified in
- Subsection 6a, above, for a charge no more than the cost of
- performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply, and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License
-may add an explicit geographical distribution limitation excluding those
-countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms
-of the ordinary General Public License).
-
- To apply these terms, attach the following notices to the library.
-It is safest to attach them to the start of each source file to most
-effectively convey the exclusion of warranty; and each file should
-have at least the "copyright" line and a pointer to where the full
-notice is found.
-
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or
-your school, if any, to sign a "copyright disclaimer" for the library,
-if necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James
- Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/src/libtracker/Makefile.am b/src/libtracker/Makefile.am
deleted file mode 100644
index d95ce13a1..000000000
--- a/src/libtracker/Makefile.am
+++ /dev/null
@@ -1,82 +0,0 @@
-INCLUDES = \
- -DTRACKER_DATADIR=\""$(datadir)"\" \
- -DTRACKER_LOCALEDIR=\""$(localedir)"\" \
- $(GLIB2_CFLAGS) \
- $(DBUS_CFLAGS)
-
-BUILT_SOURCES = tracker-client.h
-
-lib_LTLIBRARIES = libtrackerclient.la
-
-libtrackerclient_la_LIBADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS)
-
-libtrackerclient_la_SOURCES = tracker.c
-libtrackerclient_la_LDFLAGS = -version-info 0:0:0
-
-tracker-client.h: $(top_srcdir)/data/tracker-introspect.xml Makefile.am
- dbus-binding-tool --prefix=client_object --mode=glib-client --output=tracker-client.h $(top_srcdir)/data/tracker-introspect.xml
-
-include_HEADERS = tracker.h tracker-client.h
-
-bin_PROGRAMS = tracker-search tracker-query tracker-meta-folder tracker-stats tracker-tag tracker-files tracker-status tracker-unique
-
-tracker_search_SOURCES = tracker-search.c
-
-tracker_search_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-tracker_query_SOURCES = tracker-query.c
-
-tracker_query_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-tracker_meta_folder_SOURCES = tracker-get-meta-for-folder.c
-
-tracker_meta_folder_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-tracker_stats_SOURCES = tracker-stats.c
-
-tracker_stats_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-tracker_status_SOURCES = tracker-status.c
-
-tracker_status_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-
-tracker_tag_SOURCES = tracker-tag.c
-
-tracker_tag_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-tracker_files_SOURCES = tracker-files.c
-
-tracker_files_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-tracker_unique_SOURCES = tracker-unique.c
-
-tracker_unique_LDADD = $(GLIB2_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJECT_LIBS) \
- libtrackerclient.la
-
-CLEANFILES = $(BUILT_SOURCES)
diff --git a/src/libtracker/tracker-files.c b/src/libtracker/tracker-files.c
deleted file mode 100644
index 9f42e4901..000000000
--- a/src/libtracker/tracker-files.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <locale.h>
-#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-
-#include "../libtracker/tracker.h"
-
-#define USAGE "usage: \ntracker-files -s ServiceType\t: Gets files with ServiceType (Documents, Music, Images, Videos, Text, Development, Other, Applications, Folders, Files, Conversations, Emails, EmailAttachments)\ntracker-files -m Mime1 [Mime2...] : Get all files that match one of the specified mime types\n"
-
-
-
-int
-main (int argc, char **argv)
-{
-
- TrackerClient *client = NULL;
- GError *error = NULL;
- ServiceType type;
-
-
- setlocale (LC_ALL, "");
-
- if (argc < 3) {
- g_print (USAGE);
- return 1;
- }
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_print ("Could not initialise Tracker - exiting...\n");
- return 1;
- }
-
- if (strcmp (argv[1], "-s") == 0) {
-
- if (argc != 3) {
- g_print (USAGE);
- return 1;
- } else {
-
- type = tracker_service_name_to_type (argv[2]);
-
- char **array = NULL;
-
- array = tracker_files_get_by_service_type (client, -1, type, 0, 512, &error);
-
- if (error) {
- g_warning ("An error has occurred : %s", error->message);
- g_error_free (error);
- return 1;
- }
-
- if (!array) {
- g_print ("no results were found matching your query\n");
- return 1;
- }
-
- char **p_strarray;
-
- for (p_strarray = array; *p_strarray; p_strarray++) {
- g_print ("%s\n", *p_strarray);
- }
-
- g_strfreev (array);
- }
-
- } else if (strcmp (argv[1], "-m") == 0) {
-
- if (argc < 3) {
- g_print (USAGE);
- return 1;
- } else {
-
- char **mimes = NULL;
- char **array = NULL;
- int i;
-
- mimes = g_new (char *, (argc-1));
-
- for (i=0; i < (argc-2); i++) {
- mimes[i] = g_locale_to_utf8 (argv[i+2], -1, NULL, NULL, NULL);
- }
- mimes[argc-2] = NULL;
-
- array = tracker_files_get_by_mime_type (client, -1, mimes, 0, 512, &error);
-
- g_strfreev (mimes);
-
- if (error) {
- g_warning ("An error has occurred : %s", error->message);
- g_error_free (error);
- return 1;
- }
-
- if (!array) {
- g_print ("no results were found matching your query\n");
- return 1;
- }
-
- char **p_strarray;
-
- for (p_strarray = array; *p_strarray; p_strarray++) {
- g_print ("%s\n", *p_strarray);
- }
-
- g_strfreev (array);
- }
-
- } else {
- g_print (USAGE);
- return 1;
- }
-
- tracker_disconnect (client);
-
- return 0;
-}
diff --git a/src/libtracker/tracker-get-meta-for-folder.c b/src/libtracker/tracker-get-meta-for-folder.c
deleted file mode 100644
index db9abc79a..000000000
--- a/src/libtracker/tracker-get-meta-for-folder.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <locale.h>
-#include <glib.h>
-#include <glib-object.h>
-
-#include "../libtracker/tracker.h"
-
-
-static void
-get_meta_table_data (gpointer value)
-
-{
- char **meta, **meta_p;
-
- meta = (char **)value;
-
- int i = 0;
- for (meta_p = meta; *meta_p; meta_p++) {
-
- if (i == 0) {
- g_print ("%s : ", *meta_p);
-
- } else {
- g_print ("%s ", *meta_p);
- }
- i++;
- }
- g_print ("\n");
-}
-
-
-
-int
-main (int argc, char **argv)
-{
-
- GPtrArray *out_array = NULL;
- GError *error = NULL;
- TrackerClient *client = NULL;
-
-
- setlocale (LC_ALL, "");
-
- if (argc < 2) {
- g_print ("usage - tracker-meta-folder FOLDER [Metadata1...]\n");
- return 1;
- }
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_print ("Could not initialise Tracker - exiting...\n");
- return 1;
- }
-
-
- char **meta_fields = NULL;
-
- if (argc == 2) {
- meta_fields = g_new (char *, 1);
-
- meta_fields[0] = NULL;
-
- } else if (argc > 2) {
- int i;
-
- meta_fields = g_new (char *, (argc-1));
-
- for (i=0; i < (argc-2); i++) {
- meta_fields[i] = g_locale_to_utf8 (argv[i+2], -1, NULL, NULL, NULL);
- }
- meta_fields[argc-2] = NULL;
- }
-
- char *folder = g_filename_to_utf8 (argv[1], -1, NULL, NULL, NULL);
-
- out_array = tracker_files_get_metadata_for_files_in_folder (client, -1, folder, meta_fields, &error);
-
- g_free (folder);
-
- g_strfreev (meta_fields);
-
- if (error) {
- g_warning ("An error has occurred : %s", error->message);
- g_error_free (error);
- }
-
- if (out_array) {
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, NULL);
- g_ptr_array_free (out_array, TRUE);
- }
-
-
- tracker_disconnect (client);
-
- return 0;
-}
diff --git a/src/libtracker/tracker-query.c b/src/libtracker/tracker-query.c
deleted file mode 100644
index 8a96d2edd..000000000
--- a/src/libtracker/tracker-query.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <locale.h>
-#include <sys/param.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <glib-object.h>
-#include <glib/gstdio.h>
-
-#include "../libtracker/tracker.h"
-
-#include <config.h>
-#ifdef OS_WIN32
-#include "../trackerd/mingw-compat.h"
-#endif
-
-static gchar *search = NULL;
-static gchar **fields = NULL;
-static gchar *service = NULL;
-static gchar *keyword = NULL;
-
-static GOptionEntry entries[] = {
- {"service", 's', 0, G_OPTION_ARG_STRING, &service, "search from a specific service", "service"},
- {"search-term", 't', 0, G_OPTION_ARG_STRING, &search, "adds a fulltext search filter", "search-term"},
- {"keyword", 'k', 0, G_OPTION_ARG_STRING, &keyword, "adds a keyword filter", "keyword"},
- {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &fields, "Metadata Fields", NULL},
- {NULL}
-};
-
-
-static int field_count;
-
-static char *
-realpath_in_utf8 (const char *path)
-{
- char *str_path_tmp = NULL, *str_path = NULL;
-
- str_path_tmp = realpath (path, NULL);
-
- if (str_path_tmp) {
- str_path = g_filename_to_utf8 (str_path_tmp, -1, NULL, NULL, NULL);
-
- g_free (str_path_tmp);
- }
-
- if (!str_path) {
- g_warning ("realpath_in_utf8(): locale to UTF8 failed!");
- return NULL;
- }
-
- return str_path;
-}
-
-static void
-get_meta_table_data (gpointer value)
-
-{
- char **meta, **meta_p;
-
- meta = (char **)value;
-
- int i = 0;
- for (meta_p = meta; *meta_p; meta_p++) {
-
- char *str;
-
- str = g_filename_from_utf8 (*meta_p, -1, NULL, NULL, NULL);
-
- if (i == 0) {
- g_print ("%s : ", str);
-
- } else {
- g_print ("%s, ", *meta_p);
- }
- i++;
- }
- g_print ("\n");
-}
-
-
-
-int
-main (int argc, char **argv)
-{
- GOptionContext *context = NULL;
- ServiceType type;
- char **p_strarray;
-
- char *buffer, *tmp;
- gsize buffer_length;
- GPtrArray *out_array = NULL;
- GError *error = NULL;
- TrackerClient *client = NULL;
-
-
- setlocale (LC_ALL, "");
-
- context = g_option_context_new ("RDFQueryFile [MetaDataField...] ... - perform an rdf query and return results witrh specified metadata fields");
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_parse (context, &argc, &argv, &error);
-
- if (error) {
- g_printerr ("invalid arguments: %s\n", error->message);
- return 1;
- }
-
- if (!fields) {
- g_printerr ("missing input rdf query file, try --help for help\n");
- return 1;
- }
-
-
- if (!service) {
- type = SERVICE_FILES;
- } else {
- type = tracker_service_name_to_type (service);
-
- if (type == SERVICE_OTHER_FILES && g_ascii_strcasecmp (service, "Other")) {
- g_printerr ("service not recognized, searching in Other Files...\n");
- }
- }
-
- char *str_path = realpath_in_utf8 (fields[0]);
-
- if (!str_path) {
- return 1;
- }
-
- if (!g_file_get_contents (str_path, &tmp, &buffer_length, NULL)) {
- g_print ("Could not read file %s\n", str_path);
- return 1;
- }
-
- g_free (str_path);
-
- buffer = g_locale_to_utf8 (tmp, buffer_length, NULL, NULL, NULL);
-
- if (!buffer) {
- g_warning ("Cannot convert query file to UTF8!");
- g_free (tmp);
- return 1;
- }
-
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_print ("Could not initialise Tracker over dbus connection - exiting...\n");
- return 1;
- }
-
- char **meta_fields = NULL;
-
- g_free (fields[0]);
- int i = 0;
- for (p_strarray = fields+1; *p_strarray; p_strarray++) {
- fields[i] = *p_strarray;
- i++;
- }
- fields[i] = NULL;
-
-
- if (i == 0) {
- meta_fields = g_new (char *, 2);
-
- field_count = 1;
-
- meta_fields[0] = g_strdup ("File:Mime");
- meta_fields[1] = NULL;
- g_strfreev (fields);
- fields = meta_fields;
- }
-
- out_array = tracker_search_query (client, -1, type, fields, search, keyword, buffer, 0, 512, FALSE, &error);
-
- g_strfreev (meta_fields);
-
- if (error) {
- g_warning ("An error has occurred : %s\n", error->message);
- g_error_free (error);
- g_free (buffer);
- return 1;
- }
-
- if (out_array) {
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, NULL);
- g_ptr_array_free (out_array, TRUE);
- }
-
-
- tracker_disconnect (client);
-
- g_free (buffer);
-
- return 0;
-}
diff --git a/src/libtracker/tracker-search.c b/src/libtracker/tracker-search.c
deleted file mode 100644
index ec9d843d4..000000000
--- a/src/libtracker/tracker-search.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <locale.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include "../libtracker/tracker.h"
-
-static gint limit = 0;
-static gchar **terms = NULL;
-static gchar *service = NULL;
-static gboolean detailed;
-
-static GOptionEntry entries[] = {
- {"limit", 'l', 0, G_OPTION_ARG_INT, &limit, N_("Limit the number of results showed to N"), N_("N")},
- {"service", 's', 0, G_OPTION_ARG_STRING, &service, N_("Search for a specific service"), N_("SERVICE")},
- {"detailed", 'd', 0, G_OPTION_ARG_NONE, &detailed, N_("Show more detailed results with service and mime type as well"), NULL},
- {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &terms, "search terms", NULL},
- {NULL}
-};
-
-
-static void
-get_meta_table_data (gpointer value)
-
-{
- char **meta, **meta_p;
-
- meta = (char **)value;
-
- int i = 0;
- for (meta_p = meta; *meta_p; meta_p++) {
-
- char *str;
-
- str = g_filename_from_utf8 (*meta_p, -1, NULL, NULL, NULL);
-
- if (i == 0) {
- g_print ("%s : ", str);
-
- } else {
- g_print ("%s, ", *meta_p);
- }
- i++;
- }
- g_print ("\n");
-}
-
-int
-main (int argc, char **argv)
-{
- GOptionContext *context = NULL;
- TrackerClient *client = NULL;
- GError *error = NULL;
- ServiceType type;
- gchar *search;
- gchar *summary;
- gchar **result;
- char **p_strarray;
- GPtrArray *out_array = NULL;
-
- setlocale (LC_ALL, "");
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- /* Translators: this messagge will apper immediately after the */
- /* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE> */
- context = g_option_context_new (_("TERM... - search files for certain terms"));
-
- /* Translators: this message will appear after the usage string */
- /* and before the list of options. */
- summary = g_strconcat (_("Specifying more then one term, will be "
- "showed items containing ALL the specified "
- "terms (term1 AND term2 - logical conjunction)"),
- "\n\n",
- _("The list of recognized services is:"),
- "\n\tDocuments Emails EmailAttachments Music Images Videos Text Development Applications Conversations Folders Files",
- NULL);
-
-#ifdef HAVE_RECENT_GLIB
- g_option_context_set_summary (context, summary);
-#endif /* HAVE_RECENT_GLIB */
-
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_parse (context, &argc, &argv, &error);
-
- g_option_context_free (context);
- g_free (summary);
-
- if (error) {
- g_printerr ("%s: %s", argv[0], error->message);
- g_printerr ("\n");
- g_printerr (_("Try \"%s --help\" for more information."), argv[0]);
- g_printerr ("\n");
- return 1;
- }
-
- if (!terms) {
- g_printerr (_("%s: missing search terms"), argv[0]);
- g_printerr ("\n");
- g_printerr (_("Try \"%s --help\" for more information."), argv[0]);
- g_printerr ("\n");
- return 1;
- }
-
- if (limit <= 0)
- limit = 512;
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_printerr (_("%s: no connection to tracker daemon"), argv[0]);
- g_printerr ("\n");
- g_printerr (_("Ensure \"trackerd\" is running before launch this command."));
- g_printerr ("\n");
-
- return 1;
- }
-
- if (!service) {
- type = SERVICE_FILES;
- } else {
- type = tracker_service_name_to_type (service);
-
- if (type == SERVICE_OTHER_FILES && g_ascii_strcasecmp (service, "Other")) {
- g_printerr (_("Service not recognized, searching in Other Files...\n"));
- }
- }
-
- search = g_strjoinv (" ", terms);
-
- if (!detailed) {
- result = tracker_search_text (client, -1, type, search, 0, limit, &error);
- } else {
- out_array = tracker_search_text_detailed (client, -1, type, search, 0, limit, &error);
- result = NULL;
- }
-
- g_free (search);
-
-
- if (error) {
- g_printerr (_("%s: internal tracker error: %s"),
- argv[0], error->message);
- g_printerr ("\n");
- g_error_free (error);
- return 1;
- }
-
- if ((!detailed && !result) || (detailed && !out_array)) {
- /* FIXME!! coreutilus don't print anything on no-results */
- g_print (_("No results found matching your query"));
- g_print ("\n");
- tracker_disconnect (client);
- return 0;
- }
-
- if (detailed) {
- if (out_array) {
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, NULL);
- g_ptr_array_free (out_array, TRUE);
- }
- tracker_disconnect (client);
- return 0;
- }
-
-
-
- for (p_strarray = result; *p_strarray; p_strarray++) {
- char *s = g_locale_from_utf8 (*p_strarray, -1, NULL, NULL, NULL);
-
- if (!s)
- continue;
-
- g_print ("%s\n", s);
- g_free (s);
- }
-
- g_strfreev (result);
-
- tracker_disconnect (client);
- return 0;
-
-}
diff --git a/src/libtracker/tracker-stats.c b/src/libtracker/tracker-stats.c
deleted file mode 100644
index 1bfe09bd4..000000000
--- a/src/libtracker/tracker-stats.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <locale.h>
-#include <string.h>
-#include <glib.h>
-#include <glib-object.h>
-#include <glib/gi18n.h>
-
-#include "../libtracker/tracker.h"
-
-#define TOTAL_COUNT "Total files indexed"
-
-static void
-get_meta_table_data (gpointer value)
-
-{
- char **meta, **meta_p;
-
- meta = (char **)value;
-
- int i = 0;
- for (meta_p = meta; *meta_p; meta_p++) {
-
- if (i == 0) {
- g_print ("%s : ", *meta_p);
-
- } else {
- g_print ("%s ", *meta_p);
- }
- i++;
- }
- g_print ("\n");
-}
-
-
-
-int
-main (int argc, char **argv)
-{
-
- GPtrArray *out_array = NULL;
- GError *error = NULL;
- GOptionContext *context = NULL;
- TrackerClient *client = NULL;
-
- setlocale (LC_ALL, "");
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- /* Translators: this messagge will apper immediately after the */
- /* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE> */
- context = g_option_context_new (_(" - show number of indexed files for each service"));
-
- g_option_context_parse (context, &argc, &argv, &error);
-
- g_option_context_free (context);
-
- if (error) {
- g_printerr ("%s: %s", argv[0], error->message);
- g_printerr ("\n");
- g_printerr (_("Try \"%s --help\" for more information."), argv[0]);
- g_printerr ("\n");
- return 1;
- }
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_printerr (_("%s: no connection to tracker daemon"), argv[0]);
- g_printerr ("\n");
- g_printerr (_("Ensure \"trackerd\" is running before launch this command."));
- g_printerr ("\n");
- return 1;
- }
-
- out_array = tracker_get_stats (client, &error);
-
- if (error) {
- g_warning ("%s: an error has occurred: %s", argv[0], error->message);
- g_error_free (error);
- }
-
-
- if (out_array) {
- gchar *tmp;
-
- tmp = g_strconcat("\n-------", _("fetching index stats"),
- "---------\n\n", NULL);
-
- g_print (tmp);
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, NULL);
- g_ptr_array_free (out_array, TRUE);
- g_print ("------------------------------------\n\n");
-
- g_free (tmp);
-
- }
-
-
- tracker_disconnect (client);
-
- return 0;
-}
diff --git a/src/libtracker/tracker-status.c b/src/libtracker/tracker-status.c
deleted file mode 100644
index 704db4437..000000000
--- a/src/libtracker/tracker-status.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <locale.h>
-#include <string.h>
-#include <glib.h>
-#include <glib-object.h>
-#include <glib/gi18n.h>
-
-#include "../libtracker/tracker.h"
-
-
-gint
-main (gint argc, gchar *argv[])
-{
- GError *error = NULL;
- TrackerClient *client = NULL;
-
- setlocale (LC_ALL, "");
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_printerr (_("%s: no connection to tracker daemon"), argv[0]);
- g_printerr ("\n");
- g_printerr (_("Ensure \"trackerd\" is running before launch this command."));
- g_printerr ("\n");
- return 1;
- }
-
- gchar* status = tracker_get_status (client, &error);
-
- if (error) {
- g_printerr (_("%s: internal tracker error: %s"),
- argv[0], error->message);
- g_printerr ("\n");
- g_error_free (error);
- return 1;
- }
-
- if (status) g_print ("Tracker daemon's status is %s\n", status);
-
- tracker_disconnect (client);
-
- return 0;
-}
diff --git a/src/libtracker/tracker-tag.c b/src/libtracker/tracker-tag.c
deleted file mode 100644
index b70f6a215..000000000
--- a/src/libtracker/tracker-tag.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <locale.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include "../libtracker/tracker.h"
-
-#ifdef OS_WIN32
-#include "../trackerd/mingw-compat.h"
-#endif
-
-static gchar **add = NULL;
-static gchar **delete = NULL;
-static gchar **search = NULL;
-static gchar **files = NULL;
-static gboolean remove_all = FALSE;
-static gboolean list = FALSE;
-
-static GOptionEntry entries[] = {
- {"add", 'a', 0, G_OPTION_ARG_STRING_ARRAY, &add, N_("Add specified tag to a file"), N_("TAG")},
- {"remove", 'r', 0, G_OPTION_ARG_STRING_ARRAY, &delete, N_("Remove specified tag from a file"), N_("TAG")},
- {"remove-all", 'R', 0, G_OPTION_ARG_NONE, &remove_all, N_("Remove all tags from a file"), NULL},
- {"list", 'l', 0, G_OPTION_ARG_NONE, &list, N_("List all defined tags"), NULL},
- {"search", 's', 0, G_OPTION_ARG_STRING_ARRAY, &search, N_("Search for files with specified tag"), N_("TAG")},
- {G_OPTION_REMAINING, 0, G_OPTION_FLAG_FILENAME, G_OPTION_ARG_STRING_ARRAY, &files, N_("FILE..."), NULL},
- {NULL}
-};
-
-
-static void
-get_meta_table_data (gpointer value)
-
-{
- char **meta, **meta_p;
-
- meta = (char **)value;
-
- int i = 0;
- for (meta_p = meta; *meta_p; meta_p++) {
-
- if (i == 0) {
- g_print ("%s : ", *meta_p);
-
- } else {
- g_print ("%s ", *meta_p);
- }
- i++;
- }
- g_print ("\n");
-}
-
-int
-main (int argc, char **argv)
-{
- TrackerClient *client = NULL;
- GOptionContext *context = NULL;
- GError *error = NULL;
- gchar *example;
- int i = 0, k;
-
- setlocale (LC_ALL, "");
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- /* Translators: this messagge will apper immediately after the */
- /* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE> */
- context = g_option_context_new (_("FILE... - manipulate tags on files"));
-
- example = g_strconcat ("-a ", _("TAG"), " -a ", _("TAG"), " -a ", _("TAG"), NULL);
-
-
-#ifdef HAVE_RECENT_GLIB
- /* Translators: this message will appear after the usage string */
- /* and before the list of options, showing an usage example. */
- g_option_context_set_summary (context,
- g_strconcat(_("To add, remove, or search for multiple tags "
- "at the same time, join multiple options like:"),
- "\n\n\t",
- example, NULL));
-
-#endif /* HAVE_RECENT_GLIB */
-
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_parse (context, &argc, &argv, &error);
-
- g_option_context_free (context);
- g_free (example);
-
- if (error) {
- g_printerr ("%s: %s", argv[0], error->message);
- g_printerr ("\n");
- g_printerr (_("Try \"%s --help\" for more information."), argv[0]);
- g_printerr ("\n");
- return 1;
- }
-
- if (((add || delete || remove_all) && !files) || (remove_all && (add || delete)) || (search && files)) {
- g_printerr (_("%s: invalid arguments"), argv[0]);
- g_printerr ("\n");
- g_printerr (_("Try \"%s --help\" for more information."), argv[0]);
- g_printerr ("\n");
- return 1;
- }
-
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_printerr (_("%s: no connection to tracker daemon"), argv[0]);
- g_printerr ("\n");
- g_printerr (_("Ensure \"trackerd\" is running before launch this command."));
- g_printerr ("\n");
- return 1;
- }
-
-
- if (files) {
- for (i = 0; files[i] != NULL; i++) {
- char resolved_path[1024];
- gchar *tmp = realpath (files[i], resolved_path);
- if (tmp) {
- g_free (files[i]);
- files[i] = g_strdup (tmp);
- } else {
- g_printerr (_("%s: file %s not found"), argv[0], files[i]);
- g_printerr ("\n");
- for (k = i; files[k] != NULL; k++)
- files[k] = files[k+1];
- i--; // Make sure we run over this file again
- }
- }
- }
-
- if (add || delete || remove_all) {
-
- if (add)
- for (i = 0; add[i] != NULL; i++) {
- gchar *tmp = g_locale_to_utf8 (add[i], -1, NULL, NULL, NULL);
- g_free (add[i]);
- add[i] = tmp;
- }
-
- if (delete)
- for (i = 0; delete[i] != NULL; i++) {
- gchar *tmp = g_locale_to_utf8 (delete[i], -1, NULL, NULL, NULL);
- g_free (delete[i]);
- delete[i] = tmp;
- }
-
-
- for (i = 0; files[i] != NULL; i++) {
-
- if (remove_all) {
- tracker_keywords_remove_all (client, SERVICE_FILES, files[i], &error);
-
- if (error) {
- g_printerr (_("%s: internal tracker error: %s"), argv[0], error->message);
- g_printerr ("\n");
- }
- }
-
- if (add) {
- tracker_keywords_add (client, SERVICE_FILES, files[i], add, &error);
-
- if (error) {
- g_printerr (_("%s: internal tracker error: %s"), argv[0], error->message);
- g_printerr ("\n");
- }
- }
-
- if (delete) {
- tracker_keywords_remove (client, SERVICE_FILES, files[i], delete, &error);
-
- if (error) {
- g_printerr (_("%s: internal tracker error: %s"), argv[0], error->message);
- g_printerr ("\n");
- }
- }
-
- }
-
- }
-
- if (((list && !files) || (!files && (!remove_all && !delete && !add))) && !search) {
-
- GPtrArray *out_array = NULL;
-
- out_array = tracker_keywords_get_list (client, SERVICE_FILES, &error);
-
- if (error)
- goto error;
-
- if (out_array) {
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, NULL);
- g_ptr_array_free (out_array, TRUE);
- }
-
- }
-
- if ((list && files) || (files && (!remove_all && !delete && !add))) {
-
- int i = 0;
-
- for (i = 0; files[i] != NULL; i++) {
-
- int j = 0;
- gchar **tags = tracker_keywords_get (client, SERVICE_FILES, files[i], &error);
-
- if (error) {
- g_printerr (_("%s: internal tracker error: %s"), argv[0], error->message);
- g_printerr ("\n");
- }
-
- if (!tags)
- continue;
-
- g_print ("%s:", files[i]);
- for (j = 0; tags[j] != NULL; j++)
- g_print (" %s", tags[j]);
- g_print ("\n");
-
- g_strfreev (tags);
-
- }
-
- }
-
- if (search) {
-
- int i = 0;
-
- for (i = 0; search[i] != NULL; i++) {
- gchar *tmp = g_locale_to_utf8 (search[i], -1, NULL, NULL, NULL);
- g_free (search[i]);
- search[i] = tmp;
- }
-
- gchar **results = tracker_keywords_search (client, -1, SERVICE_FILES, search, 0, 512, &error);
-
- if (error)
- goto error;
-
- if (!results) {
- /* FIXME!! coreutilus don't print anything on no-results */
- g_print (_("No results found matching your query"));
- g_print ("\n");
- }
- else
- for (i = 0; results[i] != NULL; i++)
- g_print ("%s\n", results[i]);
-
- g_strfreev (results);
-
- }
-
- tracker_disconnect (client);
- return 0;
-
-error:
- g_printerr (_("%s: internal tracker error: %s"), argv[0], error->message);
- g_printerr ("\n");
- tracker_disconnect (client);
- return 1;
-}
diff --git a/src/libtracker/tracker-unique.c b/src/libtracker/tracker-unique.c
deleted file mode 100644
index ed9d54b1c..000000000
--- a/src/libtracker/tracker-unique.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <locale.h>
-#include <sys/param.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <glib-object.h>
-#include <glib/gstdio.h>
-
-#include "../libtracker/tracker.h"
-
-#include <config.h>
-#ifdef OS_WIN32
-#include "../trackerd/mingw-compat.h"
-#endif
-
-static char **fields = NULL;
-static gchar *service = NULL;
-static gchar *rdf = NULL;
-static gboolean descending = FALSE;
-
-static GOptionEntry entries[] = {
- {"service", 's', 0, G_OPTION_ARG_STRING, &service, "search from a specific service", "service"},
- {"rdf", 'r', 0, G_OPTION_ARG_STRING, &rdf, "use an rdf query as filter", "rdf"},
- {"desc", 'o', 0, G_OPTION_ARG_NONE, &descending, "sort to descending order", NULL},
- {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &fields, "Required fields", NULL},
- {NULL}
-};
-
-
-static char *
-realpath_in_utf8 (const char *path)
-{
- char *str_path_tmp = NULL, *str_path = NULL;
-
- str_path_tmp = realpath (path, NULL);
-
- if (str_path_tmp) {
- str_path = g_filename_to_utf8 (str_path_tmp, -1, NULL, NULL, NULL);
-
- g_free (str_path_tmp);
- }
-
- if (!str_path) {
- g_warning ("realpath_in_utf8(): locale to UTF8 failed!");
- return NULL;
- }
-
- return str_path;
-}
-
-static void
-get_meta_table_data (gpointer value)
-
-{
- char **meta, **meta_p;
-
- meta = (char **)value;
-
- int i = 0;
- for (meta_p = meta; *meta_p; meta_p++) {
-
- char *str;
-
- str = g_filename_from_utf8 (*meta_p, -1, NULL, NULL, NULL);
-
- if (i == 0) {
- g_print ("%s : ", str);
-
- } else {
- g_print ("%s, ", *meta_p);
- }
- i++;
- }
- g_print ("\n");
-}
-
-
-
-int
-main (int argc, char **argv)
-{
- GOptionContext *context = NULL;
- ServiceType type;
-
- char *buffer = NULL, *tmp;
- gsize buffer_length;
- GPtrArray *out_array = NULL;
- GError *error = NULL;
- TrackerClient *client = NULL;
-
- setlocale (LC_ALL, "");
-
- context = g_option_context_new ("MetaDataField [RDFQueryFile] - Get unique values with an optional rdf query filter");
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_parse (context, &argc, &argv, &error);
-
- if (error) {
- g_printerr ("invalid arguments: %s\n", error->message);
- return 1;
- }
-
- if (!fields) {
- g_printerr ("missing metadata type specification, try --help for help\n");
- return 1;
- }
-
-
- if (!service) {
- type = SERVICE_FILES;
- } else {
- type = tracker_service_name_to_type (service);
-
- if (type == SERVICE_OTHER_FILES && g_ascii_strcasecmp (service, "Other")) {
- g_printerr ("service not recognized, searching in Other Files...\n");
- }
- }
-
- if (rdf) {
-
- char *str_path = realpath_in_utf8 (rdf);
-
- if (!str_path) {
- return 1;
- }
-
- if (!g_file_get_contents (str_path, &tmp, &buffer_length, NULL)) {
- g_print ("Could not read file %s\n", str_path);
- return 1;
- }
-
- g_free (str_path);
-
- buffer = g_locale_to_utf8 (tmp, buffer_length, NULL, NULL, NULL);
-
- if (!buffer) {
- g_warning ("Cannot convert query file to UTF8!");
- g_free (tmp);
- return 1;
- }
- }
-
- client = tracker_connect (FALSE);
-
- if (!client) {
- g_print ("Could not initialise Tracker over dbus connection - exiting...\n");
- return 1;
- }
-
-
- out_array = tracker_metadata_get_unique_values (client, type, fields, buffer, descending, 0, 512, &error);
-
- if (error) {
- g_warning ("An error has occurred : %s\n", error->message);
- g_error_free (error);
- g_free (buffer);
- return 1;
- }
-
- if (out_array) {
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, NULL);
- g_ptr_array_free (out_array, TRUE);
- }
-
- tracker_disconnect (client);
-
- g_free (buffer);
-
- return 0;
-}
diff --git a/src/libtracker/tracker.c b/src/libtracker/tracker.c
deleted file mode 100644
index 7ce9c12a3..000000000
--- a/src/libtracker/tracker.c
+++ /dev/null
@@ -1,1561 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "tracker.h"
-#include <string.h>
-
-#define TRACKER_SERVICE "org.freedesktop.Tracker"
-#define TRACKER_OBJECT "/org/freedesktop/tracker"
-#define TRACKER_INTERFACE "org.freedesktop.Tracker"
-#define TRACKER_INTERFACE_METADATA "org.freedesktop.Tracker.Metadata"
-#define TRACKER_INTERFACE_KEYWORDS "org.freedesktop.Tracker.Keywords"
-#define TRACKER_INTERFACE_SEARCH "org.freedesktop.Tracker.Search"
-#define TRACKER_INTERFACE_FILES "org.freedesktop.Tracker.Files"
-#define TRACKER_INTERFACE_MUSIC "org.freedesktop.Tracker.Music"
-#define TRACKER_INTERFACE_PLAYLISTS "org.freedesktop.Tracker.PlayLists"
-
-typedef struct {
- TrackerArrayReply callback;
- gpointer data;
-} ArrayCallBackStruct;
-
-typedef struct {
- TrackerGPtrArrayReply callback;
- gpointer data;
-} GPtrArrayCallBackStruct;
-
-typedef struct {
- TrackerHashTableReply callback;
- gpointer data;
-} HashTableCallBackStruct;
-
-
-typedef struct {
- TrackerBooleanReply callback;
- gpointer data;
-} BooleanCallBackStruct;
-
-typedef struct {
- TrackerStringReply callback;
- gpointer data;
-} StringCallBackStruct;
-
-typedef struct {
- TrackerIntReply callback;
- gpointer data;
-} IntCallBackStruct;
-
-typedef struct {
- TrackerVoidReply callback;
- gpointer data;
-} VoidCallBackStruct;
-
-
-char *tracker_service_types[] = {
-"Files",
-"Folders",
-"Documents",
-"Images",
-"Music",
-"Videos",
-"Text",
-"Development",
-"Other",
-"VFS",
-"VFSFolders",
-"VFSDocuments",
-"VFSImages",
-"VFSMusic",
-"VFSVideos",
-"VFSText",
-"VFSDevelopment",
-"VFSOther",
-"Conversations",
-"Playlists",
-"Applications",
-"Contacts",
-"Emails",
-"EmailAttachments",
-"Appointments",
-"Tasks",
-"Bookmarks",
-"WebHistory",
-"Projects",
-NULL
-};
-
-
-
-
-char *metadata_types[] = {
- "index",
- "string",
- "numeric",
- "date",
- "blob"
-};
-
-
-ServiceType
-tracker_service_name_to_type (const char *service)
-{
-
- char **st;
- int i = 0;
-
- for (st=tracker_service_types; *st; st++) {
-
- if (g_ascii_strcasecmp (service, *st) == 0) {
- return i;
- }
-
- i++;
- }
-
- return SERVICE_OTHER_FILES;
-}
-
-
-char *
-tracker_type_to_service_name (ServiceType s)
-{
- return g_strdup (tracker_service_types[s]);
-}
-
-
-
-static void
-tracker_array_reply (DBusGProxy *proxy, char **OUT_result, GError *error, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerArrayReply) callback_struct->callback ) (OUT_result, error, callback_struct->data);
-
- g_free (callback_struct);
-}
-
-
-static void
-tracker_hashtable_reply (DBusGProxy *proxy, GHashTable *OUT_result, GError *error, gpointer user_data)
-{
-
- HashTableCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerHashTableReply) callback_struct->callback ) (OUT_result, error, callback_struct->data);
-
- g_free (callback_struct);
-}
-
-static void
-tracker_GPtrArray_reply (DBusGProxy *proxy, GPtrArray *OUT_result, GError *error, gpointer user_data)
-{
-
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerGPtrArrayReply) callback_struct->callback ) (OUT_result, error, callback_struct->data);
-
- g_free (callback_struct);
-}
-
-
-
-static void
-tracker_string_reply (DBusGProxy *proxy, char *OUT_result, GError *error, gpointer user_data)
-{
-
- StringCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerStringReply) callback_struct->callback ) (OUT_result, error, callback_struct->data);
-
- g_free (callback_struct);
-}
-
-
-static void
-tracker_int_reply (DBusGProxy *proxy, int OUT_result, GError *error, gpointer user_data)
-{
-
- IntCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerIntReply) callback_struct->callback ) (OUT_result, error, callback_struct->data);
-
- g_free (callback_struct);
-}
-
-/*
-static void
-tracker_boolean_reply (DBusGProxy *proxy, gboolean OUT_result, GError *error, gpointer user_data)
-{
-
- BooleanCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerBooleanReply) callback_struct->callback ) (OUT_result, error, callback_struct->data);
-
- g_free (callback_struct);
-}
-*/
-
-
-static void
-tracker_void_reply (DBusGProxy *proxy, GError *error, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = user_data;
-
- (*(TrackerVoidReply) callback_struct->callback ) (error, callback_struct->data);
-
- g_free (callback_struct);
-}
-
-
-
-
-
-TrackerClient *
-tracker_connect (gboolean enable_warnings)
-{
- DBusGConnection *connection;
- GError *error = NULL;
- TrackerClient *client = NULL;
- DBusGProxy *proxy;
-
- g_type_init ();
-
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
- if (connection == NULL) {
- if (enable_warnings) {
- g_warning("Unable to connect to dbus: %s\n", error->message);
- }
- g_error_free (error);
- return NULL;
- }
-
- proxy = dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT,
- TRACKER_INTERFACE);
-
- if (!proxy) {
- if (enable_warnings) {
- g_warning ("could not create proxy");
- }
- return NULL;
- }
-
-
- client = g_new (TrackerClient, 1);
- client->proxy = proxy;
-
- proxy = dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT,
- TRACKER_INTERFACE_METADATA);
-
- client->proxy_metadata = proxy;
-
- proxy = dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT,
- TRACKER_INTERFACE_KEYWORDS);
-
- client->proxy_keywords = proxy;
-
- proxy = dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT,
- TRACKER_INTERFACE_SEARCH);
-
- client->proxy_search = proxy;
-
- proxy = dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT,
- TRACKER_INTERFACE_FILES);
-
- client->proxy_files = proxy;
-
-
-
- return client;
-
-}
-
-void
-tracker_disconnect (TrackerClient *client)
-{
- g_object_unref (client->proxy);
- g_object_unref (client->proxy_metadata);
- g_object_unref (client->proxy_keywords);
- g_object_unref (client->proxy_search);
- g_object_unref (client->proxy_files);
- client->proxy = NULL;
- client->proxy_metadata = NULL;
- client->proxy_keywords = NULL;
- client->proxy_search = NULL;
- client->proxy_files = NULL;
-
- g_free (client);
-}
-
-
-
-void
-tracker_cancel_last_call (TrackerClient *client)
-{
- dbus_g_proxy_cancel_call (client->proxy, client->last_pending_call);
-}
-
-
-
-/* dbus synchronous calls */
-
-
-int
-tracker_get_version (TrackerClient *client, GError **error)
-{
- int version;
-
- org_freedesktop_Tracker_get_version (client->proxy, &version, &*error);
-
- return version;
-}
-
-char *
-tracker_get_status (TrackerClient *client, GError **error)
-{
- char *status ;
- org_freedesktop_Tracker_get_status (client->proxy, &status, &*error);
- return status;
-}
-
-
-GHashTable *
-tracker_get_services (TrackerClient *client, gboolean main_services_only, GError **error)
-{
- GHashTable *table;
-
- if (!org_freedesktop_Tracker_get_services (client->proxy, main_services_only, &table, &*error)) {
- return NULL;
- }
-
- return table;
-
-
-}
-
-
-
-GPtrArray *
-tracker_get_stats (TrackerClient *client, GError **error)
-{
- GPtrArray *table;
-
- if (!org_freedesktop_Tracker_get_stats (client->proxy, &table, &*error)) {
- return NULL;
- }
-
- return table;
-
-
-}
-
-
-void
-tracker_set_bool_option (TrackerClient *client, const char *option, gboolean value, GError **error)
-{
- org_freedesktop_Tracker_set_bool_option (client->proxy, option, value, &*error);
-}
-
-void
-tracker_set_int_option (TrackerClient *client, const char *option, int value, GError **error)
-{
- org_freedesktop_Tracker_set_int_option (client->proxy, option, value, &*error);
-}
-
-
-void
-tracker_shutdown (TrackerClient *client, gboolean reindex, GError **error)
-{
- org_freedesktop_Tracker_shutdown (client->proxy, reindex, &*error);
-}
-
-
-void
-tracker_prompt_index_signals (TrackerClient *client, GError **error)
-{
- org_freedesktop_Tracker_prompt_index_signals (client->proxy, &*error);
-}
-
-
-
-char **
-tracker_metadata_get (TrackerClient *client, ServiceType service, const char *id, char **keys, GError **error)
-{
- char **array = NULL;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Metadata_get (client->proxy_metadata, service_str, id, (const char **)keys, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-void
-tracker_metadata_set (TrackerClient *client, ServiceType service, const char *id, char **keys, char **values, GError **error)
-{
- char *service_str = tracker_service_types[service];
-
- org_freedesktop_Tracker_Metadata_set (client->proxy_metadata, service_str, id, (const char **)keys, (const char **)values, &*error);
-
-}
-
-
-
-void
-tracker_metadata_register_type (TrackerClient *client, const char *name, MetadataTypes type, GError **error)
-{
- char *meta_type = metadata_types[type];
-
- org_freedesktop_Tracker_Metadata_register_type (client->proxy_metadata, name, meta_type, &*error);
-
-}
-
-MetaDataTypeDetails *
-tracker_metadata_get_type_details (TrackerClient *client, const char *name, GError **error)
-{
-
- MetaDataTypeDetails *details = g_new (MetaDataTypeDetails, 1);
-
- if (!org_freedesktop_Tracker_Metadata_get_type_details (client->proxy_metadata, name, &details->type, &details->is_embedded, &details->is_writeable, &*error)) {
- g_free (details);
- return NULL;
- }
-
- return details;
-
-}
-
-
-char **
-tracker_metadata_get_registered_types (TrackerClient *client, const char *class, GError **error)
-{
- char **array = NULL;
-
- if (!org_freedesktop_Tracker_Metadata_get_registered_types (client->proxy_metadata, class, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-char **
-tracker_metadata_get_writeable_types (TrackerClient *client, const char *class, GError **error)
-{
- char **array = NULL;
-
- if (!org_freedesktop_Tracker_Metadata_get_writeable_types (client->proxy_metadata, class, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-
-char **
-tracker_metadata_get_registered_classes (TrackerClient *client, GError **error)
-{
- char **array = NULL;
-
- if (!org_freedesktop_Tracker_Metadata_get_registered_classes (client->proxy_metadata, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-GPtrArray *
-tracker_metadata_get_unique_values (TrackerClient *client, ServiceType service, char **meta_types, char *query, gboolean descending, int offset, int max_hits, GError **error)
-{
- GPtrArray *table;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Metadata_get_unique_values (client->proxy_metadata, service_str, (const char **)meta_types, query, descending, offset, max_hits, &table, &*error)) {
- return NULL;
- }
-
- return table;
-}
-
-
-GPtrArray *
-tracker_keywords_get_list (TrackerClient *client, ServiceType service, GError **error)
-{
- GPtrArray *table;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Keywords_get_list (client->proxy_keywords,service_str, &table, &*error)) {
- return NULL;
- }
-
- return table;
-
-
-}
-
-
-char **
-tracker_keywords_get (TrackerClient *client, ServiceType service, const char *id, GError **error)
-{
- char **array = NULL;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Keywords_get (client->proxy_keywords, service_str, id, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-
-void
-tracker_keywords_add (TrackerClient *client, ServiceType service, const char *id, char **values, GError **error)
-{
- char *service_str = tracker_service_types[service];
- org_freedesktop_Tracker_Keywords_add (client->proxy_keywords, service_str, id, (const char **)values, &*error);
-}
-
-
-
-void
-tracker_keywords_remove (TrackerClient *client, ServiceType service, const char *id, char **values, GError **error)
-{
- char *service_str = tracker_service_types[service];
-
- org_freedesktop_Tracker_Keywords_remove (client->proxy_keywords, service_str, id, (const char **)values, &*error);
-}
-
-
-
-void
-tracker_keywords_remove_all (TrackerClient *client, ServiceType service, const char *id, GError **error)
-{
- char *service_str = tracker_service_types[service];
-
- org_freedesktop_Tracker_Keywords_remove_all (client->proxy_keywords, service_str, id, &*error);
-}
-
-
-char **
-tracker_keywords_search (TrackerClient *client, int live_query_id, ServiceType service, char **keywords, int offset, int max_hits, GError **error)
-{
- char **array = NULL;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Keywords_search (client->proxy_keywords, live_query_id, service_str, (const char **)keywords, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-
-}
-
-
-int
-tracker_search_get_hit_count (TrackerClient *client, ServiceType service, const char *search_text, GError **error)
-{
-
- int count = 0;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Search_get_hit_count (client->proxy_search, service_str, search_text, &count, &*error)) {
- return 0;
- }
-
- return count;
-
-}
-
-
-GPtrArray *
-tracker_search_get_hit_count_all (TrackerClient *client, const char *search_text, GError **error)
-{
-
- GPtrArray *array;
-
- if (!org_freedesktop_Tracker_Search_get_hit_count_all (client->proxy_search, search_text, &array, &*error)) {
- return NULL;
- }
-
- return array;
-
-}
-
-char **
-tracker_search_text (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, GError **error)
-{
- char **array = NULL;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Search_text (client->proxy_search, live_query_id, service_str, search_text, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-GPtrArray *
-tracker_search_text_detailed (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, GError **error)
-{
- GPtrArray *array;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Search_text_detailed (client->proxy_search, live_query_id, service_str, search_text, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-char *
-tracker_search_get_snippet (TrackerClient *client, ServiceType service, const char *uri, const char *search_text, GError **error)
-{
- char *result;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Search_get_snippet (client->proxy_search, service_str, uri, search_text, &result, &*error)) {
- return NULL;
- }
-
- return result;
-
-
-}
-
-
-
-char **
-tracker_search_metadata (TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, GError **error)
-{
- char **array = NULL;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Search_metadata (client->proxy_search, service_str, field, search_text, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-
-GPtrArray *
-tracker_search_query (TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, const char *keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, GError **error)
-{
- GPtrArray *table;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Search_query (client->proxy_search, live_query_id, service_str, (const char **)fields, search_text, keywords, query, sort_by_service, offset, max_hits , &table, &*error)) {
- return NULL;
- }
-
- return table;
-}
-
-char *
-tracker_search_suggest (TrackerClient *client, const char *search_term, int maxdist, GError **error)
-{
- gchar *result;
- if (org_freedesktop_Tracker_Search_suggest (client->proxy_search, search_term, maxdist, &result, &*error)) {
- return result;
- }
- return NULL;
-}
-
-
-
-void
-tracker_files_create (TrackerClient *client, const char *uri, gboolean is_directory, const char *mime, int size, int mtime, GError **error)
-{
- org_freedesktop_Tracker_Files_create (client->proxy_files, uri, is_directory, mime, size, mtime, &*error);
-}
-
-
-void
-tracker_files_delete (TrackerClient *client, const char *uri, GError **error)
-{
- org_freedesktop_Tracker_Files_delete (client->proxy_files, uri, &*error);
-}
-
-
-char *
-tracker_files_get_text_contents (TrackerClient *client, const char *uri, int offset, int max_length, GError **error)
-{
- char *result;
-
- if (!org_freedesktop_Tracker_Files_get_text_contents (client->proxy_files, uri, offset, max_length, &result, &*error)) {
- return NULL;
- }
-
- return result;
-
-}
-
-
-
-char *
-tracker_files_search_text_contents (TrackerClient *client, const char *uri, const char *search_text, int length, GError **error)
-{
- char *result;
-
- if (!org_freedesktop_Tracker_Files_search_text_contents (client->proxy_files, uri, search_text, length, &result, &*error)) {
- return NULL;
- }
-
- return result;
-}
-
-
-
-char **
-tracker_files_get_by_service_type (TrackerClient *client, int live_query_id, ServiceType service, int offset, int max_hits, GError **error)
-{
- char **array = NULL;
- char *service_str = tracker_service_types[service];
-
- if (!org_freedesktop_Tracker_Files_get_by_service_type (client->proxy_files, live_query_id, service_str, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-
-char **
-tracker_files_get_by_mime_type (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, GError **error)
-{
- char **array = NULL;
-
- if (!org_freedesktop_Tracker_Files_get_by_mime_type (client->proxy_files, live_query_id, (const char **)mimes, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-
-char **
-tracker_files_get_by_mime_type_vfs (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, GError **error)
-{
- char **array = NULL;
-
- if (!org_freedesktop_Tracker_Files_get_by_mime_type_vfs (client->proxy_files, live_query_id,(const char **) mimes, offset, max_hits, &array, &*error)) {
- return NULL;
- }
-
- return array;
-}
-
-
-
-int
-tracker_files_get_mtime (TrackerClient *client, const char *uri, GError **error)
-{
- int result;
-
- if (!org_freedesktop_Tracker_Files_get_mtime (client->proxy_files, uri, &result, &*error)) {
- return 0;
- }
-
- return result;
-}
-
-
-GPtrArray *
-tracker_files_get_metadata_for_files_in_folder (TrackerClient *client, int live_query_id, const char *uri, char **fields, GError **error)
-{
- GPtrArray *table;
-
- if (!org_freedesktop_Tracker_Files_get_metadata_for_files_in_folder (client->proxy_files, live_query_id, uri, (const char **)fields, &table, &*error)) {
- return NULL;
- }
-
- return table;
-}
-
-
-
-char **
-tracker_search_metadata_by_text (TrackerClient *client, const char *query, GError **error)
-{
-
- char **array = NULL;
-
- if (!org_freedesktop_Tracker_Search_text (client->proxy_search, -1, "Files", query, 0, 512, &array, &*error)) {
- return NULL;
- }
-
- return array;
-
-}
-
-
-char **
-tracker_search_metadata_by_text_and_mime (TrackerClient *client, const char *query, const char **mimes, GError **error)
-{
- char **strs;
-
- if (!org_freedesktop_Tracker_Files_search_by_text_and_mime (client->proxy_files, query,(const char **) mimes, &strs, &*error)) {
- return NULL;
- }
- return strs;
-
-}
-
-
-char **
-tracker_search_metadata_by_text_and_mime_and_location (TrackerClient *client, const char *query, const char **mimes, const char *location, GError **error)
-{
- char **strs;
-
- if (!org_freedesktop_Tracker_Files_search_by_text_and_mime_and_location (client->proxy_files, query, (const char **)mimes, location, &strs, &*error)) {
- return NULL;
- }
- return strs;
-
-}
-
-
-
-char **
-tracker_search_metadata_by_text_and_location (TrackerClient *client, const char *query, const char *location, GError **error)
-{
- char **strs;
-
- if (!org_freedesktop_Tracker_Files_search_by_text_and_location (client->proxy_files, query, location, &strs, &*error)) {
- return NULL;
- }
- return strs;
-
-}
-
-
-
-
-/* asynchronous calls */
-
-
-
-
-
-
-
-
-
-
-void
-tracker_get_version_async (TrackerClient *client, TrackerIntReply callback, gpointer user_data)
-{
-
- IntCallBackStruct *callback_struct;
-
- callback_struct = g_new (IntCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_get_version_async (client->proxy, tracker_int_reply, callback_struct);
-
-}
-
-void
-tracker_get_status_async (TrackerClient *client, TrackerStringReply callback, gpointer user_data)
-{
-
- StringCallBackStruct *callback_struct;
-
- callback_struct = g_new (StringCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_get_status_async (client->proxy, tracker_string_reply, callback_struct);
-
-}
-
-
-
-
-void
-tracker_get_services_async (TrackerClient *client, gboolean main_services_only, TrackerHashTableReply callback, gpointer user_data)
-{
- HashTableCallBackStruct *callback_struct;
-
- callback_struct = g_new (HashTableCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_get_services_async (client->proxy, main_services_only, tracker_hashtable_reply, callback_struct);
-
-}
-
-
-void
-tracker_get_stats_async (TrackerClient *client, TrackerGPtrArrayReply callback, gpointer user_data)
-{
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_get_stats_async (client->proxy, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_set_bool_option_async (TrackerClient *client, const char *option, gboolean value, TrackerVoidReply callback, gpointer user_data)
-{
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_set_bool_option_async (client->proxy, option, value, tracker_void_reply, callback_struct);
-}
-
-void
-tracker_set_int_option_async (TrackerClient *client, const char *option, int value, TrackerVoidReply callback, gpointer user_data)
-{
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_set_int_option_async (client->proxy, option, value, tracker_void_reply, callback_struct);
-}
-
-
-void
-tracker_shutdown_async (TrackerClient *client, gboolean reindex, TrackerVoidReply callback, gpointer user_data)
-{
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_shutdown_async (client->proxy, reindex, tracker_void_reply, callback_struct);
-}
-
-
-void
-tracker_prompt_index_signals_async (TrackerClient *client, TrackerVoidReply callback, gpointer user_data)
-{
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_prompt_index_signals_async (client->proxy, tracker_void_reply, callback_struct);
-}
-
-
-
-
-
-
-void
-tracker_metadata_get_async (TrackerClient *client, ServiceType service, const char *id, char **keys, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Metadata_get_async (client->proxy_metadata, service_str, id, (const char**)keys, tracker_array_reply, callback_struct);
-
-}
-
-
-void
-tracker_metadata_set_async (TrackerClient *client, ServiceType service, const char *id, char **keys, char **values, TrackerVoidReply callback, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Metadata_set_async (client->proxy_metadata, service_str, id, (const char **)keys, (const char **)values, tracker_void_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_metadata_register_type_async (TrackerClient *client, const char *name, MetadataTypes type, TrackerVoidReply callback, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *meta_type = metadata_types[type];
-
- client->last_pending_call = org_freedesktop_Tracker_Metadata_register_type_async (client->proxy_metadata, name, meta_type, tracker_void_reply, callback_struct);
-
-}
-
-
-
-
-void
-tracker_metadata_get_registered_types_async (TrackerClient *client, const char *class, TrackerArrayReply callback, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
-
- client->last_pending_call = org_freedesktop_Tracker_Metadata_get_registered_types_async (client->proxy_metadata, class, tracker_array_reply, callback_struct);
-}
-
-
-void
-tracker_metadata_get_writeable_types_async (TrackerClient *client, const char *class, TrackerArrayReply callback, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
-
- client->last_pending_call = org_freedesktop_Tracker_Metadata_get_writeable_types_async (client->proxy_metadata, class, tracker_array_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_metadata_get_registered_classes_async (TrackerClient *client, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
-
- client->last_pending_call = org_freedesktop_Tracker_Metadata_get_registered_classes_async (client->proxy_metadata, tracker_array_reply, callback_struct);
-
-}
-
-
-void
-tracker_metadata_get_unique_values_async (TrackerClient *client, ServiceType service, char **meta_types, const char *query, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
- GPtrArrayCallBackStruct *callback_struct;
- char *service_str = tracker_service_types[service];
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- org_freedesktop_Tracker_Metadata_get_unique_values_async (client->proxy_metadata, service_str, (const char **) meta_types, query, descending, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-
-
-
-void
-tracker_keywords_get_list_async (TrackerClient *client, ServiceType service, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Keywords_get_list_async (client->proxy_keywords, service_str, tracker_GPtrArray_reply, callback_struct);
-
-
-}
-
-
-void
-tracker_keywords_get_async (TrackerClient *client, ServiceType service, const char *id, TrackerArrayReply callback, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Keywords_get_async (client->proxy_keywords, service_str, id, tracker_array_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_keywords_add_async (TrackerClient *client, ServiceType service, const char *id, char **values, TrackerVoidReply callback, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
- client->last_pending_call = org_freedesktop_Tracker_Keywords_add_async (client->proxy_keywords, service_str, id, (const char **)values, tracker_void_reply, callback_struct);
-}
-
-
-
-void
-tracker_keywords_remove_async (TrackerClient *client, ServiceType service, const char *id, char **values, TrackerVoidReply callback, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Keywords_remove_async (client->proxy_keywords, service_str, id, (const char **)values, tracker_void_reply, callback_struct);
-}
-
-
-
-void
-tracker_keywords_remove_all_async (TrackerClient *client, ServiceType service, const char *id, TrackerVoidReply callback, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Keywords_remove_all_async (client->proxy_keywords, service_str, id, tracker_void_reply, callback_struct);
-}
-
-
-void
-tracker_keywords_search_async (TrackerClient *client, int live_query_id, ServiceType service, char **keywords, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Keywords_search_async (client->proxy_keywords, live_query_id, service_str, (const char **)keywords, offset, max_hits, tracker_array_reply, callback_struct);
-
-}
-
-
-void
-tracker_search_text_get_hit_count_async (TrackerClient *client, ServiceType service, const char *search_text, TrackerIntReply callback, gpointer user_data)
-{
- char *service_str = tracker_service_types[service];
-
- IntCallBackStruct *callback_struct;
-
- callback_struct = g_new (IntCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Search_get_hit_count_async (client->proxy_search, service_str, search_text, tracker_int_reply, callback_struct);
-
-
-}
-
-
-void
-tracker_search_text_get_hit_count_all_async (TrackerClient *client, const char *search_text, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Search_get_hit_count_all_async (client->proxy_search, search_text, tracker_GPtrArray_reply, callback_struct);
-
-
-}
-
-void
-tracker_search_text_async (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Search_text_async (client->proxy_search, live_query_id, service_str, search_text, offset, max_hits, tracker_array_reply, callback_struct);
-
-}
-
-
-void
-tracker_search_text_detailed_async (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Search_text_detailed_async (client->proxy_search, live_query_id, service_str, search_text, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-
-void
-tracker_search_get_snippet_async (TrackerClient *client, ServiceType service, const char *uri, const char *search_text, TrackerStringReply callback, gpointer user_data)
-{
- StringCallBackStruct *callback_struct;
-
- callback_struct = g_new (StringCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Search_get_snippet_async (client->proxy_search, service_str, uri, search_text, tracker_string_reply, callback_struct);
-
-}
-
-
-void
-tracker_search_metadata_async (TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
-
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- org_freedesktop_Tracker_Search_metadata_async (client->proxy_search, service_str, field, search_text, offset, max_hits, tracker_array_reply, callback_struct);
-
-}
-
-void
-tracker_search_query_async (TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, const char *keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, TrackerGPtrArrayReply callback, gpointer user_data)
-{
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Search_query_async (client->proxy_search, live_query_id, service_str, (const char **)fields, search_text, keywords, query, sort_by_service, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-
-void
-tracker_search_suggest_async (TrackerClient *client, const char *search_text, int maxdist, TrackerStringReply callback, gpointer user_data)
-{
-
- StringCallBackStruct *callback_struct;
-
- callback_struct = g_new (StringCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Search_suggest_async (client->proxy_search, search_text, maxdist, tracker_string_reply, callback_struct);
-
-}
-
-
-void
-tracker_files_create_async (TrackerClient *client, const char *uri, gboolean is_directory, const char *mime, int size, int mtime, TrackerVoidReply callback, gpointer user_data)
-{
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_create_async (client->proxy_files, uri, is_directory, mime, size, mtime, tracker_void_reply, callback_struct);
-}
-
-
-void
-tracker_files_delete_async (TrackerClient *client, const char *uri, TrackerVoidReply callback, gpointer user_data)
-{
-
- VoidCallBackStruct *callback_struct;
-
- callback_struct = g_new (VoidCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_delete_async (client->proxy_files, uri, tracker_void_reply, callback_struct);
-}
-
-
-void
-tracker_files_get_text_contents_async (TrackerClient *client, const char *uri, int offset, int max_length, TrackerStringReply callback, gpointer user_data)
-{
- StringCallBackStruct *callback_struct;
-
- callback_struct = g_new (StringCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_get_text_contents_async (client->proxy_files, uri, offset, max_length, tracker_string_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_files_search_text_contents_async (TrackerClient *client, const char *uri, const char *search_text, int length, TrackerStringReply callback, gpointer user_data)
-{
-
- StringCallBackStruct *callback_struct;
-
- callback_struct = g_new (StringCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_search_text_contents_async (client->proxy_files, uri, search_text, length, tracker_string_reply, callback_struct);
-
-
-}
-
-
-
-void
-tracker_files_get_by_service_type_async (TrackerClient *client, int live_query_id, ServiceType service, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *service_str = tracker_service_types[service];
-
- client->last_pending_call = org_freedesktop_Tracker_Files_get_by_service_type_async (client->proxy_files, live_query_id, service_str, offset, max_hits, tracker_array_reply, callback_struct);
-}
-
-
-
-void
-tracker_files_get_by_mime_type_async (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_get_by_mime_type_async (client->proxy_files, live_query_id, (const char **)mimes, offset, max_hits, tracker_array_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_files_get_by_mime_type_vfs_async (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_get_by_mime_type_vfs_async (client->proxy_files, live_query_id,(const char **) mimes, offset, max_hits, tracker_array_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_files_get_mtime_async (TrackerClient *client, const char *uri, TrackerIntReply callback, gpointer user_data)
-{
-
- IntCallBackStruct *callback_struct;
-
- callback_struct = g_new (IntCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_get_mtime_async (client->proxy_files, uri, tracker_int_reply, callback_struct);
-
-}
-
-
-void
-tracker_files_get_metadata_for_files_in_folder_async (TrackerClient *client, int live_query_id, const char *uri, char **fields, TrackerGPtrArrayReply callback, gpointer user_data)
-{
- GPtrArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (GPtrArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_get_metadata_for_files_in_folder_async (client->proxy_files, live_query_id, uri, (const char **)fields, tracker_GPtrArray_reply, callback_struct);
-
-
-}
-
-
-void
-tracker_search_metadata_by_text_async (TrackerClient *client, const char *query, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- char *metadata;
- char *keywords[2];
-
- if (strchr (query, ':') != NULL) {
- metadata = strtok ((char *)query, ":");
- if(strcoll(metadata,"tag") == 0){
- keywords[0] = strtok (NULL, ":");
- keywords[1] = NULL;
- client->last_pending_call = org_freedesktop_Tracker_Keywords_search_async (client->proxy_keywords, -1, "Files", (const char **)keywords, 0, 512, tracker_array_reply, callback_struct);
- }
- }else{
- client->last_pending_call = org_freedesktop_Tracker_Search_text_async (client->proxy_search, -1, "Files", query, 0, 512, tracker_array_reply, callback_struct);
- }
-}
-
-
-void
-tracker_search_metadata_by_text_and_mime_async (TrackerClient *client, const char *query, const char **mimes, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_search_by_text_and_mime_async (client->proxy_files, query,(const char **) mimes, tracker_array_reply, callback_struct);
-
-}
-
-
-void
-tracker_search_metadata_by_text_and_mime_and_location_async (TrackerClient *client, const char *query, const char **mimes, const char *location, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_search_by_text_and_mime_and_location_async (client->proxy_files, query, (const char **)mimes, location, tracker_array_reply, callback_struct);
-
-}
-
-
-
-void
-tracker_search_metadata_by_text_and_location_async (TrackerClient *client, const char *query, const char *location, TrackerArrayReply callback, gpointer user_data)
-{
- ArrayCallBackStruct *callback_struct;
-
- callback_struct = g_new (ArrayCallBackStruct, 1);
- callback_struct->callback = callback;
- callback_struct->data = user_data;
-
- client->last_pending_call = org_freedesktop_Tracker_Files_search_by_text_and_location_async (client->proxy_files, query, location, tracker_array_reply, callback_struct);
-
-}
diff --git a/src/libtracker/tracker.h b/src/libtracker/tracker.h
deleted file mode 100644
index b578a8287..000000000
--- a/src/libtracker/tracker.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TRACKER_H
-#define TRACKER_H
-
-#include "tracker-client.h"
-
-G_BEGIN_DECLS
-
-typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_data);
-typedef void (*TrackerHashTableReply) (GHashTable *result, GError *error, gpointer user_data);
-typedef void (*TrackerGPtrArrayReply) (GPtrArray *result, GError *error, gpointer user_data);
-typedef void (*TrackerBooleanReply) (gboolean result, GError *error, gpointer user_data);
-typedef void (*TrackerStringReply) (char *result, GError *error, gpointer user_data);
-typedef void (*TrackerIntReply) (int result, GError *error, gpointer user_data);
-typedef void (*TrackerVoidReply) (GError *error, gpointer user_data);
-
-
-
-typedef enum {
- DATA_STRING_INDEXABLE,
- DATA_STRING,
- DATA_NUMERIC,
- DATA_DATE
-} MetadataTypes;
-
-typedef enum {
- SERVICE_FILES,
- SERVICE_FOLDERS,
- SERVICE_DOCUMENTS,
- SERVICE_IMAGES,
- SERVICE_MUSIC,
- SERVICE_VIDEOS,
- SERVICE_TEXT_FILES,
- SERVICE_DEVELOPMENT_FILES,
- SERVICE_OTHER_FILES,
- SERVICE_VFS_FILES,
- SERVICE_VFS_FOLDERS,
- SERVICE_VFS_DOCUMENTS,
- SERVICE_VFS_IMAGES,
- SERVICE_VFS_MUSIC,
- SERVICE_VFS_VIDEOS,
- SERVICE_VFS_TEXT_FILES,
- SERVICE_VFS_DEVELOPMENT_FILES,
- SERVICE_VFS_OTHER_FILES,
- SERVICE_CONVERSATIONS,
- SERVICE_PLAYLISTS,
- SERVICE_APPLICATIONS,
- SERVICE_CONTACTS,
- SERVICE_EMAILS,
- SERVICE_EMAILATTACHMENTS,
- SERVICE_APPOINTMENTS,
- SERVICE_TASKS,
- SERVICE_BOOKMARKS,
- SERVICE_WEBHISTORY,
- SERVICE_PROJECTS
-} ServiceType;
-
-
-
-
-typedef struct {
- char * type;
- gboolean is_embedded;
- gboolean is_writeable;
-
-} MetaDataTypeDetails;
-
-
-typedef struct {
- DBusGProxy *proxy;
- DBusGProxy *proxy_metadata;
- DBusGProxy *proxy_keywords;
- DBusGProxy *proxy_search;
- DBusGProxy *proxy_files;
- DBusGProxyCall *last_pending_call;
-} TrackerClient;
-
-
-void tracker_cancel_last_call (TrackerClient *client);
-
-/* you can make multiple connections with tracker_connect and free them with tracker_disconnect */
-TrackerClient * tracker_connect (gboolean enable_warnings);
-void tracker_disconnect (TrackerClient *client);
-
-
-ServiceType tracker_service_name_to_type (const char *service);
-char * tracker_type_to_service_name (ServiceType s);
-
-
-
-/* synchronous calls */
-
-int tracker_get_version (TrackerClient *client, GError **error);
-char * tracker_get_status (TrackerClient *client, GError **error);
-GHashTable * tracker_get_services (TrackerClient *client, gboolean main_services_only, GError **error);
-GPtrArray * tracker_get_stats (TrackerClient *client, GError **error);
-
-void tracker_set_bool_option (TrackerClient *client, const char *option, gboolean value, GError **error);
-void tracker_set_int_option (TrackerClient *client, const char *option, int value, GError **error);
-void tracker_shutdown (TrackerClient *client, gboolean reindex, GError **error);
-void tracker_prompt_index_signals (TrackerClient *client, GError **error);
-
-char ** tracker_metadata_get (TrackerClient *client, ServiceType service, const char *id, char **keys, GError **error);
-void tracker_metadata_set (TrackerClient *client, ServiceType service, const char *id, char **keys, char **values, GError **error);
-void tracker_metadata_register_type (TrackerClient *client, const char *name, MetadataTypes type, GError **error);
-MetaDataTypeDetails * tracker_metadata_get_type_details (TrackerClient *client, const char *name, GError **error);
-char ** tracker_metadata_get_registered_types (TrackerClient *client, const char *classname, GError **error);
-char ** tracker_metadata_get_writeable_types (TrackerClient *client, const char *classname, GError **error);
-char ** tracker_metadata_get_registered_classes (TrackerClient *client, GError **error);
-GPtrArray * tracker_metadata_get_unique_values (TrackerClient *client, ServiceType service, char **meta_types, char *query, gboolean descending, int offset, int max_hits, GError **error);
-
-GPtrArray * tracker_keywords_get_list (TrackerClient *client, ServiceType service, GError **error);
-char ** tracker_keywords_get (TrackerClient *client, ServiceType service, const char *id, GError **error);
-void tracker_keywords_add (TrackerClient *client, ServiceType service, const char *id, char **values, GError **error);
-void tracker_keywords_remove (TrackerClient *client, ServiceType service, const char *id, char **values, GError **error);
-void tracker_keywords_remove_all (TrackerClient *client, ServiceType service, const char *id, GError **error);
-char ** tracker_keywords_search (TrackerClient *client, int live_query_id, ServiceType service, char **keywords, int offset, int max_hits, GError **error);
-
-
-int tracker_search_get_hit_count (TrackerClient *client, ServiceType service, const char *search_text, GError **error);
-GPtrArray * tracker_search_get_hit_count_all (TrackerClient *client, const char *search_text, GError **error);
-char ** tracker_search_text (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, GError **error);
-GPtrArray * tracker_search_text_detailed (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, GError **error);
-char * tracker_search_get_snippet (TrackerClient *client, ServiceType service, const char *uri, const char *search_text, GError **error);
-char ** tracker_search_metadata (TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, GError **error);
-GPtrArray * tracker_search_query (TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, const char *keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, GError **error);
-gchar * tracker_search_suggest (TrackerClient *client, const char *search_text, int maxdist, GError **error);
-
-
-void tracker_files_create (TrackerClient *client, const char *uri, gboolean is_directory, const char *mime, int size, int mtime, GError **error);
-void tracker_files_delete (TrackerClient *client, const char *uri, GError **error);
-char * tracker_files_get_text_contents (TrackerClient *client, const char *uri, int offset, int max_length, GError **error);
-char * tracker_files_search_text_contents (TrackerClient *client, const char *uri, const char *search_text, int length, GError **error);
-char ** tracker_files_get_by_service_type (TrackerClient *client, int live_query_id, ServiceType service, int offset, int max_hits, GError **error);
-char ** tracker_files_get_by_mime_type (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, GError **error);
-char ** tracker_files_get_by_mime_type_vfs (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, GError **error);
-
-int tracker_files_get_mtime (TrackerClient *client, const char *uri, GError **error);
-GPtrArray * tracker_files_get_metadata_for_files_in_folder (TrackerClient *client, int live_query_id, const char *uri, char **fields, GError **error);
-
-
-/* Deprecated calls - Following API specific for nautilus search use only */
-char ** tracker_search_metadata_by_text (TrackerClient *client, const char *query, GError **error);
-char ** tracker_search_metadata_by_text_and_mime (TrackerClient *client, const char *query, const char **mimes, GError **error);
-char ** tracker_search_metadata_by_text_and_mime_and_location (TrackerClient *client, const char *query, const char **mimes, const char *location, GError **error);
-char ** tracker_search_metadata_by_text_and_location (TrackerClient *client, const char *query, const char *location, GError **error);
-/* end deprecated call list */
-
-
-/* asynchronous calls */
-
-
-void tracker_get_version_async (TrackerClient *client, TrackerIntReply callback, gpointer user_data);
-void tracker_get_status_async (TrackerClient *client, TrackerStringReply callback, gpointer user_data);
-void tracker_get_services_async (TrackerClient *client, gboolean main_services_only, TrackerHashTableReply callback, gpointer user_data);
-void tracker_get_stats_async (TrackerClient *client, TrackerGPtrArrayReply callback, gpointer user_data);
-
-void tracker_set_bool_option_async (TrackerClient *client, const char *option, gboolean value, TrackerVoidReply callback, gpointer user_data);
-void tracker_set_int_option_async (TrackerClient *client, const char *option, int value, TrackerVoidReply callback, gpointer user_data);
-void tracker_shutdown_async (TrackerClient *client, gboolean reindex, TrackerVoidReply callback, gpointer user_data);
-void tracker_prompt_index_signals_async (TrackerClient *client, TrackerVoidReply callback, gpointer user_data);
-
-void tracker_metadata_get_async (TrackerClient *client, ServiceType service, const char *id, char **keys, TrackerArrayReply callback, gpointer user_data);
-void tracker_metadata_set_async (TrackerClient *client, ServiceType service, const char *id, char **keys, char **values, TrackerVoidReply callback, gpointer user_data);
-void tracker_metadata_register_type_async (TrackerClient *client, const char *name, MetadataTypes type, TrackerVoidReply callback, gpointer user_data);
-void tracker_metadata_get_registered_types_async (TrackerClient *client, const char *classname, TrackerArrayReply callback, gpointer user_data);
-void tracker_metadata_get_writeable_types_async (TrackerClient *client, const char *classname, TrackerArrayReply callback, gpointer user_data);
-void tracker_metadata_get_registered_classes_async (TrackerClient *client, TrackerArrayReply callback, gpointer user_data);
-void tracker_metadata_get_unique_values_async (TrackerClient *client, ServiceType service, char **meta_types, const char *query, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
-
-void tracker_keywords_get_list_async (TrackerClient *client, ServiceType service, TrackerGPtrArrayReply callback, gpointer user_data);
-void tracker_keywords_get_async (TrackerClient *client, ServiceType service, const char *id, TrackerArrayReply callback, gpointer user_data);
-void tracker_keywords_add_async (TrackerClient *client, ServiceType service, const char *id, char **values, TrackerVoidReply callback, gpointer user_data);
-void tracker_keywords_remove_async (TrackerClient *client, ServiceType service, const char *id, char **values, TrackerVoidReply callback, gpointer user_data);
-void tracker_keywords_remove_all_async (TrackerClient *client, ServiceType service, const char *id, TrackerVoidReply callback, gpointer user_data);
-void tracker_keywords_search_async (TrackerClient *client, int live_query_id, ServiceType service, char **keywords, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-
-void tracker_search_text_get_hit_count_async (TrackerClient *client, ServiceType service, const char *search_text, TrackerIntReply callback, gpointer user_data);
-void tracker_search_text_get_hit_count_all_async (TrackerClient *client, const char *search_text, TrackerGPtrArrayReply callback, gpointer user_data);
-void tracker_search_text_async (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-void tracker_search_text_detailed_async (TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
-void tracker_search_get_snippet_async (TrackerClient *client, ServiceType service, const char *uri, const char *search_text, TrackerStringReply callback, gpointer user_data);
-void tracker_search_metadata_async (TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-void tracker_search_query_async (TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, const char *keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, TrackerGPtrArrayReply callback, gpointer user_data);
-void tracker_search_suggest_async (TrackerClient *client, const char *search_text, int maxdist, TrackerStringReply callback, gpointer user_data);
-
-void tracker_files_create_async (TrackerClient *client, const char *uri, gboolean is_directory, const char *mime, int size, int mtime, TrackerVoidReply callback, gpointer user_data);
-void tracker_files_delete_async (TrackerClient *client, const char *uri, TrackerVoidReply callback, gpointer user_data);
-void tracker_files_get_text_contents_async (TrackerClient *client, const char *uri, int offset, int max_length, TrackerStringReply callback, gpointer user_data);
-void tracker_files_search_text_contents_async (TrackerClient *client, const char *uri, const char *search_text, int length, TrackerStringReply callback, gpointer user_data);
-void tracker_files_get_by_service_type_async (TrackerClient *client, int live_query_id, ServiceType service, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-void tracker_files_get_by_mime_type_async (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-void tracker_files_get_by_mime_type_vfs_async (TrackerClient *client, int live_query_id, char **mimes, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-
-void tracker_files_get_mtime_async (TrackerClient *client, const char *uri, TrackerIntReply callback, gpointer user_data);
-void tracker_files_get_metadata_for_files_in_folder_async (TrackerClient *client, int live_query_id, const char *uri, char **fields, TrackerGPtrArrayReply callback, gpointer user_data);
-
-
-
-
-/* Deprecated calls - API specific for nautilus search use only. New code should use tracker_search_metadata_matching_text_async instead */
-void tracker_search_metadata_by_text_async (TrackerClient *client, const char *query, TrackerArrayReply callback, gpointer user_data);
-void tracker_search_metadata_by_text_and_mime_async (TrackerClient *client, const char *query, const char **mimes, TrackerArrayReply callback, gpointer user_data);
-void tracker_search_metadata_by_text_and_mime_and_location_async (TrackerClient *client, const char *query, const char **mimes, const char *location, TrackerArrayReply callback, gpointer user_data);
-void tracker_search_metadata_by_text_and_location_async (TrackerClient *client, const char *query, const char *location, TrackerArrayReply callback, gpointer user_data);
-
-G_END_DECLS
-
-#endif /* TRACKER_H */
diff --git a/src/qdbm/Makefile.am b/src/qdbm/Makefile.am
deleted file mode 100644
index 590ca6c0c..000000000
--- a/src/qdbm/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-INCLUDES = \
- -D_XOPEN_SOURCE_EXTENDED=1 \
- -D_GNU_SOURCE=1 \
- -D__EXTENSIONS__=1 \
- -D_HPUX_SOURCE=1 \
- -D_POSIX_MAPPED_FILES=1 \
- -D_POSIX_SYNCHRONIZED_IO=1 \
- -DPIC=1 \
- -D_THREAD_SAFE=1 \
- -D_REENTRANT=1 \
- -DNDEBUG \
- -DMYNOMMAP
-
-noinst_LTLIBRARIES = libqdbm-private.la
-
-libqdbm_private_la_SOURCES = \
- depot.c \
- depot.h \
- myconf.c \
- myconf.h
diff --git a/src/qdbm/depot.c b/src/qdbm/depot.c
deleted file mode 100644
index 065d40956..000000000
--- a/src/qdbm/depot.c
+++ /dev/null
@@ -1,2226 +0,0 @@
-/*************************************************************************************************
- * Implementation of Depot
- * Copyright (C) 2000-2006 Mikio Hirabayashi
- * This file is part of QDBM, Quick Database Manager.
- * QDBM is free software; you can redistribute it and/or modify it under the terms of the GNU
- * Lesser General Public License as published by the Free Software Foundation; either version
- * 2.1 of the License or any later version. QDBM is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- * You should have received a copy of the GNU Lesser General Public License along with QDBM; if
- * not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307 USA.
- *************************************************************************************************/
-
-
-#define QDBM_INTERNAL 1
-
-#include "depot.h"
-#include "myconf.h"
-
-#define DP_FILEMODE 00644 /* permission of a creating file */
-#define DP_MAGICNUMB "[DEPOT]\n\f" /* magic number on environments of big endian */
-#define DP_MAGICNUML "[depot]\n\f" /* magic number on environments of little endian */
-#define DP_HEADSIZ 48 /* size of the reagion of the header */
-#define DP_LIBVEROFF 12 /* offset of the region for the library version */
-#define DP_FLAGSOFF 16 /* offset of the region for flags */
-#define DP_FSIZOFF 24 /* offset of the region for the file size */
-#define DP_BNUMOFF 32 /* offset of the region for the bucket number */
-#define DP_RNUMOFF 40 /* offset of the region for the record number */
-#define DP_DEFBNUM 8191 /* default bucket number */
-#define DP_FBPOOLSIZ 16 /* size of free block pool */
-#define DP_ENTBUFSIZ 128 /* size of the entity buffer */
-#define DP_STKBUFSIZ 256 /* size of the stack key buffer */
-#define DP_WRTBUFSIZ 8192 /* size of the writing buffer */
-#define DP_FSBLKSIZ 4096 /* size of a block of the file system */
-#define DP_TMPFSUF MYEXTSTR "dptmp" /* suffix of a temporary file */
-#define DP_OPTBLOAD 0.25 /* ratio of bucket loading at optimization */
-#define DP_OPTRUNIT 256 /* number of records in a process of optimization */
-#define DP_NUMBUFSIZ 32 /* size of a buffer for a number */
-#define DP_IOBUFSIZ 8192 /* size of an I/O buffer */
-
-/* get the first hash value */
-#define DP_FIRSTHASH(DP_res, DP_kbuf, DP_ksiz) \
- do { \
- int _DP_i; \
- if((DP_ksiz) == sizeof(int)){ \
- memcpy(&(DP_res), (DP_kbuf), sizeof(int)); \
- } else { \
- (DP_res) = 751; \
- } \
- for(_DP_i = 0; _DP_i < (DP_ksiz); _DP_i++){ \
- (DP_res) = (DP_res) * 31 + ((const unsigned char *)(DP_kbuf))[_DP_i]; \
- } \
- (DP_res) = ((DP_res) * 87767623) & 0x7FFFFFFF; \
- } while(FALSE)
-
-/* get the second hash value */
-#define DP_SECONDHASH(DP_res, DP_kbuf, DP_ksiz) \
- do { \
- int _DP_i; \
- (DP_res) = 19780211; \
- for(_DP_i = (DP_ksiz) - 1; _DP_i >= 0; _DP_i--){ \
- (DP_res) = (DP_res) * 37 + ((const unsigned char *)(DP_kbuf))[_DP_i]; \
- } \
- (DP_res) = ((DP_res) * 43321879) & 0x7FFFFFFF; \
- } while(FALSE)
-
-/* get the third hash value */
-#define DP_THIRDHASH(DP_res, DP_kbuf, DP_ksiz) \
- do { \
- int _DP_i; \
- (DP_res) = 774831917; \
- for(_DP_i = (DP_ksiz) - 1; _DP_i >= 0; _DP_i--){ \
- (DP_res) = (DP_res) * 29 + ((const unsigned char *)(DP_kbuf))[_DP_i]; \
- } \
- (DP_res) = ((DP_res) * 5157883) & 0x7FFFFFFF; \
- } while(FALSE)
-
-enum { /* enumeration for a record header */
- DP_RHIFLAGS, /* offset of flags */
- DP_RHIHASH, /* offset of value of the second hash function */
- DP_RHIKSIZ, /* offset of the size of the key */
- DP_RHIVSIZ, /* offset of the size of the value */
- DP_RHIPSIZ, /* offset of the size of the padding bytes */
- DP_RHILEFT, /* offset of the offset of the left child */
- DP_RHIRIGHT, /* offset of the offset of the right child */
- DP_RHNUM /* number of elements of a header */
-};
-
-enum { /* enumeration for the flag of a record */
- DP_RECFDEL = 1 << 0, /* deleted */
- DP_RECFREUSE = 1 << 1 /* reusable */
-};
-
-
-/* private function prototypes */
-static int dpbigendian(void);
-static char *dpstrdup(const char *str);
-static int dplock(int fd, int ex, int nb);
-static int dpwrite(int fd, const void *buf, int size);
-static int dpseekwrite(int fd, int off, const void *buf, int size);
-static int dpseekwritenum(int fd, int off, int num);
-static int dpread(int fd, void *buf, int size);
-static int dpseekread(int fd, int off, void *buf, int size);
-static int dpfcopy(int destfd, int destoff, int srcfd, int srcoff);
-static int dpgetprime(int num);
-static int dppadsize(DEPOT *depot, int ksiz, int vsiz);
-static int dprecsize(int *head);
-static int dprechead(DEPOT *depot, int off, int *head, char *ebuf, int *eep);
-static char *dpreckey(DEPOT *depot, int off, int *head);
-static char *dprecval(DEPOT *depot, int off, int *head, int start, int max);
-static int dprecvalwb(DEPOT *depot, int off, int *head, int start, int max, char *vbuf);
-static int dpkeycmp(const char *abuf, int asiz, const char *bbuf, int bsiz);
-static int dprecsearch(DEPOT *depot, const char *kbuf, int ksiz, int hash, int *bip, int *offp,
- int *entp, int *head, char *ebuf, int *eep, int delhit);
-static int dprecrewrite(DEPOT *depot, int off, int rsiz, const char *kbuf, int ksiz,
- const char *vbuf, int vsiz, int hash, int left, int right);
-static int dprecappend(DEPOT *depot, const char *kbuf, int ksiz, const char *vbuf, int vsiz,
- int hash, int left, int right);
-static int dprecover(DEPOT *depot, int off, int *head, const char *vbuf, int vsiz, int cat);
-static int dprecdelete(DEPOT *depot, int off, int *head, int reusable);
-static void dpfbpoolcoal(DEPOT *depot);
-static int dpfbpoolcmp(const void *a, const void *b);
-
-
-
-/*************************************************************************************************
- * public objects
- *************************************************************************************************/
-
-
-/* String containing the version information. */
-const char *dpversion = _QDBM_VERSION;
-
-
-/* Get a message string corresponding to an error code. */
-const char *dperrmsg(int ecode){
- switch(ecode){
- case DP_ENOERR: return "no error";
- case DP_EFATAL: return "with fatal error";
- case DP_EMODE: return "invalid mode";
- case DP_EBROKEN: return "broken database file";
- case DP_EKEEP: return "existing record";
- case DP_ENOITEM: return "no item found";
- case DP_EALLOC: return "memory allocation error";
- case DP_EMAP: return "memory mapping error";
- case DP_EOPEN: return "open error";
- case DP_ECLOSE: return "close error";
- case DP_ETRUNC: return "trunc error";
- case DP_ESYNC: return "sync error";
- case DP_ESTAT: return "stat error";
- case DP_ESEEK: return "seek error";
- case DP_EREAD: return "read error";
- case DP_EWRITE: return "write error";
- case DP_ELOCK: return "lock error";
- case DP_EUNLINK: return "unlink error";
- case DP_EMKDIR: return "mkdir error";
- case DP_ERMDIR: return "rmdir error";
- case DP_EMISC: return "miscellaneous error";
- }
- return "(invalid ecode)";
-}
-
-
-/* Get a database handle. */
-DEPOT *dpopen(const char *name, int omode, int bnum){
- char hbuf[DP_HEADSIZ], *map, c, *tname;
- int i, mode, fd, inode, fsiz, rnum, msiz, *fbpool;
- struct stat sbuf;
- time_t mtime;
- DEPOT *depot;
- assert(name);
- mode = O_RDONLY;
- if(omode & DP_OWRITER){
- mode = O_RDWR;
- if(omode & DP_OCREAT) mode |= O_CREAT;
- }
-
-#if defined(__linux__)
-
- fd = open(name, mode|O_NOATIME, DP_FILEMODE);
-
- if (fd == -1) {
- fd = open(name, mode, DP_FILEMODE);
- }
-#else
- fd = open(name, mode, DP_FILEMODE);
-#endif
-
- if(fd == -1){
- dpecodeset(DP_EOPEN, __FILE__, __LINE__);
- return NULL;
- }
- if(!(omode & DP_ONOLCK)){
- if(!dplock(fd, omode & DP_OWRITER, omode & DP_OLCKNB)){
- close(fd);
- return NULL;
- }
- }
- if((omode & DP_OWRITER) && (omode & DP_OTRUNC)){
- if(ftruncate(fd, 0) == -1){
- close(fd);
- dpecodeset(DP_ETRUNC, __FILE__, __LINE__);
- return NULL;
- }
- }
- if(fstat(fd, &sbuf) == -1 || !S_ISREG(sbuf.st_mode) ||
- (sbuf.st_ino == 0 && lstat(name, &sbuf) == -1)){
- close(fd);
- dpecodeset(DP_ESTAT, __FILE__, __LINE__);
- return NULL;
- }
- inode = sbuf.st_ino;
- mtime = sbuf.st_mtime;
- fsiz = sbuf.st_size;
- if((omode & DP_OWRITER) && fsiz == 0){
- memset(hbuf, 0, DP_HEADSIZ);
- if(dpbigendian()){
- memcpy(hbuf, DP_MAGICNUMB, strlen(DP_MAGICNUMB));
- } else {
- memcpy(hbuf, DP_MAGICNUML, strlen(DP_MAGICNUML));
- }
- sprintf(hbuf + DP_LIBVEROFF, "%d", _QDBM_LIBVER / 100);
- bnum = bnum < 1 ? DP_DEFBNUM : bnum;
- bnum = dpgetprime(bnum);
- memcpy(hbuf + DP_BNUMOFF, &bnum, sizeof(int));
- rnum = 0;
- memcpy(hbuf + DP_RNUMOFF, &rnum, sizeof(int));
- fsiz = DP_HEADSIZ + bnum * sizeof(int);
- memcpy(hbuf + DP_FSIZOFF, &fsiz, sizeof(int));
- if(!dpseekwrite(fd, 0, hbuf, DP_HEADSIZ)){
- close(fd);
- return NULL;
- }
- if(omode & DP_OSPARSE){
- c = 0;
- if(!dpseekwrite(fd, fsiz - 1, &c, 1)){
- close(fd);
- return NULL;
- }
- } else {
- if(!(map = malloc(bnum * sizeof(int)))){
- close(fd);
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return NULL;
- }
- memset(map, 0, bnum * sizeof(int));
- if(!dpseekwrite(fd, DP_HEADSIZ, map, bnum * sizeof(int))){
- free(map);
- close(fd);
- return NULL;
- }
- free(map);
- }
- }
- if(!dpseekread(fd, 0, hbuf, DP_HEADSIZ)){
- close(fd);
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return NULL;
- }
- if(!(omode & DP_ONOLCK) &&
- ((dpbigendian() ? memcmp(hbuf, DP_MAGICNUMB, strlen(DP_MAGICNUMB)) != 0 :
- memcmp(hbuf, DP_MAGICNUML, strlen(DP_MAGICNUML)) != 0) ||
- *((int *)(hbuf + DP_FSIZOFF)) != fsiz)){
- close(fd);
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return NULL;
- }
- bnum = *((int *)(hbuf + DP_BNUMOFF));
- rnum = *((int *)(hbuf + DP_RNUMOFF));
- if(bnum < 1 || rnum < 0 || fsiz < DP_HEADSIZ + bnum * sizeof(int)){
- close(fd);
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return NULL;
- }
- msiz = DP_HEADSIZ + bnum * sizeof(int);
- map = mmap(0, msiz, PROT_READ | ((mode & DP_OWRITER) ? PROT_WRITE : 0), MAP_SHARED, fd, 0);
- if(map == MAP_FAILED){
- close(fd);
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- return NULL;
- }
- tname = NULL;
- fbpool = NULL;
- if(!(depot = malloc(sizeof(DEPOT))) || !(tname = dpstrdup(name)) ||
- !(fbpool = malloc(DP_FBPOOLSIZ * 2 * sizeof(int)))){
- free(fbpool);
- free(tname);
- free(depot);
- munmap(map, msiz);
- close(fd);
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return NULL;
- }
- depot->name = tname;
- depot->wmode = (mode & DP_OWRITER);
- depot->inode = inode;
- depot->mtime = mtime;
- depot->fd = fd;
- depot->fsiz = fsiz;
- depot->map = map;
- depot->msiz = msiz;
- depot->buckets = (int *)(map + DP_HEADSIZ);
- depot->bnum = bnum;
- depot->rnum = rnum;
- depot->fatal = FALSE;
- depot->ioff = 0;
- depot->fbpool = fbpool;
- for(i = 0; i < DP_FBPOOLSIZ * 2; i += 2){
- depot->fbpool[i] = -1;
- depot->fbpool[i+1] = -1;
- }
- depot->fbpsiz = DP_FBPOOLSIZ * 2;
- depot->fbpinc = 0;
- depot->align = 0;
- return depot;
-}
-
-
-/* Close a database handle. */
-int dpclose(DEPOT *depot){
- int fatal, err;
- assert(depot);
- fatal = depot->fatal;
- err = FALSE;
- if(depot->wmode){
- *((int *)(depot->map + DP_FSIZOFF)) = depot->fsiz;
- *((int *)(depot->map + DP_RNUMOFF)) = depot->rnum;
- }
- if(depot->map != MAP_FAILED){
- if(munmap(depot->map, depot->msiz) == -1){
- err = TRUE;
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- }
- }
- if(close(depot->fd) == -1){
- err = TRUE;
- dpecodeset(DP_ECLOSE, __FILE__, __LINE__);
- }
- free(depot->fbpool);
- free(depot->name);
- free(depot);
- if(fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- return err ? FALSE : TRUE;
-}
-
-
-/* Store a record. */
-int dpput(DEPOT *depot, const char *kbuf, int ksiz, const char *vbuf, int vsiz, int dmode){
- int head[DP_RHNUM], next[DP_RHNUM];
- int i, hash, bi, off, entoff, ee, newoff, rsiz, nsiz, fdel, mroff, mrsiz, mi, min;
- char ebuf[DP_ENTBUFSIZ], *tval, *swap;
- assert(depot && kbuf && vbuf);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- if(ksiz < 0) ksiz = strlen(kbuf);
- if(vsiz < 0) vsiz = strlen(vbuf);
- newoff = -1;
- DP_SECONDHASH(hash, kbuf, ksiz);
- switch(dprecsearch(depot, kbuf, ksiz, hash, &bi, &off, &entoff, head, ebuf, &ee, TRUE)){
- case -1:
- depot->fatal = TRUE;
- return FALSE;
- case 0:
- fdel = head[DP_RHIFLAGS] & DP_RECFDEL;
- if(dmode == DP_DKEEP && !fdel){
- dpecodeset(DP_EKEEP, __FILE__, __LINE__);
- return FALSE;
- }
- if(fdel){
- head[DP_RHIPSIZ] += head[DP_RHIVSIZ];
- head[DP_RHIVSIZ] = 0;
- }
- rsiz = dprecsize(head);
- nsiz = DP_RHNUM * sizeof(int) + ksiz + vsiz;
- if(dmode == DP_DCAT) nsiz += head[DP_RHIVSIZ];
- if(off + rsiz >= depot->fsiz){
- if(rsiz < nsiz){
- head[DP_RHIPSIZ] += nsiz - rsiz;
- rsiz = nsiz;
- depot->fsiz = off + rsiz;
- }
- } else {
- while(nsiz > rsiz && off + rsiz < depot->fsiz){
- if(!dprechead(depot, off + rsiz, next, NULL, NULL)) return FALSE;
- if(!(next[DP_RHIFLAGS] & DP_RECFREUSE)) break;
- head[DP_RHIPSIZ] += dprecsize(next);
- rsiz += dprecsize(next);
- }
- for(i = 0; i < depot->fbpsiz; i += 2){
- if(depot->fbpool[i] >= off && depot->fbpool[i] < off + rsiz){
- depot->fbpool[i] = -1;
- depot->fbpool[i+1] = -1;
- }
- }
- }
- if(nsiz <= rsiz){
- if(!dprecover(depot, off, head, vbuf, vsiz, dmode == DP_DCAT)){
- depot->fatal = TRUE;
- return FALSE;
- }
- } else {
- tval = NULL;
- if(dmode == DP_DCAT){
- if(ee && DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + head[DP_RHIVSIZ] <= DP_ENTBUFSIZ){
- if(!(tval = malloc(head[DP_RHIVSIZ] + vsiz + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- memcpy(tval, ebuf + (DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ]), head[DP_RHIVSIZ]);
- } else {
- if(!(tval = dprecval(depot, off, head, 0, -1))){
- depot->fatal = TRUE;
- return FALSE;
- }
- if(!(swap = realloc(tval, head[DP_RHIVSIZ] + vsiz + 1))){
- free(tval);
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- tval = swap;
- }
- memcpy(tval + head[DP_RHIVSIZ], vbuf, vsiz);
- vsiz += head[DP_RHIVSIZ];
- vbuf = tval;
- }
- mi = -1;
- min = -1;
- for(i = 0; i < depot->fbpsiz; i += 2){
- if(depot->fbpool[i+1] < nsiz) continue;
- if(mi == -1 || depot->fbpool[i+1] < min){
- mi = i;
- min = depot->fbpool[i+1];
- }
- }
- if(mi >= 0){
- mroff = depot->fbpool[mi];
- mrsiz = depot->fbpool[mi+1];
- depot->fbpool[mi] = -1;
- depot->fbpool[mi+1] = -1;
- } else {
- mroff = -1;
- mrsiz = -1;
- }
- if(!dprecdelete(depot, off, head, TRUE)){
- free(tval);
- depot->fatal = TRUE;
- return FALSE;
- }
- if(mroff > 0 && nsiz <= mrsiz){
- if(!dprecrewrite(depot, mroff, mrsiz, kbuf, ksiz, vbuf, vsiz,
- hash, head[DP_RHILEFT], head[DP_RHIRIGHT])){
- free(tval);
- depot->fatal = TRUE;
- return FALSE;
- }
- newoff = mroff;
- } else {
- if((newoff = dprecappend(depot, kbuf, ksiz, vbuf, vsiz,
- hash, head[DP_RHILEFT], head[DP_RHIRIGHT])) == -1){
- free(tval);
- depot->fatal = TRUE;
- return FALSE;
- }
- }
- free(tval);
- }
- if(fdel) depot->rnum++;
- break;
- default:
- if((newoff = dprecappend(depot, kbuf, ksiz, vbuf, vsiz, hash, 0, 0)) == -1){
- depot->fatal = TRUE;
- return FALSE;
- }
- depot->rnum++;
- break;
- }
- if(newoff > 0){
- if(entoff > 0){
- if(!dpseekwritenum(depot->fd, entoff, newoff)){
- depot->fatal = TRUE;
- return FALSE;
- }
- } else {
- depot->buckets[bi] = newoff;
- }
- }
- return TRUE;
-}
-
-
-/* Delete a record. */
-int dpout(DEPOT *depot, const char *kbuf, int ksiz){
- int head[DP_RHNUM], hash, bi, off, entoff, ee;
- char ebuf[DP_ENTBUFSIZ];
- assert(depot && kbuf);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- if(ksiz < 0) ksiz = strlen(kbuf);
- DP_SECONDHASH(hash, kbuf, ksiz);
- switch(dprecsearch(depot, kbuf, ksiz, hash, &bi, &off, &entoff, head, ebuf, &ee, FALSE)){
- case -1:
- depot->fatal = TRUE;
- return FALSE;
- case 0:
- break;
- default:
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return FALSE;
- }
- if(!dprecdelete(depot, off, head, FALSE)){
- depot->fatal = TRUE;
- return FALSE;
- }
- depot->rnum--;
- return TRUE;
-}
-
-
-/* Retrieve a record. */
-char *dpget(DEPOT *depot, const char *kbuf, int ksiz, int start, int max, int *sp){
- int head[DP_RHNUM], hash, bi, off, entoff, ee, vsiz;
- char ebuf[DP_ENTBUFSIZ], *vbuf;
- assert(depot && kbuf && start >= 0);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return NULL;
- }
- if(ksiz < 0) ksiz = strlen(kbuf);
- DP_SECONDHASH(hash, kbuf, ksiz);
- switch(dprecsearch(depot, kbuf, ksiz, hash, &bi, &off, &entoff, head, ebuf, &ee, FALSE)){
- case -1:
- depot->fatal = TRUE;
- return NULL;
- case 0:
- break;
- default:
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return NULL;
- }
- if(start > head[DP_RHIVSIZ]){
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return NULL;
- }
- if(ee && DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + head[DP_RHIVSIZ] <= DP_ENTBUFSIZ){
- head[DP_RHIVSIZ] -= start;
- if(max < 0){
- vsiz = head[DP_RHIVSIZ];
- } else {
- vsiz = max < head[DP_RHIVSIZ] ? max : head[DP_RHIVSIZ];
- }
- if(!(vbuf = malloc(vsiz + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return NULL;
- }
- memcpy(vbuf, ebuf + (DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + start), vsiz);
- vbuf[vsiz] = '\0';
- } else {
- if(!(vbuf = dprecval(depot, off, head, start, max))){
- depot->fatal = TRUE;
- return NULL;
- }
- }
- if(sp){
- if(max < 0){
- *sp = head[DP_RHIVSIZ];
- } else {
- *sp = max < head[DP_RHIVSIZ] ? max : head[DP_RHIVSIZ];
- }
- }
- return vbuf;
-}
-
-
-/* Retrieve a record and write the value into a buffer. */
-int dpgetwb(DEPOT *depot, const char *kbuf, int ksiz, int start, int max, char *vbuf){
- int head[DP_RHNUM], hash, bi, off, entoff, ee, vsiz;
- char ebuf[DP_ENTBUFSIZ];
- assert(depot && kbuf && start >= 0 && max >= 0 && vbuf);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return -1;
- }
- if(ksiz < 0) ksiz = strlen(kbuf);
- DP_SECONDHASH(hash, kbuf, ksiz);
- switch(dprecsearch(depot, kbuf, ksiz, hash, &bi, &off, &entoff, head, ebuf, &ee, FALSE)){
- case -1:
- depot->fatal = TRUE;
- return -1;
- case 0:
- break;
- default:
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return -1;
- }
- if(start > head[DP_RHIVSIZ]){
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return -1;
- }
- if(ee && DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + head[DP_RHIVSIZ] <= DP_ENTBUFSIZ){
- head[DP_RHIVSIZ] -= start;
- vsiz = max < head[DP_RHIVSIZ] ? max : head[DP_RHIVSIZ];
- memcpy(vbuf, ebuf + (DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + start), vsiz);
- } else {
- if((vsiz = dprecvalwb(depot, off, head, start, max, vbuf)) == -1){
- depot->fatal = TRUE;
- return -1;
- }
- }
- return vsiz;
-}
-
-
-/* Get the size of the value of a record. */
-int dpvsiz(DEPOT *depot, const char *kbuf, int ksiz){
- int head[DP_RHNUM], hash, bi, off, entoff, ee;
- char ebuf[DP_ENTBUFSIZ];
- assert(depot && kbuf);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return -1;
- }
- if(ksiz < 0) ksiz = strlen(kbuf);
- DP_SECONDHASH(hash, kbuf, ksiz);
- switch(dprecsearch(depot, kbuf, ksiz, hash, &bi, &off, &entoff, head, ebuf, &ee, FALSE)){
- case -1:
- depot->fatal = TRUE;
- return -1;
- case 0:
- break;
- default:
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return -1;
- }
- return head[DP_RHIVSIZ];
-}
-
-
-/* Initialize the iterator of a database handle. */
-int dpiterinit(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- depot->ioff = 0;
- return TRUE;
-}
-
-
-/* Get the next key of the iterator. */
-char *dpiternext(DEPOT *depot, int *sp){
- int off, head[DP_RHNUM], ee;
- char ebuf[DP_ENTBUFSIZ], *kbuf;
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return NULL;
- }
- off = DP_HEADSIZ + depot->bnum * sizeof(int);
- off = off > depot->ioff ? off : depot->ioff;
- while(off < depot->fsiz){
- if(!dprechead(depot, off, head, ebuf, &ee)){
- depot->fatal = TRUE;
- return NULL;
- }
- if(head[DP_RHIFLAGS] & DP_RECFDEL){
- off += dprecsize(head);
- } else {
- if(ee && DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] <= DP_ENTBUFSIZ){
- if(!(kbuf = malloc(head[DP_RHIKSIZ] + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return NULL;
- }
- memcpy(kbuf, ebuf + (DP_RHNUM * sizeof(int)), head[DP_RHIKSIZ]);
- kbuf[head[DP_RHIKSIZ]] = '\0';
- } else {
- if(!(kbuf = dpreckey(depot, off, head))){
- depot->fatal = TRUE;
- return NULL;
- }
- }
- depot->ioff = off + dprecsize(head);
- if(sp) *sp = head[DP_RHIKSIZ];
- return kbuf;
- }
- }
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- return NULL;
-}
-
-
-/* Set alignment of a database handle. */
-int dpsetalign(DEPOT *depot, int align){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- depot->align = align;
- return TRUE;
-}
-
-
-/* Set the size of the free block pool of a database handle. */
-int dpsetfbpsiz(DEPOT *depot, int size){
- int *fbpool;
- int i;
- assert(depot && size >= 0);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- size *= 2;
- if(!(fbpool = realloc(depot->fbpool, size * sizeof(int) + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return FALSE;
- }
- for(i = 0; i < size; i += 2){
- fbpool[i] = -1;
- fbpool[i+1] = -1;
- }
- depot->fbpool = fbpool;
- depot->fbpsiz = size;
- return TRUE;
-}
-
-
-
-/* Synchronize contents of updating a database with the file and the device. */
-int dpsync(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- *((int *)(depot->map + DP_FSIZOFF)) = depot->fsiz;
- *((int *)(depot->map + DP_RNUMOFF)) = depot->rnum;
- if(msync(depot->map, depot->msiz, MS_SYNC) == -1){
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- if(fdatasync(depot->fd) == -1){
- dpecodeset(DP_ESYNC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Optimize a database. */
-int dpoptimize(DEPOT *depot, int bnum){
- DEPOT *tdepot;
- char *name;
- int i, err, off, head[DP_RHNUM], ee, ksizs[DP_OPTRUNIT], vsizs[DP_OPTRUNIT], unum;
- char ebuf[DP_ENTBUFSIZ], *kbufs[DP_OPTRUNIT], *vbufs[DP_OPTRUNIT];
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- if(!(name = malloc(strlen(depot->name) + strlen(DP_TMPFSUF) + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- depot->fatal = FALSE;
- return FALSE;
- }
- sprintf(name, "%s%s", depot->name, DP_TMPFSUF);
- if(bnum < 0){
- bnum = (int)(depot->rnum * (1.0 / DP_OPTBLOAD)) + 1;
- if(bnum < DP_DEFBNUM / 2) bnum = DP_DEFBNUM / 2;
- }
- if(!(tdepot = dpopen(name, DP_OWRITER | DP_OCREAT | DP_OTRUNC, bnum))){
- free(name);
- depot->fatal = TRUE;
- return FALSE;
- }
- free(name);
- if(!dpsetflags(tdepot, dpgetflags(depot))){
- dpclose(tdepot);
- depot->fatal = TRUE;
- return FALSE;
- }
- tdepot->align = depot->align;
- err = FALSE;
- off = DP_HEADSIZ + depot->bnum * sizeof(int);
- unum = 0;
- while(off < depot->fsiz){
- if(!dprechead(depot, off, head, ebuf, &ee)){
- err = TRUE;
- break;
- }
- if(!(head[DP_RHIFLAGS] & DP_RECFDEL)){
- if(ee && DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] <= DP_ENTBUFSIZ){
- if(!(kbufs[unum] = malloc(head[DP_RHIKSIZ] + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- break;
- }
- memcpy(kbufs[unum], ebuf + (DP_RHNUM * sizeof(int)), head[DP_RHIKSIZ]);
- if(DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + head[DP_RHIVSIZ] <= DP_ENTBUFSIZ){
- if(!(vbufs[unum] = malloc(head[DP_RHIVSIZ] + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- break;
- }
- memcpy(vbufs[unum], ebuf + (DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ]),
- head[DP_RHIVSIZ]);
- } else {
- vbufs[unum] = dprecval(depot, off, head, 0, -1);
- }
- } else {
- kbufs[unum] = dpreckey(depot, off, head);
- vbufs[unum] = dprecval(depot, off, head, 0, -1);
- }
- ksizs[unum] = head[DP_RHIKSIZ];
- vsizs[unum] = head[DP_RHIVSIZ];
- unum++;
- if(unum >= DP_OPTRUNIT){
- for(i = 0; i < unum; i++){
- if(kbufs[i] && vbufs[i]){
- if(!dpput(tdepot, kbufs[i], ksizs[i], vbufs[i], vsizs[i], DP_DKEEP)) err = TRUE;
- } else {
- err = TRUE;
- }
- free(kbufs[i]);
- free(vbufs[i]);
- if(err) break;
- }
- unum = 0;
- }
- }
- off += dprecsize(head);
- if(err) break;
- }
- for(i = 0; i < unum; i++){
- if(kbufs[i] && vbufs[i]){
- if(!dpput(tdepot, kbufs[i], ksizs[i], vbufs[i], vsizs[i], DP_DKEEP)) err = TRUE;
- } else {
- err = TRUE;
- }
- free(kbufs[i]);
- free(vbufs[i]);
- if(err) break;
- }
- if(!dpsync(tdepot)) err = TRUE;
- if(err){
- unlink(tdepot->name);
- dpclose(tdepot);
- depot->fatal = TRUE;
- return FALSE;
- }
- if(munmap(depot->map, depot->msiz) == -1){
- dpclose(tdepot);
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- depot->map = MAP_FAILED;
- if(ftruncate(depot->fd, 0) == -1){
- dpclose(tdepot);
- unlink(tdepot->name);
- dpecodeset(DP_ETRUNC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- if(dpfcopy(depot->fd, 0, tdepot->fd, 0) == -1){
- dpclose(tdepot);
- unlink(tdepot->name);
- depot->fatal = TRUE;
- return FALSE;
- }
- depot->fsiz = tdepot->fsiz;
- depot->bnum = tdepot->bnum;
- depot->ioff = 0;
- for(i = 0; i < depot->fbpsiz; i += 2){
- depot->fbpool[i] = -1;
- depot->fbpool[i+1] = -1;
- }
- depot->msiz = tdepot->msiz;
- depot->map = mmap(0, depot->msiz, PROT_READ | PROT_WRITE, MAP_SHARED, depot->fd, 0);
- if(depot->map == MAP_FAILED){
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- depot->buckets = (int *)(depot->map + DP_HEADSIZ);
- if(!(name = dpname(tdepot))){
- dpclose(tdepot);
- unlink(tdepot->name);
- depot->fatal = TRUE;
- return FALSE;
- }
- if(!dpclose(tdepot)){
- free(name);
- unlink(tdepot->name);
- depot->fatal = TRUE;
- return FALSE;
- }
- if(unlink(name) == -1){
- free(name);
- dpecodeset(DP_EUNLINK, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- free(name);
- return TRUE;
-}
-
-
-/* Get the name of a database. */
-char *dpname(DEPOT *depot){
- char *name;
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return NULL;
- }
- if(!(name = dpstrdup(depot->name))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return NULL;
- }
- return name;
-}
-
-
-/* Get the size of a database file. */
-int dpfsiz(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return -1;
- }
- return depot->fsiz;
-}
-
-
-/* Get the number of the elements of the bucket array. */
-int dpbnum(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return -1;
- }
- return depot->bnum;
-}
-
-
-/* Get the number of the used elements of the bucket array. */
-int dpbusenum(DEPOT *depot){
- int i, hits;
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return -1;
- }
- hits = 0;
- for(i = 0; i < depot->bnum; i++){
- if(depot->buckets[i]) hits++;
- }
- return hits;
-}
-
-
-/* Get the number of the records stored in a database. */
-int dprnum(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return -1;
- }
- return depot->rnum;
-}
-
-
-/* Check whether a database handle is a writer or not. */
-int dpwritable(DEPOT *depot){
- assert(depot);
- return depot->wmode;
-}
-
-
-/* Check whether a database has a fatal error or not. */
-int dpfatalerror(DEPOT *depot){
- assert(depot);
- return depot->fatal;
-}
-
-
-/* Get the inode number of a database file. */
-int dpinode(DEPOT *depot){
- assert(depot);
- return depot->inode;
-}
-
-
-/* Get the last modified time of a database. */
-time_t dpmtime(DEPOT *depot){
- assert(depot);
- return depot->mtime;
-}
-
-
-/* Get the file descriptor of a database file. */
-int dpfdesc(DEPOT *depot){
- assert(depot);
- return depot->fd;
-}
-
-
-/* Remove a database file. */
-int dpremove(const char *name){
- struct stat sbuf;
- DEPOT *depot;
- assert(name);
- if(lstat(name, &sbuf) == -1){
- dpecodeset(DP_ESTAT, __FILE__, __LINE__);
- return FALSE;
- }
- if((depot = dpopen(name, DP_OWRITER | DP_OTRUNC, -1)) != NULL) dpclose(depot);
- if(unlink(name) == -1){
- dpecodeset(DP_EUNLINK, __FILE__, __LINE__);
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Repair a broken database file. */
-int dprepair(const char *name){
- DEPOT *tdepot;
- char dbhead[DP_HEADSIZ], *tname, *kbuf, *vbuf;
- int fd, fsiz, flags, bnum, tbnum, err, head[DP_RHNUM], off, rsiz, ksiz, vsiz;
- struct stat sbuf;
- assert(name);
- if(lstat(name, &sbuf) == -1){
- dpecodeset(DP_ESTAT, __FILE__, __LINE__);
- return FALSE;
- }
- fsiz = sbuf.st_size;
- if((fd = open(name, O_RDWR, DP_FILEMODE)) == -1){
- dpecodeset(DP_EOPEN, __FILE__, __LINE__);
- return FALSE;
- }
- if(!dpseekread(fd, 0, dbhead, DP_HEADSIZ)){
- close(fd);
- return FALSE;
- }
- flags = *(int *)(dbhead + DP_FLAGSOFF);
- bnum = *(int *)(dbhead + DP_BNUMOFF);
- tbnum = *(int *)(dbhead + DP_RNUMOFF) * 2;
- if(tbnum < DP_DEFBNUM) tbnum = DP_DEFBNUM;
- if(!(tname = malloc(strlen(name) + strlen(DP_TMPFSUF) + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return FALSE;
- }
- sprintf(tname, "%s%s", name, DP_TMPFSUF);
- if(!(tdepot = dpopen(tname, DP_OWRITER | DP_OCREAT | DP_OTRUNC, tbnum))){
- free(tname);
- close(fd);
- return FALSE;
- }
- err = FALSE;
- off = DP_HEADSIZ + bnum * sizeof(int);
- while(off < fsiz){
- if(!dpseekread(fd, off, head, DP_RHNUM * sizeof(int))) break;
- if(head[DP_RHIFLAGS] & DP_RECFDEL){
- if((rsiz = dprecsize(head)) < 0) break;
- off += rsiz;
- continue;
- }
- ksiz = head[DP_RHIKSIZ];
- vsiz = head[DP_RHIVSIZ];
- if(ksiz >= 0 && vsiz >= 0){
- kbuf = malloc(ksiz + 1);
- vbuf = malloc(vsiz + 1);
- if(kbuf && vbuf){
- if(dpseekread(fd, off + DP_RHNUM * sizeof(int), kbuf, ksiz) &&
- dpseekread(fd, off + DP_RHNUM * sizeof(int) + ksiz, vbuf, vsiz)){
- if(!dpput(tdepot, kbuf, ksiz, vbuf, vsiz, DP_DKEEP)) err = TRUE;
- } else {
- err = TRUE;
- }
- } else {
- if(!err) dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- }
- free(vbuf);
- free(kbuf);
- } else {
- if(!err) dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- err = TRUE;
- }
- if((rsiz = dprecsize(head)) < 0) break;
- off += rsiz;
- }
- if(!dpsetflags(tdepot, flags)) err = TRUE;
- if(!dpsync(tdepot)) err = TRUE;
- if(ftruncate(fd, 0) == -1){
- if(!err) dpecodeset(DP_ETRUNC, __FILE__, __LINE__);
- err = TRUE;
- }
- if(dpfcopy(fd, 0, tdepot->fd, 0) == -1) err = TRUE;
- if(!dpclose(tdepot)) err = TRUE;
- if(close(fd) == -1){
- if(!err) dpecodeset(DP_ECLOSE, __FILE__, __LINE__);
- err = TRUE;
- }
- if(unlink(tname) == -1){
- if(!err) dpecodeset(DP_EUNLINK, __FILE__, __LINE__);
- err = TRUE;
- }
- free(tname);
- return err ? FALSE : TRUE;
-}
-
-
-/* Dump all records as endian independent data. */
-int dpexportdb(DEPOT *depot, const char *name){
- char *kbuf, *vbuf, *pbuf;
- int fd, err, ksiz, vsiz, psiz;
- assert(depot && name);
- if(!(dpiterinit(depot))) return FALSE;
- if((fd = open(name, O_RDWR | O_CREAT | O_TRUNC, DP_FILEMODE)) == -1){
- dpecodeset(DP_EOPEN, __FILE__, __LINE__);
- return FALSE;
- }
- err = FALSE;
- while(!err && (kbuf = dpiternext(depot, &ksiz)) != NULL){
- if((vbuf = dpget(depot, kbuf, ksiz, 0, -1, &vsiz)) != NULL){
- if((pbuf = malloc(ksiz + vsiz + DP_NUMBUFSIZ * 2)) != NULL){
- psiz = 0;
- psiz += sprintf(pbuf + psiz, "%X\n%X\n", ksiz, vsiz);
- memcpy(pbuf + psiz, kbuf, ksiz);
- psiz += ksiz;
- pbuf[psiz++] = '\n';
- memcpy(pbuf + psiz, vbuf, vsiz);
- psiz += vsiz;
- pbuf[psiz++] = '\n';
- if(!dpwrite(fd, pbuf, psiz)){
- dpecodeset(DP_EWRITE, __FILE__, __LINE__);
- err = TRUE;
- }
- free(pbuf);
- } else {
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- }
- free(vbuf);
- } else {
- err = TRUE;
- }
- free(kbuf);
- }
- if(close(fd) == -1){
- if(!err) dpecodeset(DP_ECLOSE, __FILE__, __LINE__);
- return FALSE;
- }
- return !err && !dpfatalerror(depot);
-}
-
-
-/* Load all records from endian independent data. */
-int dpimportdb(DEPOT *depot, const char *name){
- char mbuf[DP_IOBUFSIZ], *rbuf;
- int i, j, fd, err, fsiz, off, msiz, ksiz, vsiz, hlen;
- struct stat sbuf;
- assert(depot && name);
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- if(dprnum(depot) > 0){
- dpecodeset(DP_EMISC, __FILE__, __LINE__);
- return FALSE;
- }
- if((fd = open(name, O_RDONLY, DP_FILEMODE)) == -1){
- dpecodeset(DP_EOPEN, __FILE__, __LINE__);
- return FALSE;
- }
- if(fstat(fd, &sbuf) == -1 || !S_ISREG(sbuf.st_mode)){
- dpecodeset(DP_ESTAT, __FILE__, __LINE__);
- close(fd);
- return FALSE;
- }
- err = FALSE;
- fsiz = sbuf.st_size;
- off = 0;
- while(!err && off < fsiz){
- msiz = fsiz - off;
- if(msiz > DP_IOBUFSIZ) msiz = DP_IOBUFSIZ;
- if(!dpseekread(fd, off, mbuf, msiz)){
- err = TRUE;
- break;
- }
- hlen = 0;
- ksiz = -1;
- vsiz = -1;
- for(i = 0; i < msiz; i++){
- if(mbuf[i] == '\n'){
- mbuf[i] = '\0';
- ksiz = strtol(mbuf, NULL, 16);
- for(j = i + 1; j < msiz; j++){
- if(mbuf[j] == '\n'){
- mbuf[j] = '\0';
- vsiz = strtol(mbuf + i + 1, NULL, 16);
- hlen = j + 1;
- break;
- }
- }
- break;
- }
- }
- if(ksiz < 0 || vsiz < 0 || hlen < 4){
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- err = TRUE;
- break;
- }
- if(hlen + ksiz + vsiz + 2 < DP_IOBUFSIZ){
- if(!dpput(depot, mbuf + hlen, ksiz, mbuf + hlen + ksiz + 1, vsiz, DP_DKEEP)) err = TRUE;
- } else {
- if((rbuf = malloc(ksiz + vsiz + 2)) != NULL){
- if(dpseekread(fd, off + hlen, rbuf, ksiz + vsiz + 2)){
- if(!dpput(depot, rbuf, ksiz, rbuf + ksiz + 1, vsiz, DP_DKEEP)) err = TRUE;
- } else {
- err = TRUE;
- }
- free(rbuf);
- } else {
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- }
- }
- off += hlen + ksiz + vsiz + 2;
- }
- if(close(fd) == -1){
- if(!err) dpecodeset(DP_ECLOSE, __FILE__, __LINE__);
- return FALSE;
- }
- return !err && !dpfatalerror(depot);
-}
-
-
-/* Retrieve a record directly from a database file. */
-char *dpsnaffle(const char *name, const char* kbuf, int ksiz, int *sp){
- char hbuf[DP_HEADSIZ], *map, *vbuf, *tkbuf;
- int fd, fsiz, bnum, msiz, *buckets, hash, thash, head[DP_RHNUM], err, off, vsiz, tksiz, kcmp;
- struct stat sbuf;
- assert(name && kbuf);
- if(ksiz < 0) ksiz = strlen(kbuf);
- if((fd = open(name, O_RDONLY, DP_FILEMODE)) == -1){
- dpecodeset(DP_EOPEN, __FILE__, __LINE__);
- return NULL;
- }
- if(fstat(fd, &sbuf) == -1 || !S_ISREG(sbuf.st_mode)){
- close(fd);
- dpecodeset(DP_ESTAT, __FILE__, __LINE__);
- return NULL;
- }
- fsiz = sbuf.st_size;
- if(!dpseekread(fd, 0, hbuf, DP_HEADSIZ)){
- close(fd);
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return NULL;
- }
- if(dpbigendian() ? memcmp(hbuf, DP_MAGICNUMB, strlen(DP_MAGICNUMB)) != 0 :
- memcmp(hbuf, DP_MAGICNUML, strlen(DP_MAGICNUML)) != 0){
- close(fd);
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return NULL;
- }
- bnum = *((int *)(hbuf + DP_BNUMOFF));
- if(bnum < 1 || fsiz < DP_HEADSIZ + bnum * sizeof(int)){
- close(fd);
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return NULL;
- }
- msiz = DP_HEADSIZ + bnum * sizeof(int);
- map = mmap(0, msiz, PROT_READ, MAP_SHARED, fd, 0);
- if(map == MAP_FAILED){
- close(fd);
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- return NULL;
- }
- buckets = (int *)(map + DP_HEADSIZ);
- err = FALSE;
- vbuf = NULL;
- vsiz = 0;
- DP_SECONDHASH(hash, kbuf, ksiz);
- DP_FIRSTHASH(thash, kbuf, ksiz);
- off = buckets[thash%bnum];
- while(off != 0){
- if(!dpseekread(fd, off, head, DP_RHNUM * sizeof(int))){
- err = TRUE;
- break;
- }
- if(head[DP_RHIKSIZ] < 0 || head[DP_RHIVSIZ] < 0 || head[DP_RHIPSIZ] < 0 ||
- head[DP_RHILEFT] < 0 || head[DP_RHIRIGHT] < 0){
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- err = TRUE;
- break;
- }
- thash = head[DP_RHIHASH];
- if(hash > thash){
- off = head[DP_RHILEFT];
- } else if(hash < thash){
- off = head[DP_RHIRIGHT];
- } else {
- tksiz = head[DP_RHIKSIZ];
- if(!(tkbuf = malloc(tksiz + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- break;
- }
- if(!dpseekread(fd, off + DP_RHNUM * sizeof(int), tkbuf, tksiz)){
- free(tkbuf);
- err = TRUE;
- break;
- }
- tkbuf[tksiz] = '\0';
- kcmp = dpkeycmp(kbuf, ksiz, tkbuf, tksiz);
- free(tkbuf);
- if(kcmp > 0){
- off = head[DP_RHILEFT];
- } else if(kcmp < 0){
- off = head[DP_RHIRIGHT];
- } else if(head[DP_RHIFLAGS] & DP_RECFDEL){
- break;
- } else {
- vsiz = head[DP_RHIVSIZ];
- if(!(vbuf = malloc(vsiz + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- err = TRUE;
- break;
- }
- if(!dpseekread(fd, off + DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ], vbuf, vsiz)){
- free(vbuf);
- vbuf = NULL;
- err = TRUE;
- break;
- }
- vbuf[vsiz] = '\0';
- break;
- }
- }
- }
- if(vbuf){
- if(sp) *sp = vsiz;
- } else if(!err){
- dpecodeset(DP_ENOITEM, __FILE__, __LINE__);
- }
- munmap(map, msiz);
- close(fd);
- return vbuf;
-}
-
-
-/* Hash function used inside Depot. */
-int dpinnerhash(const char *kbuf, int ksiz){
- int res;
- assert(kbuf);
- if(ksiz < 0) ksiz = strlen(kbuf);
- DP_FIRSTHASH(res, kbuf, ksiz);
- return res;
-}
-
-
-/* Hash function which is independent from the hash functions used inside Depot. */
-int dpouterhash(const char *kbuf, int ksiz){
- int res;
- assert(kbuf);
- if(ksiz < 0) ksiz = strlen(kbuf);
- DP_THIRDHASH(res, kbuf, ksiz);
- return res;
-}
-
-
-/* Get a natural prime number not less than a number. */
-int dpprimenum(int num){
- assert(num > 0);
- return dpgetprime(num);
-}
-
-
-
-/*************************************************************************************************
- * features for experts
- *************************************************************************************************/
-
-
-/* Name of the operating system. */
-const char *dpsysname = _QDBM_SYSNAME;
-
-
-/* File descriptor for debugging output. */
-int dpdbgfd = -1;
-
-
-/* Whether this build is reentrant. */
-const int dpisreentrant = _qdbm_ptsafe;
-
-
-/* Set the last happened error code. */
-void dpecodeset(int ecode, const char *file, int line){
- char iobuf[DP_IOBUFSIZ];
- assert(ecode >= DP_ENOERR && file && line >= 0);
- dpecode = ecode;
- if(dpdbgfd >= 0){
- fflush(stdout);
- fflush(stderr);
- sprintf(iobuf, "* dpecodeset: %s:%d: [%d] %s\n", file, line, ecode, dperrmsg(ecode));
- dpwrite(dpdbgfd, iobuf, strlen(iobuf));
- }
-}
-
-
-/* Get the pointer of the variable of the last happened error code. */
-int *dpecodeptr(void){
- static int defdpecode = DP_ENOERR;
- void *ptr;
- if(_qdbm_ptsafe){
- if(!(ptr = _qdbm_settsd(&defdpecode, sizeof(int), &defdpecode))){
- defdpecode = DP_EMISC;
- return &defdpecode;
- }
- return (int *)ptr;
- }
- return &defdpecode;
-}
-
-
-/* Synchronize updating contents on memory. */
-int dpmemsync(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- *((int *)(depot->map + DP_FSIZOFF)) = depot->fsiz;
- *((int *)(depot->map + DP_RNUMOFF)) = depot->rnum;
- if(msync(depot->map, depot->msiz, MS_SYNC) == -1){
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Synchronize updating contents on memory, not physically. */
-int dpmemflush(DEPOT *depot){
- assert(depot);
- if(depot->fatal){
- dpecodeset(DP_EFATAL, __FILE__, __LINE__);
- return FALSE;
- }
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- *((int *)(depot->map + DP_FSIZOFF)) = depot->fsiz;
- *((int *)(depot->map + DP_RNUMOFF)) = depot->rnum;
- if(mflush(depot->map, depot->msiz, MS_SYNC) == -1){
- dpecodeset(DP_EMAP, __FILE__, __LINE__);
- depot->fatal = TRUE;
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Get flags of a database. */
-int dpgetflags(DEPOT *depot){
- int flags;
- assert(depot);
- memcpy(&flags, depot->map + DP_FLAGSOFF, sizeof(int));
- return flags;
-}
-
-
-/* Set flags of a database. */
-int dpsetflags(DEPOT *depot, int flags){
- assert(depot);
- if(!depot->wmode){
- dpecodeset(DP_EMODE, __FILE__, __LINE__);
- return FALSE;
- }
- memcpy(depot->map + DP_FLAGSOFF, &flags, sizeof(int));
- return TRUE;
-}
-
-
-
-/*************************************************************************************************
- * private objects
- *************************************************************************************************/
-
-
-/* Check whether the byte order of the platform is big endian or not.
- The return value is true if bigendian, else, it is false. */
-static int dpbigendian(void){
- char buf[sizeof(int)];
- *(int *)buf = 1;
- return !buf[0];
-}
-
-
-/* Get a copied string.
- `str' specifies an original string.
- The return value is a copied string whose region is allocated by `malloc'. */
-static char *dpstrdup(const char *str){
- int len;
- char *buf;
- assert(str);
- len = strlen(str);
- if(!(buf = malloc(len + 1))) return NULL;
- memcpy(buf, str, len + 1);
- return buf;
-}
-
-
-/* Lock a file descriptor.
- `fd' specifies a file descriptor.
- `ex' specifies whether an exclusive lock or a shared lock is performed.
- `nb' specifies whether to request with non-blocking.
- The return value is true if successful, else, it is false. */
-static int dplock(int fd, int ex, int nb){
- struct flock lock;
- assert(fd >= 0);
- memset(&lock, 0, sizeof(struct flock));
- lock.l_type = ex ? F_WRLCK : F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0;
- lock.l_len = 0;
- lock.l_pid = 0;
- while(fcntl(fd, nb ? F_SETLK : F_SETLKW, &lock) == -1){
- if(errno != EINTR){
- dpecodeset(DP_ELOCK, __FILE__, __LINE__);
- return FALSE;
- }
- }
- return TRUE;
-}
-
-
-/* Write into a file.
- `fd' specifies a file descriptor.
- `buf' specifies a buffer to write.
- `size' specifies the size of the buffer.
- The return value is the size of the written buffer, or, -1 on failure. */
-static int dpwrite(int fd, const void *buf, int size){
- const char *lbuf;
- int rv, wb;
- assert(fd >= 0 && buf && size >= 0);
- lbuf = buf;
- rv = 0;
- do {
- wb = write(fd, lbuf, size);
- switch(wb){
- case -1: if(errno != EINTR) return -1;
- case 0: break;
- default:
- lbuf += wb;
- size -= wb;
- rv += wb;
- break;
- }
- } while(size > 0);
- return rv;
-}
-
-
-/* Write into a file at an offset.
- `fd' specifies a file descriptor.
- `off' specifies an offset of the file.
- `buf' specifies a buffer to write.
- `size' specifies the size of the buffer.
- The return value is true if successful, else, it is false. */
-static int dpseekwrite(int fd, int off, const void *buf, int size){
- assert(fd >= 0 && buf && size >= 0);
- if(size < 1) return TRUE;
- if(off < 0){
- if(lseek(fd, 0, SEEK_END) == -1){
- dpecodeset(DP_ESEEK, __FILE__, __LINE__);
- return FALSE;
- }
- } else {
- if(lseek(fd, off, SEEK_SET) != off){
- dpecodeset(DP_ESEEK, __FILE__, __LINE__);
- return FALSE;
- }
- }
- if(dpwrite(fd, buf, size) != size){
- dpecodeset(DP_EWRITE, __FILE__, __LINE__);
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Write an integer into a file at an offset.
- `fd' specifies a file descriptor.
- `off' specifies an offset of the file.
- `num' specifies an integer.
- The return value is true if successful, else, it is false. */
-static int dpseekwritenum(int fd, int off, int num){
- assert(fd >= 0);
- return dpseekwrite(fd, off, &num, sizeof(int));
-}
-
-
-/* Read from a file and store the data into a buffer.
- `fd' specifies a file descriptor.
- `buffer' specifies a buffer to store into.
- `size' specifies the size to read with.
- The return value is the size read with, or, -1 on failure. */
-static int dpread(int fd, void *buf, int size){
- char *lbuf;
- int i, bs;
- assert(fd >= 0 && buf && size >= 0);
- lbuf = buf;
- for(i = 0; i < size && (bs = read(fd, lbuf + i, size - i)) != 0; i += bs){
- if(bs == -1 && errno != EINTR) return -1;
- }
- return i;
-}
-
-
-/* Read from a file at an offset and store the data into a buffer.
- `fd' specifies a file descriptor.
- `off' specifies an offset of the file.
- `buffer' specifies a buffer to store into.
- `size' specifies the size to read with.
- The return value is true if successful, else, it is false. */
-static int dpseekread(int fd, int off, void *buf, int size){
- char *lbuf;
- assert(fd >= 0 && off >= 0 && buf && size >= 0);
- lbuf = (char *)buf;
- if(lseek(fd, off, SEEK_SET) != off){
- dpecodeset(DP_ESEEK, __FILE__, __LINE__);
- return FALSE;
- }
- if(dpread(fd, lbuf, size) != size){
- dpecodeset(DP_EREAD, __FILE__, __LINE__);
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Copy data between files.
- `destfd' specifies a file descriptor of a destination file.
- `destoff' specifies an offset of the destination file.
- `srcfd' specifies a file descriptor of a source file.
- `srcoff' specifies an offset of the source file.
- The return value is the size copied with, or, -1 on failure. */
-static int dpfcopy(int destfd, int destoff, int srcfd, int srcoff){
- char iobuf[DP_IOBUFSIZ];
- int sum, iosiz;
- if(lseek(srcfd, srcoff, SEEK_SET) == -1 || lseek(destfd, destoff, SEEK_SET) == -1){
- dpecodeset(DP_ESEEK, __FILE__, __LINE__);
- return -1;
- }
- sum = 0;
- while((iosiz = dpread(srcfd, iobuf, DP_IOBUFSIZ)) > 0){
- if(dpwrite(destfd, iobuf, iosiz) == -1){
- dpecodeset(DP_EWRITE, __FILE__, __LINE__);
- return -1;
- }
- sum += iosiz;
- }
- if(iosiz < 0){
- dpecodeset(DP_EREAD, __FILE__, __LINE__);
- return -1;
- }
- return sum;
-}
-
-
-/* Get a natural prime number not less than a number.
- `num' specified a natural number.
- The return value is a prime number not less than the specified number. */
-static int dpgetprime(int num){
- int primes[] = {
- 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 43, 47, 53, 59, 61, 71, 79, 83,
- 89, 103, 109, 113, 127, 139, 157, 173, 191, 199, 223, 239, 251, 283, 317, 349,
- 383, 409, 443, 479, 509, 571, 631, 701, 761, 829, 887, 953, 1021, 1151, 1279,
- 1399, 1531, 1663, 1789, 1913, 2039, 2297, 2557, 2803, 3067, 3323, 3583, 3833,
- 4093, 4603, 5119, 5623, 6143, 6653, 7159, 7673, 8191, 9209, 10223, 11261,
- 12281, 13309, 14327, 15359, 16381, 18427, 20479, 22511, 24571, 26597, 28669,
- 30713, 32749, 36857, 40949, 45053, 49139, 53239, 57331, 61417, 65521, 73727,
- 81919, 90107, 98299, 106487, 114679, 122869, 131071, 147451, 163819, 180221,
- 196597, 212987, 229373, 245759, 262139, 294911, 327673, 360439, 393209, 425977,
- 458747, 491503, 524287, 589811, 655357, 720887, 786431, 851957, 917503, 982981,
- 1048573, 1179641, 1310719, 1441771, 1572853, 1703903, 1835003, 1966079,
- 2097143, 2359267, 2621431, 2883577, 3145721, 3407857, 3670013, 3932153,
- 4194301, 4718579, 5242877, 5767129, 6291449, 6815741, 7340009, 7864301,
- 8388593, 9437179, 10485751, 11534329, 12582893, 13631477, 14680063, 15728611,
- 16777213, 18874367, 20971507, 23068667, 25165813, 27262931, 29360087, 31457269,
- 33554393, 37748717, 41943023, 46137319, 50331599, 54525917, 58720253, 62914549,
- 67108859, 75497467, 83886053, 92274671, 100663291, 109051903, 117440509,
- 125829103, 134217689, 150994939, 167772107, 184549373, 201326557, 218103799,
- 234881011, 251658227, 268435399, 301989881, 335544301, 369098707, 402653171,
- 436207613, 469762043, 503316469, 536870909, 603979769, 671088637, 738197503,
- 805306357, 872415211, 939524087, 1006632947, 1073741789, 1207959503,
- 1342177237, 1476394991, 1610612711, 1744830457, 1879048183, 2013265907, -1
- };
- int i;
- assert(num > 0);
- for(i = 0; primes[i] > 0; i++){
- if(num <= primes[i]) return primes[i];
- }
- return primes[i-1];
-}
-
-
-/* Get the padding size of a record.
- `vsiz' specifies the size of the value of a record.
- The return value is the padding size of a record. */
-static int dppadsize(DEPOT *depot, int ksiz, int vsiz){
- int pad;
- assert(depot && vsiz >= 0);
- if(depot->align > 0){
- return depot->align - (depot->fsiz + DP_RHNUM * sizeof(int) + ksiz + vsiz) % depot->align;
- } else if(depot->align < 0){
- pad = (int)(vsiz * (2.0 / (1 << -(depot->align))));
- if(vsiz + pad >= DP_FSBLKSIZ){
- if(vsiz <= DP_FSBLKSIZ) pad = 0;
- if(depot->fsiz % DP_FSBLKSIZ == 0){
- return (pad / DP_FSBLKSIZ) * DP_FSBLKSIZ + DP_FSBLKSIZ -
- (depot->fsiz + DP_RHNUM * sizeof(int) + ksiz + vsiz) % DP_FSBLKSIZ;
- } else {
- return (pad / (DP_FSBLKSIZ / 2)) * (DP_FSBLKSIZ / 2) + (DP_FSBLKSIZ / 2) -
- (depot->fsiz + DP_RHNUM * sizeof(int) + ksiz + vsiz) % (DP_FSBLKSIZ / 2);
- }
- } else {
- return pad >= DP_RHNUM * sizeof(int) ? pad : DP_RHNUM * sizeof(int);
- }
- }
- return 0;
-}
-
-
-/* Get the size of a record in a database file.
- `head' specifies the header of a record.
- The return value is the size of a record in a database file. */
-static int dprecsize(int *head){
- assert(head);
- return DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + head[DP_RHIVSIZ] + head[DP_RHIPSIZ];
-}
-
-
-/* Read the header of a record.
- `depot' specifies a database handle.
- `off' specifies an offset of the database file.
- `head' specifies a buffer for the header.
- `ebuf' specifies the pointer to the entity buffer.
- `eep' specifies the pointer to a variable to which whether ebuf was used is assigned.
- The return value is true if successful, else, it is false. */
-static int dprechead(DEPOT *depot, int off, int *head, char *ebuf, int *eep){
- assert(depot && off >= 0 && head);
- if(off > depot->fsiz){
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return FALSE;
- }
- if(ebuf){
- *eep = FALSE;
- if(off < depot->fsiz - DP_ENTBUFSIZ){
- *eep = TRUE;
- if(!dpseekread(depot->fd, off, ebuf, DP_ENTBUFSIZ)) return FALSE;
- memcpy(head, ebuf, DP_RHNUM * sizeof(int));
- if(head[DP_RHIKSIZ] < 0 || head[DP_RHIVSIZ] < 0 || head[DP_RHIPSIZ] < 0 ||
- head[DP_RHILEFT] < 0 || head[DP_RHIRIGHT] < 0){
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return FALSE;
- }
- return TRUE;
- }
- }
- if(!dpseekread(depot->fd, off, head, DP_RHNUM * sizeof(int))) return FALSE;
- if(head[DP_RHIKSIZ] < 0 || head[DP_RHIVSIZ] < 0 || head[DP_RHIPSIZ] < 0 ||
- head[DP_RHILEFT] < 0 || head[DP_RHIRIGHT] < 0){
- dpecodeset(DP_EBROKEN, __FILE__, __LINE__);
- return FALSE;
- }
- return TRUE;
-}
-
-
-/* Read the entitiy of the key of a record.
- `depot' specifies a database handle.
- `off' specifies an offset of the database file.
- `head' specifies the header of a record.
- The return value is a key data whose region is allocated by `malloc', or NULL on failure. */
-static char *dpreckey(DEPOT *depot, int off, int *head){
- char *kbuf;
- int ksiz;
- assert(depot && off >= 0);
- ksiz = head[DP_RHIKSIZ];
- if(!(kbuf = malloc(ksiz + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return NULL;
- }
- if(!dpseekread(depot->fd, off + DP_RHNUM * sizeof(int), kbuf, ksiz)){
- free(kbuf);
- return NULL;
- }
- kbuf[ksiz] = '\0';
- return kbuf;
-}
-
-
-/* Read the entitiy of the value of a record.
- `depot' specifies a database handle.
- `off' specifies an offset of the database file.
- `head' specifies the header of a record.
- `start' specifies the offset address of the beginning of the region of the value to be read.
- `max' specifies the max size to be read. If it is negative, the size to read is unlimited.
- The return value is a value data whose region is allocated by `malloc', or NULL on failure. */
-static char *dprecval(DEPOT *depot, int off, int *head, int start, int max){
- char *vbuf;
- int vsiz;
- assert(depot && off >= 0 && start >= 0);
- head[DP_RHIVSIZ] -= start;
- if(max < 0){
- vsiz = head[DP_RHIVSIZ];
- } else {
- vsiz = max < head[DP_RHIVSIZ] ? max : head[DP_RHIVSIZ];
- }
- if(!(vbuf = malloc(vsiz + 1))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return NULL;
- }
- if(!dpseekread(depot->fd, off + DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + start, vbuf, vsiz)){
- free(vbuf);
- return NULL;
- }
- vbuf[vsiz] = '\0';
- return vbuf;
-}
-
-
-/* Read the entitiy of the value of a record and write it into a given buffer.
- `depot' specifies a database handle.
- `off' specifies an offset of the database file.
- `head' specifies the header of a record.
- `start' specifies the offset address of the beginning of the region of the value to be read.
- `max' specifies the max size to be read. It shuld be less than the size of the writing buffer.
- If successful, the return value is the size of the written data, else, it is -1. */
-static int dprecvalwb(DEPOT *depot, int off, int *head, int start, int max, char *vbuf){
- int vsiz;
- assert(depot && off >= 0 && start >= 0 && max >= 0 && vbuf);
- head[DP_RHIVSIZ] -= start;
- vsiz = max < head[DP_RHIVSIZ] ? max : head[DP_RHIVSIZ];
- if(!dpseekread(depot->fd, off + DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + start, vbuf, vsiz))
- return -1;
- return vsiz;
-}
-
-
-/* Compare two keys.
- `abuf' specifies the pointer to the region of the former.
- `asiz' specifies the size of the region.
- `bbuf' specifies the pointer to the region of the latter.
- `bsiz' specifies the size of the region.
- The return value is 0 if two equals, positive if the formar is big, else, negative. */
-static int dpkeycmp(const char *abuf, int asiz, const char *bbuf, int bsiz){
- assert(abuf && asiz >= 0 && bbuf && bsiz >= 0);
- if(asiz > bsiz) return 1;
- if(asiz < bsiz) return -1;
- return memcmp(abuf, bbuf, asiz);
-}
-
-
-/* Search for a record.
- `depot' specifies a database handle.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region.
- `hash' specifies the second hash value of the key.
- `bip' specifies the pointer to the region to assign the index of the corresponding record.
- `offp' specifies the pointer to the region to assign the last visited node in the hash chain,
- or, -1 if the hash chain is empty.
- `entp' specifies the offset of the last used joint, or, -1 if the hash chain is empty.
- `head' specifies the pointer to the region to store the header of the last visited record in.
- `ebuf' specifies the pointer to the entity buffer.
- `eep' specifies the pointer to a variable to which whether ebuf was used is assigned.
- `delhit' specifies whether a deleted record corresponds or not.
- The return value is 0 if successful, 1 if there is no corresponding record, -1 on error. */
-static int dprecsearch(DEPOT *depot, const char *kbuf, int ksiz, int hash, int *bip, int *offp,
- int *entp, int *head, char *ebuf, int *eep, int delhit){
- int off, entoff, thash, kcmp;
- char stkey[DP_STKBUFSIZ], *tkey;
- assert(depot && kbuf && ksiz >= 0 && hash >= 0 && bip && offp && entp && head && ebuf && eep);
- DP_FIRSTHASH(thash, kbuf, ksiz);
- *bip = thash % depot->bnum;
- off = depot->buckets[*bip];
- *offp = -1;
- *entp = -1;
- entoff = -1;
- *eep = FALSE;
- while(off != 0){
- if(!dprechead(depot, off, head, ebuf, eep)) return -1;
- thash = head[DP_RHIHASH];
- if(hash > thash){
- entoff = off + DP_RHILEFT * sizeof(int);
- off = head[DP_RHILEFT];
- } else if(hash < thash){
- entoff = off + DP_RHIRIGHT * sizeof(int);
- off = head[DP_RHIRIGHT];
- } else {
- if(*eep && DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] <= DP_ENTBUFSIZ){
- kcmp = dpkeycmp(kbuf, ksiz, ebuf + (DP_RHNUM * sizeof(int)), head[DP_RHIKSIZ]);
- } else if(head[DP_RHIKSIZ] > DP_STKBUFSIZ){
- if(!(tkey = dpreckey(depot, off, head))) return -1;
- kcmp = dpkeycmp(kbuf, ksiz, tkey, head[DP_RHIKSIZ]);
- free(tkey);
- } else {
- if(!dpseekread(depot->fd, off + DP_RHNUM * sizeof(int), stkey, head[DP_RHIKSIZ]))
- return -1;
- kcmp = dpkeycmp(kbuf, ksiz, stkey, head[DP_RHIKSIZ]);
- }
- if(kcmp > 0){
- entoff = off + DP_RHILEFT * sizeof(int);
- off = head[DP_RHILEFT];
- } else if(kcmp < 0){
- entoff = off + DP_RHIRIGHT * sizeof(int);
- off = head[DP_RHIRIGHT];
- } else {
- if(!delhit && (head[DP_RHIFLAGS] & DP_RECFDEL)){
- entoff = off + DP_RHILEFT * sizeof(int);
- off = head[DP_RHILEFT];
- } else {
- *offp = off;
- *entp = entoff;
- return 0;
- }
- }
- }
- }
- *offp = off;
- *entp = entoff;
- return 1;
-}
-
-
-/* Overwrite a record.
- `depot' specifies a database handle.
- `off' specifies the offset of the database file.
- `rsiz' specifies the size of the existing record.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region.
- `vbuf' specifies the pointer to the region of a value.
- `vsiz' specifies the size of the region.
- `hash' specifies the second hash value of the key.
- `left' specifies the offset of the left child.
- `right' specifies the offset of the right child.
- The return value is true if successful, or, false on failure. */
-static int dprecrewrite(DEPOT *depot, int off, int rsiz, const char *kbuf, int ksiz,
- const char *vbuf, int vsiz, int hash, int left, int right){
- char ebuf[DP_WRTBUFSIZ];
- int i, head[DP_RHNUM], asiz, hoff, koff, voff, mi, min, size;
- assert(depot && off >= 1 && rsiz > 0 && kbuf && ksiz >= 0 && vbuf && vsiz >= 0);
- head[DP_RHIFLAGS] = 0;
- head[DP_RHIHASH] = hash;
- head[DP_RHIKSIZ] = ksiz;
- head[DP_RHIVSIZ] = vsiz;
- head[DP_RHIPSIZ] = rsiz - sizeof(head) - ksiz - vsiz;
- head[DP_RHILEFT] = left;
- head[DP_RHIRIGHT] = right;
- asiz = sizeof(head) + ksiz + vsiz;
- if(depot->fbpsiz > DP_FBPOOLSIZ * 4 && head[DP_RHIPSIZ] > asiz){
- rsiz = (head[DP_RHIPSIZ] - asiz) / 2 + asiz;
- head[DP_RHIPSIZ] -= rsiz;
- } else {
- rsiz = 0;
- }
- if(asiz <= DP_WRTBUFSIZ){
- memcpy(ebuf, head, sizeof(head));
- memcpy(ebuf + sizeof(head), kbuf, ksiz);
- memcpy(ebuf + sizeof(head) + ksiz, vbuf, vsiz);
- if(!dpseekwrite(depot->fd, off, ebuf, asiz)) return FALSE;
- } else {
- hoff = off;
- koff = hoff + sizeof(head);
- voff = koff + ksiz;
- if(!dpseekwrite(depot->fd, hoff, head, sizeof(head)) ||
- !dpseekwrite(depot->fd, koff, kbuf, ksiz) || !dpseekwrite(depot->fd, voff, vbuf, vsiz))
- return FALSE;
- }
- if(rsiz > 0){
- off += sizeof(head) + ksiz + vsiz + head[DP_RHIPSIZ];
- head[DP_RHIFLAGS] = DP_RECFDEL | DP_RECFREUSE;
- head[DP_RHIHASH] = hash;
- head[DP_RHIKSIZ] = ksiz;
- head[DP_RHIVSIZ] = vsiz;
- head[DP_RHIPSIZ] = rsiz - sizeof(head) - ksiz - vsiz;
- head[DP_RHILEFT] = 0;
- head[DP_RHIRIGHT] = 0;
- if(!dpseekwrite(depot->fd, off, head, sizeof(head))) return FALSE;
- size = dprecsize(head);
- mi = -1;
- min = -1;
- for(i = 0; i < depot->fbpsiz; i += 2){
- if(depot->fbpool[i] == -1){
- depot->fbpool[i] = off;
- depot->fbpool[i+1] = size;
- dpfbpoolcoal(depot);
- mi = -1;
- break;
- }
- if(mi == -1 || depot->fbpool[i+1] < min){
- mi = i;
- min = depot->fbpool[i+1];
- }
- }
- if(mi >= 0 && size > min){
- depot->fbpool[mi] = off;
- depot->fbpool[mi+1] = size;
- dpfbpoolcoal(depot);
- }
- }
- return TRUE;
-}
-
-
-/* Write a record at the end of a database file.
- `depot' specifies a database handle.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region.
- `vbuf' specifies the pointer to the region of a value.
- `vsiz' specifies the size of the region.
- `hash' specifies the second hash value of the key.
- `left' specifies the offset of the left child.
- `right' specifies the offset of the right child.
- The return value is the offset of the record, or, -1 on failure. */
-static int dprecappend(DEPOT *depot, const char *kbuf, int ksiz, const char *vbuf, int vsiz,
- int hash, int left, int right){
- char ebuf[DP_WRTBUFSIZ], *hbuf;
- int head[DP_RHNUM], asiz, psiz, off;
- assert(depot && kbuf && ksiz >= 0 && vbuf && vsiz >= 0);
- psiz = dppadsize(depot, ksiz, vsiz);
- head[DP_RHIFLAGS] = 0;
- head[DP_RHIHASH] = hash;
- head[DP_RHIKSIZ] = ksiz;
- head[DP_RHIVSIZ] = vsiz;
- head[DP_RHIPSIZ] = psiz;
- head[DP_RHILEFT] = left;
- head[DP_RHIRIGHT] = right;
- asiz = sizeof(head) + ksiz + vsiz + psiz;
- off = depot->fsiz;
- if(asiz <= DP_WRTBUFSIZ){
- memcpy(ebuf, head, sizeof(head));
- memcpy(ebuf + sizeof(head), kbuf, ksiz);
- memcpy(ebuf + sizeof(head) + ksiz, vbuf, vsiz);
- memset(ebuf + sizeof(head) + ksiz + vsiz, 0, psiz);
- if(!dpseekwrite(depot->fd, off, ebuf, asiz)) return -1;
- } else {
- if(!(hbuf = malloc(asiz))){
- dpecodeset(DP_EALLOC, __FILE__, __LINE__);
- return -1;
- }
- memcpy(hbuf, head, sizeof(head));
- memcpy(hbuf + sizeof(head), kbuf, ksiz);
- memcpy(hbuf + sizeof(head) + ksiz, vbuf, vsiz);
- memset(hbuf + sizeof(head) + ksiz + vsiz, 0, psiz);
- if(!dpseekwrite(depot->fd, off, hbuf, asiz)){
- free(hbuf);
- return -1;
- }
- free(hbuf);
- }
- depot->fsiz += asiz;
- return off;
-}
-
-
-/* Overwrite the value of a record.
- `depot' specifies a database handle.
- `off' specifies the offset of the database file.
- `head' specifies the header of the record.
- `vbuf' specifies the pointer to the region of a value.
- `vsiz' specifies the size of the region.
- `cat' specifies whether it is concatenate mode or not.
- The return value is true if successful, or, false on failure. */
-static int dprecover(DEPOT *depot, int off, int *head, const char *vbuf, int vsiz, int cat){
- int i, hsiz, hoff, voff;
- assert(depot && off >= 0 && head && vbuf && vsiz >= 0);
- for(i = 0; i < depot->fbpsiz; i += 2){
- if(depot->fbpool[i] == off){
- depot->fbpool[i] = -1;
- depot->fbpool[i+1] = -1;
- break;
- }
- }
- if(cat){
- head[DP_RHIFLAGS] = 0;
- head[DP_RHIPSIZ] -= vsiz;
- head[DP_RHIVSIZ] += vsiz;
- hsiz = DP_RHNUM * sizeof(int);
- hoff = off;
- voff = hoff + DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ] + head[DP_RHIVSIZ] - vsiz;
- } else {
- head[DP_RHIFLAGS] = 0;
- head[DP_RHIPSIZ] += head[DP_RHIVSIZ] - vsiz;
- head[DP_RHIVSIZ] = vsiz;
- hsiz = DP_RHNUM * sizeof(int);
- hoff = off;
- voff = hoff + DP_RHNUM * sizeof(int) + head[DP_RHIKSIZ];
- }
- if(!dpseekwrite(depot->fd, hoff, head, hsiz) ||
- !dpseekwrite(depot->fd, voff, vbuf, vsiz)) return FALSE;
- return TRUE;
-}
-
-
-/* Delete a record.
- `depot' specifies a database handle.
- `off' specifies the offset of the database file.
- `head' specifies the header of the record.
- `reusable' specifies whether the region is reusable or not.
- The return value is true if successful, or, false on failure. */
-static int dprecdelete(DEPOT *depot, int off, int *head, int reusable){
- int i, mi, min, size;
- assert(depot && off >= 0 && head);
- if(reusable){
- size = dprecsize(head);
- mi = -1;
- min = -1;
- for(i = 0; i < depot->fbpsiz; i += 2){
- if(depot->fbpool[i] == -1){
- depot->fbpool[i] = off;
- depot->fbpool[i+1] = size;
- dpfbpoolcoal(depot);
- mi = -1;
- break;
- }
- if(mi == -1 || depot->fbpool[i+1] < min){
- mi = i;
- min = depot->fbpool[i+1];
- }
- }
- if(mi >= 0 && size > min){
- depot->fbpool[mi] = off;
- depot->fbpool[mi+1] = size;
- dpfbpoolcoal(depot);
- }
- }
- return dpseekwritenum(depot->fd, off + DP_RHIFLAGS * sizeof(int),
- DP_RECFDEL | (reusable ? DP_RECFREUSE : 0));
-}
-
-
-/* Make contiguous records of the free block pool coalesce.
- `depot' specifies a database handle. */
-static void dpfbpoolcoal(DEPOT *depot){
- int i;
- assert(depot);
- if(depot->fbpinc++ <= depot->fbpsiz / 4) return;
- depot->fbpinc = 0;
- qsort(depot->fbpool, depot->fbpsiz / 2, sizeof(int) * 2, dpfbpoolcmp);
- for(i = 2; i < depot->fbpsiz; i += 2){
- if(depot->fbpool[i-2] > 0 &&
- depot->fbpool[i-2] + depot->fbpool[i-1] - depot->fbpool[i] == 0){
- depot->fbpool[i] = depot->fbpool[i-2];
- depot->fbpool[i+1] += depot->fbpool[i-1];
- depot->fbpool[i-2] = -1;
- depot->fbpool[i-1] = -1;
- }
- }
-}
-
-
-/* Compare two records of the free block pool.
- `a' specifies the pointer to one record.
- `b' specifies the pointer to the other record.
- The return value is 0 if two equals, positive if the formar is big, else, negative. */
-static int dpfbpoolcmp(const void *a, const void *b){
- assert(a && b);
- return *(int *)a - *(int *)b;
-}
-
-
-
-/* END OF FILE */
diff --git a/src/qdbm/depot.h b/src/qdbm/depot.h
deleted file mode 100644
index a75398428..000000000
--- a/src/qdbm/depot.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/*************************************************************************************************
- * The basic API of QDBM
- * Copyright (C) 2000-2006 Mikio Hirabayashi
- * This file is part of QDBM, Quick Database Manager.
- * QDBM is free software; you can redistribute it and/or modify it under the terms of the GNU
- * Lesser General Public License as published by the Free Software Foundation; either version
- * 2.1 of the License or any later version. QDBM is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- * You should have received a copy of the GNU Lesser General Public License along with QDBM; if
- * not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307 USA.
- *************************************************************************************************/
-
-
-#ifndef _DEPOT_H /* duplication check */
-#define _DEPOT_H
-
-#if defined(__cplusplus) /* export for C++ */
-extern "C" {
-#endif
-
-
-#include <stdlib.h>
-#include <time.h>
-
-
-#if defined(_MSC_VER) && !defined(QDBM_INTERNAL) && !defined(QDBM_STATIC)
-#define MYEXTERN extern __declspec(dllimport)
-#else
-#define MYEXTERN extern
-#endif
-
-
-
-/*************************************************************************************************
- * API
- *************************************************************************************************/
-
-
-typedef struct { /* type of structure for a database handle */
- char *name; /* name of the database file */
- int wmode; /* whether to be writable */
- int inode; /* inode of the database file */
- time_t mtime; /* last modified time of the database */
- int fd; /* file descriptor of the database file */
- int fsiz; /* size of the database file */
- char *map; /* pointer to the mapped memory */
- int msiz; /* size of the mapped memory */
- int *buckets; /* pointer to the bucket array */
- int bnum; /* number of the bucket array */
- int rnum; /* number of records */
- int fatal; /* whether a fatal error occured */
- int ioff; /* offset of the iterator */
- int *fbpool; /* free block pool */
- int fbpsiz; /* size of the free block pool */
- int fbpinc; /* incrementor of update of the free block pool */
- int align; /* basic size of alignment */
-} DEPOT;
-
-enum { /* enumeration for error codes */
- DP_ENOERR, /* no error */
- DP_EFATAL, /* with fatal error */
- DP_EMODE, /* invalid mode */
- DP_EBROKEN, /* broken database file */
- DP_EKEEP, /* existing record */
- DP_ENOITEM, /* no item found */
- DP_EALLOC, /* memory allocation error */
- DP_EMAP, /* memory mapping error */
- DP_EOPEN, /* open error */
- DP_ECLOSE, /* close error */
- DP_ETRUNC, /* trunc error */
- DP_ESYNC, /* sync error */
- DP_ESTAT, /* stat error */
- DP_ESEEK, /* seek error */
- DP_EREAD, /* read error */
- DP_EWRITE, /* write error */
- DP_ELOCK, /* lock error */
- DP_EUNLINK, /* unlink error */
- DP_EMKDIR, /* mkdir error */
- DP_ERMDIR, /* rmdir error */
- DP_EMISC /* miscellaneous error */
-};
-
-enum { /* enumeration for open modes */
- DP_OREADER = 1 << 0, /* open as a reader */
- DP_OWRITER = 1 << 1, /* open as a writer */
- DP_OCREAT = 1 << 2, /* a writer creating */
- DP_OTRUNC = 1 << 3, /* a writer truncating */
- DP_ONOLCK = 1 << 4, /* open without locking */
- DP_OLCKNB = 1 << 5, /* lock without blocking */
- DP_OSPARSE = 1 << 6 /* create as a sparse file */
-};
-
-enum { /* enumeration for write modes */
- DP_DOVER, /* overwrite an existing value */
- DP_DKEEP, /* keep an existing value */
- DP_DCAT /* concatenate values */
-};
-
-
-/* String containing the version information. */
-MYEXTERN const char *dpversion;
-
-
-/* Last happened error code. */
-#define dpecode (*dpecodeptr())
-
-
-/* Get a message string corresponding to an error code.
- `ecode' specifies an error code.
- The return value is the message string of the error code. The region of the return value
- is not writable. */
-const char *dperrmsg(int ecode);
-
-
-/* Get a database handle.
- `name' specifies the name of a database file.
- `omode' specifies the connection mode: `DP_OWRITER' as a writer, `DP_OREADER' as a reader.
- If the mode is `DP_OWRITER', the following may be added by bitwise or: `DP_OCREAT', which
- means it creates a new database if not exist, `DP_OTRUNC', which means it creates a new
- database regardless if one exists. Both of `DP_OREADER' and `DP_OWRITER' can be added to by
- bitwise or: `DP_ONOLCK', which means it opens a database file without file locking, or
- `DP_OLCKNB', which means locking is performed without blocking. `DP_OCREAT' can be added to
- by bitwise or: `DP_OSPARSE', which means it creates a database file as a sparse file.
- `bnum' specifies the number of elements of the bucket array. If it is not more than 0,
- the default value is specified. The size of a bucket array is determined on creating,
- and can not be changed except for by optimization of the database. Suggested size of a
- bucket array is about from 0.5 to 4 times of the number of all records to store.
- The return value is the database handle or `NULL' if it is not successful.
- While connecting as a writer, an exclusive lock is invoked to the database file.
- While connecting as a reader, a shared lock is invoked to the database file. The thread
- blocks until the lock is achieved. If `DP_ONOLCK' is used, the application is responsible
- for exclusion control. */
-DEPOT *dpopen(const char *name, int omode, int bnum);
-
-
-/* Close a database handle.
- `depot' specifies a database handle.
- If successful, the return value is true, else, it is false.
- Because the region of a closed handle is released, it becomes impossible to use the handle.
- Updating a database is assured to be written when the handle is closed. If a writer opens
- a database but does not close it appropriately, the database will be broken. */
-int dpclose(DEPOT *depot);
-
-
-/* Store a record.
- `depot' specifies a database handle connected as a writer.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- `vbuf' specifies the pointer to the region of a value.
- `vsiz' specifies the size of the region of the value. If it is negative, the size is
- assigned with `strlen(vbuf)'.
- `dmode' specifies behavior when the key overlaps, by the following values: `DP_DOVER',
- which means the specified value overwrites the existing one, `DP_DKEEP', which means the
- existing value is kept, `DP_DCAT', which means the specified value is concatenated at the
- end of the existing value.
- If successful, the return value is true, else, it is false. */
-int dpput(DEPOT *depot, const char *kbuf, int ksiz, const char *vbuf, int vsiz, int dmode);
-
-
-/* Delete a record.
- `depot' specifies a database handle connected as a writer.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- If successful, the return value is true, else, it is false. False is returned when no
- record corresponds to the specified key. */
-int dpout(DEPOT *depot, const char *kbuf, int ksiz);
-
-
-/* Retrieve a record.
- `depot' specifies a database handle.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- `start' specifies the offset address of the beginning of the region of the value to be read.
- `max' specifies the max size to be read. If it is negative, the size to read is unlimited.
- `sp' specifies the pointer to a variable to which the size of the region of the return
- value is assigned. If it is `NULL', it is not used.
- If successful, the return value is the pointer to the region of the value of the
- corresponding record, else, it is `NULL'. `NULL' is returned when no record corresponds to
- the specified key or the size of the value of the corresponding record is less than `start'.
- Because an additional zero code is appended at the end of the region of the return value,
- the return value can be treated as a character string. Because the region of the return
- value is allocated with the `malloc' call, it should be released with the `free' call if it
- is no longer in use. */
-char *dpget(DEPOT *depot, const char *kbuf, int ksiz, int start, int max, int *sp);
-
-
-/* Retrieve a record and write the value into a buffer.
- `depot' specifies a database handle.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- `start' specifies the offset address of the beginning of the region of the value to be read.
- `max' specifies the max size to be read. It shuld be equal to or less than the size of the
- writing buffer.
- `vbuf' specifies the pointer to a buffer into which the value of the corresponding record is
- written.
- If successful, the return value is the size of the written data, else, it is -1. -1 is
- returned when no record corresponds to the specified key or the size of the value of the
- corresponding record is less than `start'.
- Note that no additional zero code is appended at the end of the region of the writing buffer. */
-int dpgetwb(DEPOT *depot, const char *kbuf, int ksiz, int start, int max, char *vbuf);
-
-
-/* Get the size of the value of a record.
- `depot' specifies a database handle.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- If successful, the return value is the size of the value of the corresponding record, else,
- it is -1.
- Because this function does not read the entity of a record, it is faster than `dpget'. */
-int dpvsiz(DEPOT *depot, const char *kbuf, int ksiz);
-
-
-/* Initialize the iterator of a database handle.
- `depot' specifies a database handle.
- If successful, the return value is true, else, it is false.
- The iterator is used in order to access the key of every record stored in a database. */
-int dpiterinit(DEPOT *depot);
-
-
-/* Get the next key of the iterator.
- `depot' specifies a database handle.
- `sp' specifies the pointer to a variable to which the size of the region of the return
- value is assigned. If it is `NULL', it is not used.
- If successful, the return value is the pointer to the region of the next key, else, it is
- `NULL'. `NULL' is returned when no record is to be get out of the iterator.
- Because an additional zero code is appended at the end of the region of the return value,
- the return value can be treated as a character string. Because the region of the return
- value is allocated with the `malloc' call, it should be released with the `free' call if
- it is no longer in use. It is possible to access every record by iteration of calling
- this function. However, it is not assured if updating the database is occurred while the
- iteration. Besides, the order of this traversal access method is arbitrary, so it is not
- assured that the order of storing matches the one of the traversal access. */
-char *dpiternext(DEPOT *depot, int *sp);
-
-
-/* Set alignment of a database handle.
- `depot' specifies a database handle connected as a writer.
- `align' specifies the size of alignment.
- If successful, the return value is true, else, it is false.
- If alignment is set to a database, the efficiency of overwriting values is improved.
- The size of alignment is suggested to be average size of the values of the records to be
- stored. If alignment is positive, padding whose size is multiple number of the alignment
- is placed. If alignment is negative, as `vsiz' is the size of a value, the size of padding
- is calculated with `(vsiz / pow(2, abs(align) - 1))'. Because alignment setting is not
- saved in a database, you should specify alignment every opening a database. */
-int dpsetalign(DEPOT *depot, int align);
-
-
-/* Set the size of the free block pool of a database handle.
- `depot' specifies a database handle connected as a writer.
- `size' specifies the size of the free block pool of a database.
- If successful, the return value is true, else, it is false.
- The default size of the free block pool is 16. If the size is greater, the space efficiency
- of overwriting values is improved with the time efficiency sacrificed. */
-int dpsetfbpsiz(DEPOT *depot, int size);
-
-
-/* Synchronize updating contents with the file and the device.
- `depot' specifies a database handle connected as a writer.
- If successful, the return value is true, else, it is false.
- This function is useful when another process uses the connected database file. */
-int dpsync(DEPOT *depot);
-
-
-/* Optimize a database.
- `depot' specifies a database handle connected as a writer.
- `bnum' specifies the number of the elements of the bucket array. If it is not more than 0,
- the default value is specified.
- If successful, the return value is true, else, it is false.
- In an alternating succession of deleting and storing with overwrite or concatenate,
- dispensable regions accumulate. This function is useful to do away with them. */
-int dpoptimize(DEPOT *depot, int bnum);
-
-
-/* Get the name of a database.
- `depot' specifies a database handle.
- If successful, the return value is the pointer to the region of the name of the database,
- else, it is `NULL'.
- Because the region of the return value is allocated with the `malloc' call, it should be
- released with the `free' call if it is no longer in use. */
-char *dpname(DEPOT *depot);
-
-
-/* Get the size of a database file.
- `depot' specifies a database handle.
- If successful, the return value is the size of the database file, else, it is -1. */
-int dpfsiz(DEPOT *depot);
-
-
-/* Get the number of the elements of the bucket array.
- `depot' specifies a database handle.
- If successful, the return value is the number of the elements of the bucket array, else, it
- is -1. */
-int dpbnum(DEPOT *depot);
-
-
-/* Get the number of the used elements of the bucket array.
- `depot' specifies a database handle.
- If successful, the return value is the number of the used elements of the bucket array,
- else, it is -1.
- This function is inefficient because it accesses all elements of the bucket array. */
-int dpbusenum(DEPOT *depot);
-
-
-/* Get the number of the records stored in a database.
- `depot' specifies a database handle.
- If successful, the return value is the number of the records stored in the database, else,
- it is -1. */
-int dprnum(DEPOT *depot);
-
-
-/* Check whether a database handle is a writer or not.
- `depot' specifies a database handle.
- The return value is true if the handle is a writer, false if not. */
-int dpwritable(DEPOT *depot);
-
-
-/* Check whether a database has a fatal error or not.
- `depot' specifies a database handle.
- The return value is true if the database has a fatal error, false if not. */
-int dpfatalerror(DEPOT *depot);
-
-
-/* Get the inode number of a database file.
- `depot' specifies a database handle.
- The return value is the inode number of the database file. */
-int dpinode(DEPOT *depot);
-
-
-/* Get the last modified time of a database.
- `depot' specifies a database handle.
- The return value is the last modified time of the database. */
-time_t dpmtime(DEPOT *depot);
-
-
-/* Get the file descriptor of a database file.
- `depot' specifies a database handle.
- The return value is the file descriptor of the database file.
- Handling the file descriptor of a database file directly is not suggested. */
-int dpfdesc(DEPOT *depot);
-
-
-/* Remove a database file.
- `name' specifies the name of a database file.
- If successful, the return value is true, else, it is false. */
-int dpremove(const char *name);
-
-
-/* Repair a broken database file.
- `name' specifies the name of a database file.
- If successful, the return value is true, else, it is false.
- There is no guarantee that all records in a repaired database file correspond to the original
- or expected state. */
-int dprepair(const char *name);
-
-
-/* Dump all records as endian independent data.
- `depot' specifies a database handle.
- `name' specifies the name of an output file.
- If successful, the return value is true, else, it is false. */
-int dpexportdb(DEPOT *depot, const char *name);
-
-
-/* Load all records from endian independent data.
- `depot' specifies a database handle connected as a writer. The database of the handle must
- be empty.
- `name' specifies the name of an input file.
- If successful, the return value is true, else, it is false. */
-int dpimportdb(DEPOT *depot, const char *name);
-
-
-/* Retrieve a record directly from a database file.
- `name' specifies the name of a database file.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- `sp' specifies the pointer to a variable to which the size of the region of the return
- value is assigned. If it is `NULL', it is not used.
- If successful, the return value is the pointer to the region of the value of the
- corresponding record, else, it is `NULL'. `NULL' is returned when no record corresponds to
- the specified key.
- Because an additional zero code is appended at the end of the region of the return value,
- the return value can be treated as a character string. Because the region of the return
- value is allocated with the `malloc' call, it should be released with the `free' call if it
- is no longer in use. Although this function can be used even while the database file is
- locked by another process, it is not assured that recent updated is reflected. */
-char *dpsnaffle(const char *name, const char *kbuf, int ksiz, int *sp);
-
-
-/* Hash function used inside Depot.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- The return value is the hash value of 31 bits length computed from the key.
- This function is useful when an application calculates the state of the inside bucket array. */
-int dpinnerhash(const char *kbuf, int ksiz);
-
-
-/* Hash function which is independent from the hash functions used inside Depot.
- `kbuf' specifies the pointer to the region of a key.
- `ksiz' specifies the size of the region of the key. If it is negative, the size is assigned
- with `strlen(kbuf)'.
- The return value is the hash value of 31 bits length computed from the key.
- This function is useful when an application uses its own hash algorithm outside Depot. */
-int dpouterhash(const char *kbuf, int ksiz);
-
-
-/* Get a natural prime number not less than a number.
- `num' specified a natural number.
- The return value is a natural prime number not less than the specified number.
- This function is useful when an application determines the size of a bucket array of its
- own hash algorithm. */
-int dpprimenum(int num);
-
-
-
-/*************************************************************************************************
- * features for experts
- *************************************************************************************************/
-
-
-#define _QDBM_VERSION "1.8.75"
-#define _QDBM_LIBVER 1411
-
-
-/* Name of the operating system. */
-MYEXTERN const char *dpsysname;
-
-
-/* File descriptor for debugging output. */
-MYEXTERN int dpdbgfd;
-
-
-/* Whether this build is reentrant. */
-MYEXTERN const int dpisreentrant;
-
-
-/* Set the last happened error code.
- `ecode' specifies the error code.
- `line' specifies the number of the line where the error happened. */
-void dpecodeset(int ecode, const char *file, int line);
-
-
-/* Get the pointer of the variable of the last happened error code.
- The return value is the pointer of the variable. */
-int *dpecodeptr(void);
-
-
-/* Synchronize updating contents on memory.
- `depot' specifies a database handle connected as a writer.
- If successful, the return value is true, else, it is false. */
-int dpmemsync(DEPOT *depot);
-
-
-/* Synchronize updating contents on memory, not physically.
- `depot' specifies a database handle connected as a writer.
- If successful, the return value is true, else, it is false. */
-int dpmemflush(DEPOT *depot);
-
-
-/* Get flags of a database.
- `depot' specifies a database handle.
- The return value is the flags of a database. */
-int dpgetflags(DEPOT *depot);
-
-
-/* Set flags of a database.
- `depot' specifies a database handle connected as a writer.
- `flags' specifies flags to set. Least ten bits are reserved for internal use.
- If successful, the return value is true, else, it is false. */
-int dpsetflags(DEPOT *depot, int flags);
-
-
-
-#undef MYEXTERN
-
-#if defined(__cplusplus) /* export for C++ */
-}
-#endif
-
-#endif /* duplication check */
-
-
-/* END OF FILE */
diff --git a/src/qdbm/myconf.c b/src/qdbm/myconf.c
deleted file mode 100644
index 99a54242f..000000000
--- a/src/qdbm/myconf.c
+++ /dev/null
@@ -1,1113 +0,0 @@
-/*************************************************************************************************
- * Emulation of system calls
- * Copyright (C) 2000-2006 Mikio Hirabayashi
- * This file is part of QDBM, Quick Database Manager.
- * QDBM is free software; you can redistribute it and/or modify it under the terms of the GNU
- * Lesser General Public License as published by the Free Software Foundation; either version
- * 2.1 of the License or any later version. QDBM is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- * You should have received a copy of the GNU Lesser General Public License along with QDBM; if
- * not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307 USA.
- *************************************************************************************************/
-
-
-#include "myconf.h"
-
-
-
-/*************************************************************************************************
- * for dosish filesystems
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_) || defined(_SYS_CYGWIN_)
-
-
-#define DOSPATHBUFSIZ 8192
-
-
-int _qdbm_win32_lstat(const char *pathname, struct stat *buf){
- char pbuf[DOSPATHBUFSIZ], *p;
- int inode;
- if(stat(pathname, buf) == -1) return -1;
- if(GetFullPathName(pathname, DOSPATHBUFSIZ, pbuf, &p) != 0){
- inode = 11003;
- for(p = pbuf; *p != '\0'; p++){
- inode = inode * 31 + *(unsigned char *)p;
- }
- buf->st_ino = (inode * 911) & 0x7FFF;
- }
- return 0;
-}
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for POSIX thread
- *************************************************************************************************/
-
-
-#if defined(MYPTHREAD)
-
-
-#include <pthread.h>
-
-
-#define PTKEYMAX 8
-
-
-struct { void *ptr; pthread_key_t key; } _qdbm_ptkeys[PTKEYMAX];
-int _qdbm_ptknum = 0;
-
-
-static void *_qdbm_gettsd(void *ptr, int size, const void *initval);
-
-
-void *_qdbm_settsd(void *ptr, int size, const void *initval){
- static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- char *val;
- if((val = _qdbm_gettsd(ptr, size, initval)) != NULL) return val;
- if(pthread_mutex_lock(&mutex) != 0) return NULL;
- if((val = _qdbm_gettsd(ptr, size, initval)) != NULL){
- pthread_mutex_unlock(&mutex);
- return val;
- }
- if(_qdbm_ptknum >= PTKEYMAX){
- pthread_mutex_unlock(&mutex);
- return NULL;
- }
- _qdbm_ptkeys[_qdbm_ptknum].ptr = ptr;
- if(pthread_key_create(&(_qdbm_ptkeys[_qdbm_ptknum].key), free) != 0){
- pthread_mutex_unlock(&mutex);
- return NULL;
- }
- if(!(val = malloc(size))){
- pthread_key_delete(_qdbm_ptkeys[_qdbm_ptknum].key);
- pthread_mutex_unlock(&mutex);
- return NULL;
- }
- memcpy(val, initval, size);
- if(pthread_setspecific(_qdbm_ptkeys[_qdbm_ptknum].key, val) != 0){
- free(val);
- pthread_key_delete(_qdbm_ptkeys[_qdbm_ptknum].key);
- pthread_mutex_unlock(&mutex);
- return NULL;
- }
- _qdbm_ptknum++;
- pthread_mutex_unlock(&mutex);
- return val;
-}
-
-
-static void *_qdbm_gettsd(void *ptr, int size, const void *initval){
- char *val;
- int i;
- for(i = 0; i < _qdbm_ptknum; i++){
- if(_qdbm_ptkeys[i].ptr == ptr){
- if(!(val = pthread_getspecific(_qdbm_ptkeys[i].key))){
- if(!(val = malloc(size))) return NULL;
- memcpy(val, initval, size);
- if(pthread_setspecific(_qdbm_ptkeys[i].key, val) != 0){
- free(val);
- return NULL;
- }
- }
- return val;
- }
- }
- return NULL;
-}
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for systems without mmap
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_)
-
-
-#define MMFDESCMAX 2048
-
-
-struct { void *start; HANDLE handle; } mmhandles[MMFDESCMAX];
-int mmhnum = 0;
-CRITICAL_SECTION mmcsec;
-
-
-static void _qdbm_delete_mmap_env(void);
-
-
-void *_qdbm_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset){
- static volatile long first = TRUE;
- static volatile long ready = FALSE;
- HANDLE handle;
- int i;
- if(InterlockedExchange((void *)&first, FALSE)){
- InitializeCriticalSection(&mmcsec);
- atexit(_qdbm_delete_mmap_env);
- InterlockedExchange((void *)&ready, TRUE);
- }
- while(!InterlockedCompareExchange((void *)&ready, TRUE, TRUE)){
- Sleep(1);
- }
- if(fd < 0 || flags & MAP_FIXED) return MAP_FAILED;
- if(!(handle = CreateFileMapping((HANDLE)_get_osfhandle(fd), NULL,
- (prot & PROT_WRITE) ? PAGE_READWRITE : PAGE_READONLY,
- 0, length, NULL))) return MAP_FAILED;
- if(!(start = MapViewOfFile(handle, (prot & PROT_WRITE) ? FILE_MAP_WRITE : FILE_MAP_READ,
- 0, 0, length))){
- CloseHandle(handle);
- return MAP_FAILED;
- }
- EnterCriticalSection(&mmcsec);
- if(mmhnum >= MMFDESCMAX - 1){
- UnmapViewOfFile(start);
- CloseHandle(handle);
- LeaveCriticalSection(&mmcsec);
- return MAP_FAILED;
- }
- for(i = 0; i < MMFDESCMAX; i++){
- if(!mmhandles[i].start){
- mmhandles[i].start = start;
- mmhandles[i].handle = handle;
- break;
- }
- }
- mmhnum++;
- LeaveCriticalSection(&mmcsec);
- return start;
-}
-
-
-int _qdbm_munmap(void *start, size_t length){
- HANDLE handle;
- int i;
- EnterCriticalSection(&mmcsec);
- handle = NULL;
- for(i = 0; i < MMFDESCMAX; i++){
- if(mmhandles[i].start == start){
- handle = mmhandles[i].handle;
- mmhandles[i].start = NULL;
- mmhandles[i].handle = NULL;
- break;
- }
- }
- if(!handle){
- LeaveCriticalSection(&mmcsec);
- return -1;
- }
- mmhnum--;
- LeaveCriticalSection(&mmcsec);
- if(!UnmapViewOfFile(start)){
- CloseHandle(handle);
- return -1;
- }
- if(!CloseHandle(handle)) return -1;
- return 0;
-}
-
-
-int _qdbm_msync(const void *start, size_t length, int flags){
- if(!FlushViewOfFile(start, length)) return -1;
- return 0;
-}
-
-
-static void _qdbm_delete_mmap_env(void){
- DeleteCriticalSection(&mmcsec);
-}
-
-
-#elif defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || defined(_SYS_OPENBSD_) || \
- defined(_SYS_AIX_) || defined(_SYS_RISCOS_) || defined(MYNOMMAP)
-
-
-void *_qdbm_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset){
- char *buf, *wp;
- int rv, rlen;
- if(flags & MAP_FIXED) return MAP_FAILED;
- if(lseek(fd, SEEK_SET, offset) == -1) return MAP_FAILED;
- if(!(buf = malloc(sizeof(int) * 3 + length))) return MAP_FAILED;
- wp = buf;
- *(int *)wp = fd;
- wp += sizeof(int);
- *(int *)wp = offset;
- wp += sizeof(int);
- *(int *)wp = prot;
- wp += sizeof(int);
- rlen = 0;
- while((rv = read(fd, wp + rlen, length - rlen)) > 0){
- rlen += rv;
- }
- if(rv == -1 || rlen != (int) length){
- free(buf);
- return MAP_FAILED;
- }
- return wp;
-}
-
-
-int _qdbm_munmap(void *start, size_t length){
- char *buf, *rp;
- int fd, offset, prot, rv, wlen;
- buf = (char *)start - sizeof(int) * 3;
- rp = buf;
- fd = *(int *)rp;
- rp += sizeof(int);
- offset = *(int *)rp;
- rp += sizeof(int);
- prot = *(int *)rp;
- rp += sizeof(int);
- if(prot & PROT_WRITE){
- if(lseek(fd, offset, SEEK_SET) == -1){
- free(buf);
- return -1;
- }
- wlen = 0;
- while(wlen < (int)length){
- rv = write(fd, rp + wlen, length - wlen);
- if(rv == -1){
- if(errno == EINTR) continue;
- free(buf);
- return -1;
- }
- wlen += rv;
- }
- }
- free(buf);
- return 0;
-}
-
-
-int _qdbm_msync(const void *start, size_t length, int flags){
- char *buf, *rp;
- int fd, offset, prot, rv, wlen;
- buf = (char *)start - sizeof(int) * 3;
- rp = buf;
- fd = *(int *)rp;
- rp += sizeof(int);
- offset = *(int *)rp;
- rp += sizeof(int);
- prot = *(int *)rp;
- rp += sizeof(int);
- if(prot & PROT_WRITE){
- if(lseek(fd, offset, SEEK_SET) == -1) return -1;
- wlen = 0;
- while(wlen < (int)length){
- rv = write(fd, rp + wlen, length - wlen);
- if(rv == -1){
- if(errno == EINTR) continue;
- return -1;
- }
- wlen += rv;
- }
- }
- return 0;
-}
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for reentrant time routines
- *************************************************************************************************/
-
-
-#if defined(_SYS_LINUX_) || defined(_SYS_FREEBSD_) || defined(_SYS_OPENBSD_) || \
- defined(_SYS_NETBSD_) || defined(_SYS_SUNOS_) || defined(_SYS_HPUX_) || \
- defined(_SYS_MACOSX_) || defined(_SYS_CYGWIN_)
-
-
-struct tm *_qdbm_gmtime(const time_t *timep, struct tm *result){
- return gmtime_r(timep, result);
-}
-
-
-struct tm *_qdbm_localtime(const time_t *timep, struct tm *result){
- return localtime_r(timep, result);
-}
-
-
-# else
-
-
-struct tm *_qdbm_gmtime(const time_t *timep, struct tm *result){
- return gmtime(timep);
-}
-
-
-struct tm *_qdbm_localtime(const time_t *timep, struct tm *result){
- return localtime(timep);
-}
-
-
-# endif
-
-
-
-/*************************************************************************************************
- * for systems without times
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_)
-
-
-clock_t _qdbm_times(struct tms *buf){
- buf->tms_utime = clock();
- buf->tms_stime = 0;
- buf->tms_cutime = 0;
- buf->tms_cstime = 0;
- return 0;
-}
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for Win32
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_)
-
-
-#define WINLOCKWAIT 100
-
-
-int _qdbm_win32_fcntl(int fd, int cmd, struct flock *lock){
- HANDLE fh;
- DWORD opt;
- OVERLAPPED ol;
- fh = (HANDLE)_get_osfhandle(fd);
- opt = (cmd == F_SETLK) ? LOCKFILE_FAIL_IMMEDIATELY : 0;
- if(lock->l_type == F_WRLCK) opt |= LOCKFILE_EXCLUSIVE_LOCK;
- memset(&ol, 0, sizeof(OVERLAPPED));
- ol.Offset = INT_MAX;
- ol.OffsetHigh = 0;
- ol.hEvent = 0;
- if(!LockFileEx(fh, opt, 0, 1, 0, &ol)){
- if(GetLastError() == ERROR_CALL_NOT_IMPLEMENTED){
- while(TRUE){
- if(LockFile(fh, 0, 0, 1, 0)) return 0;
- Sleep(WINLOCKWAIT);
- }
- }
- return -1;
- }
- return 0;
-}
-
-
-#endif
-
-
-#if defined(_SYS_MSVC_)
-
-
-DIR *_qdbm_win32_opendir(const char *name){
- char expr[8192];
- int len;
- DIR *dir;
- HANDLE fh;
- WIN32_FIND_DATA data;
- len = strlen(name);
- if(len > 0 && name[len-1] == MYPATHCHR){
- sprintf(expr, "%s*", name);
- } else {
- sprintf(expr, "%s%c*", name, MYPATHCHR);
- }
- if((fh = FindFirstFile(expr, &data)) == INVALID_HANDLE_VALUE) return NULL;
- if(!(dir = malloc(sizeof(DIR)))){
- FindClose(fh);
- return NULL;
- }
- dir->fh = fh;
- dir->data = data;
- dir->first = TRUE;
- return dir;
-}
-
-
-int _qdbm_win32_closedir(DIR *dir){
- if(!FindClose(dir->fh)){
- free(dir);
- return -1;
- }
- free(dir);
- return 0;
-}
-
-
-struct dirent *_qdbm_win32_readdir(DIR *dir){
- if(dir->first){
- sprintf(dir->de.d_name, "%s", dir->data.cFileName);
- dir->first = FALSE;
- return &(dir->de);
- }
- if(!FindNextFile(dir->fh, &(dir->data))) return NULL;
- sprintf(dir->de.d_name, "%s", dir->data.cFileName);
- return &(dir->de);
-}
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for checking information of the system
- *************************************************************************************************/
-
-
-#if defined(_SYS_LINUX_)
-
-
-int _qdbm_vmemavail(size_t size){
- char buf[4096], *rp;
- int fd, rv, bsiz;
- double avail;
- if((fd = open("/proc/meminfo", O_RDONLY, 00644)) == -1) return TRUE;
- rv = TRUE;
- if((bsiz = read(fd, buf, sizeof(buf) - 1)) > 0){
- buf[bsiz] = '\0';
- avail = -1;
- if((rp = strstr(buf, "MemFree:")) != NULL){
- rp = strchr(rp, ':') + 1;
- avail = strtod(rp, NULL) * 1024.0;
- if((rp = strstr(buf, "SwapFree:")) != NULL){
- rp = strchr(rp, ':') + 1;
- avail += strtod(rp, NULL) * 1024.0;
- }
- if(size >= avail) rv = FALSE;
- }
- }
- close(fd);
- return rv;
-}
-
-
-#elif defined(_SYS_MSVC_) || defined(_SYS_MINGW_) || defined(_SYS_CYGWIN_)
-
-
-int _qdbm_vmemavail(size_t size){
- MEMORYSTATUS sbuf;
- sbuf.dwLength = sizeof(MEMORYSTATUS);
- GlobalMemoryStatus(&sbuf);
- return size < sbuf.dwAvailVirtual;
-}
-
-
-#else
-
-
-int _qdbm_vmemavail(size_t size){
- return TRUE;
-}
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for ZLIB
- *************************************************************************************************/
-
-
-#if defined(MYZLIB)
-
-
-#include <zlib.h>
-
-#define ZLIBBUFSIZ 8192
-
-
-static char *_qdbm_deflate_impl(const char *ptr, int size, int *sp, int mode);
-static char *_qdbm_inflate_impl(const char *ptr, int size, int *sp, int mode);
-static unsigned int _qdbm_getcrc_impl(const char *ptr, int size);
-
-
-char *(*_qdbm_deflate)(const char *, int, int *, int) = _qdbm_deflate_impl;
-char *(*_qdbm_inflate)(const char *, int, int *, int) = _qdbm_inflate_impl;
-unsigned int (*_qdbm_getcrc)(const char *, int) = _qdbm_getcrc_impl;
-
-
-static char *_qdbm_deflate_impl(const char *ptr, int size, int *sp, int mode){
- z_stream zs;
- char *buf, *swap;
- unsigned char obuf[ZLIBBUFSIZ];
- int rv, asiz, bsiz, osiz;
- if(size < 0) size = strlen(ptr);
- zs.zalloc = Z_NULL;
- zs.zfree = Z_NULL;
- zs.opaque = Z_NULL;
- switch(mode){
- case _QDBM_ZMRAW:
- if(deflateInit2(&zs, 5, Z_DEFLATED, -15, 7, Z_DEFAULT_STRATEGY) != Z_OK)
- return NULL;
- break;
- case _QDBM_ZMGZIP:
- if(deflateInit2(&zs, 6, Z_DEFLATED, 15 + 16, 9, Z_DEFAULT_STRATEGY) != Z_OK)
- return NULL;
- break;
- default:
- if(deflateInit2(&zs, 6, Z_DEFLATED, 15, 8, Z_DEFAULT_STRATEGY) != Z_OK)
- return NULL;
- break;
- }
- asiz = size + 16;
- if(asiz < ZLIBBUFSIZ) asiz = ZLIBBUFSIZ;
- if(!(buf = malloc(asiz))){
- deflateEnd(&zs);
- return NULL;
- }
- bsiz = 0;
- zs.next_in = (unsigned char *)ptr;
- zs.avail_in = size;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- while((rv = deflate(&zs, Z_FINISH)) == Z_OK){
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if(bsiz + osiz > asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- deflateEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- }
- if(rv != Z_STREAM_END){
- free(buf);
- deflateEnd(&zs);
- return NULL;
- }
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if(bsiz + osiz + 1 > asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- deflateEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- buf[bsiz] = '\0';
- if(mode == _QDBM_ZMRAW) bsiz++;
- *sp = bsiz;
- deflateEnd(&zs);
- return buf;
-}
-
-
-static char *_qdbm_inflate_impl(const char *ptr, int size, int *sp, int mode){
- z_stream zs;
- char *buf, *swap;
- unsigned char obuf[ZLIBBUFSIZ];
- int rv, asiz, bsiz, osiz;
- zs.zalloc = Z_NULL;
- zs.zfree = Z_NULL;
- zs.opaque = Z_NULL;
- switch(mode){
- case _QDBM_ZMRAW:
- if(inflateInit2(&zs, -15) != Z_OK) return NULL;
- break;
- case _QDBM_ZMGZIP:
- if(inflateInit2(&zs, 15 + 16) != Z_OK) return NULL;
- break;
- default:
- if(inflateInit2(&zs, 15) != Z_OK) return NULL;
- break;
- }
- asiz = size * 2 + 16;
- if(asiz < ZLIBBUFSIZ) asiz = ZLIBBUFSIZ;
- if(!(buf = malloc(asiz))){
- inflateEnd(&zs);
- return NULL;
- }
- bsiz = 0;
- zs.next_in = (unsigned char *)ptr;
- zs.avail_in = size;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- while((rv = inflate(&zs, Z_NO_FLUSH)) == Z_OK){
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if(bsiz + osiz >= asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- inflateEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- }
- if(rv != Z_STREAM_END){
- free(buf);
- inflateEnd(&zs);
- return NULL;
- }
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if(bsiz + osiz >= asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- inflateEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- buf[bsiz] = '\0';
- if(sp) *sp = bsiz;
- inflateEnd(&zs);
- return buf;
-}
-
-
-static unsigned int _qdbm_getcrc_impl(const char *ptr, int size){
- int crc;
- if(size < 0) size = strlen(ptr);
- crc = crc32(0, Z_NULL, 0);
- return crc32(crc, (unsigned char *)ptr, size);
-}
-
-
-#else
-
-
-char *(*_qdbm_deflate)(const char *, int, int *, int) = NULL;
-char *(*_qdbm_inflate)(const char *, int, int *, int) = NULL;
-unsigned int (*_qdbm_getcrc)(const char *, int) = NULL;
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for LZO
- *************************************************************************************************/
-
-
-#if defined(MYLZO)
-
-
-#include <lzo/lzo1x.h>
-
-
-static char *_qdbm_lzoencode_impl(const char *ptr, int size, int *sp);
-static char *_qdbm_lzodecode_impl(const char *ptr, int size, int *sp);
-
-
-int _qdbm_lzo_init = FALSE;
-char *(*_qdbm_lzoencode)(const char *, int, int *) = _qdbm_lzoencode_impl;
-char *(*_qdbm_lzodecode)(const char *, int, int *) = _qdbm_lzodecode_impl;
-
-
-static char *_qdbm_lzoencode_impl(const char *ptr, int size, int *sp){
- char wrkmem[LZO1X_1_MEM_COMPRESS];
- lzo_bytep buf;
- lzo_uint bsiz;
- if(!_qdbm_lzo_init){
- if(lzo_init() != LZO_E_OK) return NULL;
- _qdbm_lzo_init = TRUE;
- }
- if(size < 0) size = strlen(ptr);
- if(!(buf = malloc(size + size / 16 + 80))) return NULL;
- if(lzo1x_1_compress((lzo_bytep)ptr, size, buf, &bsiz, wrkmem) != LZO_E_OK){
- free(buf);
- return NULL;
- }
- buf[bsiz] = '\0';
- *sp = bsiz;
- return (char *)buf;
-}
-
-
-static char *_qdbm_lzodecode_impl(const char *ptr, int size, int *sp){
- lzo_bytep buf;
- lzo_uint bsiz;
- int rat, rv;
- if(!_qdbm_lzo_init){
- if(lzo_init() != LZO_E_OK) return NULL;
- _qdbm_lzo_init = TRUE;
- }
- rat = 6;
- while(TRUE){
- bsiz = (size + 256) * rat + 3;
- if(!(buf = malloc(bsiz + 1))) return NULL;
- rv = lzo1x_decompress_safe((lzo_bytep)(ptr), size, buf, &bsiz, NULL);
- if(rv == LZO_E_OK){
- break;
- } else if(rv == LZO_E_OUTPUT_OVERRUN){
- free(buf);
- rat *= 2;
- } else {
- free(buf);
- return NULL;
- }
- }
- buf[bsiz] = '\0';
- if(sp) *sp = bsiz;
- return (char *)buf;
-}
-
-
-#else
-
-
-char *(*_qdbm_lzoencode)(const char *, int, int *) = NULL;
-char *(*_qdbm_lzodecode)(const char *, int, int *) = NULL;
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for BZIP2
- *************************************************************************************************/
-
-
-#if defined(MYBZIP)
-
-
-#include <bzlib.h>
-
-#define BZIPBUFSIZ 8192
-
-
-static char *_qdbm_bzencode_impl(const char *ptr, int size, int *sp);
-static char *_qdbm_bzdecode_impl(const char *ptr, int size, int *sp);
-
-
-char *(*_qdbm_bzencode)(const char *, int, int *) = _qdbm_bzencode_impl;
-char *(*_qdbm_bzdecode)(const char *, int, int *) = _qdbm_bzdecode_impl;
-
-
-static char *_qdbm_bzencode_impl(const char *ptr, int size, int *sp){
- bz_stream zs;
- char *buf, *swap, obuf[BZIPBUFSIZ];
- int rv, asiz, bsiz, osiz;
- if(size < 0) size = strlen(ptr);
- zs.bzalloc = NULL;
- zs.bzfree = NULL;
- zs.opaque = NULL;
- if(BZ2_bzCompressInit(&zs, 9, 0, 30) != BZ_OK) return NULL;
- asiz = size + 16;
- if(asiz < BZIPBUFSIZ) asiz = BZIPBUFSIZ;
- if(!(buf = malloc(asiz))){
- BZ2_bzCompressEnd(&zs);
- return NULL;
- }
- bsiz = 0;
- zs.next_in = (char *)ptr;
- zs.avail_in = size;
- zs.next_out = obuf;
- zs.avail_out = BZIPBUFSIZ;
- while((rv = BZ2_bzCompress(&zs, BZ_FINISH)) == BZ_FINISH_OK){
- osiz = BZIPBUFSIZ - zs.avail_out;
- if(bsiz + osiz > asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- BZ2_bzCompressEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- zs.next_out = obuf;
- zs.avail_out = BZIPBUFSIZ;
- }
- if(rv != BZ_STREAM_END){
- free(buf);
- BZ2_bzCompressEnd(&zs);
- return NULL;
- }
- osiz = BZIPBUFSIZ - zs.avail_out;
- if(bsiz + osiz + 1 > asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- BZ2_bzCompressEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- buf[bsiz] = '\0';
- *sp = bsiz;
- BZ2_bzCompressEnd(&zs);
- return buf;
-}
-
-
-static char *_qdbm_bzdecode_impl(const char *ptr, int size, int *sp){
- bz_stream zs;
- char *buf, *swap, obuf[BZIPBUFSIZ];
- int rv, asiz, bsiz, osiz;
- zs.bzalloc = NULL;
- zs.bzfree = NULL;
- zs.opaque = NULL;
- if(BZ2_bzDecompressInit(&zs, 0, 0) != BZ_OK) return NULL;
- asiz = size * 2 + 16;
- if(asiz < BZIPBUFSIZ) asiz = BZIPBUFSIZ;
- if(!(buf = malloc(asiz))){
- BZ2_bzDecompressEnd(&zs);
- return NULL;
- }
- bsiz = 0;
- zs.next_in = (char *)ptr;
- zs.avail_in = size;
- zs.next_out = obuf;
- zs.avail_out = BZIPBUFSIZ;
- while((rv = BZ2_bzDecompress(&zs)) == BZ_OK){
- osiz = BZIPBUFSIZ - zs.avail_out;
- if(bsiz + osiz >= asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- BZ2_bzDecompressEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- zs.next_out = obuf;
- zs.avail_out = BZIPBUFSIZ;
- }
- if(rv != BZ_STREAM_END){
- free(buf);
- BZ2_bzDecompressEnd(&zs);
- return NULL;
- }
- osiz = BZIPBUFSIZ - zs.avail_out;
- if(bsiz + osiz >= asiz){
- asiz = asiz * 2 + osiz;
- if(!(swap = realloc(buf, asiz))){
- free(buf);
- BZ2_bzDecompressEnd(&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy(buf + bsiz, obuf, osiz);
- bsiz += osiz;
- buf[bsiz] = '\0';
- if(sp) *sp = bsiz;
- BZ2_bzDecompressEnd(&zs);
- return buf;
-}
-
-
-#else
-
-
-char *(*_qdbm_bzencode)(const char *, int, int *) = NULL;
-char *(*_qdbm_bzdecode)(const char *, int, int *) = NULL;
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * for ICONV
- *************************************************************************************************/
-
-
-#if defined(MYICONV)
-
-
-#include <iconv.h>
-
-#define ICONVCHECKSIZ 32768
-#define ICONVMISSMAX 256
-#define ICONVALLWRAT 0.001
-
-
-static char *_qdbm_iconv_impl(const char *ptr, int size,
- const char *icode, const char *ocode, int *sp, int *mp);
-static const char *_qdbm_encname_impl(const char *ptr, int size);
-static int _qdbm_encmiss(const char *ptr, int size, const char *icode, const char *ocode);
-
-
-char *(*_qdbm_iconv)(const char *, int, const char *, const char *,
- int *, int *) = _qdbm_iconv_impl;
-const char *(*_qdbm_encname)(const char *, int) = _qdbm_encname_impl;
-
-
-static char *_qdbm_iconv_impl(const char *ptr, int size,
- const char *icode, const char *ocode, int *sp, int *mp){
- iconv_t ic;
- char *obuf, *wp, *rp;
- size_t isiz, osiz;
- int miss;
- if(size < 0) size = strlen(ptr);
- isiz = size;
- if((ic = iconv_open(ocode, icode)) == (iconv_t)-1) return NULL;
- osiz = isiz * 5;
- if(!(obuf = malloc(osiz + 1))){
- iconv_close(ic);
- return NULL;
- }
- wp = obuf;
- rp = (char *)ptr;
- miss = 0;
- while(isiz > 0){
- if(iconv(ic, (void *)&rp, &isiz, &wp, &osiz) == -1){
- if(errno == EILSEQ && (*rp == 0x5c || *rp == 0x7e)){
- *wp = *rp;
- wp++;
- rp++;
- isiz--;
- } else if(errno == EILSEQ || errno == EINVAL){
- rp++;
- isiz--;
- miss++;
- } else {
- break;
- }
- }
- }
- *wp = '\0';
- if(iconv_close(ic) == -1){
- free(obuf);
- return NULL;
- }
- if(sp) *sp = wp - obuf;
- if(mp) *mp = miss;
- return obuf;
-}
-
-
-static const char *_qdbm_encname_impl(const char *ptr, int size){
- const char *hypo;
- int i, miss, cr;
- if(size < 0) size = strlen(ptr);
- if(size > ICONVCHECKSIZ) size = ICONVCHECKSIZ;
- if(size >= 2 && (!memcmp(ptr, "\xfe\xff", 2) || !memcmp(ptr, "\xff\xfe", 2))) return "UTF-16";
- for(i = 0; i < size - 1; i += 2){
- if(ptr[i] == 0 && ptr[i+1] != 0) return "UTF-16BE";
- if(ptr[i+1] == 0 && ptr[i] != 0) return "UTF-16LE";
- }
- for(i = 0; i < size - 3; i++){
- if(ptr[i] == 0x1b){
- i++;
- if(ptr[i] == '(' && strchr("BJHI", ptr[i+1])) return "ISO-2022-JP";
- if(ptr[i] == '$' && strchr("@B(", ptr[i+1])) return "ISO-2022-JP";
- }
- }
- if(_qdbm_encmiss(ptr, size, "US-ASCII", "UTF-16BE") < 1) return "US-ASCII";
- if(_qdbm_encmiss(ptr, size, "UTF-8", "UTF-16BE") < 1) return "UTF-8";
- hypo = NULL;
- cr = FALSE;
- for(i = 0; i < size; i++){
- if(ptr[i] == 0xd){
- cr = TRUE;
- break;
- }
- }
- if(cr){
- if((miss = _qdbm_encmiss(ptr, size, "Shift_JIS", "EUC-JP")) < 1) return "Shift_JIS";
- if(!hypo && miss / (double)size <= ICONVALLWRAT) hypo = "Shift_JIS";
- if((miss = _qdbm_encmiss(ptr, size, "EUC-JP", "UTF-16BE")) < 1) return "EUC-JP";
- if(!hypo && miss / (double)size <= ICONVALLWRAT) hypo = "EUC-JP";
- } else {
- if((miss = _qdbm_encmiss(ptr, size, "EUC-JP", "UTF-16BE")) < 1) return "EUC-JP";
- if(!hypo && miss / (double)size <= ICONVALLWRAT) hypo = "EUC-JP";
- if((miss = _qdbm_encmiss(ptr, size, "Shift_JIS", "EUC-JP")) < 1) return "Shift_JIS";
- if(!hypo && miss / (double)size <= ICONVALLWRAT) hypo = "Shift_JIS";
- }
- if((miss = _qdbm_encmiss(ptr, size, "UTF-8", "UTF-16BE")) < 1) return "UTF-8";
- if(!hypo && miss / (double)size <= ICONVALLWRAT) hypo = "UTF-8";
- if((miss = _qdbm_encmiss(ptr, size, "CP932", "UTF-16BE")) < 1) return "CP932";
- if(!hypo && miss / (double)size <= ICONVALLWRAT) hypo = "CP932";
- return hypo ? hypo : "ISO-8859-1";
-}
-
-
-static int _qdbm_encmiss(const char *ptr, int size, const char *icode, const char *ocode){
- iconv_t ic;
- char obuf[ICONVCHECKSIZ], *wp, *rp;
- size_t isiz, osiz;
- int miss;
- isiz = size;
- if((ic = iconv_open(ocode, icode)) == (iconv_t)-1) return ICONVMISSMAX;
- miss = 0;
- rp = (char *)ptr;
- while(isiz > 0){
- osiz = ICONVCHECKSIZ;
- wp = obuf;
- if(iconv(ic, (void *)&rp, &isiz, &wp, &osiz) == -1){
- if(errno == EILSEQ || errno == EINVAL){
- rp++;
- isiz--;
- miss++;
- if(miss >= ICONVMISSMAX) break;
- } else {
- break;
- }
- }
- }
- if(iconv_close(ic) == -1) return ICONVMISSMAX;
- return miss;
-}
-
-
-#else
-
-
-char *(*_qdbm_iconv)(const char *, int, const char *, const char *, int *, int *) = NULL;
-const char *(*_qdbm_encname)(const char *, int) = NULL;
-
-
-#endif
-
-
-
-/*************************************************************************************************
- * common settings
- *************************************************************************************************/
-
-
-int _qdbm_dummyfunc(void){
- return 0;
-}
-
-
-
-/* END OF FILE */
diff --git a/src/qdbm/myconf.h b/src/qdbm/myconf.h
deleted file mode 100644
index b3528e0db..000000000
--- a/src/qdbm/myconf.h
+++ /dev/null
@@ -1,593 +0,0 @@
-/*************************************************************************************************
- * System configurations for QDBM
- * Copyright (C) 2000-2006 Mikio Hirabayashi
- * This file is part of QDBM, Quick Database Manager.
- * QDBM is free software; you can redistribute it and/or modify it under the terms of the GNU
- * Lesser General Public License as published by the Free Software Foundation; either version
- * 2.1 of the License or any later version. QDBM is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- * You should have received a copy of the GNU Lesser General Public License along with QDBM; if
- * not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307 USA.
- *************************************************************************************************/
-
-
-#ifndef _MYCONF_H /* duplication check */
-#define _MYCONF_H
-
-#if defined(__cplusplus) /* export for C++ */
-extern "C" {
-#endif
-
-
-
-/*************************************************************************************************
- * system discrimination
- *************************************************************************************************/
-
-
-#if defined(__linux__)
-
-#define _SYS_LINUX_
-#define _QDBM_SYSNAME "Linux"
-
-#elif defined(__FreeBSD__)
-
-#define _SYS_FREEBSD_
-#define _QDBM_SYSNAME "FreeBSD"
-
-#elif defined(__NetBSD__)
-
-#define _SYS_NETBSD_
-#define _QDBM_SYSNAME "NetBSD"
-
-#elif defined(__OpenBSD__)
-
-#define _SYS_OPENBSD_
-#define _QDBM_SYSNAME "OpenBSD"
-
-#elif defined(__sun__)
-
-#define _SYS_SUNOS_
-#define _QDBM_SYSNAME "SunOS"
-
-#elif defined(__hpux)
-
-#define _SYS_HPUX_
-#define _QDBM_SYSNAME "HP-UX"
-
-#elif defined(__osf)
-
-#define _SYS_TRU64_
-#define _QDBM_SYSNAME "Tru64"
-
-#elif defined(_AIX)
-
-#define _SYS_AIX_
-#define _QDBM_SYSNAME "AIX"
-
-#elif defined(__APPLE__) && defined(__MACH__)
-
-#define _SYS_MACOSX_
-#define _QDBM_SYSNAME "Mac OS X"
-
-#elif defined(_MSC_VER)
-
-#define _SYS_MSVC_
-#define _QDBM_SYSNAME "Windows (VC++)"
-
-#elif defined(_WIN32)
-
-#define _SYS_MINGW_
-#define _QDBM_SYSNAME "Windows (MinGW)"
-
-#elif defined(__CYGWIN__)
-
-#define _SYS_CYGWIN_
-#define _QDBM_SYSNAME "Windows (Cygwin)"
-
-#elif defined(__riscos__) || defined(__riscos)
-
-#define _SYS_RISCOS_
-#define _QDBM_SYSNAME "RISC OS"
-
-#else
-
-#define _SYS_GENERIC_
-#define _QDBM_SYSNAME "Generic"
-
-#endif
-
-
-
-/*************************************************************************************************
- * general headers
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_)
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include <time.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <direct.h>
-#include <windows.h>
-#include <io.h>
-
-#elif defined(_SYS_MINGW_)
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include <time.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <windows.h>
-#include <io.h>
-
-#elif defined(_SYS_CYGWIN_)
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include <time.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <sys/times.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <windows.h>
-#include <io.h>
-
-#else
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include <time.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <sys/times.h>
-#include <fcntl.h>
-#include <dirent.h>
-
-#endif
-
-
-
-/*************************************************************************************************
- * notation of filesystems
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_)
-
-#define MYPATHCHR '\\'
-#define MYPATHSTR "\\"
-#define MYEXTCHR '.'
-#define MYEXTSTR "."
-#define MYCDIRSTR "."
-#define MYPDIRSTR ".."
-
-#elif defined(_SYS_RISCOS_)
-
-#define MYPATHCHR '.'
-#define MYPATHSTR "."
-#define MYEXTCHR '/'
-#define MYEXTSTR "/"
-#define MYCDIRSTR "@"
-#define MYPDIRSTR "^"
-
-#else
-
-#define MYPATHCHR '/'
-#define MYPATHSTR "/"
-#define MYEXTCHR '.'
-#define MYEXTSTR "."
-#define MYCDIRSTR "."
-#define MYPDIRSTR ".."
-
-#endif
-
-
-
-/*************************************************************************************************
- * for dosish filesystems
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_) || defined(_SYS_CYGWIN_)
-
-#undef UNICODE
-#undef open
-
-#define \
- open(pathname, flags, mode) \
- open(pathname, flags | O_BINARY, mode)
-
-#define \
- lstat(pathname, buf) \
- _qdbm_win32_lstat(pathname, buf)
-
-int _qdbm_win32_lstat(const char *pathname, struct stat *buf);
-
-#else
-
-#undef O_BINARY
-#undef O_TEXT
-#undef setmode
-
-#define O_BINARY 0
-#define O_TEXT 1
-
-#define \
- setmode(fd, mode) \
- (O_BINARY)
-
-#endif
-
-
-
-/*************************************************************************************************
- * for POSIX thread
- *************************************************************************************************/
-
-
-#if defined(MYPTHREAD)
-
-#define _qdbm_ptsafe TRUE
-
-void *_qdbm_settsd(void *ptr, int size, const void *initval);
-
-#else
-
-#define _qdbm_ptsafe FALSE
-
-#define \
- _qdbm_settsd(ptr, size, initval) \
- (NULL)
-
-#endif
-
-
-
-/*************************************************************************************************
- * for systems without file locking
- *************************************************************************************************/
-
-
-#if defined(_SYS_RISCOS_) || defined(MYNOLOCK)
-
-#undef fcntl
-
-#define \
- fcntl(fd, cmd, lock) \
- (0)
-
-#endif
-
-
-
-/*************************************************************************************************
- * for systems without mmap
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_) || \
- defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || defined(_SYS_OPENBSD_) || \
- defined(_SYS_AIX_) || defined(_SYS_RISCOS_) || defined(MYNOMMAP)
-
-#undef PROT_EXEC
-#undef PROT_READ
-#undef PROT_WRITE
-#undef PROT_NONE
-#undef MAP_FIXED
-#undef MAP_SHARED
-#undef MAP_PRIVATE
-#undef MAP_FAILED
-#undef MS_ASYNC
-#undef MS_SYNC
-#undef MS_INVALIDATE
-#undef mmap
-#undef munmap
-#undef msync
-#undef mflush
-
-#define PROT_EXEC (1 << 0)
-#define PROT_READ (1 << 1)
-#define PROT_WRITE (1 << 2)
-#define PROT_NONE (1 << 3)
-#define MAP_FIXED 1
-#define MAP_SHARED 2
-#define MAP_PRIVATE 3
-#define MAP_FAILED ((void *)-1)
-#define MS_ASYNC (1 << 0)
-#define MS_SYNC (1 << 1)
-#define MS_INVALIDATE (1 << 2)
-
-#define \
- mmap(start, length, prot, flags, fd, offset) \
- _qdbm_mmap(start, length, prot, flags, fd, offset)
-
-#define \
- munmap(start, length) \
- _qdbm_munmap(start, length)
-
-#define \
- msync(start, length, flags) \
- _qdbm_msync(start, length, flags)
-
-#define \
- mflush(start, length, flags) \
- _qdbm_msync(start, length, flags)
-
-void *_qdbm_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
-int _qdbm_munmap(void *start, size_t length);
-int _qdbm_msync(const void *start, size_t length, int flags);
-
-#else
-
-#undef mflush
-#define \
- mflush(start, length, flags) \
- (0)
-
-#endif
-
-
-
-/*************************************************************************************************
- * for reentrant time routines
- *************************************************************************************************/
-
-
-struct tm *_qdbm_gmtime(const time_t *timep, struct tm *result);
-struct tm *_qdbm_localtime(const time_t *timep, struct tm *result);
-
-
-
-/*************************************************************************************************
- * for systems without times
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_)
-
-#undef times
-#undef sysconf
-
-struct tms {
- clock_t tms_utime;
- clock_t tms_stime;
- clock_t tms_cutime;
- clock_t tms_cstime;
-};
-
-#define \
- times(buf) \
- _qdbm_times(buf)
-
-#define \
- sysconf(name) \
- (CLOCKS_PER_SEC)
-
-clock_t _qdbm_times(struct tms *buf);
-
-#endif
-
-
-
-/*************************************************************************************************
- * for Win32
- *************************************************************************************************/
-
-
-#if defined(_SYS_MSVC_) || defined(_SYS_MINGW_)
-
-#undef F_WRLCK
-#undef F_RDLCK
-#undef F_SETLK
-#undef F_SETLKW
-#undef fcntl
-#undef ftruncate
-#undef fsync
-#undef mkdir
-#undef rename
-
-#define F_WRLCK 0
-#define F_RDLCK 1
-#define F_SETLK 0
-#define F_SETLKW 1
-
-struct flock {
- int l_type;
- int l_whence;
- int l_start;
- int l_len;
- int l_pid;
-};
-
-#define \
- fcntl(fd, cmd, lock) \
- _qdbm_win32_fcntl(fd, cmd, lock)
-
-#define \
- ftruncate(fd, length) \
- _chsize(fd, length)
-
-#define \
- fsync(fd) \
- (0)
-
-#define \
- mkdir(pathname, mode) \
- mkdir(pathname)
-
-#define \
- rename(oldpath, newpath) \
- (unlink(newpath), rename(oldpath, newpath))
-
-int _qdbm_win32_fcntl(int fd, int cmd, struct flock *lock);
-
-#endif
-
-
-#if defined(_SYS_MSVC_)
-
-#undef S_ISDIR
-#undef S_ISREG
-#undef opendir
-#undef closedir
-#undef readdir
-
-#define S_ISDIR(x) (x & _S_IFDIR)
-#define S_ISREG(x) (x & _S_IFREG)
-
-struct dirent {
- char d_name[1024];
-};
-
-typedef struct {
- HANDLE fh;
- WIN32_FIND_DATA data;
- struct dirent de;
- int first;
-} DIR;
-
-#define \
- opendir(name) \
- _qdbm_win32_opendir(name)
-
-#define \
- closedir(dir) \
- _qdbm_win32_closedir(dir)
-
-#define \
- readdir(dir) \
- _qdbm_win32_readdir(dir)
-
-DIR *_qdbm_win32_opendir(const char *name);
-
-int _qdbm_win32_closedir(DIR *dir);
-
-struct dirent *_qdbm_win32_readdir(DIR *dir);
-
-#endif
-
-
-
-/*************************************************************************************************
- * for checking information of the system
- *************************************************************************************************/
-
-
-int _qdbm_vmemavail(size_t size);
-
-
-
-/*************************************************************************************************
- * for ZLIB
- *************************************************************************************************/
-
-
-enum {
- _QDBM_ZMZLIB,
- _QDBM_ZMRAW,
- _QDBM_ZMGZIP
-};
-
-
-extern char *(*_qdbm_deflate)(const char *, int, int *, int);
-
-extern char *(*_qdbm_inflate)(const char *, int, int *, int);
-
-extern unsigned int (*_qdbm_getcrc)(const char *, int);
-
-
-
-/*************************************************************************************************
- * for LZO
- *************************************************************************************************/
-
-
-extern char *(*_qdbm_lzoencode)(const char *, int, int *);
-
-extern char *(*_qdbm_lzodecode)(const char *, int, int *);
-
-
-
-/*************************************************************************************************
- * for BZIP2
- *************************************************************************************************/
-
-
-extern char *(*_qdbm_bzencode)(const char *, int, int *);
-
-extern char *(*_qdbm_bzdecode)(const char *, int, int *);
-
-
-
-/*************************************************************************************************
- * for ICONV
- *************************************************************************************************/
-
-
-extern char *(*_qdbm_iconv)(const char *, int, const char *, const char *, int *, int *);
-
-extern const char *(*_qdbm_encname)(const char *, int);
-
-
-
-/*************************************************************************************************
- * common settings
- *************************************************************************************************/
-
-
-#undef TRUE
-#define TRUE 1
-#undef FALSE
-#define FALSE 0
-
-#define sizeof(a) ((int)sizeof(a))
-
-int _qdbm_dummyfunc(void);
-
-
-
-#if defined(__cplusplus) /* export for C++ */
-}
-#endif
-
-#endif /* duplication check */
-
-
-/* END OF FILE */
diff --git a/src/text-filters/Makefile.am b/src/text-filters/Makefile.am
deleted file mode 100644
index 334059a47..000000000
--- a/src/text-filters/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = ooo_converter
diff --git a/src/text-filters/ooo_converter/ChangeLog b/src/text-filters/ooo_converter/ChangeLog
deleted file mode 100644
index 589a51f62..000000000
--- a/src/text-filters/ooo_converter/ChangeLog
+++ /dev/null
@@ -1,32 +0,0 @@
-080310 Fixed compiler warnings.
-
-050107 Added range check to parse_html().
-
-021126 Added "strip" target to the Makefile.
- o3tohtml puts sheet names in <h1>...</h1> when converting
- scalc files.
- Released 0.0.3.
-
-021125 o3read: parse_html understands <!-- comments -->.
- o3tohtml: translate tables as used by scalc.
-
-021123 get_value didn't handle null p. Spotted by David Rudder.
- o3tohtml: many tags added, including lists, headers and
- hyperlinks.
-
-021121 o3tohtml: added output tags for <h1>, <b>, <i>, <u>.
- Removed unused code from o3totxt and o3tohtml.
- Wrote manpages for o3read, o3tohtml, o3totxt and utf8tolatin1.
- Added a copy of the GPL.
- Released 0.0.2.
-
-021117 Output module for plain text in o3totxt.c.
- Rudimentary html module in o3tohtml.c.
- Added the utility utf8tolatin1.
- Released 0.0.1.
-
-021113 Modded the parser to understand tags that look like <this/>.
-
-021112 Started project. Took the HTML parser from myhtml and made
- minimal changes to make it grok O3's XML.
-
diff --git a/src/text-filters/ooo_converter/Makefile.am b/src/text-filters/ooo_converter/Makefile.am
deleted file mode 100644
index d405fab35..000000000
--- a/src/text-filters/ooo_converter/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-bin_PROGRAMS = o3totxt
-
-o3totxt_SOURCES = o3read.c o3totxt.c o3read.h
-
diff --git a/src/text-filters/ooo_converter/copying b/src/text-filters/ooo_converter/copying
deleted file mode 100644
index c3c7a9eac..000000000
--- a/src/text-filters/ooo_converter/copying
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/src/text-filters/ooo_converter/install b/src/text-filters/ooo_converter/install
deleted file mode 100644
index bcee1aae1..000000000
--- a/src/text-filters/ooo_converter/install
+++ /dev/null
@@ -1,19 +0,0 @@
-
-This is all written in portable ANSI C with no additional
-required libraries or dependencies. Thus, no configuration
-is necessary and installing is as simple as:
-
-make install
-
-Or, to save a few kb on the already small binaries:
-
-make strip install
-
-And to uninstall:
-
-make uninstall
-
-To put the files somewhere other than /usr/local, change the PREFIX:
-
-make install PREFIX=/opt
-
diff --git a/src/text-filters/ooo_converter/main.c b/src/text-filters/ooo_converter/main.c
deleted file mode 100644
index 04e6e2ffd..000000000
--- a/src/text-filters/ooo_converter/main.c
+++ /dev/null
@@ -1,50 +0,0 @@
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "o3read.h"
-
-enum {LIST_NONE=0, LIST_UL, LIST_OL, LIST_DL};
-
-typedef struct hstate {
- int pre; /* preformatted, default 0 = false */
- int list; /* list mode, default LIST_NONE */
- int ll; /* list level, starts with 1 */
- int indent; /* indentation level, default 0 */
-} hstate;
-
-static int href; /* links, default 0 */
-static char **hrefs;
-
-static int nextc(void *closure)
-{
- FILE *fp = closure;
- int c = getc(fp);
- if (c == EOF) return '\0';
- return c;
-}
-
-static void usage(void)
-{
- printf("usage: lmb url\n");
- exit(0);
-}
-
-int main(int argc, char **argv)
-{
- hnode *h;
-
- href = 0;
- hrefs = NULL;
-
- h = parse_html(nextc, stdin);
- if (h == NULL) usage();
-
- dump_html(h, 0);
-
- free_html(h);
- return 0;
-}
-
diff --git a/src/text-filters/ooo_converter/o3read.1 b/src/text-filters/ooo_converter/o3read.1
deleted file mode 100644
index 0a6ee88b9..000000000
--- a/src/text-filters/ooo_converter/o3read.1
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH O3READ 1 LOCAL
-
-.SH NAME
-o3read, o3tohtml, o3totxt \- convert files in OpenOffice.org format.
-
-.SH SYNOPSIS
-.B o3read
-< infile > outfile
-
-.B o3tohtml
-< infile > outfile
-
-.B o3totxt
-< infile > outfile
-
-.SH DESCRIPTION
-.I o3read
-is a collection of tools to convert files in OpenOffice.org format
-into other formats such as html or plain text.
-
-.SH EXAMPLE
-unzip -p file.sxw content.xml | o3tohtml | utf8tolatin1 > file.html
-
-.SH SEE ALSO
-utf8tolatin1
-
-.SH AUTHOR
-Copyright (C) 2002-2005 Ulric Eriksson
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.
-
diff --git a/src/text-filters/ooo_converter/o3read.c b/src/text-filters/ooo_converter/o3read.c
deleted file mode 100644
index daeaced17..000000000
--- a/src/text-filters/ooo_converter/o3read.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- Copyright (C) 2002-2005 Ulric Eriksson <ulric@siag.nu>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "o3read.h"
-
-enum {START, TAG, CHAR, COMMENT1, COMMENT2, COMMENT3, COMMENT4, COMMENT5, END};
-
-static hnode *h, *ch;
-
-static char *b = NULL;
-
-static int n, nmax = 0;
-
-static struct {
- char *name;
- int value;
-} cchar[] = {
- {"quot", '"'}, {"amp", '&'}, {"lt", '<'}, {"gt", '>'},
- {"nbsp", 160}, {"iexcl", 161}, {"cent", 162}, {"pound", 163},
- {"curren", 164}, {"yen", 165}, {"brvbar", 166}, {"sect", 167},
- {"uml", 168}, {"copy", 169}, {"ordf", 170}, {"laquo", 171},
- {"not", 172}, {"shy", 173}, {"reg", 174}, {"macr", 175},
- {"deg", 176}, {"plusmn", 177}, {"sup2", 178}, {"sup3", 179},
- {"acute", 180}, {"micro", 181}, {"para", 182}, {"middot", 183},
- {"cedil", 184}, {"sup1", 185}, {"ordm", 186}, {"raquo", 187},
- {"frac14", 188}, {"frac12", 189}, {"frac34", 190}, {"iquest", 191},
- {"Agrave", 192}, {"Aacute", 193}, {"Acirc", 194}, {"Atilde", 195},
- {"Auml", 196}, {"Aring", 197}, {"AElig", 198}, {"Ccedil", 199},
- {"Egrave", 200}, {"Eacute", 201}, {"Ecirc", 202}, {"Euml", 203},
- {"Igrave", 204}, {"Iacute", 205}, {"Icirc", 206}, {"Euml", 207},
- {"ETH", 208}, {"Ntilde", 209}, {"Ograve", 210}, {"Oacute", 211},
- {"Ocirc", 212}, {"Otilde", 213}, {"Ouml", 214}, {"times", 215},
- {"Oslash", 216}, {"Ugrave", 217}, {"Uacute", 218}, {"Ucirc", 219},
- {"Uuml", 220}, {"Yacute", 221}, {"THORN", 222}, {"szlig", 223},
- {"agrave", 224}, {"aacute", 225}, {"acirc", 226}, {"atilde", 227},
- {"auml", 228}, {"aring", 229}, {"aelig", 230}, {"ccedil", 231},
- {"egrave", 232}, {"eacute", 233}, {"ecirc", 234}, {"euml", 235},
- {"igrave", 236}, {"iacute", 237}, {"icirc", 238}, {"iuml", 239},
- {"eth", 240}, {"ntilde", 241}, {"ograve", 242}, {"oacute", 243},
- {"ocirc", 244}, {"otilde", 245}, {"ouml", 246}, {"divide", 247},
- {"slash", 248}, {"ugrave", 249}, {"uacute", 250}, {"ucirc", 251},
- {"uuml", 252}, {"yacute", 253}, {"thorn", 254}, {"yuml", 255},
- {NULL, 0}
-};
-
-/* convert Auml to Ä and #33 to ! */
-static int from_cchar(char *from)
-{
- int i;
-
- if (from[0] == '#') {
- i = atoi(from+1);
- if (i >= ' ' && i <= 255) return i;
- return -1;
- }
- for (i = 0; cchar[i].name; i++) {
- if (!strcmp(cchar[i].name, from)) return cchar[i].value;
- }
- return -1;
-}
-
-static hnode *new_hnode(void)
-{
- hnode *h = cmalloc(sizeof *h);
- h->tag = NULL;
- h->text = NULL;
- h->parent = NULL;
- h->next = NULL;
- h->child = NULL;
- return h;
-}
-
-static void indent(int i)
-{
- int j;
-
- for (j = 0; j < i; j++) putchar(' ');
-}
-
-void free_html(hnode *h)
-{
- if (h == NULL) return;
- if (h->tag) free(h->tag);
- if (h->text) free(h->text);
- free_html(h->next);
- free_html(h->child);
-}
-
-void dump_html(hnode *h, int i)
-{
- if (h == NULL) return;
- if (h->tag == NULL) {
- indent(i);
- printf("Text: '%s'\n", h->text);
- } else {
- indent(i);
- printf("Tag: '%s'\n", h->tag);
- if (h->text) {
- indent(i+4);
- printf("Value: '%s'\n", h->text);
- }
- }
- dump_html(h->child, i+2);
- dump_html(h->next, i);
-}
-
-static void growb(int n)
-{
- if (n >= nmax) {
- nmax = n+1000;
- b = crealloc(b, nmax+1);
- }
-}
-
-static void clearb(void)
-{
- n = 0;
- growb(n+1);
- b[n] = '\0';
-}
-
-static hnode *last_node(hnode *h)
-{
- if (h == NULL) return NULL;
- if (h->next == NULL) return h;
- return last_node(h->next);
-}
-
-/*
-When we enter ins_node, ch points to the most recently inserted node.
-The new node is inserted as a child to this node. When we are done,
-ch points to the newly inserted node.
-
-Special case: If tree is empty, ch is NULL. In that case, the new
-node becomes the root of the tree.
-*/
-
-static void ins_node(hnode *n)
-{
- hnode *ph;
-
- if (ch == NULL) {
- h = n;
- } else if ((ph = last_node(ch->child)) == NULL) {
- ch->child = n;
- } else {
- ph->next = n;
- }
- n->parent = ch;
- ch = n;
-}
-
-static hnode *match_tag(char *p)
-{
- hnode *h;
-
- for (h = ch; h; h = h->parent) {
- if (h->tag && !strcmp(h->tag, p)) break;
- }
- return h;
-}
-
-static void tag_cb(char *p)
-{
- hnode *h;
- char *q;
- char b[1024];
- int n, closer = 0;
-
- if (p == NULL) return; /* should never happen */
- q = p;
- while (isspace(*q)) q++;
- if (q[0] == '\0') return; /* ignore empty tag */
-
- n = strlen(q);
- if (n && q[n-1] == '/') {
- q[n-1] = '\0';
- closer = 1;
- }
-
- n = 0;
- while (*q && !isspace(*q)) b[n++] = toupper(*q++);
- b[n] = '\0';
- while (*q && isspace(*q)) q++; /* skip past white space */
- if (p[0] == '\0') return;
- if (p[0] == '/') {
- /* closing tag */
- h = match_tag(b+1);
- if (h == NULL) {
- fprintf(stderr, "Warning: bogus closer '%s'\n", p);
- } else {
- ch = h->parent;
- }
- } else {
- h = new_hnode();
- h->tag = cstrdup(b);
- if (*q) h->text = cstrdup(q);
- ins_node(h);
- if (closer) ch = ch->parent;
- }
-}
-
-static int extchar(char *p)
-{
- int c = from_cchar(p);
- if (c == -1) c = '?';
- return c;
-}
-
-static void text_cb(char *p)
-{
- hnode *h;
-
- if (p == NULL || p[0] == '\0') return;
- h = new_hnode();
- h->text = cstrdup(p);
- ins_node(h);
- ch = ch->parent;
-}
-
-static void char_cb(int c)
-{
- growb(n+1);
- b[n++] = c;
- b[n] = '\0';
-}
-
-hnode *parse_html(int (*getc_cb)(void *), void *closure)
-{
- int state = 0, error = 0;
- int c;
- char t[1024];
- int m = 0;
-
- ch = h = NULL;
- n = 0;
- while (state != END) {
- c = getc_cb(closure);
- switch (state) {
- case START:
- if (c == '<') {
- text_cb(b);
- clearb();
- state = TAG;
- } else if (c == '&') {
- m = 0;
- state = CHAR;
- } else if (c == '\0') {
- text_cb(b);
- state = END;
- } else {
- char_cb(c);
- }
- break;
- case TAG:
- if (c == '>') {
- tag_cb(b);
- clearb();
- state = START;
- } else if (c == '!') {
- state = COMMENT1;
- } else if (c == '\0') {
- error = 1;
- state = END;
- } else {
- char_cb(c);
- }
- break;
- case COMMENT1:
- if (c == '-') {
- state = COMMENT2;
- } else if (c == '\0') {
- error = 1;
- state = END;
- } else {
- char_cb('!');
- char_cb(c);
- state = TAG;
- }
- break;
- case COMMENT2:
- if (c == '-') {
- state = COMMENT3;
- } else if (c == '\0') {
- error = 1;
- state = END;
- } else {
- char_cb('!');
- char_cb('-');
- char_cb(c);
- state = TAG;
- }
- break;
- case COMMENT3:
- if (c == '-') {
- state = COMMENT4;
- } else if (c == '\0') {
- error = 1;
- state = END;
- }
- break;
- case COMMENT4:
- if (c == '-') {
- state = COMMENT5;
- } else if (c == '\0') {
- error = 1;
- state = END;
- } else {
- state = COMMENT3;
- }
- break;
- case COMMENT5:
- if (c == '>') {
- clearb();
- state = START;
- } else if (c == '\0') {
- error = 1;
- state = END;
- } else {
- state = COMMENT3;
- }
- break;
- case CHAR:
- if (c == ';') {
- t[m] = '\0';
- char_cb(extchar(t));
- state = START;
- } else if (c == '\0') {
- error = 1;
- state = END;
- } else {
- if (m+1 < (int) sizeof t) t[m++] = c;
- }
- break;
- default:
- error = 1;
- state = END;
- }
- }
- if (error) {
- fprintf(stderr, "Error\n");
- }
- return h;
-}
-
-/* p looks like this: key=value key2="value 2". Keys are not case
- sensitive. Everything not in quotes is converted to upper case.
- Returns value if found, otherwise NULL.
-*/
-char *get_value(char *k, char *p, char *b)
-{
- char *q = p;
- int n = strlen(k);
- int i;
-
- if (q == NULL) return NULL;
-Again:
- while (*q && isspace(*q)) q++; /* skip leading space */
- if (!cstrncasecmp(k, q, n) && q[n] == '=') { /* gotcha */
- n++;
- i = 0;
- if (q[n] == '"') {
- n++;
- while (q[n] && q[n] != '"') b[i++] = q[n++];
- } else {
- while (q[n] && !isspace(q[n])) b[i++] = q[n++];
- }
- b[i] = '\0';
- return b;
- }
- while (*q && !isspace(*q)) q++;
- if (*q) goto Again;
- return NULL;
-}
-
-static void malloc_error(size_t n)
-{
- fprintf(stderr, "Error allocating %ld bytes\n", (long)n);
- exit(EXIT_FAILURE);
-}
-
-void *cmalloc(size_t n)
-{
- void *q = malloc(n);
- if (q == NULL) malloc_error(n);
- return q;
-}
-
-void *crealloc(void *p, size_t n)
-{
- void *q = realloc(p, n);
- if (q == NULL) malloc_error(n);
- return q;
-}
-
-char *cstrdup(const char *p)
-{
- int n = strlen(p);
- char *q = cmalloc(n+1);
- strcpy(q, p);
- return q;
-}
-
-int cstrncasecmp(const char *p, const char *q, size_t n)
-{
- size_t i;
- int c = 0;
-
- for (i = 0; i < n && p[i]; i++) {
- if ((c = toupper(p[i])-toupper(q[i]))) break;
- }
- return c;
-}
-
diff --git a/src/text-filters/ooo_converter/o3read.h b/src/text-filters/ooo_converter/o3read.h
deleted file mode 100644
index b31e66c65..000000000
--- a/src/text-filters/ooo_converter/o3read.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- Copyright (C) 2002 Ulric Eriksson <ulric@siag.nu>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
- */
-
-typedef struct hnode {
- char *tag; /* tag name */
- char *text; /* text */
- struct hnode *parent; /* parent */
- struct hnode *next; /* next sibling */
- struct hnode *child; /* first child */
-} hnode;
-
-extern void dump_html(hnode *h, int i);
-extern void free_html(hnode *h);
-extern hnode *parse_html(int (*getc_cb)(void *), void *);
-extern char *get_value(char *, char *, char *);
-
-extern void *crealloc(void *, size_t);
-extern void *cmalloc(size_t);
-extern char *cstrdup(const char *);
-extern int cstrncasecmp(const char *, const char *, size_t);
diff --git a/src/text-filters/ooo_converter/o3tohtml.1 b/src/text-filters/ooo_converter/o3tohtml.1
deleted file mode 100644
index 362334a8c..000000000
--- a/src/text-filters/ooo_converter/o3tohtml.1
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/o3read.1
diff --git a/src/text-filters/ooo_converter/o3tohtml.c b/src/text-filters/ooo_converter/o3tohtml.c
deleted file mode 100644
index 29fc0e7bb..000000000
--- a/src/text-filters/ooo_converter/o3tohtml.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- Copyright (C) 2002 Ulric Eriksson <ulric@siag.nu>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "o3read.h"
-
-enum {LIST_NONE=0, LIST_UL, LIST_OL, LIST_DL};
-
-typedef struct style {
- char *name;
- char bold;
- char italic;
- char underline;
-} style;
-
-typedef struct hstate {
- int pre; /* preformatted, default 0 = false */
- int list; /* list mode, default LIST_NONE */
- int ll; /* list level, starts with 1 */
- int indent; /* indentation level, default 0 */
-} hstate;
-
-static style *styles = NULL;
-static int nstyles = 0;
-
-static int href; /* links, default 0 */
-static char **hrefs;
-
-static void tag_style_properties(hnode *, hstate *);
-static void tag_style_style(hnode *, hstate *);
-static void tag_table_table(hnode *, hstate *);
-static void tag_table_row(hnode *, hstate *);
-static void tag_table_cell(hnode *, hstate *);
-static void tag_text_a(hnode *, hstate *);
-static void tag_text_h(hnode *, hstate *);
-static void tag_text_list_item(hnode *, hstate *);
-static void tag_text_ordered_list(hnode *, hstate *);
-static void tag_text_p(hnode *, hstate *);
-static void tag_text_s(hnode *, hstate *);
-static void tag_text_span(hnode *, hstate *);
-static void tag_text_tab_stop(hnode *, hstate *);
-static void tag_text_unordered_list(hnode *, hstate *);
-static void tag_unknown(hnode *, hstate *);
-static void text(hnode *, hstate *);
-
-static struct {
- char *name;
- void (*action)(hnode *, hstate *);
-} tag[] = {
- {"STYLE:STYLE", tag_style_style},
- {"STYLE:PROPERTIES", tag_style_properties},
- {"TABLE:TABLE", tag_table_table},
- {"TABLE:TABLE-CELL", tag_table_cell},
- {"TABLE:TABLE-ROW", tag_table_row},
- {"TEXT:A", tag_text_a},
- {"TEXT:H", tag_text_h},
- {"TEXT:LIST-ITEM", tag_text_list_item},
- {"TEXT:ORDERED-LIST", tag_text_ordered_list},
- {"TEXT:P", tag_text_p},
- {"TEXT:S", tag_text_s},
- {"TEXT:SPAN", tag_text_span},
- {"TEXT:TAB-STOP", tag_text_tab_stop},
- {"TEXT:UNORDERED-LIST", tag_text_unordered_list},
- {NULL, tag_unknown}
-};
-
-static hstate *new_hstate(void)
-{
- hstate *s = cmalloc(sizeof *s);
- s->pre = 0;
- s->indent = 0;
- s->list = LIST_NONE;
- s->ll = 0;
- return s;
-}
-
-static void free_hstate(hstate *s)
-{
- free(s);
-}
-
-static void newline(hstate *s)
-{
- int i;
-
- putchar('\n');
- for (i = 0; i < s->indent; i++)
- putchar(' ');
-}
-
-static void tree(hnode *h, hstate *s)
-{
- void (*action)(hnode *, hstate *);
- int i;
-
- if (h == NULL) return;
- if (h->tag == NULL) {
- text(h, s);
- } else {
- for (i = 0; tag[i].name; i++) {
- if (!strcmp(tag[i].name, h->tag)) break;
- }
- action = tag[i].action;
- (*action)(h, s);
- }
-}
-
-/* tag handlers are in alphabetical order so I can find them... */
-
-static void tag_style_properties(hnode *h, hstate *s)
-{
- char b[1024], *p;
- p = get_value("FO:FONT-STYLE", h->text, b);
- if (p && !strcmp(p, "italic")) styles[nstyles].italic = 1;
- p = get_value("FO:FONT-WEIGHT", h->text, b);
- if (p && !strcmp(p, "bold")) styles[nstyles].bold = 1;
- p = get_value("STYLE:TEXT-UNDERLINE", h->text, b);
- if (p && !strcmp(p, "single")) styles[nstyles].underline = 1;
- tree(h->child, s);
- tree(h->next, s);
-}
-
-/* Begin a new style definition */
-static void tag_style_style(hnode *h, hstate *s)
-{
- char b[1024], *p;
- p = get_value("STYLE:NAME", h->text, b);
- if (p) strcpy(b, p);
- else strcpy(b, "unknown style");
- styles = crealloc(styles, (nstyles+1)*sizeof *styles);
- styles[nstyles].name = cstrdup(b);
- styles[nstyles].bold = 0;
- styles[nstyles].italic = 0;
- styles[nstyles].underline = 0;
- tree(h->child, s);
- nstyles++;
- tree(h->next, s);
-}
-
-static void tag_table_table(hnode *h, hstate *s)
-{
- char b[1024], *p;
- p = get_value("TABLE:NAME", h->text, b);
- if (p) printf("<h1>%s</h1>\n", p);
- printf("<table>\n");
- tree(h->child, s);
- printf("</table>\n");
- tree(h->next, s);
-}
-
-static void tag_table_cell(hnode *h, hstate *s)
-{
- printf("<td>");
- tree(h->child, s);
- printf("</td>");
- tree(h->next, s);
-}
-
-static void tag_table_row(hnode *h, hstate *s)
-{
- printf("<tr>");
- tree(h->child, s);
- printf("</tr>");
- tree(h->next, s);
-}
-
-static void tag_text_a(hnode *h, hstate *s)
-{
- char b[1024], *p;
-
- p = get_value("XLINK:HREF", h->text, b);
- if (p) printf("<a href=\"%s\">", p);
- tree(h->child, s);
- if (p) printf("</a>");
- tree(h->next, s);
-}
-
-/* Heading */
-static void tag_text_h(hnode *h, hstate *s)
-{
- char b[1024], *p;
- int level = 1;
-
- newline(s);
-
- p = get_value("TEXT:LEVEL", h->text, b);
- if (p) {
- level = atoi(p);
- }
- if (level < 1) level = 1;
- if (level > 6) level = 6;
- printf("<h%d>", level);
- tree(h->child, s);
- printf("</h%d>\n", level);
- tree(h->next, s);
-}
-
-static void tag_text_list_item(hnode *h, hstate *s)
-{
- printf("<li>");
- tree(h->child, s);
- tree(h->next, s);
-}
-
-static void tag_text_ordered_list(hnode *h, hstate *s)
-{
- printf("<ol>\n");
- tree(h->child, s);
- printf("</ol>\n");
- tree(h->next, s);
-}
-
-/* Paragraph break */
-static void tag_text_p(hnode *h, hstate *s)
-{
- char b[1024], *p, *t = "p";
-
- newline(s);
-
- p = get_value("TEXT:STYLE-NAME", h->text, b);
- if (p) {
- if (!strcmp(p, "Heading")) t = "h1";
- }
- printf("<%s>", t);
- tree(h->child, s);
- printf("</%s>\n", t);
- tree(h->next, s);
-}
-
-static void tag_text_s(hnode *h, hstate *s)
-{
- printf(" "); /* what do I know */
- tree(h->child, s);
- tree(h->next, s);
-}
-
-static void tag_text_span(hnode *h, hstate *s)
-{
- int i;
- char b[1024], *p = get_value("TEXT:STYLE-NAME", h->text, b);
- if (p == NULL) p = "xxx";
- for (i = 0; i < nstyles; i++) if (!strcmp(p, styles[i].name)) break;
- if (i < nstyles) {
- if (styles[i].bold) printf("<b>");
- if (styles[i].italic) printf("<i>");
- if (styles[i].underline) printf("<u>");
- }
- tree(h->child, s);
- if (i < nstyles) {
- if (styles[i].underline) printf("</u>");
- if (styles[i].italic) printf("</i>");
- if (styles[i].bold) printf("</b>");
- }
- tree(h->next, s);
-}
-
-static void tag_text_tab_stop(hnode *h, hstate *s)
-{
- printf(" "); /* for lack of better */
- tree(h->child, s);
- tree(h->next, s);
-}
-
-static void tag_text_unordered_list(hnode *h, hstate *s)
-{
- printf("<ul>\n");
- tree(h->child, s);
- printf("</ul>\n");
- tree(h->next, s);
-}
-
-/* Handles tags we don't have handlers for. Ignore the tag, do children */
-static void tag_unknown(hnode *h, hstate *s)
-{
- /* ignore the tag */
- tree(h->child, s);
- tree(h->next, s);
-}
-
-/* Copy text onto screen. Treats whitespace differently if this
- is "preformatted".
-*/
-static void text(hnode *h, hstate *s)
-{
- int i;
- for (i = 0; h->text[i]; i++) {
- switch (h->text[i]) {
- case '<':
- printf("&lt;");
- break;
- case '>':
- printf("&gt;");
- break;
- default:
- putchar(h->text[i]);
- }
- }
- /* can't have children */
- tree(h->next, s);
-}
-
-static int nextc(void *closure)
-{
- FILE *fp = closure;
- int c = getc(fp);
- if (c == EOF) return '\0';
- return c;
-}
-
-static void usage(void)
-{
- printf("usage: lmb url\n");
- exit(0);
-}
-
-int main(int argc, char **argv)
-{
- hnode *h;
- hstate *s;
-
- href = 0;
- hrefs = NULL;
-
- h = parse_html(nextc, stdin);
- if (h == NULL) usage();
-
- s = new_hstate();
- printf("<html><head><title>HTML by o3tohtml</title></head><body>\n");
- tree(h, s);
- newline(s);
- printf("</body></html>\n");
-
- free_html(h);
- free_hstate(s);
- return 0;
-}
-
diff --git a/src/text-filters/ooo_converter/o3totxt.1 b/src/text-filters/ooo_converter/o3totxt.1
deleted file mode 100644
index 362334a8c..000000000
--- a/src/text-filters/ooo_converter/o3totxt.1
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/o3read.1
diff --git a/src/text-filters/ooo_converter/o3totxt.c b/src/text-filters/ooo_converter/o3totxt.c
deleted file mode 100644
index 51bf74361..000000000
--- a/src/text-filters/ooo_converter/o3totxt.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- Copyright (C) 2002 Ulric Eriksson <ulric@siag.nu>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "o3read.h"
-
-enum {LIST_NONE=0, LIST_UL, LIST_OL, LIST_DL};
-
-typedef struct hstate {
- int pre; /* preformatted, default 0 = false */
- int list; /* list mode, default LIST_NONE */
- int ll; /* list level, starts with 1 */
- int indent; /* indentation level, default 0 */
-} hstate;
-
-static int href; /* links, default 0 */
-static char **hrefs;
-
-static void tag_text_p(hnode *, hstate *);
-static void tag_unknown(hnode *, hstate *);
-static void text(hnode *, hstate *);
-
-static struct {
- char *name;
- void (*action)(hnode *, hstate *);
-} tag[] = {
- {"TEXT:P", tag_text_p},
- {NULL, tag_unknown}
-};
-
-static hstate *new_hstate(void)
-{
- hstate *s = cmalloc(sizeof *s);
- s->pre = 0;
- s->indent = 0;
- s->list = LIST_NONE;
- s->ll = 0;
- return s;
-}
-
-static void free_hstate(hstate *s)
-{
- free(s);
-}
-
-static void newline(hstate *s)
-{
- int i;
-
- putchar('\n');
- for (i = 0; i < s->indent; i++)
- putchar(' ');
-}
-
-static void tree(hnode *h, hstate *s)
-{
- void (*action)(hnode *, hstate *);
- int i;
-
- if (h == NULL) return;
- if (h->tag == NULL) {
- text(h, s);
- } else {
- for (i = 0; tag[i].name; i++) {
- if (!strcmp(tag[i].name, h->tag)) break;
- }
- action = tag[i].action;
- (*action)(h, s);
- }
-}
-
-/* tag handlers are in alphabetical order so I can find them... */
-
-/* Paragraph break */
-static void tag_text_p(hnode *h, hstate *s)
-{
- newline(s);
- tree(h->child, s);
- tree(h->next, s);
-}
-
-/* Handles tags we don't have handlers for. Ignore the tag, do children */
-static void tag_unknown(hnode *h, hstate *s)
-{
- /* ignore the tag */
- tree(h->child, s);
- tree(h->next, s);
-}
-
-/* Copy text onto screen. Treats whitespace differently if this
- is "preformatted".
-*/
-static void text(hnode *h, hstate *s)
-{
- int i;
- for (i = 0; h->text[i]; i++) {
- putchar(h->text[i]);
- }
- /* can't have children */
- tree(h->next, s);
-}
-
-static int nextc(void *closure)
-{
- FILE *fp = closure;
- int c = getc(fp);
- if (c == EOF) return '\0';
- return c;
-}
-
-static void usage(void)
-{
- printf("usage: lmb url\n");
- exit(0);
-}
-
-int main(int argc, char **argv)
-{
- hnode *h;
- hstate *s;
-
- href = 0;
- hrefs = NULL;
-
- h = parse_html(nextc, stdin);
- if (h == NULL) usage();
-
- s = new_hstate();
- tree(h, s);
- newline(s);
-
- free_html(h);
- free_hstate(s);
- return 0;
-}
-
diff --git a/src/text-filters/ooo_converter/readme b/src/text-filters/ooo_converter/readme
deleted file mode 100644
index 06838797b..000000000
--- a/src/text-filters/ooo_converter/readme
+++ /dev/null
@@ -1,15 +0,0 @@
-
-This is a standalone converter for the OpenOffice.org swriter (.sxw)
-and scalc (.sxc) formats. It doesn't depend on Open Office or any
-other external tools or libraries.
-
-Example: unzip -p filformat.sxw content.xml | o3read | utf8tolatin1
-
-There are three output modules:
-
- - o3read displays a dump of the parse tree
- - o3totxt creates plain text
- - o3tohtml creates html code
-
-The utility utftolatin1 converts from utf8 to 8859-1.
-
diff --git a/src/text-filters/ooo_converter/todo b/src/text-filters/ooo_converter/todo
deleted file mode 100644
index d5a800719..000000000
--- a/src/text-filters/ooo_converter/todo
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Write a small program that can load the entire document including
-all style and meta information and dump out the result.
-
-Once that works, make it create a sxw file from its internal representation.
diff --git a/src/text-filters/ooo_converter/utf8tolatin1.1 b/src/text-filters/ooo_converter/utf8tolatin1.1
deleted file mode 100644
index f6de08353..000000000
--- a/src/text-filters/ooo_converter/utf8tolatin1.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH UTF8TOLATIN1 1 LOCAL
-
-.SH NAME
-utf8tolatin1
-
-.SH SYNOPSIS
-.B utf8tolatin1
-< infile > outfile
-
-.SH DESCRIPTION
-.I Utf8tolatin1
-reads utf-8 encoded text on stdin and writes latin1 (iso8859-1) encoded
-text on stdout.
-
-.SH AUTHOR
-Copyright (C) 2002 Ulric Eriksson
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.
-
diff --git a/src/text-filters/ooo_converter/utf8tolatin1.c b/src/text-filters/ooo_converter/utf8tolatin1.c
deleted file mode 100644
index c0f98972e..000000000
--- a/src/text-filters/ooo_converter/utf8tolatin1.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- Copyright (C) 2002 Ulric Eriksson <ulric@siag.nu>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
- */
-
-#include <stdio.h>
-
-int main(void)
-{
- unsigned long ucs4;
- int c, state, octets;
-
- ucs4 = 0;
- state = 0;
- octets = 0;
-
- while ((c = getchar()) != EOF) {
- switch (state) {
- case 0: /* start of utf8 char */
- ucs4 = 0; /* reset ucs4 char */
- if ((c & 0xfe) == 0xfc) { /* 6 octets */
- ucs4 = (c & 0x01) << 30;
- octets = 6;
- state = 5; /* look for 5 more */
- } else if ((c & 0xfc) == 0xf8) { /* 5 octets */
- ucs4 = (c & 0x03) << 24;
- octets = 5;
- state = 4;
- } else if ((c & 0xf8) == 0xf0) { /* 4 octets */
- ucs4 = (c & 0x07) << 18;
- octets = 4;
- state = 3;
- } else if ((c & 0xf0) == 0xe0) { /* 3 octets */
- ucs4 = (c & 0x0f) << 12;
- octets = 3;
- state = 2;
- } else if ((c & 0xe0) == 0xc0) { /* 2 octets */
- ucs4 = (c & 0x1f) << 6;
- octets = 2;
- state = 1; /* look for 1 more */
- } else if ((c & 0x80) == 0x00) { /* 1 octet */
- ucs4 = (c & 0x7f);
- octets = 1;
- state = 0; /* we have a result */
- } else { /* error */
- ;
- }
- break;
- case 1:
- if ((c & 0xc0) == 0x80) {
- ucs4 = ucs4 | (c & 0x3f);
- if (ucs4 < 0x80 || ucs4 > 0x7ff) {
- ucs4 = 0xffffffff;
- }
- } else {
- ucs4 = 0xffffffff;
- }
- state = 0; /* we're done and have a result */
- break;
- case 2:
- if ((c & 0xc0) == 0x80) {
- ucs4 = ucs4 | ((c & 0x3f) << 6);
- state = 1;
- } else {
- ucs4 = 0xffffffff;
- state = 0;
- }
- break;
- case 3:
- if ((c & 0xc0) == 0x80) {
- ucs4 = ucs4 | ((c & 0x3f) << 12);
- state = 2;
- } else {
- ucs4 = 0xffffffff;
- state = 0;
- }
- break;
- case 4:
- if ((c & 0xc0) == 0x80) {
- ucs4 = ucs4 | ((c & 0x3f) << 18);
- state = 3;
- } else {
- ucs4 = 0xffffffff;
- state = 0;
- }
- break;
- case 5:
- if ((c & 0xc0) == 0x80) {
- ucs4 = ucs4 | ((c & 0x3f) << 24);
- state = 4;
- } else {
- ucs4 = 0xffffffff;
- state = 0;
- }
- break;
- default: /* error, can't happen */
- ucs4 = 0xffffffff;
- state = 0;
- break;
- }
- if (state == 0) {
- switch (octets) {
- case 1:
- if (ucs4 < 0x0 || ucs4 > 0x7f)
- ucs4 = 0xffffffff;
- break;
- case 2:
- if (ucs4 < 0x80 || ucs4 > 0x7ff)
- ucs4 = 0xffffffff;
- break;
- case 3:
- if (ucs4 < 0x800 || ucs4 > 0xffff)
- ucs4 = 0xffffffff;
- break;
- case 4:
- if (ucs4 < 0x10000 || ucs4 > 0x1fffff)
- ucs4 = 0xffffffff;
- break;
- case 5:
- if (ucs4 < 0x200000 || ucs4 > 0x3ffffff)
- ucs4 = 0xffffffff;
- break;
- case 6:
- if (ucs4 < 0x4000000 || ucs4 > 0x7fffffff)
- ucs4 = 0xffffffff;
- break;
- default:
- ucs4 = 0xffffffff;
- break;
- }
- if (ucs4 != 0xffffffff) {
- printf("%c", (int)ucs4);
- }
- }
- }
- return 0;
-}
-
diff --git a/src/text-filters/ooo_converter/xMakefile b/src/text-filters/ooo_converter/xMakefile
deleted file mode 100644
index 7d5be7c5c..000000000
--- a/src/text-filters/ooo_converter/xMakefile
+++ /dev/null
@@ -1,86 +0,0 @@
-
-PACKAGE = o3read
-VERSION = 0.0.4
-
-CC = gcc
-CFLAGS = -Wall -ansi -pedantic -O -g
-PREFIX = /usr/local
-BINDIR = $(PREFIX)/bin
-MANDIR = $(PREFIX)/man/man1
-DOCS = COPYING INSTALL README TODO ChangeLog filformat.sxw
-BINS = o3read o3totxt o3tohtml utf8tolatin1
-SRCS = o3read.h main.c o3read.c o3totxt.c o3tohtml.c utf8tolatin1.c
-MANS = o3read.1 o3tohtml.1 o3totxt.1 utf8tolatin1.1
-ARCH=`uname -s`-`uname -m`
-BINDISTDIR=/usr/local
-
-all: $(BINS)
-
-utf8tolatin1: utf8tolatin1.o
- $(CC) -o utf8tolatin1 utf8tolatin1.o
-
-o3totxt: o3totxt.o o3read.o
- $(CC) -o o3totxt o3totxt.o o3read.o
-
-o3tohtml: o3tohtml.o o3read.o
- $(CC) -o o3tohtml o3tohtml.o o3read.o
-
-o3tosiag: o3tosiag.o o3read.o
- $(CC) -o o3tosiag o3tosiag.o o3read.o
-
-o3read: main.o o3read.o
- $(CC) -o o3read main.o o3read.o
-
-dist:
- rm -rf $(PACKAGE)-$(VERSION)
- mkdir $(PACKAGE)-$(VERSION)
- cp Makefile $(DOCS) $(MANS) $(SRCS) $(PACKAGE)-$(VERSION)
- tar cf - $(PACKAGE)-$(VERSION) | gzip > $(PACKAGE)-$(VERSION).tar.gz
- rm -rf $(PACKAGE)-$(VERSION)
-
-strip: $(BINS)
- strip $(BINS)
-
-install: $(BINS)
- mkdir -p $(BINDIR) $(MANDIR)
- cp $(BINS) $(BINDIR)
- cp $(MANS) $(MANDIR)
-
-uninstall:
- cd $(BINDIR) && rm -f $(BINS)
- cd $(MANDIR) && rm -f $(MANS)
-
-clean:
- rm -f *.o $(BINS) *~
-
-nstest:
- unzip -p filformat.sxw content.xml|./o3tohtml|./utf8tolatin1>x.html
- netscape ./x.html
-
-lytest:
- unzip -p filformat.sxw content.xml|./o3tohtml|./utf8tolatin1>x.html
- lynx ./x.html
-
-binaries:
- rm -rf tmpinst
- make clean strip install PREFIX=`cd . && pwd`/tmpinst$(BINDISTDIR)
- (cd tmpinst && tar cf - .) | gzip > $(PACKAGE)-$(ARCH)-$(VERSION).tar.gz
- rm -rf tmpinst
-
-tgz:
- rm -rf tmpinst
- make clean strip install PREFIX=`cd . && pwd`/tmpinst$(BINDISTDIR)
- cd tmpinst && makepkg ../$(PACKAGE)-$(ARCH)-$(VERSION).tgz
-
-tgz2: binaries
- rm -rf builddir
- mkdir -p builddir
- mkdir builddir/install
- cp doinst.sh builddir/install
- (cd builddir; \
- tar zxf ../$(PACKAGE)-$(ARCH)-$(VERSION).tar.gz; \
- tar zcf ../$(PACKAGE)-$(ARCH)-$(VERSION).tgz)
- rm -rf builddir
-
-rpm: tgz
- alien -r $(PACKAGE)-$(ARCH)-$(VERSION).tgz
diff --git a/src/tracker-applet/Makefile.am b/src/tracker-applet/Makefile.am
deleted file mode 100644
index 44e82fe0c..000000000
--- a/src/tracker-applet/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-
-@INTLTOOL_DESKTOP_RULE@
-
-autostartdir = $(sysconfdir)/xdg/autostart
-autostart_in_files = tracker-applet.desktop.in
-autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
-
-pkgdata_DATA = tracker-applet-prefs.glade
-
-icondir = $(datadir)/tracker/icons
-
-INCLUDES = \
- -DTRACKER_LOCALEDIR=\""$(localedir)"\" \
- -DTRACKER_DATADIR=\""$(datadir)"\" \
- -I$(top_srcdir)/src/libtracker \
- $(LIBGLADE_CFLAGS) \
- $(TRACKERAPPLET_CFLAGS)
-
-bin_PROGRAMS = tracker-applet
-
-tracker_applet_LDADD = \
- $(top_builddir)/src/libtracker/libtrackerclient.la \
- $(LIBGLADE_LIBS) \
- $(TRACKERAPPLET_LIBS)
-
-tracker_applet_SOURCES = \
- tracker-applet.c \
- tracker-applet.h \
- tracker-applet-marshallers.c \
- tracker-applet-marshallers.h
-
-icon_DATA = \
- tracker-applet-default.png \
- tracker-applet-indexing1.png \
- tracker-applet-indexing2.png \
- tracker-applet-paused.png
-
-EXTRA_DIST = $(icon_DATA) $(pkgdata_DATA)
-
-CLEANFILES = $(autostart_DATA)
diff --git a/src/tracker-applet/tracker-applet-default.png b/src/tracker-applet/tracker-applet-default.png
deleted file mode 100644
index 9a121f3c9..000000000
--- a/src/tracker-applet/tracker-applet-default.png
+++ /dev/null
Binary files differ
diff --git a/src/tracker-applet/tracker-applet-indexing1.png b/src/tracker-applet/tracker-applet-indexing1.png
deleted file mode 100644
index 587a70058..000000000
--- a/src/tracker-applet/tracker-applet-indexing1.png
+++ /dev/null
Binary files differ
diff --git a/src/tracker-applet/tracker-applet-indexing2.png b/src/tracker-applet/tracker-applet-indexing2.png
deleted file mode 100644
index d1934175c..000000000
--- a/src/tracker-applet/tracker-applet-indexing2.png
+++ /dev/null
Binary files differ
diff --git a/src/tracker-applet/tracker-applet-marshallers.c b/src/tracker-applet/tracker-applet-marshallers.c
deleted file mode 100644
index ce34dfc01..000000000
--- a/src/tracker-applet/tracker-applet-marshallers.c
+++ /dev/null
@@ -1,141 +0,0 @@
-
-#include <glib-object.h>
-
-
-#ifdef G_ENABLE_DEBUG
-#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v) g_value_get_char (v)
-#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
-#define g_marshal_value_peek_int(v) g_value_get_int (v)
-#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
-#define g_marshal_value_peek_long(v) g_value_get_long (v)
-#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
-#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
-#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
-#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
-#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
-#define g_marshal_value_peek_float(v) g_value_get_float (v)
-#define g_marshal_value_peek_double(v) g_value_get_double (v)
-#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
-#define g_marshal_value_peek_param(v) g_value_get_param (v)
-#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
-#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
-#define g_marshal_value_peek_object(v) g_value_get_object (v)
-#else /* !G_ENABLE_DEBUG */
-/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
- * Do not access GValues directly in your code. Instead, use the
- * g_value_get_*() functions
- */
-#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
-#define g_marshal_value_peek_char(v) (v)->data[0].v_int
-#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
-#define g_marshal_value_peek_int(v) (v)->data[0].v_int
-#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
-#define g_marshal_value_peek_long(v) (v)->data[0].v_long
-#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
-#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
-#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
-#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
-#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
-#define g_marshal_value_peek_float(v) (v)->data[0].v_float
-#define g_marshal_value_peek_double(v) (v)->data[0].v_double
-#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
-#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
-#endif /* !G_ENABLE_DEBUG */
-
-
-/* VOID:STRING,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN (/dev/stdin:1) */
-void
-tracker_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef void (*GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN) (gpointer data1,
- gpointer arg_1,
- gboolean arg_2,
- gboolean arg_3,
- gboolean arg_4,
- gboolean arg_5,
- gboolean arg_6,
- gboolean arg_7,
- gpointer data2);
- register GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
-
- g_return_if_fail (n_param_values == 8);
-
- if (G_CCLOSURE_SWAP_DATA (closure))
- {
- data1 = closure->data;
- data2 = g_value_peek_pointer (param_values + 0);
- }
- else
- {
- data1 = g_value_peek_pointer (param_values + 0);
- data2 = closure->data;
- }
- callback = (GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
-
- callback (data1,
- g_marshal_value_peek_string (param_values + 1),
- g_marshal_value_peek_boolean (param_values + 2),
- g_marshal_value_peek_boolean (param_values + 3),
- g_marshal_value_peek_boolean (param_values + 4),
- g_marshal_value_peek_boolean (param_values + 5),
- g_marshal_value_peek_boolean (param_values + 6),
- g_marshal_value_peek_boolean (param_values + 7),
- data2);
-}
-
-/* VOID:INT (/dev/stdin:2) */
-
-/* VOID:STRING,STRING,INT,INT,INT (/dev/stdin:3) */
-void
-tracker_VOID__STRING_STRING_INT_INT_INT (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef void (*GMarshalFunc_VOID__STRING_STRING_INT_INT_INT) (gpointer data1,
- gpointer arg_1,
- gpointer arg_2,
- gint arg_3,
- gint arg_4,
- gint arg_5,
- gpointer data2);
- register GMarshalFunc_VOID__STRING_STRING_INT_INT_INT callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
-
- g_return_if_fail (n_param_values == 6);
-
- if (G_CCLOSURE_SWAP_DATA (closure))
- {
- data1 = closure->data;
- data2 = g_value_peek_pointer (param_values + 0);
- }
- else
- {
- data1 = g_value_peek_pointer (param_values + 0);
- data2 = closure->data;
- }
- callback = (GMarshalFunc_VOID__STRING_STRING_INT_INT_INT) (marshal_data ? marshal_data : cc->callback);
-
- callback (data1,
- g_marshal_value_peek_string (param_values + 1),
- g_marshal_value_peek_string (param_values + 2),
- g_marshal_value_peek_int (param_values + 3),
- g_marshal_value_peek_int (param_values + 4),
- g_marshal_value_peek_int (param_values + 5),
- data2);
-}
-
diff --git a/src/tracker-applet/tracker-applet-marshallers.h b/src/tracker-applet/tracker-applet-marshallers.h
deleted file mode 100644
index 7bbb75a25..000000000
--- a/src/tracker-applet/tracker-applet-marshallers.h
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef __tracker_MARSHAL_H__
-#define __tracker_MARSHAL_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-/* VOID:STRING,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN,BOOLEAN (/dev/stdin:1) */
-extern void tracker_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
-
-/* VOID:INT (/dev/stdin:2) */
-#define tracker_VOID__INT g_cclosure_marshal_VOID__INT
-
-/* VOID:STRING,STRING,INT,INT,INT (/dev/stdin:3) */
-extern void tracker_VOID__STRING_STRING_INT_INT_INT (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
-
-G_END_DECLS
-
-#endif /* __tracker_MARSHAL_H__ */
-
diff --git a/src/tracker-applet/tracker-applet-paused.png b/src/tracker-applet/tracker-applet-paused.png
deleted file mode 100644
index 5dcb5457d..000000000
--- a/src/tracker-applet/tracker-applet-paused.png
+++ /dev/null
Binary files differ
diff --git a/src/tracker-applet/tracker-applet-prefs.glade b/src/tracker-applet/tracker-applet-prefs.glade
deleted file mode 100644
index f5a7b73bc..000000000
--- a/src/tracker-applet/tracker-applet-prefs.glade
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.0 on Sun Mar 2 22:41:46 2008 -->
-<glade-interface>
- <widget class="GtkWindow" id="wnd_prefs">
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="title" translatable="yes">Applet Preferences</property>
- <property name="resizable">False</property>
- <property name="modal">True</property>
- <property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
- <property name="destroy_with_parent">True</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="skip_taskbar_hint">True</property>
- <property name="skip_pager_hint">True</property>
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">8</property>
- <child>
- <widget class="GtkVBox" id="vbox24">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">19</property>
- <child>
- <widget class="GtkFrame" id="fraThrottling2">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment8">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox25">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chk_animate">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">Animate _icon when indexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="chk_animate_toggled_cb" object="icon"/>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="lblAnimation">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Animation&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame6">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment11">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox27">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chk_show_icon">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Hide Icon (except when displaying messages to user)</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="chk_show_icon_toggled_cb" object="icon"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label40">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Visibility&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame4">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment10">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox26">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkRadioButton" id="opt_pause_off">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Off</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="group_changed" handler="opt_pause_off_group_changed_cb" object="icon"/>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkRadioButton" id="opt_pause_index">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Automatically pause all indexing when computer is in active use</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">opt_pause_off</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkRadioButton" id="opt_pause_merge">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Automatically _pause if indexing may degrade performance of other applications in active use</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">opt_pause_off</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label39">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Smart Pausing&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="padding">6</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHButtonBox" id="hbuttonbox1">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">4</property>
- <property name="homogeneous">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <widget class="GtkButton" id="btn_close">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label">gtk-close</property>
- <property name="use_stock">True</property>
- <property name="response_id">1</property>
- <signal name="clicked" handler="on_btn_close_clicked"/>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">6</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
-</glade-interface>
diff --git a/src/tracker-applet/tracker-applet.c b/src/tracker-applet/tracker-applet.c
deleted file mode 100644
index ccec30d66..000000000
--- a/src/tracker-applet/tracker-applet.c
+++ /dev/null
@@ -1,2048 +0,0 @@
-/* Tracker Applet - tray icon for the tracker indexing daemon
- *
- * Copyright (C) 2007, Saleem Abdulrasool <compnerd@gentoo.org>
- * Copyright (C) 2007, Jamie McCracken <jamiemcc@blueyonder.co.uk>
- *
- * Portions derived from xscreensaver and gnome-screensaver
- * Copyright (c) 1991-2004 Jamie Zawinski <jwz@jwz.org>
- * Copyright (C) 2004-2006 William Jon McCann <mccann@jhu.edu>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <time.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <X11/X.h>
-#include <gdk/gdkx.h>
-#include <gdk/gdkkeysyms.h>
-
-#include <gtk/gtk.h>
-
-#include <libnotify/notify.h>
-
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-bindings.h>
-
-#include <glade/glade.h>
-
-#include "tracker-applet.h"
-#include "tracker.h"
-#include "tracker-applet-marshallers.h"
-
-#define PROGRAM "tracker-applet"
-#define PROGRAM_NAME N_("Tracker Applet")
-
-#define HOMEPAGE "http://www.tracker-project.org/"
-#define DESCRIPTION "An applet for tracker"
-
-#define DBUS_SERVICE_TRACKER "org.freedesktop.Tracker"
-#define DBUS_PATH_TRACKER "/org/freedesktop/tracker"
-#define DBUS_INTERFACE_TRACKER "org.freedesktop.Tracker"
-
-#define TRAY_ICON_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), TYPE_TRAY_ICON, TrayIconPrivate))
-
-#define TRACKER_ICON "tracker-applet-default.png"
-#define TRACKER_ICON_PAUSED "tracker-applet-paused.png"
-#define TRACKER_ICON_INDEX1 "tracker-applet-indexing1.png"
-#define TRACKER_ICON_INDEX2 "tracker-applet-indexing2.png"
-
-
-typedef enum {
- ICON_DEFAULT,
- ICON_PAUSED,
- ICON_INDEX1,
- ICON_INDEX2,
-} IndexIcon;
-
-typedef enum {
- INDEX_IDLE,
- INDEX_BUSY,
- INDEX_MERGING
-} IndexStateEnum;
-
-
-typedef enum {
- PAUSE_NONE,
- PAUSE_INTERNAL,
- PAUSE_BATTERY
-} PauseStateEnum;
-
-
-typedef enum {
- AUTO_PAUSE_NONE,
- AUTO_PAUSE_INDEXING,
- AUTO_PAUSE_MERGING
-} AutoPauseEnum;
-
-
-static char *index_icons[4] =
-{
- TRACKER_ICON,
- TRACKER_ICON_PAUSED,
- TRACKER_ICON_INDEX1,
- TRACKER_ICON_INDEX2
-};
-
-
-typedef struct _TrayIconPrivate {
- GtkStatusIcon *icon;
- GKeyFile *keyfile;
- char *filename;
-
- /* settings */
- gboolean auto_hide;
- gboolean disabled;
- gboolean show_animation;
- gboolean reindex;
- AutoPauseEnum auto_pause_setting;
-
-
-
- /* auto pause vars */
- gboolean auto_pause_timer_active;
- time_t auto_pause_last_time_event;
-
- gboolean user_pause;
- gboolean auto_pause;
-
- /* states */
- IndexStateEnum index_state;
- PauseStateEnum pause_state;
- IndexIcon index_icon;
- gboolean animated;
- gboolean animated_timer_active;
- gboolean is_watching_events;
- gboolean email_indexing;
- gboolean indexer_stopped;
-
- /* status hints */
- int folders_indexed;
- int folders_total;
-
- /* main window */
- GtkMenu *menu;
-
- gboolean initial_index_msg_shown;
-
- /* tracker connection */
- TrackerClient *tracker;
-
- /* stats window table shown */
- gboolean stat_window_active;
- gboolean stat_request_pending;
-
- /* prefs window */
- GtkWidget *prefs_window;
- GtkWidget *chk_animate;
- GtkWidget *chk_show_icon;
- GtkWidget *opt_pause_off;
- GtkWidget *opt_pause_index;
- GtkWidget *opt_pause_merge;
- GtkWidget *btn_close;
-
-} TrayIconPrivate;
-
-static TrayIcon *main_icon;
-
-/* translatable strings */
-
-
-
-static char *initial_index_1;
-static char *initial_index_2;
-
-static char *end_index_initial_msg;
-static char *end_index_hours_msg;
-static char *end_index_minutes_msg;
-static char *end_index_seconds_msg;
-static char *end_index_final_msg;
-
-typedef struct {
- char *name;
- char *label;
- GtkWidget *stat_label;
-} Stat_Info;
-
-static Stat_Info stat_info[13] = {
-
- {"Files", NULL, NULL},
- {"Folders", NULL, NULL},
- {"Documents", NULL, NULL},
- {"Images", NULL, NULL},
- {"Music", NULL, NULL},
- {"Videos", NULL, NULL},
- {"Text", NULL, NULL},
- {"Development", NULL, NULL},
- {"Other", NULL, NULL},
- {"Applications", NULL, NULL},
- {"Conversations", NULL, NULL},
- {"Emails", NULL, NULL},
- {NULL, NULL, NULL},
-};
-
-
-static gboolean
-query_pointer_timeout (Window window)
-{
- Window root;
- Window child;
- int root_x;
- int root_y;
- int win_x;
- int win_y;
- unsigned int mask;
-
- gdk_error_trap_push ();
- XQueryPointer (GDK_DISPLAY (),
- window,
- &root, &child, &root_x, &root_y, &win_x, &win_y,
- &mask);
- gdk_display_sync (gdk_display_get_default ());
- gdk_error_trap_pop ();
-
- return FALSE;
-}
-
-static void
-set_status_hint (TrayIcon * icon)
-{
- /* Tracker : indexing 10/120 folders */
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- const char *status;
- GString *hint;
-
- /* Translators: this will appear like "Tracker : Idle" */
- hint = g_string_new (_("Tracker : "));
-
- switch (priv->index_state) {
-
- case INDEX_IDLE:
- status = _("Idle");
- break;
-
- case INDEX_BUSY:
- status = _("Indexing");
- break;
-
- case INDEX_MERGING:
- status = _("Merging");
- break;
-
- }
-
-
- g_string_append (hint, status);
-
-
- if (priv->user_pause) {
- status = _(" (paused by user)");
- } else if (priv->auto_pause) {
- status = _(" (paused by system)");
-
- } else {
-
- switch (priv->pause_state) {
-
- case PAUSE_NONE:
- status = g_strdup ("");
- break;
-
- case PAUSE_INTERNAL:
- status = _(" (paused by system)");
- break;
-
- case PAUSE_BATTERY:
- status = _(" (paused by battery)");
- break;
-
- }
- }
-
- g_string_append (hint, status);
-
-
-
- if (priv->index_state == INDEX_BUSY) {
-
- if (!priv->email_indexing) {
- status = _("folders");
- } else {
- status = _("mailboxes");
- }
-
- g_string_append_printf (hint, " %d/%d %s",
- priv->folders_indexed,
- priv->folders_total, status);
-
- }
-
-
- if (priv->index_state == INDEX_MERGING) {
- g_string_append_printf (hint, " %d/%d indexes being merged",
- priv->folders_indexed,
- priv->folders_total);
- }
-
- tray_icon_set_tooltip (icon, hint->str);
-
- g_string_free (hint, TRUE);
-
-}
-
-static gboolean
-can_auto_pause (TrayIcon * icon)
-{
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (priv->user_pause || priv->pause_state == PAUSE_BATTERY
- || priv->disabled || priv->indexer_stopped)
- return FALSE;
-
-
- switch (priv->auto_pause_setting) {
-
- case AUTO_PAUSE_NONE:
- return FALSE;
-
- case AUTO_PAUSE_INDEXING:
- return (priv->index_state != INDEX_IDLE);
-
- case AUTO_PAUSE_MERGING:
- return (priv->index_state == INDEX_MERGING);
-
- }
-
- return TRUE;
-
-}
-
-static void
-set_tracker_icon (TrayIconPrivate * priv)
-{
- char *path;
- const char *name;
-
- name = index_icons[priv->index_icon];
-
- path = g_build_filename (TRACKER_DATADIR "/tracker/icons", name,
- NULL);
-
- if (g_file_test (path, G_FILE_TEST_EXISTS)) {
- gtk_status_icon_set_from_file (priv->icon, path);
- }
-
- g_free (path);
-
-}
-
-static gboolean
-set_icon (TrayIconPrivate * priv)
-{
-
- if (!priv->user_pause) {
-
- if (priv->index_state == INDEX_IDLE) {
-
- priv->animated = FALSE;
- priv->animated_timer_active = FALSE;
-
- if (priv->index_icon != ICON_DEFAULT) {
- priv->index_icon = ICON_DEFAULT;
- set_tracker_icon (priv);
- }
-
- return FALSE;
- }
-
- }
-
-
- if (priv->user_pause || priv->auto_pause
- || priv->pause_state != PAUSE_NONE) {
-
-
- if (priv->index_icon != ICON_PAUSED) {
- priv->index_icon = ICON_PAUSED;
- set_tracker_icon (priv);
- }
-
- priv->animated = FALSE;
- priv->animated_timer_active = FALSE;
- return FALSE;
-
- }
-
- if (priv->index_state != INDEX_IDLE) {
-
- if (priv->index_icon == ICON_INDEX2 || !priv->show_animation) {
- priv->index_icon = ICON_DEFAULT;
- } else if (priv->index_icon != ICON_INDEX1) {
- priv->index_icon = ICON_INDEX1;
- } else {
- priv->index_icon = ICON_INDEX2;
- }
-
- set_tracker_icon (priv);
-
- return TRUE;
- }
-
-
-
- return FALSE;
-
-}
-
-static gboolean
-auto_pause_timeout (TrayIcon * icon);
-
-static void
-set_auto_pause (TrayIcon * icon, gboolean pause)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
- GError *error = NULL;
-
- /* do not pause/unpause if in user pause */
- if (priv->user_pause) {
- priv->auto_pause_timer_active = FALSE;
- priv->auto_pause = FALSE;
- return;
- }
-
- priv->auto_pause = pause;
-
- if (pause) {
-
- priv->auto_pause_last_time_event = time (NULL);
-
- if (!priv->auto_pause_timer_active) {
-
- g_timeout_add_seconds (2,
- (GSourceFunc)
- auto_pause_timeout, icon);
-
- priv->auto_pause_timer_active = TRUE;
-
- tracker_set_bool_option (priv->tracker, "Pause", TRUE,
- &error);
-
- }
-
- priv->animated = FALSE;
-
-
- } else {
-
- priv->auto_pause_timer_active = FALSE;
- priv->auto_pause = FALSE;
-
- tracker_set_bool_option (priv->tracker, "Pause", FALSE,
- &error);
-
-
- }
-
- set_icon (priv);
-
-}
-
-static gboolean
-auto_pause_timeout (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- time_t t = time (NULL);
-
- if (priv->indexer_stopped)
- return FALSE;
-
- if ((t >= (priv->auto_pause_last_time_event + 2))) {
- set_auto_pause (icon, FALSE);
- return FALSE;
- }
-
- dbus_g_proxy_begin_call (priv->tracker->proxy, "PromptIndexSignals",
- NULL, NULL, NULL, G_TYPE_INVALID);
-
- return TRUE;
-}
-
-static void
-start_auto_pause_timer (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (!can_auto_pause (icon))
- return;
-
- priv->auto_pause_last_time_event = time (NULL);
-
- if (!priv->auto_pause_timer_active) {
- g_timeout_add_seconds (2, (GSourceFunc) auto_pause_timeout,
- icon);
- set_auto_pause (icon, TRUE);
-
- }
-
-}
-
-static void
-set_user_pause (TrayIcon * icon, gboolean pause)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
- GError *error = NULL;
-
- priv->user_pause = pause;
-
-
- if (pause) {
- tracker_set_bool_option (priv->tracker, "Pause", TRUE,
- &error);
-
- } else {
- tracker_set_bool_option (priv->tracker, "Pause", FALSE,
- &error);
- }
-
-
-}
-
-static void
-notice_events_inner (Window window, gboolean enable, gboolean top)
-{
- XWindowAttributes attrs;
- unsigned long events;
- Window root;
- Window parent;
- Window *kids;
- unsigned int nkids;
- int status;
- GdkWindow *gwindow;
-
- gwindow = gdk_window_lookup (window);
- if (gwindow != NULL && (window != GDK_ROOT_WINDOW ())) {
- /* If it's one of ours, don't mess up its event mask. */
- return;
- }
-
- kids = NULL;
- status = XQueryTree (GDK_DISPLAY (), window, &root, &parent, &kids,
- &nkids);
-
- if (status == 0) {
- if (kids != NULL) {
- XFree (kids);
- }
- return;
- }
-
- if (window == root) {
- top = FALSE;
- }
-
-
- memset (&attrs, 0, sizeof (attrs));
- XGetWindowAttributes (GDK_DISPLAY (), window, &attrs);
-
- if (enable) {
- /* Select for KeyPress on all windows that already have it selected */
- events = ((attrs.all_event_masks | attrs.
- do_not_propagate_mask) & KeyPressMask);
-
- /* Keep already selected events. This is important when the
- * window == GDK_ROOT_WINDOW () since the mask will contain
- * StructureNotifyMask that is essential for RANDR support */
- events |= attrs.your_event_mask;
-
- /* Select for SubstructureNotify on all windows */
- events |= SubstructureNotifyMask;
-
- /* Select for PropertyNotify events to get user time changes */
- events |= PropertyChangeMask;
-
- /* As with keypress events, only select mouse motion events
- * for windows which already have them selected. */
- events |=
- ((attrs.all_event_masks | attrs.
- do_not_propagate_mask) & (PointerMotionMask |
- PointerMotionHintMask));
- } else {
- /* We want to disable all events */
-
- /* Don't mess up the root window */
- if (window == GDK_ROOT_WINDOW ()) {
- events = attrs.your_event_mask;
- } else {
- events = 0;
- }
- }
-
- /* Select for SubstructureNotify on all windows.
- * Select for KeyPress on all windows that already have it selected.
- *
- * Note that we can't select for ButtonPress, because of X braindamage:
- * only one client at a time may select for ButtonPress on a given
- * window, though any number can select for KeyPress. Someone explain
- * *that* to me.
- *
- * So, if the user spends a while clicking the mouse without ever moving
- * the mouse or touching the keyboard, we won't know that they've been
- * active, and the screensaver will come on. That sucks, but I don't
- * know how to get around it.
- *
- * Since X presents mouse wheels as clicks, this applies to those, too:
- * scrolling through a document using only the mouse wheel doesn't
- * count as activity... Fortunately, /proc/interrupts helps, on
- * systems that have it. Oh, if it's a PS/2 mouse, not serial or USB.
- * This sucks!
- */
-
- XSelectInput (GDK_DISPLAY (), window, events);
-
- if (top && (events & KeyPressMask)) {
- /* Only mention one window per tree */
- top = FALSE;
-
- }
-
- if (kids != NULL) {
- while (nkids > 0) {
- notice_events_inner (kids[--nkids], enable, top);
- }
-
- XFree (kids);
- }
-}
-
-static void
-notice_events (Window window, gboolean enable)
-{
- gdk_error_trap_push ();
-
- notice_events_inner (window, enable, TRUE);
-
- gdk_display_sync (gdk_display_get_default ());
- gdk_error_trap_pop ();
-}
-
-static inline void
-start_notice_events (Window window)
-{
- notice_events (window, TRUE);
-}
-
-static GdkFilterReturn
-filter_x_events (GdkXEvent * xevent, GdkEvent * event, gpointer data)
-{
- XEvent *ev;
-
- ev = xevent;
-
- TrayIcon *icon = data;
-
-
- switch (ev->xany.type) {
- case KeyPress:
- case KeyRelease:
- case ButtonPress:
- case ButtonRelease:
- start_auto_pause_timer (icon);
- break;
-
- case PropertyNotify:
- if (ev->xproperty.atom ==
- gdk_x11_get_xatom_by_name ("_NET_WM_USER_TIME")) {
- start_auto_pause_timer (icon);
- }
- break;
-
- case CreateNotify:
- {
- Window window = ev->xcreatewindow.window;
- start_notice_events (window);
- }
- break;
-
- case MotionNotify:
- if (ev->xmotion.is_hint) {
- /* need to respond to hints so we continue to get events */
- g_timeout_add (1000,
- (GSourceFunc) query_pointer_timeout,
- GINT_TO_POINTER (ev->xmotion.window));
- }
-
- start_auto_pause_timer (icon);
- break;
-
- default:
- break;
- }
-
-
- return GDK_FILTER_CONTINUE;
-
-
-}
-
-static inline void
-stop_notice_events (Window window)
-{
- notice_events (window, FALSE);
-}
-
-static void
-start_watching_events (TrayIcon * icon)
-{
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (priv->is_watching_events)
- return;
-
- gdk_window_add_filter (NULL, (GdkFilterFunc) filter_x_events, icon);
- start_notice_events (DefaultRootWindow (GDK_DISPLAY ()));
- priv->is_watching_events = TRUE;
-}
-
-static void
-stop_watching_events (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (!priv->is_watching_events)
- return;
-
- stop_notice_events (DefaultRootWindow (GDK_DISPLAY ()));
- gdk_window_remove_filter (NULL, (GdkFilterFunc) filter_x_events,
- icon);
- priv->is_watching_events = FALSE;
-
-}
-
-static void
-tray_icon_class_init (TrayIconClass * klass)
-{
- g_type_class_add_private (klass, sizeof (TrayIconPrivate));
-}
-
-static void
-activate_icon (GtkStatusIcon * icon, gpointer data)
-{
- const gchar *command = "tracker-search-tool";
-
- if (!g_spawn_command_line_async (command, NULL))
- g_warning ("Unable to execute command: %s", command);
-}
-
-static void
-search_menu_activated (GtkMenuItem * item, gpointer data)
-{
- activate_icon (NULL, NULL);
-}
-
-static void
-pause_menu_toggled (GtkCheckMenuItem * item, gpointer data)
-{
- TrayIcon *icon = TRAY_ICON (data);
-
- set_user_pause (icon,
- gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM
- (item)));
-}
-
-static inline void
-set_auto_pause_setting (TrayIcon * icon, AutoPauseEnum auto_pause)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->auto_pause_setting = auto_pause;
-}
-
-static void
-save_options (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- g_key_file_set_boolean (priv->keyfile, "Applet",
- "AnimateWhenIndexing",
- gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON (priv->chk_animate)));
- g_key_file_set_boolean (priv->keyfile, "Applet", "AutoHideIcon",
- gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON (priv->chk_show_icon)));
- g_key_file_set_integer (priv->keyfile, "Applet", "SmartPause",
- priv->auto_pause_setting);
-
-
- GError *error = NULL;
- guint length = 0;
- char *contents = g_key_file_to_data (priv->keyfile, &length, &error);
-
- if (error) {
- g_error ("failed: g_key_file_to_data(): %s\n",
- error->message);
-
- return;
- }
-
-
- g_file_set_contents (priv->filename, contents, -1, NULL);
-
- g_free (contents);
-
-}
-
-static void
-prefs_closed (GtkWidget * widget, gpointer data)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (data);
-
- save_options (data);
-
- gtk_widget_destroy (priv->prefs_window);
-}
-
-static void
-opt_pause_off_group_changed_cb (GtkToggleButton * check_button,
- gpointer user_data)
-{
- if (!gtk_toggle_button_get_active (check_button))
- return;
-
-
-
- TrayIcon *icon = user_data;
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- const char *name = gtk_widget_get_name (GTK_WIDGET (check_button));
-
- if (g_str_equal (name, "opt_pause_off")) {
- priv->auto_pause_setting = AUTO_PAUSE_NONE;
- priv->auto_pause = FALSE;
- stop_watching_events (icon);
- return;
- }
-
- if (g_str_equal (name, "opt_pause_index")) {
-
- priv->auto_pause_setting = AUTO_PAUSE_INDEXING;
-
- if (can_auto_pause (icon)) {
- start_watching_events (icon);
- } else {
- stop_watching_events (icon);
- }
- return;
- }
-
-
- if (g_str_equal (name, "opt_pause_merge")) {
-
- priv->auto_pause_setting = AUTO_PAUSE_MERGING;
- if (can_auto_pause (icon)) {
- start_watching_events (icon);
- } else {
- stop_watching_events (icon);
- }
- return;
- }
-
-
-
-}
-
-static void
-chk_animate_toggled_cb (GtkToggleButton * check_button, gpointer user_data)
-{
- TrayIcon *icon = user_data;
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->show_animation = gtk_toggle_button_get_active (check_button);
-}
-
-static void
-chk_show_icon_toggled_cb (GtkToggleButton * check_button, gpointer user_data)
-{
- TrayIcon *icon = user_data;
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (gtk_toggle_button_get_active (check_button)) {
- priv->auto_hide = TRUE;
- gtk_status_icon_set_visible (priv->icon, FALSE);
- } else {
- priv->auto_hide = FALSE;
- if (!priv->disabled)
- gtk_status_icon_set_visible (priv->icon, TRUE);
- }
-
-}
-
-static void
-create_prefs (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- GladeXML *gxml =
- glade_xml_new (TRACKER_DATADIR
- "/tracker/tracker-applet-prefs.glade", NULL,
- NULL);
-
- if (gxml == NULL) {
- g_error ("Unable to find locate tracker-applet-prefs.glade");
- priv->prefs_window = NULL;
- return;
- }
-
-
-
- priv->prefs_window = glade_xml_get_widget (gxml, "wnd_prefs");
- gtk_widget_hide (priv->prefs_window);
- gtk_window_set_deletable (GTK_WINDOW (priv->prefs_window), FALSE);
-
- priv->chk_animate = glade_xml_get_widget (gxml, "chk_animate");
- priv->chk_show_icon = glade_xml_get_widget (gxml, "chk_show_icon");
- priv->opt_pause_off = glade_xml_get_widget (gxml, "opt_pause_off");
- priv->opt_pause_index =
- glade_xml_get_widget (gxml, "opt_pause_index");
- priv->opt_pause_merge =
- glade_xml_get_widget (gxml, "opt_pause_merge");
- priv->btn_close = glade_xml_get_widget (gxml, "btn_close");
-
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->chk_animate),
- priv->show_animation);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->chk_show_icon),
- priv->auto_hide);
-
- switch (priv->auto_pause_setting) {
-
- case AUTO_PAUSE_NONE:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
- (priv->opt_pause_off), TRUE);
-
- break;
-
- case AUTO_PAUSE_INDEXING:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
- (priv->opt_pause_index), TRUE);
-
-
- break;
-
- case AUTO_PAUSE_MERGING:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
- (priv->opt_pause_merge), TRUE);
-
-
-
- break;
-
- }
-
-
- /* connect signal handlers */
-
- g_signal_connect (GTK_TOGGLE_BUTTON (priv->chk_animate), "toggled",
- G_CALLBACK (chk_animate_toggled_cb), main_icon);
- g_signal_connect (GTK_TOGGLE_BUTTON (priv->chk_show_icon), "toggled",
- G_CALLBACK (chk_show_icon_toggled_cb), main_icon);
- g_signal_connect (GTK_TOGGLE_BUTTON (priv->opt_pause_off), "toggled",
- G_CALLBACK (opt_pause_off_group_changed_cb),
- main_icon);
- g_signal_connect (GTK_TOGGLE_BUTTON (priv->opt_pause_index),
- "toggled",
- G_CALLBACK (opt_pause_off_group_changed_cb),
- main_icon);
- g_signal_connect (GTK_TOGGLE_BUTTON (priv->opt_pause_merge),
- "toggled",
- G_CALLBACK (opt_pause_off_group_changed_cb),
- main_icon);
- g_signal_connect (priv->btn_close, "clicked",
- G_CALLBACK (prefs_closed), main_icon);
-
-
-}
-
-static void
-restart_tracker (GtkDialog * dialog, gint response, TrayIcon * icon)
-{
- gtk_widget_destroy (GTK_WIDGET (dialog));
-
- if (response == GTK_RESPONSE_YES) {
-
- g_print ("attempting to restart tracker\n");
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->reindex = TRUE;
-
- dbus_g_proxy_begin_call (priv->tracker->proxy,
- "Shutdown",
- NULL,
- NULL,
- NULL,
- G_TYPE_BOOLEAN,
- TRUE, G_TYPE_INVALID);
-
- }
-}
-
-static void
-reindex (GtkMenuItem * item, TrayIcon * icon)
-{
- GtkWidget *dialog;
- gchar *primary;
- gchar *secondary;
-
- primary = g_strdup (_("Re-index your system?"));
- secondary =
- g_strdup (_
- ("Indexing can take a long time. Are you sure you want to re-index?"));
-
-
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_YES_NO, primary);
-
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- g_free (primary);
- g_free (secondary);
-
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog), "response",
- G_CALLBACK (restart_tracker), icon);
- gtk_widget_show (dialog);
-
-}
-
-static void
-applet_preferences_menu_activated (GtkMenuItem * item, gpointer data)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (data);
-
- create_prefs (data);
-
- gtk_widget_show (priv->prefs_window);
-}
-
-static void
-preferences_menu_activated (GtkMenuItem * item, gpointer data)
-{
- const gchar *command = "tracker-preferences";
-
- if (!g_spawn_command_line_async (command, NULL))
- g_warning ("Unable to execute command: %s", command);
-}
-
-static void
-stat_window_free (GtkWidget * widget, gint arg, gpointer data)
-{
- TrayIcon *icon = TRAY_ICON (data);
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->stat_window_active = FALSE;
-
- gtk_widget_destroy (widget);
-}
-
-static gchar *
-get_stat_value (gchar *** stat_array, const gchar * stat)
-{
- gchar **array;
- gint i = 0;
-
- while (stat_array[i][0]) {
-
- array = stat_array[i];
-
- if (array[0] && strcasecmp (stat, array[0]) == 0) {
- return array[1];
- }
-
- i++;
- }
-
- return NULL;
-}
-
-static void
-update_stats (GPtrArray * array, GError * error, gpointer data)
-{
- TrayIcon *icon = TRAY_ICON (data);
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (error) {
- g_warning ("an error has occured: %s", error->message);
- g_error_free (error);
- priv->stat_request_pending = FALSE;
- return;
- }
-
- if (!array) {
- return;
- }
-
- guint i = array->len;
-
-
- if (i < 1 || !priv->stat_window_active) {
- g_ptr_array_free (array, TRUE);
- return;
- }
-
- gchar ***pdata = (gchar ***) array->pdata;
-
- for (i = 0; i < 12; i++) {
- gtk_label_set_text (GTK_LABEL (stat_info[i].stat_label),
- get_stat_value (pdata,
- stat_info[i].name));
- }
-
- g_ptr_array_free (array, TRUE);
-
- priv->stat_request_pending = FALSE;
-
-}
-
-static void
-refresh_stats (TrayIcon * icon)
-{
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (!priv->stat_window_active || priv->stat_request_pending) {
- return;
- }
-
- priv->stat_request_pending = TRUE;
-
- tracker_get_stats_async (priv->tracker,
- (TrackerGPtrArrayReply) update_stats, icon);
-
-}
-
-static void
-statistics_menu_activated (GtkMenuItem * item, gpointer data)
-{
- TrayIcon *icon = TRAY_ICON (data);
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
- int i;
-
- GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Statistics"),
- NULL,
- GTK_DIALOG_NO_SEPARATOR
- |
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_CLOSE,
- GTK_RESPONSE_CLOSE,
- NULL);
-
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
- gtk_window_set_icon_name (GTK_WINDOW (dialog), "gtk-info");
- gtk_window_set_type_hint (GTK_WINDOW (dialog),
- GDK_WINDOW_TYPE_HINT_DIALOG);
- gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
-
-
-
- GtkWidget *table = gtk_table_new (13, 2, TRUE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 4);
- gtk_table_set_col_spacings (GTK_TABLE (table), 65);
- gtk_container_set_border_width (GTK_CONTAINER (table), 8);
-
- GtkWidget *title_label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (title_label),
- _
- ("<span weight=\"bold\" size=\"larger\">Index statistics</span>"));
- gtk_misc_set_alignment (GTK_MISC (title_label), 0, 0);
- gtk_table_attach_defaults (GTK_TABLE (table), title_label, 0, 2, 0,
- 1);
-
- for (i = 0; i < 12; i++) {
-
- GtkWidget *label_to_add = gtk_label_new (stat_info[i].label);
-
- gtk_label_set_selectable (GTK_LABEL (label_to_add), TRUE);
- gtk_misc_set_alignment (GTK_MISC (label_to_add), 0, 0);
- gtk_table_attach_defaults (GTK_TABLE (table), label_to_add, 0,
- 1, i + 1, i + 2);
-
- stat_info[i].stat_label = gtk_label_new ("");
-
- gtk_label_set_selectable (GTK_LABEL (stat_info[i].stat_label),
- TRUE);
- gtk_misc_set_alignment (GTK_MISC (stat_info[i].stat_label), 0,
- 0);
- gtk_table_attach_defaults (GTK_TABLE (table),
- stat_info[i].stat_label, 1, 2,
- i + 1, i + 2);
-
- }
-
- priv->stat_window_active = TRUE;
-
- refresh_stats (icon);
-
- GtkWidget *dialog_hbox = gtk_hbox_new (FALSE, 12);
- GtkWidget *info_icon =
- gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO,
- GTK_ICON_SIZE_DIALOG);
- gtk_misc_set_alignment (GTK_MISC (info_icon), 0, 0);
- gtk_container_add (GTK_CONTAINER (dialog_hbox), info_icon);
- gtk_container_add (GTK_CONTAINER (dialog_hbox), table);
-
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox),
- dialog_hbox);
-
- g_signal_connect (G_OBJECT (dialog),
- "response", G_CALLBACK (stat_window_free), icon);
-
- gtk_widget_show_all (dialog);
-}
-
-static void
-open_uri (GtkWindow * parent, const char *uri)
-{
- GtkWidget *dialog;
- GdkScreen *screen;
- GError *error = NULL;
- gchar *cmdline;
-
- screen = gtk_window_get_screen (parent);
-
- cmdline = g_strconcat ("xdg-open ", uri, NULL);
-
- if (gdk_spawn_command_line_on_screen (screen, cmdline, &error) ==
- FALSE) {
- dialog = gtk_message_dialog_new (parent,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- error->message);
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- g_error_free (error);
- }
-
- g_free (cmdline);
-}
-
-static void
-about_url_hook (GtkAboutDialog * dialog, const gchar * url, gpointer data)
-{
- open_uri (GTK_WINDOW (dialog), url);
-}
-
-static void
-about_email_hook (GtkAboutDialog * dialog, const gchar * email, gpointer data)
-{
- gchar *uri;
-
- uri = g_strconcat ("mailto:", email, NULL);
- open_uri (GTK_WINDOW (dialog), uri);
- g_free (uri);
-}
-
-static void
-about_menu_activated (GtkMenuItem * item, gpointer data)
-{
-
- const gchar *authors[] = {
- "Jamie McCracken <jamiemcc at gnome.org>",
- "Saleem Abdulrasool <compnerd at compnerd.org>"
- "Laurent Aguerreche <laurent.aguerreche at free fr>",
- "Luca Ferretti <elle.uca@libero.it>",
- "Eugenio <me at eugesoftware com>",
- "Michael Biebl <mbiebl at gmail com>",
- "Edward Duffy <eduffy at gmail com>",
- "Gergan Penkov <gergan at gmail com>",
- "Deji Akingunola <dakingun gmail com>",
- "Julien <julienc psychologie-fr org>",
- "Tom <tpgww@onepost.net>",
- "Samuel Cormier-Iijima <sciyoshi at gmail com>",
- "Eskil Bylund <eskil at letterboxes org>",
- "Ulrik Mikaelsson <ulrik mikaelsson gmail com>",
- "tobutaz <tobutaz gmail com>",
- "Mikkel Kamstrup Erlandsen <mikkel kamstrup gmail com>",
- "Baptiste Mille-Mathias <baptiste.millemathias gmail com>",
- "Richard Quirk <quirky@zoom.co.uk>",
- "Marcus Fritzsch <fritschy at googlemail com>",
- "Jedy Wang <Jedy Wang at Sun COM>",
- "Anders Aagaard <aagaande at gmail com>",
- "Fabien VALLON <fabien at sonappart net>",
- "Jaime Frutos Morales <acidborg at gmail com>",
- "Christoph Laimburg <christoph laimburg at rolmail net>",
- NULL
- };
- const gchar *documenters[] = {
- NULL
- };
- const gchar *license[] = {
- N_("Tracker is free software; you can redistribute it and/or modify " "it under the terms of the GNU General Public License as published by " "the Free Software Foundation; either version 2 of the License, or " "(at your option) any later version."),
- N_("Tracker is distributed in the hope that it will be useful, " "but WITHOUT ANY WARRANTY; without even the implied warranty of " "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public License for more details."),
- N_("You should have received a copy of the GNU General Public License " "along with Tracker; if not, write to the Free Software Foundation, Inc., " "59 Temple Place, Suite 330, Boston, MA 02111-1307 USA")
- };
- gchar *license_trans;
-
- license_trans = g_strjoin ("\n\n", _(license[0]), _(license[1]),
- _(license[2]), NULL);
-
- /* Make URLs and email clickable in about dialog */
- gtk_about_dialog_set_url_hook (about_url_hook, NULL, NULL);
- gtk_about_dialog_set_email_hook (about_email_hook, NULL, NULL);
-
- gtk_show_about_dialog (NULL,
- "version", VERSION,
- "comments",
- _
- ("Tracker is a tool designed to extract info and metadata about your personal data so that it can be searched easily and quickly"),
- "copyright",
- _("Copyright \xC2\xA9 2005-2008 "
- "The Tracker authors"), "license",
- license_trans, "wrap-license", TRUE, "authors",
- authors, "documenters", documenters,
- /* Translators should localize the following string
- * which will be displayed at the bottom of the about
- * box to give credit to the translator(s).
- */
- "translator-credits", _("translator-credits"),
- "logo-icon-name", "tracker",
- "website", "http://www.tracker-project.org/",
- "website-label", _("Tracker Web Site"), NULL);
-
- g_free (license_trans);
-}
-
-static void
-quit_menu_activated (GtkMenuItem * item, gpointer data)
-{
- gtk_main_quit ();
-}
-
-static void
-create_context_menu (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
- GtkWidget *item = NULL, *image = NULL;
- priv->menu = (GtkMenu *) gtk_menu_new ();
-
- item = (GtkWidget *)
- gtk_check_menu_item_new_with_mnemonic (_
- ("_Pause All Indexing"));
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), FALSE);
- g_signal_connect (G_OBJECT (item), "toggled",
- G_CALLBACK (pause_menu_toggled), icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_("_Search"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_FIND,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (search_menu_activated), icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_("_Re-index"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_FIND,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (reindex),
- icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_("_Preferences"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_PREFERENCES,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (applet_preferences_menu_activated),
- icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_
- ("_Indexer Preferences"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_PREFERENCES,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (preferences_menu_activated), icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_("S_tatistics"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_INFO,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (statistics_menu_activated), icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_("_About"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_ABOUT,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (about_menu_activated), icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = gtk_separator_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- item = (GtkWidget *)
- gtk_image_menu_item_new_with_mnemonic (_("_Quit"));
- image = gtk_image_new_from_icon_name (GTK_STOCK_QUIT,
- GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (quit_menu_activated), icon);
- gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
-
- gtk_widget_show_all (GTK_WIDGET (priv->menu));
-}
-
-static void
-index_finished (DBusGProxy * proxy, int time_taken, TrayIcon * icon)
-{
- char *format;
-
- int hours = time_taken / 3600;
-
- int minutes = (time_taken / 60 - (hours * 60));
-
- int seconds = (time_taken - ((minutes * 60) + (hours * 3600)));
-
- if (hours > 0) {
- format = g_strdup_printf (end_index_hours_msg, hours,
- minutes);
- } else if (minutes > 0) {
- format = g_strdup_printf (end_index_minutes_msg, minutes,
- seconds);
- } else {
- format = g_strdup_printf (end_index_seconds_msg, seconds);
- }
-
- tray_icon_show_message (icon, "%s%s\n\n%s", end_index_initial_msg,
- format, end_index_final_msg);
- g_free (format);
-
- stop_watching_events (icon);
-
-}
-
-static void
-index_state_changed (DBusGProxy * proxy, const gchar * state,
- gboolean initial_index, gboolean in_merge,
- gboolean is_manual_paused, gboolean is_battery_paused,
- gboolean is_io_paused, gboolean is_indexing_enabled,
- TrayIcon * icon)
-{
-
- if (!state)
- return;
-
-
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
- gboolean paused = FALSE;
-
- priv->indexer_stopped = FALSE;
-
- if (!is_indexing_enabled) {
- priv->disabled = TRUE;
- gtk_status_icon_set_visible (priv->icon, FALSE);
- return;
- } else {
- priv->disabled = FALSE;
- if (!priv->auto_hide) {
- gtk_status_icon_set_visible (priv->icon, TRUE);
- }
- }
-
-
- if (!priv->initial_index_msg_shown && initial_index) {
- priv->initial_index_msg_shown = TRUE;
- g_usleep (100000);
- tray_icon_show_message (icon, "%s\n\n%s\n", initial_index_1,
- initial_index_2);
-
- }
-
- priv->animated = FALSE;
- priv->pause_state = PAUSE_NONE;
-
-
- /* set pause states if applicable */
- if (is_manual_paused) {
-
- stop_watching_events (icon);
-
- if (!priv->auto_pause) {
- priv->user_pause = TRUE;
- }
-
- paused = TRUE;
-
- } else if (is_battery_paused) {
-
- priv->pause_state = PAUSE_BATTERY;
- paused = TRUE;
-
- } else if (is_io_paused) {
- paused = TRUE;
- priv->pause_state = PAUSE_INTERNAL;
-
- }
-
-
- if (in_merge) {
-
- priv->index_state = INDEX_MERGING;
- priv->animated = TRUE;
-
-
- } else if (strcasecmp (state, "Idle") == 0) {
-
- priv->index_state = INDEX_IDLE;
-
- } else {
-
- priv->index_state = INDEX_BUSY;
- priv->animated = TRUE;
-
- }
-
- set_icon (priv);
-
- /* should we animate? */
-
- if (!paused && priv->animated && priv->show_animation) {
-
- if (!priv->animated_timer_active) {
- priv->animated_timer_active = TRUE;
- //g_timeout_add_seconds (2, (GSourceFunc) set_icon, priv);
- }
- }
-
- set_status_hint (icon);
-
- if (can_auto_pause (icon)) {
- start_watching_events (icon);
- } else {
- stop_watching_events (icon);
- }
-
-}
-
-static void
-index_progress_changed (DBusGProxy * proxy, const gchar * service,
- const char *uri, int index_count,
- int folders_processed, int folders_total,
- TrayIcon * icon)
-{
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (folders_processed > folders_total)
- folders_processed = folders_total;
-
- priv->folders_indexed = folders_processed;
- priv->folders_total = folders_total;
-
- priv->email_indexing = (strcmp (service, "Emails") == 0);
-
- set_status_hint (icon);
-
- set_icon (priv);
-
- /* update stat window if its active */
- refresh_stats (icon);
-
-}
-
-static void
-init_settings (TrayIcon * icon)
-{
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->index_state = INDEX_IDLE;
- priv->pause_state = PAUSE_NONE;
- priv->auto_pause_setting = AUTO_PAUSE_MERGING;
- priv->index_icon = ICON_DEFAULT;
- priv->animated = FALSE;
- priv->animated_timer_active = FALSE;
- priv->user_pause = FALSE;
- priv->auto_pause = FALSE;
- priv->auto_hide = FALSE;
- priv->disabled = FALSE;
- priv->show_animation = TRUE;
- priv->auto_pause_timer_active = FALSE;
- priv->is_watching_events = FALSE;
- priv->initial_index_msg_shown = FALSE;
- priv->stat_window_active = FALSE;
- priv->stat_request_pending = FALSE;
- priv->indexer_stopped = FALSE;
-
- set_tracker_icon (priv);
-}
-
-static void
-name_owner_changed (DBusGProxy * proxy, const gchar * name,
- const gchar * prev_owner, const gchar * new_owner,
- gpointer data)
-{
-
-
- if (!g_str_equal (name, DBUS_SERVICE_TRACKER))
- return;
-
- if (g_str_equal (new_owner, "")) {
-
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (data);
- /* tracker has exited so reset status and make invisible until trackerd relaunched */
- index_state_changed (proxy, "Idle", FALSE, FALSE, FALSE,
- FALSE, TRUE, FALSE, data);
- init_settings (data);
- gtk_status_icon_set_visible (priv->icon, FALSE);
- priv->indexer_stopped = TRUE;
- g_print ("tracker has exited (reindex = %d)\n",
- priv->reindex);
-
-
- if (priv->reindex) {
- priv->reindex = FALSE;
- const gchar *command = "trackerd";
-
- g_print ("restarting trackerd\n");
- g_usleep (1000000);
- if (!g_spawn_command_line_async (command, NULL))
- g_warning ("Unable to execute command: %s",
- command);
-
- }
-
-
- }
-}
-
-static gboolean
-setup_dbus_connection (TrayIcon * icon)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->tracker = tracker_connect (FALSE);
-
- if (!priv->tracker) {
- g_print ("Could not initialise Tracker\n");
- exit (1);
- }
-
-
- /* set signal handlers */
- dbus_g_object_register_marshaller
- (tracker_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN,
- G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN, G_TYPE_INVALID);
-
- dbus_g_object_register_marshaller
- (tracker_VOID__STRING_STRING_INT_INT_INT, G_TYPE_NONE,
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT,
- G_TYPE_INT, G_TYPE_INVALID);
-
- dbus_g_proxy_add_signal (priv->tracker->proxy,
- "IndexStateChange",
- G_TYPE_STRING,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN, G_TYPE_INVALID);
-
- dbus_g_proxy_add_signal (priv->tracker->proxy,
- "IndexProgress",
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_INT,
- G_TYPE_INT, G_TYPE_INT, G_TYPE_INVALID);
-
- dbus_g_proxy_add_signal (priv->tracker->proxy,
- "IndexFinished", G_TYPE_INT, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal (priv->tracker->proxy,
- "IndexStateChange",
- G_CALLBACK (index_state_changed),
- icon, NULL);
-
- dbus_g_proxy_connect_signal (priv->tracker->proxy,
- "IndexProgress",
- G_CALLBACK (index_progress_changed),
- icon, NULL);
-
- dbus_g_proxy_connect_signal (priv->tracker->proxy,
- "IndexFinished",
- G_CALLBACK (index_finished), icon, NULL);
-
- DBusGConnection *connection;
- DBusGProxy *dbus_proxy;
-
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
- dbus_proxy = dbus_g_proxy_new_for_name (connection,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
-
- dbus_g_proxy_add_signal (dbus_proxy,
- "NameOwnerChanged",
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal (dbus_proxy,
- "NameOwnerChanged",
- G_CALLBACK (name_owner_changed),
- icon, NULL);
-
-
- /* prompt for updated signals */
- dbus_g_proxy_begin_call (priv->tracker->proxy, "PromptIndexSignals",
- NULL, NULL, NULL, G_TYPE_INVALID);
-
- return FALSE;
-}
-
-static void
-tray_icon_clicked (GtkStatusIcon * icon, guint button, guint timestamp,
- gpointer data)
-{
- TrayIcon *self = TRAY_ICON (data);
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (self);
-
-
- gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL,
- gtk_status_icon_position_menu, icon, button,
- timestamp);
-}
-
-static void
-tray_icon_init (GTypeInstance * instance, gpointer g_class)
-{
- TrayIcon *icon = TRAY_ICON (instance);
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- priv->icon = gtk_status_icon_new ();
-
- init_settings (icon);
-
- priv->reindex = FALSE;
-
- g_signal_connect (G_OBJECT (priv->icon), "activate",
- G_CALLBACK (activate_icon), instance);
- g_signal_connect (G_OBJECT (priv->icon), "popup-menu",
- G_CALLBACK (tray_icon_clicked), instance);
-
-
- /* build context menu */
- create_context_menu (icon);
-
- gtk_status_icon_set_visible (priv->icon, FALSE);
-
- setup_dbus_connection (icon);
-
-}
-
-void
-tray_icon_set_tooltip (TrayIcon * icon, const gchar * format, ...)
-{
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- gchar *tooltip = NULL;
- va_list args;
-
- va_start (args, format);
- tooltip = g_strdup_vprintf (format, args);
- va_end (args);
-
- gtk_status_icon_set_tooltip (priv->icon, tooltip);
-
- g_free (tooltip);
-}
-
-void
-tray_icon_show_message (TrayIcon * icon, const char *message, ...)
-{
- va_list args;
- gchar *msg = NULL;
- NotifyNotification *notification = NULL;
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- va_start (args, message);
- msg = g_strdup_vprintf (message, args);
- va_end (args);
-
- if (priv->disabled)
- return;
-
- if (!priv->auto_hide && !gtk_status_icon_get_visible (priv->icon))
- gtk_status_icon_set_visible (priv->icon, TRUE);
-
- notification =
- notify_notification_new_with_status_icon ("Tracker", msg,
- NULL, priv->icon);
-
- notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
-
- notify_notification_show (notification, NULL);
-
- g_object_unref (notification);
-
- g_free (msg);
-
-}
-
-GType
-tray_icon_get_type (void)
-{
- static GType type = 0;
-
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof (TrayIconClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) tray_icon_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (TrayIcon),
- 0, /* n_preallocs */
- tray_icon_init /* instance_init */
- };
-
- type = g_type_register_static (G_TYPE_OBJECT, "TrayIconType",
- &info, 0);
- }
-
- return type;
-}
-
-static void
-load_options (TrayIcon * icon)
-{
- GError *error = NULL;
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (icon);
-
- if (!priv->keyfile) {
- priv->keyfile = g_key_file_new ();
- }
-
- if (!g_file_test (priv->filename, G_FILE_TEST_EXISTS)) {
-
-
-
- gchar *tracker_dir =
- g_build_filename (g_get_user_config_dir (),
- "/tracker", NULL);
-
- if (!g_file_test (tracker_dir, G_FILE_TEST_EXISTS)) {
- g_mkdir_with_parents (tracker_dir, 0700);
- }
-
- g_free (tracker_dir);
-
-
- char *contents = g_strconcat ("[Applet]\n",
- "AnimateWhenIndexing=true\n\n",
- "AutoHideIcon=false\n\n",
- "SmartPause=2\n", NULL);
-
- g_file_set_contents (priv->filename, contents,
- strlen (contents), NULL);
- g_free (contents);
-
-
- }
-
- if (!g_key_file_load_from_file
- (priv->keyfile, priv->filename, G_KEY_FILE_KEEP_COMMENTS, &error)
- || error) {
- if (error)
- g_error ("failed: g_key_file_load_from_file(): %s\n",
- error->message);
- priv->show_animation = TRUE;
- priv->auto_hide = FALSE;
- priv->auto_pause_setting = AUTO_PAUSE_MERGING;
-
- return;
- }
-
- if (g_key_file_has_key
- (priv->keyfile, "Applet", "AnimateWhenIndexing", NULL)) {
- priv->show_animation =
- g_key_file_get_boolean (priv->keyfile, "Applet",
- "AnimateWhenIndexing", NULL);
- } else {
- priv->show_animation = TRUE;
- }
-
- if (g_key_file_has_key
- (priv->keyfile, "Applet", "AutoHideIcon", NULL)) {
- priv->auto_hide =
- g_key_file_get_boolean (priv->keyfile, "Applet",
- "AutoHideIcon", NULL);
- } else {
- priv->auto_hide = FALSE;
- }
-
- if (g_key_file_has_key (priv->keyfile, "Applet", "SmartPause", NULL)) {
- priv->auto_pause_setting =
- g_key_file_get_integer (priv->keyfile, "Applet",
- "SmartPause", NULL);
- } else {
- priv->auto_pause_setting = AUTO_PAUSE_MERGING;
- }
-
- switch (priv->auto_pause_setting) {
-
- case AUTO_PAUSE_NONE:
-
- priv->auto_pause_setting = AUTO_PAUSE_NONE;
- priv->auto_pause = FALSE;
- stop_watching_events (icon);
-
- break;
-
- case AUTO_PAUSE_INDEXING:
-
- if (can_auto_pause (icon)) {
- start_watching_events (icon);
- } else {
- stop_watching_events (icon);
- }
-
- break;
-
- case AUTO_PAUSE_MERGING:
-
- if (can_auto_pause (icon)) {
- start_watching_events (icon);
- } else {
- stop_watching_events (icon);
- }
-
- break;
-
- }
-
-}
-
-int
-main (int argc, char *argv[])
-{
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- gtk_init (&argc, &argv);
-
- if (!notify_is_initted () && !notify_init (PROGRAM_NAME)) {
- g_warning ("failed: notify_init()\n");
- return EXIT_FAILURE;
- }
- gtk_window_set_default_icon_name ("tracker");
-
- g_set_application_name (_("Tracker"));
-
-
- /* set translatable strings here */
-
- initial_index_1 =
- _
- ("Your computer is about to be indexed so you can perform fast searches of your files and emails");
- initial_index_2 =
- _
- ("You can pause indexing at any time and configure index settings by right clicking here");
-
- end_index_initial_msg =
- _("Tracker has finished indexing your system");
- end_index_hours_msg = _(" in %d hours and %d minutes");
- end_index_minutes_msg = _(" in %d minutes and %d seconds");
- end_index_seconds_msg = _(" in %d seconds");
- end_index_final_msg =
- _("You can now perform searches by clicking here");
-
-
- stat_info[0].label = _("Files:");
- stat_info[1].label = _(" Folders:");
- stat_info[2].label = _(" Documents:");
- stat_info[3].label = _(" Images:");
- stat_info[4].label = _(" Music:");
- stat_info[5].label = _(" Videos:");
- stat_info[6].label = _(" Text:");
- stat_info[7].label = _(" Development:");
- stat_info[8].label = _(" Other:");
- stat_info[9].label = _("Applications:");
- stat_info[10].label = _("Conversations:");
- stat_info[11].label = _("Emails:");
-
- main_icon = g_object_new (TYPE_TRAY_ICON, NULL);
- TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (main_icon);
-
- priv->keyfile = NULL;
-
- priv->filename =
- g_build_filename (g_strdup (g_get_user_config_dir ()),
- "/tracker/tracker-applet.cfg", NULL);
-
- load_options (main_icon);
-
-
- gtk_main ();
-
- notify_uninit ();
-
- return EXIT_SUCCESS;
-}
diff --git a/src/tracker-applet/tracker-applet.desktop.in.in b/src/tracker-applet/tracker-applet.desktop.in.in
deleted file mode 100644
index 4637f2d82..000000000
--- a/src/tracker-applet/tracker-applet.desktop.in.in
+++ /dev/null
@@ -1,16 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-_Name=Tracker Applet
-_Comment=Control and monitor the Tracker search and indexing service
-Icon=
-Exec=tracker-applet
-Terminal=false
-Type=Application
-Categories=
-NoDisplay=true
-OnlyShowIn=GNOME;XFCE;
-X-GNOME-Bugzilla-Bugzilla=GNOME
-X-GNOME-Bugzilla-Product=tracker
-X-GNOME-Bugzilla-Component=Tracker Applet
-X-GNOME-Bugzilla-Version=@VERSION@
-X-GNOME-Autostart-enabled=true
diff --git a/src/tracker-applet/tracker-applet.h b/src/tracker-applet/tracker-applet.h
deleted file mode 100644
index b0892de42..000000000
--- a/src/tracker-applet/tracker-applet.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool <compnerd@gentoo.org>
- * Copyright (C) 2007, Jamie McCracken <jamiemcc@blueyonder.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_APPLET_H__
-#define __TRACKER_APPLET_H__
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <gtk/gtkstock.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkstatusicon.h>
-#include <gtk/gtkcheckmenuitem.h>
-#include <gtk/gtkimagemenuitem.h>
-#include <gtk/gtkseparatormenuitem.h>
-
-#define TYPE_TRAY_ICON (tray_icon_get_type())
-#define TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_TRAY_ICON, TrayIcon))
-#define TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_TRAY_ICON, TrayIconClass))
-#define IS_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), TYPE_TRAY_ICON))
-#define IS_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), TYPE_TRAY_ICON))
-#define TRAY_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TYPE_TRAY_ICON, TrayIconClass))
-
-typedef struct _TrayIcon
-{
- GObject parent;
-} TrayIcon;
-
-typedef struct _TrayIconClass
-{
- GObjectClass parent_class;
-} TrayIconClass;
-
-GType
-tray_icon_get_type (void);
-
-void
-tray_icon_set_tooltip (TrayIcon *icon, const gchar *format, ...);
-
-void
-tray_icon_show_message (TrayIcon *icon, const gchar *message, ...);
-
-#endif
-
diff --git a/src/tracker-extract/Makefile.am b/src/tracker-extract/Makefile.am
deleted file mode 100644
index 275708571..000000000
--- a/src/tracker-extract/Makefile.am
+++ /dev/null
@@ -1,133 +0,0 @@
-module_flags = -module -avoid-version -no-undefined
-modulesdir = $(libdir)/tracker/extract-modules
-
-INCLUDES = \
- $(GLIB2_CFLAGS) \
- $(GMODULE_CFLAGS) \
- $(EXEMPI_CFLAGS) \
- $(LIBEXIF_CFLAGS) \
- $(LIBGSF_CFLAGS) \
- $(LIBXML2_CFLAGS) \
- $(LIBPNG_CFLAGS) \
- $(POPPLER_GLIB_CFLAGS) \
- $(GSTREAMER_CFLAGS) \
- $(XINE_CFLAGS) \
- -DMODULES_DIR=\"$(modulesdir)\"
-
-modules_LTLIBRARIES = \
- libextract-abw.la \
- libextract-imagemagick.la \
- libextract-mp3.la \
- libextract-mplayer.la \
- libextract-oasis.la \
- libextract-png.la \
- libextract-ps.la \
- libextract-totem.la
-
-if HAVE_EXEMPI
-modules_LTLIBRARIES += libextract-xmp.la
-endif
-
-if HAVE_LIBEXIF
-modules_LTLIBRARIES += libextract-exif.la
-endif
-
-if HAVE_LIBXML2
-modules_LTLIBRARIES += libextract-html.la
-endif
-
-if HAVE_LIBGSF
-modules_LTLIBRARIES += libextract-msoffice.la
-endif
-
-if HAVE_POPPLER_GLIB
-modules_LTLIBRARIES += libextract-pdf.la
-endif
-
-if HAVE_GSTREAMER
-modules_LTLIBRARIES += libextract-gstreamer.la
-endif
-
-if HAVE_LIBXINE
-modules_LTLIBRARIES += libextract-xine.la
-endif
-
-libextract_abw_la_SOURCES = tracker-extract-abw.c
-libextract_abw_la_LDFLAGS = $(module_flags)
-libextract_abw_la_LIBADD = $(GLIB2_LIBS)
-
-libextract_imagemagick_la_SOURCES = \
- tracker-extract-imagemagick.c \
- tracker-xmp.c tracker-xmp.h
-libextract_imagemagick_la_LDFLAGS = $(module_flags)
-libextract_imagemagick_la_LIBADD = $(GLIB2_LIBS) $(EXEMPI_LIBS)
-
-libextract_mp3_la_SOURCES = tracker-extract-mp3.c
-libextract_mp3_la_LDFLAGS = $(module_flags)
-libextract_mp3_la_LIBADD = $(GLIB2_LIBS)
-
-libextract_mplayer_la_SOURCES = tracker-extract-mplayer.c
-libextract_mplayer_la_LDFLAGS = $(module_flags)
-libextract_mplayer_la_LIBADD = $(GLIB2_LIBS)
-
-libextract_oasis_la_SOURCES = tracker-extract-oasis.c
-libextract_oasis_la_LDFLAGS = $(module_flags)
-libextract_oasis_la_LIBADD = $(GLIB2_LIBS)
-
-libextract_png_la_SOURCES = \
- tracker-extract-png.c \
- tracker-xmp.c tracker-xmp.h
-libextract_png_la_LDFLAGS = $(module_flags)
-libextract_png_la_LIBADD = $(GLIB2_LIBS) $(LIBPNG_LIBS) $(EXEMPI_LIBS)
-
-libextract_ps_la_SOURCES = tracker-extract-ps.c
-libextract_ps_la_LDFLAGS = $(module_flags)
-libextract_ps_la_LIBADD = $(GLIB2_LIBS)
-
-libextract_totem_la_SOURCES = tracker-extract-totem.c
-libextract_totem_la_LDFLAGS = $(module_flags)
-libextract_totem_la_LIBADD = $(GLIB2_LIBS)
-
-libextract_xmp_la_SOURCES = \
- tracker-extract-xmp.c \
- tracker-xmp.c tracker-xmp.h
-libextract_xmp_la_LDFLAGS = $(module_flags)
-libextract_xmp_la_LIBADD = $(GLIB2_LIBS) $(EXEMPI_LIBS)
-
-libextract_exif_la_SOURCES = tracker-extract-exif.c
-libextract_exif_la_LDFLAGS = $(module_flags)
-libextract_exif_la_LIBADD = $(GLIB2_LIBS) $(LIBEXIF_LIBS)
-
-libextract_html_la_SOURCES = tracker-extract-html.c
-libextract_html_la_LDFLAGS = $(module_flags)
-libextract_html_la_LIBADD = $(GLIB2_LIBS) $(LIBXML2_LIBS)
-
-libextract_msoffice_la_SOURCES = tracker-extract-msoffice.c
-libextract_msoffice_la_LDFLAGS = $(module_flags)
-libextract_msoffice_la_LIBADD = $(GLIB2_LIBS) $(LIBGSF_LIBS)
-
-libextract_pdf_la_SOURCES = \
- tracker-extract-pdf.c \
- tracker-xmp.c tracker-xmp.h
-libextract_pdf_la_LDFLAGS = $(module_flags)
-libextract_pdf_la_LIBADD = $(GLIB2_LIBS) $(POPPLER_GLIB_LIBS) $(EXEMPI_LIBS)
-
-libextract_gstreamer_la_SOURCES = tracker-extract-gstreamer.c
-libextract_gstreamer_la_LDFLAGS = $(module_flags)
-libextract_gstreamer_la_LIBADD = $(GLIB2_LIBS) $(GSTREAMER_LIBS)
-
-libextract_xine_la_SOURCES = tracker-extract-libxine.c
-libextract_xine_la_LDFLAGS = $(module_flags)
-libextract_xine_la_LIBADD = $(GLIB2_LIBS) $(XINE_LIBS)
-
-
-bin_PROGRAMS = tracker-extract
-
-tracker_extract_SOURCES = \
- tracker-extract.c \
- tracker-extract.h
-
-tracker_extract_LDADD = \
- $(GLIB2_LIBS) \
- $(GTHREAD_LIBS) \
- $(GMODULE_LIBS)
diff --git a/src/tracker-extract/tracker-extract-abw.c b/src/tracker-extract/tracker-extract-abw.c
deleted file mode 100644
index 222ff293b..000000000
--- a/src/tracker-extract/tracker-extract-abw.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include <fcntl.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include "tracker-extract.h"
-
-
-static void
-tracker_extract_abw (const gchar *filename, GHashTable *metadata)
-{
- gint fd;
- FILE *f;
-
-#if defined(__linux__)
- if ((fd = g_open (filename, (O_RDONLY | O_NOATIME))) == -1) {
-#else
- if ((fd = g_open (filename, O_RDONLY)) == -1) {
-#endif
- return;
- }
-
- if ((f = fdopen (fd, "r"))) {
- gchar *line;
- gsize length;
- gssize read_char;
-
- line = NULL;
- length = 0;
-
- while ((read_char = getline (&line, &length, f)) != -1) {
- if (g_str_has_suffix (line, "</m>\n")) {
- line[read_char - 5] = '\0';
- }
- if (g_str_has_prefix (line, "<m key=\"dc.title\">")) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Title"), g_strdup (line + 18));
- }
- else if (g_str_has_prefix (line, "<m key=\"dc.subject\">")) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Subject"), g_strdup (line + 20));
- }
- else if (g_str_has_prefix (line, "<m key=\"dc.creator\">")) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Author"), g_strdup (line + 20));
- }
- else if (g_str_has_prefix (line, "<m key=\"abiword.keywords\">")) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Keywords"), g_strdup (line + 26));
- }
- else if (g_str_has_prefix (line, "<m key=\"dc.description\">")) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Comments"), g_strdup (line + 24));
- }
-
- g_free (line);
- line = NULL;
- length = 0;
- }
-
- if (line) {
- g_free (line);
- }
-
- fclose (f);
-
- } else {
- close (fd);
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "application/x-abiword", tracker_extract_abw },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-exif.c b/src/tracker-extract/tracker-extract-exif.c
deleted file mode 100644
index 886463a94..000000000
--- a/src/tracker-extract/tracker-extract-exif.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include "tracker-extract.h"
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <libexif/exif-data.h>
-
-#define EXIF_DATE_FORMAT "%Y:%m:%d %H:%M:%S"
-
-static gchar *
-date_to_iso8601 (gchar *exif_date)
-{
- /* ex; date "2007:04:15 15:35:58"
- To
- ex. "2007-04-15T17:35:58+0200 where +0200 is localtime
- */
- return tracker_generic_date_to_iso8601 (exif_date, EXIF_DATE_FORMAT);
-}
-
-
-static gchar *
-fix_focal_length (gchar *fl)
-{
- return g_strndup (fl, (strstr (fl, "mm") - fl));
-}
-
-
-static gchar *
-fix_flash (gchar *flash)
-{
- if (g_str_has_prefix (flash, "No")) {
- return g_strdup ("0");
- } else {
- return g_strdup ("1");
- }
-}
-
-
-static gchar *
-fix_fnumber (gchar *fn)
-{
- if (fn && fn[0] == 'F') {
- fn[0] = ' ';
-
- } else if (fn && fn[0] == 'f' && fn[1] == '/') {
- fn[0] = ' ', fn[1] = ' ';
- }
-
- return fn;
-}
-
-
-static gchar *
-fix_exposure_time (gchar *et)
-{
- gchar *sep = strchr (et, '/');
-
- if (sep) {
- gdouble fraction = g_ascii_strtod (sep+1, NULL);
-
- if (fraction > 0) {
- gdouble val = 1.0f / fraction;
- char str_value[30];
-
- g_ascii_dtostr (str_value, 30, val);
- return g_strdup (str_value);
- }
- }
-
- return et;
-}
-
-
-typedef gchar * (*PostProcessor) (gchar *);
-
-
-typedef struct {
- ExifTag tag;
- gchar *name;
- PostProcessor post;
-} TagType;
-
-
-TagType tags[] = {
- { EXIF_TAG_PIXEL_Y_DIMENSION, "Image:Height", NULL },
- { EXIF_TAG_PIXEL_X_DIMENSION, "Image:Width", NULL },
- { EXIF_TAG_RELATED_IMAGE_WIDTH, "Image:Width", NULL },
- { EXIF_TAG_DOCUMENT_NAME, "Image:Title", NULL },
- /* { -1, "Image:Album", NULL }, */
- { EXIF_TAG_DATE_TIME, "Image:Date", date_to_iso8601 },
- /* { -1, "Image:Keywords", NULL }, */
- { EXIF_TAG_ARTIST, "Image:Creator", NULL },
- { EXIF_TAG_USER_COMMENT, "Image:Comments", NULL },
- { EXIF_TAG_IMAGE_DESCRIPTION, "Image:Description", NULL },
- { EXIF_TAG_SOFTWARE, "Image:Software", NULL },
- { EXIF_TAG_MAKE, "Image:CameraMake", NULL },
- { EXIF_TAG_MODEL, "Image:CameraModel", NULL },
- { EXIF_TAG_ORIENTATION, "Image:Orientation", NULL },
- { EXIF_TAG_EXPOSURE_PROGRAM, "Image:ExposureProgram", NULL },
- { EXIF_TAG_EXPOSURE_TIME, "Image:ExposureTime", fix_exposure_time },
- { EXIF_TAG_FNUMBER, "Image:FNumber", fix_fnumber },
- { EXIF_TAG_FLASH, "Image:Flash", fix_flash },
- { EXIF_TAG_FOCAL_LENGTH, "Image:FocalLength", fix_focal_length },
- { EXIF_TAG_ISO_SPEED_RATINGS, "Image:ISOSpeed", NULL },
- { EXIF_TAG_METERING_MODE, "Image:MeteringMode", NULL },
- { EXIF_TAG_WHITE_BALANCE, "Image:WhiteBalance", NULL },
- { EXIF_TAG_COPYRIGHT, "File:Copyright", NULL },
- { -1, NULL, NULL }
-};
-
-
-static void
-tracker_extract_exif (const gchar *filename, GHashTable *metadata)
-{
- ExifData *exif;
- TagType *p;
-
- exif = exif_data_new_from_file (filename);
-
- for (p = tags; p->name; ++p) {
- ExifEntry *entry = exif_data_get_entry (exif, p->tag);
-
- if (entry) {
- gchar buffer[1024];
-
- exif_entry_get_value (entry, buffer, 1024);
-
- if (p->post) {
- g_hash_table_insert (metadata, g_strdup (p->name),
- g_strdup ((*p->post) (buffer)));
- } else {
- g_hash_table_insert (metadata, g_strdup (p->name),
- g_strdup (buffer));
- }
- }
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "image/jpeg", tracker_extract_exif },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
deleted file mode 100644
index 62a9ef5bd..000000000
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ /dev/null
@@ -1,737 +0,0 @@
-/* Tracker - audio/video metadata extraction based on GStreamer
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/*
- * This file has been wrote starting from file bacon-video-widget-gst-0.10.c
- * from Totem:
- *
- * Copyright (C) 2003-2006 the GStreamer project
- * Julien Moutte <julien@moutte.net>
- * Ronald Bultje <rbultje@ronald.bitfreak.net>
- * Tim-Philipp Müller <tim centricular net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Totem project hereby grant permission for non-gpl compatible GStreamer
- * plugins to be used and distributed together with GStreamer and Totem. This
- * permission is above and beyond the permissions granted by the GPL license
- * Totem is covered by.
- *
- * Monday 7th February 2005: Christian Schaller: Add exemption clause.
- * See license_change file for details.
- *
- */
-
-#include <string.h>
-#include <glib.h>
-#include <gst/gst.h>
-
-#include "tracker-extract.h"
-
-typedef struct {
- GstElement *playbin;
-
- GstTagList *tagcache;
- GstTagList *audiotags;
- GstTagList *videotags;
-
- GstMessageType ignore_messages_mask;
-
- gboolean has_audio;
- gboolean has_video;
-
- gint video_height;
- gint video_width;
- gint video_fps_n;
- gint video_fps_d;
- gint audio_channels;
- gint audio_samplerate;
-} MetadataExtractor;
-
-
-static void
-caps_set (GObject *obj, MetadataExtractor *extractor, const gchar *type)
-{
- GstPad *pad;
- GstStructure *s;
- GstCaps *caps;
-
- pad = GST_PAD (obj);
-
- if (!(caps = gst_pad_get_negotiated_caps (pad))) {
- return;
- }
-
- s = gst_caps_get_structure (caps, 0);
-
- if (s) {
- if (!strcmp (type, "audio")) {
- if ((extractor->audio_channels != -1 && extractor->audio_samplerate != -1) ||
- !(gst_structure_get_int (s, "channels", &extractor->audio_channels) &&
- (gst_structure_get_int (s, "rate", &extractor->audio_samplerate)))) {
-
- return;
- }
- } else if (!strcmp (type, "video")) {
- if ((extractor->video_fps_n != -1 && extractor->video_fps_d != -1 && extractor->video_width != -1 && extractor->video_height != -1) ||
- !(gst_structure_get_fraction (s, "framerate", &extractor->video_fps_n, &extractor->video_fps_d) &&
- gst_structure_get_int (s, "width", &extractor->video_width) &&
- gst_structure_get_int (s, "height", &extractor->video_height))) {
-
- return;
- }
- } else {
- g_assert_not_reached ();
- }
- }
-
- gst_caps_unref (caps);
-}
-
-
-static void
-caps_set_audio (GObject *obj, MetadataExtractor *extractor)
-{
- g_return_if_fail (obj);
- g_return_if_fail (extractor);
-
- caps_set (obj, extractor, "audio");
-}
-
-
-static void
-caps_set_video (GObject *obj, MetadataExtractor *extractor)
-{
- g_return_if_fail (obj);
- g_return_if_fail (extractor);
-
- caps_set (obj, extractor, "video");
-}
-
-
-static void
-update_stream_info (MetadataExtractor *extractor)
-{
- GList *streaminfo;
- GstPad *audiopad, *videopad;
-
- g_return_if_fail (extractor);
-
- streaminfo = NULL;
- audiopad = videopad = NULL;
-
- g_object_get (extractor->playbin, "stream-info", &streaminfo, NULL);
- streaminfo = g_list_copy (streaminfo);
- g_list_foreach (streaminfo, (GFunc) g_object_ref, NULL);
-
- for ( ; streaminfo; streaminfo = streaminfo->next) {
- GObject *info;
- gint type;
- GParamSpec *pspec;
- GEnumValue *val;
-
- info = streaminfo->data;
-
- if (!info) {
- continue;
- }
-
- type = -1;
-
- g_object_get (info, "type", &type, NULL);
- pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (info), "type");
- val = g_enum_get_value (G_PARAM_SPEC_ENUM (pspec)->enum_class, type);
-
- if (!strcmp (val->value_nick, "audio")) {
- extractor->has_audio = TRUE;
- if (!audiopad) {
- g_object_get (info, "object", &audiopad, NULL);
- }
- } else if (!strcmp (val->value_nick, "video")) {
- extractor->has_video = TRUE;
- if (!videopad) {
- g_object_get (info, "object", &videopad, NULL);
- }
- }
- }
-
- if (audiopad) {
- GstCaps *caps;
-
- if ((caps = gst_pad_get_negotiated_caps (audiopad))) {
- caps_set_audio (G_OBJECT (audiopad), extractor);
- gst_caps_unref (caps);
- }
- }
-
- if (videopad) {
- GstCaps *caps;
-
- if ((caps = gst_pad_get_negotiated_caps (videopad))) {
- caps_set_video (G_OBJECT (videopad), extractor);
- gst_caps_unref (caps);
- }
- }
-
- g_list_foreach (streaminfo, (GFunc) g_object_unref, NULL);
- g_list_free (streaminfo);
-}
-
-
-static void
-gst_bus_cb (GstBus *bus, GstMessage *message, MetadataExtractor *extractor)
-{
- GstMessageType msg_type;
-
- g_return_if_fail (bus);
- g_return_if_fail (message);
- g_return_if_fail (extractor);
-
- msg_type = GST_MESSAGE_TYPE (message);
-
- /* somebody else is handling the message, probably in poll_for_state_change */
- if (extractor->ignore_messages_mask & msg_type) {
- gchar *src_name;
-
- src_name = gst_object_get_name (message->src);
- GST_LOG ("Ignoring %s message from element %s as requested",
- gst_message_type_get_name (msg_type), src_name);
- g_free (src_name);
-
- return;
- }
-
- switch (msg_type) {
- case GST_MESSAGE_ERROR: {
- GstMessage *message = NULL;
- GError *gsterror = NULL;
- gchar *debug = NULL;
-
- gst_message_parse_error (message, &gsterror, &debug);
- g_warning ("Error: %s (%s)", gsterror->message, debug);
-
- gst_message_unref (message);
- g_error_free (gsterror);
- g_free (debug);
- }
- break;
-
- case GST_MESSAGE_STATE_CHANGED: {
- GstState old_state, new_state;
-
- old_state = new_state = GST_STATE_NULL;
-
- gst_message_parse_state_changed (message, &old_state, &new_state, NULL);
-
- if (old_state == new_state) {
- break;
- }
-
- /* we only care about playbin (pipeline) state changes */
- if (GST_MESSAGE_SRC (message) != GST_OBJECT (extractor->playbin)) {
- break;
- }
-
- if (old_state == GST_STATE_READY && new_state == GST_STATE_PAUSED) {
- update_stream_info (extractor);
-
- } else if (old_state == GST_STATE_PAUSED && new_state == GST_STATE_READY) {
- /* clean metadata cache */
-
- if (extractor->tagcache) {
- gst_tag_list_free (extractor->tagcache);
- extractor->tagcache = NULL;
- }
-
- if (extractor->audiotags) {
- gst_tag_list_free (extractor->audiotags);
- extractor->audiotags = NULL;
- }
-
- if (extractor->videotags) {
- gst_tag_list_free (extractor->videotags);
- extractor->videotags = NULL;
- }
-
- extractor->has_audio = extractor->has_video = FALSE;
-
- extractor->video_fps_n = extractor->video_fps_d = -1;
- extractor->video_height = extractor->video_width = -1;
- extractor->audio_channels = -1;
- extractor->audio_samplerate = -1;
- }
-
- break;
- }
-
- case GST_MESSAGE_TAG: {
- GstTagList *tag_list, *result;
- GstElementFactory *f;
-
- tag_list = NULL;
-
- gst_message_parse_tag (message, &tag_list);
-
- GST_DEBUG ("Tags: %" GST_PTR_FORMAT, tag_list);
-
- /* all tags */
- result = gst_tag_list_merge (extractor->tagcache, tag_list, GST_TAG_MERGE_KEEP);
-
- if (extractor->tagcache) {
- gst_tag_list_free (extractor->tagcache);
- }
-
- extractor->tagcache = result;
-
- /* media-type-specific tags */
- if (GST_IS_ELEMENT (message->src) && (f = gst_element_get_factory (GST_ELEMENT (message->src)))) {
- const gchar *klass;
- GstTagList **cache;
-
- klass = gst_element_factory_get_klass (f);
-
- cache = NULL;
-
- if (g_strrstr (klass, "Audio")) {
- cache = &extractor->audiotags;
- } else if (g_strrstr (klass, "Video")) {
- cache = &extractor->videotags;
- }
-
- if (cache) {
- result = gst_tag_list_merge (*cache, tag_list, GST_TAG_MERGE_KEEP);
- if (*cache) {
- gst_tag_list_free (*cache);
- }
- *cache = result;
- }
- }
-
- /* clean up */
- gst_tag_list_free (tag_list);
-
- break;
- }
-
- default:
- break;
- }
-}
-
-
-static void
-add_int64_info (GHashTable *metadata, gchar *key, gint64 info)
-{
- gchar *str_info;
-
- str_info = g_strdup_printf ("%" G_GINT64_FORMAT, info);
- g_hash_table_insert (metadata, key, str_info);
-}
-
-
-static void
-add_uint_info (GHashTable *metadata, gchar *key, guint info)
-{
- gchar *str_info;
-
- str_info = g_strdup_printf ("%d", info);
- g_hash_table_insert (metadata, key, str_info);
-}
-
-
-static void
-add_string_gst_tag (GHashTable *metadata, const gchar *key, GstTagList *tag_list, const gchar *tag)
-{
- gboolean ret;
- gchar *s;
-
- s = NULL;
-
- ret = gst_tag_list_get_string (tag_list, tag, &s);
-
- if (s) {
- if (ret && s[0] != '\0') {
- g_hash_table_insert (metadata, g_strdup (key), s);
- } else {
- g_free (s);
- }
- }
-}
-
-
-static void
-add_uint_gst_tag (GHashTable *metadata, const gchar *key, GstTagList *tag_list, const gchar *tag)
-{
- gboolean ret;
- guint n;
-
- ret = gst_tag_list_get_uint (tag_list, tag, &n);
-
- if (ret) {
- g_hash_table_insert (metadata, g_strdup (key), g_strdup_printf ("%d", n));
- }
-}
-
-
-static void
-add_double_gst_tag (GHashTable *metadata, const gchar *key, GstTagList *tag_list, const gchar *tag)
-{
- gboolean ret;
- gdouble n;
-
- ret = gst_tag_list_get_double (tag_list, tag, &n);
-
- if (ret) {
- g_hash_table_insert (metadata, g_strdup (key), g_strdup_printf ("%f", n));
- }
-}
-
-
-static void
-add_year_of_gdate_gst_tag (GHashTable *metadata, const gchar *key, GstTagList *tag_list, const gchar *tag)
-{
- gboolean ret;
- GDate *date;
-
- date = NULL;
-
- ret = gst_tag_list_get_date (tag_list, tag, &date);
-
- if (ret) {
- gchar buf[10];
-
- if (g_date_strftime (buf, 10, "%Y", date)) {
- g_hash_table_insert (metadata, g_strdup (key), g_strdup (buf));
- }
- }
-
- if (date) {
- g_date_free (date);
- }
-}
-
-
-static gint64
-get_media_duration (MetadataExtractor *extractor)
-{
- gint64 duration;
- GstFormat fmt;
-
- g_return_val_if_fail (extractor, -1);
- g_return_val_if_fail (extractor->playbin, -1);
-
- fmt = GST_FORMAT_TIME;
-
- duration = -1;
-
- if (gst_element_query_duration (extractor->playbin, &fmt, &duration) && duration >= 0) {
- return duration / GST_SECOND;
- } else {
- return -1;
- }
-}
-
-
-static void
-extract_metadata (MetadataExtractor *extractor, GHashTable *metadata)
-{
- g_return_if_fail (extractor);
- g_return_if_fail (metadata);
-
- if (extractor->audio_channels >= 0) {
- add_uint_info (metadata, g_strdup ("Audio:Channels"), (guint) extractor->audio_channels);
- }
-
- if (extractor->audio_samplerate >= 0) {
- add_uint_info (metadata, g_strdup ("Audio:Samplerate"), (guint) extractor->audio_samplerate);
- }
-
- if (extractor->video_height >= 0) {
- add_uint_info (metadata, g_strdup ("Video:Height"), (guint) extractor->video_height);
- }
-
- if (extractor->video_width >= 0) {
- add_uint_info (metadata, g_strdup ("Video:Width"), (guint) extractor->video_width);
- }
-
- if (extractor->video_fps_n >= 0 && extractor->video_fps_d >= 0) {
- add_uint_info (metadata, g_strdup ("Video:FrameRate"),
- (guint) ((extractor->video_fps_n + extractor->video_fps_d / 2) / extractor->video_fps_d));
- }
-
- if (extractor->tagcache) {
- gint64 duration;
-
- /* audio */
- add_string_gst_tag (metadata, "Audio:Album", extractor->tagcache, GST_TAG_ALBUM);
- add_uint_gst_tag (metadata, "Audio:AlbumTrackCount", extractor->tagcache, GST_TAG_TRACK_COUNT);
- add_uint_gst_tag (metadata, "Audio:TrackNo", extractor->tagcache, GST_TAG_TRACK_NUMBER);
- add_uint_gst_tag (metadata, "Audio:DiscNo", extractor->tagcache, GST_TAG_ALBUM_VOLUME_NUMBER);
- add_string_gst_tag (metadata, "Audio:Performer", extractor->tagcache, GST_TAG_PERFORMER);
- add_double_gst_tag (metadata, "Audio:TrackGain", extractor->tagcache, GST_TAG_TRACK_GAIN);
- add_double_gst_tag (metadata, "Audio:PeakTrackGain", extractor->tagcache, GST_TAG_TRACK_PEAK);
- add_double_gst_tag (metadata, "Audio:AlbumGain", extractor->tagcache, GST_TAG_ALBUM_GAIN);
- add_double_gst_tag (metadata, "Audio:AlbumPeakGain", extractor->tagcache, GST_TAG_ALBUM_PEAK);
- add_year_of_gdate_gst_tag (metadata, "Audio:ReleaseDate", extractor->tagcache, GST_TAG_DATE);
- add_string_gst_tag (metadata, "Audio:Genre", extractor->tagcache, GST_TAG_GENRE);
- add_string_gst_tag (metadata, "Audio:Codec", extractor->tagcache, GST_TAG_AUDIO_CODEC);
-
- /* video */
- add_string_gst_tag (metadata, "Video:Codec", extractor->tagcache, GST_TAG_VIDEO_CODEC);
-
- /* general */
- add_string_gst_tag (metadata, "File:Copyright", extractor->tagcache, GST_TAG_COPYRIGHT);
- add_string_gst_tag (metadata, "File:License", extractor->tagcache, GST_TAG_LICENSE);
- add_string_gst_tag (metadata, "DC:Coverage", extractor->tagcache, GST_TAG_LOCATION);
-
- duration = get_media_duration (extractor);
-
- /* Sometimes it is unclear to what a tag belongs to! */
- if (extractor->has_video) {
- add_string_gst_tag (metadata, "Video:Title", extractor->tagcache, GST_TAG_TITLE);
- add_string_gst_tag (metadata, "Video:Comments", extractor->tagcache, GST_TAG_COMMENT);
- /* FIXME: is it a good idea to use GST_TAG_ARTIST as author?! */
- add_string_gst_tag (metadata, "Video:Author", extractor->tagcache, GST_TAG_ARTIST);
- add_string_gst_tag (metadata, "File:Copyright", extractor->tagcache, GST_TAG_COPYRIGHT);
-
- if (duration >= 0) {
- add_int64_info (metadata, g_strdup ("Video:Duration"), duration);
- }
-
- } else if (extractor->has_audio) {
- /* No video? So we assume we are treating a song */
- add_string_gst_tag (metadata, "Audio:Title", extractor->tagcache, GST_TAG_TITLE);
- add_string_gst_tag (metadata, "Audio:Artist", extractor->tagcache, GST_TAG_ARTIST);
- add_string_gst_tag (metadata, "Audio:Comment", extractor->tagcache, GST_TAG_COMMENT);
-
- if (duration >= 0) {
- add_int64_info (metadata, g_strdup ("Audio:Duration"), duration);
- }
- }
- }
-
- if (extractor->audiotags) {
- add_uint_gst_tag (metadata, "Audio:Bitrate", extractor->tagcache, GST_TAG_BITRATE);
- }
-
- if (extractor->videotags) {
- add_uint_gst_tag (metadata, "Video:Bitrate", extractor->tagcache, GST_TAG_BITRATE);
- }
-}
-
-
-static gboolean
-poll_for_state_change (MetadataExtractor *extractor, GstState state)
-{
- GstBus *bus;
- GstMessageType events, saved_events;
-
- g_return_val_if_fail (extractor, FALSE);
- g_return_val_if_fail (extractor->playbin, FALSE);
-
- bus = gst_element_get_bus (extractor->playbin);
-
- events = (GST_MESSAGE_STATE_CHANGED | GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
-
- saved_events = extractor->ignore_messages_mask;
-
- if (extractor->playbin) {
- /* we do want the main handler to process state changed messages for
- * playbin as well, otherwise it won't hook up the timeout etc. */
- extractor->ignore_messages_mask |= (events ^ GST_MESSAGE_STATE_CHANGED);
- } else {
- extractor->ignore_messages_mask |= events;
- }
-
-
- for (;;) {
- GstMessage *message;
- GstElement *src;
-
- message = gst_bus_poll (bus, events, GST_SECOND * 5);
-
- if (!message) {
- goto timed_out;
- }
-
- src = (GstElement *) GST_MESSAGE_SRC (message);
-
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_STATE_CHANGED: {
- GstState old, new, pending;
-
- old = new = pending = GST_STATE_NULL;
-
- if (src == extractor->playbin) {
- gst_message_parse_state_changed (message, &old, &new, &pending);
-
- if (new == state) {
- gst_message_unref (message);
- goto success;
- }
- }
- }
- break;
-
- case GST_MESSAGE_ERROR: {
- gchar *debug = NULL;
- GError *gsterror = NULL;
-
- gst_message_parse_error (message, &gsterror, &debug);
-
- g_warning ("Error: %s (%s)", gsterror->message, debug);
-
- g_error_free (gsterror);
- gst_message_unref (message);
- g_free (debug);
- goto error;
- }
- break;
-
- case GST_MESSAGE_EOS: {
- g_warning ("Media file could not be played.");
- gst_message_unref (message);
- goto error;
- }
- break;
-
- default:
- g_assert_not_reached ();
- break;
- }
-
- gst_message_unref (message);
- }
-
- g_assert_not_reached ();
-
- success:
- /* state change succeeded */
- GST_DEBUG ("state change to %s succeeded", gst_element_state_get_name (state));
- extractor->ignore_messages_mask = saved_events;
- return TRUE;
-
- timed_out:
- /* it's taking a long time to open */
- GST_DEBUG ("state change to %s timed out, returning success", gst_element_state_get_name (state));
- extractor->ignore_messages_mask = saved_events;
- return TRUE;
-
- error:
- GST_DEBUG ("error while waiting for state change to %s", gst_element_state_get_name (state));
- /* already set *error */
- extractor->ignore_messages_mask = saved_events;
- return FALSE;
-}
-
-
-static void
-tracker_extract_gstreamer (const gchar *uri, GHashTable *metadata)
-{
- MetadataExtractor *extractor;
- gchar *mrl;
- GstElement *fakesink_audio, *fakesink_video;
- GstBus *bus;
-
- g_return_if_fail (uri);
- g_return_if_fail (metadata);
-
- g_type_init ();
-
- gst_init (NULL, NULL);
-
- /* set up */
- extractor = g_slice_new0 (MetadataExtractor);
-
- extractor->tagcache = NULL;
- extractor->audiotags = extractor->videotags = NULL;
-
- extractor->has_audio = extractor->has_video = FALSE;
-
- extractor->video_fps_n = extractor->video_fps_d = -1;
- extractor->video_height = extractor->video_width = -1;
- extractor->audio_channels = -1;
- extractor->audio_samplerate = -1;
-
- extractor->ignore_messages_mask = 0;
-
- extractor->playbin = gst_element_factory_make ("playbin", "playbin");
-
-
- /* add bus callback */
- bus = gst_element_get_bus (GST_ELEMENT (extractor->playbin));
- gst_bus_add_signal_watch (bus);
- g_signal_connect (bus, "message", G_CALLBACK (gst_bus_cb), extractor);
- gst_object_unref (bus);
-
-
- mrl = g_strconcat ("file://", uri, NULL);
-
- /* set playbin object */
- g_object_set (G_OBJECT (extractor->playbin), "uri", mrl, NULL);
- g_free (mrl);
-
- fakesink_audio = gst_element_factory_make ("fakesink", "fakesink-audio");
- g_object_set (G_OBJECT (extractor->playbin), "audio-sink", fakesink_audio, NULL);
-
- fakesink_video = gst_element_factory_make ("fakesink", "fakesink-video");
- g_object_set (G_OBJECT (extractor->playbin), "video-sink", fakesink_video, NULL);
-
-
- /* start to parse infos and extract them */
- gst_element_set_state (extractor->playbin, GST_STATE_PAUSED);
-
- poll_for_state_change (extractor, GST_STATE_PAUSED);
-
- extract_metadata (extractor, metadata);
-
-
- /* also clean up */
- gst_element_set_state (extractor->playbin, GST_STATE_NULL);
-
- gst_object_unref (GST_OBJECT (extractor->playbin));
-
- g_slice_free (MetadataExtractor, extractor);
-}
-
-
-TrackerExtractorData data[] = {
- { "audio/*", tracker_extract_gstreamer },
- { "video/*", tracker_extract_gstreamer },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-html.c b/src/tracker-extract/tracker-extract-html.c
deleted file mode 100644
index 7828ad364..000000000
--- a/src/tracker-extract/tracker-extract-html.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2007, Jason Kivlighn (jkivlighn@gmail.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib.h>
-#include <libxml/HTMLparser.h>
-#include "tracker-extract.h"
-
-typedef enum {
- READ_TITLE,
-} tag_type;
-
-
-typedef struct {
- GHashTable *metadata;
- tag_type current;
-} HTMLParseInfo;
-
-
-gboolean
-has_attribute (const xmlChar **atts, const char *attr, const char *val)
-{
- if (!(atts && attr && val)) {
- return FALSE;
- }
-
- int i;
- for (i = 0; atts[i] && atts[i+1]; i+=2) {
- if (strcasecmp ((char*)atts[i], attr) == 0) {
- if (strcasecmp ((char*)atts[i+1], val) == 0) {
- return TRUE;
- }
- }
- }
-
- return FALSE;
-}
-
-
-const xmlChar *
-lookup_attribute (const xmlChar **atts, const char *attr)
-{
- if (!atts || !attr) {
- return NULL;
- }
-
- int i;
- for (i = 0; atts[i] && atts[i+1]; i+=2) {
- if (strcasecmp ((char*)atts[i], attr) == 0) {
- return atts[i+1];
- }
- }
-
- return NULL;
-}
-
-
-void
-startElement (void *info, const xmlChar *name, const xmlChar **atts)
-{
- if (!(info && name)) {
- return;
- }
-
- /* Look for RDFa triple describing the license */
- if (strcasecmp ((char*)name, "a") == 0) {
-
- /* This tag is a license. Ignore, however, if it is referring to another document */
- if (has_attribute (atts, "rel", "license") && !has_attribute (atts, "about", NULL)) {
-
- const xmlChar *href = lookup_attribute (atts, "href");
- if (href) {
- g_hash_table_insert (((HTMLParseInfo *)info)->metadata, g_strdup ("File:License"),
- g_strdup ((char*)href));
- }
- }
-
- } else if (strcasecmp ((char*)name, "title") == 0) {
-
- ((HTMLParseInfo *)info)->current = READ_TITLE;
-
- } else if (strcasecmp ((char*)name, "meta") == 0) {
-
- if (has_attribute (atts, "name", "Author")) {
-
- const xmlChar *author = lookup_attribute (atts, "content");
- if (author) {
- g_hash_table_insert (((HTMLParseInfo *)info)->metadata, g_strdup ("Doc:Author"),
- g_strdup ((char*)author));
- }
- }
-
- if (has_attribute (atts, "name", "DC.Description")) {
-
- const xmlChar *desc = lookup_attribute (atts,"content");
- if (desc) {
- g_hash_table_insert (((HTMLParseInfo *)info)->metadata, g_strdup ("Doc:Comments"),
- g_strdup ((char*)desc));
- }
- }
-
- if (has_attribute (atts, "name", "KEYWORDS") || has_attribute (atts, "name", "keywords")) {
-
- const xmlChar *keywords = lookup_attribute (atts, "content");
- if ( keywords ) {
- g_hash_table_insert (((HTMLParseInfo *)info)->metadata, g_strdup ("Doc:Keywords"),
- g_strdup ((char*)keywords));
- }
- }
- }
-}
-
-
-void
-characters (void *info, const xmlChar *ch, int len)
-{
- switch (((HTMLParseInfo *)info)->current) {
- case READ_TITLE:
- g_hash_table_insert (((HTMLParseInfo *)info)->metadata, g_strdup ("Doc:Title"),
- g_strdup ((char*)ch));
- break;
- default:
- break;
- }
-
- ((HTMLParseInfo *)info)->current = -1;
-}
-
-
-static void
-tracker_extract_html (const gchar* filename, GHashTable *metadata)
-{
- xmlSAXHandler SAXHandlerStruct = {
- NULL, /* internalSubset */
- NULL, /* isStandalone */
- NULL, /* hasInternalSubset */
- NULL, /* hasExternalSubset */
- NULL, /* resolveEntity */
- NULL, /* getEntity */
- NULL, /* entityDecl */
- NULL, /* notationDecl */
- NULL, /* attributeDecl */
- NULL, /* elementDecl */
- NULL, /* unparsedEntityDecl */
- NULL, /* setDocumentLocator */
- NULL, /* startDocument */
- NULL, /* endDocument */
- startElement, /* startElement */
- NULL, /* endElement */
- NULL, /* reference */
- characters, /* characters */
- NULL, /* ignorableWhitespace */
- NULL, /* processingInstruction */
- NULL, /* comment */
- NULL, /* xmlParserWarning */
- NULL, /* xmlParserError */
- NULL, /* xmlParserError */
- NULL, /* getParameterEntity */
- NULL, /* cdataBlock */
- NULL, /* externalSubset */
- 1, /* initialized */
- NULL, /* private */
- NULL, /* startElementNsSAX2Func */
- NULL, /* endElementNsSAX2Func */
- NULL /* xmlStructuredErrorFunc */
- };
-
- HTMLParseInfo info = { metadata, -1 };
-
- htmlDocPtr doc;
- doc = htmlSAXParseFile (filename, NULL, &SAXHandlerStruct, &info);
- if (doc) {
- xmlFreeDoc (doc);
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "text/html", tracker_extract_html },
- { "application/xhtml+xml", tracker_extract_html },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-imagemagick.c b/src/tracker-extract/tracker-extract-imagemagick.c
deleted file mode 100644
index 862445453..000000000
--- a/src/tracker-extract/tracker-extract-imagemagick.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-
-#include "tracker-extract.h"
-#include "tracker-xmp.h"
-
-
-static void
-tracker_extract_imagemagick (const gchar *filename, GHashTable *metadata)
-{
- gchar *argv[6];
- gchar *identify;
- gchar **lines;
- gint exit_status;
-
- g_return_if_fail (filename != NULL);
-
- /* imagemagick crashes trying to extract from xcf files */
- if (g_str_has_suffix (filename, ".xcf")) {
- return;
- }
-
- argv[0] = g_strdup ("identify");
- argv[1] = g_strdup ("-format");
- argv[2] = g_strdup ("%w;\\n%h;\\n%c;\\n");
- if (g_str_has_suffix (filename, ".xcf")) {
- argv[3] = g_strdup (filename);
- argv[4] = NULL;
- }
- else {
- argv[3] = g_strdup ("-ping");
- argv[4] = g_strdup (filename);
- }
- argv[5] = NULL;
-
- if (tracker_spawn (argv, 10, &identify, &exit_status)) {
- if (exit_status == EXIT_SUCCESS) {
- lines = g_strsplit (identify, ";\n", 4);
- g_hash_table_insert (metadata, g_strdup ("Image:Width"), g_strdup (lines[0]));
- g_hash_table_insert (metadata, g_strdup ("Image:Height"), g_strdup (lines[1]));
- g_hash_table_insert (metadata, g_strdup ("Image:Comments"), g_strdup (g_strescape (lines[2], "")));
- }
- }
-
-#ifdef HAVE_EXEMPI
-
- /* convert is buggy atm so disable temporarily */
-
- return;
-
- gchar *xmp;
-
- argv[0] = g_strdup ("convert");
- argv[1] = g_strdup (filename);
- argv[2] = g_strdup ("xmp:-");
- argv[3] = NULL;
-
- if (tracker_spawn (argv, 10, &xmp, &exit_status)) {
- if (exit_status == EXIT_SUCCESS && xmp) {
- tracker_read_xmp (xmp, strlen (xmp), metadata);
- }
- }
-#endif
-}
-
-
-TrackerExtractorData data[] = {
- { "image/*", tracker_extract_imagemagick },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-libxine.c b/src/tracker-extract/tracker-extract-libxine.c
deleted file mode 100644
index 387efa630..000000000
--- a/src/tracker-extract/tracker-extract-libxine.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/* Tracker - audio/video metadata extraction based on Xine
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <xine.h>
-#include <glib.h>
-
-#include "tracker-extract.h"
-
-
-static void
-add_uint32_info (GHashTable *metadata, char *key, uint32_t info)
-{
- char *str_info;
-
- str_info = g_strdup_printf ("%d", info);
- g_hash_table_insert (metadata, key, str_info);
-}
-
-
-/* Take an absolute path to a file and fill a hashtable with metadata.
- */
-void
-tracker_extract_xine (gchar *uri, GHashTable *metadata)
-{
- xine_t *xine_base;
- xine_audio_port_t *audio_port;
- xine_video_port_t *video_port;
- xine_stream_t *stream;
- char *mrl;
-
- gboolean has_audio;
- gboolean has_video;
-
- int pos_stream;
- int pos_time;
- int length_time;
-
- const char *comment;
- const char *title;
- const char *author;
- const char *album;
- const char *year;
- const char *genre;
- const char *track;
-
- g_return_if_fail (uri && metadata);
-
-
- xine_base = xine_new ();
-
- if (!xine_base) {
- return;
- }
-
- xine_init (xine_base);
-
- audio_port = xine_open_audio_driver (xine_base, NULL, NULL);
- video_port = xine_open_video_driver (xine_base, NULL, XINE_VISUAL_TYPE_NONE, NULL);
-
- if (!audio_port || !video_port) {
- xine_exit (xine_base);
- return;
- }
-
- stream = xine_stream_new (xine_base, audio_port, video_port);
-
- if (!stream) {
- xine_close_audio_driver (xine_base, audio_port);
- xine_close_video_driver (xine_base, video_port);
- xine_exit (xine_base);
- return;
- }
-
- mrl = g_strconcat ("file://", uri, NULL);
-
- if (!xine_open (stream, mrl)) {
- g_free (mrl);
- xine_dispose (stream);
- xine_close_audio_driver (xine_base, audio_port);
- xine_close_video_driver (xine_base, video_port);
- xine_exit (xine_base);
- return;
- }
-
- g_free (mrl);
-
-
- has_audio = xine_get_stream_info (stream, XINE_STREAM_INFO_HAS_AUDIO);
- has_video = xine_get_stream_info (stream, XINE_STREAM_INFO_HAS_VIDEO);
-
-
- if (xine_get_pos_length (stream, &pos_stream, &pos_time, &length_time)) {
- if (length_time >= 0) {
- uint32_t duration;
-
- duration = (uint32_t) length_time / 1000; /* from miliseconds to seconds */
-
- if (has_video) {
- add_uint32_info (metadata, g_strdup ("Video:Duration"), duration);
- } else if (has_audio) {
- add_uint32_info (metadata, g_strdup ("Audio:Duration"), duration);
- }
- }
- }
-
-
- /* Video */
-
- if (has_video) {
- uint32_t n, n0;
- const char *video_codec;
-
- n = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_HEIGHT);
- n0 = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_WIDTH);
- if (n > 0 && n0 > 0) {
- add_uint32_info (metadata, g_strdup ("Video:Height"), n);
- add_uint32_info (metadata, g_strdup ("Video:Width"), n0);
- }
-
- n = xine_get_stream_info (stream, XINE_STREAM_INFO_FRAME_DURATION);
- if (n > 0) {
- /* 90000 because it is how is done in Xine! */
- add_uint32_info (metadata, g_strdup ("Video:FrameRate"), 90000 / n);
- }
-
- n = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_BITRATE);
- if (n > 0) {
- add_uint32_info (metadata, g_strdup ("Video:Bitrate"), n);
- }
-
- video_codec = xine_get_meta_info (stream, XINE_META_INFO_VIDEOCODEC);
- if (video_codec) {
- g_hash_table_insert (metadata, g_strdup ("Video:Codec"), g_strdup (video_codec));
- }
- }
-
-
- /* Audio */
-
- if (has_audio) {
- uint32_t n;
- const char *audio_codec;
-
- n = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_BITRATE);
- if (n > 0) {
- add_uint32_info (metadata, g_strdup ("Audio:Bitrate"), n);
- }
-
- n = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_SAMPLERATE);
- if (n > 0) {
- add_uint32_info (metadata, g_strdup ("Audio:Samplerate"), n);
- }
-
- n = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_CHANNELS);
- if (n > 0) {
- add_uint32_info (metadata, g_strdup ("Audio:Channels"), n);
- }
-
- audio_codec = xine_get_meta_info (stream, XINE_META_INFO_AUDIOCODEC);
- if (audio_codec) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Codec"), g_strdup (audio_codec));
- }
- }
-
-
- /* Tags */
-
- comment = xine_get_meta_info (stream, XINE_META_INFO_COMMENT);
- if (comment) {
- if (has_video) {
- g_hash_table_insert (metadata, g_strdup ("Video:Comment"), g_strdup (comment));
- } else if (has_audio) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Comment"), g_strdup (comment));
- }
- }
-
- title = xine_get_meta_info (stream, XINE_META_INFO_TITLE);
- if (title) {
- if (has_video) {
- g_hash_table_insert (metadata, g_strdup ("Video:Title"), g_strdup (title));
- } else if (has_audio) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Title"), g_strdup (title));
- }
- }
-
- author = xine_get_meta_info (stream, XINE_META_INFO_ARTIST);
- if (author) {
- if (has_video) {
- g_hash_table_insert (metadata, g_strdup ("Video:Author"), g_strdup (author));
- } else if (has_audio) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Author"), g_strdup (author));
- }
- }
-
- album = xine_get_meta_info (stream, XINE_META_INFO_ALBUM);
- if (album) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Album"), g_strdup (album));
- }
-
- year = xine_get_meta_info (stream, XINE_META_INFO_YEAR);
- if (year) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Year"), g_strdup (year));
- }
-
- genre = xine_get_meta_info (stream, XINE_META_INFO_GENRE);
- if (genre) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Genre"), g_strdup (genre));
- }
-
- track = xine_get_meta_info (stream, XINE_META_INFO_TRACK_NUMBER);
- if (track) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Track"), g_strdup (track));
- }
-
- /* FIXME: "Video.Copyright" seems missing */
- /* g_hash_table_insert (metadata, g_strdup ("Video.Copyright"), NULL); */
-
-
- xine_dispose (stream);
-
- xine_close_audio_driver (xine_base, audio_port);
- xine_close_video_driver (xine_base, video_port);
-
- xine_exit (xine_base);
-}
-
-
-TrackerExtractorData data[] = {
- { "audio/*", tracker_extract_xine },
- { "video/*", tracker_extract_xine },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
deleted file mode 100644
index b226b52ab..000000000
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ /dev/null
@@ -1,1094 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifndef OS_WIN32
-#include <sys/mman.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include "tracker-extract.h"
-
-#define MAX_FILE_READ 1024 * 1024 * 10
-
-
-typedef struct {
- char * text;
- char * type;
-} Matches;
-
-
-static struct {
- char * name;
- char *meta_name;
- gboolean writable;
-} tags[] = {
- {"title", "Audio.Title", FALSE},
- {"artist", "Audio.Artist", FALSE},
- {"album", "Audio.Album", FALSE},
- {"albumartist", "Audio.AlbumArtist", FALSE},
- {"trackcount", "Audio.AlbumTrackCount", FALSE},
- {"tracknumber", "Audio.TrackNo", FALSE},
- {"DiscNo", "Audio.DiscNo", FALSE},
- {"Performer", "Audio.Performer", FALSE},
- {"TrackGain", "Audio.TrackGain", FALSE},
- {"TrackPeakGain", "Audio.TrackPeakGain", FALSE},
- {"AlbumGain", "Audio.AlbumGain", FALSE},
- {"AlbumPeakGain", "Audio.AlbumPeakGain", FALSE},
- {"date", "Audio.ReleaseDate", FALSE},
- {"comment", "Audio.Comment", FALSE},
- {"genre", "Audio.Genre", FALSE},
- {"Codec", "Audio.Codec", FALSE},
- {"CodecVersion", "Audio.CodecVersion", FALSE},
- {"Samplerate", "Audio.Samplerate", FALSE},
- {"Channels", "Audio.Channels", FALSE},
- {"MBAlbumID", "Audio.MBAlbumID", FALSE},
- {"MBArtistID", "Audio.MBArtistID", FALSE},
- {"MBAlbumArtistID", "Audio.MBAlbumArtistID", FALSE},
- {"MBTrackID", "Audio.MBTrackID", FALSE},
- {"Lyrics", "Audio.Lyrics", FALSE},
- {"Copyright", "File.Copyright", FALSE},
- {"License", "File.License", FALSE},
- {"Organization", "File.Organization", FALSE},
- {"Location", "File.Location", FALSE},
- {"Publisher", "File.Publisher", FALSE},
- {NULL, NULL, FALSE},
-};
-
-
-typedef struct {
- char * title;
- char * artist;
- char * album;
- char * year;
- char * comment;
- char * genre;
-} id3tag;
-
-
-static const char *const genre_names[] = {
- "Blues",
- "Classic Rock",
- "Country",
- "Dance",
- "Disco",
- "Funk",
- "Grunge",
- "Hip-Hop",
- "Jazz",
- "Metal",
- "New Age",
- "Oldies",
- "Other",
- "Pop",
- "R&B",
- "Rap",
- "Reggae",
- "Rock",
- "Techno",
- "Industrial",
- "Alternative",
- "Ska",
- "Death Metal",
- "Pranks",
- "Soundtrack",
- "Euro-Techno",
- "Ambient",
- "Trip-Hop",
- "Vocal",
- "Jazz+Funk",
- "Fusion",
- "Trance",
- "Classical",
- "Instrumental",
- "Acid",
- "House",
- "Game",
- "Sound Clip",
- "Gospel",
- "Noise",
- "Alt. Rock",
- "Bass",
- "Soul",
- "Punk",
- "Space",
- "Meditative",
- "Instrumental Pop",
- "Instrumental Rock",
- "Ethnic",
- "Gothic",
- "Darkwave",
- "Techno-Industrial",
- "Electronic",
- "Pop-Folk",
- "Eurodance",
- "Dream",
- "Southern Rock",
- "Comedy",
- "Cult",
- "Gangsta Rap",
- "Top 40",
- "Christian Rap",
- "Pop/Funk",
- "Jungle",
- "Native American",
- "Cabaret",
- "New Wave",
- "Psychedelic",
- "Rave",
- "Showtunes",
- "Trailer",
- "Lo-Fi",
- "Tribal",
- "Acid Punk",
- "Acid Jazz",
- "Polka",
- "Retro",
- "Musical",
- "Rock & Roll",
- "Hard Rock",
- "Folk",
- "Folk/Rock",
- "National Folk",
- "Swing",
- "Fast-Fusion",
- "Bebob",
- "Latin",
- "Revival",
- "Celtic",
- "Bluegrass",
- "Avantgarde",
- "Gothic Rock",
- "Progressive Rock",
- "Psychedelic Rock",
- "Symphonic Rock",
- "Slow Rock",
- "Big Band",
- "Chorus",
- "Easy Listening",
- "Acoustic",
- "Humour",
- "Speech",
- "Chanson",
- "Opera",
- "Chamber Music",
- "Sonata",
- "Symphony",
- "Booty Bass",
- "Primus",
- "Porn Groove",
- "Satire",
- "Slow Jam",
- "Club",
- "Tango",
- "Samba",
- "Folklore",
- "Ballad",
- "Power Ballad",
- "Rhythmic Soul",
- "Freestyle",
- "Duet",
- "Punk Rock",
- "Drum Solo",
- "A Cappella",
- "Euro-House",
- "Dance Hall",
- "Goa",
- "Drum & Bass",
- "Club-House",
- "Hardcore",
- "Terror",
- "Indie",
- "BritPop",
- "Negerpunk",
- "Polsk Punk",
- "Beat",
- "Christian Gangsta Rap",
- "Heavy Metal",
- "Black Metal",
- "Crossover",
- "Contemporary Christian",
- "Christian Rock",
- "Merengue",
- "Salsa",
- "Thrash Metal",
- "Anime",
- "JPop",
- "Synthpop"
-};
-
-
-#define GENRE_NAME_COUNT \
- ((unsigned int)(sizeof genre_names / sizeof (const char *const)))
-
-
-#define MAX_MP3_SCAN_DEEP 16768
-const unsigned int max_frames_scan=1024;
-enum{ MPEG_ERR=0,MPEG_V1=1,MPEG_V2=2,MPEG_V25=3};
-
-enum{ LAYER_ERR=0,LAYER_1=1,LAYER_2=2,LAYER_3=3};
-
-const unsigned int sync_mask=0xE0FF;
-const unsigned int mpeg_ver_mask=0x1800;
-const unsigned int mpeg_layer_mask=0x600;
-const unsigned int bitrate_mask=0xF00000;
-const unsigned int freq_mask=0xC0000;
-const unsigned int ch_mask=0xC0000000;
-const unsigned int pad_mask=0x20000;
-
-unsigned int bitrate_table[16][6]={
- {0,0,0,0,0,0},
- {32, 32, 32, 32, 32, 8},
- {64, 48, 40, 64, 48, 16},
- {96, 56, 48, 96, 56, 24},
- {128, 64 , 56 , 128, 64 , 32},
- {160, 80 , 64 , 160, 80 , 64},
- {192, 96 , 80 , 192, 96 , 80},
- {224, 112, 96 , 224, 112, 56},
- {256, 128, 112, 256, 128, 64},
- {288, 160, 128, 288, 160, 128},
- {320, 192, 160, 320, 192, 160},
- {352, 224, 192, 352, 224, 112},
- {384, 256, 224, 384, 256, 128},
- {416, 320, 256, 416, 320, 256},
- {448, 384, 320, 448, 384, 320},
- {-1,-1,-1,-1,-1,-1}
-};
-int freq_table[4][3]={
- {44100,22050,11025},
- {48000,24000,12000},
- {32000,16000,8000}
-};
-
-
-#define OK 0
-#define SYSERR 1
-#define INVALID_ID3 2
-
-static char *
-get_utf8 (const char *txt, int size, gpointer p1, gpointer p2, gpointer p3)
-{
- if (!g_utf8_validate (txt, size, NULL)) {
- return g_locale_to_utf8 (txt, size, NULL, NULL, NULL);
- } else {
- return g_strndup (txt, size);
- }
-}
-
-static int get_id3 (const char * data,
- size_t size,
- id3tag * id3) {
-
- const char * pos;
-
-
- if (size < 128) return INVALID_ID3;
-
- pos = &data[size - 128];
-
- if (0 != strncmp ("TAG",
- pos,
- 3)) {
- return INVALID_ID3;
- }
-
- pos += 3;
-
- id3->title = get_utf8 (pos,
- 30,
- NULL, NULL, NULL);
- pos += 30;
- id3->artist = get_utf8 (pos,
- 30,
- NULL, NULL, NULL);
- pos += 30;
- id3->album = get_utf8 (pos,
- 30,
- NULL, NULL, NULL);
- pos += 30;
- id3->year = get_utf8 (pos, 4, NULL, NULL, NULL);
-
- pos += 4;
- id3->comment = get_utf8 (pos,
- 30,
- NULL, NULL, NULL);
- pos += 30;
- id3->genre = "";
- if ( (unsigned int)pos[0] < GENRE_NAME_COUNT) {
- id3->genre = g_strdup (genre_names[(unsigned) pos[0]]);
- }
-
- return OK;
-}
-
-
-gboolean
-tracker_metadata_mp3_is_writable (const char *meta)
-{
- int i;
-
- i = 0;
- while (tags[i].name != NULL) {
-
- if (strcmp (tags[i].meta_name, meta) == 0) {
- return tags[i].writable;
- }
-
- i++;
- }
-
- return FALSE;
-
-}
-
-
-gboolean
-tracker_metadata_mp3_write (const char *meta_name, const char *value)
-{
- /* to do */
- return FALSE;
-}
-
-
-
-static void
-mp3_parse (const char *data, size_t size, GHashTable *metadata)
-{
-
- unsigned int header;
- int counter=0;
- char mpeg_ver=0;
- char layer_ver=0;
- int idx_num=0;
- unsigned int bitrate=0; /*used for each frame*/
- unsigned int avg_bps=0; /*average bitrate*/
- int vbr_flag=0;
- unsigned int length=0;
- unsigned int sample_rate=0;
- int ch=0;
- unsigned int frame_size;
- unsigned int frames=0;
- size_t pos = 0;
-
- do {
- /* seek for frame start */
- if (pos + sizeof(header) > size) {
- return;
- }/*unable to find header*/
-
- memcpy (&header, &data[pos], sizeof (header));
-
- if ((header&sync_mask) == sync_mask) break;/*found header sync*/
-
- pos++;
- counter++; /*next try*/
-
- } while (counter < MAX_MP3_SCAN_DEEP);
-
- if (counter>=MAX_MP3_SCAN_DEEP) {
- return;
- };/*give up to find mp3 header*/
-
-
- do { /*ok, now we found a mp3 frame header*/
- frames++;
- switch (header & mpeg_ver_mask){
- case 0x1000:
- mpeg_ver = MPEG_ERR; /*error*/
- break;
- case 0x800:
- g_hash_table_insert (metadata, g_strdup ("Audio.Codec"), g_strdup ("MPEG"));
- g_hash_table_insert (metadata, g_strdup ("Audio.CodecVersion"), g_strdup ("2"));
- mpeg_ver = MPEG_V2;
- break;
- case 0x1800:
- g_hash_table_insert (metadata, g_strdup ("Audio.Codec"), g_strdup ("MPEG"));
- g_hash_table_insert (metadata, g_strdup ("Audio.CodecVersion"), g_strdup ("1"));
- mpeg_ver = MPEG_V1;
- break;
- case 0:
- g_hash_table_insert (metadata, g_strdup ("Audio.Codec"), g_strdup ("MPEG"));
- g_hash_table_insert (metadata, g_strdup ("Audio.CodecVersion"), g_strdup ("2.5"));
- mpeg_ver = MPEG_V25;
- break;
- }
- switch(header&mpeg_layer_mask){
- case 0x400:
- layer_ver=LAYER_2;
- break;
- case 0x200:
- layer_ver=LAYER_3;
- break;
- case 0x600:
- layer_ver=LAYER_1;
- break;
- case 0:
- layer_ver=LAYER_ERR;/*error*/
- }
- if (!layer_ver||!mpeg_ver)
- return; /*unknown mpeg type*/
- if (mpeg_ver<3)
- idx_num=(mpeg_ver-1)*3+layer_ver-1;
- else
- idx_num=2+layer_ver;
-
- bitrate = 1000 * bitrate_table[(header&bitrate_mask)>>20][idx_num];
-
- if (bitrate<0) {
- frames--;
- break;
- }
-
- sample_rate = freq_table[(header&freq_mask)>>18][mpeg_ver-1];
- if (sample_rate<0) {
- frames--;
- break;
- } /*error in header*/
-
- if ((header&ch_mask)==ch_mask) {
- ch=1;
- g_hash_table_insert (metadata, g_strdup ("Audio.Channels"), g_strdup ("1"));
- } else {
- ch=2; /*stereo non stereo select*/
- g_hash_table_insert (metadata, g_strdup ("Audio.Channels"), g_strdup ("2"));
- }
-
- frame_size = 144*bitrate/(sample_rate?sample_rate:1)+((header&pad_mask)>>17);
- avg_bps += bitrate/1000;
-
- pos += frame_size-4;
-
- if (frames > max_frames_scan)
- break; /*optimization*/
- if (avg_bps/frames!=bitrate/1000)
- vbr_flag=1;
- if (pos + sizeof(header) > size)
- break; /* EOF */
- memcpy(&header,
- &data[pos],
- sizeof(header));
- } while ((header&sync_mask)==sync_mask);
-
- if (!frames) return; /*no valid frames*/
-
- avg_bps = avg_bps/frames;
-
- if (max_frames_scan){ /*if not all frames scaned*/
- length=size/(avg_bps?avg_bps:bitrate?bitrate:0xFFFFFFFF)/125;
- } else{
- length=1152*frames/(sample_rate?sample_rate:0xFFFFFFFF);
- }
-
- g_hash_table_insert (metadata, g_strdup ("Audio.Duration"), g_strdup_printf ("%d", length));
- g_hash_table_insert (metadata, g_strdup ("Audio.Samplerate"), g_strdup_printf ("%d", sample_rate));
- g_hash_table_insert (metadata, g_strdup ("Audio.Bitrate"), g_strdup_printf ("%d", avg_bps));
-
-}
-
-
-static void
-get_id3v24_tags (const char *data, size_t size, GHashTable *metadata)
-{
- Matches tmap[] = {
- {"COMM", "Audio.Comment"},
- {"TCOP", "File.Copyright"},
- {"TDRC", "Audio.ReleaseDate"},
- {"TCON", "Audio.Genre"},
- {"TIT1", "Audio.Genre"},
- {"TENC", "File.Publisher"},
- {"TEXT", "Audio.Lyrics"},
- {"TPE1", "Audio.Artist"},
- {"TPE2", "Audio.Artist"},
- {"TPE3", "Audio.Performer"},
- {"TOPE", "Audio.Artist"},
- {"TPUB", "File.Publisher"},
- {"TOAL", "Audio.Album"},
- {"TALB", "Audio.Album"},
- {"TLAN", "File.Language"},
- {"TIT2", "Audio.Title"},
- {"TIT3", "Audio.Comment"},
- {"WCOP", "File.License"},
- {NULL, 0},
- };
-
-
-
- int unsync;
- int extendedHdr;
- int experimental;
- int footer;
- unsigned int tsize;
- unsigned int pos;
- unsigned int ehdrSize;
- unsigned int padding;
-
- if ( (size < 16) ||
- (data[0] != 0x49) ||
- (data[1] != 0x44) ||
- (data[2] != 0x33) ||
- (data[3] != 0x04) ||
- (data[4] != 0x00) ) {
-
- ////g_print ("no id3v24 tags info (stage 1)\n");
- return;
- }
-
- unsync = (data[5] & 0x80) > 0;
- extendedHdr = (data[5] & 0x40) > 0;
- experimental = (data[5] & 0x20) > 0;
- footer = (data[5] & 0x10) > 0;
- tsize = ( ( (data[6] & 0x7F) << 21 ) |
- ( (data[7] & 0x7F) << 14 ) |
- ( (data[8] & 0x7F) << 7 ) |
- ( (data[9] & 0x7F) << 0 ) );
-
- if ( (tsize + 10 > size) || (experimental) ) {
-
- ////g_print ("no id3v24 tags info (stage 2)\n");
- return;
- }
-
-
- pos = 10;
- padding = 0;
- if (extendedHdr) {
- ehdrSize = ( ( (data[10] & 0x7F) << 21 ) |
- ( (data[11] & 0x7F) << 14 ) |
- ( (data[12] & 0x7F) << 7 ) |
- ( (data[13] & 0x7F) << 0 ) );
- pos += ehdrSize;
- }
-
-
- while (pos < tsize) {
- size_t csize;
- int i;
- unsigned short flags;
-
- if (pos + 10 > tsize) {
-
- ////g_print ("no id3v24 tags info (stage 3)\n");
- return;
- }
-
- csize = ( ( (data[pos+4] & 0x7F) << 21 ) |
- ( (data[pos+5] & 0x7F) << 14 ) |
- ( (data[pos+6] & 0x7F) << 7 ) |
- ( (data[pos+7] & 0x7F) << 0 ) );
-
- if ( (pos + 10 + csize > tsize) ||
- (csize > tsize) ||
- (csize == 0) )
- break;
-
- flags = (data[pos+8]<<8) + data[pos+9];
- if ( ( (flags & 0x80) > 0) /* compressed, not yet supported */ ||
- ( (flags & 0x40) > 0) /* encrypted, not supported */ ) {
- pos += 10 + csize;
- continue;
- }
-
- i = 0;
- while (tmap[i].text != NULL) {
- if (0 == strncmp(tmap[i].text,
- (const char*) &data[pos],
- 4)) {
- char * word;
- if ( (flags & 0x20) > 0) {
- /* "group" identifier, skip a byte */
- pos++;
- csize--;
- }
-
- /* this byte describes the encoding
- try to convert strings to UTF-8
- if it fails, then forget it */
- switch (data[pos+10]) {
- case 0x00 :
- word = get_utf8 ((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- case 0x01 :
- word = get_utf8((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- case 0x02 :
- word = get_utf8((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- case 0x03 :
- word = malloc(csize+1);
- memcpy(word,
- &data[pos+11],
- csize);
- word[csize] = '\0';
- break;
-
- default:
- /* bad encoding byte,
- try to convert from iso-8859-1 */
- word = get_utf8((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- }
- pos++;
- csize--;
- if ((word != NULL) && (strlen(word) > 0)) {
-
- if (strcmp (tmap[i].text, "COMM") == 0) {
- char *s = g_strdup (word+strlen(word)+1);
- g_free (word);
- word = s;
- }
-
- g_hash_table_insert (metadata, g_strdup (tmap[i].type), g_strdup (word));
- } else {
- g_free (word);
- }
- break;
- }
- i++;
- }
- pos += 10 + csize;
- }
-}
-
-
-static void
-get_id3v23_tags (const char *data, size_t size, GHashTable *metadata)
-{
- Matches tmap[] = {
- {"COMM", "Audio.Comment"},
- {"TCOP", "File.Copyright"},
- {"TDAT", "Audio.ReleaseDate"},
- {"TCON", "Audio.Genre"},
- {"TIT1", "Audio.Genre"},
- {"TENC", "File.Publisher"},
- {"TEXT", "Audio.Lyrics"},
- {"TPE1", "Audio.Artist"},
- {"TPE2", "Audio.Artist"},
- {"TPE3", "Audio.Performer"},
- {"TIME", "Audio.ReleaseDate"},
- {"TOPE", "Audio.Artist"},
- {"TPUB", "File.Publisher"},
- {"TOAL", "Audio.Album"},
- {"TALB", "Audio.Album"},
- {"TLAN", "File.Language"},
- {"TIT2", "Audio.Title"},
- {"WCOP", "File.License"},
- {NULL, 0},
- };
-
- int unsync;
- int extendedHdr;
- int experimental;
- unsigned int tsize;
- unsigned int pos;
- unsigned int ehdrSize;
- unsigned int padding;
-
- if ( (size < 16) ||
- (data[0] != 0x49) ||
- (data[1] != 0x44) ||
- (data[2] != 0x33) ||
- (data[3] != 0x03) ||
- (data[4] != 0x00) ) {
-
- //g_print ("no id3v23 tags info (stage 1)\n");
- return;
- }
- unsync = (data[5] & 0x80) > 0;
- extendedHdr = (data[5] & 0x40) > 0;
- experimental = (data[5] & 0x20) > 0;
- tsize = ( ( (data[6] & 0x7F) << 21 ) |
- ( (data[7] & 0x7F) << 14 ) |
- ( (data[8] & 0x7F) << 7 ) |
- ( (data[9] & 0x7F) << 0 ) );
- if ( (tsize + 10 > size) || (experimental) ) {
-
- //g_print ("no id3v23 tags info (stage 2)\n");
- return;
- }
- pos = 10;
- padding = 0;
- if (extendedHdr) {
- ehdrSize = ( ( (data[10]) << 24 ) |
- ( (data[11]) << 16 ) |
- ( (data[12]) << 8 ) |
- ( (data[12]) << 0 ) );
-
- padding = ( ( (data[15]) << 24 ) |
- ( (data[16]) << 16 ) |
- ( (data[17]) << 8 ) |
- ( (data[18]) << 0 ) );
- pos += 4 + ehdrSize;
- if (padding < tsize)
- tsize -= padding;
- else {
- //g_print ("no id3v23 tags info (stage 3)\n");
- return;
- }
- }
-
-
- while (pos < tsize) {
- size_t csize;
- int i;
- unsigned short flags;
-
- if (pos + 10 > tsize) {
-
- //g_print ("no id3v23 tags info (stage 4)\n");
- return;
- }
- csize = (data[pos+4] << 24) + (data[pos+5] << 16) + (data[pos+6] << 8) + data[pos+7];
- if ( (pos + 10 + csize > tsize) ||
- (csize > tsize) ||
- (csize == 0) )
- break;
- flags = (data[pos+8]<<8) + data[pos+9];
- if ( ( (flags & 0x80) > 0) /* compressed, not yet supported */ ||
- ( (flags & 0x40) > 0) /* encrypted, not supported */ ) {
- pos += 10 + csize;
- continue;
- }
- i = 0;
- while (tmap[i].text != NULL) {
- if (0 == strncmp(tmap[i].text,
- (const char*) &data[pos],
- 4)) {
- char * word;
- if ( (flags & 0x20) > 0) {
- /* "group" identifier, skip a byte */
- pos++;
- csize--;
- }
- csize--;
- /* this byte describes the encoding
- try to convert strings to UTF-8
- if it fails, then forget it */
-
- switch (data[pos+10]) {
- case 0x00 :
- word = get_utf8((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- case 0x01 :
- word = get_utf8((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- default:
- /* bad encoding byte,
- try to convert from iso-8859-1 */
- word = get_utf8((const char*) &data[pos+11],
- csize,
- NULL, NULL, NULL);
- break;
- }
-
- pos++;
- if ((word != NULL) && (strlen(word) > 0)) {
-
- if (strcmp (tmap[i].text, "COMM") == 0) {
- char *s = g_strdup (word+strlen(word)+1);
- g_free (word);
- word = s;
- }
-
- g_hash_table_insert (metadata, g_strdup (tmap[i].type), g_strdup (word));
- } else {
- g_free (word);
- }
- break;
- }
- i++;
- }
- pos += 10 + csize;
- }
-
-}
-
-
-static void
-get_id3v2_tags (const char *data, size_t size, GHashTable *metadata)
-{
-
- Matches tmap[] = {
- {"TAL", "Audio.Title"},
- {"TT1", "Audio.Artist"},
- {"TT2", "Audio.Title"},
- {"TT3", "Audio.Title"},
- {"TXT", "Audio.Comment"},
- {"TPB", "File.Publisher"},
- {"WAF", "File.Location"},
- {"WAR", "File.Location"},
- {"WAS", "File.Location"},
- {"WCP", "File.Copyright"},
- {"WAF", "File.Location"},
- {"WCM", "File.License"},
- {"TYE", "Audio.ReleaseDate"},
- {"TLA", "File.Lanuguage"},
- {"TP1", "Audio.Artist"},
- {"TP2", "Audio.Artist"},
- {"TP3", "Audio.Performer"},
- {"TEN", "Audio.Performer"},
- {"TCO", "Audio.Title"},
- {"TCR", "File.Copyright"},
- {"SLT", "Audio.Lyrics"},
- {"TOA", "Audio.Artist"},
- {"TOT", "Audio.Album"},
- {"TOL", "Audio.Artist"},
- {"COM", "Audio.Comment"},
- { NULL, 0},
- };
-
- int unsync;
- unsigned int tsize;
- unsigned int pos;
-
- if ((size < 16) ||
- (data[0] != 0x49) ||
- (data[1] != 0x44) ||
- (data[2] != 0x33) ||
- (data[3] != 0x02) ||
- (data[4] != 0x00)) {
-
- //g_print ("no id3v2 tags info (stage 1)\n");
- return;
- }
-
- unsync = (data[5] & 0x80) > 0;
- tsize = (((data[6] & 0x7F) << 21) |
- ((data[7] & 0x7F) << 14) |
- ((data[8] & 0x7F) << 07) |
- ((data[9] & 0x7F) << 00));
-
- if (tsize + 10 > size) {
-
- //g_print ("no id3v2 tags info (stage 2)\n");
- return;
- }
-
- pos = 10;
- while (pos < tsize) {
- size_t csize;
- int i;
-
- if (pos + 6 > tsize) {
-
- //g_print ("no id3v2 tags info (stage 3)\n");
- return;
- }
-
- csize = (data[pos+3] << 16) + (data[pos+4] << 8) + data[pos+5];
- if ((pos + 6 + csize > tsize) ||
- (csize > tsize) ||
- (csize == 0))
- break;
-
-
- i = 0;
- while (tmap[i].text != NULL) {
-
- if (0 == strncmp(tmap[i].text,
- (const char*) &data[pos],
- 3)) {
- char * word;
-
-
- /* this byte describes the encoding
- try to convert strings to UTF-8
- if it fails, then forget it */
-
- switch (data[pos+6]) {
- case 0x00:
- word = get_utf8((const char*) &data[pos+7],
- csize,
- NULL, NULL, NULL);
- break;
-
- default:
- /* bad encoding byte,
- try to convert from iso-8859-1 */
- word = get_utf8((const char*) &data[pos+7],
- csize,
- NULL, NULL, NULL);
- break;
- }
- pos++;
- csize--;
-
- if ((word != NULL) && (strlen(word) > 0)) {
-
- if (strcmp (tmap[i].text, "COM") == 0) {
- char *s = g_strdup (word+strlen(word)+1);
- g_free (word);
- word = s;
- }
-
- g_hash_table_insert (metadata, g_strdup (tmap[i].type), g_strdup (word));
- } else {
- g_free (word);
- }
-
- break;
- }
- i++;
- }
- pos += 6 + csize;
- }
-
-
-}
-
-static void
-tracker_extract_mp3 (const char *filename, GHashTable *metadata)
-{
- int file;
- void * buffer;
- struct stat fstatbuf;
- size_t size;
- id3tag info;
-
- info.title = NULL;
- info.artist = NULL;
- info.album = NULL;
- info.year = NULL;
- info.comment = NULL;
- info.genre = NULL;
-
-#if defined(__linux__)
- file = g_open (filename, (O_RDONLY | O_NOATIME), 0);
-#else
- file = g_open (filename, O_RDONLY, 0);
-#endif
-
- if ((file == -1) || (stat (filename, &fstatbuf) == -1)) {
- close(file);
- //g_print ("could not open file %s\n", filename);
- return;
- }
-
- size = fstatbuf.st_size;
- if (size == 0) {
- //g_print ("could not stat file %s\n", filename);
- close(file);
- return;
- }
-
-
- if (size > MAX_FILE_READ) {
- size = MAX_FILE_READ;
- }
-
- //g_print ("file size is %d\n", size);
-#ifndef OS_WIN32
- buffer = mmap (NULL, size, PROT_READ, MAP_PRIVATE, file, 0);
-#endif
-
- if ((buffer == NULL) || (buffer == (void *) -1)) {
- //g_print ("mmap failure\n");
- close(file);
- return;
- }
-
-
-
- if (get_id3 (buffer, size, &info) != 0) {
- //g_print ("no id3 info detected\n");
- }
-
-
- if (info.title && strlen (info.title) > 0) {
- g_hash_table_insert (metadata, g_strdup ("Audio.Title"), g_strdup (info.title));
- }
-
- if (info.artist && strlen (info.artist) > 0) {
- g_hash_table_insert (metadata, g_strdup ("Audio.Artist"), g_strdup (info.artist));
- }
-
- if (info.album && strlen (info.album) > 0) {
- g_hash_table_insert (metadata, g_strdup ("Audio.Album"), g_strdup (info.album));
- }
-
- if (info.year && strlen (info.year) > 0) {
- g_hash_table_insert (metadata, g_strdup ("Audio.ReleaseDate"), g_strdup (info.year));
- }
-
- if (info.genre && strlen (info.genre) > 0) {
- g_hash_table_insert (metadata, g_strdup ("Audio.Genre"), g_strdup (info.genre));
- }
-
- if (info.comment && strlen (info.comment) > 0) {
- g_hash_table_insert (metadata, g_strdup ("Audio.Comment"), g_strdup (info.comment));
- }
-
- free(info.title);
- free(info.year);
- free(info.album);
- free(info.artist);
- free(info.comment);
-
- /* get other embedded tags */
-
- get_id3v2_tags (buffer, size, metadata);
- get_id3v23_tags (buffer, size, metadata);
- get_id3v24_tags (buffer, size, metadata);
-
- /* get mp3 stream info */
- mp3_parse (buffer, size, metadata);
-
-
-#ifndef OS_WIN32
- munmap (buffer, size);
-#endif
- close(file);
-
-}
-
-
-TrackerExtractorData data[] = {
- { "audio/mp3", tracker_extract_mp3 },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-mplayer.c b/src/tracker-extract/tracker-extract-mplayer.c
deleted file mode 100644
index ee8774b9e..000000000
--- a/src/tracker-extract/tracker-extract-mplayer.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* Tracker - audio/video metadata extraction that will call MPlayer
- * Copyright (C) 2006, Edward Duffy (eduffy@gmail.com)
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <glib.h>
-#include "tracker-extract.h"
-
-
-static gchar *video_tags[][2] = {
- { "ID_VIDEO_HEIGHT", "Video:Height" },
- { "ID_VIDEO_WIDTH", "Video:Width" },
- { "ID_VIDEO_FPS", "Video:FrameRate" },
- { "ID_VIDEO_CODEC", "Video:Codec" },
- { "ID_VIDEO_BITRATE", "Video:Bitrate" },
- { NULL, NULL }
-};
-
-
-static gchar *audio_tags[][2] = {
- { "ID_AUDIO_BITRATE", "Audio:Bitrate" },
- { "ID_AUDIO_RATE", "Audio:Samplerate" },
- { "ID_AUDIO_CODEC", "Audio:Codec" },
- { "ID_AUDIO_NCH", "Audio:Channels" },
- { NULL, NULL }
-};
-
-
-/* Some of "info_tags" tags can belong to Audio or/and video or none, so 3 cases :
- * 1/ tag does not belong to audio nor video, it is a general tag ;
- * 2/ tag only belongs to audio ;
- * 3/ tag can belong to audio and video. If current media has video we will associate
- * tag to Video, otherwise to Audio if it has audio.
- */
-static gchar *info_tags[][3] = {
- { "Comment", "Audio:Comment", "Video:Comment" },
- { "Title", "Audio:Title", "Video:Title" },
- { "Genre", "Audio:Genre", NULL },
- { "Track", "Audio:TrackNo", NULL },
- { "Artist", "Audio:Performer", "Video:Author" },
- { "Album", "Audio:Album", NULL },
- { "Year", "Audio:ReleaseDate", NULL },
- { "copyright", "File:Copyright", NULL },
- { NULL, NULL, NULL }
-};
-
-
-static void
-copy_hash_table_entry (gpointer key, gpointer value, gpointer user_data)
-{
- g_hash_table_insert ((GHashTable *) user_data, g_strdup ((char *) key), g_strdup ((char *) value));
-}
-
-
-static void
-tracker_extract_mplayer (const gchar *filename, GHashTable *metadata)
-{
- gchar *argv[10];
- gchar *mplayer;
-
- argv[0] = g_strdup ("mplayer");
- argv[1] = g_strdup ("-identify");
- argv[2] = g_strdup ("-frames");
- argv[3] = g_strdup ("0");
- argv[4] = g_strdup ("-vo");
- argv[5] = g_strdup ("null");
- argv[6] = g_strdup ("-ao");
- argv[7] = g_strdup ("null");
- argv[8] = g_strdup (filename);
- argv[9] = NULL;
-
- if (tracker_spawn (argv, 10, &mplayer, NULL)) {
-
- GPatternSpec *pattern_ID_AUDIO_ID, *pattern_ID_VIDEO_ID;
- GPatternSpec *pattern_ID_AUDIO, *pattern_ID_VIDEO, *pattern_ID_CLIP_INFO_NAME, *pattern_ID_CLIP_INFO_VALUE, *pattern_ID_LENGTH;
- GHashTable *tmp_metadata_audio, *tmp_metadata_video;
- gboolean has_audio, has_video;
- gchar *duration;
- gchar **lines, **line;
-
- pattern_ID_AUDIO_ID = g_pattern_spec_new ("ID_AUDIO_ID=*");
- pattern_ID_VIDEO_ID = g_pattern_spec_new ("ID_VIDEO_ID=*");
- pattern_ID_AUDIO = g_pattern_spec_new ("ID_AUDIO*=*");
- pattern_ID_VIDEO = g_pattern_spec_new ("ID_VIDEO*=*");
- pattern_ID_CLIP_INFO_NAME = g_pattern_spec_new ("ID_CLIP_INFO_NAME*=*");
- pattern_ID_CLIP_INFO_VALUE = g_pattern_spec_new ("ID_CLIP_INFO_VALUE*=*");
- pattern_ID_LENGTH = g_pattern_spec_new ("ID_LENGTH=*");
-
- tmp_metadata_audio = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
- tmp_metadata_video = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-
- has_audio = has_video = FALSE;
-
- duration = NULL;
-
- lines = g_strsplit (mplayer, "\n", -1);
-
-
- for (line = lines; *line; ++line) {
-
- if (g_pattern_match_string (pattern_ID_AUDIO_ID, *line)) {
- /* media has audio! */
- has_audio = TRUE;
- }
-
- else if (g_pattern_match_string (pattern_ID_VIDEO_ID, *line)) {
- /* media has video! */
- has_video = TRUE;
- }
-
- else if (g_pattern_match_string (pattern_ID_AUDIO, *line)) {
- gint i;
-
- for (i = 0; audio_tags[i][0]; i++) {
- if (g_str_has_prefix (*line, audio_tags[i][0])) {
- g_hash_table_insert (metadata,
- g_strdup (audio_tags[i][1]),
- g_strdup ((*line) + strlen (audio_tags[i][0]) + 1));
- break;
- }
- }
- }
-
- else if (g_pattern_match_string (pattern_ID_VIDEO, *line)) {
- gint i;
-
- for (i = 0; video_tags[i][0]; i++) {
- if (g_str_has_prefix (*line, video_tags[i][0])) {
- g_hash_table_insert (metadata,
- g_strdup (video_tags[i][1]),
- g_strdup ((*line) + strlen (video_tags[i][0]) + 1));
- break;
- }
- }
- }
-
- else if (g_pattern_match_string (pattern_ID_CLIP_INFO_NAME, *line)) {
- const char *next_line;
-
- next_line = *(line + 1);
-
- if (next_line) {
- if (g_pattern_match_string (pattern_ID_CLIP_INFO_VALUE, next_line)) {
- gint i;
-
- for (i = 0; info_tags[i][0]; i++) {
- if (g_str_has_suffix (*line, info_tags[i][0])) {
- gchar *equal_char_pos, *data;
-
- equal_char_pos = strchr (next_line, '=');
-
- data = g_strdup (equal_char_pos + 1);
-
- if (data) {
- if (data[0] != '\0') {
- g_hash_table_insert (tmp_metadata_audio,
- g_strdup (info_tags[i][1]),
- data);
-
- if (info_tags[i][2]) {
- g_hash_table_insert (tmp_metadata_video,
- g_strdup (info_tags[i][2]),
- g_strdup (data));
- }
- } else {
- g_free (data);
- }
- }
-
- break;
- }
- }
-
- line++;
- }
- }
- }
-
- else if (g_pattern_match_string (pattern_ID_LENGTH, *line)) {
- gchar *equal_char_pos;
-
- equal_char_pos = strchr (*line, '=');
-
- duration = g_strdup (equal_char_pos + 1);
- }
- }
-
- g_pattern_spec_free (pattern_ID_AUDIO_ID);
- g_pattern_spec_free (pattern_ID_VIDEO_ID);
- g_pattern_spec_free (pattern_ID_AUDIO);
- g_pattern_spec_free (pattern_ID_VIDEO);
- g_pattern_spec_free (pattern_ID_CLIP_INFO_NAME);
- g_pattern_spec_free (pattern_ID_CLIP_INFO_VALUE);
- g_pattern_spec_free (pattern_ID_LENGTH);
-
- if (has_video) {
- g_hash_table_foreach (tmp_metadata_video, copy_hash_table_entry, metadata);
-
- if (duration) {
- g_hash_table_insert (metadata, g_strdup ("Video:Duration"), duration);
- }
- } else if (has_audio) {
- g_hash_table_foreach (tmp_metadata_audio, copy_hash_table_entry, metadata);
-
- if (duration) {
- g_hash_table_insert (metadata, g_strdup ("Audio:Duration"), duration);
- }
- }
-
- g_hash_table_destroy (tmp_metadata_audio);
- g_hash_table_destroy (tmp_metadata_video);
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "audio/*", tracker_extract_mplayer },
- { "video/*", tracker_extract_mplayer },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-msoffice.c b/src/tracker-extract/tracker-extract-msoffice.c
deleted file mode 100644
index 196ae8288..000000000
--- a/src/tracker-extract/tracker-extract-msoffice.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Tracker - metadata extraction of Word files with libgsf
- * Copyright (C) 2006, Edward Duffy (eduffy@gmail.com)
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "tracker-extract.h"
-
-#include <string.h>
-#include <glib.h>
-#include <gsf/gsf.h>
-#include <gsf/gsf-doc-meta-data.h>
-#include <gsf/gsf-infile.h>
-#include <gsf/gsf-infile-msole.h>
-#include <gsf/gsf-input-stdio.h>
-#include <gsf/gsf-msole-utils.h>
-#include <gsf/gsf-utils.h>
-
-
-static void
-add_gvalue_in_hash_table (GHashTable *table, const gchar *key, GValue const *val)
-{
- g_return_if_fail (table && key);
-
- if (val) {
- gchar *s = g_strdup_value_contents (val);
-
- if (s) {
- if (!tracker_is_empty_string (s)) {
- gchar *str_val;
-
- /* Some fun: strings are always written "str" with double quotes around, but not numbers! */
- if (s[0] == '"') {
- size_t len;
-
- len = strlen (s);
-
- if (s[len - 1] == '"') {
- str_val = (len > 2 ? g_strndup (s + 1, len - 2) : NULL);
- } else {
- /* We have a string that begins with a double quote but which finishes
- by something different... We copy the string from the beginning. */
- str_val = g_strdup (s);
- }
- } else {
- /* here, we probably have a number */
- str_val = g_strdup (s);
- }
-
- if (str_val) {
- g_hash_table_insert (table, g_strdup (key), str_val);
- }
- }
-
- g_free (s);
- }
- }
-}
-
-
-static void
-metadata_cb (gpointer key, gpointer value, gpointer user_data)
-{
- gchar *name = key;
- GsfDocProp *property = value;
- GHashTable *metadata = user_data;
- GValue const *val = gsf_doc_prop_get_val (property);
-
- if (strcmp (name, "dc:title") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:Title", val);
-
- } else if (strcmp (name, "dc:subject") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:Subject", val);
-
- } else if (strcmp (name, "dc:creator") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:Author", val);
-
- } else if (strcmp (name, "dc:keywords") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:Keywords", val);
-
- } else if (strcmp (name, "dc:description") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:Comments", val);
-
- } else if (strcmp (name, "gsf:page-count") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:PageCount", val);
-
- } else if (strcmp (name, "gsf:word-count") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:WordCount", val);
-
- } else if (strcmp (name, "meta:creation-date") == 0) {
- add_gvalue_in_hash_table (metadata, "Doc:Created", val);
-
- } else if (strcmp (name, "meta:generator") == 0) {
- add_gvalue_in_hash_table (metadata, "File:Other", val);
- }
-}
-
-
-static void
-doc_metadata_cb (gpointer key, gpointer value, gpointer user_data)
-{
- gchar *name = key;
- GsfDocProp *property = value;
- GHashTable *metadata = user_data;
- GValue const *val = gsf_doc_prop_get_val (property);
-
- if (strcmp (name, "CreativeCommons_LicenseURL") == 0) {
- add_gvalue_in_hash_table (metadata, "File:License", val);
- }
-}
-
-
-static void
-tracker_extract_msoffice (const gchar *filename, GHashTable *metadata)
-{
- GsfInput *input;
- GsfInfile *infile;
- GsfInput *stream;
-
- gsf_init ();
-
- input = gsf_input_stdio_new (filename, NULL);
-
- if (!input) {
- gsf_shutdown ();
- return;
- }
-
- infile = gsf_infile_msole_new (input, NULL);
- g_object_unref (G_OBJECT (input));
-
- if (!infile) {
- gsf_shutdown ();
- return;
- }
-
- stream = gsf_infile_child_by_name (infile, "\05SummaryInformation");
- if (stream) {
- GsfDocMetaData *md;
-
- md = gsf_doc_meta_data_new ();
-
- if (gsf_msole_metadata_read (stream, md)) {
- gsf_shutdown ();
- return;
- }
-
- gsf_doc_meta_data_foreach (md, metadata_cb, metadata);
-
- g_object_unref (G_OBJECT (md));
- g_object_unref (G_OBJECT (stream));
- }
-
- stream = gsf_infile_child_by_name (infile, "\05DocumentSummaryInformation");
- if (stream) {
- GsfDocMetaData *md;
-
- md = gsf_doc_meta_data_new ();
-
- if (gsf_msole_metadata_read (stream, md)) {
- gsf_shutdown ();
- return;
- }
-
- gsf_doc_meta_data_foreach (md, doc_metadata_cb, metadata);
-
- g_object_unref (G_OBJECT (md));
- g_object_unref (G_OBJECT (stream));
- }
-
- g_object_unref (G_OBJECT (infile));
-
- gsf_shutdown ();
-}
-
-
-TrackerExtractorData data[] = {
- { "application/msword", tracker_extract_msoffice },
- { "application/vnd.ms-*", tracker_extract_msoffice },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-oasis.c b/src/tracker-extract/tracker-extract-oasis.c
deleted file mode 100644
index 1dd77021a..000000000
--- a/src/tracker-extract/tracker-extract-oasis.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include "tracker-extract.h"
-
-typedef enum {
- READ_TITLE,
- READ_SUBJECT,
- READ_AUTHOR,
- READ_KEYWORDS,
- READ_COMMENTS,
- READ_STATS,
- READ_CREATED,
- READ_FILE_OTHER
- } tag_type;
-
-
-typedef struct {
- GHashTable *metadata;
- tag_type current;
-} ODTParseInfo;
-
-
-static void start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- GError **error);
-
-static void end_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error);
-
-static void text_handler (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error);
-
-
-static void
-tracker_extract_oasis (const gchar *filename, GHashTable *metadata)
-{
- gchar *argv[5];
- gchar *xml;
- ODTParseInfo info = { metadata, -1 };
-
- argv[0] = g_strdup ("unzip");
- argv[1] = g_strdup ("-p");
- argv[2] = g_strdup (filename);
- argv[3] = g_strdup ("meta.xml");
- argv[4] = NULL;
-
- if (tracker_spawn (argv, 10, &xml, NULL)) {
-
- GMarkupParseContext *context;
- GMarkupParser parser = {
- start_element_handler,
- end_element_handler,
- text_handler,
- NULL,
- NULL
- };
-
- context = g_markup_parse_context_new (&parser, 0, &info, NULL);
- g_markup_parse_context_parse (context, xml, -1, NULL);
-
- g_markup_parse_context_free (context);
- g_free (xml);
- }
-
- g_free (argv[3]);
- g_free (argv[2]);
- g_free (argv[1]);
- g_free (argv[0]);
-}
-
-
-void start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- GError **error)
-{
- ODTParseInfo *data = user_data;
-
- if (strcmp (element_name, "dc:title") == 0) {
- data->current = READ_TITLE;
- }
- else if (strcmp (element_name, "dc:subject") == 0) {
- data->current = READ_SUBJECT;
- }
- else if (strcmp (element_name, "dc:creator") == 0) {
- data->current = READ_AUTHOR;
- }
- else if (strcmp (element_name, "meta:keyword") == 0) {
- data->current = READ_KEYWORDS;
- }
- else if (strcmp (element_name, "dc:description") == 0) {
- data->current = READ_COMMENTS;
- }
- else if (strcmp (element_name, "meta:document-statistic") == 0) {
- GHashTable *metadata = data->metadata;
- const gchar **a, **v;
-
- for (a = attribute_names, v = attribute_values; *a; ++a, ++v) {
- if (strcmp (*a, "meta:word-count") == 0) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:WordCount"), g_strdup (*v));
- }
- else if (strcmp (*a, "meta:page-count") == 0) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:PageCount"), g_strdup (*v));
- }
- }
- data->current = READ_STATS;
- }
- else if (strcmp (element_name, "meta:creation-date") == 0) {
- data->current = READ_CREATED;
- }
- else if (strcmp (element_name, "meta:generator") == 0) {
- data->current = READ_FILE_OTHER;
- }
- else {
- data->current = -1;
- }
-}
-
-
-void end_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error)
-{
- ((ODTParseInfo *)user_data)->current = -1;
-}
-
-
-void text_handler (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error)
-{
- ODTParseInfo *data = user_data;
- GHashTable *metadata = data->metadata;
-
- switch (data->current) {
- case READ_TITLE:
- g_hash_table_insert (metadata, g_strdup ("Doc:Title"), g_strdup (text));
- break;
- case READ_SUBJECT:
- g_hash_table_insert (metadata, g_strdup ("Doc:Subject"), g_strdup (text));
- break;
- case READ_AUTHOR:
- g_hash_table_insert (metadata, g_strdup ("Doc:Author"), g_strdup (text));
- break;
- case READ_KEYWORDS: {
- gchar *keywords;
- if ((keywords = g_hash_table_lookup (metadata, "Doc:Keywords"))) {
- g_hash_table_replace (metadata, g_strdup ("Doc:Keywords"),
- g_strconcat (keywords, ",", text, NULL));
- } else {
- g_hash_table_insert (metadata, g_strdup ("Doc:Keywords"), g_strdup (text));
- }
- }
- break;
- case READ_COMMENTS:
- g_hash_table_insert (metadata, g_strdup ("Doc:Comments"), g_strdup (text));
- break;
- case READ_CREATED:
- g_hash_table_insert (metadata, g_strdup ("Doc:Created"), g_strdup (text));
- break;
- case READ_FILE_OTHER:
- g_hash_table_insert (metadata, g_strdup ("File:Other"), g_strdup (text));
- break;
-
- default:
- break;
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "application/vnd.oasis.opendocument.*", tracker_extract_oasis },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
deleted file mode 100644
index 71278faa5..000000000
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* vim: set noet ts=8 sw=8 sts=0: */
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <poppler.h>
-#include <string.h>
-#include <glib.h>
-
-#include "tracker-extract.h"
-#include "tracker-xmp.h"
-
-
-static void
-tracker_extract_pdf (const gchar *filename, GHashTable *metadata)
-{
- PopplerDocument *document;
- gchar *tmp;
- gchar *title = NULL;
- gchar *author = NULL;
- gchar *subject = NULL;
- gchar *keywords = NULL;
- gchar *metadata_xml = NULL;
- GTime creation_date;
- GError *error = NULL;
-
- g_type_init ();
-
- tmp = g_strconcat ("file://", filename, NULL);
- document = poppler_document_new_from_file (tmp, NULL, &error);
- g_free (tmp);
-
- if (document == NULL || error) {
- return;
- }
-
- g_object_get (document,
- "title", &title,
- "author", &author,
- "subject", &subject,
- "keywords", &keywords,
- "creation-date", &creation_date,
- NULL);
-
- /* metadata property not present in older poppler versions */
- if (g_object_class_find_property (G_OBJECT_GET_CLASS (document), "metadata")) {
- g_object_get (document, "metadata", &metadata_xml, NULL);
- }
-
- if (!tracker_is_empty_string (title)) {
- g_hash_table_insert (metadata, g_strdup ("Doc:Title"), g_strdup (title));
- }
- if (!tracker_is_empty_string (author)) {
- g_hash_table_insert (metadata, g_strdup ("Doc:Author"), g_strdup (author));
- }
- if (!tracker_is_empty_string (subject)) {
- g_hash_table_insert (metadata, g_strdup ("Doc:Subject"), g_strdup (subject));
- }
- if (!tracker_is_empty_string (keywords)) {
- g_hash_table_insert (metadata, g_strdup ("Doc:Keywords"), g_strdup (keywords));
- }
-
-
-#if 0
- GTimeVal creation_date_val = { creation_date, 0 };
- g_hash_table_insert (metadata, g_strdup ("Doc.Created"),
- g_time_val_to_iso8601 (creation_date_val));
-#endif
-
- g_hash_table_insert (metadata, g_strdup ("Doc:PageCount"),
- g_strdup_printf ("%d", poppler_document_get_n_pages (document)));
-
- if ( metadata_xml ) {
- tracker_read_xmp (metadata_xml, strlen (metadata_xml), metadata);
- }
-
- g_free (title);
- g_free (author);
- g_free (subject);
- g_free (keywords);
- g_free (metadata_xml);
-
- g_object_unref (document);
-}
-
-
-TrackerExtractorData data[] = {
- { "application/pdf", tracker_extract_pdf },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
deleted file mode 100644
index f1f70943e..000000000
--- a/src/tracker-extract/tracker-extract-png.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include "config.h"
-#include "tracker-extract.h"
-#include "tracker-xmp.h"
-
-#include <fcntl.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <png.h>
-
-#define RFC1123_DATE_FORMAT "%d %B %Y %H:%M:%S %z"
-
-
-static gchar *
-rfc1123_to_iso8601_date (gchar *rfc_date)
-{
- /* ex. RFC1123 date: "22 May 1997 18:07:10 -0600"
- To
- ex. ISO8601 date: "2007-05-22T18:07:10-0600"
- */
- return tracker_generic_date_to_iso8601 (rfc_date, RFC1123_DATE_FORMAT);
-}
-
-
-typedef gchar * (*PostProcessor) (gchar *);
-
-
-static struct {
- gchar *name;
- gchar *type;
- PostProcessor post;
-
-} tagmap[] = {
- { "Author", "Image:Creator", NULL},
- { "Creator", "Image:Creator", NULL},
- { "Description", "Image:Description", NULL},
- { "Comment", "Image:Comments", NULL},
- { "Copyright", "File:Copyright", NULL},
- { "Creation Time", "Image:Date", rfc1123_to_iso8601_date},
- { "Title", "Image:Title", NULL},
- { "Software", "Image:Software", NULL},
- { "Disclaimer", "File:License", NULL},
- { NULL, NULL, NULL},
-};
-
-
-static void
-tracker_extract_png (const gchar *filename, GHashTable *metadata)
-{
- gint fd_png;
- FILE *png;
- png_structp png_ptr;
- png_infop info_ptr;
- png_uint_32 width, height;
- gint num_text;
- png_textp text_ptr;
-
- gint bit_depth, color_type;
- gint interlace_type, compression_type, filter_type;
-
-#if defined(__linux__)
- if ((fd_png = g_open (filename, (O_RDONLY | O_NOATIME))) == -1) {
-#else
- if ((fd_png = g_open (filename, O_RDONLY)) == -1) {
-#endif
- return;
- }
-
- if ((png = fdopen (fd_png, "r"))) {
- png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
- NULL, NULL, NULL);
- if (!png_ptr) {
- fclose (png);
- return;
- }
-
- info_ptr = png_create_info_struct (png_ptr);
- if (!info_ptr) {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- fclose (png);
- return;
- }
-
- png_init_io (png_ptr, png);
- png_read_info (png_ptr, info_ptr);
-
- /* read header bits */
- if (png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth,
- &color_type, &interlace_type, &compression_type, &filter_type)) {
- g_hash_table_insert (metadata, g_strdup ("Image:Width"),
- g_strdup_printf ("%ld", width));
- g_hash_table_insert (metadata, g_strdup ("Image:Height"),
- g_strdup_printf ("%ld", height));
- }
-
- if (png_get_text (png_ptr, info_ptr, &text_ptr, &num_text) > 0) {
- gint i;
- for (i = 0; i < num_text; i++) {
- if (text_ptr[i].key) {
- gint j;
- #if defined(HAVE_EXEMPI) && defined(PNG_iTXt_SUPPORTED)
- if (strcmp ("XML:com.adobe.xmp", text_ptr[i].key) == 0) {
- tracker_read_xmp (text_ptr[i].text,
- text_ptr[i].itxt_length,
- metadata);
- continue;
- }
- #endif
-
- for (j = 0; tagmap[j].type; j++) {
- if (strcasecmp (tagmap[j].name, text_ptr[i].key) == 0) {
- if (text_ptr[i].text && text_ptr[i].text[0] != '\0') {
- if (tagmap[j].post) {
- g_hash_table_insert (metadata,
- g_strdup (tagmap[j].type),
- (*tagmap[j].post) (text_ptr[i].text));
- } else {
- g_hash_table_insert (metadata,
- g_strdup (tagmap[j].type),
- g_strdup (text_ptr[i].text));
- }
- break;
- }
- }
- }
- }
- }
- }
-
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
-
- fclose (png);
-
- } else {
- close (fd_png);
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "image/png", tracker_extract_png },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-ps.c b/src/tracker-extract/tracker-extract-ps.c
deleted file mode 100644
index 8b2b38ba1..000000000
--- a/src/tracker-extract/tracker-extract-ps.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#define _GNU_SOURCE
-
-#include "config.h"
-
-#include <fcntl.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include "tracker-extract.h"
-
-#if !HAVE_GETLINE
-#include <stddef.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <errno.h>
-
-#undef getdelim
-#undef getline
-
-static ssize_t
-igetdelim (gchar **linebuf, size_t *linebufsz, gint delimiter, FILE *file)
-{
- static const gint GROWBY = 80; /* how large we will grow strings by */
- gint ch;
- gint idx;
-
- if ((file == NULL || linebuf == NULL || *linebuf == NULL || *linebufsz == 0)
- && !(*linebuf == NULL && *linebufsz == 0)) {
- errno = EINVAL;
- return -1;
- }
-
- if (*linebuf == NULL && *linebufsz == 0){
- *linebuf = g_malloc (GROWBY);
- if (!*linebuf) {
- errno = ENOMEM;
- return -1;
- }
- *linebufsz += GROWBY;
- }
-
- idx = 0;
-
- while ((ch = fgetc (file)) != EOF) {
- /* grow the line buffer as necessary */
- while (idx > *linebufsz - 2) {
- *linebuf = g_realloc (*linebuf, *linebufsz += GROWBY);
- if (!*linebuf) {
- errno = ENOMEM;
- return -1;
- }
- }
- (*linebuf)[idx++] = (char)ch;
- if ((char)ch == delimiter) {
- break;
- }
- }
-
- if (idx != 0) {
- (*linebuf)[idx] = 0;
- } else if ( ch == EOF ) {
- return -1;
- }
-
- return idx;
-}
-
-
-gint
-getline (gchar **s, guint *lim, FILE *stream)
-{
- return igetdelim (s, lim, '\n', stream);
-}
-#endif
-
-
-static gchar
-*hour_day_str_day (gchar *date)
-{
- /* ex. date: "(18:07 Tuesday 22 May 2007)"
- To
- ex. ISO8601 date: "2007-05-22T18:07:10-0600"
- */
-
- return tracker_generic_date_to_iso8601 (date, "(%H:%M %A %d %B %Y)");
-}
-
-
-static gchar *
-day_str_month_day (gchar *date)
-{
- /* ex. date: "Tue May 22 18:07:10 2007"
- To
- ex. ISO8601 date: "2007-05-22T18:07:10-0600"
- */
- return tracker_generic_date_to_iso8601 (date, "%A %B %d %H:%M:%S %Y");
-}
-
-
-static gchar *
-day_month_year_date (gchar *date)
-{
- /* ex. date: "22 May 1997 18:07:10 -0600"
- To
- ex. ISO8601 date: "2007-05-22T18:07:10-0600"
- */
- return tracker_generic_date_to_iso8601 (date, "%d %B %Y %H:%M:%S %z");
-}
-
-
-static gchar *
-hour_month_day_date (gchar *date)
-{
- /* ex. date: "6:07 PM May 22, 2007"
- To
- ex. ISO8601 date: "2007-05-22T18:07:10-0600"
- */
- return tracker_generic_date_to_iso8601 (date, "%I:%M %p %B %d, %Y");
-}
-
-
-static gchar *
-date_to_iso8601 (gchar *date)
-{
- if (date && date[1] && date[2]) {
- if (date[0] == '(') {
- /* we have probably a date like
- "(18:07 Tuesday 22 May 2007)" */
- return hour_day_str_day (date);
- } else if (g_ascii_isalpha (date[0])) {
- /* we have probably a date like
- "Tue May 22 18:07:10 2007" */
- return day_str_month_day (date);
-
- } else if (date[1] == ' ' || date[2] == ' ') {
- /* we have probably a date like
- "22 May 1997 18:07:10 -0600" */
- return day_month_year_date (date);
-
- } else if (date[1] == ':' || date[2] == ':') {
- /* we have probably a date like
- "6:07 PM May 22, 2007" */
- return hour_month_day_date (date);
-
- }
- }
-
- return NULL;
-}
-
-
-static void
-tracker_extract_ps (const gchar *filename, GHashTable *metadata)
-{
- gint fd;
- FILE *f;
-
-#if defined(__linux__)
- if ((fd = g_open (filename, (O_RDONLY | O_NOATIME))) == -1) {
-#else
- if ((fd = g_open (filename, O_RDONLY)) == -1) {
-#endif
- return;
- }
-
- if ((f = fdopen (fd, "r"))) {
- gchar *line;
- gsize length;
- gssize read_char;
-
- line = NULL;
- length = 0;
-
- while ((read_char = getline (&line, &length, f)) != -1) {
- gboolean pageno_atend = FALSE;
- gboolean header_finished = FALSE;
-
- line[read_char - 1] = '\0'; /* overwrite '\n' char */
-
- if (!header_finished && strncmp (line, "%%Copyright:", 12) == 0) {
- g_hash_table_insert (metadata,
- g_strdup ("File:Other"), g_strdup (line + 13));
-
- } else if (!header_finished && strncmp (line, "%%Title:", 8) == 0) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Title"), g_strdup (line + 9));
-
- } else if (!header_finished && strncmp (line, "%%Creator:", 10) == 0) {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:Author"), g_strdup (line + 11));
-
- } else if (!header_finished && strncmp (line, "%%CreationDate:", 15) == 0) {
- gchar *date = date_to_iso8601 (line + 16);
- if (date) {
- g_hash_table_insert (metadata, g_strdup ("Doc:Created"), date);
- }
-
- } else if (strncmp (line, "%%Pages:", 8) == 0) {
- if (strcmp (line + 9, "(atend)") == 0) {
- pageno_atend = TRUE;
- } else {
- g_hash_table_insert (metadata,
- g_strdup ("Doc:PageCount"), g_strdup (line + 9));
- }
-
- } else if (strncmp (line, "%%EndComments", 14) == 0) {
- header_finished = TRUE;
- if (!pageno_atend) {
- break;
- }
- }
-
- g_free (line);
- line = NULL;
- length = 0;
- }
-
- if (line) {
- g_free (line);
- }
-
- fclose (f);
-
- } else {
- close (fd);
- }
-}
-
-
-/* our private prototype */
-void tracker_child_cb (gpointer user_data);
-
-
-static void
-tracker_extract_ps_gz (const gchar *filename, GHashTable *metadata)
-{
- FILE * fz = NULL;
- GError * error = NULL;
- gchar * gunzipped = NULL;
-
- gint fdz;
- gint fd;
-
- fd = g_file_open_tmp ("tracker-extract-ps-gunzipped.XXXXXX", &gunzipped, &error);
- if (error) {
- g_error_free (error);
- return;
- }
-
- const char * argv [4];
- argv [0] = "gunzip";
- argv [1] = "-c";
- argv [2] = filename;
- argv [3] = NULL;
-
- gboolean stat = g_spawn_async_with_pipes (
- "/tmp",
- (char **) argv,
- NULL, /* envp */
- G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL,
- tracker_child_cb, /* child setup func */
- GINT_TO_POINTER (10), /* user data for cb */ /* timeout */
- NULL, /* *pid */
- NULL, /* stdin */
- &fdz, /* stdout */
- NULL, /* stderr */
- &error);
-
- if (! stat) {
- g_unlink (gunzipped);
- return;
- }
-
- if ((fz = fdopen (fdz, "r"))) {
- FILE * f = NULL;
-
- if ((f = fdopen (fd, "w"))) {
- unsigned char buf [8192];
- size_t b, accum = 0;
- size_t max = 20u << 20;/* 20 MiB should be enough! */
- while ((b = fread (buf, 1, 8192, fz)) && accum <= max) {
- accum += b;
- fwrite (buf, 1, b, f);
- }
- fclose (f);
- }
- fclose (fz);
- }
-
- tracker_extract_ps (gunzipped, metadata);
- g_unlink (gunzipped);
-}
-
-
-TrackerExtractorData data[] = {
- { "application/x-gzpostscript", tracker_extract_ps_gz },
- { "application/postscript", tracker_extract_ps },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-totem.c b/src/tracker-extract/tracker-extract-totem.c
deleted file mode 100644
index f8c757dac..000000000
--- a/src/tracker-extract/tracker-extract-totem.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Tracker - audio/video metadata extraction that will call Totem
- * Copyright (C) 2006, Edward Duffy (eduffy@gmail.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <glib.h>
-#include "tracker-extract.h"
-
-static gchar *tags[][2] = {
- { "TOTEM_INFO_VIDEO_HEIGHT", "Video:Height" },
- { "TOTEM_INFO_VIDEO_WIDTH", "Video:Width" },
- { "TOTEM_INFO_FPS", "Video:FrameRate" },
- { "TOTEM_INFO_VIDEO_CODEC", "Video:Codec" },
- { "TOTEM_INFO_VIDEO_BITRATE", "Video:Bitrate" },
- { "TOTEM_INFO_TITLE", "Video:Title" },
- { "TOTEM_INFO_AUTHOR", "Video:Author" },
- // { "TOTEM_INFO_YEAR", ...
- // { "TOTEM_INFO_ALBUM", ...
- // { "TOTEM_INFO_DURATION", ...
- // { "TOTEM_INFO_TRACK_NUMBER", ...
- { "TOTEM_INFO_AUDIO_BITRATE", "Audio:Bitrate" },
- { "TOTEM_INFO_AUDIO_SAMPLE_RATE", "Audio:Samplerate" },
- { "TOTEM_INFO_AUDIO_CODEC", "Audio:Codec" },
- { "TOTEM_INFO_AUDIO_CHANNELS", "Audio:Channels" },
- { NULL, NULL }
-};
-
-
-static void
-tracker_extract_totem (const gchar *filename, GHashTable *metadata)
-{
- gchar *argv[3];
- gchar *totem;
-
- argv[0] = g_strdup ("totem-video-indexer");
- argv[1] = g_strdup (filename);
- argv[2] = NULL;
-
- if (tracker_spawn (argv, 10, &totem, NULL)) {
-
- gchar **lines, **line;
-
- lines = g_strsplit (totem, "\n", -1);
-
- for (line = lines; *line; ++line) {
- gint i;
-
- for (i = 0; tags[i][0]; i++) {
- if (g_str_has_prefix (*line, tags[i][0])) {
- g_hash_table_insert (metadata,
- g_strdup (tags[i][1]),
- g_strdup ((*line) + strlen (tags[i][0]) + 1));
- break;
- }
- }
- }
- }
-}
-
-
-TrackerExtractorData data[] = {
- { "audio/*", tracker_extract_totem },
- { "video/*", tracker_extract_totem },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract-vorbis.c b/src/tracker-extract/tracker-extract-vorbis.c
deleted file mode 100644
index ad1d6d12b..000000000
--- a/src/tracker-extract/tracker-extract-vorbis.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_VORBIS
-
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <vorbis/vorbisfile.h>
-
-#include "tracker-extract.h"
-
-/*#include "tracker-utils.h"*/
-
-static struct {
- char * name;
- char *meta_name;
- gboolean writable;
-} tags[] = {
- {"title", "Audio.Title", FALSE},
- {"artist", "Audio.Artist", FALSE},
- {"album", "Audio.Album", FALSE},
- {"albumartist", "Audio.AlbumArtist", FALSE},
- {"trackcount", "Audio.AlbumTrackCount", FALSE},
- {"tracknumber", "Audio.TrackNo", FALSE},
- {"DiscNo", "Audio.DiscNo", FALSE},
- {"Performer", "Audio.Performer", FALSE},
- {"TrackGain", "Audio.TrackGain", FALSE},
- {"TrackPeakGain", "Audio.TrackPeakGain", FALSE},
- {"AlbumGain", "Audio.AlbumGain", FALSE},
- {"AlbumPeakGain", "Audio.AlbumPeakGain", FALSE},
- {"date", "Audio.ReleaseDate", FALSE},
- {"comment", "Audio.Comment", FALSE},
- {"genre", "Audio.Genre", FALSE},
- {"Codec", "Audio.Codec", FALSE},
- {"CodecVersion", "Audio.CodecVersion", FALSE},
- {"Samplerate", "Audio.Samplerate", FALSE},
- {"Channels", "Audio.Channels", FALSE},
- {"MBAlbumID", "Audio.MBAlbumID", FALSE},
- {"MBArtistID", "Audio.MBArtistID", FALSE},
- {"MBAlbumArtistID", "Audio.MBAlbumArtistID", FALSE},
- {"MBTrackID", "Audio.MBTrackID", FALSE},
- {"Lyrics", "Audio.Lyrics", FALSE},
- {"Copyright", "File.Copyright", FALSE},
- {"License", "File.License", FALSE},
- {"Organization", "File.Organization", FALSE},
- {"Location", "File.Location", FALSE},
- {"Publisher", "File.Publisher", FALSE},
- {NULL, NULL, FALSE},
-};
-
-
-static char*
-get_comment (vorbis_comment *vc, char *label)
-{
- char *tag;
- char *utf_tag;
-
- if (vc && (tag = vorbis_comment_query (vc, label, 0)) != NULL) {
-
- utf_tag = g_locale_to_utf8 (tag, -1, NULL, NULL, NULL);
-
- /*g_free (tag);*/
-
- return utf_tag;
-
- } else {
- return NULL;
- }
-
-}
-
-
-gboolean
-tracker_metadata_ogg_is_writable (const char *meta)
-{
- int i;
-
- i = 0;
- while (tags[i].name != NULL) {
-
- if (strcmp (tags[i].meta_name, meta) == 0) {
- return tags[i].writable;
- }
-
- i++;
- }
-
- return FALSE;
-
-}
-
-
-gboolean
-tracker_metadata_ogg_write (const char *meta_name, const char *value)
-{
- /* to do */
- return FALSE;
-}
-
-
-void
-tracker_extract_vorbis (const char *filename, GHashTable *metadata)
-{
- gint fd;
- FILE *oggFile;
- OggVorbis_File vf;
- gint i;
-
-#if defined(__linux__)
- if ((fd = g_open (filename, (O_RDONLY | O_NOATIME))) == -1) {
-#else
- if ((fd = g_open (filename, O_RDONLY)) == -1) {
-#endif
- return;
- }
-
- oggFile = fdopen (fd, "r");
-
- if (!oggFile) {
- close (fd);
- return;
- }
-
- if ( ov_open (oggFile, &vf, NULL, 0) < 0 ) {
- fclose (oggFile);
- return;
- }
-
- char *tmpComment;
-
- vorbis_comment *comment;
-
- if ((comment = ov_comment (&vf, -1)) == NULL) {
- ov_clear (&vf);
- return;
- }
-
- i = 0;
- while (tags[i].name != NULL) {
- tmpComment = get_comment (comment, tags[i].name);
-
- if (tmpComment) {
- g_hash_table_insert (metadata, g_strdup (tags[i].meta_name), tmpComment);
- }
-
- i++;
- }
-
- vorbis_comment_clear(comment);
-
- /* Bitrate */
-
- vorbis_info *vi;
- unsigned int bitrate;
- char *str_bitrate;
-
- if ( ( vi = ov_info(&vf, 0)) != NULL ) {
- bitrate = vi->bitrate_nominal/1000;
- str_bitrate = g_strdup_printf ("%d", bitrate);
- g_hash_table_insert (metadata, g_strdup ("Audio.Bitrate"), str_bitrate);
- g_hash_table_insert (metadata, g_strdup ("Audio.CodecVersion"), g_strdup_printf ("%d", vi->version));
- g_hash_table_insert (metadata, g_strdup ("Audio.Channels"), g_strdup_printf ("%d", vi->channels));
- g_hash_table_insert (metadata, g_strdup ("Audio.Samplerate"), g_strdup_printf ("%ld", vi->rate));
- }
-
-
-
- /* Duration */
-
- int time;
- char *str_time;
- if ( ( time = ov_time_total(&vf, -1) ) != OV_EINVAL ) {
- str_time = g_strdup_printf ("%d", time);
- g_hash_table_insert (metadata, g_strdup ("Audio.Duration"), str_time);
- }
-
- g_hash_table_insert (metadata, g_strdup ("Audio.Codec"), g_strdup ("vorbis"));
-
- ov_clear(&vf);
-
-}
-
-#else
-#warning "Not building ogg/vorbis metadata extractor"
-#endif /* HAVE_VORBIS */
diff --git a/src/tracker-extract/tracker-extract-xmp.c b/src/tracker-extract/tracker-extract-xmp.c
deleted file mode 100644
index ca2b2e9c9..000000000
--- a/src/tracker-extract/tracker-extract-xmp.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2007, Jason Kivlighn (jkivlighn@gmail.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <glib.h>
-
-#include "tracker-extract.h"
-#include "tracker-xmp.h"
-
-
-static void
-tracker_extract_xmp (const gchar* filename, GHashTable *metadata)
-{
- gchar *contents;
- gsize length;
- GError *error;
-
- if ( g_file_get_contents ( filename, &contents, &length, &error ) )
- tracker_read_xmp (contents, length, metadata);
-}
-
-
-TrackerExtractorData data[] = {
- { "application/rdf+xml", tracker_extract_xmp },
- { NULL, NULL }
-};
-
-
-TrackerExtractorData *
-tracker_get_extractor_data (void)
-{
- return data;
-}
diff --git a/src/tracker-extract/tracker-extract.c b/src/tracker-extract/tracker-extract.c
deleted file mode 100644
index a694ee847..000000000
--- a/src/tracker-extract/tracker-extract.c
+++ /dev/null
@@ -1,385 +0,0 @@
-/* vim: set noet ts=8 sw=8 sts=0: */
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <errno.h>
-#include <locale.h>
-#include <string.h>
-#include <sys/types.h>
-#ifndef OS_WIN32
-#include <sys/resource.h>
-#endif
-#include <sys/time.h>
-#include <unistd.h>
-#include <glib.h>
-#include <gmodule.h>
-
-#define _XOPEN_SOURCE
-#include <time.h>
-
-#include "tracker-extract.h"
-
-#define MAX_MEM 128
-#define MAX_MEM_AMD64 512
-
-#define ISO8601_FORMAT "%Y-%m-%dT%H:%M:%S%z"
-
-GArray *extractors = NULL;
-
-
-gchar *
-tracker_generic_date_to_iso8601 (const gchar *date, const gchar *format)
-{
-
- gchar *processed;
- gchar *result;
- struct tm date_tm;
-
- memset (&date_tm, 0, sizeof (struct tm));
-
- processed = strptime (date, format, &date_tm);
-
- if (processed == NULL) {
- // Unable to parse the input
- return NULL;
- }
-
- result = g_malloc (sizeof (char)*25);
-
- strftime (result, 25, ISO8601_FORMAT , &date_tm);
-
- return result;
-}
-
-
-gboolean
-tracker_is_empty_string (const gchar *s)
-{
- return s == NULL || s[0] == '\0';
-}
-
-
-static gboolean
-set_memory_rlimits (void)
-{
-#ifndef OS_WIN32
- struct rlimit rl;
- gint fail = 0;
-
- /* We want to limit the max virtual memory
- * most extractors use mmap() so only virtual memory can be effectively limited */
-#ifdef __x86_64__
- /* many extractors on AMD64 require 512M of virtual memory, so we limit heap too */
- getrlimit (RLIMIT_AS, &rl);
- rl.rlim_cur = MAX_MEM_AMD64*1024*1024;
- fail |= setrlimit (RLIMIT_AS, &rl);
-
- getrlimit (RLIMIT_DATA, &rl);
- rl.rlim_cur = MAX_MEM*1024*1024;
- fail |= setrlimit (RLIMIT_DATA, &rl);
-#else
- /* on other architectures, 128M of virtual memory seems to be enough */
- getrlimit (RLIMIT_AS, &rl);
- rl.rlim_cur = MAX_MEM*1024*1024;
- fail |= setrlimit (RLIMIT_AS, &rl);
-#endif
-
- if (fail) {
- g_printerr ("Error trying to set memory limit for tracker-extract\n");
- }
-
- return !fail;
-#endif
-}
-
-
-void
-tracker_child_cb (gpointer user_data)
-{
-#ifndef OS_WIN32
- struct rlimit cpu_limit;
- gint timeout = GPOINTER_TO_INT (user_data);
-
- /* set cpu limit */
- getrlimit (RLIMIT_CPU, &cpu_limit);
- cpu_limit.rlim_cur = timeout;
- cpu_limit.rlim_max = timeout + 1;
-
- if (setrlimit (RLIMIT_CPU, &cpu_limit) != 0) {
- g_printerr ("Error trying to set resource limit for cpu\n");
- }
-
- set_memory_rlimits ();
-
- /* Set child's niceness to 19 */
- errno = 0;
- /* nice() uses attribute "warn_unused_result" and so complains if we do not check its
- returned value. But it seems that since glibc 2.2.4, nice() can return -1 on a
- successful call so we have to check value of errno too. Stupid... */
- if (nice (19) == -1 && errno) {
- g_printerr ("ERROR: trying to set nice value\n");
- }
-
- /* have this as a precaution in cases where cpu limit has not been reached due to spawned app sleeping */
- alarm (timeout+2);
-#endif
-}
-
-
-gboolean
-tracker_spawn (gchar **argv, gint timeout, gchar **tmp_stdout, gint *exit_status)
-{
- return g_spawn_sync (NULL,
- argv,
- NULL,
- G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL,
- tracker_child_cb,
- GINT_TO_POINTER (timeout),
- tmp_stdout,
- NULL,
- exit_status,
- NULL);
-}
-
-
-static void
-initialize_extractors (void)
-{
- GDir *dir;
- GError *error = NULL;
- const gchar *name;
- GArray *generic_extractors = NULL;
-
- if (extractors != NULL)
- return;
-
- if (!g_module_supported ()) {
- g_error ("Modules are not supported for this platform");
- return;
- }
-
- extractors = g_array_sized_new (FALSE, TRUE,
- sizeof (TrackerExtractorData),
- 10);
-
- /* This array is going to be used to store
- * temporarily extractors with mimetypes such as "audio / *"
- */
- generic_extractors = g_array_sized_new (FALSE, TRUE,
- sizeof (TrackerExtractorData),
- 10);
-
- dir = g_dir_open (MODULES_DIR, 0, &error);
-
- if (!dir) {
- g_error ("Error opening modules directory: %s\n", error->message);
- g_error_free (error);
- g_array_free (extractors, TRUE);
- extractors = NULL;
- g_array_free (generic_extractors, TRUE);
- return;
- }
-
- while ((name = g_dir_read_name (dir)) != NULL) {
- GModule *module;
- gchar *module_path;
- TrackerExtractorDataFunc func;
- TrackerExtractorData *data;
-
- if (!g_str_has_suffix (name, "." G_MODULE_SUFFIX)) {
- continue;
- }
-
- module_path = g_build_filename (MODULES_DIR, name, NULL);
-
- module = g_module_open (module_path, G_MODULE_BIND_LOCAL);
-
- if (!module) {
- g_warning ("Could not load module: %s", name);
- g_free (module_path);
- continue;
- }
-
- g_module_make_resident (module);
-
- if (g_module_symbol (module, "tracker_get_extractor_data", (gpointer *) &func)) {
- data = (func) ();
-
- while (data->mime) {
- if (strchr (data->mime, '*') != NULL) {
- g_array_append_val (generic_extractors, *data);
- } else {
- g_array_append_val (extractors, *data);
- }
-
- data++;
- }
- }
-
- g_free (module_path);
- }
-
- /* append the generic extractors at the end of
- * the list, so the specific ones are used first
- */
- g_array_append_vals (extractors, generic_extractors->data, generic_extractors->len);
-
- g_array_free (generic_extractors, TRUE);
-}
-
-
-static GHashTable *
-tracker_get_file_metadata (const gchar *uri, const gchar *mime)
-{
- GHashTable *meta_table;
- gchar *uri_in_locale;
-
- if (!uri) {
- return NULL;
- }
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- return NULL;
- }
-
- if (!g_file_test (uri_in_locale, G_FILE_TEST_EXISTS)) {
- g_free (uri_in_locale);
- return NULL;
- }
-
- meta_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-
- if (mime) {
- guint i;
- TrackerExtractorData *data;
-
- for (i = 0; i < extractors->len; i++) {
- data = &g_array_index (extractors, TrackerExtractorData, i);
-
- if (g_pattern_match_simple (data->mime, mime)) {
- (*data->extractor) (uri_in_locale, meta_table);
-
- if (g_hash_table_size (meta_table) == 0) {
- continue;
- }
-
- g_free (uri_in_locale);
-
- return meta_table;
- }
- }
- }
-
- g_free (uri_in_locale);
-
- return NULL;
-}
-
-
-static void
-get_meta_table_data (gpointer pkey, gpointer pvalue, gpointer user_data)
-{
- char *value;
-
- g_return_if_fail (pkey && pvalue);
-
- value = g_locale_to_utf8 ((char *) pvalue, -1, NULL, NULL, NULL);
-
- if (value) {
- if (value[0] != '\0') {
- /* replace any embedded semicolons or "=" as we use them for delimiters */
- value = g_strdelimit (value, ";", ',');
- value = g_strdelimit (value, "=", '-');
- value = g_strstrip (value);
-
- g_print ("%s=%s;\n", (char *) pkey, value);
- }
-
- g_free (value);
- }
-}
-
-
-static void
-kill_app_timeout (void)
-{
- g_usleep (1000 * 1000 * 10);
- exit (EXIT_FAILURE);
-}
-
-
-gint
-main (gint argc, gchar *argv[])
-{
- GHashTable *meta;
- gchar *filename;
-
- set_memory_rlimits ();
-
- if (!g_thread_supported ())
- g_thread_init (NULL);
-
- g_thread_create ((GThreadFunc) kill_app_timeout, NULL, FALSE, NULL);
-
- g_set_application_name ("tracker-extract");
-
- setlocale (LC_ALL, "");
-
- initialize_extractors ();
-
- if (argc == 1 || argc > 3) {
- g_print ("usage: tracker-extract file [mimetype]\n");
- return EXIT_FAILURE;
- }
-
- filename = g_filename_to_utf8 (argv[1], -1, NULL, NULL, NULL);
-
- if (!filename) {
- g_warning ("locale to UTF8 failed for filename!");
- return 1;
- }
-
- if (argc == 3) {
- gchar *mime = g_locale_to_utf8 (argv[2], -1, NULL, NULL, NULL);
-
- if (!mime) {
- g_warning ("locale to UTF8 failed for mime!");
- return EXIT_FAILURE;
- }
-
- meta = tracker_get_file_metadata (filename, mime);
- g_free (mime);
- } else {
- meta = tracker_get_file_metadata (filename, NULL);
- }
-
- g_free (filename);
-
- if (meta) {
- g_hash_table_foreach (meta, get_meta_table_data, NULL);
- g_hash_table_destroy (meta);
- }
-
- return EXIT_SUCCESS;
-}
diff --git a/src/tracker-extract/tracker-extract.h b/src/tracker-extract/tracker-extract.h
deleted file mode 100644
index 56a235ab4..000000000
--- a/src/tracker-extract/tracker-extract.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Tracker Extract - extracts embedded metadata from files
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_EXTRACT_H_
-#define _TRACKER_EXTRACT_H_
-
-#include <glib.h>
-
-typedef struct TrackerExtractorData TrackerExtractorData;
-typedef TrackerExtractorData * (* TrackerExtractorDataFunc) (void);
-
-struct TrackerExtractorData {
- const gchar *mime;
-
- void (* extractor) (const gchar *filename,
- GHashTable *metadata);
-};
-
-
-gchar * tracker_generic_date_to_iso8601 (const gchar *date, const gchar *format);
-
-gboolean tracker_is_empty_string (const gchar *s);
-
-gboolean tracker_spawn (gchar **argv, int timeout, gchar **tmp_stdout, gint *exit_status);
-
-#endif
diff --git a/src/tracker-extract/tracker-xmp.c b/src/tracker-extract/tracker-xmp.c
deleted file mode 100644
index 8c3f26e64..000000000
--- a/src/tracker-extract/tracker-xmp.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/* Tracker Xmp - Xmp helper functions
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <locale.h>
-#include <string.h>
-#include <glib.h>
-
-#include "config.h"
-#include "tracker-xmp.h"
-
-#ifdef HAVE_EXEMPI
-
-#include <exempi/xmp.h>
-#include <exempi/xmpconsts.h>
-
-static void tracker_xmp_iter (XmpPtr xmp,
- XmpIteratorPtr iter,
- GHashTable *metadata,
- gboolean append);
-
-static void tracker_xmp_iter_simple (GHashTable *metadata,
- const gchar *schema,
- const gchar *path,
- const gchar *value,
- gboolean append);
-
-
-static void
-tracker_append_string_to_hash_table (GHashTable *metadata, const gchar *key, const gchar *value, gboolean append)
-{
- gchar *new_value;
-
- if (append) {
- gchar *orig;
- if (g_hash_table_lookup_extended (metadata, key, NULL, (gpointer)&orig )) {
- new_value = g_strconcat (orig, " ", value, NULL);
- } else {
- new_value = g_strdup (value);
- }
- } else {
- new_value = g_strdup (value);
- }
-
- g_hash_table_insert (metadata, g_strdup (key), new_value);
-}
-
-
-/* We have an array, now recursively iterate over it's children. Set 'append' to true so that all values of the array are added
- under one entry. */
-static void
-tracker_xmp_iter_array (XmpPtr xmp, GHashTable *metadata, const gchar *schema, const gchar *path)
-{
- XmpIteratorPtr iter = xmp_iterator_new (xmp, schema, path, XMP_ITER_JUSTCHILDREN);
- tracker_xmp_iter (xmp, iter, metadata, TRUE);
- xmp_iterator_free (iter);
-}
-
-
-/* We have an array, now recursively iterate over it's children. Set 'append' to false so that only one item is used. */
-static void
-tracker_xmp_iter_alt_text (XmpPtr xmp, GHashTable *metadata, const gchar *schema, const gchar *path)
-{
- XmpIteratorPtr iter = xmp_iterator_new (xmp, schema, path, XMP_ITER_JUSTCHILDREN);
- tracker_xmp_iter (xmp, iter, metadata, FALSE);
- xmp_iterator_free (iter);
-}
-
-
-/* We have a simple element, but need to iterate over the qualifiers */
-static void
-tracker_xmp_iter_simple_qual (XmpPtr xmp, GHashTable *metadata,
- const gchar *schema, const gchar *path, const gchar *value, gboolean append)
-{
- XmpIteratorPtr iter = xmp_iterator_new (xmp, schema, path, XMP_ITER_JUSTCHILDREN | XMP_ITER_JUSTLEAFNAME);
-
- XmpStringPtr the_path = xmp_string_new ();
- XmpStringPtr the_prop = xmp_string_new ();
-
- gchar *locale = setlocale (LC_ALL, NULL);
- gchar *sep = strchr (locale,'.');
- if (sep) {
- locale[sep - locale] = '\0';
- }
- sep = strchr (locale, '_');
- if (sep) {
- locale[sep - locale] = '-';
- }
-
- gboolean ignore_element = FALSE;
-
- while (xmp_iterator_next (iter, NULL, the_path, the_prop, NULL)) {
- const gchar *qual_path = xmp_string_cstr (the_path);
- const gchar *qual_value = xmp_string_cstr (the_prop);
-
- if (strcmp (qual_path, "xml:lang") == 0) {
- /* is this a language we should ignore? */
- if (strcmp (qual_value, "x-default") != 0 && strcmp (qual_value, "x-repair") != 0 && strcmp (qual_value, locale) != 0) {
- ignore_element = TRUE;
- break;
- }
- }
- }
-
- if (!ignore_element) {
- tracker_xmp_iter_simple (metadata, schema, path, value, append);
- }
-
- xmp_string_free (the_prop);
- xmp_string_free (the_path);
-
- xmp_iterator_free (iter);
-}
-
-
-/* We have a simple element. Add any metadata we know about to the hash table */
-static void
-tracker_xmp_iter_simple (GHashTable *metadata,
- const gchar *schema, const gchar *path, const gchar *value, gboolean append)
-{
- gchar *name = g_strdup (strchr (path, ':') + 1);
- const gchar *index = strrchr (name, '[');
- if (index) {
- name[index-name] = '\0';
- }
-
- /* Dublin Core */
- if (strcmp (schema, NS_DC) == 0) {
- if (strcmp (name, "title") == 0) {
- tracker_append_string_to_hash_table (metadata, "Image:Title", value, append);
- }
- else if (strcmp (name, "rights") == 0) {
- tracker_append_string_to_hash_table (metadata, "File:Copyright", value, append);
- }
- else if (strcmp (name, "creator") == 0) {
- tracker_append_string_to_hash_table (metadata, "Image:Creator", value, append);
- }
- else if (strcmp (name, "description") == 0) {
- tracker_append_string_to_hash_table (metadata, "Image:Description", value, append);
- }
- else if (strcmp (name, "date") == 0) {
- tracker_append_string_to_hash_table (metadata, "Image:Date", value, append);
- }
- else if (strcmp (name, "keywords") == 0) {
- tracker_append_string_to_hash_table (metadata, "Image:Keywords", value, append);
- }
- }
- /* Creative Commons */
- else if (strcmp (schema, NS_CC) == 0) {
- if (strcmp (name, "license") == 0) {
- tracker_append_string_to_hash_table (metadata, "File:License", value, append);
- }
- }
-
- g_free (name);
-}
-
-
-/* Iterate over the XMP, dispatching to the appropriate element type (simple, simple w/qualifiers, or an array) handler */
-void
-tracker_xmp_iter (XmpPtr xmp, XmpIteratorPtr iter, GHashTable *metadata, gboolean append)
-{
- XmpStringPtr the_schema = xmp_string_new ();
- XmpStringPtr the_path = xmp_string_new ();
- XmpStringPtr the_prop = xmp_string_new ();
-
- uint32_t opt;
- while (xmp_iterator_next (iter, the_schema, the_path, the_prop, &opt)) {
- const gchar *schema = xmp_string_cstr (the_schema);
- const gchar *path = xmp_string_cstr (the_path);
- const gchar *value = xmp_string_cstr (the_prop);
-
- if (XMP_IS_PROP_SIMPLE (opt)) {
- if (strcmp (path,"") != 0) {
- if (XMP_HAS_PROP_QUALIFIERS (opt)) {
- tracker_xmp_iter_simple_qual (xmp, metadata, schema, path, value, append);
- } else {
- tracker_xmp_iter_simple (metadata, schema, path, value, append);
- }
- }
- }
- else if (XMP_IS_PROP_ARRAY (opt)) {
- if (XMP_IS_ARRAY_ALTTEXT (opt)) {
- tracker_xmp_iter_alt_text (xmp, metadata, schema, path);
- xmp_iterator_skip (iter, XMP_ITER_SKIPSUBTREE);
- } else {
- tracker_xmp_iter_array (xmp, metadata, schema, path);
- xmp_iterator_skip (iter, XMP_ITER_SKIPSUBTREE);
- }
- }
- }
-
- xmp_string_free (the_prop);
- xmp_string_free (the_path);
- xmp_string_free (the_schema);
-}
-
-#endif /* HAVE_EXEMPI */
-
-
-void
-tracker_read_xmp (const gchar *buffer, size_t len, GHashTable *metadata)
-{
-#ifdef HAVE_EXEMPI
- xmp_init ();
-
- XmpPtr xmp = xmp_new_empty ();
- xmp_parse (xmp, buffer, len);
- if (xmp != NULL) {
- XmpIteratorPtr iter = xmp_iterator_new (xmp, NULL, NULL, XMP_ITER_PROPERTIES);
- tracker_xmp_iter (xmp, iter, metadata, FALSE);
- xmp_iterator_free (iter);
-
- xmp_free (xmp);
- }
-
- xmp_terminate ();
-#endif
-}
diff --git a/src/tracker-extract/tracker-xmp.h b/src/tracker-extract/tracker-xmp.h
deleted file mode 100644
index eb14a0f2b..000000000
--- a/src/tracker-extract/tracker-xmp.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Tracker Xmp - Xmp helper functions
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_XMP_H_
-#define _TRACKER_XMP_H_
-
-#include <glib.h>
-
-void tracker_read_xmp (const gchar *buffer, size_t len, GHashTable *metadata);
-
-#endif /* _TRACKER_XMP_H_ */
diff --git a/src/tracker-preferences/Makefile.am b/src/tracker-preferences/Makefile.am
deleted file mode 100644
index de33a9b49..000000000
--- a/src/tracker-preferences/Makefile.am
+++ /dev/null
@@ -1,41 +0,0 @@
-@INTLTOOL_DESKTOP_RULE@
-
-bin_PROGRAMS = tracker-preferences
-
-desktopdir = $(datadir)/applications
-desktop_in_files = tracker-preferences.desktop.in
-desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
-
-
-pkgdata_DATA = tracker-preferences.glade
-
-INCLUDES = \
- -DTRACKER_DATADIR=\""$(datadir)/tracker"\" \
- -DTRACKER_LOCALEDIR=\""$(localedir)"\" \
- -DTRACKER_BINDIR=\""$(bindir)"\" \
- $(GLIB_CFLAGS) \
- $(GTK2_CFLAGS) \
- $(LIBGLADE_CFLAGS) \
- $(DBUS_CFLAGS) \
- -I$(top_srcdir)/src/libtracker
-
-tracker_preferences_SOURCES = \
- tracker-preferences.c \
- tracker-preferences.h \
- tracker-preferences-dialogs.c \
- tracker-preferences-dialogs.h \
- tracker-preferences-main.c \
- tracker-preferences-utils.c \
- tracker-preferences-utils.h
-
-tracker_preferences_LDADD = \
- $(GLIB_LIBS) \
- $(GTK2_LIBS) \
- $(LIBGLADE_LIBS) \
- $(DBUS_LIBS) \
- $(top_builddir)/src/libtracker-common/libtracker-common.la \
- $(top_builddir)/src/libtracker/libtrackerclient.la
-
-EXTRA_DIST = $(pkgdata_DATA)
-
-CLEANFILES = $(desktop_DATA)
diff --git a/src/tracker-preferences/tracker-preferences-dialogs.c b/src/tracker-preferences/tracker-preferences-dialogs.c
deleted file mode 100644
index 6d8c50a0d..000000000
--- a/src/tracker-preferences/tracker-preferences-dialogs.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <gtk/gtk.h>
-#include "tracker-preferences-dialogs.h"
-
-static void
-activate_dialog_entry (GtkEntry * entry, gpointer user_data)
-{
- gtk_dialog_response (GTK_DIALOG (user_data), GTK_RESPONSE_ACCEPT);
-}
-
-gchar *
-tracker_preferences_select_folder (void)
-{
- gchar *folder = NULL;
- GtkWidget *dialog =
- gtk_file_chooser_dialog_new
- ("Tracker Preferences - Choose a folder",
- NULL,
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN,
- GTK_RESPONSE_ACCEPT,
- NULL);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
- folder = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER
- (dialog));
-
- gtk_widget_destroy (dialog);
- return folder;
-}
-
-gchar *
-tracker_preferences_select_pattern (void)
-{
- gchar *pattern = NULL;
- GtkWidget *dialog =
- gtk_dialog_new_with_buttons
- ("Tracker Preferences - Enter a file glob",
- NULL,
- GTK_DIALOG_MODAL,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- NULL);
-
- GtkWidget *entry = gtk_entry_new ();
- GtkWidget *label =
- gtk_label_new ("Enter a file mask that you wish to ignore:");
-
- g_signal_connect (G_OBJECT (entry), "activate",
- G_CALLBACK (activate_dialog_entry), dialog);
-
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), label, TRUE,
- TRUE, 0);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), entry, TRUE,
- TRUE, 0);
- gtk_widget_show_all (dialog);
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
- pattern = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
-
- gtk_widget_destroy (dialog);
- return pattern;
-}
diff --git a/src/tracker-preferences/tracker-preferences-dialogs.h b/src/tracker-preferences/tracker-preferences-dialogs.h
deleted file mode 100644
index 7d07c9faf..000000000
--- a/src/tracker-preferences/tracker-preferences-dialogs.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_PREFERENCES_DIALOGS_H__
-#define __TRACKER_PREFERENCES_DIALOGS_H__
-
-#include <glib.h>
-
-gchar *
-tracker_preferences_select_folder (void);
-
-gchar *
-tracker_preferences_select_pattern (void);
-
-#endif
diff --git a/src/tracker-preferences/tracker-preferences-main.c b/src/tracker-preferences/tracker-preferences-main.c
deleted file mode 100644
index ec80144c0..000000000
--- a/src/tracker-preferences/tracker-preferences-main.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <stdlib.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-
-#include "tracker-preferences.h"
-#include "config.h"
-
-
-gint
-main (gint argc, gchar * argv[])
-{
- TrackerPreferences *preferences = NULL;
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- gtk_init (&argc, &argv);
- preferences = tracker_preferences_new ();
- gtk_main ();
-
- g_object_unref (preferences);
-
- return EXIT_SUCCESS;
-}
diff --git a/src/tracker-preferences/tracker-preferences-utils.c b/src/tracker-preferences/tracker-preferences-utils.c
deleted file mode 100644
index d81a68936..000000000
--- a/src/tracker-preferences/tracker-preferences-utils.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "tracker-preferences-utils.h"
-
-static const gchar *claws_binaries[] = {
- "claws-mail",
- "sylpheed-claws-gtk2",
- "sylpheed-claws",
- "sylpheed"
-};
-
-static const gchar *thunderbird_binaries[] = {
- "thunderbird",
- "mozilla-thunderbird"
-};
-
-static const gchar *evolution_binaries[] = {
- "evolution"
-};
-
-static const gchar *kmail_binaries[] = {
- "kmail"
-};
-
-gchar *
-get_claws_command (void)
-{
- guint i;
- gchar *cmd = NULL;
-
- for (i = 0; cmd == NULL && i < G_N_ELEMENTS (claws_binaries); i++)
- cmd = g_find_program_in_path (claws_binaries[i]);
-
- return cmd;
-}
-
-gchar *
-get_thunderbird_command (void)
-{
- guint i;
- gchar *cmd = NULL;
-
- for (i = 0; cmd == NULL && i < G_N_ELEMENTS (thunderbird_binaries);
- i++)
- cmd = g_find_program_in_path (thunderbird_binaries[i]);
-
- return cmd;
-}
-
-gchar *
-get_evolution_command (void)
-{
- guint i;
- gchar *cmd = NULL;
-
- for (i = 0; cmd == NULL && i < G_N_ELEMENTS (evolution_binaries); i++)
- cmd = g_find_program_in_path (evolution_binaries[i]);
-
- return cmd;
-}
-
-gchar *
-get_kmail_command (void)
-{
- guint i;
- gchar *cmd = NULL;
-
- for (i = 0; cmd == NULL && i < G_N_ELEMENTS (kmail_binaries); i++)
- cmd = g_find_program_in_path (kmail_binaries[i]);
-
- return cmd;
-}
-
-gboolean
-evolution_available (void)
-{
- gchar *command = get_evolution_command ();
-
- if (!command)
- return FALSE;
-
- g_free (command);
- return TRUE;
-}
-
-gboolean
-thunderbird_available (void)
-{
- gchar *command = get_thunderbird_command ();
-
- if (!command)
- return FALSE;
-
- g_free (command);
- return TRUE;
-}
-
-gboolean
-kmail_available (void)
-{
- gchar *command = get_kmail_command ();
-
- if (!command)
- return FALSE;
-
- g_free (command);
- return TRUE;
-}
-
-gboolean
-convert_available (void)
-{
- gchar *command = g_find_program_in_path ("convert");
-
- if (!command)
- return FALSE;
-
- g_free (command);
- return TRUE;
-}
diff --git a/src/tracker-preferences/tracker-preferences-utils.h b/src/tracker-preferences/tracker-preferences-utils.h
deleted file mode 100644
index 06297fd71..000000000
--- a/src/tracker-preferences/tracker-preferences-utils.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef __TRACKER_PREFERENCES_UTILS_H__
-#define __TRACKER_PREFERENCES_UTILS_H__
-
-#include <glib.h>
-
-gchar *
-get_claws_command (void);
-
-gchar *
-get_thunderbird_command (void);
-
-gchar *
-get_evolution_command (void);
-
-gchar *
-get_kmail_command (void);
-
-gboolean
-evolution_available (void);
-
-gboolean
-thunderbird_available (void);
-
-gboolean
-kmail_available (void);
-
-gboolean
-convert_available (void);
-
-#endif
diff --git a/src/tracker-preferences/tracker-preferences.c b/src/tracker-preferences/tracker-preferences.c
deleted file mode 100644
index 141f3f388..000000000
--- a/src/tracker-preferences/tracker-preferences.c
+++ /dev/null
@@ -1,1173 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#include "config.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <glib.h>
-#include <glib-object.h>
-#include <gtk/gtk.h>
-#include <glade/glade.h>
-#include <stdlib.h>
-
-#include "../libtracker/tracker.h"
-#include "../trackerd/tracker-dbus.h"
-#include "../libtracker-common/tracker-configuration.h"
-
-#include "tracker-preferences.h"
-#include "tracker-preferences-dialogs.h"
-
-#define TRACKER_PREFERENCES_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), TRACKER_TYPE_PREFERENCES, TrackerPreferencesPrivate))
-
-typedef struct _TrackerPreferencesPrivate {
- GladeXML *gxml;
- DBusGConnection *connection;
- DBusGProxy *dbus_proxy;
- DBusGProxy *tracker_proxy;
-} TrackerPreferencesPrivate;
-
-static void tracker_preferences_class_init (TrackerPreferencesClass *klass);
-static void tracker_preferences_init (GTypeInstance *instance, gpointer g_class);
-static void tracker_preferences_finalize (GObject *object);
-static void setup_page_general (TrackerPreferences *preferences);
-static void setup_page_files (TrackerPreferences *preferences);
-static void setup_page_emails (TrackerPreferences *preferences);
-static void setup_page_ignored_files (TrackerPreferences *preferences);
-static void setup_page_performance (TrackerPreferences *preferences);
-static void tracker_preferences_cmd_quit (GtkWidget *widget, GdkEvent *event, gpointer data);
-static void tracker_preferences_cmd_help (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_apply (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_cancel (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_ok (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_add_index_path (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_remove_index_path (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_add_crawled_path (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_remove_crawled_path (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_add_index_mailbox (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_remove_index_mailbox (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_add_ignore_path (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_remove_ignore_path (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_add_ignore_pattern (GtkWidget *widget, gpointer data);
-static void tracker_preferences_cmd_remove_ignore_pattern (GtkWidget *widget, gpointer data);
-static void append_item_to_list (TrackerPreferences *dialog, const gchar* const item,
- const gchar* const widget);
-static void remove_selection_from_list (TrackerPreferences *dialog,
- const gchar* const widget);
-static GSList *treeview_get_values (GtkTreeView *treeview);
-static gint _strcmp (gconstpointer a, gconstpointer b);
-static void initialize_listview (GtkWidget *treeview);
-static void populate_list (GtkWidget *treeview, GSList *list);
-static gboolean str_slist_equal (GSList *a, GSList *b);
-
-static GObjectClass *parent_class = NULL;
-static gboolean flag_restart = FALSE;
-static gboolean flag_reindex = FALSE;
-static gboolean first_time = TRUE;
-static gboolean flag_quit = FALSE;
-static GtkWidget *main_window = NULL;
-
-
-static void
-tracker_preferences_class_init (TrackerPreferencesClass *klass)
-{
- GObjectClass *g_class = G_OBJECT_CLASS (klass);
- parent_class = g_type_class_peek_parent (klass);
-
- g_type_class_add_private (klass, sizeof (TrackerPreferencesPrivate));
-
- g_class->finalize = tracker_preferences_finalize;
-}
-
-static void
-tracker_preferences_init (GTypeInstance *instance, gpointer g_class)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (instance);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- tracker_configuration_load ();
-
- GtkWidget *widget = NULL;
-
- priv->gxml =
- glade_xml_new (TRACKER_DATADIR "/tracker-preferences.glade",
- NULL, NULL);
-
- if (priv->gxml == NULL)
- g_error ("Unable to find locate tracker-preferences.glade");
-
- main_window = glade_xml_get_widget (priv->gxml, "dlgPreferences");
-
- /* Hide window first to allow the dialog to reize itself without redrawing */
- gtk_widget_hide (main_window);
-
- gtk_window_set_icon_name (GTK_WINDOW (main_window), "tracker");
- g_signal_connect (main_window, "delete-event",
- G_CALLBACK (tracker_preferences_cmd_quit), self);
-
- /* Setup signals */
- widget = glade_xml_get_widget (priv->gxml, "cmdHelp");
- g_signal_connect (widget, "clicked", G_CALLBACK (tracker_preferences_cmd_help),
- self);
- gtk_widget_hide (widget);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdApply");
- g_signal_connect (widget, "clicked", G_CALLBACK (tracker_preferences_cmd_apply),
- self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdCancel");
- g_signal_connect (widget, "clicked", G_CALLBACK (tracker_preferences_cmd_cancel),
- self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdOK");
- g_signal_connect (widget, "clicked", G_CALLBACK (tracker_preferences_cmd_ok),
- self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdAddIndexPath");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_add_index_path), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdRemoveIndexPath");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_remove_index_path), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdAddCrawledPath");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_add_crawled_path), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdRemoveCrawledPath");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_remove_crawled_path), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdAddIndexMailbox");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_add_index_mailbox), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdRemoveIndexMailbox");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_remove_index_mailbox), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdAddIgnorePath");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_add_ignore_path), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdRemoveIgnorePath");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_remove_ignore_path), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdAddIgnorePattern");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_add_ignore_pattern), self);
-
- widget = glade_xml_get_widget (priv->gxml, "cmdRemoveIgnorePattern");
- g_signal_connect (widget, "clicked",
- G_CALLBACK (tracker_preferences_cmd_remove_ignore_pattern), self);
-
- /* Init dbus */
- GError *error = NULL;
- g_type_init ();
-
- priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
- if (priv->connection == NULL) {
- g_warning ("Unable to connect to dbus: %s\n", error->message);
- g_error_free (error);
- return;
- }
-
- priv->dbus_proxy = dbus_g_proxy_new_for_name (priv->connection,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
-
- if (!priv->dbus_proxy) {
- g_warning ("could not create proxy");
- return;
- }
-
- priv->tracker_proxy = dbus_g_proxy_new_for_name (priv->connection,
- TRACKER_DBUS_SERVICE,
- TRACKER_OBJECT,
- TRACKER_INTERFACE);
-
- if (!priv->tracker_proxy) {
- g_warning ("could not create proxy");
- return;
- }
-
- /* setup pages */
- setup_page_general (self);
- setup_page_files (self);
- setup_page_emails (self);
- setup_page_ignored_files (self);
- setup_page_performance (self);
-
- gtk_widget_show (main_window);
-}
-
-static void
-tracker_preferences_finalize (GObject *object)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (object);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- g_object_unref (priv->gxml);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-TrackerPreferences *
-tracker_preferences_new (void)
-{
- TrackerPreferences *prefs;
- prefs = g_object_new (TRACKER_TYPE_PREFERENCES, NULL);
- return TRACKER_PREFERENCES (prefs);
-}
-
-
-static void
-set_bool_option (TrackerPreferencesPrivate *priv, const gchar *name, gboolean value)
-{
- dbus_g_proxy_begin_call (priv->tracker_proxy,
- "SetBoolOption",
- NULL,
- NULL,
- NULL,
- G_TYPE_STRING, name,
- G_TYPE_BOOLEAN, value,
- G_TYPE_INVALID);
-}
-
-
-static void
-set_int_option (TrackerPreferencesPrivate *priv, const gchar *name, int value)
-{
- dbus_g_proxy_begin_call (priv->tracker_proxy,
- "SetIntOption",
- NULL,
- NULL,
- NULL,
- G_TYPE_STRING, name,
- G_TYPE_INT, value,
- G_TYPE_INVALID);
-}
-
-static void
-setup_page_general (TrackerPreferences *preferences)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (preferences);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- gint sleep = 45;
- gchar *str_value = NULL;
- gboolean value = FALSE;
- GtkWidget *widget = NULL;
-
- widget = glade_xml_get_widget (priv->gxml, "spnInitialSleep");
- sleep = tracker_configuration_get_integer ("/General/InitialSleep", NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), sleep);
-
- widget = glade_xml_get_widget (priv->gxml, "chkEnableIndexing");
- value = tracker_configuration_get_boolean ("/Indexing/EnableIndexing", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml, "chkEnableWatching");
- value = tracker_configuration_get_boolean ("/Watches/EnableWatching", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml, "comLanguage");
- str_value = tracker_configuration_get_string ("/Indexing/Language", NULL);
- if (str_value == NULL) {
- /* no value for language? Default to "en" */
- str_value = g_strdup( "en" ) ;
- }
-
- gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
-
- gint i;
- for (i = 0; i < 12; i++) {
- if (strcasecmp (LanguageMap[i].language, str_value) == 0) {
- gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i);
- break;
- }
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkDisableBatteryIndex");
- value = tracker_configuration_get_boolean ("/Indexing/BatteryIndex", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), !value);
-
- widget = glade_xml_get_widget (priv->gxml, "chkDisableBatteryInitialIndex");
- value = tracker_configuration_get_boolean ("/Indexing/BatteryIndexInitial", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), !value);
-}
-
-static void
-setup_page_performance (TrackerPreferences *preferences)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (preferences);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- GtkWidget *widget = NULL;
- gint value = 0;
- gboolean bvalue = FALSE;
-
- widget = glade_xml_get_widget (priv->gxml, "scaThrottle");
- value = tracker_configuration_get_integer("/Indexing/Throttle", NULL);
- gtk_range_set_value (GTK_RANGE (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml, "optReducedMemory");
- bvalue = tracker_configuration_get_boolean ("/General/LowMemoryMode", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bvalue);
-
- widget = glade_xml_get_widget (priv->gxml, "optNormal");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), !bvalue);
-
- widget = glade_xml_get_widget (priv->gxml, "chkFastMerges");
- bvalue = tracker_configuration_get_boolean ("/Indexing/FastMerges", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bvalue);
-
- widget = glade_xml_get_widget (priv->gxml, "spnMaxText");
- value = tracker_configuration_get_integer ("/Performance/MaxTextToIndex", NULL);
-
- value = value / 1024;
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml, "spnMaxWords");
- value = tracker_configuration_get_integer ("/Performance/MaxWordsToIndex", NULL);
-
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value);
-
-}
-
-static void
-setup_page_files (TrackerPreferences *preferences)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (preferences);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- GSList *list = NULL, *entry = NULL;
- gboolean value = FALSE;
- GtkWidget *widget = NULL;
-
- widget = glade_xml_get_widget (priv->gxml, "chkIndexContents");
- value = tracker_configuration_get_boolean ("/Indexing/EnableFileContentIndexing",
- NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml, "chkGenerateThumbs");
- value = tracker_configuration_get_boolean ("/Indexing/EnableThumbnails", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml, "chkSkipMountPoints");
- value = tracker_configuration_get_boolean ("/Indexing/SkipMountPoints", NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), !value);
-
- widget = glade_xml_get_widget (priv->gxml,
- "lstAdditionalPathIndexes");
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (widget), FALSE);
- list = tracker_configuration_get_list ("/Watches/WatchDirectoryRoots",
- G_TYPE_STRING, NULL);
-
- widget = glade_xml_get_widget (priv->gxml, "chkIndexHomeDirectory");
- entry = g_slist_find_custom (list, g_get_home_dir (), _strcmp);
-
- if (entry) {
- list = g_slist_delete_link (list, entry);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
- } else {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "lstAdditionalPathIndexes");
-
- initialize_listview (widget);
- populate_list (widget, list);
- g_slist_free (list);
-
- widget = glade_xml_get_widget (priv->gxml, "lstCrawledPaths");
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (widget), FALSE);
- list = tracker_configuration_get_list ("/Watches/CrawlDirectory",
- G_TYPE_STRING, NULL);
-
- initialize_listview (widget);
- populate_list (widget, list);
- g_slist_free (list);
-}
-
-static void
-setup_page_ignored_files (TrackerPreferences *preferences)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (preferences);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- GSList *list = NULL;
- GtkWidget *widget = NULL;
-
- /* Ignore Paths */
- widget = glade_xml_get_widget (priv->gxml, "lstIgnorePaths");
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (widget), FALSE);
- list = tracker_configuration_get_list ("/Watches/NoWatchDirectory",
- G_TYPE_STRING, NULL);
-
- initialize_listview (widget);
- populate_list (widget, list);
-
- g_slist_free (list);
-
- /* Ignore File Patterns */
- widget = glade_xml_get_widget (priv->gxml, "lstIgnoreFilePatterns");
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (widget), FALSE);
- list = tracker_configuration_get_list ("/Indexing/NoIndexFileTypes",
- G_TYPE_STRING, NULL);
-
- initialize_listview (widget);
- populate_list (widget, list);
-
- g_slist_free (list);
-}
-
-static void
-setup_page_emails (TrackerPreferences *preferences)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (preferences);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- GtkWidget *widget = NULL;
- gboolean value = FALSE;
-
- widget = glade_xml_get_widget (priv->gxml,
- "chkEnableEvolutionIndexing");
- value = tracker_configuration_get_boolean ("/Emails/IndexEvolutionEmails",
- NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
- widget = glade_xml_get_widget (priv->gxml,
- "chkEnableModestIndexing");
- value = tracker_configuration_get_boolean ("/Emails/IndexModestEmails",
- NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
-
- widget = glade_xml_get_widget (priv->gxml,
- "chkEnableThunderbirdIndexing");
- value = tracker_configuration_get_boolean ("/Emails/IndexThunderbirdEmails",
- NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-}
-
-static void
-tracker_preferences_cmd_quit (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- tracker_preferences_cmd_ok (NULL, data);
-}
-
-static void
-tracker_preferences_cmd_help (GtkWidget *widget, gpointer data)
-{
-}
-
-static void
-name_owner_changed (DBusGProxy *proxy, const gchar *name,
- const gchar *prev_owner, const gchar *new_owner,
- gpointer data)
-{
- if (!g_str_equal (name, TRACKER_DBUS_SERVICE))
- return;
-
- if (!first_time)
- return;
-
- if (g_str_equal (new_owner, "")) {
- /* tracker has exited */
- const gchar *command = TRACKER_BINDIR "/trackerd";
-
- if (!g_spawn_command_line_async (command, NULL))
- g_warning ("Unable to execute command: %s", command);
-
- first_time = FALSE;
-
- if (flag_quit)
- gtk_main_quit ();
- }
-}
-
-static gboolean
-if_trackerd_start (TrackerPreferencesPrivate *priv)
-{
- gchar *status = NULL;
- TrackerClient *client = NULL;
-
- client = tracker_connect (FALSE);
-
- if (!client)
- return FALSE;
-
- status = tracker_get_status (client, NULL);
- tracker_disconnect (client);
-
- if (strcmp (status, "Shutdown") == 0)
- return FALSE;
- else
- return TRUE;
-}
-
-
-static void
-restart_tracker (GtkDialog *dialog, gint response, gpointer data)
-{
-
- gtk_widget_destroy (GTK_WIDGET (dialog));
-
- if (response == GTK_RESPONSE_YES) {
-
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- TrackerPreferencesPrivate *priv = TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- first_time = TRUE;
- dbus_g_proxy_add_signal (priv->dbus_proxy,
- "NameOwnerChanged",
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->dbus_proxy,
- "NameOwnerChanged",
- G_CALLBACK (name_owner_changed),
- self, NULL);
-
- dbus_g_proxy_begin_call (priv->tracker_proxy,
- "Shutdown",
- NULL,
- NULL,
- NULL,
- G_TYPE_BOOLEAN,
- flag_reindex, G_TYPE_INVALID);
- flag_restart = FALSE;
- flag_reindex = FALSE;
-
- } else if (flag_quit) {
- gtk_main_quit ();
- }
-}
-
-static void
-tracker_preferences_cmd_apply (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- GSList *list = NULL;
- GSList *list_old = NULL;
- int ivalue, ivalue_old;
- gboolean bvalue, bvalue_old;
- gchar *str_value;
-
- /* save general settings */
- widget = glade_xml_get_widget (priv->gxml, "spnInitialSleep");
- ivalue = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
- tracker_configuration_set_integer ("/General/InitialSleep", ivalue);
-
- widget = glade_xml_get_widget (priv->gxml, "chkEnableIndexing");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/EnableIndexing",
- NULL);
- if (bvalue != bvalue_old) {
- flag_restart = TRUE;
- set_bool_option (priv, "EnableIndexing", bvalue);
- tracker_configuration_set_boolean ("/Indexing/EnableIndexing", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkEnableWatching");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Watches/EnableWatching",
- NULL);
- if (bvalue != bvalue_old) {
- flag_restart = TRUE;
- set_bool_option (priv, "EnableIndexing", bvalue);
- tracker_configuration_set_boolean ("/Watches/EnableWatching", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "comLanguage");
- gint i = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
- str_value = tracker_configuration_get_string ("/Indexing/Language", NULL);
- if (str_value == NULL) {
- /* no value for language? Default to "en" */
- str_value = g_strdup( "en" ) ;
- }
- if (i != -1) {
- if (strcmp (str_value, LanguageMap[i].language) != 0) {
- flag_restart = TRUE;
- flag_reindex = TRUE;
- }
- tracker_configuration_set_string ("/Indexing/Language",
- LanguageMap[i].language);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkDisableBatteryIndex");
- bvalue = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/BatteryIndex",
- NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "BatteryIndex", bvalue);
- tracker_configuration_set_boolean ("/Indexing/BatteryIndex", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkDisableBatteryInitialIndex");
- bvalue = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/BatteryIndexInitial",
- NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "BatteryIndexInitial", bvalue);
- tracker_configuration_set_boolean ("/Indexing/BatteryIndexInitial", bvalue);
- }
-
- /* files settings */
- widget = glade_xml_get_widget (priv->gxml, "chkIndexContents");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/EnableFileContentIndexing",
- NULL);
- if (bvalue != bvalue_old) {
- flag_restart = TRUE;
- flag_reindex = TRUE;
- set_bool_option (priv, "IndexFileContents", bvalue);
- tracker_configuration_set_boolean ("/Indexing/EnableFileContentIndexing",
- bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkGenerateThumbs");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/EnableThumbnails",
- NULL);
- if (bvalue != bvalue_old) {
- flag_restart = TRUE;
- flag_reindex = TRUE;
- set_bool_option (priv, "GenerateThumbs", bvalue);
- tracker_configuration_set_boolean ("/Indexing/EnableThumbnails", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkSkipMountPoints");
- bvalue = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/SkipMountPoints",
- NULL);
- if (bvalue != bvalue_old) {
- flag_restart = TRUE;
- set_bool_option (priv, "SkipMountPoints", bvalue);
- tracker_configuration_set_boolean ("/Indexing/SkipMountPoints", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "lstAdditionalPathIndexes");
- list = treeview_get_values (GTK_TREE_VIEW (widget));
-
- widget = glade_xml_get_widget (priv->gxml, "chkIndexHomeDirectory");
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
- list = g_slist_prepend (list, g_strdup (g_get_home_dir ()));
- }
- list_old = tracker_configuration_get_list ("/Watches/WatchDirectoryRoots",
- G_TYPE_STRING, NULL);
- if (!str_slist_equal (list, list_old)) {
- flag_restart = TRUE;
- tracker_configuration_set_list ("/Watches/WatchDirectoryRoots", G_TYPE_STRING,
- list);
- }
-
- g_slist_free (list);
- list = NULL;
- g_slist_free (list_old);
- list_old = NULL;
-
- widget = glade_xml_get_widget (priv->gxml, "lstCrawledPaths");
- list = treeview_get_values (GTK_TREE_VIEW (widget));
- list_old = tracker_configuration_get_list ("/Watches/CrawlDirectory",
- G_TYPE_STRING, NULL);
- if (!str_slist_equal (list, list_old)) {
- flag_restart = TRUE;
- tracker_configuration_set_list ("/Watches/CrawlDirectory", G_TYPE_STRING,
- list);
- }
-
- g_slist_free (list);
- list = NULL;
- g_slist_free (list_old);
- list_old = NULL;
-
- /* ignored files settings */
- widget = glade_xml_get_widget (priv->gxml, "lstIgnorePaths");
- list = treeview_get_values (GTK_TREE_VIEW (widget));
- list_old = tracker_configuration_get_list ("/Watches/NoWatchDirectory",
- G_TYPE_STRING, NULL);
- if (!str_slist_equal (list, list_old)) {
- flag_restart = TRUE;
- tracker_configuration_set_list ("/Watches/NoWatchDirectory", G_TYPE_STRING,
- list);
- }
-
- g_slist_free (list);
- list = NULL;
- g_slist_free (list_old);
- list_old = NULL;
-
- widget = glade_xml_get_widget (priv->gxml, "lstIgnoreFilePatterns");
- list = treeview_get_values (GTK_TREE_VIEW (widget));
- list_old = tracker_configuration_get_list ("/Indexing/NoIndexFileTypes",
- G_TYPE_STRING, NULL);
- if (!str_slist_equal (list, list_old)) {
- flag_restart = TRUE;
- tracker_configuration_set_list ("/Indexing/NoIndexFileTypes", G_TYPE_STRING,
- list);
- }
-
- g_slist_free (list);
- list = NULL;
- g_slist_free (list_old);
- list_old = NULL;
-
- /* Email settings */
- widget = glade_xml_get_widget (priv->gxml, "chkEnableEvolutionIndexing");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Emails/IndexEvolutionEmails",
- NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "EnableEvolution", bvalue);
- tracker_configuration_set_boolean ("/Emails/IndexEvolutionEmails", bvalue);
- }
-
-
- widget = glade_xml_get_widget (priv->gxml, "chkEnableModestIndexing");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Emails/IndexModestEmails",
- NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "EnableModest", bvalue);
- tracker_configuration_set_boolean ("/Emails/IndexModestEmails", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkEnableThunderbirdIndexing");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Emails/IndexThunderbirdEmails",
- NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "EnableThunderbird", bvalue);
- tracker_configuration_set_boolean ("/Emails/IndexThunderbirdEmails", bvalue);
- }
-
- /* Performance settings */
- widget = glade_xml_get_widget (priv->gxml, "scaThrottle");
- ivalue = gtk_range_get_value (GTK_RANGE (widget));
- ivalue_old = tracker_configuration_get_integer ("/Indexing/Throttle", NULL);
- if (ivalue != ivalue_old) {
- set_int_option (priv, "Throttle", ivalue);
- tracker_configuration_set_integer ("/Indexing/Throttle", ivalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "optReducedMemory");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/General/LowMemoryMode",
- NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "LowMemoryMode", bvalue);
- tracker_configuration_set_boolean ("/General/LowMemoryMode", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "chkFastMerges");
- bvalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- bvalue_old = tracker_configuration_get_boolean ("/Indexing/FastMerges", NULL);
- if (bvalue != bvalue_old) {
- set_bool_option (priv, "FastMerges", bvalue);
- tracker_configuration_set_boolean ("/Indexing/FastMerges", bvalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "spnMaxText");
- ivalue = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget))*1024;
- ivalue_old = tracker_configuration_get_integer ("/Performance/MaxTextToIndex",
- NULL);
- if (ivalue != ivalue_old) {
- set_int_option (priv, "MaxText", ivalue);
- tracker_configuration_set_integer ("/Performance/MaxTextToIndex", ivalue);
- }
-
- widget = glade_xml_get_widget (priv->gxml, "spnMaxWords");
- ivalue = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
- ivalue_old = tracker_configuration_get_integer ("/Performance/MaxWordsToIndex",
- NULL);
- if (ivalue != ivalue_old) {
- set_int_option (priv, "MaxWords", ivalue);
- tracker_configuration_set_integer ("/Performance/MaxWordsToIndex", ivalue);
- }
-
- /* save config to distk */
- tracker_configuration_save ();
-
- if (flag_restart && if_trackerd_start (priv)) {
- GtkWidget *dialog;
- gchar *primary;
- gchar *secondary;
- gchar *button;
-
- if (flag_reindex) {
- primary = g_strdup (_("Data must be reindexed"));
- secondary = g_strdup (_("In order for your changes to "
- "take effect, Tracker must reindex your "
- "files. Click the Reindex button to "
- "start reindexing now, otherwise this "
- "action will be performed the "
- "next time the Tracker daemon "
- "is restarted."));
- button = g_strdup (_("_Reindex"));
-
- } else {
- primary = g_strdup (_("Tracker daemon must be "
- "restarted"));
- secondary = g_strdup (_("In order for your changes to "
- "take effect, the Tracker daemon "
- "has to be restarted. Click the "
- "Restart button to restart the "
- "daemon now."));
- button = g_strdup (_("_Restart"));
- }
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (main_window),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_NONE,
- primary);
-
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_NO,
- button, GTK_RESPONSE_YES, NULL);
-
- g_free (primary);
- g_free (secondary);
- g_free (button);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (restart_tracker), self);
-
- gtk_widget_show (dialog);
- } else if (flag_quit) {
- tracker_configuration_free ();
- gtk_main_quit ();
- }
-}
-
-static void
-tracker_preferences_cmd_cancel (GtkWidget *widget, gpointer data)
-{
- tracker_configuration_free ();
- gtk_main_quit ();
-}
-
-static void
-tracker_preferences_cmd_ok (GtkWidget *widget, gpointer data)
-{
- flag_quit = TRUE;
- tracker_preferences_cmd_apply (widget, data);
-}
-
-static void
-tracker_preferences_cmd_add_crawled_path (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- gchar *path = tracker_preferences_select_folder ();
-
- if (!path)
- return;
-
- append_item_to_list (self, path, "lstCrawledPaths");
-
- g_free (path);
-}
-
-static void
-tracker_preferences_cmd_remove_crawled_path (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- remove_selection_from_list (self, "lstCrawledPaths");
-}
-
-static void
-tracker_preferences_cmd_add_index_path (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (self);
-
- GtkWidget *item = NULL;
- gchar *path = tracker_preferences_select_folder ();
-
- if (!path)
- return;
-
- if (!strcmp (path, g_get_home_dir ())) {
- item = glade_xml_get_widget (priv->gxml,
- "chkIndexHomeDirectory");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), TRUE);
- } else
- append_item_to_list (self, path, "lstAdditionalPathIndexes");
-
- g_free (path);
-}
-
-static void
-tracker_preferences_cmd_remove_index_path (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- remove_selection_from_list (self, "lstAdditionalPathIndexes");
-}
-
-static void
-tracker_preferences_cmd_add_index_mailbox (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
-
- gchar *path = tracker_preferences_select_folder ();
-
- if (!path)
- return;
-
- append_item_to_list (self, path, "lstAdditionalMBoxIndexes");
- g_free (path);
-}
-
-static void
-tracker_preferences_cmd_remove_index_mailbox (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- remove_selection_from_list (self, "lstAdditionalMBoxIndexes");
-}
-
-static void
-tracker_preferences_cmd_add_ignore_path (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
-
- gchar *path = tracker_preferences_select_folder ();
-
- if (!path)
- return;
-
- append_item_to_list (self, path, "lstIgnorePaths");
- g_free (path);
-}
-
-static void
-tracker_preferences_cmd_remove_ignore_path (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- remove_selection_from_list (self, "lstIgnorePaths");
-}
-
-static void
-tracker_preferences_cmd_add_ignore_pattern (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
-
- gchar *pattern = tracker_preferences_select_pattern ();
-
- if (!pattern)
- return;
-
- append_item_to_list (self, pattern, "lstIgnoreFilePatterns");
-}
-
-static void
-tracker_preferences_cmd_remove_ignore_pattern (GtkWidget *widget, gpointer data)
-{
- TrackerPreferences *self = TRACKER_PREFERENCES (data);
- remove_selection_from_list (self, "lstIgnoreFilePatterns");
-}
-
-static void
-append_item_to_list (TrackerPreferences *dialog, const gchar *const item,
- const gchar* const widget)
-{
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (dialog);
-
- GtkTreeIter iter;
- GtkWidget *view = glade_xml_get_widget (priv->gxml, widget);
- GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
-
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter))
- do {
- gchar *value = NULL;
- gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 0,
- &value, -1);
-
- if (!strcmp (item, value))
- return;
- } while (gtk_tree_model_iter_next
- (GTK_TREE_MODEL (model), &iter));
-
- gtk_list_store_append (GTK_LIST_STORE (model), &iter);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, item, -1);
-}
-
-static void
-remove_selection_from_list (TrackerPreferences *dialog,
- const gchar* const widget)
-{
- TrackerPreferencesPrivate *priv =
- TRACKER_PREFERENCES_GET_PRIVATE (dialog);
-
- GtkTreeIter iter;
- GtkWidget *view = glade_xml_get_widget (priv->gxml, widget);
- GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
- GtkTreeSelection *selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-
- if (!gtk_tree_selection_get_selected (selection, &model, &iter))
- return;
-
- gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
-}
-
-static GSList *
-treeview_get_values (GtkTreeView *treeview)
-{
- GtkTreeIter iter;
- GSList *list = NULL;
- GtkTreeModel *model =
- gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
-
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter))
- do {
- gchar *value = NULL;
- gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 0,
- &value, -1);
-
- if (value) {
- list = g_slist_prepend (list,
- g_strdup (value));
- }
- } while (gtk_tree_model_iter_next
- (GTK_TREE_MODEL (model), &iter));
-
- return list;
-}
-
-static gint
-_strcmp (gconstpointer a, gconstpointer b)
-{
- if (a == NULL && b != NULL)
- return -1;
-
- if (a == NULL && b == NULL)
- return 0;
-
- if (a != NULL && b == NULL)
- return 1;
-
- return strcmp (a, b);
-}
-
-static void
-initialize_listview (GtkWidget *treeview)
-{
- GtkListStore *store = NULL;
- GtkCellRenderer *renderer = NULL;
- GtkTreeViewColumn *column = NULL;
-
- store = gtk_list_store_new (1, G_TYPE_STRING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview),
- GTK_TREE_MODEL (store));
- g_object_unref (store); /* this will delete the store when the view is destroyed */
-
- renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("Column 0",
- renderer, "text",
- 0, NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
-}
-
-static void
-populate_list (GtkWidget *treeview, GSList *list)
-{
- GtkTreeModel *store;
- GSList *tmp;
-
- store = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
-
- for (tmp = list; tmp; tmp = tmp->next) {
- if (tmp->data) {
- GtkTreeIter iter;
- gchar *data = tmp->data;
-
- gtk_list_store_append (GTK_LIST_STORE (store), &iter);
- gtk_list_store_set (GTK_LIST_STORE (store), &iter, 0,
- data, -1);
- }
- }
-}
-
-static gboolean
-str_slist_equal (GSList *a, GSList *b)
-{
- guint len_a = g_slist_length (a);
- guint len_b = g_slist_length (b);
-
- if (len_a != len_b)
- return FALSE;
-
- GSList *lst;
- for (lst = a; lst; lst = lst->next) {
- GSList *find = g_slist_find_custom (b, (const gchar *)(lst->data), _strcmp);
- if (!find)
- return FALSE;
- }
-
- return TRUE;
-}
-
-GType
-tracker_preferences_get_type (void)
-{
- static GType type = 0;
-
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof (TrackerPreferencesClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) tracker_preferences_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (TrackerPreferences),
- 0, /* n_preallocs */
- tracker_preferences_init /* instance_init */
- };
-
- type = g_type_register_static (G_TYPE_OBJECT,
- "TrackerPreferencesType",
- &info, 0);
- }
-
- return type;
-}
diff --git a/src/tracker-preferences/tracker-preferences.desktop.in.in b/src/tracker-preferences/tracker-preferences.desktop.in.in
deleted file mode 100644
index 135a6438e..000000000
--- a/src/tracker-preferences/tracker-preferences.desktop.in.in
+++ /dev/null
@@ -1,14 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-_Name=Search and Indexing
-_Comment=Configure file indexing with Tracker
-Icon=tracker
-Exec=tracker-preferences
-Terminal=false
-Type=Application
-Categories=Settings;
-StartupNotify=true
-X-GNOME-Bugzilla-Bugzilla=GNOME
-X-GNOME-Bugzilla-Product=tracker
-X-GNOME-Bugzilla-Component=Tracker Preferences
-X-GNOME-Bugzilla-Version=@VERSION@
diff --git a/src/tracker-preferences/tracker-preferences.glade b/src/tracker-preferences/tracker-preferences.glade
deleted file mode 100644
index db02fca5e..000000000
--- a/src/tracker-preferences/tracker-preferences.glade
+++ /dev/null
@@ -1,1431 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
- <widget class="GtkDialog" id="dlgPreferences">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Tracker Preferences</property>
- <property name="default_width">431</property>
- <property name="default_height">462</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkNotebook" id="nbPreferences">
- <property name="visible">True</property>
- <property name="border_width">5</property>
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkFrame" id="fraStartup">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment2">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox20">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkHBox" id="hbox8">
- <property name="visible">True</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkLabel" id="lblInitialSleep">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Index _delay: </property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">spnInitialSleep</property>
- <accessibility>
- <atkrelation target="spnInitialSleep" type="label-for"/>
- </accessibility>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox16">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkSpinButton" id="spnInitialSleep">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 0 1000 1 300 300</property>
- <property name="climb_rate">1</property>
- <accessibility>
- <atkrelation target="lblInitialSleepSeconds" type="labelled-by"/>
- <atkrelation target="lblInitialSleep" type="labelled-by"/>
- </accessibility>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="lblInitialSleepSeconds">
- <property name="visible">True</property>
- <property name="label" translatable="yes">seconds</property>
- <accessibility>
- <atkrelation target="spnInitialSleep" type="label-for"/>
- </accessibility>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Startup&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame5">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment9">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox11">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chkEnableIndexing">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enable i_ndexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkEnableWatching">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enable _watching</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label12">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Indexing Options&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame11">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment17">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox17">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkHBox" id="hbox11">
- <property name="visible">True</property>
- <property name="spacing">12</property>
- <child>
- <widget class="GtkLabel" id="label27">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Language:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">comLanguage</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkComboBox" id="comLanguage">
- <property name="visible">True</property>
- <property name="items" translatable="yes">Danish
-Dutch
-English
-Finnish
-French
-German
-Hungarian
-Italian
-Norwegian
-Portuguese
-Russian
-Spanish
-Swedish</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label26">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Stemming&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame13">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment19">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox21">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chkDisableBatteryIndex">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Disable all Indexing when on battery</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkDisableBatteryInitialIndex">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Disable initial index sweep when on battery</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label37">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Power management&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">General</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox14">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkFrame" id="frame9">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment15">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox15">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chkIndexContents">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Index _file contents</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkGenerateThumbs">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Generate thum_bnails</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkSkipMountPoints">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Index _mounted directories</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label20">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Indexing&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="fraGeneralIndexing">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment7">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox7">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chkIndexHomeDirectory">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Index and watch my home _directory</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Additional paths to index and watch:</property>
- <property name="mnemonic_widget">lstAdditionalPathIndexes</property>
- <accessibility>
- <atkrelation target="lstAdditionalPathIndexes" type="label-for"/>
- </accessibility>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTreeView" id="lstAdditionalPathIndexes">
- <property name="visible">True</property>
- <property name="headers_visible">False</property>
- <accessibility>
- <atkrelation target="label8" type="labelled-by"/>
- </accessibility>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkVButtonBox" id="vbuttonbox1">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
- <child>
- <widget class="GtkButton" id="cmdAddIndexPath">
- <property name="visible">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="cmdRemoveIndexPath">
- <property name="visible">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Watch Directories&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame10">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment16">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox16">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label21">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Additional paths to index on startup (but not watch for updates):</property>
- <property name="mnemonic_widget">lstAdditionalPathIndexes</property>
- <accessibility>
- <atkrelation target="lstCrawledPaths" type="label-for"/>
- </accessibility>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox9">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTreeView" id="lstCrawledPaths">
- <property name="visible">True</property>
- <property name="headers_visible">False</property>
- <accessibility>
- <atkrelation target="label21" type="labelled-by"/>
- </accessibility>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkVButtonBox" id="vbuttonbox5">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
- <child>
- <widget class="GtkButton" id="cmdAddCrawledPath">
- <property name="visible">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="cmdRemoveCrawledPath">
- <property name="visible">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label22">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Crawled Directories&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label19">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Files</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- <property name="position">1</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox4">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkFrame" id="fraIgnoredPaths">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment13">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbIgnorePaths">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label10">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Path roots to be ignored during indexing:</property>
- <property name="mnemonic_widget">lstIgnorePaths</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTreeView" id="lstIgnorePaths">
- <property name="visible">True</property>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkVButtonBox" id="vbuttonbox2">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
- <child>
- <widget class="GtkButton" id="cmdAddIgnorePath">
- <property name="visible">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="cmdRemoveIgnorePath">
- <property name="visible">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Ignored Paths&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkFrame" id="fraIgnoredPatterns">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment14">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbIgnorePatterns">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label11">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">File patterns to ignore during indexing:</property>
- <property name="mnemonic_widget">lstIgnoreFilePatterns</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox3">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTreeView" id="lstIgnoreFilePatterns">
- <property name="visible">True</property>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkVButtonBox" id="vbuttonbox3">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
- <child>
- <widget class="GtkButton" id="cmdAddIgnorePattern">
- <property name="visible">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="cmdRemoveIgnorePattern">
- <property name="visible">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Ignored File Patterns&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Ignored Files</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox3">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkVBox" id="vbox8">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chkEnableEvolutionIndexing">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enable _Evolution email indexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkEnableModestIndexing">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enable _Modest email indexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkEnableKMailIndexing">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="label" translatable="yes">Enable _KMail email indexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chkEnableThunderbirdIndexing">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="label" translatable="yes">Enable _Thunderbird email indexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox12">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkLabel" id="label14">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Additional mbox style mailboxes to index:</property>
- <property name="mnemonic_widget">lstAdditionalMBoxIndexes</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox5">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTreeView" id="lstAdditionalMBoxIndexes">
- <property name="visible">True</property>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkVButtonBox" id="vbuttonbox4">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
- <child>
- <widget class="GtkButton" id="cmdAddIndexMailbox">
- <property name="visible">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="cmdRemoveIndexMailbox">
- <property name="visible">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Email</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- <property name="position">3</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox5">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">18</property>
- <child>
- <widget class="GtkFrame" id="fraThrottling">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment6">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox6">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkTable" id="table3">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">3</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
- <widget class="GtkHScale" id="scaThrottle">
- <property name="visible">True</property>
- <property name="adjustment">0 0 99 1 1 0</property>
- <property name="digits">0</property>
- <accessibility>
- <atkrelation target="lblThrottlingLevel" type="labelled-by"/>
- </accessibility>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label23">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="label" translatable="yes">Slower</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="label" translatable="yes">Faster</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="lblThrottlingLevel">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Indexing speed:</property>
- <accessibility>
- <atkrelation target="scaThrottle" type="label-for"/>
- </accessibility>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="lblThrottling">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Throttling&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame8">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment12">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox13">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkRadioButton" id="optReducedMemory">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Minimize memory usage (slower indexing)</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkRadioButton" id="optNormal">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Use additional memory for faster indexing</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">optReducedMemory</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label18">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Resource Usage&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame14">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment20">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox22">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <widget class="GtkCheckButton" id="chkFastMerges">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Perform fast index merges (may affect system performance)</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label38">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Index Merging&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkFrame" id="frame12">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkAlignment" id="alignment18">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <widget class="GtkVBox" id="vbox18">
- <property name="visible">True</property>
- <child>
- <widget class="GtkTable" id="table2">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">3</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <widget class="GtkLabel" id="label33">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">kB</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="spnMaxWords">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">10000 1000 1000000 100 500 500</property>
- <property name="climb_rate">1</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkSpinButton" id="spnMaxText">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">1024 1 1000000 1 300 300</property>
- <property name="climb_rate">1</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label31">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Maximum number of unique _words to index:</property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">spnMaxWords</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label30">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Maximum _amount of text to index:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">spnMaxText</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkLabel" id="label32">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Indexing Limits (per file)&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Performance</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- <property name="position">4</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <widget class="GtkButton" id="cmdHelp">
- <property name="visible">True</property>
- <property name="label">gtk-help</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="cmdApply">
- <property name="visible">True</property>
- <property name="label">gtk-apply</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="cmdCancel">
- <property name="visible">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="cmdOK">
- <property name="visible">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- </widget>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
-</glade-interface>
diff --git a/src/tracker-preferences/tracker-preferences.h b/src/tracker-preferences/tracker-preferences.h
deleted file mode 100644
index e47d62c9a..000000000
--- a/src/tracker-preferences/tracker-preferences.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Saleem Abdulrasool (compnerd@gentoo.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_PREFERENCES_H__
-#define __TRACKER_PREFERENCES_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_PREFERENCES (tracker_preferences_get_type())
-#define TRACKER_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TRACKER_TYPE_PREFERENCES, TrackerPreferences))
-#define TRACKER_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TRACKER_TYPE_PREFERENCES, TrackerPreferencesClass))
-#define TRACKER_IS_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), TRACKER_TYPE_PREFERENCES))
-#define TRACKER_IS_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), TRACKER_TYPE_PREFERENCES))
-#define TRACKER_PREFERENCES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TRACKER_TYPE_PREFERENCES, TrackerPreferencesClass))
-
-typedef struct _TrackerPreferences {
- GObject parent;
-} TrackerPreferences;
-
-typedef struct _TrackerPreferencesClass {
- GObjectClass parent_class;
-} TrackerPreferencesClass;
-
-GType
-tracker_preferences_get_type (void);
-
-TrackerPreferences *
-tracker_preferences_new (void);
-
-G_END_DECLS
-
-#endif
diff --git a/src/tracker-search-tool/Makefile.am b/src/tracker-search-tool/Makefile.am
deleted file mode 100644
index b51156b9d..000000000
--- a/src/tracker-search-tool/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-
-@INTLTOOL_DESKTOP_RULE@
-
-desktopdir = $(datadir)/applications
-icondir = $(datadir)/tracker/icons
-
-INCLUDES = \
- -I$(top_srcdir)/src/libtracker \
- $(GLIB2_CFLAGS) \
- $(GNOME_UTILS_CFLAGS) \
- $(GNOMEVFS_CFLAGS) \
- $(GNOMEDESKTOP_CFLAGS) \
- $(DBUS_CFLAGS) \
- -DG_DISABLE_DEPRECATED \
- -DTRACKER_LOCALEDIR=\""$(localedir)"\" \
- -DTRACKER_DATADIR=\""$(datadir)"\" \
- -DGREP_COMMAND=\""$(GREP_COMMAND)"\" \
- $(LIBTRACKERGTK_CFLAGS)
-
-bin_PROGRAMS = tracker-search-tool
-
-tracker_search_tool_SOURCES = \
- tracker-search-tool-support.c \
- tracker-search-tool-support.h \
- tracker-search-tool-callbacks.c \
- tracker-search-tool-callbacks.h \
- tracker-search-tool.c \
- tracker-search-tool.h \
- sexy-icon-entry.c \
- sexy-icon-entry.h
-
-tracker_search_tool_LDADD = \
- $(GLIB2_LIBS) \
- $(GNOME_UTILS_LIBS) \
- $(GNOMEVFS_LIBS) \
- $(GNOMEDESKTOP_LIBS) \
- $(DBUS_LIBS) \
- $(top_builddir)/src/libtracker-gtk/libtracker-gtk.la \
- $(top_builddir)/src/libtracker/libtrackerclient.la
-
-
-desktop_in_files = tracker-search-tool.desktop.in
-desktop_files = $(desktop_in_files:.desktop.in=.desktop)
-
-desktop_DATA = $(desktop_files)
-icon_DATA = thumbnail_frame.png
-
-EXTRA_DIST = $(icon_DATA)
-
-CLEANFILES = $(desktop_DATA)
-
diff --git a/src/tracker-search-tool/sexy-icon-entry.c b/src/tracker-search-tool/sexy-icon-entry.c
deleted file mode 100644
index a25887750..000000000
--- a/src/tracker-search-tool/sexy-icon-entry.c
+++ /dev/null
@@ -1,969 +0,0 @@
-/*
- * @file libsexy/sexy-icon-entry.c Entry widget
- *
- * @Copyright (C) 2004-2006 Christian Hammond.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#include "sexy-icon-entry.h"
-#include <string.h>
-#include <gtk/gtk.h>
-
-#define ICON_MARGIN 2
-#define MAX_ICONS 2
-
-#define IS_VALID_ICON_ENTRY_POSITION(pos) \
- ((pos) == SEXY_ICON_ENTRY_PRIMARY || \
- (pos) == SEXY_ICON_ENTRY_SECONDARY)
-
-typedef struct
-{
- GtkImage *icon;
- gboolean highlight;
- gboolean hovered;
- GdkWindow *window;
-
-} SexyIconInfo;
-
-struct _SexyIconEntryPriv
-{
- SexyIconInfo icons[MAX_ICONS];
-
- gulong icon_released_id;
-};
-
-enum
-{
- ICON_PRESSED,
- ICON_RELEASED,
- LAST_SIGNAL
-};
-
-static void sexy_icon_entry_class_init(SexyIconEntryClass *klass);
-static void sexy_icon_entry_editable_init(GtkEditableClass *iface);
-static void sexy_icon_entry_init(SexyIconEntry *entry);
-static void sexy_icon_entry_finalize(GObject *obj);
-static void sexy_icon_entry_destroy(GtkObject *obj);
-static void sexy_icon_entry_map(GtkWidget *widget);
-static void sexy_icon_entry_unmap(GtkWidget *widget);
-static void sexy_icon_entry_realize(GtkWidget *widget);
-static void sexy_icon_entry_unrealize(GtkWidget *widget);
-static void sexy_icon_entry_size_request(GtkWidget *widget,
- GtkRequisition *requisition);
-static void sexy_icon_entry_size_allocate(GtkWidget *widget,
- GtkAllocation *allocation);
-static gint sexy_icon_entry_expose(GtkWidget *widget, GdkEventExpose *event);
-static gint sexy_icon_entry_enter_notify(GtkWidget *widget,
- GdkEventCrossing *event);
-static gint sexy_icon_entry_leave_notify(GtkWidget *widget,
- GdkEventCrossing *event);
-static gint sexy_icon_entry_button_press(GtkWidget *widget,
- GdkEventButton *event);
-static gint sexy_icon_entry_button_release(GtkWidget *widget,
- GdkEventButton *event);
-
-static GtkEntryClass *parent_class = NULL;
-static guint signals[LAST_SIGNAL] = {0};
-
-G_DEFINE_TYPE_EXTENDED(SexyIconEntry, sexy_icon_entry, GTK_TYPE_ENTRY,
- 0,
- G_IMPLEMENT_INTERFACE(GTK_TYPE_EDITABLE,
- sexy_icon_entry_editable_init));
-
-static void
-sexy_icon_entry_class_init(SexyIconEntryClass *klass)
-{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkEntryClass *entry_class;
-
- parent_class = g_type_class_peek_parent(klass);
-
- gobject_class = G_OBJECT_CLASS(klass);
- object_class = GTK_OBJECT_CLASS(klass);
- widget_class = GTK_WIDGET_CLASS(klass);
- entry_class = GTK_ENTRY_CLASS(klass);
-
- gobject_class->finalize = sexy_icon_entry_finalize;
-
- object_class->destroy = sexy_icon_entry_destroy;
-
- widget_class->map = sexy_icon_entry_map;
- widget_class->unmap = sexy_icon_entry_unmap;
- widget_class->realize = sexy_icon_entry_realize;
- widget_class->unrealize = sexy_icon_entry_unrealize;
- widget_class->size_request = sexy_icon_entry_size_request;
- widget_class->size_allocate = sexy_icon_entry_size_allocate;
- widget_class->expose_event = sexy_icon_entry_expose;
- widget_class->enter_notify_event = sexy_icon_entry_enter_notify;
- widget_class->leave_notify_event = sexy_icon_entry_leave_notify;
- widget_class->button_press_event = sexy_icon_entry_button_press;
- widget_class->button_release_event = sexy_icon_entry_button_release;
-
- /**
- * SexyIconEntry::icon-pressed:
- * @entry: The entry on which the signal is emitted.
- * @icon_pos: The position of the clicked icon.
- * @button: The mouse button clicked.
- *
- * The ::icon-pressed signal is emitted when an icon is clicked.
- */
- signals[ICON_PRESSED] =
- g_signal_new("icon_pressed",
- G_TYPE_FROM_CLASS(gobject_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET(SexyIconEntryClass, icon_pressed),
- NULL, NULL,
- gtk_marshal_VOID__INT_INT,
- G_TYPE_NONE, 2,
- G_TYPE_INT,
- G_TYPE_INT);
-
- /**
- * SexyIconEntry::icon-released:
- * @entry: The entry on which the signal is emitted.
- * @icon_pos: The position of the clicked icon.
- * @button: The mouse button clicked.
- *
- * The ::icon-released signal is emitted on the button release from a
- * mouse click.
- */
- signals[ICON_RELEASED] =
- g_signal_new("icon_released",
- G_TYPE_FROM_CLASS(gobject_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET(SexyIconEntryClass, icon_released),
- NULL, NULL,
- gtk_marshal_VOID__INT_INT,
- G_TYPE_NONE, 2,
- G_TYPE_INT,
- G_TYPE_INT);
-}
-
-static void
-sexy_icon_entry_editable_init(GtkEditableClass *iface)
-{
-};
-
-static void
-sexy_icon_entry_init(SexyIconEntry *entry)
-{
- entry->priv = g_new0(SexyIconEntryPriv, 1);
-}
-
-static void
-sexy_icon_entry_finalize(GObject *obj)
-{
- SexyIconEntry *entry;
-
- g_return_if_fail(obj != NULL);
- g_return_if_fail(SEXY_IS_ICON_ENTRY(obj));
-
- entry = SEXY_ICON_ENTRY(obj);
-
- g_free(entry->priv);
-
- if (G_OBJECT_CLASS(parent_class)->finalize)
- G_OBJECT_CLASS(parent_class)->finalize(obj);
-}
-
-static void
-sexy_icon_entry_destroy(GtkObject *obj)
-{
- SexyIconEntry *entry;
-
- entry = SEXY_ICON_ENTRY(obj);
-
- sexy_icon_entry_set_icon(entry, SEXY_ICON_ENTRY_PRIMARY, NULL);
- sexy_icon_entry_set_icon(entry, SEXY_ICON_ENTRY_SECONDARY, NULL);
-
- if (GTK_OBJECT_CLASS(parent_class)->destroy)
- GTK_OBJECT_CLASS(parent_class)->destroy(obj);
-}
-
-static void
-sexy_icon_entry_map(GtkWidget *widget)
-{
- if (GTK_WIDGET_REALIZED(widget) && !GTK_WIDGET_MAPPED(widget))
- {
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- GTK_WIDGET_CLASS(parent_class)->map(widget);
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- if (entry->priv->icons[i].icon != NULL)
- gdk_window_show(entry->priv->icons[i].window);
- }
- }
-}
-
-static void
-sexy_icon_entry_unmap(GtkWidget *widget)
-{
- if (GTK_WIDGET_MAPPED(widget))
- {
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- if (entry->priv->icons[i].icon != NULL)
- gdk_window_hide(entry->priv->icons[i].window);
- }
-
- GTK_WIDGET_CLASS(parent_class)->unmap(widget);
- }
-}
-
-static gint
-get_icon_width(SexyIconEntry *entry, SexyIconEntryPosition icon_pos)
-{
- GtkRequisition requisition;
- gint menu_icon_width;
- gint width;
- SexyIconInfo *icon_info = &entry->priv->icons[icon_pos];
-
- if (icon_info->icon == NULL)
- return 0;
-
- gtk_widget_size_request(GTK_WIDGET(icon_info->icon), &requisition);
- gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &menu_icon_width, NULL);
-
- width = MAX(requisition.width, menu_icon_width);
-
- return width;
-}
-
-static void
-get_borders(SexyIconEntry *entry, gint *xborder, gint *yborder)
-{
- GtkWidget *widget = GTK_WIDGET(entry);
- gint focus_width;
- gboolean interior_focus;
-
- gtk_widget_style_get(widget,
- "interior-focus", &interior_focus,
- "focus-line-width", &focus_width,
- NULL);
-
- if (gtk_entry_get_has_frame(GTK_ENTRY(entry)))
- {
- *xborder = widget->style->xthickness;
- *yborder = widget->style->ythickness;
- }
- else
- {
- *xborder = 0;
- *yborder = 0;
- }
-
- if (!interior_focus)
- {
- *xborder += focus_width;
- *yborder += focus_width;
- }
-}
-
-static void
-get_text_area_size(SexyIconEntry *entry, GtkAllocation *alloc)
-{
- GtkWidget *widget = GTK_WIDGET(entry);
- GtkRequisition requisition;
- gint xborder, yborder;
-
- gtk_widget_get_child_requisition(widget, &requisition);
- get_borders(entry, &xborder, &yborder);
-
- alloc->x = xborder;
- alloc->y = yborder;
- alloc->width = widget->allocation.width - xborder * 2;
- alloc->height = requisition.height - yborder * 2;
-}
-
-static void
-get_icon_allocation(SexyIconEntry *icon_entry,
- gboolean left,
- GtkAllocation *widget_alloc,
- GtkAllocation *text_area_alloc,
- GtkAllocation *allocation,
- SexyIconEntryPosition *icon_pos)
-{
- gboolean rtl;
-
- rtl = (gtk_widget_get_direction(GTK_WIDGET(icon_entry)) ==
- GTK_TEXT_DIR_RTL);
-
- if (left)
- *icon_pos = (rtl ? SEXY_ICON_ENTRY_SECONDARY : SEXY_ICON_ENTRY_PRIMARY);
- else
- *icon_pos = (rtl ? SEXY_ICON_ENTRY_PRIMARY : SEXY_ICON_ENTRY_SECONDARY);
-
- allocation->y = text_area_alloc->y;
- allocation->width = get_icon_width(icon_entry, *icon_pos);
- allocation->height = text_area_alloc->height;
-
- if (left)
- allocation->x = text_area_alloc->x + ICON_MARGIN;
- else
- {
- allocation->x = text_area_alloc->x + text_area_alloc->width -
- allocation->width - ICON_MARGIN;
- }
-}
-
-static void
-sexy_icon_entry_realize(GtkWidget *widget)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- GdkWindowAttr attributes;
- gint attributes_mask;
- int i;
-
- GTK_WIDGET_CLASS(parent_class)->realize(widget);
-
- attributes.x = 0;
- attributes.y = 0;
- attributes.width = 1;
- attributes.height = 1;
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual(widget);
- attributes.colormap = gtk_widget_get_colormap(widget);
- attributes.event_mask = gtk_widget_get_events(widget);
- attributes.event_mask |=
- (GDK_EXPOSURE_MASK
- | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
-
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- SexyIconInfo *icon_info;
-
- icon_info = &entry->priv->icons[i];
- icon_info->window = gdk_window_new(widget->window, &attributes,
- attributes_mask);
- gdk_window_set_user_data(icon_info->window, widget);
-
- gdk_window_set_background(icon_info->window,
- &widget->style->base[GTK_WIDGET_STATE(widget)]);
- }
-
- gtk_widget_queue_resize(widget);
-}
-
-static void
-sexy_icon_entry_unrealize(GtkWidget *widget)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- GTK_WIDGET_CLASS(parent_class)->unrealize(widget);
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- SexyIconInfo *icon_info = &entry->priv->icons[i];
-
- gdk_window_destroy(icon_info->window);
- icon_info->window = NULL;
- }
-}
-
-static void
-sexy_icon_entry_size_request(GtkWidget *widget, GtkRequisition *requisition)
-{
- GtkEntry *gtkentry;
- SexyIconEntry *entry;
- gint icon_widths = 0;
- int i;
-
- gtkentry = GTK_ENTRY(widget);
- entry = SEXY_ICON_ENTRY(widget);
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- int icon_width = get_icon_width(entry, i);
-
- if (icon_width > 0)
- icon_widths += icon_width + ICON_MARGIN;
- }
-
- GTK_WIDGET_CLASS(parent_class)->size_request(widget, requisition);
-
- if (icon_widths > requisition->width)
- requisition->width += icon_widths;
-}
-
-static void
-place_windows(SexyIconEntry *icon_entry, GtkAllocation *widget_alloc)
-{
- SexyIconEntryPosition left_icon_pos;
- SexyIconEntryPosition right_icon_pos;
- GtkAllocation left_icon_alloc;
- GtkAllocation right_icon_alloc;
- GtkAllocation text_area_alloc;
-
- get_text_area_size(icon_entry, &text_area_alloc);
- get_icon_allocation(icon_entry, TRUE, widget_alloc, &text_area_alloc,
- &left_icon_alloc, &left_icon_pos);
- get_icon_allocation(icon_entry, FALSE, widget_alloc, &text_area_alloc,
- &right_icon_alloc, &right_icon_pos);
-
- if (left_icon_alloc.width > 0)
- {
- text_area_alloc.x = left_icon_alloc.x + left_icon_alloc.width +
- ICON_MARGIN;
- }
-
- if (right_icon_alloc.width > 0)
- text_area_alloc.width -= right_icon_alloc.width + ICON_MARGIN;
-
- text_area_alloc.width -= text_area_alloc.x;
-
- gdk_window_move_resize(icon_entry->priv->icons[left_icon_pos].window,
- left_icon_alloc.x, left_icon_alloc.y,
- left_icon_alloc.width, left_icon_alloc.height);
-
- gdk_window_move_resize(icon_entry->priv->icons[right_icon_pos].window,
- right_icon_alloc.x, right_icon_alloc.y,
- right_icon_alloc.width, right_icon_alloc.height);
-
- gdk_window_move_resize(GTK_ENTRY(icon_entry)->text_area,
- text_area_alloc.x, text_area_alloc.y,
- text_area_alloc.width, text_area_alloc.height);
-}
-
-static void
-sexy_icon_entry_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
-{
- g_return_if_fail(SEXY_IS_ICON_ENTRY(widget));
- g_return_if_fail(allocation != NULL);
-
- widget->allocation = *allocation;
-
- GTK_WIDGET_CLASS(parent_class)->size_allocate(widget, allocation);
-
- if (GTK_WIDGET_REALIZED(widget))
- place_windows(SEXY_ICON_ENTRY(widget), allocation);
-}
-
-static GdkPixbuf *
-get_pixbuf_from_icon(SexyIconEntry *entry, SexyIconEntryPosition icon_pos)
-{
- GdkPixbuf *pixbuf = NULL;
- gchar *stock_id;
- SexyIconInfo *icon_info = &entry->priv->icons[icon_pos];
- GtkIconSize size;
-
- switch (gtk_image_get_storage_type(GTK_IMAGE(icon_info->icon)))
- {
- case GTK_IMAGE_PIXBUF:
- pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(icon_info->icon));
- g_object_ref(pixbuf);
- break;
-
- case GTK_IMAGE_STOCK:
- gtk_image_get_stock(GTK_IMAGE(icon_info->icon), &stock_id, &size);
- pixbuf = gtk_widget_render_icon(GTK_WIDGET(entry),
- stock_id, size, NULL);
- break;
-
- default:
- return NULL;
- }
-
- return pixbuf;
-}
-
-/* Kudos to the gnome-panel guys. */
-static void
-colorshift_pixbuf(GdkPixbuf *dest, GdkPixbuf *src, int shift)
-{
- gint i, j;
- gint width, height, has_alpha, src_rowstride, dest_rowstride;
- guchar *target_pixels;
- guchar *original_pixels;
- guchar *pix_src;
- guchar *pix_dest;
- int val;
- guchar r, g, b;
-
- has_alpha = gdk_pixbuf_get_has_alpha(src);
- width = gdk_pixbuf_get_width(src);
- height = gdk_pixbuf_get_height(src);
- src_rowstride = gdk_pixbuf_get_rowstride(src);
- dest_rowstride = gdk_pixbuf_get_rowstride(dest);
- original_pixels = gdk_pixbuf_get_pixels(src);
- target_pixels = gdk_pixbuf_get_pixels(dest);
-
- for (i = 0; i < height; i++)
- {
- pix_dest = target_pixels + i * dest_rowstride;
- pix_src = original_pixels + i * src_rowstride;
-
- for (j = 0; j < width; j++)
- {
- r = *(pix_src++);
- g = *(pix_src++);
- b = *(pix_src++);
-
- val = r + shift;
- *(pix_dest++) = CLAMP(val, 0, 255);
-
- val = g + shift;
- *(pix_dest++) = CLAMP(val, 0, 255);
-
- val = b + shift;
- *(pix_dest++) = CLAMP(val, 0, 255);
-
- if (has_alpha)
- *(pix_dest++) = *(pix_src++);
- }
- }
-}
-
-static void
-draw_icon(GtkWidget *widget, SexyIconEntryPosition icon_pos)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- SexyIconInfo *icon_info = &entry->priv->icons[icon_pos];
- GdkPixbuf *pixbuf;
- gint x, y, width, height;
-
- if (icon_info->icon == NULL || !GTK_WIDGET_REALIZED(widget))
- return;
-
- if ((pixbuf = get_pixbuf_from_icon(entry, icon_pos)) == NULL)
- return;
-
- gdk_drawable_get_size(icon_info->window, &width, &height);
-
- if (width == 1 || height == 1)
- {
- /*
- * size_allocate hasn't been called yet. These are the default values.
- */
- return;
- }
-
- if (gdk_pixbuf_get_height(pixbuf) > height)
- {
- GdkPixbuf *temp_pixbuf;
- int scale;
-
- scale = height - (2 * ICON_MARGIN);
-
- printf("scale = %d (height = %d)\n", scale, height);
- temp_pixbuf = gdk_pixbuf_scale_simple(pixbuf, scale, scale,
- GDK_INTERP_BILINEAR);
-
- g_object_unref(pixbuf);
-
- pixbuf = temp_pixbuf;
- }
-
- x = (width - gdk_pixbuf_get_width(pixbuf)) / 2;
- y = (height - gdk_pixbuf_get_height(pixbuf)) / 2;
-
- if (icon_info->hovered)
- {
- GdkPixbuf *temp_pixbuf;
-
- temp_pixbuf = gdk_pixbuf_copy(pixbuf);
-
- colorshift_pixbuf(temp_pixbuf, pixbuf, 30);
-
- g_object_unref(pixbuf);
-
- pixbuf = temp_pixbuf;
- }
-
- gdk_draw_pixbuf(icon_info->window, widget->style->black_gc, pixbuf,
- 0, 0, x, y, -1, -1,
- GDK_RGB_DITHER_NORMAL, 0, 0);
-
- g_object_unref(pixbuf);
-}
-
-static gint
-sexy_icon_entry_expose(GtkWidget *widget, GdkEventExpose *event)
-{
- SexyIconEntry *entry;
-
- g_return_val_if_fail(SEXY_IS_ICON_ENTRY(widget), FALSE);
- g_return_val_if_fail(event != NULL, FALSE);
-
- entry = SEXY_ICON_ENTRY(widget);
-
- if (GTK_WIDGET_DRAWABLE(widget))
- {
- gboolean found = FALSE;
- int i;
-
- for (i = 0; i < MAX_ICONS && !found; i++)
- {
- SexyIconInfo *icon_info = &entry->priv->icons[i];
-
- if (event->window == icon_info->window)
- {
- gint width;
- GtkAllocation text_area_alloc;
-
- get_text_area_size(entry, &text_area_alloc);
- gdk_drawable_get_size(icon_info->window, &width, NULL);
-
- gtk_paint_flat_box(widget->style, icon_info->window,
- GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE,
- NULL, widget, "entry_bg",
- 0, 0, width, text_area_alloc.height);
-
- draw_icon(widget, i);
-
- found = TRUE;
- }
- }
-
- if (!found)
- GTK_WIDGET_CLASS(parent_class)->expose_event(widget, event);
- }
-
- return FALSE;
-}
-
-static void
-update_icon(GObject *obj, GParamSpec *param, SexyIconEntry *entry)
-{
- if (param != NULL)
- {
- const char *name = g_param_spec_get_name(param);
-
- if (strcmp(name, "pixbuf") && strcmp(name, "stock") &&
- strcmp(name, "image") && strcmp(name, "pixmap") &&
- strcmp(name, "icon_set") && strcmp(name, "pixbuf_animation"))
- {
- return;
- }
- }
-
- gtk_widget_queue_resize(GTK_WIDGET(entry));
-}
-
-static gint
-sexy_icon_entry_enter_notify(GtkWidget *widget, GdkEventCrossing *event)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- if (event->window == entry->priv->icons[i].window)
- {
- if (sexy_icon_entry_get_icon_highlight(entry, i))
- {
- entry->priv->icons[i].hovered = TRUE;
-
- update_icon(NULL, NULL, entry);
-
- break;
- }
- }
- }
-
- return FALSE;
-}
-
-static gint
-sexy_icon_entry_leave_notify(GtkWidget *widget, GdkEventCrossing *event)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- if (event->window == entry->priv->icons[i].window)
- {
- if (sexy_icon_entry_get_icon_highlight(entry, i))
- {
- entry->priv->icons[i].hovered = FALSE;
-
- update_icon(NULL, NULL, entry);
-
- break;
- }
- }
- }
-
- return FALSE;
-}
-
-static gint
-sexy_icon_entry_button_press(GtkWidget *widget, GdkEventButton *event)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- if (event->window == entry->priv->icons[i].window)
- {
- if (event->button == 1 &&
- sexy_icon_entry_get_icon_highlight(entry, i))
- {
- entry->priv->icons[i].hovered = FALSE;
-
- update_icon(NULL, NULL, entry);
- }
-
- g_signal_emit(entry, signals[ICON_PRESSED], 0, i, event->button);
-
- return TRUE;
- }
- }
-
- if (GTK_WIDGET_CLASS(parent_class)->button_press_event)
- return GTK_WIDGET_CLASS(parent_class)->button_press_event(widget,
- event);
-
- return FALSE;
-}
-
-static gint
-sexy_icon_entry_button_release(GtkWidget *widget, GdkEventButton *event)
-{
- SexyIconEntry *entry = SEXY_ICON_ENTRY(widget);
- int i;
-
- for (i = 0; i < MAX_ICONS; i++)
- {
- GdkWindow *icon_window = entry->priv->icons[i].window;
-
- if (event->window == icon_window)
- {
- int width, height;
- gdk_drawable_get_size(icon_window, &width, &height);
-
- if (event->button == 1 &&
- sexy_icon_entry_get_icon_highlight(entry, i) &&
- event->x >= 0 && event->y >= 0 &&
- event->x <= width && event->y <= height)
- {
- entry->priv->icons[i].hovered = TRUE;
-
- update_icon(NULL, NULL, entry);
- }
-
- g_signal_emit(entry, signals[ICON_RELEASED], 0, i, event->button);
-
- return TRUE;
- }
- }
-
- if (GTK_WIDGET_CLASS(parent_class)->button_release_event)
- return GTK_WIDGET_CLASS(parent_class)->button_release_event(widget,
- event);
-
- return FALSE;
-}
-
-/**
- * sexy_icon_entry_new
- *
- * Creates a new SexyIconEntry widget.
- *
- * Returns a new #SexyIconEntry.
- */
-GtkWidget *
-sexy_icon_entry_new(void)
-{
- return GTK_WIDGET(g_object_new(SEXY_TYPE_ICON_ENTRY, NULL));
-}
-
-/**
- * sexy_icon_entry_set_icon
- * @entry: A #SexyIconEntry.
- * @position: Icon position.
- * @icon: A #GtkImage to set as the icon.
- *
- * Sets the icon shown in the entry
- */
-void
-sexy_icon_entry_set_icon(SexyIconEntry *entry, SexyIconEntryPosition icon_pos,
- GtkImage *icon)
-{
- SexyIconInfo *icon_info;
-
- g_return_if_fail(entry != NULL);
- g_return_if_fail(SEXY_IS_ICON_ENTRY(entry));
- g_return_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos));
- g_return_if_fail(icon == NULL || GTK_IS_IMAGE(icon));
-
- icon_info = &entry->priv->icons[icon_pos];
-
- if (icon == icon_info->icon)
- return;
-
- if (icon_pos == SEXY_ICON_ENTRY_SECONDARY &&
- entry->priv->icon_released_id != 0)
- {
- g_signal_handler_disconnect(entry, entry->priv->icon_released_id);
- entry->priv->icon_released_id = 0;
- }
-
- if (icon == NULL)
- {
- if (icon_info->icon != NULL)
- {
- gtk_widget_destroy(GTK_WIDGET(icon_info->icon));
- icon_info->icon = NULL;
-
- /*
- * Explicitly check, as the pointer may become invalidated
- * during destruction.
- */
- if (icon_info->window != NULL && GDK_IS_WINDOW(icon_info->window))
- gdk_window_hide(icon_info->window);
- }
- }
- else
- {
- if (icon_info->window != NULL && icon_info->icon == NULL)
- gdk_window_show(icon_info->window);
-
- g_signal_connect(G_OBJECT(icon), "notify",
- G_CALLBACK(update_icon), entry);
-
- icon_info->icon = icon;
- g_object_ref(icon);
- }
-
- update_icon(NULL, NULL, entry);
-}
-
-/**
- * sexy_icon_entry_set_icon_highlight
- * @entry: A #SexyIconEntry;
- * @position: Icon position.
- * @highlight: TRUE if the icon should highlight on mouse-over
- *
- * Determines whether the icon will highlight on mouse-over.
- */
-void
-sexy_icon_entry_set_icon_highlight(SexyIconEntry *entry,
- SexyIconEntryPosition icon_pos,
- gboolean highlight)
-{
- SexyIconInfo *icon_info;
-
- g_return_if_fail(entry != NULL);
- g_return_if_fail(SEXY_IS_ICON_ENTRY(entry));
- g_return_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos));
-
- icon_info = &entry->priv->icons[icon_pos];
-
- if (icon_info->highlight == highlight)
- return;
-
- icon_info->highlight = highlight;
-}
-
-/**
- * sexy_icon_entry_get_icon
- * @entry: A #SexyIconEntry.
- * @position: Icon position.
- *
- * Retrieves the image used for the icon
- *
- * Returns: A #GtkImage.
- */
-GtkImage *
-sexy_icon_entry_get_icon(const SexyIconEntry *entry,
- SexyIconEntryPosition icon_pos)
-{
- g_return_val_if_fail(entry != NULL, NULL);
- g_return_val_if_fail(SEXY_IS_ICON_ENTRY(entry), NULL);
- g_return_val_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos), NULL);
-
- return entry->priv->icons[icon_pos].icon;
-}
-
-/**
- * sexy_icon_entry_get_icon_highlight
- * @entry: A #SexyIconEntry.
- * @position: Icon position.
- *
- * Retrieves whether entry will highlight the icon on mouseover.
- *
- * Returns: TRUE if icon highlights.
- */
-gboolean
-sexy_icon_entry_get_icon_highlight(const SexyIconEntry *entry,
- SexyIconEntryPosition icon_pos)
-{
- g_return_val_if_fail(entry != NULL, FALSE);
- g_return_val_if_fail(SEXY_IS_ICON_ENTRY(entry), FALSE);
- g_return_val_if_fail(IS_VALID_ICON_ENTRY_POSITION(icon_pos), FALSE);
-
- return entry->priv->icons[icon_pos].highlight;
-}
-
-static void
-clear_button_clicked_cb(SexyIconEntry *icon_entry,
- SexyIconEntryPosition icon_pos,
- int button)
-{
- if (icon_pos != SEXY_ICON_ENTRY_SECONDARY || button != 1)
- return;
-
- gtk_entry_set_text(GTK_ENTRY(icon_entry), "");
-}
-
-/**
- * sexy_icon_entry_add_clear_button
- * @icon_entry: A #SexyIconEntry.
- *
- * A convenience function to add a clear button to the end of the entry.
- * This is useful for search boxes.
- */
-void
-sexy_icon_entry_add_clear_button(SexyIconEntry *icon_entry)
-{
- GtkWidget *icon;
-
- g_return_if_fail(icon_entry != NULL);
- g_return_if_fail(SEXY_IS_ICON_ENTRY(icon_entry));
-
- icon = gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU);
- gtk_widget_show(icon);
- sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(icon_entry),
- SEXY_ICON_ENTRY_SECONDARY,
- GTK_IMAGE(icon));
- sexy_icon_entry_set_icon_highlight(SEXY_ICON_ENTRY(icon_entry),
- SEXY_ICON_ENTRY_SECONDARY, TRUE);
-
- if (icon_entry->priv->icon_released_id != 0)
- {
- g_signal_handler_disconnect(icon_entry,
- icon_entry->priv->icon_released_id);
- }
-
- icon_entry->priv->icon_released_id =
- g_signal_connect(G_OBJECT(icon_entry), "icon_released",
- G_CALLBACK(clear_button_clicked_cb), NULL);
-}
diff --git a/src/tracker-search-tool/sexy-icon-entry.h b/src/tracker-search-tool/sexy-icon-entry.h
deleted file mode 100644
index 7b086991e..000000000
--- a/src/tracker-search-tool/sexy-icon-entry.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * @file libsexy/sexy-icon-entry.h Entry widget
- *
- * @Copyright (C) 2004-2006 Christian Hammond.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef _SEXY_ICON_ENTRY_H_
-#define _SEXY_ICON_ENTRY_H_
-
-typedef struct _SexyIconEntry SexyIconEntry;
-typedef struct _SexyIconEntryClass SexyIconEntryClass;
-typedef struct _SexyIconEntryPriv SexyIconEntryPriv;
-
-#include <gtk/gtkentry.h>
-#include <gtk/gtkimage.h>
-
-#define SEXY_TYPE_ICON_ENTRY (sexy_icon_entry_get_type())
-#define SEXY_ICON_ENTRY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), SEXY_TYPE_ICON_ENTRY, SexyIconEntry))
-#define SEXY_ICON_ENTRY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), SEXY_TYPE_ICON_ENTRY, SexyIconEntryClass))
-#define SEXY_IS_ICON_ENTRY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), SEXY_TYPE_ICON_ENTRY))
-#define SEXY_IS_ICON_ENTRY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), SEXY_TYPE_ICON_ENTRY))
-#define SEXY_ICON_ENTRY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), SEXY_TYPE_ICON_ENTRY, SexyIconEntryClass))
-
-typedef enum
-{
- SEXY_ICON_ENTRY_PRIMARY,
- SEXY_ICON_ENTRY_SECONDARY
-
-} SexyIconEntryPosition;
-
-struct _SexyIconEntry
-{
- GtkEntry parent_object;
-
- SexyIconEntryPriv *priv;
-
- void (*gtk_reserved1)(void);
- void (*gtk_reserved2)(void);
- void (*gtk_reserved3)(void);
- void (*gtk_reserved4)(void);
-};
-
-struct _SexyIconEntryClass
-{
- GtkEntryClass parent_class;
-
- /* Signals */
- void (*icon_pressed)(SexyIconEntry *entry, SexyIconEntryPosition icon_pos,
- int button);
- void (*icon_released)(SexyIconEntry *entry, SexyIconEntryPosition icon_pos,
- int button);
-
- void (*gtk_reserved1)(void);
- void (*gtk_reserved2)(void);
- void (*gtk_reserved3)(void);
- void (*gtk_reserved4)(void);
-};
-
-G_BEGIN_DECLS
-
-GType sexy_icon_entry_get_type(void);
-
-GtkWidget *sexy_icon_entry_new(void);
-
-void sexy_icon_entry_set_icon(SexyIconEntry *entry,
- SexyIconEntryPosition position,
- GtkImage *icon);
-
-void sexy_icon_entry_set_icon_highlight(SexyIconEntry *entry,
- SexyIconEntryPosition position,
- gboolean highlight);
-
-GtkImage *sexy_icon_entry_get_icon(const SexyIconEntry *entry,
- SexyIconEntryPosition position);
-
-gboolean sexy_icon_entry_get_icon_highlight(const SexyIconEntry *entry,
- SexyIconEntryPosition position);
-void sexy_icon_entry_add_clear_button(SexyIconEntry *icon_entry);
-
-G_END_DECLS
-
-#endif /* _SEXY_ICON_ENTRY_H_ */
diff --git a/src/tracker-search-tool/thumbnail_frame.png b/src/tracker-search-tool/thumbnail_frame.png
deleted file mode 100644
index c2605d584..000000000
--- a/src/tracker-search-tool/thumbnail_frame.png
+++ /dev/null
Binary files differ
diff --git a/src/tracker-search-tool/tracker-search-tool-callbacks.c b/src/tracker-search-tool/tracker-search-tool-callbacks.c
deleted file mode 100644
index 7cbe35fc3..000000000
--- a/src/tracker-search-tool/tracker-search-tool-callbacks.c
+++ /dev/null
@@ -1,1844 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * GNOME Search Tool
- *
- * File: tracker_search-callbacks.c
- *
- * (C) 2002 the Free Software Foundation
- *
- * Authors: Dennis Cranston <dennis_cranston@yahoo.com>
- * George Lebl
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <string.h>
-#include <signal.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <glib/gi18n.h>
-#include <glib/gstdio.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libgnomevfs/gnome-vfs-find-directory.h>
-#include <libgnome/gnome-desktop-item.h>
-
-#include <gnome.h>
-
-#include "tracker-search-tool.h"
-#include "tracker-search-tool-callbacks.h"
-#include "tracker-search-tool-support.h"
-#include "../libtracker-gtk/tracker-metadata-tile.h"
-
-#define SILENT_WINDOW_OPEN_LIMIT 5
-#define METADATA_IMAGE_WIDTH 128
-#define METADATA_IMAGE_HEIGHT 128
-
-#ifdef HAVE_GETPGID
-extern pid_t getpgid (pid_t);
-#endif
-
-gboolean row_selected_by_button_press_event;
-
-static void
-store_window_state_and_geometry (GSearchWindow *gsearch)
-{
- tracker_search_gconf_set_int ("/apps/tracker-search-tool/default_window_width",
- gsearch->window_width);
- tracker_search_gconf_set_int ("/apps/tracker-search-tool/default_window_height",
- gsearch->window_height);
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/default_window_maximized",
- gsearch->is_window_maximized);
- tracker_set_stored_separator_position (gtk_paned_get_position (GTK_PANED (gsearch->pane)));
-}
-
-static void
-quit_application (GSearchWindow * gsearch)
-{
- //GSearchCommandDetails * command_details = gsearch->command_details;
- store_window_state_and_geometry (gsearch);
- gtk_main_quit ();
-}
-
-void
-die_cb (GnomeClient * client,
- gpointer data)
-{
- quit_application ((GSearchWindow *) data);
-}
-
-void
-quit_cb (GtkWidget * widget,
- GdkEvent * event,
- gpointer data)
-{
- quit_application ((GSearchWindow *) data);
-}
-
-void
-click_close_cb (GtkWidget * widget,
- gpointer data)
-{
- quit_application ((GSearchWindow *) data);
-}
-
-void
-click_stop_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- if (gsearch->command_details->command_status == RUNNING) {
- gtk_widget_set_sensitive (gsearch->stop_button, FALSE);
- }
-}
-
-void
-click_help_cb (GtkWidget * widget,
- gpointer data)
-{
- GtkWidget * window = data;
- GError * error = NULL;
-
- gnome_help_display_desktop_on_screen (NULL, "tracker-search-tool", "tracker-search-tool",
- NULL, gtk_widget_get_screen (widget), &error);
- if (error) {
- GtkWidget * dialog;
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Could not open help document."));
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- error->message);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
-
- gtk_widget_show (dialog);
- g_error_free (error);
- }
-}
-
-void
-click_expander_cb (GObject * object,
- GParamSpec * param_spec,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- if (gtk_expander_get_expanded (GTK_EXPANDER (object)) == TRUE) {
- gtk_widget_show (gsearch->available_options_vbox);
- gtk_window_set_geometry_hints (GTK_WINDOW (gsearch->window),
- GTK_WIDGET (gsearch->window),
- &gsearch->window_geometry,
- GDK_HINT_MIN_SIZE);
- }
- else {
- GdkGeometry default_geometry = {DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT};
-
- gtk_widget_hide (gsearch->available_options_vbox);
- gtk_window_set_geometry_hints (GTK_WINDOW (gsearch->window),
- GTK_WIDGET (gsearch->window),
- &default_geometry,
- GDK_HINT_MIN_SIZE);
- }
-}
-
-void
-size_allocate_cb (GtkWidget * widget,
- GtkAllocation * allocation,
- gpointer data)
-{
- GtkWidget * button = data;
-
- gtk_widget_set_size_request (button, allocation->width, -1);
-}
-
-/*
-void
-add_constraint_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gint index;
-
- index = gtk_combo_box_get_active (GTK_COMBO_BOX (gsearch->available_options_combo_box));
- add_constraint (gsearch, index, NULL, FALSE);
-}
-*/
-
-void
-remove_constraint_cb (GtkWidget * widget,
- gpointer data)
-{
- GList * list = data;
-
- GSearchWindow * gsearch = g_list_first (list)->data;
- GSearchConstraint * constraint = g_list_last (list)->data;
-
- gsearch->window_geometry.min_height -= WINDOW_HEIGHT_STEP;
-
- gtk_window_set_geometry_hints (GTK_WINDOW (gsearch->window),
- GTK_WIDGET (gsearch->window),
- &gsearch->window_geometry,
- GDK_HINT_MIN_SIZE);
-
- gtk_container_remove (GTK_CONTAINER (gsearch->available_options_vbox), widget->parent);
-
- gsearch->available_options_selected_list =
- g_list_remove (gsearch->available_options_selected_list, constraint);
-
- //set_constraint_selected_state (gsearch, constraint->constraint_id, FALSE);
- set_constraint_gconf_boolean (constraint->constraint_id, FALSE);
- g_slice_free (GSearchConstraint, constraint);
- g_list_free (list);
-}
-
-void
-constraint_activate_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- if ((GTK_WIDGET_VISIBLE (gsearch->find_button)) &&
- (GTK_WIDGET_SENSITIVE (gsearch->find_button))) {
- click_find_cb (gsearch->find_button, data);
- }
-}
-
-void
-constraint_update_info_cb (GtkWidget * widget,
- gpointer data)
-{
- static gchar * string;
- GSearchConstraint * opt = data;
-
- string = (gchar *) gtk_entry_get_text (GTK_ENTRY (widget));
- update_constraint_info (opt, string);
-}
-
-void
-name_contains_activate_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- if ((GTK_WIDGET_VISIBLE (gsearch->find_button)) &&
- (GTK_WIDGET_SENSITIVE (gsearch->find_button))) {
- click_find_cb (gsearch->find_button, data);
- }
-}
-
-gboolean
-text_changed_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- const gchar * s = gtk_entry_get_text (GTK_ENTRY (gsearch->search_entry));
-
- if (!tracker_is_empty_string (s)) {
- gtk_widget_set_sensitive (gsearch->find_button, TRUE);
- } else {
- gtk_widget_set_sensitive (gsearch->find_button, FALSE);
- }
-
- return FALSE;
-}
-
-void
-click_find_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gchar * command = build_search_command (gsearch, TRUE);
-
- if (command) {
- start_new_search (gsearch, command);
- }
-
- g_free (command);
-}
-
-void
-next_results_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- do_search (gsearch, gsearch->search_term, FALSE,
- gsearch->current_service->offset + MAX_SEARCH_RESULTS);
-}
-
-
-void
-prev_results_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- do_search (gsearch, gsearch->search_term, FALSE,
- gsearch->current_service->offset - MAX_SEARCH_RESULTS);
-}
-
-void
-category_changed_cb (GtkTreeSelection * treeselection,
- gpointer data)
-{
- select_category (treeselection, data);
-}
-
-static gint
-display_dialog_file_open_limit (GtkWidget * window,
- gint count)
-{
- GtkWidget * dialog;
- GtkWidget * button;
- gchar * primary;
- gchar * secondary;
- gint response;
-
- primary = g_strdup_printf (ngettext ("Are you sure you want to open %d document?",
- "Are you sure you want to open %d documents?",
- count),
- count);
-
- secondary = g_strdup_printf (ngettext ("This will open %d separate window.",
- "This will open %d separate windows.",
- count),
- count);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_CANCEL,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- button = gtk_button_new_from_stock ("gtk-open");
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_widget_show (button);
-
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
- response = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- g_free (primary);
- g_free (secondary);
-
- return response;
-}
-
-static void
-display_dialog_could_not_open_file (GtkWidget * window,
- const gchar * file,
- const gchar * message)
-{
- GtkWidget * dialog;
- gchar * primary;
-
- primary = g_strdup_printf (_("Could not open document \"%s\"."), file);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- message);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
-
- gtk_widget_show (dialog);
- g_free (primary);
-}
-
-static void
-display_dialog_could_not_open_folder (GtkWidget * window,
- const gchar * folder)
-{
- GtkWidget * dialog;
- gchar * primary;
-
- primary = g_strdup_printf (_("Could not open folder \"%s\"."), folder);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- _("The nautilus file manager is not running."));
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
-
- gtk_widget_show (dialog);
- g_free (primary);
-}
-
-void
-select_changed_cb (GtkTreeSelection *treeselection,
- gpointer user_data)
-{
-
- GSearchWindow *gsearch = user_data;
- tracker_update_metadata_tile (gsearch);
-
-#if 0
-
- GtkTreeModel * model;
- GtkTreeIter iter;
- char *name, *path;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return;
- }
-
- gtk_tree_selection_get_selected (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model,
- &iter);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_NAME, &name,
- COLUMN_PATH, &path,
- -1);
-
- //g_print ("selected uri is %s/%s\n", path, name);
-
- g_free (path);
-
- g_free (name);
-
-#endif
-}
-
-GdkPixbuf *
-tracker_get_large_icon (const gchar * local_uri,
- gboolean is_local_file,
- GSearchWindow * gsearch)
-{
- gchar * thumb_name = NULL;
- GdkPixbuf * temp = NULL;
-
- if (is_local_file) {
- gchar *uri = gnome_vfs_get_uri_from_local_path (local_uri);
-
- thumb_name = gnome_thumbnail_path_for_uri (uri, GNOME_THUMBNAIL_SIZE_NORMAL);
-
- g_free (uri);
- }
-
- if (!thumb_name) {
-
- gchar * icon_name = gnome_icon_lookup_sync (gtk_icon_theme_get_default (),
- gsearch->thumbnail_factory,
- local_uri,
- NULL,
- GNOME_ICON_LOOKUP_FLAGS_SHOW_SMALL_IMAGES_AS_THEMSELVES | GNOME_ICON_LOOKUP_FLAGS_ALLOW_SVG_AS_THEMSELVES,
- 0);
-
- temp = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(),
- icon_name,
- METADATA_IMAGE_HEIGHT,
- GTK_ICON_LOOKUP_FORCE_SVG,
- NULL);
-
- g_free (icon_name);
-
- return temp;
- }
-
- temp = gdk_pixbuf_new_from_file_at_scale (thumb_name, METADATA_IMAGE_WIDTH, METADATA_IMAGE_HEIGHT, TRUE, NULL);
-
- g_free (thumb_name);
-
- return temp;
-}
-
-
-void
-tracker_update_metadata_tile (GSearchWindow *gsearch)
-{
- GtkTreeModel * model;
- GList * list, * tmp;
- ServiceType type;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) != 1) {
- tracker_metadata_tile_set_uri (TRACKER_METADATA_TILE (gsearch->metatile), NULL, 0, NULL, NULL);
- //gtk_widget_hide (gsearch->metatile);
- return;
- }
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
- for (tmp = list; tmp; tmp = tmp->next) {
-
- gboolean no_files_found = FALSE;
- gchar *uri = NULL;
- gchar *mime = NULL;
- GdkPixbuf *pixbuf = NULL;
- GtkTreeIter iter;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter, tmp->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_ICON, &pixbuf,
- COLUMN_URI, &uri,
- COLUMN_MIME, &mime,
- COLUMN_TYPE, &type,
- COLUMN_NO_FILES_FOUND, &no_files_found,
- -1);
-
- /* get large icon for documents, images and videos only */
- GdkPixbuf *large_icon = NULL;
- if (type == SERVICE_DOCUMENTS || type == SERVICE_IMAGES || type == SERVICE_VIDEOS) {
- large_icon = tracker_get_large_icon (uri, (gsearch->type < 10), gsearch);
- }
-
-
- if (large_icon) {
- tracker_metadata_tile_set_uri (TRACKER_METADATA_TILE (gsearch->metatile), uri, type, mime, large_icon);
- g_object_unref (G_OBJECT (large_icon));
- } else {
- tracker_metadata_tile_set_uri (TRACKER_METADATA_TILE (gsearch->metatile), uri, type, mime, pixbuf);
- }
-
-
- g_free (uri);
- g_free (mime);
- }
-
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
-}
-
-void
-open_file_cb (GtkAction * action,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- GtkTreeModel * model;
- GList * list, * tmp;
- char *exec = NULL;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return;
- }
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- if (g_list_length (list) > SILENT_WINDOW_OPEN_LIMIT) {
- gint response;
-
- response = display_dialog_file_open_limit (gsearch->window, g_list_length (list));
-
- if (response == GTK_RESPONSE_CANCEL) {
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
- return;
- }
- }
-
- for (tmp = list; tmp; tmp = tmp->next) {
-
- gboolean no_files_found = FALSE;
- gchar * uri;
- gchar * mime;
- GtkTreeIter iter;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter, tmp->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_URI, &uri,
- COLUMN_MIME, &mime,
- COLUMN_EXEC, &exec,
- COLUMN_NO_FILES_FOUND, &no_files_found,
- -1);
-
-
- if (gsearch->type == SERVICE_EMAILS) {
- if (strstr (mime, "Evolution")) {
- exec = g_strdup_printf ("evolution \"%s\"", uri);
- } else if (strstr (mime, "Modest")) {
- exec = g_strdup_printf ("modest-open \"%s\"", uri);
- } else if (strstr (mime, "KMail")) {
- exec = g_strdup_printf ("kmail --view \"%s\"", uri);
- } else if (strstr (mime, "Thunderbird")) {
- exec = g_strdup_printf ("thunderbird -viewtracker \"%s\"", uri);
- } else {
- exec = NULL;
- }
- if (exec) {
- g_spawn_command_line_async (exec, NULL);
- g_free (exec);
- }
-
- } else if (gsearch->type == SERVICE_APPLICATIONS) {
- if (exec) {
- gchar *my_exec = tracker_string_replace (exec, "%U", NULL);
- g_spawn_command_line_async (my_exec, NULL);
- g_free (my_exec);
- g_free (exec);
-
- } else {
- display_dialog_could_not_open_file (gsearch->window, uri, _("Application could not be opened"));
- }
-
- } else {
-
- gchar * file;
- gchar * locale_file;
-
- file = uri;
- locale_file = g_locale_from_utf8 (file, -1, NULL, NULL, NULL);
-
- if (!g_file_test (locale_file, G_FILE_TEST_EXISTS)) {
- gtk_tree_selection_unselect_iter (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &iter);
- display_dialog_could_not_open_file (gsearch->window, uri,
- _("The document does not exist."));
-
- } else if (open_file_with_xdg_open (gsearch->window, locale_file) == FALSE) {
-
- if (open_file_with_application (gsearch->window, locale_file) == FALSE) {
-
- if (launch_file (locale_file) == FALSE) {
-
- if (g_file_test (locale_file, G_FILE_TEST_IS_DIR)) {
-
- if (open_file_with_nautilus (gsearch->window, locale_file) == FALSE) {
- display_dialog_could_not_open_folder (gsearch->window, uri);
- }
-
- } else {
- display_dialog_could_not_open_file (gsearch->window, uri,
- _("There is no installed viewer capable "
- "of displaying the document."));
- }
- }
- }
- }
- g_free (locale_file);
- }
- g_free (uri);
-
- }
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
-}
-
-static gint
-display_dialog_folder_open_limit (GtkWidget * window,
- gint count)
-{
- GtkWidget * dialog;
- GtkWidget * button;
- gchar * primary;
- gchar * secondary;
- gint response;
-
- primary = g_strdup_printf (ngettext ("Are you sure you want to open %d folder?",
- "Are you sure you want to open %d folders?",
- count),
- count);
-
- secondary = g_strdup_printf (ngettext ("This will open %d separate window.",
- "This will open %d separate windows.",
- count),
- count);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_CANCEL,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- button = gtk_button_new_from_stock ("gtk-open");
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_widget_show (button);
-
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
- response = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- g_free (primary);
- g_free (secondary);
-
- return response;
-}
-
-void
-open_folder_cb (GtkAction * action,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- GtkTreeModel * model;
- GList * list, * tmp;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return;
- }
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- if (g_list_length (list) > SILENT_WINDOW_OPEN_LIMIT) {
- gint response;
-
- response = display_dialog_folder_open_limit (gsearch->window, g_list_length (list));
-
- if (response == GTK_RESPONSE_CANCEL) {
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
- return;
- }
- }
-
- for (tmp = list; tmp; tmp = tmp->next) {
-
- gchar * folder_locale;
- gchar * folder_utf8;
- GtkTreeIter iter;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter, tmp->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_PATH, &folder_utf8,
- -1);
-
- folder_locale = g_filename_from_utf8 (folder_utf8, -1, NULL, NULL, NULL);
-
- if (open_file_with_xdg_open (gsearch->window, folder_locale) == FALSE) {
- if (open_file_with_nautilus (gsearch->window, folder_locale) == FALSE) {
-
- display_dialog_could_not_open_folder (gsearch->window, folder_utf8);
- }
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
- g_free (folder_locale);
- g_free (folder_utf8);
- return;
- }
- g_free (folder_locale);
- g_free (folder_utf8);
- }
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
-}
-
-static void
-display_dialog_could_not_move_to_trash (GtkWidget * window,
- const gchar * file,
- const gchar * message)
-{
- GtkWidget * dialog;
- gchar * primary;
-
- primary = g_strdup_printf (_("Could not move \"%s\" to trash."), file);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- message);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_widget_show (dialog);
- g_free (primary);
-}
-
-static gint
-display_dialog_delete_permanently (GtkWidget * window,
- const gchar * file)
-{
- GtkWidget * dialog;
- GtkWidget * button;
- gchar * primary;
- gchar * secondary;
- gint response;
-
- primary = g_strdup_printf (_("Do you want to delete \"%s\" permanently?"),
- g_path_get_basename (file));
-
- secondary = g_strdup_printf (_("Trash is unavailable. Could not move \"%s\" to the trash."),
- file);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_CANCEL,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- button = gtk_button_new_from_stock ("gtk-delete");
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_widget_show (button);
-
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
- response = gtk_dialog_run (GTK_DIALOG (dialog));
-
- gtk_widget_destroy (GTK_WIDGET(dialog));
- g_free (primary);
- g_free (secondary);
-
- return response;
-}
-
-static void
-display_dialog_could_not_delete (GtkWidget * window,
- const gchar * file,
- const gchar * message)
-{
- GtkWidget * dialog;
- gchar * primary;
-
- primary = g_strdup_printf (_("Could not delete \"%s\"."), file);
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- message);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_widget_show (dialog);
- g_free (primary);
-}
-
-static char *
-get_trash_path (const gchar * file)
-{
- GnomeVFSURI * trash_uri;
- GnomeVFSURI * uri;
- gchar * filename;
-
- filename = gnome_vfs_escape_path_string (file);
- uri = gnome_vfs_uri_new (filename);
- g_free (filename);
-
- gnome_vfs_find_directory (uri,
- GNOME_VFS_DIRECTORY_KIND_TRASH,
- &trash_uri,
- TRUE,
- TRUE,
- 0777);
- gnome_vfs_uri_unref (uri);
-
- if (trash_uri == NULL) {
- return NULL;
- }
- else {
- gchar * trash_path;
- trash_path = gnome_vfs_uri_to_string (trash_uri, GNOME_VFS_URI_HIDE_TOPLEVEL_METHOD);
- gnome_vfs_uri_unref (trash_uri);
- return trash_path;
- }
-}
-
-void
-move_to_trash_cb (GtkAction * action,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gint total;
- gint index;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return;
- }
-
- total = gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection));
-
- for (index = 0; index < total; index++) {
- gboolean no_files_found = FALSE;
- GtkTreeModel * model;
- GtkTreeIter iter;
- GList * list;
- gchar * utf8_basename;
- gchar * utf8_basepath;
- gchar * utf8_filename;
- gchar * locale_filename;
- gchar * trash_path;
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- g_list_nth (list, 0)->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_NAME, &utf8_basename,
- COLUMN_PATH, &utf8_basepath,
- COLUMN_NO_FILES_FOUND, &no_files_found,
- -1);
-
- if (no_files_found) {
- g_free (utf8_basename);
- g_free (utf8_basepath);
- return;
- }
-
- utf8_filename = g_build_filename (utf8_basepath, utf8_basename, NULL);
- locale_filename = g_locale_from_utf8 (utf8_filename, -1, NULL, NULL, NULL);
- trash_path = get_trash_path (locale_filename);
-
- if ((!g_file_test (locale_filename, G_FILE_TEST_EXISTS)) &&
- (!g_file_test (locale_filename, G_FILE_TEST_IS_SYMLINK))) {
- gtk_tree_selection_unselect_iter (GTK_TREE_SELECTION (gsearch->search_results_selection), &iter);
- display_dialog_could_not_move_to_trash (gsearch->window, utf8_basename,
- _("The document does not exist."));
- }
- else if (trash_path != NULL) {
- GnomeVFSResult result;
- gchar * destination;
- gchar * basename;
- gchar * source_uri;;
-
- source_uri = g_filename_to_uri (locale_filename, NULL, NULL);
- basename = g_locale_from_utf8 (utf8_basename, -1, NULL, NULL, NULL);
- destination = g_build_filename (trash_path, basename, NULL);
-
- result = gnome_vfs_move (source_uri, destination, TRUE);
- gtk_tree_selection_unselect_iter (GTK_TREE_SELECTION (gsearch->search_results_selection), &iter);
-
- if (result == GNOME_VFS_OK) {
-
- gtk_list_store_remove (GTK_LIST_STORE (gsearch->search_results_list_store), &iter);
- }
- else {
- gchar * message;
-
- message = g_strdup_printf (_("Moving \"%s\" failed: %s."),
- utf8_filename,
- gnome_vfs_result_to_string (result));
- display_dialog_could_not_move_to_trash (gsearch->window, utf8_basename,
- message);
- g_free (message);
- }
- g_free (source_uri);
- g_free (basename);
- g_free (destination);
- }
- else {
- gint response;
-
- gtk_tree_selection_unselect_iter (GTK_TREE_SELECTION (gsearch->search_results_selection), &iter);
- response = display_dialog_delete_permanently (gsearch->window, utf8_filename);
-
- if (response == GTK_RESPONSE_OK) {
- GnomeVFSResult result;
-
- if (!g_file_test (locale_filename, G_FILE_TEST_IS_DIR)) {
- result = gnome_vfs_unlink (locale_filename);
- }
- else {
- result = gnome_vfs_remove_directory (locale_filename);
- }
-
- if (result == GNOME_VFS_OK) {
-
- gtk_list_store_remove (GTK_LIST_STORE (gsearch->search_results_list_store), &iter);
- }
- else {
- gchar * message;
-
- message = g_strdup_printf (_("Deleting \"%s\" failed: %s."),
- utf8_filename, gnome_vfs_result_to_string (result));
-
- display_dialog_could_not_delete (gsearch->window, utf8_basename, message);
-
- g_free (message);
- }
- }
- }
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
- g_free (locale_filename);
- g_free (utf8_filename);
- g_free (utf8_basename);
- g_free (utf8_basepath);
- g_free (trash_path);
- }
-
- if (gsearch->command_details->command_status != RUNNING) {
- update_search_counts (gsearch);
- }
-}
-
-gboolean
-file_button_press_event_cb (GtkWidget * widget,
- GdkEventButton * event,
- gpointer data)
-{
- GtkTreeView * tree = data;
- GtkTreePath * path;
-
- row_selected_by_button_press_event = TRUE;
-
- if (event->window != gtk_tree_view_get_bin_window (tree)) {
- return FALSE;
- }
-
- if (gtk_tree_view_get_path_at_pos (tree, event->x, event->y,
- &path, NULL, NULL, NULL)) {
-
- if ((event->button == 1 || event->button == 2 || event->button == 3)
- && gtk_tree_selection_path_is_selected (gtk_tree_view_get_selection (tree), path)) {
- row_selected_by_button_press_event = FALSE;
- }
- gtk_tree_path_free (path);
- }
- else {
- gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (tree));
- }
-
- return !(row_selected_by_button_press_event);
-}
-
-gboolean
-file_key_press_event_cb (GtkWidget * widget,
- GdkEventKey * event,
- gpointer data)
-{
- if (event->keyval == GDK_space || event->keyval == GDK_Return) {
- if (event->state != GDK_CONTROL_MASK) {
- open_file_cb ((GtkAction *) NULL, data);
- return TRUE;
- }
- }
- else if (event->keyval == GDK_Delete) {
- move_to_trash_cb ((GtkAction *) NULL, data);
- return TRUE;
- }
- return FALSE;
-}
-
-gboolean
-file_button_release_event_cb (GtkWidget * widget,
- GdkEventButton * event,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gboolean no_files_found = FALSE;
- GtkTreeIter iter;
-
- if (event->window != gtk_tree_view_get_bin_window (GTK_TREE_VIEW (gsearch->search_results_tree_view))) {
- return FALSE;
- }
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return FALSE;
- }
-
- if (event->button == 3) {
- GtkTreeModel * model;
- GList * list;
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- g_list_first (list)->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_NO_FILES_FOUND, &no_files_found,
- -1);
-
- if (!no_files_found) {
- gtk_menu_popup (GTK_MENU (gsearch->search_results_popup_menu), NULL, NULL, NULL, NULL,
- event->button, event->time);
- }
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
- }
- else if (event->button == 1 || event->button == 2) {
- if (gsearch->is_search_results_single_click_to_activate == TRUE) {
- if (!(event->state & GDK_CONTROL_MASK) && !(event->state & GDK_SHIFT_MASK)) {
- open_file_cb ((GtkAction *) NULL, data);
- }
- }
- }
-
- return FALSE;
-}
-
-gboolean
-file_event_after_cb (GtkWidget * widget,
- GdkEventButton * event,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- if (event->window != gtk_tree_view_get_bin_window (GTK_TREE_VIEW (gsearch->search_results_tree_view))) {
- return FALSE;
- }
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return FALSE;
- }
-
- if (!(event->state & GDK_CONTROL_MASK) && !(event->state & GDK_SHIFT_MASK)) {
- if (gsearch->is_search_results_single_click_to_activate == FALSE) {
- if (event->type == GDK_2BUTTON_PRESS) {
- open_file_cb ((GtkAction *) NULL, data);
- return TRUE;
- }
- }
- }
- return FALSE;
-}
-
-gboolean
-file_motion_notify_cb (GtkWidget *widget,
- GdkEventMotion *event,
- gpointer user_data)
-{
- GSearchWindow * gsearch = user_data;
- GdkCursor * cursor;
- GtkTreePath * last_hover_path;
- GtkTreeIter iter;
-
- if (gsearch->is_search_results_single_click_to_activate == FALSE) {
- gdk_window_set_cursor (event->window, NULL);
- return FALSE;
- }
-
- if (event->window != gtk_tree_view_get_bin_window (GTK_TREE_VIEW (gsearch->search_results_tree_view))) {
- gdk_window_set_cursor (event->window, NULL);
- return FALSE;
- }
-
- last_hover_path = gsearch->search_results_hover_path;
-
- gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
- event->x, event->y,
- &gsearch->search_results_hover_path,
- NULL, NULL, NULL);
-
- if (gsearch->search_results_hover_path != NULL) {
- cursor = gdk_cursor_new (GDK_HAND2);
- }
- else {
- cursor = NULL;
- }
-
- gdk_window_set_cursor (event->window, cursor);
-
- /* Redraw if the hover row has changed */
- if (!(last_hover_path == NULL && gsearch->search_results_hover_path == NULL) &&
- (!(last_hover_path != NULL && gsearch->search_results_hover_path != NULL) ||
- gtk_tree_path_compare (last_hover_path, gsearch->search_results_hover_path))) {
- if (last_hover_path) {
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store),
- &iter, last_hover_path);
- gtk_tree_model_row_changed (GTK_TREE_MODEL (gsearch->search_results_list_store),
- last_hover_path, &iter);
- }
-
- if (gsearch->search_results_hover_path) {
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store),
- &iter, gsearch->search_results_hover_path);
- gtk_tree_model_row_changed (GTK_TREE_MODEL (gsearch->search_results_list_store),
- gsearch->search_results_hover_path, &iter);
- }
- }
-
- gtk_tree_path_free (last_hover_path);
-
- return FALSE;
-}
-
-gboolean
-file_leave_notify_cb (GtkWidget *widget,
- GdkEventCrossing *event,
- gpointer user_data)
-{
- GSearchWindow * gsearch = user_data;
- GtkTreeIter iter;
-
- if (gsearch->is_search_results_single_click_to_activate && (gsearch->search_results_hover_path != NULL)) {
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store),
- &iter,
- gsearch->search_results_hover_path);
- gtk_tree_model_row_changed (GTK_TREE_MODEL (gsearch->search_results_list_store),
- gsearch->search_results_hover_path,
- &iter);
-
- gtk_tree_path_free (gsearch->search_results_hover_path);
- gsearch->search_results_hover_path = NULL;
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-void
-drag_begin_file_cb (GtkWidget * widget,
- GdkDragContext * context,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gint number_of_selected_rows;
-
- number_of_selected_rows = gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection));
-
- if (number_of_selected_rows > 1) {
- gtk_drag_set_icon_stock (context, GTK_STOCK_DND_MULTIPLE, 0, 0);
- }
- else if (number_of_selected_rows == 1) {
- GdkPixbuf * pixbuf;
- GtkTreeModel * model;
- GtkTreeIter iter;
- GList * list;
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- g_list_first (list)->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_ICON, &pixbuf,
- -1);
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
-
- if (pixbuf) {
- gtk_drag_set_icon_pixbuf (context, pixbuf, 0, 0);
- }
- else {
- gtk_drag_set_icon_stock (context, GTK_STOCK_DND, 0, 0);
- }
- }
-}
-
-/* Make a desktop file in /tmp witch points to this email */
-static gchar*
-make_email_desktop_file (const gchar *utf8_uri, const gchar *utf8_name)
-{
- GnomeDesktopItem *item = NULL;
- gchar *exec_string = NULL;
- gchar *save_uri = NULL;
- time_t seconds;
-
- item = gnome_desktop_item_new ();
-
- exec_string = g_strdup_printf ("evolution \"%s\"",utf8_uri);
-
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_ENCODING, "UTF-8");
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_NAME, utf8_name);
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_COMMENT, _("Activate to view this email"));
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_EXEC, exec_string);
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_ICON, "email");
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_TERMINAL, "false");
- gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_TYPE, "Application");
-
- seconds = time (NULL);
- save_uri = g_strdup_printf ("/tmp/tracker-email-shortcut-file%d.desktop", (int)seconds);
- gnome_desktop_item_save (item,
- save_uri,
- TRUE,
- NULL);
-
- g_free (exec_string);
-
- return save_uri;
-}
-
-void
-drag_file_cb (GtkWidget * widget,
- GdkDragContext * context,
- GtkSelectionData * selection_data,
- guint info,
- guint time,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gchar * uri_list = NULL;
- GList * list, * tmp;
- GtkTreeModel * model;
- GtkTreeIter iter;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return;
- }
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- for (tmp = list; tmp; tmp = tmp->next) {
-
- gboolean no_files_found = FALSE;
- gchar * utf8_name;
- gchar * utf8_path;
- gchar * utf8_uri;
- gchar * file;
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter, tmp->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_NAME, &utf8_name,
- COLUMN_PATH, &utf8_path,
- COLUMN_URI, &utf8_uri,
- COLUMN_NO_FILES_FOUND, &no_files_found,
- -1);
-
- file = g_build_filename (utf8_path, utf8_name, NULL);
-
- if (!no_files_found) {
- gchar * tmp_uri = NULL;
- tmp_uri = g_filename_to_uri (file, NULL, NULL);
-
- if (uri_list == NULL) {
- uri_list = g_strdup (tmp_uri);
- }
- else {
- uri_list = g_strconcat (uri_list, "\n", tmp_uri, NULL);
- }
- if (gsearch->type < 10) {
- gtk_selection_data_set (selection_data,
- selection_data->target,
- 8,
- (guchar *) uri_list,
- strlen (uri_list));
- } else {
- gchar *desktop_uri;
- desktop_uri = make_email_desktop_file (utf8_uri, utf8_name);
- gtk_selection_data_set (selection_data,
- selection_data->target,
- 8,
- (guchar *) desktop_uri,
- strlen (desktop_uri));
- g_free (desktop_uri);
- }
- g_free (tmp_uri);
- }
- else {
- gtk_selection_data_set_text (selection_data, utf8_name, -1);
- }
- g_free (utf8_name);
- g_free (utf8_path);
- g_free (utf8_uri);
- g_free (file);
- }
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
- g_free (uri_list);
-}
-
-void
-drag_data_animation_cb (GtkWidget * widget,
- GdkDragContext * context,
- GtkSelectionData * selection_data,
- guint info,
- guint time,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- GnomeDesktopItem * ditem;
- GString * command = g_string_new ("");
- gchar ** argv;
- gchar * desktop_item_name = NULL;
- gchar * uri;
- gchar * path;
- gchar * disk;
- gchar * scheme;
- gint argc;
- gint index;
-
- set_clone_command (gsearch, &argc, &argv, "tracker-search-tool", TRUE);
-
- if (argc == 0) {
- return;
- }
-
- for (index = 0; index < argc; index++) {
- command = g_string_append (command, argv[index]);
- command = g_string_append_c (command, ' ');
- }
- command = g_string_append (command, "--start");
-
- disk = g_locale_from_utf8 (command->str, -1, NULL, NULL, NULL);
- uri = gnome_vfs_make_uri_from_input_with_dirs (disk, GNOME_VFS_MAKE_URI_DIR_HOMEDIR);
- scheme = gnome_vfs_get_uri_scheme (uri);
-
- ditem = gnome_desktop_item_new ();
-
- gnome_desktop_item_set_entry_type (ditem, GNOME_DESKTOP_ITEM_TYPE_APPLICATION);
- gnome_desktop_item_set_string (ditem, GNOME_DESKTOP_ITEM_EXEC, command->str);
-
- desktop_item_name = get_desktop_item_name (gsearch);
-
- gnome_desktop_item_set_string (ditem, GNOME_DESKTOP_ITEM_NAME, desktop_item_name);
- gnome_desktop_item_set_boolean (ditem, GNOME_DESKTOP_ITEM_TERMINAL, FALSE);
- gnome_desktop_item_set_string (ditem, GNOME_DESKTOP_ITEM_ICON, TRACKER_SEARCH_TOOL_ICON);
- gnome_desktop_item_set_boolean (ditem, "StartupNotify", TRUE);
-
- g_string_free (command, TRUE);
- g_free (desktop_item_name);
- g_free (uri);
-
- path = tracker_search_get_unique_filename (g_get_tmp_dir (), ".desktop");
- gnome_desktop_item_set_location (ditem, path);
-
- uri = gnome_vfs_get_uri_from_local_path (path);
-
- if (gnome_desktop_item_save (ditem, NULL, FALSE, NULL)) {
- gtk_selection_data_set (selection_data,
- selection_data->target, 8,
- (guchar *) uri, strlen (uri));
- }
- gnome_desktop_item_unref (ditem);
-
- g_free (uri);
- g_free (path);
- g_free (disk);
- g_free (scheme);
-}
-
-void
-show_file_selector_cb (GtkAction * action,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- GtkWidget * file_chooser;
-
- file_chooser = gtk_file_chooser_dialog_new (_("Save Search Results As..."),
- GTK_WINDOW (gsearch->window),
- GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_OK,
- NULL);
-
-#if GTK_CHECK_VERSION(2,7,3)
- gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (file_chooser), TRUE);
-#endif
-
- if (gsearch->save_results_as_default_filename != NULL) {
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_chooser),
- gsearch->save_results_as_default_filename);
- } else {
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser),
- g_get_home_dir());
- }
-
- g_signal_connect (G_OBJECT (file_chooser), "response",
- G_CALLBACK (save_results_cb), gsearch);
-
- gtk_window_set_modal (GTK_WINDOW (file_chooser), TRUE);
- gtk_window_set_position (GTK_WINDOW (file_chooser), GTK_WIN_POS_CENTER_ON_PARENT);
-
- gtk_widget_show (GTK_WIDGET (file_chooser));
-}
-
-static void
-display_dialog_could_not_save_no_name (GtkWidget * window)
-{
- GtkWidget * dialog;
- gchar * primary;
- gchar * secondary;
-
- primary = g_strdup (_("Could not save document."));
- secondary = g_strdup (_("You did not select a document name."));
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_widget_show (dialog);
- g_free (primary);
- g_free (secondary);
-}
-
-static void
-display_dialog_could_not_save_to (GtkWidget * window,
- const gchar * file,
- const gchar * message)
-{
- GtkWidget * dialog;
- gchar * primary;
-
- primary = g_strdup_printf (_("Could not save \"%s\" document to \"%s\"."),
- g_path_get_basename (file),
- g_path_get_dirname (file));
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- message);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_widget_show (dialog);
- g_free (primary);
-}
-
-#if !GTK_CHECK_VERSION(2,7,3)
-static gint
-display_dialog_could_not_save_exists (GtkWidget * window,
- const gchar * file)
-{
- GtkWidget * dialog;
- GtkWidget * button;
- gchar * primary;
- gchar * secondary;
- gint response;
-
- primary = g_strdup_printf (_("The document \"%s\" already exists. "
- "Would you like to replace it?"),
- g_path_get_basename (file));
-
- secondary = g_strdup (_("If you replace an existing file, "
- "its contents will be overwritten."));
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_CANCEL,
- primary);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- button = tracker_search_button_new_with_stock_icon (_("_Replace"), GTK_STOCK_OK);
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_widget_show (button);
-
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
- response = gtk_dialog_run (GTK_DIALOG (dialog));
-
- gtk_widget_destroy (GTK_WIDGET(dialog));
- g_free (primary);
- g_free (secondary);
-
- return response;
-}
-#endif
-
-void
-save_results_cb (GtkWidget * chooser,
- gint response,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- GtkListStore * store;
- GtkTreeIter iter;
- FILE * fp;
- gchar * utf8 = NULL;
-
- if (response != GTK_RESPONSE_OK) {
- gtk_widget_destroy (GTK_WIDGET (chooser));
- return;
- }
-
- store = gsearch->search_results_list_store;
- g_free (gsearch->save_results_as_default_filename);
-
- gsearch->save_results_as_default_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
- gtk_widget_destroy (chooser);
-
- if (gsearch->save_results_as_default_filename != NULL) {
- utf8 = g_filename_to_utf8 (gsearch->save_results_as_default_filename, -1, NULL, NULL, NULL);
- }
-
- if (utf8 == NULL) {
- display_dialog_could_not_save_no_name (gsearch->window);
- return;
- }
-
- if (g_file_test (gsearch->save_results_as_default_filename, G_FILE_TEST_IS_DIR)) {
- display_dialog_could_not_save_to (gsearch->window, utf8,
- _("The document name you selected is a folder."));
- g_free (utf8);
- return;
- }
-
-#if !GTK_CHECK_VERSION(2,7,3)
- if (g_file_test (gsearch->save_results_as_default_filename, G_FILE_TEST_EXISTS)) {
-
- gint response;
-
- response = display_dialog_could_not_save_exists (gsearch->window, utf8);
-
- if (response != GTK_RESPONSE_OK) {
- g_free (utf8);
- return;
- }
- }
-#endif
-
- if ((fp = g_fopen (gsearch->save_results_as_default_filename, "w")) != NULL) {
-
- gint index;
-
- for (index = 0; index < gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL); index++)
- {
- if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter, NULL, index) == TRUE) {
-
- gchar * utf8_path;
- gchar * utf8_name;
- gchar * utf8_file;
- gchar * locale_file;
-
- gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COLUMN_PATH, &utf8_path, -1);
- gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COLUMN_NAME, &utf8_name, -1);
-
- utf8_file = g_build_filename (utf8_path, utf8_name, NULL);
- locale_file = g_filename_from_utf8 (utf8_file, -1, NULL, NULL, NULL);
- fprintf (fp, "%s\n", locale_file);
-
- g_free (utf8_path);
- g_free (utf8_name);
- g_free (utf8_file);
- g_free (locale_file);
- }
- }
- fclose (fp);
- }
- else {
- display_dialog_could_not_save_to (gsearch->window, utf8,
- _("You may not have write permissions to the document."));
- }
- g_free (utf8);
-}
-
-void
-save_session_cb (GnomeClient * client,
- gint phase,
- GnomeRestartStyle save_style,
- gint shutdown,
- GnomeInteractStyle interact_style,
- gint fast,
- gpointer client_data)
-{
- GSearchWindow * gsearch = client_data;
- char ** argv;
- gint argc;
-
- set_clone_command (gsearch, &argc, &argv, "tracker-search-tool", FALSE);
- gnome_client_set_clone_command (client, argc, argv);
- gnome_client_set_restart_command (client, argc, argv);
-}
-
-gboolean
-key_press_cb (GtkWidget * widget,
- GdkEventKey * event,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
-
- if (event->keyval == GDK_Escape) {
- if (gsearch->command_details->command_status == RUNNING) {
- click_stop_cb (widget, data);
- }
- else if (gsearch->command_details->is_command_timeout_enabled == FALSE) {
- quit_cb (widget, (GdkEvent *) NULL, data);
- }
- }
- else if (event->keyval == GDK_F10) {
- if (event->state & GDK_SHIFT_MASK) {
- gboolean no_files_found = FALSE;
- GtkTreeModel * model;
- GtkTreeIter iter;
- GList * list;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 0) {
- return FALSE;
- }
-
- list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection),
- &model);
-
- gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- g_list_first (list)->data);
-
- gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
- COLUMN_NO_FILES_FOUND, &no_files_found, -1);
-
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
- g_list_free (list);
-
- if (!no_files_found) {
- gtk_menu_popup (GTK_MENU (gsearch->search_results_popup_menu), NULL, NULL, NULL, NULL,
- event->keyval, event->time);
- return TRUE;
- }
- }
- }
- return FALSE;
-}
-
-gboolean
-not_running_timeout_cb (gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- gsearch->command_details->is_command_timeout_enabled = FALSE;
- return FALSE;
-}
-
-void
-disable_quick_search_cb (GtkWidget * dialog,
- gint response,
- gpointer data)
-{
- gtk_widget_destroy (GTK_WIDGET (dialog));
-
- if (response == GTK_RESPONSE_OK) {
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/disable_quick_search", TRUE);
- }
-}
-
-void
-single_click_to_activate_key_changed_cb (GConfClient * client,
- guint cnxn_id,
- GConfEntry * entry,
- gpointer user_data)
-{
- GSearchWindow * gsearch = user_data;
- GConfValue * value = gconf_entry_get_value (entry);
-
- g_return_if_fail (value->type == GCONF_VALUE_STRING);
-
- gsearch->is_search_results_single_click_to_activate =
- (strncmp (gconf_value_get_string (value), "single", 6) == 0);
-}
-
-void
-columns_changed_cb (GtkTreeView * treeview,
- gpointer user_data)
-{
- GSList * order = tracker_search_get_columns_order (treeview);
-
- if (g_slist_length (order) == NUM_VISIBLE_COLUMNS) {
- tracker_search_gconf_set_list ("/apps/tracker-search-tool/columns_order", order, GCONF_VALUE_INT);
- }
- g_slist_free (order);
-}
-
-gboolean
-window_state_event_cb (GtkWidget * widget,
- GdkEventWindowState * event,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
-
- if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) {
- gsearch->is_window_maximized = TRUE;
- } else {
- gsearch->is_window_maximized = FALSE;
- }
- return FALSE;
-}
-
-void
-suggest_search_cb (GtkWidget * widget,
- gpointer data)
-{
- GSearchWindow * gsearch = data;
- gchar * suggest = g_object_get_data (G_OBJECT (widget), "suggestion");
-
- gtk_entry_set_text (GTK_ENTRY (gsearch->search_entry), suggest);
- gtk_button_clicked (GTK_BUTTON (gsearch->find_button));
-}
diff --git a/src/tracker-search-tool/tracker-search-tool-callbacks.h b/src/tracker-search-tool/tracker-search-tool-callbacks.h
deleted file mode 100644
index 16e03785e..000000000
--- a/src/tracker-search-tool/tracker-search-tool-callbacks.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * GNOME Search Tool
- *
- * File: tracker_search-callbacks.h
- *
- * (C) 2002 the Free Software Foundation
- *
- * Authors: Dennis Cranston <dennis_cranston@yahoo.com>
- * George Lebl
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _GSEARCHTOOL_CALLBACKS_H_
-#define _GSEARCHTOOL_CALLBACKS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif
-
-
-void
-tracker_update_metadata_tile (GSearchWindow *gsearch);
-
-void
-die_cb (GnomeClient * client,
- gpointer data);
-void
-quit_cb (GtkWidget * widget,
- GdkEvent * event,
- gpointer data);
-void
-click_close_cb (GtkWidget * widget,
- gpointer data);
-
-void
-click_stop_cb (GtkWidget * widget,
- gpointer data);
-void
-click_help_cb (GtkWidget * widget,
- gpointer data);
-void
-click_expander_cb (GObject * object,
- GParamSpec * param_spec,
- gpointer data);
-void
-size_allocate_cb (GtkWidget * widget,
- GtkAllocation * allocation,
- gpointer data);
-void
-add_constraint_cb (GtkWidget * widget,
- gpointer data);
-void
-remove_constraint_cb (GtkWidget * widget,
- gpointer data);
-void
-constraint_activate_cb (GtkWidget * widget,
- gpointer data);
-void
-constraint_update_info_cb (GtkWidget * widget,
- gpointer data);
-void
-name_contains_activate_cb (GtkWidget * widget,
- gpointer data);
-
-gboolean
-text_changed_cb (GtkWidget * widget,
- gpointer data);
-
-void
-click_find_cb (GtkWidget * widget,
- gpointer data);
-void
-next_results_cb (GtkWidget * widget,
- gpointer data);
-void
-prev_results_cb (GtkWidget * widget,
- gpointer data);
-
-void
-category_changed_cb (GtkTreeSelection * treeselection,
- gpointer data) ;
-
-void
-open_file_cb (GtkAction * action,
- gpointer data);
-void
-open_folder_cb (GtkAction * action,
- gpointer data);
-void
-file_changed_cb (GnomeVFSMonitorHandle * handle,
- const gchar * monitor_uri,
- const gchar * info_uri,
- GnomeVFSMonitorEventType event_type,
- gpointer data);
-void
-move_to_trash_cb (GtkAction * action,
- gpointer data);
-void
-drag_begin_file_cb (GtkWidget * widget,
- GdkDragContext * context,
- gpointer data);
-void
-drag_file_cb (GtkWidget * widget,
- GdkDragContext * context,
- GtkSelectionData * selection_data,
- guint info,
- guint time,
- gpointer data);
-void
-drag_data_animation_cb (GtkWidget * widget,
- GdkDragContext * context,
- GtkSelectionData * selection_data,
- guint info,
- guint time,
- gpointer data);
-void
-show_file_selector_cb (GtkAction * action,
- gpointer data);
-void
-save_results_cb (GtkWidget * chooser,
- gint response,
- gpointer data);
-
-
-void
-select_changed_cb (GtkTreeSelection *treeselection, gpointer user_data);
-
-void
-save_session_cb (GnomeClient * client,
- gint phase,
- GnomeRestartStyle save_style,
- gint shutdown,
- GnomeInteractStyle interact_style,
- gint fast,
- gpointer client_data);
-gboolean
-key_press_cb (GtkWidget * widget,
- GdkEventKey * event,
- gpointer data);
-gboolean
-file_button_release_event_cb (GtkWidget * widget,
- GdkEventButton * event,
- gpointer data);
-gboolean
-file_event_after_cb (GtkWidget * widget,
- GdkEventButton * event,
- gpointer data);
-gboolean
-file_button_press_event_cb (GtkWidget * widget,
- GdkEventButton * event,
- gpointer data);
-gboolean
-file_key_press_event_cb (GtkWidget * widget,
- GdkEventKey * event,
- gpointer data);
-gboolean
-file_motion_notify_cb (GtkWidget *widget,
- GdkEventMotion *event,
- gpointer user_data);
-gboolean
-file_leave_notify_cb (GtkWidget *widget,
- GdkEventCrossing *event,
- gpointer user_data);
-gboolean
-not_running_timeout_cb (gpointer data);
-
-void
-disable_quick_search_cb (GtkWidget * dialog,
- gint response,
- gpointer data);
-void
-single_click_to_activate_key_changed_cb (GConfClient * client,
- guint cnxn_id,
- GConfEntry * entry,
- gpointer user_data);
-void
-columns_changed_cb (GtkTreeView * treeview,
- gpointer user_data);
-gboolean
-window_state_event_cb (GtkWidget * widget,
- GdkEventWindowState * event,
- gpointer data);
-
-void
-suggest_search_cb (GtkWidget *widget,
- gpointer data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _GSEARCHTOOL_CALLBACKS_H_ */
diff --git a/src/tracker-search-tool/tracker-search-tool-support.c b/src/tracker-search-tool/tracker-search-tool-support.c
deleted file mode 100644
index 61892a4e4..000000000
--- a/src/tracker-search-tool/tracker-search-tool-support.c
+++ /dev/null
@@ -1,1579 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * GNOME Search Tool
- *
- * File: tracker_search-support.c
- *
- * (C) 2002 the Free Software Foundation
- *
- * Authors: Dennis Cranston <dennis_cranston@yahoo.com>
- * George Lebl
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <glib/gi18n.h>
-#include <glib/gdate.h>
-#include <regex.h>
-#include <gdk/gdkx.h>
-#include <libart_lgpl/art_rgb.h>
-#include <libgnomevfs/gnome-vfs-mime.h>
-#include <libgnomevfs/gnome-vfs-mime-handlers.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libgnome/gnome-desktop-item.h>
-#include <libgnomeui/gnome-thumbnail.h>
-
-#include <gnome.h>
-
-#include "tracker-search-tool.h"
-#include "tracker-search-tool-callbacks.h"
-#include "tracker-search-tool-support.h"
-
-#define C_STANDARD_STRFTIME_CHARACTERS "aAbBcdHIjmMpSUwWxXyYZ"
-#define C_STANDARD_NUMERIC_STRFTIME_CHARACTERS "dHIjmMSUwWyY"
-#define SUS_EXTENDED_STRFTIME_MODIFIERS "EO"
-#define BINARY_EXEC_MIME_TYPE "application/x-executable"
-#define MAX_SYMLINKS_FOLLOWED 32
-#define GSEARCH_DATE_FORMAT_LOCALE "locale"
-#define GSEARCH_DATE_FORMAT_ISO "iso"
-
-gboolean
-tracker_is_empty_string (const gchar *s)
-{
- return s == NULL || s[0] == '\0';
-}
-
-/* START OF THE GCONF FUNCTIONS */
-
-static gboolean
-tracker_search_gconf_handle_error (GError ** error)
-{
- if (error != NULL) {
- if (*error != NULL) {
- g_warning (_("GConf error:\n %s"), (*error)->message);
- g_error_free (*error);
- *error = NULL;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static GConfClient *
-tracker_search_gconf_client_get_global (void)
-{
- static GConfClient * global_gconf_client = NULL;
-
- /* Initialize gconf if needed */
- if (!gconf_is_initialized ()) {
- gchar *argv[] = { "tracker_search-preferences", NULL };
- GError *error = NULL;
-
- if (!gconf_init (1, argv, &error)) {
- if (tracker_search_gconf_handle_error (&error)) {
- return NULL;
- }
- }
- }
-
- if (global_gconf_client == NULL) {
- global_gconf_client = gconf_client_get_default ();
- }
-
- return global_gconf_client;
-}
-
-gchar *
-tracker_search_gconf_get_string (const gchar * key)
-{
- GConfClient * client;
- GError * error = NULL;
- gchar * result;
-
- g_return_val_if_fail (key != NULL, NULL);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_val_if_fail (client != NULL, NULL);
-
- result = gconf_client_get_string (client, key, &error);
-
- if (tracker_search_gconf_handle_error (&error)) {
- result = g_strdup ("");
- }
-
- return result;
-}
-
-GSList *
-tracker_search_gconf_get_list (const gchar * key,
- GConfValueType list_type)
-{
- GConfClient * client;
- GError * error = NULL;
- GSList * result;
-
- g_return_val_if_fail (key != NULL, FALSE);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_val_if_fail (client != NULL, NULL);
-
- result = gconf_client_get_list (client, key, list_type, &error);
-
- if (tracker_search_gconf_handle_error (&error)) {
- result = NULL;
- }
-
- return result;
-}
-
-void
-tracker_search_gconf_set_list (const gchar * key,
- GSList * list,
- GConfValueType list_type)
-{
- GConfClient * client;
- GError * error = NULL;
-
- g_return_if_fail (key != NULL);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_if_fail (client != NULL);
-
- gconf_client_set_list (client, key, list_type, list, &error);
-
- tracker_search_gconf_handle_error (&error);
-}
-
-gint
-tracker_search_gconf_get_int (const gchar * key)
-{
- GConfClient * client;
- GError * error = NULL;
- gint result;
-
- g_return_val_if_fail (key != NULL, FALSE);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_val_if_fail (client != NULL, FALSE);
-
- result = gconf_client_get_int (client, key, &error);
-
- if (tracker_search_gconf_handle_error (&error)) {
- result = 0;
- }
-
- return result;
-}
-
-void
-tracker_search_gconf_set_int (const gchar * key,
- const gint value)
-{
- GConfClient * client;
- GError * error = NULL;
-
- g_return_if_fail (key != NULL);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_if_fail (client != NULL);
-
- gconf_client_set_int (client, key, value, &error);
-
- tracker_search_gconf_handle_error (&error);
-}
-
-gboolean
-tracker_search_gconf_get_boolean (const gchar * key)
-{
- GConfClient * client;
- GError * error = NULL;
- gboolean result;
-
- g_return_val_if_fail (key != NULL, FALSE);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_val_if_fail (client != NULL, FALSE);
-
- result = gconf_client_get_bool (client, key, &error);
-
- if (tracker_search_gconf_handle_error (&error)) {
- result = FALSE;
- }
-
- return result;
-}
-
-void
-tracker_search_gconf_set_boolean (const gchar * key,
- const gboolean flag)
-{
- GConfClient * client;
- GError * error = NULL;
-
- g_return_if_fail (key != NULL);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_if_fail (client != NULL);
-
- gconf_client_set_bool (client, key, flag, &error);
-
- tracker_search_gconf_handle_error (&error);
-}
-
-void
-tracker_search_gconf_add_dir (const gchar * dir)
-{
- GConfClient * client;
- GError * error = NULL;
-
- g_return_if_fail (dir != NULL);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_if_fail (client != NULL);
-
- gconf_client_add_dir (client,
- dir,
- GCONF_CLIENT_PRELOAD_RECURSIVE,
- &error);
-
- tracker_search_gconf_handle_error (&error);
-}
-
-void
-tracker_search_gconf_watch_key (const gchar * dir,
- const gchar * key,
- GConfClientNotifyFunc callback,
- gpointer user_data)
-{
- GConfClient * client;
- GError * error = NULL;
-
- g_return_if_fail (key != NULL);
- g_return_if_fail (dir != NULL);
-
- client = tracker_search_gconf_client_get_global ();
- g_return_if_fail (client != NULL);
-
- gconf_client_add_dir (client,
- dir,
- GCONF_CLIENT_PRELOAD_NONE,
- &error);
-
- tracker_search_gconf_handle_error (&error);
-
- gconf_client_notify_add (client,
- key,
- callback,
- user_data,
- NULL,
- &error);
-
- tracker_search_gconf_handle_error (&error);
-}
-
-/* START OF GENERIC GNOME-SEARCH-TOOL FUNCTIONS */
-
-gboolean
-is_path_hidden (const gchar * path)
-{
- gint results = FALSE;
- gchar * sub_str;
- gchar * hidden_path_substr = g_strconcat (G_DIR_SEPARATOR_S, ".", NULL);
-
- sub_str = g_strstr_len (path, strlen (path), hidden_path_substr);
-
- if (sub_str != NULL) {
- gchar * gnome_desktop_str;
-
- gnome_desktop_str = g_strconcat (G_DIR_SEPARATOR_S, ".gnome-desktop", G_DIR_SEPARATOR_S, NULL);
-
- /* exclude the .gnome-desktop folder */
- if (strncmp (sub_str, gnome_desktop_str, strlen (gnome_desktop_str)) == 0) {
- sub_str++;
- results = (g_strstr_len (sub_str, strlen (sub_str), hidden_path_substr) != NULL);
- }
- else {
- results = TRUE;
- }
-
- g_free (gnome_desktop_str);
- }
-
- g_free (hidden_path_substr);
- return results;
-}
-
-gboolean
-is_quick_search_excluded_path (const gchar * path)
-{
- GSList * exclude_path_list;
- GSList * tmp_list;
- gchar * dir;
- gboolean results = FALSE;
-
- dir = g_strdup (path);
-
- /* Remove trailing G_DIR_SEPARATOR. */
- if ((strlen (dir) > 1) && (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == TRUE)) {
- dir[strlen (dir) - 1] = '\0';
- }
-
- /* Always exclude a path that is symbolic link. */
- if (g_file_test (dir, G_FILE_TEST_IS_SYMLINK)) {
- g_free (dir);
-
- return TRUE;
- }
- g_free (dir);
-
- /* Check path against the Quick-Search-Excluded-Paths list. */
- exclude_path_list = tracker_search_gconf_get_list ("/apps/tracker-search-tool/quick_search_excluded_paths",
- GCONF_VALUE_STRING);
-
- for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) {
-
- gchar * dir;
-
- /* Skip empty or null values. */
- if (tracker_is_empty_string (tmp_list->data)) {
- continue;
- }
-
- dir = g_strdup (tmp_list->data);
-
- /* Wild-card comparisons. */
- if (g_strstr_len (dir, strlen (dir), "*") != NULL) {
-
- if (g_pattern_match_simple (dir, path) == TRUE) {
-
- results = TRUE;
- g_free (dir);
- break;
- }
- }
- /* Non-wild-card comparisons. */
- else {
- /* Add a trailing G_DIR_SEPARATOR. */
- if (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == FALSE) {
-
- gchar *tmp;
-
- tmp = dir;
- dir = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL);
- g_free (tmp);
- }
-
- if (strcmp (path, dir) == 0) {
-
- results = TRUE;
- g_free (dir);
- break;
- }
- }
- g_free (dir);
- }
-
- for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) {
- g_free (tmp_list->data);
- }
- g_slist_free (exclude_path_list);
-
- return results;
-}
-
-gboolean
-is_second_scan_excluded_path (const gchar * path)
-{
- GSList * exclude_path_list;
- GSList * tmp_list;
- gchar * dir;
- gboolean results = FALSE;
-
- dir = g_strdup (path);
-
- /* Remove trailing G_DIR_SEPARATOR. */
- if ((strlen (dir) > 1) && (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == TRUE)) {
- dir[strlen (dir) - 1] = '\0';
- }
-
- /* Always exclude a path that is symbolic link. */
- if (g_file_test (dir, G_FILE_TEST_IS_SYMLINK)) {
- g_free (dir);
-
- return TRUE;
- }
- g_free (dir);
-
- /* Check path against the Quick-Search-Excluded-Paths list. */
- exclude_path_list = tracker_search_gconf_get_list ("/apps/tracker-search-tool/quick_search_second_scan_excluded_paths",
- GCONF_VALUE_STRING);
-
- for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) {
-
- gchar * dir;
-
- /* Skip empty or null values. */
- if (tracker_is_empty_string (tmp_list->data)) {
- continue;
- }
-
- dir = g_strdup (tmp_list->data);
-
- /* Wild-card comparisons. */
- if (g_strstr_len (dir, strlen (dir), "*") != NULL) {
-
- if (g_pattern_match_simple (dir, path) == TRUE) {
-
- results = TRUE;
- g_free (dir);
- break;
- }
- }
- /* Non-wild-card comparisons. */
- else {
- /* Add a trailing G_DIR_SEPARATOR. */
- if (g_str_has_suffix (dir, G_DIR_SEPARATOR_S) == FALSE) {
-
- gchar *tmp;
-
- tmp = dir;
- dir = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL);
- g_free (tmp);
- }
-
- if (strcmp (path, dir) == 0) {
-
- results = TRUE;
- g_free (dir);
- break;
- }
- }
- g_free (dir);
- }
-
- for (tmp_list = exclude_path_list; tmp_list; tmp_list = tmp_list->next) {
- g_free (tmp_list->data);
- }
- g_slist_free (exclude_path_list);
-
- return results;
-}
-
-gboolean
-compare_regex (const gchar * regex,
- const gchar * string)
-{
- regex_t regexec_pattern;
-
- if (regex == NULL) {
- return TRUE;
- }
-
- if (!regcomp (&regexec_pattern, regex, REG_NOSUB)) {
- if (regexec (&regexec_pattern, string, 0, 0, 0) != REG_NOMATCH) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-gboolean
-limit_string_to_x_lines (GString * string,
- gint x)
-{
- int i;
- int count = 0;
- for (i = 0; string->str[i] != '\0'; i++) {
- if (string->str[i] == '\n') {
- count++;
- if (count == x) {
- g_string_truncate (string, i);
- return TRUE;
- }
- }
- }
- return FALSE;
-}
-
-gchar *
-tracker_string_replace (const gchar * haystack,
- gchar * needle,
- gchar * replacement)
-{
- GString * str;
- gint pos, needle_len;
-
- g_return_val_if_fail (haystack && needle, NULL);
-
- needle_len = strlen (needle);
-
- str = g_string_new ("");
-
- for (pos = 0; haystack[pos]; pos++)
- {
- if (strncmp (&haystack[pos], needle, needle_len) == 0)
- {
-
- if (replacement) {
- str = g_string_append (str, replacement);
- }
-
- pos += needle_len - 1;
-
- } else {
- str = g_string_append_c (str, haystack[pos]);
- }
- }
-
- return g_string_free (str, FALSE);
-}
-
-static gint
-count_of_char_in_string (const gchar * string,
- const gchar c)
-{
- int cnt = 0;
- for(; *string; string++) {
- if (*string == c) cnt++;
- }
- return cnt;
-}
-
-gchar *
-escape_single_quotes (const gchar * string)
-{
- GString * gs;
-
- if (string == NULL) {
- return NULL;
- }
-
- if (count_of_char_in_string (string, '\'') == 0) {
- return g_strdup(string);
- }
- gs = g_string_new ("");
- for(; *string; string++) {
- if (*string == '\'') {
- g_string_append(gs, "'\\''");
- }
- else {
- g_string_append_c(gs, *string);
- }
- }
- return g_string_free (gs, FALSE);
-}
-
-gchar *
-backslash_special_characters (const gchar * string)
-{
- GString * gs;
-
- if (string == NULL) {
- return NULL;
- }
-
- if ((count_of_char_in_string (string, '\\') == 0) &&
- (count_of_char_in_string (string, '-') == 0)) {
- return g_strdup(string);
- }
- gs = g_string_new ("");
- for(; *string; string++) {
- if (*string == '\\') {
- g_string_append(gs, "\\\\");
- }
- else if (*string == '-') {
- g_string_append(gs, "\\-");
- }
- else {
- g_string_append_c(gs, *string);
- }
- }
- return g_string_free (gs, FALSE);
-}
-
-gchar *
-remove_mnemonic_character (const gchar * string)
-{
- GString * gs;
- gboolean first_mnemonic = TRUE;
-
- if (string == NULL) {
- return NULL;
- }
-
- gs = g_string_new ("");
- for(; *string; string++) {
- if ((first_mnemonic) && (*string == '_')) {
- first_mnemonic = FALSE;
- continue;
- }
- g_string_append_c(gs, *string);
- }
- return g_string_free (gs, FALSE);
-}
-
-gchar *
-get_readable_date (const gchar * format_string,
- const time_t file_time_raw)
-{
- struct tm * file_time;
- gchar * format;
- GDate * today;
- GDate * file_date;
- guint32 file_date_age;
- gchar * readable_date;
-
- file_time = localtime (&file_time_raw);
-
- /* Base format of date column on nautilus date_format key */
- if (format_string != NULL) {
- if (strcmp(format_string, GSEARCH_DATE_FORMAT_LOCALE) == 0) {
- return tracker_search_strdup_strftime ("%c", file_time);
- } else if (strcmp (format_string, GSEARCH_DATE_FORMAT_ISO) == 0) {
- return tracker_search_strdup_strftime ("%Y-%m-%d %H:%M:%S", file_time);
- }
- }
-
- file_date = g_date_new_dmy (file_time->tm_mday,
- file_time->tm_mon + 1,
- file_time->tm_year + 1900);
-
- today = g_date_new ();
- g_date_set_time_t (today, time (NULL));
-
- file_date_age = g_date_get_julian (today) - g_date_get_julian (file_date);
-
- g_date_free (today);
- g_date_free (file_date);
-
- if (file_date_age == 0) {
- /* Translators: Below are the strings displayed in the 'Date Modified'
- column of the list view. The format of this string can vary depending
- on age of a file. Please modify the format of the timestamp to match
- your locale. For example, to display 24 hour time replace the '%-I'
- with '%-H' and remove the '%p'. (See bugzilla report #120434.) */
- format = g_strdup(_("today at %-I:%M %p"));
- } else if (file_date_age == 1) {
- format = g_strdup(_("yesterday at %-I:%M %p"));
- } else if (file_date_age < 7) {
- format = g_strdup(_("%A, %B %-d %Y at %-I:%M:%S %p"));
- } else {
- format = g_strdup(_("%A, %B %-d %Y at %-I:%M:%S %p"));
- }
-
- readable_date = tracker_search_strdup_strftime (format, file_time);
- g_free (format);
-
- return readable_date;
-}
-
-gchar *
-tracker_search_strdup_strftime (const gchar * format,
- struct tm * time_pieces)
-{
- /* This function is borrowed from eel's eel_strdup_strftime() */
- GString * string;
- const char * remainder, * percent;
- char code[4], buffer[512];
- char * piece, * result, * converted;
- size_t string_length;
- gboolean strip_leading_zeros, turn_leading_zeros_to_spaces;
- char modifier;
- int i;
-
- /* Format could be translated, and contain UTF-8 chars,
- * so convert to locale encoding which strftime uses */
- converted = g_locale_from_utf8 (format, -1, NULL, NULL, NULL);
- g_return_val_if_fail (converted != NULL, NULL);
-
- string = g_string_new ("");
- remainder = converted;
-
- /* Walk from % character to % character. */
- for (;;) {
- percent = strchr (remainder, '%');
- if (percent == NULL) {
- g_string_append (string, remainder);
- break;
- }
- g_string_append_len (string, remainder,
- percent - remainder);
-
- /* Handle the "%" character. */
- remainder = percent + 1;
- switch (*remainder) {
- case '-':
- strip_leading_zeros = TRUE;
- turn_leading_zeros_to_spaces = FALSE;
- remainder++;
- break;
- case '_':
- strip_leading_zeros = FALSE;
- turn_leading_zeros_to_spaces = TRUE;
- remainder++;
- break;
- case '%':
- g_string_append_c (string, '%');
- remainder++;
- continue;
- case '\0':
- g_warning ("Trailing %% passed to tracker_search_strdup_strftime");
- g_string_append_c (string, '%');
- continue;
- default:
- strip_leading_zeros = FALSE;
- turn_leading_zeros_to_spaces = FALSE;
- break;
- }
-
- modifier = 0;
- if (strchr (SUS_EXTENDED_STRFTIME_MODIFIERS, *remainder) != NULL) {
- modifier = *remainder;
- remainder++;
-
- if (*remainder == 0) {
- g_warning ("Unfinished %%%c modifier passed to tracker_search_strdup_strftime", modifier);
- break;
- }
- }
-
- if (strchr (C_STANDARD_STRFTIME_CHARACTERS, *remainder) == NULL) {
- g_warning ("tracker_search_strdup_strftime does not support "
- "non-standard escape code %%%c",
- *remainder);
- }
-
- /* Convert code to strftime format. We have a fixed
- * limit here that each code can expand to a maximum
- * of 512 bytes, which is probably OK. There's no
- * limit on the total size of the result string.
- */
- i = 0;
- code[i++] = '%';
- if (modifier != 0) {
-#ifdef HAVE_STRFTIME_EXTENSION
- code[i++] = modifier;
-#endif
- }
- code[i++] = *remainder;
- code[i++] = '\0';
- string_length = strftime (buffer, sizeof (buffer),
- code, time_pieces);
- if (string_length == 0) {
- /* We could put a warning here, but there's no
- * way to tell a successful conversion to
- * empty string from a failure.
- */
- buffer[0] = '\0';
- }
-
- /* Strip leading zeros if requested. */
- piece = buffer;
- if (strip_leading_zeros || turn_leading_zeros_to_spaces) {
- if (strchr (C_STANDARD_NUMERIC_STRFTIME_CHARACTERS, *remainder) == NULL) {
- g_warning ("tracker_search_strdup_strftime does not support "
- "modifier for non-numeric escape code %%%c%c",
- remainder[-1],
- *remainder);
- }
- if (*piece == '0') {
- do {
- piece++;
- } while (*piece == '0');
- if (!g_ascii_isdigit (*piece)) {
- piece--;
- }
- }
- if (turn_leading_zeros_to_spaces) {
- memset (buffer, ' ', piece - buffer);
- piece = buffer;
- }
- }
- remainder++;
-
- /* Add this piece. */
- g_string_append (string, piece);
- }
-
- /* Convert the string back into utf-8. */
- result = g_locale_to_utf8 (string->str, -1, NULL, NULL, NULL);
-
- g_string_free (string, TRUE);
- g_free (converted);
-
- return result;
-}
-
-gchar *
-get_file_type_description (const gchar * file,
- const char *mime,
- GnomeVFSFileInfo * file_info)
-{
- gchar * desc;
-
- if (file == NULL || mime == NULL) {
- return g_strdup (gnome_vfs_mime_get_description (GNOME_VFS_MIME_TYPE_UNKNOWN));
- }
-
- desc = g_strdup (gnome_vfs_mime_get_description (mime));
-
- if (file_info->symlink_name != NULL) {
-
- gchar * absolute_symlink = NULL;
- gchar * str = NULL;
-
- if (g_path_is_absolute (file_info->symlink_name) != TRUE) {
- gchar *dirname;
-
- dirname = g_path_get_dirname (file);
- absolute_symlink = g_strconcat (dirname, G_DIR_SEPARATOR_S, file_info->symlink_name, NULL);
- g_free (dirname);
- }
- else {
- absolute_symlink = g_strdup (file_info->symlink_name);
- }
-
- if (g_file_test (absolute_symlink, G_FILE_TEST_EXISTS) != TRUE) {
- if ((g_ascii_strcasecmp (mime, "x-special/socket") != 0) &&
- (g_ascii_strcasecmp (mime, "x-special/fifo") != 0)) {
- g_free (absolute_symlink);
- g_free (desc);
- return g_strdup (_("link (broken)"));
- }
- }
-
- str = g_strdup_printf (_("link to %s"), (desc != NULL) ? desc : mime);
- g_free (absolute_symlink);
- g_free (desc);
- return str;
- }
- return desc;
-}
-
-
-static GdkPixbuf *
-tracker_search_load_thumbnail_frame (void)
-{
- GdkPixbuf * pixbuf = NULL;
- gchar * image_path;
-
- image_path = tracker_search_pixmap_file ("thumbnail_frame.png");
-
- if (image_path != NULL) {
- pixbuf = gdk_pixbuf_new_from_file (image_path, NULL);
- }
- g_free (image_path);
- return pixbuf;
-}
-
-static void
-tracker_search_draw_frame_row (GdkPixbuf * frame_image,
- gint target_width,
- gint source_width,
- gint source_v_position,
- gint dest_v_position,
- GdkPixbuf * result_pixbuf,
- gint left_offset,
- gint height)
-{
- gint remaining_width;
- gint h_offset;
- gint slab_width;
-
- remaining_width = target_width;
- h_offset = 0;
- while (remaining_width > 0) {
- slab_width = remaining_width > source_width ? source_width : remaining_width;
- gdk_pixbuf_copy_area (frame_image, left_offset, source_v_position, slab_width,
- height, result_pixbuf, left_offset + h_offset, dest_v_position);
- remaining_width -= slab_width;
- h_offset += slab_width;
- }
-}
-
-static void
-tracker_search_draw_frame_column (GdkPixbuf * frame_image,
- gint target_height,
- gint source_height,
- gint source_h_position,
- gint dest_h_position,
- GdkPixbuf * result_pixbuf,
- gint top_offset,
- gint width)
-{
- gint remaining_height;
- gint v_offset;
- gint slab_height;
-
- remaining_height = target_height;
- v_offset = 0;
- while (remaining_height > 0) {
- slab_height = remaining_height > source_height ? source_height : remaining_height;
- gdk_pixbuf_copy_area (frame_image, source_h_position, top_offset, width, slab_height,
- result_pixbuf, dest_h_position, top_offset + v_offset);
- remaining_height -= slab_height;
- v_offset += slab_height;
- }
-}
-
-static GdkPixbuf *
-tracker_search_stretch_frame_image (GdkPixbuf *frame_image,
- gint left_offset,
- gint top_offset,
- gint right_offset,
- gint bottom_offset,
- gint dest_width,
- gint dest_height,
- gboolean fill_flag)
-{
- GdkPixbuf * result_pixbuf;
- guchar * pixels_ptr;
- gint frame_width, frame_height;
- gint y, row_stride;
- gint target_width, target_frame_width;
- gint target_height, target_frame_height;
-
- frame_width = gdk_pixbuf_get_width (frame_image);
- frame_height = gdk_pixbuf_get_height (frame_image);
-
- if (fill_flag) {
- result_pixbuf = gdk_pixbuf_scale_simple (frame_image, dest_width, dest_height, GDK_INTERP_NEAREST);
- } else {
- result_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, dest_width, dest_height);
- }
- row_stride = gdk_pixbuf_get_rowstride (result_pixbuf);
- pixels_ptr = gdk_pixbuf_get_pixels (result_pixbuf);
-
- /* clear the new pixbuf */
- if (fill_flag == FALSE) {
- for (y = 0; y < dest_height; y++) {
- art_rgb_run_alpha (pixels_ptr, 255, 255, 255, 255, dest_width);
- pixels_ptr += row_stride;
- }
- }
-
- target_width = dest_width - left_offset - right_offset;
- target_frame_width = frame_width - left_offset - right_offset;
-
- target_height = dest_height - top_offset - bottom_offset;
- target_frame_height = frame_height - top_offset - bottom_offset;
-
- /* Draw the left top corner and top row */
- gdk_pixbuf_copy_area (frame_image, 0, 0, left_offset, top_offset, result_pixbuf, 0, 0);
- tracker_search_draw_frame_row (frame_image, target_width, target_frame_width, 0, 0,
- result_pixbuf, left_offset, top_offset);
-
- /* Draw the right top corner and left column */
- gdk_pixbuf_copy_area (frame_image, frame_width - right_offset, 0, right_offset, top_offset,
- result_pixbuf, dest_width - right_offset, 0);
- tracker_search_draw_frame_column (frame_image, target_height, target_frame_height, 0, 0,
- result_pixbuf, top_offset, left_offset);
-
- /* Draw the bottom right corner and bottom row */
- gdk_pixbuf_copy_area (frame_image, frame_width - right_offset, frame_height - bottom_offset,
- right_offset, bottom_offset, result_pixbuf, dest_width - right_offset,
- dest_height - bottom_offset);
- tracker_search_draw_frame_row (frame_image, target_width, target_frame_width,
- frame_height - bottom_offset, dest_height - bottom_offset,
- result_pixbuf, left_offset, bottom_offset);
-
- /* Draw the bottom left corner and the right column */
- gdk_pixbuf_copy_area (frame_image, 0, frame_height - bottom_offset, left_offset, bottom_offset,
- result_pixbuf, 0, dest_height - bottom_offset);
- tracker_search_draw_frame_column (frame_image, target_height, target_frame_height,
- frame_width - right_offset, dest_width - right_offset,
- result_pixbuf, top_offset, right_offset);
- return result_pixbuf;
-}
-
-static GdkPixbuf *
-tracker_search_embed_image_in_frame (GdkPixbuf * source_image,
- GdkPixbuf * frame_image,
- gint left_offset,
- gint top_offset,
- gint right_offset,
- gint bottom_offset)
-{
- GdkPixbuf * result_pixbuf;
- gint source_width, source_height;
- gint dest_width, dest_height;
-
- source_width = gdk_pixbuf_get_width (source_image);
- source_height = gdk_pixbuf_get_height (source_image);
-
- dest_width = source_width + left_offset + right_offset;
- dest_height = source_height + top_offset + bottom_offset;
-
- result_pixbuf = tracker_search_stretch_frame_image (frame_image, left_offset, top_offset, right_offset, bottom_offset,
- dest_width, dest_height, FALSE);
-
- gdk_pixbuf_copy_area (source_image, 0, 0, source_width, source_height, result_pixbuf, left_offset, top_offset);
-
- return result_pixbuf;
-}
-
-static void
-tracker_search_thumbnail_frame_image (GdkPixbuf ** pixbuf)
-{
- GdkPixbuf * pixbuf_with_frame;
- GdkPixbuf * frame;
-
- frame = tracker_search_load_thumbnail_frame ();
- if (frame == NULL) {
- return;
- }
-
- pixbuf_with_frame = tracker_search_embed_image_in_frame (*pixbuf, frame, 3, 3, 6, 6);
- g_object_unref (*pixbuf);
- g_object_unref (frame);
-
- *pixbuf = pixbuf_with_frame;
-}
-
-static GdkPixbuf *
-tracker_search_get_thumbnail_image (const gchar * file)
-{
- GdkPixbuf * pixbuf = NULL;
- gchar * thumbnail_path;
- gchar * uri;
-
- uri = gnome_vfs_get_uri_from_local_path (file);
- thumbnail_path = gnome_thumbnail_path_for_uri (uri, GNOME_THUMBNAIL_SIZE_NORMAL);
-
- if (thumbnail_path != NULL) {
- if (g_file_test (thumbnail_path, G_FILE_TEST_EXISTS)) {
-
- GdkPixbuf * thumbnail_pixbuf = NULL;
- gfloat scale_factor_x = 1.0;
- gfloat scale_factor_y = 1.0;
- gint scale_x;
- gint scale_y;
-
- thumbnail_pixbuf = gdk_pixbuf_new_from_file (thumbnail_path, NULL);
- tracker_search_thumbnail_frame_image (&thumbnail_pixbuf);
-
- if (gdk_pixbuf_get_width (thumbnail_pixbuf) > ICON_SIZE) {
- scale_factor_x = (gfloat) ICON_SIZE / (gfloat) gdk_pixbuf_get_width (thumbnail_pixbuf);
- }
- if (gdk_pixbuf_get_height (thumbnail_pixbuf) > ICON_SIZE) {
- scale_factor_y = (gfloat) ICON_SIZE / (gfloat) gdk_pixbuf_get_height (thumbnail_pixbuf);
- }
-
- if (gdk_pixbuf_get_width (thumbnail_pixbuf) > gdk_pixbuf_get_height (thumbnail_pixbuf)) {
- scale_x = ICON_SIZE;
- scale_y = (gint) (gdk_pixbuf_get_height (thumbnail_pixbuf) * scale_factor_x);
- }
- else {
- scale_x = (gint) (gdk_pixbuf_get_width (thumbnail_pixbuf) * scale_factor_y);
- scale_y = ICON_SIZE;
- }
-
- pixbuf = gdk_pixbuf_scale_simple (thumbnail_pixbuf, scale_x, scale_y, GDK_INTERP_BILINEAR);
- g_object_unref (thumbnail_pixbuf);
- }
- g_free (thumbnail_path);
- }
- g_free (uri);
- return pixbuf;
-}
-
-static gchar *
-tracker_search_icon_lookup (GSearchWindow * gsearch,
- const gchar * file,
- const gchar * mime,
- GnomeVFSFileInfo * file_info,
- gboolean enable_thumbnails)
-{
- GnomeIconLookupFlags lookup_flags = GNOME_ICON_LOOKUP_FLAGS_NONE;
- gchar * icon_name = NULL;
- gchar * uri;
-
- uri = gnome_vfs_get_uri_from_local_path (file);
-
- if ((strncmp (mime, "image/", 6) != 0) ||
- ((int)file_info->size < (int)gsearch->show_thumbnails_file_size_limit)) {
- if (gsearch->thumbnail_factory == NULL) {
- gsearch->thumbnail_factory = gnome_thumbnail_factory_new (GNOME_THUMBNAIL_SIZE_NORMAL);
- }
- lookup_flags = GNOME_ICON_LOOKUP_FLAGS_SHOW_SMALL_IMAGES_AS_THEMSELVES |
- GNOME_ICON_LOOKUP_FLAGS_ALLOW_SVG_AS_THEMSELVES;
- }
-
- icon_name = gnome_icon_lookup (gtk_icon_theme_get_default (),
- gsearch->thumbnail_factory,
- uri,
- NULL,
- file_info,
- mime,
- lookup_flags,
- NULL);
- g_free (uri);
- return icon_name;
-}
-
-GdkPixbuf *
-get_file_pixbuf (GSearchWindow * gsearch,
- const gchar * file,
- const char *mime,
- GnomeVFSFileInfo * file_info)
-{
- GdkPixbuf * pixbuf = NULL;
- gchar * icon_name = NULL;
-
- if (file == NULL || mime == NULL) {
- icon_name = g_strdup (ICON_THEME_REGULAR_ICON);
- }
-
- else if ((g_file_test (file, G_FILE_TEST_IS_EXECUTABLE)) &&
- (g_ascii_strcasecmp (mime, "application/x-executable-binary") == 0)) {
- icon_name = g_strdup (ICON_THEME_EXECUTABLE_ICON);
- }
- else if (g_ascii_strcasecmp (mime, "x-special/device-char") == 0) {
- icon_name = g_strdup (ICON_THEME_CHAR_DEVICE);
- }
- else if (g_ascii_strcasecmp (mime, "x-special/device-block") == 0) {
- icon_name = g_strdup (ICON_THEME_BLOCK_DEVICE);
- }
- else if (g_ascii_strcasecmp (mime, "x-special/socket") == 0) {
- icon_name = g_strdup (ICON_THEME_SOCKET);
- }
- else if (g_ascii_strcasecmp (mime, "x-special/fifo") == 0) {
- icon_name = g_strdup (ICON_THEME_FIFO);
- } else {
-
- /* check for thumbnail first */
- GdkPixbuf *thumbnail_pixbuf = tracker_search_get_thumbnail_image (file);
-
- if (thumbnail_pixbuf != NULL) {
-
- if ((gdk_pixbuf_get_width (thumbnail_pixbuf) > ICON_SIZE) ||
- (gdk_pixbuf_get_height (thumbnail_pixbuf) > ICON_SIZE)) {
-
- gfloat scale_factor_x = 1.0;
- gfloat scale_factor_y = 1.0;
- gint scale_x;
- gint scale_y;
-
- if (gdk_pixbuf_get_width (thumbnail_pixbuf) > ICON_SIZE) {
- scale_factor_x = (gfloat) ICON_SIZE / (gfloat) gdk_pixbuf_get_width (thumbnail_pixbuf);
- }
- if (gdk_pixbuf_get_height (thumbnail_pixbuf) > ICON_SIZE) {
- scale_factor_y = (gfloat) ICON_SIZE / (gfloat) gdk_pixbuf_get_height (thumbnail_pixbuf);
- }
-
- if (gdk_pixbuf_get_width (thumbnail_pixbuf) > gdk_pixbuf_get_height (thumbnail_pixbuf)) {
- scale_x = ICON_SIZE;
- scale_y = (gint) (gdk_pixbuf_get_height (thumbnail_pixbuf) * scale_factor_x);
- }
- else {
- scale_x = (gint) (gdk_pixbuf_get_width (thumbnail_pixbuf) * scale_factor_y);
- scale_y = ICON_SIZE;
- }
-
- pixbuf = gdk_pixbuf_scale_simple (thumbnail_pixbuf, scale_x, scale_y, GDK_INTERP_BILINEAR);
- g_object_unref (thumbnail_pixbuf);
-
- return pixbuf;
-
- } else {
- return thumbnail_pixbuf;
- }
-
- }
-
- /* check if image can be generated from file */
-
- if ((strncmp (mime, "image/", 6) == 0)) {
- pixbuf = gdk_pixbuf_new_from_file_at_scale (file, ICON_SIZE, ICON_SIZE, TRUE, NULL);
- }
-
- if (pixbuf) {
- return pixbuf;
- } else {
- icon_name = tracker_search_icon_lookup (gsearch, file, mime, file_info, TRUE);
- }
-
-
- }
-
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), icon_name, ICON_SIZE, 0, NULL);
-
- if (!pixbuf) {
- gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), ICON_THEME_REGULAR_ICON, ICON_SIZE, 0, NULL);
- }
-
-
- g_free (icon_name);
-
-
- return pixbuf;
-}
-
-gboolean
-open_file_with_xdg_open (GtkWidget * window,
- const gchar * file)
-{
- gboolean result;
- gchar *quoted_filename = g_shell_quote (file);
- gchar *command = g_strconcat ("xdg-open ", quoted_filename, NULL);
-
- g_free (quoted_filename);
- result = g_spawn_command_line_async (command, NULL);
- g_free (command);
-
- return result;
-}
-
-gboolean
-open_file_with_nautilus (GtkWidget * window,
- const gchar * file)
-{
- GnomeDesktopItem * ditem;
- GdkScreen * screen;
- GError *error = NULL;
- gchar * command;
- gchar * contents;
- gchar * escaped;
-
- escaped = g_shell_quote (file);
-
- command = g_strconcat ("nautilus ",
- "--sm-disable ",
- "--no-desktop ",
- "--no-default-window ",
- escaped,
- NULL);
-
- contents = g_strdup_printf ("[Desktop Entry]\n"
- "Name=Nautilus\n"
- "Icon=file-manager\n"
- "Exec=%s\n"
- "Terminal=false\n"
- "StartupNotify=true\n"
- "Type=Application\n",
- command);
-
- ditem = gnome_desktop_item_new_from_string (NULL,
- contents,
- strlen (contents),
- GNOME_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS ,
- NULL);
-
- if (ditem == NULL) {
- g_free (contents);
- g_free (command);
- g_free (escaped);
- return FALSE;
- }
-
- screen = gtk_widget_get_screen (window);
-
- gnome_desktop_item_set_launch_time (ditem,
- gtk_get_current_event_time ());
-
- gnome_desktop_item_launch_on_screen (ditem, NULL,
- GNOME_DESKTOP_ITEM_LAUNCH_ONLY_ONE,
- screen, -1, &error);
-
- gnome_desktop_item_unref (ditem);
- g_free (contents);
- g_free (command);
- g_free (escaped);
-
- if (error) {
- g_error_free (error);
- return FALSE;
- }
- return TRUE;
-}
-
-gboolean
-open_file_with_application (GtkWidget * window,
- const gchar * file)
-{
- GnomeVFSMimeApplication * application;
- const char * mime;
-
- mime = gnome_vfs_get_file_mime_type (file, NULL, FALSE);
- application = gnome_vfs_mime_get_default_application (mime);
-
- if (!g_file_test (file, G_FILE_TEST_IS_DIR)) {
- if (application) {
- const char *desktop_file;
- GnomeDesktopItem *ditem;
- GdkScreen *screen;
- GError *error = NULL;
- GList *uris = NULL;
- gboolean result;
- char *uri;
-
- desktop_file = gnome_vfs_mime_application_get_desktop_file_path (application);
-
- uri = gnome_vfs_get_uri_from_local_path (file);
- uris = g_list_append (uris, uri);
-
- if (!g_file_test (desktop_file, G_FILE_TEST_EXISTS)) {
- result = (gnome_vfs_mime_application_launch (application, uris) == GNOME_VFS_OK);
- }
- else {
- result = TRUE;
- ditem = gnome_desktop_item_new_from_file (desktop_file, 0, &error);
- if (error) {
- result = FALSE;
- g_error_free (error);
- }
- else {
- screen = gtk_widget_get_screen (window);
- gnome_desktop_item_set_launch_time (ditem, gtk_get_current_event_time ());
- gnome_desktop_item_launch_on_screen (ditem, uris,
- GNOME_DESKTOP_ITEM_LAUNCH_APPEND_PATHS, screen, -1, &error);
- if (error) {
- result = FALSE;
- g_error_free (error);
- }
- }
- gnome_desktop_item_unref (ditem);
- }
- gnome_vfs_mime_application_free (application);
- g_list_free (uris);
- g_free (uri);
-
- return result;
- }
- }
- return FALSE;
-}
-
-gboolean
-launch_file (const gchar * file)
-{
- const char * mime = gnome_vfs_get_file_mime_type (file, NULL, FALSE);
- gboolean result = FALSE;
-
- if ((g_file_test (file, G_FILE_TEST_IS_EXECUTABLE)) &&
- (g_ascii_strcasecmp (mime, BINARY_EXEC_MIME_TYPE) == 0)) {
- result = g_spawn_command_line_async (file, NULL);
- }
-
- return result;
-}
-
-gchar *
-tracker_search_get_unique_filename (const gchar * path,
- const gchar * suffix)
-{
- const gint num_of_words = 12;
- gchar * words[] = {
- "foo",
- "bar",
- "blah",
- "cranston",
- "frobate",
- "hadjaha",
- "greasy",
- "hammer",
- "eek",
- "larry",
- "curly",
- "moe",
- NULL};
- gchar * retval = NULL;
- gboolean exists = TRUE;
-
- while (exists) {
- gchar * file;
- gint rnd;
- gint word;
-
- rnd = rand ();
- word = rand () % num_of_words;
-
- file = g_strdup_printf ("%s-%010x%s",
- words [word],
- (guint) rnd,
- suffix);
-
- g_free (retval);
- retval = g_strconcat (path, G_DIR_SEPARATOR_S, file, NULL);
- exists = g_file_test (retval, G_FILE_TEST_EXISTS);
- g_free (file);
- }
- return retval;
-}
-
-GtkWidget *
-tracker_search_button_new_with_stock_icon (const gchar * string,
- const gchar * stock_id)
-{
- GtkWidget * align;
- GtkWidget * button;
- GtkWidget * hbox;
- GtkWidget * image;
- GtkWidget * label;
-
- button = gtk_button_new ();
- label = gtk_label_new_with_mnemonic (string);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), GTK_WIDGET (button));
- image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
- hbox = gtk_hbox_new (FALSE, 2);
- align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
- gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
- gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_container_add (GTK_CONTAINER (button), align);
- gtk_container_add (GTK_CONTAINER (align), hbox);
- gtk_widget_show_all (align);
-
- return button;
-}
-
-GSList *
-tracker_search_get_columns_order (GtkTreeView * treeview)
-{
- GSList *order = NULL;
- GList * columns;
- GList * col;
-
- columns = gtk_tree_view_get_columns (treeview);
-
- for (col = columns; col; col = col->next) {
- gint id;
-
- id = gtk_tree_view_column_get_sort_column_id (col->data);
- order = g_slist_prepend (order, GINT_TO_POINTER (id));
- }
- g_list_free (columns);
-
- order = g_slist_reverse (order);
- return order;
-}
-
-GtkTreeViewColumn *
-tracker_search_gtk_tree_view_get_column_with_sort_column_id (GtkTreeView * treeview,
- gint id)
-{
- GtkTreeViewColumn * col = NULL;
- GList * columns;
- GList * it;
-
- columns = gtk_tree_view_get_columns (treeview);
-
- for (it = columns; it; it = it->next) {
- if (gtk_tree_view_column_get_sort_column_id (it->data) == id) {
- col = it->data;
- break;
- }
- }
- g_list_free (columns);
- return col;
-}
-
-void
-tracker_search_set_columns_order (GtkTreeView * treeview)
-{
- GtkTreeViewColumn * last = NULL;
- GSList * order;
- GSList * it;
-
- order = tracker_search_gconf_get_list ("/apps/tracker-search-tool/columns_order", GCONF_VALUE_INT);
-
- for (it = order; it; it = it->next) {
-
- GtkTreeViewColumn * cur;
- gint id;
-
- id = GPOINTER_TO_INT (it->data);
-
- if (id >= 0 && id < NUM_COLUMNS) {
-
- cur = tracker_search_gtk_tree_view_get_column_with_sort_column_id (treeview, id);
-
- if (cur && cur != last) {
- gtk_tree_view_move_column_after (treeview, cur, last);
- last = cur;
- }
- }
- }
- g_slist_free (order);
-}
-
-gint
-tracker_get_stored_separator_position (void)
-{
- gint saved_pos;
-
- saved_pos = tracker_search_gconf_get_int ("/apps/tracker-search-tool/separator_position");
-
- if (saved_pos < 1) {
- return DEFAULT_SEPARATOR_POSITION;
- }
-
- return saved_pos;
-}
-
-void
-tracker_set_stored_separator_position (gint pos)
-{
- tracker_search_gconf_set_int ("/apps/tracker-search-tool/separator_position", pos);
-}
-
-void
-tracker_search_get_stored_window_geometry (gint * width,
- gint * height)
-{
- gint saved_width;
- gint saved_height;
-
- if (width == NULL || height == NULL) {
- return;
- }
-
- saved_width = tracker_search_gconf_get_int ("/apps/tracker-search-tool/default_window_width");
- saved_height = tracker_search_gconf_get_int ("/apps/tracker-search-tool/default_window_height");
-
- if (saved_width < 1) {
- saved_width = DEFAULT_WINDOW_WIDTH;
- }
-
- if (saved_height < 1) {
- saved_height = DEFAULT_WINDOW_HEIGHT;
- }
-
- *width = saved_width;
- *height = saved_height;
-}
-
-void
-tracker_set_atk_relationship(GtkWidget *obj1, int relation_type,
- GtkWidget *obj2)
-{
- AtkObject *atk_obj1, *atk_obj2, *targets[1];
- AtkRelationSet *atk_rel_set;
- AtkRelation *atk_rel;
-
- atk_obj1 = gtk_widget_get_accessible (GTK_WIDGET (obj1));
- atk_obj2 = gtk_widget_get_accessible (GTK_WIDGET (obj2));
- atk_rel_set = atk_object_ref_relation_set (atk_obj1);
- targets[0] = atk_obj2;
- atk_rel = atk_relation_new (targets, 1, relation_type);
- atk_relation_set_add (atk_rel_set, atk_rel);
- g_object_unref (G_OBJECT (atk_rel));
-}
diff --git a/src/tracker-search-tool/tracker-search-tool-support.h b/src/tracker-search-tool/tracker-search-tool-support.h
deleted file mode 100644
index 3710a3dc0..000000000
--- a/src/tracker-search-tool/tracker-search-tool-support.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * GNOME Search Tool
- *
- * File: tracker_search-support.h
- *
- * (C) 2002 the Free Software Foundation
- *
- * Authors: Dennis Cranston <dennis_cranston@yahoo.com>
- * George Lebl
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GSEARCHTOOL_SUPPORT_H_
-#define _GSEARCHTOOL_SUPPORT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif
-
-#include "tracker-search-tool.h"
-
-#define ICON_SIZE 40
-#define ICON_THEME_EXECUTABLE_ICON "application-x-executable"
-#define ICON_THEME_REGULAR_ICON "gnome-fs-regular"
-#define ICON_THEME_CHAR_DEVICE "gnome-fs-chardev"
-#define ICON_THEME_BLOCK_DEVICE "gnome-fs-blockdev"
-#define ICON_THEME_SOCKET "gnome-fs-socket"
-#define ICON_THEME_FIFO "gnome-fs-fifo"
-
-
-gboolean
-tracker_is_empty_string (const gchar *s);
-
-gboolean
-tracker_search_gconf_get_boolean (const gchar * key);
-
-void
-tracker_search_gconf_set_boolean (const gchar * key,
- const gboolean flag);
-
-gint
-tracker_search_gconf_get_int (const gchar * key);
-
-void
-tracker_search_gconf_set_int (const gchar * key,
- const gint value);
-
-gchar *
-tracker_search_gconf_get_string (const gchar * key);
-
-GSList *
-tracker_search_gconf_get_list (const gchar * key,
- GConfValueType list_type);
-
-void
-tracker_search_gconf_set_list (const gchar * key,
- GSList * list,
- GConfValueType list_type);
-
-void
-tracker_search_gconf_add_dir (const gchar * dir);
-
-void
-tracker_search_gconf_watch_key (const gchar * dir,
- const gchar * key,
- GConfClientNotifyFunc callback,
- gpointer user_data);
-
-
-gboolean
-is_path_hidden (const gchar * path);
-
-gboolean
-is_quick_search_excluded_path (const gchar * path);
-
-gboolean
-is_second_scan_excluded_path (const gchar * path);
-
-gboolean
-compare_regex (const gchar * regex,
- const gchar * string);
-
-gboolean
-limit_string_to_x_lines (GString * string,
- gint x);
-
-gchar *
-tracker_string_replace (const gchar * haystack,
- gchar * needle,
- gchar * replacement);
-
-gchar *
-escape_single_quotes (const gchar * string);
-
-gchar *
-backslash_special_characters (const gchar * string);
-
-gchar *
-remove_mnemonic_character (const gchar * string);
-
-
-gchar *
-get_readable_date (const gchar * format_string,
- const time_t file_time_raw);
-
-gchar *
-tracker_search_strdup_strftime (const gchar * format,
- struct tm * time_pieces);
-
-gchar *
-get_file_type_description (const gchar * file,
- const char *mime,
- GnomeVFSFileInfo * file_info);
-
-GdkPixbuf *
-get_file_pixbuf (GSearchWindow * gsearch,
- const gchar * file,
- const char * mime,
- GnomeVFSFileInfo * file_info);
-
-
-gboolean
-open_file_with_xdg_open (GtkWidget * window,
- const gchar * file);
-
-gboolean
-open_file_with_nautilus (GtkWidget * window,
- const gchar * file);
-
-gboolean
-open_file_with_application (GtkWidget * window,
- const gchar * file);
-
-gboolean
-launch_file (const gchar * file);
-
-gchar *
-tracker_search_get_unique_filename (const gchar * path,
- const gchar * suffix);
-
-GtkWidget *
-tracker_search_button_new_with_stock_icon (const gchar * string,
- const gchar * stock_id);
-
-GSList *
-tracker_search_get_columns_order (GtkTreeView * treeview);
-
-void
-tracker_search_set_columns_order (GtkTreeView * treeview);
-
-gint
-tracker_get_stored_separator_position (void);
-
-void
-tracker_set_stored_separator_position (gint pos);
-
-void
-tracker_search_get_stored_window_geometry (gint * width,
- gint * height);
-
-void
-tracker_set_atk_relationship (GtkWidget *obj1,
- int relation_type,
- GtkWidget *obj2);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _GSEARCHTOOL_SUPPORT_H */
diff --git a/src/tracker-search-tool/tracker-search-tool.c b/src/tracker-search-tool/tracker-search-tool.c
deleted file mode 100644
index ae6e2ead6..000000000
--- a/src/tracker-search-tool/tracker-search-tool.c
+++ /dev/null
@@ -1,2279 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * TRACKER Search Tool - modfied from Gnome search tool
- *
- * File: tracker_search_tool.c
- * (C) Me Jamie McCracken
- *
- * Original Copyright:
- * (C) 1998,2002 the Free Software Foundation
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#include <fnmatch.h>
-#ifndef FNM_CASEFOLD
-# define FNM_CASEFOLD 0
-#endif
-
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <glib/gi18n.h>
-#include <gdk/gdkcursor.h>
-#include <libgnomevfs/gnome-vfs-mime.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <gtk/gtk.h>
-
-
-
-#include "tracker-search-tool.h"
-#include "tracker-search-tool-callbacks.h"
-#include "tracker-search-tool-support.h"
-#include "sexy-icon-entry.h"
-#include "../libtracker-gtk/tracker-metadata-tile.h"
-
-#define TRACKER_SEARCH_TOOL_DEFAULT_ICON_SIZE 32
-#define TRACKER_SEARCH_TOOL_STOCK "panel-searchtool"
-#define TRACKER_SEARCH_TOOL_REFRESH_DURATION 50000
-#define LEFT_LABEL_SPACING " "
-
-static GObjectClass * parent_class;
-static TrackerClient *tracker_client;
-
-static gchar **terms = NULL;
-static gchar *service = NULL;
-
-static GOptionEntry options[] = {
- {"service", 's', 0, G_OPTION_ARG_STRING, &service, N_("Search from a specific service"), N_("SERVICE")},
- {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &terms, "search terms", NULL},
- {NULL}
-};
-
-typedef enum {
- SEARCH_CONSTRAINT_TYPE_BOOLEAN,
- SEARCH_CONSTRAINT_TYPE_NUMERIC,
- SEARCH_CONSTRAINT_TYPE_TEXT,
- SEARCH_CONSTRAINT_TYPE_DATE_BEFORE,
- SEARCH_CONSTRAINT_TYPE_DATE_AFTER,
- SEARCH_CONSTRAINT_TYPE_SEPARATOR,
- SEARCH_CONSTRAINT_TYPE_NONE
-} GSearchConstraintType;
-
-typedef struct _GSearchOptionTemplate GSearchOptionTemplate;
-
-
-
-typedef struct {
- GSearchWindow * gsearch;
- char *uri;
- ServiceType type;
-
-} SnippetRow;
-
-
-struct _GSearchOptionTemplate {
- GSearchConstraintType type; /* The available option type */
- gchar * option; /* An option string to pass to the command */
- gchar * desc; /* The description for display */
- gchar * units; /* Optional units for display */
- gboolean is_selected;
-};
-
-
-static char *search_service_types[] = {
-"Files",
-"Folders",
-"Documents",
-"Images",
-"Music",
-"Videos",
-"Text",
-"Development",
-"Other",
-"VFS",
-"VFSFolders",
-"VFSDocuments",
-"VFSImages",
-"VFSMusic",
-"VFSVideos",
-"VFSText",
-"VFSDevelopment",
-"VFSOther",
-"Conversations",
-"Playlists",
-"Applications",
-"Contacts",
-"Emails",
-"EmailAttachments",
-"Appointments",
-"Tasks",
-"Bookmarks",
-"WebHistory",
-"Projects",
-NULL
-};
-
-static service_info_t services[13] = {
-
- { "Emails", N_("Emails"), "stock_mail", NULL, SERVICE_EMAILS, NULL, FALSE, 0, 0},
- { "Files", N_("All Files"), "system-file-manager", NULL, SERVICE_FILES, NULL, FALSE, 0, 0},
- { "Folders", N_("Folders"), "folder", NULL, SERVICE_FOLDERS, NULL, FALSE, 0, 0},
- { "Documents", N_("Documents"), "x-office-document", NULL, SERVICE_DOCUMENTS, NULL, FALSE, 0, 0},
- { "Images", N_("Images"), "image-x-generic", NULL, SERVICE_IMAGES, NULL, FALSE, 0, 0},
- { "Music", N_("Music"), "audio-x-generic", NULL, SERVICE_MUSIC, NULL, FALSE, 0, 0},
- { "Videos", N_("Videos"), "video-x-generic", NULL, SERVICE_VIDEOS, NULL, FALSE, 0, 0},
- { "Text", N_("Text"), "text-x-generic", NULL, SERVICE_TEXT_FILES, NULL, FALSE, 0, 0},
- { "Development", N_("Development"), "applications-development", NULL, SERVICE_DEVELOPMENT_FILES, NULL, FALSE, 0, 0},
- { "Conversations", N_("Chat Logs"), "stock_help-chat", NULL, SERVICE_CONVERSATIONS, NULL, FALSE, 0, 0},
- { "Applications", N_("Applications"), "system-run", NULL, SERVICE_APPLICATIONS, NULL, FALSE, 0, 0},
- { "WebHistory", N_("WebHistory"), "text-html", NULL, SERVICE_WEBHISTORY, NULL, FALSE, 0, 0},
- { NULL, NULL, NULL, NULL, -1, NULL, FALSE, 0, 0},
-};
-
-static GSearchOptionTemplate GSearchOptionTemplates[] = {
- { SEARCH_CONSTRAINT_TYPE_TEXT, NULL, "Contains the _text", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_SEPARATOR, NULL, NULL, NULL, TRUE },
- { SEARCH_CONSTRAINT_TYPE_DATE_BEFORE, "-mtime -%d", "_Date modified less than", "days", FALSE },
- { SEARCH_CONSTRAINT_TYPE_DATE_AFTER, "\\( -mtime +%d -o -mtime %d \\)", "Date modified more than", "days", FALSE },
- { SEARCH_CONSTRAINT_TYPE_SEPARATOR, NULL, NULL, NULL, TRUE },
- { SEARCH_CONSTRAINT_TYPE_NUMERIC, "\\( -size %uc -o -size +%uc \\)", "S_ize at least", "kilobytes", FALSE },
- { SEARCH_CONSTRAINT_TYPE_NUMERIC, "\\( -size %uc -o -size -%uc \\)", "Si_ze at most", "kilobytes", FALSE },
- { SEARCH_CONSTRAINT_TYPE_BOOLEAN, "-size 0c \\( -type f -o -type d \\)", "File is empty", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_SEPARATOR, NULL, NULL, NULL, TRUE },
- { SEARCH_CONSTRAINT_TYPE_TEXT, "-user '%s'", "Owned by _user", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_TEXT, "-group '%s'", "Owned by _group", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_BOOLEAN, "\\( -nouser -o -nogroup \\)", "Owner is unrecognized", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_SEPARATOR, NULL, NULL, NULL, TRUE },
- { SEARCH_CONSTRAINT_TYPE_TEXT, "'!' -name '*%s*'", "Na_me does not contain", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_TEXT, "-regex '%s'", "Name matches regular e_xpression", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_SEPARATOR, NULL, NULL, NULL, TRUE },
- { SEARCH_CONSTRAINT_TYPE_BOOLEAN, "SHOW_HIDDEN_FILES", "Show hidden and backup files", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_BOOLEAN, "-follow", "Follow symbolic links", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_BOOLEAN, "INCLUDE_OTHER_FILESYSTEMS", "Include other filesystems", NULL, FALSE },
- { SEARCH_CONSTRAINT_TYPE_NONE, NULL, NULL, NULL, FALSE}
-};
-
-enum {
- SEARCH_CONSTRAINT_CONTAINS_THE_TEXT,
- SEARCH_CONSTRAINT_TYPE_SEPARATOR_00,
- SEARCH_CONSTRAINT_DATE_MODIFIED_BEFORE,
- SEARCH_CONSTRAINT_DATE_MODIFIED_AFTER,
- SEARCH_CONSTRAINT_TYPE_SEPARATOR_01,
- SEARCH_CONSTRAINT_SIZE_IS_MORE_THAN,
- SEARCH_CONSTRAINT_SIZE_IS_LESS_THAN,
- SEARCH_CONSTRAINT_FILE_IS_EMPTY,
- SEARCH_CONSTRAINT_TYPE_SEPARATOR_02,
- SEARCH_CONSTRAINT_OWNED_BY_USER,
- SEARCH_CONSTRAINT_OWNED_BY_GROUP,
- SEARCH_CONSTRAINT_OWNER_IS_UNRECOGNIZED,
- SEARCH_CONSTRAINT_TYPE_SEPARATOR_03,
- SEARCH_CONSTRAINT_FILE_IS_NOT_NAMED,
- SEARCH_CONSTRAINT_FILE_MATCHES_REGULAR_EXPRESSION,
- SEARCH_CONSTRAINT_TYPE_SEPARATOR_04,
- SEARCH_CONSTRAINT_SHOW_HIDDEN_FILES_AND_FOLDERS,
- SEARCH_CONSTRAINT_FOLLOW_SYMBOLIC_LINKS,
- SEARCH_CONSTRAINT_SEARCH_OTHER_FILESYSTEMS,
- SEARCH_CONSTRAINT_MAXIMUM_POSSIBLE
-};
-
-static GtkTargetEntry GSearchDndTable[] = {
- { "text/uri-list", 0, 1 },
- { "text/plain", 0, 0 },
- { "STRING", 0, 0 }
-};
-
-static guint GSearchTotalDnds = sizeof (GSearchDndTable) / sizeof (GSearchDndTable[0]);
-
-
-static GtkActionEntry GSearchUiEntries[] = {
- { "Open", GTK_STOCK_OPEN, N_("_Open"), NULL, NULL, NULL },
- { "OpenFolder", GTK_STOCK_OPEN, N_("O_pen Folder"), NULL, NULL, NULL },
- { "MoveToTrash", GTK_STOCK_DELETE, N_("Mo_ve to Trash"), NULL, NULL, NULL },
- { "SaveResultsAs", GTK_STOCK_SAVE_AS, N_("_Save Results As..."), NULL, NULL, NULL },
-};
-
-static const char * GSearchUiDescription =
-"<ui>"
-" <popup name='PopupMenu'>"
-" <menuitem action='Open'/>"
-" <menuitem action='OpenFolder'/>"
-" <separator/>"
-" <menuitem action='MoveToTrash'/>"
-" <separator/>"
-" <menuitem action='SaveResultsAs'/>"
-" </popup>"
-"</ui>";
-
-static void set_snippet (gchar * snippet, GError *error, gpointer user_data);
-
-static void
-display_dialog_character_set_conversion_error (GtkWidget * window,
- gchar * string,
- GError * error)
-{
- GtkWidget * dialog;
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Character set conversion failed for \"%s\""),
- string);
-
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- (error == NULL) ? " " : error->message);
-
- gtk_window_set_title (GTK_WINDOW (dialog), "");
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
-
- gtk_widget_show (dialog);
-}
-
-static void
-display_error_dialog (GtkWidget * window,
- const char *error)
-{
- GtkWidget * dialog;
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (window),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("The following error has occurred :"));
-
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), error);
-
- gtk_window_set_title (GTK_WINDOW (dialog), _("Error"));
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 14);
-
- g_signal_connect (G_OBJECT (dialog),
- "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
-
- gtk_widget_show (dialog);
-}
-
-static void
-start_animation (GSearchWindow * gsearch,
- gboolean first_pass)
-{
- if (first_pass == TRUE) {
-
- gsearch->focus = gtk_window_get_focus (GTK_WINDOW (gsearch->window));
-
- gtk_widget_set_sensitive (gsearch->find_button, FALSE);
- if (gsearch->type < 10) {
- gtk_widget_set_sensitive (gsearch->search_results_save_results_as_item, FALSE);
- }
- gtk_widget_set_sensitive (gsearch->search_results_vbox, TRUE);
- gtk_widget_set_sensitive (GTK_WIDGET (gsearch->search_results_tree_view), TRUE);
-
- gtk_widget_set_sensitive (gsearch->name_and_folder_table, FALSE);
- }
-}
-
-static void
-stop_animation (GSearchWindow * gsearch)
-{
- gtk_window_set_default (GTK_WINDOW (gsearch->window), gsearch->find_button);
- gtk_widget_set_sensitive (gsearch->name_and_folder_table, TRUE);
- gtk_widget_set_sensitive (gsearch->find_button, TRUE);
- if (gsearch->type < 10) {
- gtk_widget_set_sensitive (gsearch->search_results_save_results_as_item, TRUE);
- }
- gtk_widget_show (gsearch->find_button);
-
-
- if (gtk_window_get_focus (GTK_WINDOW (gsearch->window)) == NULL) {
- gtk_window_set_focus (GTK_WINDOW (gsearch->window), gsearch->focus);
- }
-}
-
-static gboolean
-process_snippets (GSearchWindow * gsearch)
-{
- if (!gsearch->snippet_queue || g_queue_is_empty (gsearch->snippet_queue)) {
- return FALSE;
- }
-
- SnippetRow *snippet = g_queue_pop_head (gsearch->snippet_queue);
-
- tracker_search_get_snippet_async (tracker_client, snippet->type, snippet->uri, gsearch->search_term, set_snippet, snippet);
-
- return FALSE;
-}
-
-gchar *
-build_search_command (GSearchWindow * gsearch,
- gboolean first_pass)
-{
- GString * command;
- GError * error = NULL;
- gchar * file_is_named_utf8;
- gchar * file_is_named_locale;
-
-
- gsearch->show_thumbnails = TRUE;
-
- file_is_named_utf8 = g_strdup ((gchar *) gtk_entry_get_text (GTK_ENTRY (gsearch->search_entry)));
-
- if (!file_is_named_utf8 || !*file_is_named_utf8) {
- g_free (file_is_named_utf8);
- file_is_named_utf8 = g_strdup ("");
-
- } else {
- gchar * locale;
-
- locale = g_locale_from_utf8 (file_is_named_utf8, -1, NULL, NULL, &error);
- if (locale == NULL) {
-
- display_dialog_character_set_conversion_error (gsearch->window, file_is_named_utf8, error);
- g_free (file_is_named_utf8);
- g_error_free (error);
- return NULL;
- }
-
- g_free (locale);
- }
-
- file_is_named_locale = g_locale_from_utf8 (file_is_named_utf8, -1, NULL, NULL, &error);
- if (file_is_named_locale == NULL) {
-
- display_dialog_character_set_conversion_error (gsearch->window, file_is_named_utf8, error);
- g_free (file_is_named_utf8);
- g_error_free (error);
- return NULL;
- }
-
- command = g_string_new (file_is_named_utf8);
-
-
- gsearch->command_details->is_command_show_hidden_files_enabled = FALSE;
- gsearch->command_details->name_contains_regex_string = NULL;
- gsearch->search_results_date_format_string = NULL;
- gsearch->command_details->name_contains_pattern_string = NULL;
-
- gsearch->command_details->is_command_first_pass = first_pass;
- if (gsearch->command_details->is_command_first_pass == TRUE) {
- gsearch->command_details->is_command_using_quick_mode = FALSE;
- }
-
-
- gsearch->show_thumbnails = TRUE;
- gsearch->show_thumbnails_file_size_limit = tracker_search_gconf_get_int ("/apps/nautilus/preferences/thumbnail_limit");
-
-
- return g_string_free (command, FALSE);
-}
-
-static void
-free_snippet (SnippetRow * snippet_row)
-{
- g_free (snippet_row->uri);
- g_free (snippet_row);
-}
-
-static void
-set_snippet (gchar * snippet,
- GError * error,
- gpointer user_data)
-{
- gchar *snippet_markup;
- GtkTreeIter iter;
- SnippetRow *snippet_row = user_data;
-
- g_return_if_fail (error == NULL);
-
- snippet_markup = g_strdup_printf ("<span size='small'>%s</span>", snippet);
-
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (snippet_row->gsearch->search_results_list_store), &iter)) {
-
- while (TRUE) {
-
- gchar *uri;
-
- gtk_tree_model_get (GTK_TREE_MODEL (snippet_row->gsearch->search_results_list_store), &iter,
- COLUMN_URI, &uri,
- -1);
-
- if ( (strcmp (snippet_row->uri, uri) == 0)) {
- gtk_list_store_set (GTK_LIST_STORE (snippet_row->gsearch->search_results_list_store), &iter, COLUMN_SNIPPET, snippet_markup, -1);
- g_free (uri);
- break;
- } else {
- g_free (uri);
-
- if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (snippet_row->gsearch->search_results_list_store), &iter)) {
- break;
- }
- }
- }
- }
-
- if (!g_queue_is_empty (snippet_row->gsearch->snippet_queue)) {
- g_idle_add ((GSourceFunc) process_snippets, snippet_row->gsearch);
- }
-
- free_snippet (snippet_row);
-
- g_free (snippet_markup);
-}
-
-static void
-add_email_to_search_results (const gchar * uri,
- const gchar * mime,
- const gchar * subject,
- const gchar * sender,
- GtkListStore * store,
- GtkTreeIter * iter,
- GSearchWindow * gsearch)
-{
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (gsearch->search_results_tree_view), FALSE);
-
- gtk_list_store_append (GTK_LIST_STORE (store), iter);
- gtk_list_store_set (GTK_LIST_STORE (store), iter,
- COLUMN_ICON, gsearch->email_pixbuf,
- COLUMN_URI, uri,
- COLUMN_NAME, subject,
- COLUMN_PATH, sender,
- COLUMN_MIME, mime,
- COLUMN_TYPE, SERVICE_EMAILS,
- COLUMN_NO_FILES_FOUND, FALSE,
- -1);
-
- gchar * search_term;
-
- if (gsearch->search_term) {
- search_term = gsearch->search_term;
- } else {
- search_term = "";
- }
-
- SnippetRow * snippet_row;
-
- snippet_row = g_new (SnippetRow, 1);
- snippet_row->gsearch = gsearch;
- snippet_row->uri = g_strdup (uri);
- snippet_row->type = SERVICE_EMAILS;
-
- g_queue_push_tail (gsearch->snippet_queue, snippet_row);
- //tracker_search_get_snippet_async (tracker_client, SERVICE_EMAILS, uri, search_term, set_snippet, snippet_row);
-}
-
-static void
-add_file_to_search_results (const gchar * file,
- ServiceType service_type,
- const gchar * mime,
- GtkListStore * store,
- GtkTreeIter * iter,
- GSearchWindow * gsearch)
-{
- GdkPixbuf * pixbuf;
- GnomeVFSFileInfo * vfs_file_info;
-
- gchar * description;
- gchar * base_name;
- gchar * dir_name;
- gchar * escape_path_string;
- gchar * uri;
-
- uri = g_filename_from_utf8 (file, -1, NULL, NULL, NULL);
-
- if (!g_file_test (uri, G_FILE_TEST_EXISTS)) {
- g_warning ("file %s does not exist", file);
- g_free (uri);
- return;
- }
-
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (gsearch->search_results_tree_view), FALSE);
-
- vfs_file_info = gnome_vfs_file_info_new ();
-
- escape_path_string = gnome_vfs_escape_path_string (uri);
-
- gnome_vfs_get_file_info (escape_path_string, vfs_file_info,
- GNOME_VFS_FILE_INFO_DEFAULT |
- GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-
-
- pixbuf = get_file_pixbuf (gsearch, uri, mime, vfs_file_info);
-
- description = get_file_type_description (uri, mime, vfs_file_info);
-
- if (!description) {
- description = g_strdup (mime);
- }
-
- base_name = g_path_get_basename (file);
- dir_name = g_path_get_dirname (file);
-
- gchar * search_term;
-
- if (gsearch->search_term) {
- search_term = gsearch->search_term;
- } else {
- search_term = NULL;
- }
-
- gtk_list_store_append (GTK_LIST_STORE (store), iter);
- gtk_list_store_set (GTK_LIST_STORE (store), iter,
- COLUMN_ICON, pixbuf,
- COLUMN_URI, file,
- COLUMN_NAME, base_name,
- COLUMN_PATH, dir_name,
- COLUMN_MIME, (description != NULL) ? description : mime,
- COLUMN_TYPE, service_type,
- COLUMN_NO_FILES_FOUND, FALSE,
- -1);
-
- if (search_term &&
- (service_type == SERVICE_DOCUMENTS ||
- service_type == SERVICE_TEXT_FILES ||
- service_type == SERVICE_DEVELOPMENT_FILES ||
- gsearch->type == SERVICE_CONVERSATIONS)) {
-
- SnippetRow * snippet_row;
-
- snippet_row = g_new (SnippetRow, 1);
- snippet_row->gsearch = gsearch;
- snippet_row->uri = g_strdup (uri);
- snippet_row->type = service_type;
-
- g_queue_push_tail (gsearch->snippet_queue, snippet_row);
- }
-
- gnome_vfs_file_info_unref (vfs_file_info);
- g_free (base_name);
- g_free (dir_name);
- g_free (uri);
- g_free (escape_path_string);
- g_free (description);
-}
-
-static void
-add_application_to_search_results (const gchar * uri,
- gchar * display_name,
- const gchar * exec,
- const gchar * icon,
- GtkListStore * store,
- GtkTreeIter * iter,
- GSearchWindow * gsearch)
-{
- GdkPixbuf * pixbuf = NULL;
-
- if (!g_file_test (uri, G_FILE_TEST_EXISTS)) {
- return;
- }
-
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (gsearch->search_results_tree_view), FALSE);
-
- if (icon && icon[0] && icon[1]) {
-
- /* if icon is a full path then load it from file otherwise its an icon name in a theme */
- if (icon[0] == '/') {
- pixbuf = gdk_pixbuf_new_from_file_at_scale (icon, ICON_SIZE, ICON_SIZE, TRUE, NULL);
- } else {
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), icon,
- ICON_SIZE, 0, NULL);
- }
- }
-
- if (!pixbuf) {
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), ICON_THEME_EXECUTABLE_ICON,
- ICON_SIZE, 0, NULL);
- }
-
-
- gtk_list_store_append (GTK_LIST_STORE (store), iter);
-
- gtk_list_store_set (GTK_LIST_STORE (store), iter,
- COLUMN_ICON, pixbuf,
- COLUMN_URI, uri,
- COLUMN_NAME, display_name,
- COLUMN_PATH, "Application",
- COLUMN_MIME, "",
- COLUMN_TYPE, SERVICE_APPLICATIONS,
- COLUMN_EXEC, exec,
- COLUMN_NO_FILES_FOUND, FALSE,
- -1);
-}
-
-
-static void
-set_suggestion (gchar * suggestion,
- GError * error,
- gpointer user_data)
-{
- gchar * str;
- GtkWidget * label;
- GtkWidget * box1, * box2;
- GtkWidget * button;
- GSearchWindow * gsearch = user_data;
- gchar * search_term = (gchar *) gtk_entry_get_text (GTK_ENTRY (gsearch->search_entry));
-
- if (strcmp (search_term, suggestion) == 0) {
- return;
- }
-
- box1 = gtk_hbox_new (FALSE, 0);
- box2 = gtk_hbox_new (FALSE, 0);
- label = gtk_label_new (_("Did you mean"));
- gtk_box_pack_start (GTK_BOX (box2), label, FALSE, TRUE, 0);
-
- str = g_strconcat ("<b><i><u>", suggestion, "</u></i></b>?", NULL);
- button = gtk_button_new ();
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), str);
- g_free (str);
- gtk_container_add (GTK_CONTAINER (button), label);
- gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (gsearch->no_results), box1, FALSE, FALSE, 12);
- gtk_widget_show_all (box1);
-
-
- g_object_set_data (G_OBJECT (button), "suggestion", suggestion);
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (suggest_search_cb), gsearch);
-}
-
-static void
-add_no_files_found_message (GSearchWindow * gsearch)
-{
- GtkWidget * label;
- gchar * search_term = (gchar *) gtk_entry_get_text (GTK_ENTRY (gsearch->search_entry));
-
- if (!gsearch->no_results) {
- gtk_widget_hide (gsearch->search_results_vbox);
-
- gsearch->no_results = gtk_vbox_new (FALSE, 0);
- label = gtk_label_new (_("Your search returned no results."));
- gtk_box_pack_start (GTK_BOX (gsearch->no_results), label, FALSE, FALSE, 12);
-
- gtk_box_pack_start (GTK_BOX (gsearch->message_box), gsearch->no_results, TRUE, TRUE, 12);
- gtk_widget_show_all (gsearch->no_results);
-
- tracker_search_suggest_async (tracker_client, search_term, 3, (TrackerStringReply) set_suggestion, gsearch);
- }
-}
-
-void
-update_search_counts (GSearchWindow * gsearch)
-{
- gchar * title_bar_string = NULL;
-
- title_bar_string = g_strconcat ( _("Tracker Search Tool-"), gsearch->search_term ,NULL);
- gtk_window_set_title (GTK_WINDOW (gsearch->window), title_bar_string);
- g_free (title_bar_string);
-}
-
-void
-update_constraint_info (GSearchConstraint * constraint,
- gchar * info)
-{
- switch (GSearchOptionTemplates[constraint->constraint_id].type) {
- case SEARCH_CONSTRAINT_TYPE_TEXT:
- constraint->data.text = info;
- break;
- case SEARCH_CONSTRAINT_TYPE_NUMERIC:
- sscanf (info, "%d", &constraint->data.number);
- break;
- case SEARCH_CONSTRAINT_TYPE_DATE_BEFORE:
- case SEARCH_CONSTRAINT_TYPE_DATE_AFTER:
- sscanf (info, "%d", &constraint->data.time);
- break;
- default:
- g_warning ("Entry changed called for a non entry option!");
- break;
- }
-}
-
-void
-set_constraint_gconf_boolean (gint constraint_id,
- gboolean flag)
-{
- switch (constraint_id) {
- case SEARCH_CONSTRAINT_CONTAINS_THE_TEXT:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/contains_the_text",
- flag);
- break;
- case SEARCH_CONSTRAINT_DATE_MODIFIED_BEFORE:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/date_modified_less_than",
- flag);
- break;
- case SEARCH_CONSTRAINT_DATE_MODIFIED_AFTER:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/date_modified_more_than",
- flag);
- break;
- case SEARCH_CONSTRAINT_SIZE_IS_MORE_THAN:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/size_at_least",
- flag);
- break;
- case SEARCH_CONSTRAINT_SIZE_IS_LESS_THAN:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/size_at_most",
- flag);
- break;
- case SEARCH_CONSTRAINT_FILE_IS_EMPTY:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/file_is_empty",
- flag);
- break;
- case SEARCH_CONSTRAINT_OWNED_BY_USER:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/owned_by_user",
- flag);
- break;
- case SEARCH_CONSTRAINT_OWNED_BY_GROUP:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/owned_by_group",
- flag);
- break;
- case SEARCH_CONSTRAINT_OWNER_IS_UNRECOGNIZED:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/owner_is_unrecognized",
- flag);
- break;
- case SEARCH_CONSTRAINT_FILE_IS_NOT_NAMED:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/name_does_not_contain",
- flag);
- break;
- case SEARCH_CONSTRAINT_FILE_MATCHES_REGULAR_EXPRESSION:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/name_matches_regular_expression",
- flag);
- break;
- case SEARCH_CONSTRAINT_SHOW_HIDDEN_FILES_AND_FOLDERS:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/show_hidden_files_and_folders",
- flag);
- break;
- case SEARCH_CONSTRAINT_FOLLOW_SYMBOLIC_LINKS:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/follow_symbolic_links",
- flag);
- break;
- case SEARCH_CONSTRAINT_SEARCH_OTHER_FILESYSTEMS:
- tracker_search_gconf_set_boolean ("/apps/tracker-search-tool/select/include_other_filesystems",
- flag);
- break;
-
- default:
- break;
- }
-}
-
-/*
- * add_atk_namedesc
- * @widget : The Gtk Widget for which @name and @desc are added.
- * @name : Accessible Name
- * @desc : Accessible Description
- * Description: This function adds accessible name and description to a
- * Gtk widget.
- */
-
-static void
-add_atk_namedesc (GtkWidget * widget,
- const gchar * name,
- const gchar * desc)
-{
- AtkObject * atk_widget;
-
- g_assert (GTK_IS_WIDGET (widget));
-
- atk_widget = gtk_widget_get_accessible (widget);
-
- if (name != NULL)
- atk_object_set_name (atk_widget, name);
- if (desc !=NULL)
- atk_object_set_description (atk_widget, desc);
-}
-
-/*
- * add_atk_relation
- * @obj1 : The first widget in the relation @rel_type
- * @obj2 : The second widget in the relation @rel_type.
- * @rel_type : Relation type which relates @obj1 and @obj2
- * Description: This function establishes Atk Relation between two given
- * objects.
- */
-
-/* static void */
-/* add_atk_relation (GtkWidget * obj1, */
-/* GtkWidget * obj2, */
-/* AtkRelationType rel_type) */
-/* { */
-/* AtkObject * atk_obj1, * atk_obj2; */
-/* AtkRelationSet * relation_set; */
-/* AtkRelation * relation; */
-
-/* g_assert (GTK_IS_WIDGET (obj1)); */
-/* g_assert (GTK_IS_WIDGET (obj2)); */
-
-/* atk_obj1 = gtk_widget_get_accessible (obj1); */
-
-/* atk_obj2 = gtk_widget_get_accessible (obj2); */
-
-/* relation_set = atk_object_ref_relation_set (atk_obj1); */
-/* relation = atk_relation_new (&atk_obj2, 1, rel_type); */
-/* atk_relation_set_add (relation_set, relation); */
-/* g_object_unref (G_OBJECT (relation)); */
-
-/* } */
-
-
-gchar *
-get_desktop_item_name (GSearchWindow * gsearch)
-{
- GString * gs;
- gchar * file_is_named_utf8;
- gchar * file_is_named_locale;
- //GList * list;
-
- gs = g_string_new ("");
- g_string_append (gs, _("Tracker Search Tool"));
- g_string_append (gs, " (");
-
- file_is_named_utf8 = (gchar *) gtk_entry_get_text (GTK_ENTRY (gsearch->search_entry));
- file_is_named_locale = g_locale_from_utf8 (file_is_named_utf8 != NULL ? file_is_named_utf8 : "" ,
- -1, NULL, NULL, NULL);
- g_string_append_printf (gs, "named=%s", file_is_named_locale);
- g_free (file_is_named_locale);
-
- g_string_append_c (gs, ')');
- return g_string_free (gs, FALSE);
-}
-
-static gchar *
-crop_string (gchar *str,
- gint max_length)
-{
- gchar buffer[1024];
- gint len;
- gchar *s1, *s2;
-
- g_return_val_if_fail (str && max_length > 0, NULL);
-
- len = g_utf8_strlen (str, -1);
-
- if (len < (max_length+3)) {
- return g_strdup (str);
- }
-
- s1 = g_strdup (g_utf8_strncpy (buffer, str, max_length));
-
- s2 = g_strconcat (s1, "...", NULL);
-
- g_free (s1);
-
- return s2;
-}
-
-static void
-filename_cell_data_func (GtkTreeViewColumn * column,
- GtkCellRenderer * renderer,
- GtkTreeModel * model,
- GtkTreeIter * iter,
- GSearchWindow * gsearch)
-{
- GtkTreePath * path;
- PangoUnderline underline;
- gboolean underline_set;
- gchar * markup, * fpath, * name, * type = NULL;
-
- gtk_tree_model_get (model, iter, COLUMN_NAME, &name, -1);
- gtk_tree_model_get (model, iter, COLUMN_PATH, &fpath, -1);
- gtk_tree_model_get (model, iter, COLUMN_MIME, &type, -1);
-
- gchar * display_name = crop_string (name, 65);
- gchar * display_path = crop_string (fpath, 120);
-
- gchar * mark_name = g_markup_escape_text (display_name, -1);
- gchar * mark_dir = g_markup_escape_text (display_path, -1);
-
- markup = g_strconcat ("<b>", mark_name, "</b>\n", "<span size='small'>", mark_dir,"</span>\n",
- "<span size='small'>",type, "</span>", NULL);
-
- g_free (display_name);
- g_free (display_path);
-
- g_free (mark_name);
- g_free (mark_dir);
-
- g_free (fpath);
- g_free (name);
- g_free (type);
-
- if (gsearch->is_search_results_single_click_to_activate == TRUE) {
-
- path = gtk_tree_model_get_path (model, iter);
-
- if ((gsearch->search_results_hover_path == NULL) ||
- (gtk_tree_path_compare (path, gsearch->search_results_hover_path) != 0)) {
- underline = PANGO_UNDERLINE_NONE;
- underline_set = FALSE;
- }
- else {
- underline = PANGO_UNDERLINE_SINGLE;
- underline_set = TRUE;
- }
- gtk_tree_path_free (path);
-
- } else {
- underline = PANGO_UNDERLINE_NONE;
- underline_set = FALSE;
- }
-
- g_object_set (renderer,
- "markup", markup,
- "underline", underline,
- "underline-set", underline_set,
- NULL);
-
- g_free (markup);
-}
-
-static void
-snippet_cell_data_func (GtkTreeViewColumn * column,
- GtkCellRenderer * renderer,
- GtkTreeModel * model,
- GtkTreeIter * iter,
- GSearchWindow * gsearch)
-{
- gchar * snippet;
- gint width;
-
- gtk_tree_model_get (model, iter, COLUMN_SNIPPET, &snippet, -1);
-
- g_object_set (renderer,
- "markup", snippet,
- NULL);
-
- g_free (snippet);
-
- /* set length of word wrap to available col size */
-
- width = gtk_tree_view_column_get_width (column);
-
- if (width > 20) {
- g_object_set (renderer, "wrap_width", width - 3, "wrap-mode", PANGO_WRAP_WORD, NULL);
- }
-}
-
-static gboolean
-gsearch_equal_func (GtkTreeModel * model,
- gint column,
- const gchar * key,
- GtkTreeIter * iter,
- gpointer search_data)
-{
- gboolean results = TRUE;
- gchar * name;
-
- gtk_tree_model_get (model, iter, COLUMN_NAME, &name, -1);
-
- if (name != NULL) {
- gchar * casefold_key;
- gchar * casefold_name;
-
- casefold_key = g_utf8_casefold (key, -1);
- casefold_name = g_utf8_casefold (name, -1);
-
- if ((casefold_key != NULL) &&
- (casefold_name != NULL) &&
- (strstr (casefold_name, casefold_key) != NULL)) {
- results = FALSE;
- }
- g_free (casefold_key);
- g_free (casefold_name);
- g_free (name);
- }
- return results;
-}
-
-static GtkWidget *
-create_search_results_section (GSearchWindow * gsearch)
-{
- GtkWidget * label;
- GtkWidget * vbox;
- GtkWidget * hbox;
- GtkWidget * label_box;
- GtkWidget * align_box;
- GtkWidget * image;
- GtkWidget * button_prev;
- GtkWidget * button_next;
-
- GtkWidget * window;
- GtkTreeViewColumn * column;
- GtkCellRenderer * renderer;
-
- vbox = gtk_vbox_new (FALSE, 0);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
-
- align_box = gtk_alignment_new (0.0, 1.0, 1.0, 1.0);
- gtk_alignment_set_padding (GTK_ALIGNMENT (align_box), 18, 3, 0, 0);
-
- gtk_box_pack_start (GTK_BOX (hbox), align_box, FALSE, TRUE, 0);
-
- label_box = gtk_hbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (align_box), label_box);
-
-
- label = gtk_label_new_with_mnemonic (_("Search _results: "));
-
- gtk_box_pack_start (GTK_BOX (label_box), label, FALSE, TRUE, 0);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-
- /* Translators: this will appears as "Search results: no search performed" */
- gsearch->count_label = gtk_label_new (_("no search performed"));
- gtk_label_set_selectable (GTK_LABEL (gsearch->count_label), TRUE);
- tracker_set_atk_relationship(gsearch->count_label,
- ATK_RELATION_LABELLED_BY,
- label);
- tracker_set_atk_relationship(label, ATK_RELATION_LABEL_FOR,
- gsearch->count_label);
-
- gtk_box_pack_start (GTK_BOX (label_box), gsearch->count_label, FALSE, TRUE, 0);
-
- button_next = gtk_button_new();
- gtk_button_set_relief (GTK_BUTTON(button_next), GTK_RELIEF_NONE);
- image = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_SMALL_TOOLBAR);
- //gtk_widget_set_tooltip_text (GTK_BUTTON(button_next), _("Add a meagniful tooltip here"));
- /*FIXME: maybe add an a11y name for this button*/
- gtk_container_add (GTK_CONTAINER(button_next), image);
- gtk_box_pack_end (GTK_BOX (hbox), button_next, FALSE, TRUE, 0);
-
- button_prev = gtk_button_new();
- gtk_button_set_relief (GTK_BUTTON(button_prev), GTK_RELIEF_NONE);
- image = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_SMALL_TOOLBAR);
- //gtk_widget_set_tooltip_text (GTK_BUTTON(button_prev), _("Add a meagniful tooltip here"));
- /*FIXME: maybe add an a11y name for this button*/
- gtk_container_add (GTK_CONTAINER(button_prev), image);
- gtk_box_pack_end (GTK_BOX (hbox), button_prev, FALSE, TRUE, 0);
-
- gsearch->back_button = button_prev;
- g_signal_connect (G_OBJECT (gsearch->back_button), "clicked",
- G_CALLBACK (prev_results_cb), (gpointer) gsearch);
-
-
- gsearch->forward_button = button_next;
- g_signal_connect (G_OBJECT (gsearch->forward_button), "clicked",
- G_CALLBACK (next_results_cb), (gpointer) gsearch);
-
- gtk_widget_show_all (hbox);
-
-
- gtk_widget_set_sensitive (gsearch->forward_button, FALSE);
- gtk_widget_set_sensitive (gsearch->back_button, FALSE);
-
- gsearch->files_found_label = gtk_label_new (NULL);
- gtk_box_pack_start (GTK_BOX (label_box), gsearch->files_found_label, FALSE, FALSE, 0);
-
- window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (window), GTK_SHADOW_IN);
- gtk_container_set_border_width (GTK_CONTAINER (window), 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
-
- gsearch->search_results_tree_view = GTK_TREE_VIEW (gtk_tree_view_new ());
-
- gtk_tree_view_set_headers_visible (gsearch->search_results_tree_view, FALSE);
- gtk_tree_view_set_search_equal_func (gsearch->search_results_tree_view,
- gsearch_equal_func, NULL, NULL);
- gtk_tree_view_set_rules_hint (gsearch->search_results_tree_view, TRUE);
-
-
- if (gsearch->is_window_accessible) {
- add_atk_namedesc (GTK_WIDGET (gsearch->search_results_tree_view), _("List View"), NULL);
- }
-
- gsearch->search_results_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gsearch->search_results_tree_view));
-
- gtk_tree_selection_set_mode (GTK_TREE_SELECTION (gsearch->search_results_selection),
- GTK_SELECTION_MULTIPLE);
-
- gtk_drag_source_set (GTK_WIDGET (gsearch->search_results_tree_view),
- GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
- GSearchDndTable, GSearchTotalDnds,
- GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_ASK);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "drag_data_get",
- G_CALLBACK (drag_file_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "drag_begin",
- G_CALLBACK (drag_begin_file_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "event_after",
- G_CALLBACK (file_event_after_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "button_release_event",
- G_CALLBACK (file_button_release_event_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "button_press_event",
- G_CALLBACK (file_button_press_event_cb),
- (gpointer) gsearch->search_results_tree_view);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "key_press_event",
- G_CALLBACK (file_key_press_event_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "motion_notify_event",
- G_CALLBACK (file_motion_notify_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "leave_notify_event",
- G_CALLBACK (file_leave_notify_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_selection),
- "changed",
- G_CALLBACK (select_changed_cb),
- (gpointer) gsearch);
-
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), GTK_WIDGET (gsearch->search_results_tree_view));
-
- gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (gsearch->search_results_tree_view));
-
-
- /* metadata_tile */
- gsearch->metatile = tracker_metadata_tile_new ();
- //gtk_widget_show (gsearch->metatile);
- gtk_box_pack_end (GTK_BOX (vbox), gsearch->metatile, FALSE, FALSE, 0);
-
- gtk_box_pack_end (GTK_BOX (vbox), window, TRUE, TRUE, 0);
-
- /* create the name column */
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_title (column, _("Icon"));
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes (column, renderer,
- "pixbuf", COLUMN_ICON,
- NULL);
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
- gtk_tree_view_column_set_reorderable (column, TRUE);
- gtk_tree_view_append_column (GTK_TREE_VIEW (gsearch->search_results_tree_view), column);
-
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_title (column, _("Name"));
- gsearch->search_results_name_cell_renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, gsearch->search_results_name_cell_renderer, TRUE);
-
- gtk_tree_view_column_set_attributes (column, gsearch->search_results_name_cell_renderer,
- "text", COLUMN_NAME,
- NULL);
-
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-
- gtk_tree_view_column_set_sort_column_id (column, COLUMN_NAME);
- gtk_tree_view_column_set_reorderable (column, TRUE);
-
- gtk_tree_view_column_set_cell_data_func (column, gsearch->search_results_name_cell_renderer,
- (GtkTreeCellDataFunc) filename_cell_data_func,
- gsearch, NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (gsearch->search_results_tree_view), column);
-
- /* create the snippet column */
- renderer = gtk_cell_renderer_text_new ();
-
- column = gtk_tree_view_column_new_with_attributes (_("Text"), renderer,
- "text", COLUMN_SNIPPET,
- NULL);
-
- gtk_tree_view_column_set_expand (column, TRUE);
-
- gtk_tree_view_column_set_cell_data_func (column, renderer,
- (GtkTreeCellDataFunc) snippet_cell_data_func,
- gsearch, NULL);
-
- gtk_tree_view_column_set_reorderable (column, TRUE);
-
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_min_width (column, 0);
- gtk_tree_view_column_set_max_width (column, 10000);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (gsearch->search_results_tree_view), column);
-
-// gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (gsearch->search_results_tree_view), GTK_TREE_VIEW_GRID_LINES_VERTICAL);
- gtk_tree_view_set_enable_search (GTK_TREE_VIEW (gsearch->search_results_tree_view), FALSE);
-
- g_signal_connect (G_OBJECT (gsearch->search_results_tree_view),
- "columns-changed",
- G_CALLBACK (columns_changed_cb),
- (gpointer) gsearch);
-
- return vbox;
-}
-
-static GtkWidget *
-create_sidebar (GSearchWindow * gsearch)
-{
- GtkWidget * window;
- GtkTreeViewColumn * column;
- GtkCellRenderer * renderer;
-
- GtkWidget *vbox = gtk_vbox_new (FALSE, 11);
-
- GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
-
- window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (window), GTK_SHADOW_IN);
- gtk_container_set_border_width (GTK_CONTAINER (window), 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
-
- gsearch->category_list = gtk_tree_view_new ();
-
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (gsearch->category_list), FALSE);
- gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (gsearch->category_list), TRUE);
-
- if (gsearch->is_window_accessible) {
- add_atk_namedesc (gsearch->category_list, _("List View"), NULL);
- }
-
- gsearch->category_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gsearch->category_list));
-
- gtk_tree_selection_set_mode (GTK_TREE_SELECTION (gsearch->category_selection),
- GTK_SELECTION_BROWSE);
-
- g_signal_connect (G_OBJECT (gsearch->category_selection),
- "changed",
- G_CALLBACK (category_changed_cb),
- (gpointer) gsearch);
-
- gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (gsearch->category_list));
-
- /* create the columns */
- column = gtk_tree_view_column_new ();
-
- gtk_tree_view_column_set_title (column, _("_Categories"));
- gsearch->category_name_cell_renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_end (column, gsearch->category_name_cell_renderer, TRUE);
-
- gtk_tree_view_column_set_attributes (column, gsearch->category_name_cell_renderer,
- "text", CATEGORY_TITLE,
- NULL);
-
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-
-
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes (column, renderer,
- "pixbuf", CATEGORY_ICON_NAME,
- NULL);
-
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (gsearch->category_list), column);
-
-
- gtk_tree_view_set_model (GTK_TREE_VIEW (gsearch->category_list), GTK_TREE_MODEL (gsearch->category_store));
-
- gtk_box_pack_end (GTK_BOX (vbox), window, TRUE, TRUE, 0);
-
- gtk_tree_view_set_enable_search (GTK_TREE_VIEW (gsearch->category_list), FALSE);
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (gsearch->category_list), TRUE);
-
- return vbox;
-}
-
-static void
-register_tracker_search_icon (GtkIconFactory * factory)
-{
- GtkIconSource * source;
- GtkIconSet * icon_set;
-
- source = gtk_icon_source_new ();
-
- gtk_icon_source_set_icon_name (source, TRACKER_SEARCH_TOOL_ICON);
-
- icon_set = gtk_icon_set_new ();
- gtk_icon_set_add_source (icon_set, source);
-
- gtk_icon_factory_add (factory, TRACKER_SEARCH_TOOL_STOCK, icon_set);
-
- gtk_icon_set_unref (icon_set);
-
- gtk_icon_source_free (source);
-}
-
-static void
-tracker_search_init_stock_icons (void)
-{
- GtkIconFactory * factory;
- GtkIconSize tracker_search_icon_size;
-
- tracker_search_icon_size = gtk_icon_size_register ("panel-menu",
- TRACKER_SEARCH_TOOL_DEFAULT_ICON_SIZE,
- TRACKER_SEARCH_TOOL_DEFAULT_ICON_SIZE);
-
- factory = gtk_icon_factory_new ();
- gtk_icon_factory_add_default (factory);
-
- register_tracker_search_icon (factory);
-
- g_object_unref (factory);
-}
-
-void
-set_clone_command (GSearchWindow * gsearch,
- gint * argcp,
- gchar *** argvp,
- gpointer client_data,
- gboolean escape_values)
-{
- gchar ** argv;
- gchar * file_is_named_utf8;
- gchar * file_is_named_locale;
- gchar * tmp;
- gint i = 0;
-
- argv = g_new0 (gchar*, SEARCH_CONSTRAINT_MAXIMUM_POSSIBLE);
-
- argv[i++] = (gchar *) client_data;
-
- file_is_named_utf8 = (gchar *) gtk_entry_get_text (GTK_ENTRY (gsearch->search_entry));
- file_is_named_locale = g_locale_from_utf8 (file_is_named_utf8 != NULL ? file_is_named_utf8 : "" ,
- -1, NULL, NULL, NULL);
- if (escape_values) {
- tmp = g_shell_quote (file_is_named_locale);
- } else {
- tmp = g_strdup (file_is_named_locale);
- }
- argv[i++] = g_strdup_printf ("--named=%s", tmp);
- g_free (tmp);
- g_free (file_is_named_locale);
-
- *argvp = argv;
- *argcp = i;
-}
-
-static void
-tracker_search_ui_manager (GSearchWindow * gsearch)
-{
- GtkActionGroup * action_group;
- GtkAccelGroup * accel_group;
- GtkAction * action;
- GError * error = NULL;
-
- action_group = gtk_action_group_new ("PopupActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_actions (action_group, GSearchUiEntries, G_N_ELEMENTS (GSearchUiEntries), gsearch->window);
-
- gsearch->window_ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (gsearch->window_ui_manager, action_group, 0);
-
- accel_group = gtk_ui_manager_get_accel_group (gsearch->window_ui_manager);
- gtk_window_add_accel_group (GTK_WINDOW (gsearch->window), accel_group);
-
- if (!gtk_ui_manager_add_ui_from_string (gsearch->window_ui_manager, GSearchUiDescription, -1, &error)) {
- g_message ("Building menus failed: %s", error->message);
- g_error_free (error);
- exit (EXIT_FAILURE);
- }
-
- action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/Open");
- g_signal_connect (G_OBJECT (action),
- "activate",
- G_CALLBACK (open_file_cb),
- (gpointer) gsearch);
-
- action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/OpenFolder");
- g_signal_connect (G_OBJECT (action),
- "activate",
- G_CALLBACK (open_folder_cb),
- (gpointer) gsearch);
-
- action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/MoveToTrash");
- g_signal_connect (G_OBJECT (action),
- "activate",
- G_CALLBACK (move_to_trash_cb),
- (gpointer) gsearch);
-
- action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/SaveResultsAs");
- g_signal_connect (G_OBJECT (action),
- "activate",
- G_CALLBACK (show_file_selector_cb),
- (gpointer) gsearch);
-
- gsearch->search_results_popup_menu = gtk_ui_manager_get_widget (gsearch->window_ui_manager,
- "/PopupMenu");
- gsearch->search_results_save_results_as_item = gtk_ui_manager_get_widget (gsearch->window_ui_manager,
- "/PopupMenu/SaveResultsAs");
-}
-
-static void
-gsearch_window_size_allocate (GtkWidget * widget,
- GtkAllocation * allocation,
- GSearchWindow * gsearch)
-{
- if (gsearch->is_window_maximized == FALSE) {
- gsearch->window_width = allocation->width;
- gsearch->window_height = allocation->height;
- }
-}
-
-static void
-get_meta_table_data (gpointer value,
- gpointer data)
-{
- gchar **meta;
- GSearchWindow * gsearch = data;
-
- meta = (char **)value;
-
- if (gsearch->type == SERVICE_EMAILS) {
-
- if (meta[0] && meta[1] && meta[2]) {
- gchar * subject = "Unknown email subject", * sender = "Unknown email sender";
-
- if (meta[3]) {
- subject = meta[3];
- if (meta[4]) {
- sender = meta[4];
- }
- }
-
- add_email_to_search_results (meta[0], meta[2],
- subject, sender, gsearch->search_results_list_store, &gsearch->search_results_iter, gsearch);
- }
-
- } else {
- if (meta[0] && meta[1] && meta[2]) {
-
- if (gsearch->type == SERVICE_APPLICATIONS) {
-
- if (!meta[3] || !meta[4]) {
- return;
- }
-
- gchar *icon=NULL, *exec = meta[4], *name = meta[3];
-
- if (meta[5]) {
- icon = meta[5];
- }
-
- add_application_to_search_results (meta[0], name, exec, icon,
- gsearch->search_results_list_store, &gsearch->search_results_iter, gsearch);
-
- } else {
- add_file_to_search_results (meta[0], tracker_service_name_to_type (meta[1]), meta[2],
- gsearch->search_results_list_store, &gsearch->search_results_iter, gsearch);
- }
- }
- }
-
-}
-
-static gint
-str_in_array (const gchar *str,
- gchar **array)
-{
- gint i;
- gchar **st;
-
- for (i = 0, st = array; *st; st++, i++) {
- if (strcasecmp (*st, str) == 0) {
- return i;
- }
- }
-
- return -1;
-}
-
-static void
-populate_hit_counts (gpointer value,
- gpointer data)
-
-{
- gchar **meta;
- gint type;
- service_info_t *service;
-
- meta = (char **)value;
-
- if (meta[0] && meta[1]) {
-
- type = str_in_array (meta[0], (char**) search_service_types);
-
- if (type != -1) {
- for (service = services; service->service; ++service) {
- if (strcmp(service->service,meta[0]) == 0) {
- service->hit_count = atoi (meta[1]);
- break;
- }
- }
- }
- }
-}
-
-static void
-update_page_count_label (GSearchWindow * gsearch)
-{
- gint from, to, count;
- gchar * label_str;
-
- count = gsearch->current_service->hit_count;
- from = gsearch->current_service->offset+1;
-
- if (MAX_SEARCH_RESULTS + from > count) {
- to = count;
- } else {
- to = MAX_SEARCH_RESULTS + from -1;
- }
-
- if (count > 5) {
- /* Translators: this will appear like "Search results: 5 - 10 of 30 items" */
- label_str = g_strdup_printf (_("%d - %d of %d items"), from, to, count);
- } else
- /* Translators: this will appear like "Search results: 7 items" */
- label_str = g_strdup_printf (ngettext ("%d item", "%d items", count), count);
-
- gtk_label_set_text (GTK_LABEL (gsearch->count_label), label_str);
- g_free (label_str);
-
- if (gsearch->current_service->hit_count < gsearch->current_service->offset + 1 + MAX_SEARCH_RESULTS) {
- gtk_widget_set_sensitive (gsearch->forward_button, FALSE);
- } else {
- gtk_widget_set_sensitive (gsearch->forward_button, TRUE);
- }
-
- if (gsearch->current_service->offset > 0) {
- gtk_widget_set_sensitive (gsearch->back_button, TRUE);
- } else {
- gtk_widget_set_sensitive (gsearch->back_button, FALSE);
- }
-}
-
-static void
-init_tab (GSearchWindow * gsearch,
- service_info_t * service)
-{
- gsearch->search_results_list_store = service->store;
- gtk_tree_view_set_model (gsearch->search_results_tree_view, GTK_TREE_MODEL (service->store));
-
- update_page_count_label (gsearch);
-
- GtkAction * action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/OpenFolder");
- gtk_action_set_sensitive (action, (gsearch->type < 10));
-
- action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/MoveToTrash");
- gtk_action_set_sensitive (action, (gsearch->type < 10));
-
- action = gtk_ui_manager_get_action (gsearch->window_ui_manager, "/PopupMenu/SaveResultsAs");
- gtk_action_set_sensitive (action, (gsearch->type < 10));
-}
-
-static void
-get_hit_count (GPtrArray *out_array,
- GError *error,
- gpointer user_data)
-{
- service_info_t *service;
- gboolean first_service = FALSE, has_hits = FALSE;
-
- GSearchWindow *gsearch = user_data;
-
- if (error) {
- display_error_dialog (gsearch->window, _("Could not connect to search service as it may be busy"));
- g_error_free (error);
- return;
- }
-
- if (out_array) {
- g_ptr_array_foreach (out_array, (GFunc) populate_hit_counts, NULL);
- g_ptr_array_free (out_array, TRUE);
- out_array = NULL;
- }
-
- /* reset and create categories with hits > 0 */
-
- gtk_list_store_clear (gsearch->category_store);
-
-
- for (service = services; service->service; ++service) {
-
- if (service->hit_count == 0) {
- continue;
- }
-
- has_hits = TRUE;
-
- gtk_list_store_append (gsearch->category_store, &gsearch->category_iter);
-
- gchar * label_tmp = g_strdup (_(service->display_name));
- gchar * label_str = g_strdup_printf ("%s (%d)", label_tmp, service->hit_count);
- g_free (label_tmp);
-
-
- gtk_list_store_set (gsearch->category_store, &gsearch->category_iter,
- CATEGORY_ICON_NAME, service->pixbuf,
- CATEGORY_TITLE, label_str,
- CATEGORY_SERVICE, service->service,
- -1);
-
- g_free (label_str);
-
- if (gsearch->old_type == service->service_type) {
- first_service = TRUE;
- gsearch->current_service = service;
- gsearch->type = service->service_type;
- init_tab (gsearch, service);
- }
- }
-
- if (!first_service) {
-
- if (!has_hits) {
-
- add_no_files_found_message (gsearch);
- gsearch->page_setup_mode = FALSE;
- gsearch->current_service = NULL;
- gsearch->type = -1;
- stop_animation (gsearch);
- tracker_update_metadata_tile (gsearch);
- return;
- }
-
- /* old category not found so go to first one with hits */
- for (service = services; service->service; ++service) {
- if (service->hit_count == 0) {
- continue;
- }
-
- gsearch->current_service = service;
- gsearch->type = service->service_type;
- gsearch->old_type = gsearch->type;
- init_tab (gsearch, service);
-
- break;
- }
- }
-
- gsearch->page_setup_mode = FALSE;
-
- do_search (gsearch, gsearch->search_term, TRUE, 0);
-}
-
-void
-select_category (GtkTreeSelection * treeselection,
- gpointer user_data)
-{
- GSearchWindow * gsearch = user_data;
- GtkTreeIter iter;
- gchar * name;
-
- if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->category_selection)) == 0) {
- return;
- }
-
- GtkTreeModel * model = gtk_tree_view_get_model (GTK_TREE_VIEW (gsearch->category_list));
-
- gtk_tree_selection_get_selected (GTK_TREE_SELECTION (gsearch->category_selection),
- &model,
- &iter);
-
- gtk_tree_model_get (model, &iter, 2, &name, -1);
-
- service_info_t * service = g_hash_table_lookup (gsearch->category_table, name);
-
- g_free (name);
-
- if (!service) {
- return;
- }
-
- gsearch->current_service = service;
- gsearch->type = service->service_type;
-
- g_queue_foreach (gsearch->snippet_queue, (GFunc) free_snippet, NULL);
- g_queue_free (gsearch->snippet_queue);
- gsearch->snippet_queue = g_queue_new ();
-
- init_tab (gsearch, gsearch->current_service);
-
- gsearch->old_type = gsearch->type;
-
- do_search (gsearch, gsearch->search_term, FALSE, service->offset);
-}
-
-void
-start_new_search (GSearchWindow * gsearch,
- const gchar * query)
-{
- service_info_t * service;
-
- if (tracker_is_empty_string (query)) {
- return;
- }
-
- gtk_widget_set_sensitive (gsearch->category_list, TRUE);
-
- /* yes, we are comparing pointer addresses here */
- if (gsearch->search_term && gsearch->search_term != query) {
- g_free (gsearch->search_term);
- gsearch->search_term = NULL;
- }
-
- if (gsearch->search_term == NULL) {
- gsearch->search_term = g_strdup (query);
- }
-
- gsearch->page_setup_mode = TRUE;
-
- gtk_widget_show (gsearch->search_results_vbox);
-
- if (gsearch->no_results) {
- gtk_widget_destroy (gsearch->no_results);
- gsearch->no_results = NULL;
- }
-
- for (service = services; service->service; ++service) {
- service->has_hits = FALSE;
-
- service->hit_count = 0;
- service->offset = 0;
-
- gtk_list_store_clear (service->store);
- }
-
- tracker_search_text_get_hit_count_all_async (tracker_client, query, (TrackerGPtrArrayReply) get_hit_count, gsearch);
-}
-
-
-void
-end_refresh_count (int count, GError * error, gpointer user_data)
-{
- GSearchWindow *gsearch = user_data;
- service_info_t * service;
-
- for (service = services; service->service; ++service) {
- if (service->service_type == gsearch->current_service->service_type) {
- service->hit_count = count;
- break;
- }
- }
-
- update_page_count_label (gsearch);
-
-}
-
-
-void
-end_search (GPtrArray * out_array,
- GError * error,
- gpointer user_data)
-{
- GSearchWindow *gsearch = user_data;
-
- gsearch->is_locate_database_check_finished = TRUE;
- stop_animation (gsearch);
-
- if (error) {
- display_error_dialog (gsearch->window, _("Could not connect to search service as it may be busy"));
- g_error_free (error);
- return;
- }
-
- GError *error2 = NULL;
- gchar* status = tracker_get_status (tracker_client, &error2);
-
- if (error2) {
- g_error_free (error2);
- status = g_strdup ("Indexing");
- }
-
- if (strcmp (status, "Idle") == 0) {
- gtk_widget_hide (gsearch->warning_label);
- } else {
- gtk_widget_show (gsearch->warning_label);
- }
-
- g_free (status);
-
- if (out_array) {
-
- gsearch->current_service->has_hits = TRUE;
-
- /* update hit count after search in case of dud hits */
-
- tracker_search_text_get_hit_count_async (tracker_client, gsearch->current_service->service_type,
- gsearch->search_term,
- (TrackerIntReply)end_refresh_count,
- gsearch);
-
-
-
- gsearch->search_results_list_store = gsearch->current_service->store;
-
- gsearch->command_details->command_status = RUNNING;
-
- gtk_list_store_clear (GTK_LIST_STORE (gsearch->search_results_list_store));
-
- g_ptr_array_foreach (out_array, (GFunc)get_meta_table_data, gsearch);
- g_ptr_array_free (out_array, TRUE);
-
-
- GtkTreeModel *model = gtk_tree_view_get_model (gsearch->search_results_tree_view);
-
- GtkTreeIter iter;
- if (gtk_tree_model_get_iter_first (model, &iter)) {
- gtk_tree_selection_select_iter (gsearch->search_results_selection, &iter);
- }
-
- /* process snippets */
- g_idle_add ((GSourceFunc) process_snippets, gsearch);
-
- } else {
- gsearch->current_service->offset = 0;
- gsearch->current_service->hit_count = 0;
- gtk_widget_set_sensitive (gsearch->forward_button, FALSE);
- gtk_widget_set_sensitive (gsearch->category_list, FALSE);
- }
-
- tracker_update_metadata_tile (gsearch);
-}
-
-void
-do_search (GSearchWindow * gsearch,
- const gchar * query,
- gboolean new_search,
- gint search_offset)
-{
- start_animation (gsearch, TRUE);
-
- if (!new_search) {
-
- if (gsearch->current_service->has_hits && (gsearch->current_service->offset == search_offset)) {
- update_page_count_label (gsearch);
-
- GtkTreeModel *model = gtk_tree_view_get_model (gsearch->search_results_tree_view);
-
- GtkTreeIter iter;
- if (gtk_tree_model_get_iter_first (model, &iter)) {
- gtk_tree_selection_select_iter (gsearch->search_results_selection, &iter);
- }
- stop_animation (gsearch);
- tracker_update_metadata_tile (gsearch);
- return;
- }
- }
-
- gsearch->current_service->offset = search_offset;
- tracker_search_text_detailed_async (tracker_client,
- -1,
- gsearch->current_service->service_type,
- query,
- search_offset, MAX_SEARCH_RESULTS,
- (TrackerGPtrArrayReply)end_search,
- gsearch);
-}
-
-static GtkWidget *
-gsearch_app_create (GSearchWindow * gsearch)
-{
- GtkWidget * hbox;
- GtkWidget * vbox;
- GtkWidget * entry;
- GtkWidget * label;
- GtkWidget * container;
- GtkWidget * main_container;
- service_info_t *service;
-
- gsearch->snippet_queue = g_queue_new ();
-
- gsearch->category_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- g_hash_table_insert (gsearch->category_table, g_strdup ("Emails"), &services[0]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Files"), &services[1]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Folders"), &services[2]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Documents"), &services[3]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Images"), &services[4]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Music"), &services[5]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Videos"), &services[6]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Text"), &services[7]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Development"), &services[8]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Conversations"), &services[9]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("Applications"), &services[10]);
- g_hash_table_insert (gsearch->category_table, g_strdup ("WebHistory"), &services[11]);
- //g_hash_table_insert (gsearch->category_table, g_strdup ("EmailAttachments"), &services[11]);
-
- gsearch->category_store = gtk_list_store_new (NUM_CATEGORY_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
-
- GtkIconTheme * theme = gtk_icon_theme_get_default ();
-
- for (service = services; service->service; ++service) {
-
- service->store = gtk_list_store_new (NUM_COLUMNS,
- GDK_TYPE_PIXBUF,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_INT,
- G_TYPE_BOOLEAN);
-
- service->pixbuf = gtk_icon_theme_load_icon (theme, service->icon_name,
- 24,
- GTK_ICON_LOOKUP_USE_BUILTIN,
- NULL);
-
- g_object_ref (service->pixbuf);
- }
-
- gsearch->email_pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(), "email",
- ICON_SIZE,
- GTK_ICON_LOOKUP_USE_BUILTIN,
- NULL);
-
- gsearch->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gsearch->is_window_maximized = tracker_search_gconf_get_boolean ("/apps/tracker-search-tool/default_window_maximized");
- g_signal_connect (G_OBJECT (gsearch->window), "size-allocate",
- G_CALLBACK (gsearch_window_size_allocate),
- gsearch);
- gsearch->command_details = g_slice_new0 (GSearchCommandDetails);
- gsearch->window_geometry.min_height = -1;
- gsearch->window_geometry.min_width = -1;
- gsearch->search_term = NULL;
-
- gtk_window_set_position (GTK_WINDOW (gsearch->window), GTK_WIN_POS_CENTER);
- gtk_window_set_geometry_hints (GTK_WINDOW (gsearch->window), GTK_WIDGET (gsearch->window),
- &gsearch->window_geometry, GDK_HINT_MIN_SIZE);
-
- tracker_search_get_stored_window_geometry (&gsearch->window_width,
- &gsearch->window_height);
- gtk_window_set_default_size (GTK_WINDOW (gsearch->window),
- gsearch->window_width,
- gsearch->window_height);
-
- if (gsearch->is_window_maximized == TRUE) {
- gtk_window_maximize (GTK_WINDOW (gsearch->window));
- }
-
- main_container = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (gsearch->window), main_container);
- gtk_container_set_border_width (GTK_CONTAINER (main_container), 0);
-
- container = gtk_vbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (main_container), container);
- gtk_container_set_border_width (GTK_CONTAINER (container), 1);
-
-
- GtkWidget * widget;
- char *search_label;
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 3);
-
- gsearch->name_and_folder_table = gtk_table_new (2, 4, FALSE);
- gtk_container_add (GTK_CONTAINER (hbox), gsearch->name_and_folder_table);
-
- label = gtk_label_new (NULL);
- search_label = g_strconcat ("<b>", _("_Search:"), "</b>", NULL);
- gtk_label_set_markup_with_mnemonic (GTK_LABEL (label), search_label);
- g_free (search_label);
- gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
- g_object_set (G_OBJECT (label), "xalign", 0.0, NULL);
-
- gtk_table_attach (GTK_TABLE (gsearch->name_and_folder_table), label, 0, 1, 0, 1, GTK_FILL, 0, 6, 1);
-
- gsearch->search_entry = sexy_icon_entry_new ();
- sexy_icon_entry_add_clear_button (SEXY_ICON_ENTRY (gsearch->search_entry));
- gtk_table_attach (GTK_TABLE (gsearch->name_and_folder_table), gsearch->search_entry, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0, 0);
- entry = (gsearch->search_entry);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
-
- gsearch->warning_label = gtk_label_new (_("Tracker is still indexing so not all search results are available yet"));
- gtk_label_set_selectable (GTK_LABEL (gsearch->warning_label), TRUE);
- gtk_label_set_justify (GTK_LABEL (gsearch->warning_label), GTK_JUSTIFY_LEFT);
- g_object_set (G_OBJECT (gsearch->warning_label), "xalign", 0.0, NULL);
- gtk_table_attach (GTK_TABLE (gsearch->name_and_folder_table), gsearch->warning_label, 0, 2, 1, 2, GTK_FILL, 0, 6, 1);
-
- hbox = gtk_hbutton_box_new ();
- gtk_table_attach (GTK_TABLE (gsearch->name_and_folder_table), hbox, 3, 4, 0, 1, GTK_FILL, 0, 6, 0);
-
- gsearch->find_button = gtk_button_new_from_stock (GTK_STOCK_FIND);
- gtk_container_add (GTK_CONTAINER (hbox), gsearch->find_button);
-
- if (GTK_IS_ACCESSIBLE (gtk_widget_get_accessible (gsearch->search_entry))) {
- gsearch->is_window_accessible = TRUE;
- add_atk_namedesc (gsearch->search_entry, NULL, _("Enter a search term with multiple words seperated with spaces."));
- add_atk_namedesc (entry, _("search_entry"), _("Enter a search term with multiple words seperated with spaces."));
- }
-
- g_signal_connect (G_OBJECT (gsearch->search_entry), "activate",
- G_CALLBACK (name_contains_activate_cb),
- (gpointer) gsearch);
-
- g_signal_connect (G_OBJECT (gsearch->search_entry), "changed",
- G_CALLBACK (text_changed_cb),
- (gpointer) gsearch);
-
- gsearch->show_more_options_expander = gtk_expander_new_with_mnemonic ("Select more _options");
-
- /* paned container for search results and category sections */
-
- gsearch->pane = gtk_hpaned_new ();
- gtk_paned_set_position (GTK_PANED (gsearch->pane), tracker_get_stored_separator_position ());
-
- gtk_box_pack_start (GTK_BOX (container), gsearch->pane, TRUE, TRUE, 3);
-
- /* layout container for results section */
-
- vbox = gtk_vbox_new (FALSE, 2);
- gsearch->message_box = vbox;
-
- gsearch->no_results = NULL;
-
- gtk_paned_pack2 (GTK_PANED (gsearch->pane), vbox, TRUE, FALSE);
-
- /* search results panel */
-
- gsearch->search_results_vbox = create_search_results_section (gsearch);
- gtk_tree_view_set_model (gsearch->search_results_tree_view, GTK_TREE_MODEL (services[0].store));
- gtk_widget_set_sensitive (GTK_WIDGET (gsearch->search_results_vbox), FALSE);
-
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (gsearch->search_results_vbox), TRUE, TRUE, 0);
-
- GTK_WIDGET_SET_FLAGS (gsearch->find_button, GTK_CAN_DEFAULT);
-
- gtk_widget_set_sensitive (gsearch->find_button, TRUE);
-
- g_signal_connect (G_OBJECT (gsearch->find_button), "clicked",
- G_CALLBACK (click_find_cb),
- (gpointer) gsearch);
-
- if (gsearch->is_window_accessible) {
- add_atk_namedesc (GTK_WIDGET (gsearch->find_button), NULL, _("Click to perform a search."));
- }
-
- /* category sidebar */
-
- widget = create_sidebar (gsearch);
- gtk_paned_pack1 (GTK_PANED (gsearch->pane), widget, TRUE, FALSE);
-
- gtk_widget_set_sensitive (gsearch->category_list, FALSE);
-
- gtk_widget_set_sensitive (gsearch->forward_button, FALSE);
- gtk_widget_set_sensitive (gsearch->back_button, FALSE);
-
- gtk_window_set_focus (GTK_WINDOW (gsearch->window),
- GTK_WIDGET (gsearch->search_entry));
-
- gtk_window_set_default (GTK_WINDOW (gsearch->window), gsearch->find_button);
-
-
- gtk_widget_show_all (main_container);
-
- gtk_widget_hide (gsearch->warning_label);
-
- return gsearch->window;
-}
-
-static void
-gsearch_window_finalize (GObject * object)
-{
- parent_class->finalize (object);
-}
-
-static void
-gsearch_window_class_init (GSearchWindowClass * klass)
-{
- GObjectClass * object_class = (GObjectClass *) klass;
-
- object_class->finalize = gsearch_window_finalize;
- parent_class = g_type_class_peek_parent (klass);
-}
-
-GType
-gsearch_window_get_type (void)
-{
- static GType object_type = 0;
-
- if (!object_type) {
- static const GTypeInfo object_info = {
- sizeof (GSearchWindowClass),
- NULL,
- NULL,
- (GClassInitFunc) gsearch_window_class_init,
- NULL,
- NULL,
- sizeof (GSearchWindow),
- 0,
- (GInstanceInitFunc) gsearch_app_create
- };
- object_type = g_type_register_static (GTK_TYPE_WINDOW, "GSearchWindow", &object_info, 0);
- }
- return object_type;
-}
-
-static void
-tracker_search_setup_gconf_notifications (GSearchWindow * gsearch)
-{
- gchar * click_to_activate_pref = NULL;
-
- /* Get value of nautilus click behavior (single or double click to activate items) */
-/* click_to_activate_pref = tracker_search_gconf_get_string ("/apps/nautilus/preferences/click_policy"); */
-
- if (click_to_activate_pref == NULL) {
- gsearch->is_search_results_single_click_to_activate = FALSE;
- return;
- }
-
- gsearch->is_search_results_single_click_to_activate =
- (strncmp (click_to_activate_pref, "single", 6) == 0) ? TRUE : FALSE;
-
- tracker_search_gconf_watch_key ("/apps/nautilus/preferences",
- "/apps/nautilus/preferences/click_policy",
- (GConfClientNotifyFunc) single_click_to_activate_key_changed_cb,
- gsearch);
-
- g_free (click_to_activate_pref);
-}
-
-gchar *
-tracker_search_pixmap_file (const gchar * partial_path)
-{
- gchar * path;
-
- path = g_build_filename (TRACKER_DATADIR "/tracker/icons", partial_path, NULL);
- if (g_file_test (path, G_FILE_TEST_EXISTS)) {
- return path;
- } else {
- return g_strdup (partial_path);
- }
- g_free (path);
- return NULL;
-}
-
-gint
-main (gint argc,
- gchar * argv[])
-{
- GSearchWindow * gsearch;
- GOptionContext * option_context;
- GError *error = NULL;
- GnomeProgram * program;
- GnomeClient * client;
- GtkWidget * window;
- gchar * search_string;
-
- option_context = g_option_context_new ("tracker-search-tool");
- g_option_context_add_main_entries (option_context, options, NULL);
-
- if (error) {
- g_printerr ("invalid arguments: %s\n", error->message);
- return 1;
- }
-
- bindtextdomain (GETTEXT_PACKAGE, TRACKER_LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- program = gnome_program_init ("tracker-search-tool",
- VERSION,
- LIBGNOMEUI_MODULE,
- argc, argv,
- GNOME_PARAM_APP_DATADIR, TRACKER_DATADIR,
- GNOME_PARAM_GOPTION_CONTEXT, option_context,
- GNOME_PARAM_NONE);
-
- g_set_application_name (_("Tracker Search Tool"));
-
-
- tracker_search_init_stock_icons ();
-
- window = g_object_new (GSEARCH_TYPE_WINDOW, NULL);
- gsearch = GSEARCH_WINDOW (window);
-
- //gsearch->search_results_pixbuf_hash_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-
- tracker_search_ui_manager (gsearch);
-
- gtk_window_set_icon_name (GTK_WINDOW (gsearch->window), "system-search");
-
- gtk_window_set_default_icon_name ("tracker");
-
- gtk_window_set_wmclass (GTK_WINDOW (gsearch->window), "tracker-search-tool", "tracker-search-tool");
- gtk_window_set_policy (GTK_WINDOW (gsearch->window), TRUE, TRUE, TRUE);
-
- g_signal_connect (G_OBJECT (gsearch->window), "delete_event",
- G_CALLBACK (quit_cb),
- (gpointer) gsearch);
- g_signal_connect (G_OBJECT (gsearch->window), "key_press_event",
- G_CALLBACK (key_press_cb),
- (gpointer) gsearch);
- g_signal_connect (G_OBJECT (gsearch->window), "window_state_event",
- G_CALLBACK (window_state_event_cb),
- (gpointer) gsearch);
-
- if ((client = gnome_master_client ()) != NULL) {
- g_signal_connect (client, "save_yourself",
- G_CALLBACK (save_session_cb),
- (gpointer) gsearch);
- g_signal_connect (client, "die",
- G_CALLBACK (die_cb),
- (gpointer) gsearch);
- }
-
- gtk_widget_show (gsearch->window);
-
- tracker_client = tracker_connect (FALSE);
-
- tracker_search_setup_gconf_notifications (gsearch);
-
-
- if (terms) {
- search_string = g_strjoinv (" ", terms);
- gtk_entry_set_text (GTK_ENTRY (gsearch->search_entry), search_string);
- g_free (search_string);
- gtk_button_clicked (GTK_BUTTON (gsearch->find_button));
-
- } else {
- gtk_widget_set_sensitive (gsearch->find_button, FALSE);
- }
-
- gtk_main ();
-
- return 0;
-}
diff --git a/src/tracker-search-tool/tracker-search-tool.desktop.in.in b/src/tracker-search-tool/tracker-search-tool.desktop.in.in
deleted file mode 100644
index de18e6402..000000000
--- a/src/tracker-search-tool/tracker-search-tool.desktop.in.in
+++ /dev/null
@@ -1,15 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-_Name=Tracker Search Tool
-_Comment=Locate documents and folders on this computer by name or content using Tracker
-Exec=tracker-search-tool
-Icon=system-search
-Terminal=false
-Type=Application
-Categories=GTK;Utility;
-StartupNotify=true
-X-GNOME-Bugzilla-Bugzilla=GNOME
-X-GNOME-Bugzilla-Product=tracker
-X-GNOME-Bugzilla-Component=Tracker Search Tool
-X-GNOME-Bugzilla-Version=@VERSION@
-
diff --git a/src/tracker-search-tool/tracker-search-tool.h b/src/tracker-search-tool/tracker-search-tool.h
deleted file mode 100644
index 7b789a09a..000000000
--- a/src/tracker-search-tool/tracker-search-tool.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Tracker Search Tool
- *
- * File: tracker_search.h modified from gnome-search.h
- *
- * (c) Mr Jamie McCracken
- *
- * Original copyright :
- * (C) 1998,2002 the Free Software Foundation
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GSEARCHTOOL_H_
-#define _GSEARCHTOOL_H_
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif
-
-
-
-#include <gconf/gconf.h>
-#include <gconf/gconf-client.h>
-
-#include <libgnomevfs/gnome-vfs-mime.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-
-#include <libgnomeui/libgnomeui.h>
-
-#include "../libtracker/tracker.h"
-
-#define MAX_SEARCH_RESULTS 10
-
-#define GSEARCH_TYPE_WINDOW (gsearch_window_get_type ())
-#define GSEARCH_WINDOW(obj) (GTK_CHECK_CAST((obj), GSEARCH_TYPE_WINDOW, GSearchWindow))
-#define GSEARCH_WINDOW_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass), GSEARCH_TYPE_WINDOW, GSearchWindowClass))
-#define GSEARCH_IS_WINDOW(obj) (GTK_CHECK_TYPE((obj), GSEARCH_TYPE_WINDOW))
-#define GSEARCH_IS_WINDOW_CLASS(klass) (GTK_CHECK_CLASS_TYPE((obj), GSEARCH_TYPE_WINDOW))
-#define GSEARCH_WINDOW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS((obj), GSEARCH_TYPE_WINDOW, GSearchWindowClass))
-
-#define TRACKER_SEARCH_TOOL_ICON "system-search"
-
-#define DEFAULT_WINDOW_WIDTH 700
-#define DEFAULT_WINDOW_HEIGHT 580
-#define WINDOW_HEIGHT_STEP 35
-#define NUM_VISIBLE_COLUMNS 5
-#define DEFAULT_SEPARATOR_POSITION 170
-
-typedef enum {
- STOPPED,
- ABORTED,
- RUNNING,
- MAKE_IT_STOP,
- MAKE_IT_QUIT
-} GSearchCommandStatus;
-
-typedef enum {
- COLUMN_ICON,
- COLUMN_URI,
- COLUMN_NAME,
- COLUMN_PATH,
- COLUMN_SNIPPET,
- COLUMN_MIME,
- COLUMN_EXEC,
- COLUMN_TYPE,
- COLUMN_NO_FILES_FOUND,
- NUM_COLUMNS
-} GSearchResultColumns;
-
-
-
-typedef enum {
- CATEGORY_ICON_NAME,
- CATEGORY_TITLE,
- CATEGORY_SERVICE,
- NUM_CATEGORY_COLUMNS
-} CategoryColumns;
-
-
-typedef struct {
- gchar *service;
- gchar *display_name;
- gchar *icon_name;
- GdkPixbuf *pixbuf;
- ServiceType service_type;
- GtkListStore *store;
- gboolean has_hits;
- gint hit_count;
- gint offset;
-} service_info_t;
-
-
-typedef struct _GSearchWindow GSearchWindow;
-typedef struct _GSearchWindowClass GSearchWindowClass;
-typedef struct _GSearchCommandDetails GSearchCommandDetails;
-typedef struct _GSearchConstraint GSearchConstraint;
-typedef struct _GSearchMonitor GSearchMonitor;
-
-struct _GSearchWindow {
- GtkWindow parent_instance;
-
- GtkWidget * window;
- GtkUIManager * window_ui_manager;
- GdkGeometry window_geometry;
- gint window_width;
- gint window_height;
- gboolean is_window_maximized;
- gboolean is_window_accessible;
-
- gboolean page_setup_mode;
-
- GtkWidget *pane;
- GQueue *snippet_queue;
-
- GHashTable *category_table;
-
- /* sidebar category list */
- GtkWidget *category_list;
- GtkListStore *category_store;
- GtkTreeSelection *category_selection;
- GtkTreeIter category_iter;
- GtkCellRenderer *category_name_cell_renderer;
-
- GdkPixbuf *email_pixbuf;
- gint current_page;
- gint type;
- guint old_type;
- service_info_t *current_service;
-
- GtkWidget *metatile;
- GtkWidget *no_results;
- GtkWidget *count_label;
- GtkWidget *message_box;
-
- GtkWidget * search_entry;
- GtkWidget * warning_label;
- GtkWidget * look_in_folder_button;
- GtkWidget * name_and_folder_table;
- GtkWidget * find_button;
- GtkWidget * back_button;
- GtkWidget * forward_button;
- GtkWidget * stop_button;
- GtkWidget * focus;
-
- GtkWidget * show_more_options_expander;
- GtkWidget * available_options_vbox;
- GtkWidget * available_options_label;
- GtkWidget * available_options_combo_box;
- GtkWidget * available_options_add_button;
- GtkSizeGroup * available_options_button_size_group;
- GList * available_options_selected_list;
-
- GtkWidget * files_found_label;
- GtkWidget * search_results_vbox;
- GtkWidget * search_results_popup_menu;
- GtkWidget * search_results_save_results_as_item;
- GtkTreeView * search_results_tree_view;
- GtkListStore * search_results_list_store;
- GtkCellRenderer * search_results_name_cell_renderer;
- GtkTreeSelection * search_results_selection;
- GtkTreeIter search_results_iter;
- GtkTreePath * search_results_hover_path;
- GHashTable * search_results_pixbuf_hash_table;
- gchar * search_results_date_format_string;
- GnomeThumbnailFactory * thumbnail_factory;
- gint show_thumbnails_file_size_limit;
- gboolean show_thumbnails;
- gboolean is_search_results_single_click_to_activate;
- gboolean is_locate_database_check_finished;
- gboolean is_locate_database_available;
-
- gchar * save_results_as_default_filename;
-
- GSearchCommandDetails * command_details;
- gchar * search_term;
-};
-
-struct _GSearchCommandDetails {
- pid_t command_pid;
- GSearchCommandStatus command_status;
-
- gchar * name_contains_pattern_string;
- gchar * name_contains_regex_string;
- gchar * look_in_folder_string;
-
- gboolean is_command_first_pass;
- gboolean is_command_using_quick_mode;
- gboolean is_command_second_pass_enabled;
- gboolean is_command_show_hidden_files_enabled;
- gboolean is_command_regex_matching_enabled;
- gboolean is_command_timeout_enabled;
-};
-
-struct _GSearchConstraint {
- gint constraint_id;
- union {
- gchar * text;
- gint time;
- gint number;
- } data;
-};
-
-struct _GSearchWindowClass {
- GtkWindowClass parent_class;
-};
-
-struct _GSearchMonitor {
- GSearchWindow * gsearch;
- GtkTreeRowReference * reference;
- GnomeVFSMonitorHandle * handle;
-};
-
-GType
-gsearch_window_get_type (void);
-
-gchar *
-tracker_search_pixmap_file (const gchar * partial_path);
-
-gchar *
-build_search_command (GSearchWindow * gsearch,
- gboolean first_pass);
-
-void
-select_category (GtkTreeSelection * treeselection,
- gpointer user_data);
-
-void
-start_new_search (GSearchWindow * gsearch,
- const gchar * query);
-
-void
-end_search (GPtrArray * out_array,
- GError * error,
- gpointer user_data);
-
-void
-do_search (GSearchWindow * gsearch,
- const gchar * query,
- gboolean new_search,
- gint search_offset);
-
-void
-spawn_search_command (GSearchWindow * gsearch,
- gchar * command);
-
-void
-add_constraint (GSearchWindow * gsearch,
- gint constraint_id,
- gchar * value,
- gboolean show_constraint);
-void
-update_constraint_info (GSearchConstraint * constraint,
- gchar * info);
-void
-remove_constraint (gint constraint_id);
-
-void
-set_constraint_gconf_boolean (gint constraint_id,
- gboolean flag);
-
-void
-set_constraint_selected_state (GSearchWindow * gsearch,
- gint constraint_id,
- gboolean state);
-void
-set_clone_command (GSearchWindow * gsearch,
- gint * argcp,
- gchar *** argvp,
- gpointer client_data,
- gboolean escape_values);
-
-gchar *
-get_desktop_item_name (GSearchWindow * gsearch);
-
-void
-update_search_counts (GSearchWindow * gsearch);
-
-gboolean
-tree_model_iter_free_monitor (GtkTreeModel * model,
- GtkTreePath * path,
- GtkTreeIter * iter,
- gpointer data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _GSEARCHTOOL_H_ */
diff --git a/src/tracker-thumbnailer/Makefile.am b/src/tracker-thumbnailer/Makefile.am
deleted file mode 100644
index 1f3abe2c6..000000000
--- a/src/tracker-thumbnailer/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-INCLUDES = \
- $(GLIB2_CFLAGS) \
- $(LIBPNG_CFLAGS) \
- -DLIBDIR=\""$(libdir)"\"
-
-bin_PROGRAMS = tracker-thumbnailer
-
-tracker_thumbnailer_SOURCES = \
- tracker-thumbnailer.c \
- md5.c \
- md5.h
-
-tracker_thumbnailer_LDADD = \
- $(GLIB2_LIBS) \
- $(LIBPNG_LIBS)
diff --git a/src/tracker-thumbnailer/md5.c b/src/tracker-thumbnailer/md5.c
deleted file mode 100644
index 39a7781df..000000000
--- a/src/tracker-thumbnailer/md5.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- Copyright (C) 1999 Aladdin Enterprises. All rights reserved.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- L. Peter Deutsch
- ghost@aladdin.com
-
- */
-/*$Id$ */
-/*
- Independent implementation of MD5 (RFC 1321).
-
- This code implements the MD5 Algorithm defined in RFC 1321.
- It is derived directly from the text of the RFC and not from the
- reference implementation.
-
- The original and principal author of md5.c is L. Peter Deutsch
- <ghost@aladdin.com>. Other authors are noted in the change history
- that follows (in reverse chronological order):
-
- 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
- 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
- 1999-05-03 lpd Original version.
- */
-
-#include <string.h>
-#include "md5.h"
-
-#ifdef TEST
-/*
- * Compile with -DTEST to create a self-contained executable test program.
- * The test program should print out the same values as given in section
- * A.5 of RFC 1321, reproduced below.
- */
-#include <string.h>
-main()
-{
- static const char *const test[7] = {
- "", /*d41d8cd98f00b204e9800998ecf8427e*/
- "a", /*0cc175b9c0f1b6a831c399e269772661*/
- "abc", /*900150983cd24fb0d6963f7d28e17f72*/
- "message digest", /*f96b697d7cb7938d525a2f31aaf161d0*/
- "abcdefghijklmnopqrstuvwxyz", /*c3fcd3d76192e4007dfb496cca67e13b*/
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
- /*d174ab98d277d9f5a5611c2c9f419d9f*/
- "12345678901234567890123456789012345678901234567890123456789012345678901234567890" /*57edf4a22be3c955ac49da2e2107b67a*/
- };
- int i;
-
- for (i = 0; i < 7; ++i) {
- md5_state_t state;
- md5_byte_t digest[16];
- int di;
-
- md5_init(&state);
- md5_append(&state, (const md5_byte_t *)test[i], strlen(test[i]));
- md5_finish(&state, digest);
- printf("MD5 (\"%s\") = ", test[i]);
- for (di = 0; di < 16; ++di)
- printf("%02x", digest[di]);
- printf("\n");
- }
- return 0;
-}
-#endif /* TEST */
-
-
-/*
- * For reference, here is the program that computed the T values.
- */
-#if 0
-#include <math.h>
-main()
-{
- int i;
- for (i = 1; i <= 64; ++i) {
- unsigned long v = (unsigned long)(4294967296.0 * fabs(sin((double)i)));
- printf("#define T%d 0x%08lx\n", i, v);
- }
- return 0;
-}
-#endif
-/*
- * End of T computation program.
- */
-#define T1 0xd76aa478
-#define T2 0xe8c7b756
-#define T3 0x242070db
-#define T4 0xc1bdceee
-#define T5 0xf57c0faf
-#define T6 0x4787c62a
-#define T7 0xa8304613
-#define T8 0xfd469501
-#define T9 0x698098d8
-#define T10 0x8b44f7af
-#define T11 0xffff5bb1
-#define T12 0x895cd7be
-#define T13 0x6b901122
-#define T14 0xfd987193
-#define T15 0xa679438e
-#define T16 0x49b40821
-#define T17 0xf61e2562
-#define T18 0xc040b340
-#define T19 0x265e5a51
-#define T20 0xe9b6c7aa
-#define T21 0xd62f105d
-#define T22 0x02441453
-#define T23 0xd8a1e681
-#define T24 0xe7d3fbc8
-#define T25 0x21e1cde6
-#define T26 0xc33707d6
-#define T27 0xf4d50d87
-#define T28 0x455a14ed
-#define T29 0xa9e3e905
-#define T30 0xfcefa3f8
-#define T31 0x676f02d9
-#define T32 0x8d2a4c8a
-#define T33 0xfffa3942
-#define T34 0x8771f681
-#define T35 0x6d9d6122
-#define T36 0xfde5380c
-#define T37 0xa4beea44
-#define T38 0x4bdecfa9
-#define T39 0xf6bb4b60
-#define T40 0xbebfbc70
-#define T41 0x289b7ec6
-#define T42 0xeaa127fa
-#define T43 0xd4ef3085
-#define T44 0x04881d05
-#define T45 0xd9d4d039
-#define T46 0xe6db99e5
-#define T47 0x1fa27cf8
-#define T48 0xc4ac5665
-#define T49 0xf4292244
-#define T50 0x432aff97
-#define T51 0xab9423a7
-#define T52 0xfc93a039
-#define T53 0x655b59c3
-#define T54 0x8f0ccc92
-#define T55 0xffeff47d
-#define T56 0x85845dd1
-#define T57 0x6fa87e4f
-#define T58 0xfe2ce6e0
-#define T59 0xa3014314
-#define T60 0x4e0811a1
-#define T61 0xf7537e82
-#define T62 0xbd3af235
-#define T63 0x2ad7d2bb
-#define T64 0xeb86d391
-
-static void
-md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
-{
- md5_word_t
- a = pms->abcd[0], b = pms->abcd[1],
- c = pms->abcd[2], d = pms->abcd[3];
- md5_word_t t;
-
-#ifndef ARCH_IS_BIG_ENDIAN
-# define ARCH_IS_BIG_ENDIAN 1 /* slower, default implementation */
-#endif
-#if ARCH_IS_BIG_ENDIAN
-
- /*
- * On big-endian machines, we must arrange the bytes in the right
- * order. (This also works on machines of unknown byte order.)
- */
- md5_word_t X[16];
- const md5_byte_t *xp = data;
- int i;
-
- for (i = 0; i < 16; ++i, xp += 4)
- X[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
-
-#else /* !ARCH_IS_BIG_ENDIAN */
-
- /*
- * On little-endian machines, we can process properly aligned data
- * without copying it.
- */
- md5_word_t xbuf[16];
- const md5_word_t *X;
-
- if (!((data - (const md5_byte_t *)0) & 3)) {
- /* data are properly aligned */
- X = (const md5_word_t *)data;
- } else {
- /* not aligned */
- memcpy(xbuf, data, 64);
- X = xbuf;
- }
-#endif
-
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
-
- /* Round 1. */
- /* Let [abcd k s i] denote the operation
- a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
-#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
-#define SET(a, b, c, d, k, s, Ti)\
- t = a + F(b,c,d) + X[k] + Ti;\
- a = ROTATE_LEFT(t, s) + b
- /* Do the following 16 operations. */
- SET(a, b, c, d, 0, 7, T1);
- SET(d, a, b, c, 1, 12, T2);
- SET(c, d, a, b, 2, 17, T3);
- SET(b, c, d, a, 3, 22, T4);
- SET(a, b, c, d, 4, 7, T5);
- SET(d, a, b, c, 5, 12, T6);
- SET(c, d, a, b, 6, 17, T7);
- SET(b, c, d, a, 7, 22, T8);
- SET(a, b, c, d, 8, 7, T9);
- SET(d, a, b, c, 9, 12, T10);
- SET(c, d, a, b, 10, 17, T11);
- SET(b, c, d, a, 11, 22, T12);
- SET(a, b, c, d, 12, 7, T13);
- SET(d, a, b, c, 13, 12, T14);
- SET(c, d, a, b, 14, 17, T15);
- SET(b, c, d, a, 15, 22, T16);
-#undef SET
-
- /* Round 2. */
- /* Let [abcd k s i] denote the operation
- a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
-#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
- t = a + G(b,c,d) + X[k] + Ti;\
- a = ROTATE_LEFT(t, s) + b
- /* Do the following 16 operations. */
- SET(a, b, c, d, 1, 5, T17);
- SET(d, a, b, c, 6, 9, T18);
- SET(c, d, a, b, 11, 14, T19);
- SET(b, c, d, a, 0, 20, T20);
- SET(a, b, c, d, 5, 5, T21);
- SET(d, a, b, c, 10, 9, T22);
- SET(c, d, a, b, 15, 14, T23);
- SET(b, c, d, a, 4, 20, T24);
- SET(a, b, c, d, 9, 5, T25);
- SET(d, a, b, c, 14, 9, T26);
- SET(c, d, a, b, 3, 14, T27);
- SET(b, c, d, a, 8, 20, T28);
- SET(a, b, c, d, 13, 5, T29);
- SET(d, a, b, c, 2, 9, T30);
- SET(c, d, a, b, 7, 14, T31);
- SET(b, c, d, a, 12, 20, T32);
-#undef SET
-
- /* Round 3. */
- /* Let [abcd k s t] denote the operation
- a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define SET(a, b, c, d, k, s, Ti)\
- t = a + H(b,c,d) + X[k] + Ti;\
- a = ROTATE_LEFT(t, s) + b
- /* Do the following 16 operations. */
- SET(a, b, c, d, 5, 4, T33);
- SET(d, a, b, c, 8, 11, T34);
- SET(c, d, a, b, 11, 16, T35);
- SET(b, c, d, a, 14, 23, T36);
- SET(a, b, c, d, 1, 4, T37);
- SET(d, a, b, c, 4, 11, T38);
- SET(c, d, a, b, 7, 16, T39);
- SET(b, c, d, a, 10, 23, T40);
- SET(a, b, c, d, 13, 4, T41);
- SET(d, a, b, c, 0, 11, T42);
- SET(c, d, a, b, 3, 16, T43);
- SET(b, c, d, a, 6, 23, T44);
- SET(a, b, c, d, 9, 4, T45);
- SET(d, a, b, c, 12, 11, T46);
- SET(c, d, a, b, 15, 16, T47);
- SET(b, c, d, a, 2, 23, T48);
-#undef SET
-
- /* Round 4. */
- /* Let [abcd k s t] denote the operation
- a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
-#define I(x, y, z) ((y) ^ ((x) | ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
- t = a + I(b,c,d) + X[k] + Ti;\
- a = ROTATE_LEFT(t, s) + b
- /* Do the following 16 operations. */
- SET(a, b, c, d, 0, 6, T49);
- SET(d, a, b, c, 7, 10, T50);
- SET(c, d, a, b, 14, 15, T51);
- SET(b, c, d, a, 5, 21, T52);
- SET(a, b, c, d, 12, 6, T53);
- SET(d, a, b, c, 3, 10, T54);
- SET(c, d, a, b, 10, 15, T55);
- SET(b, c, d, a, 1, 21, T56);
- SET(a, b, c, d, 8, 6, T57);
- SET(d, a, b, c, 15, 10, T58);
- SET(c, d, a, b, 6, 15, T59);
- SET(b, c, d, a, 13, 21, T60);
- SET(a, b, c, d, 4, 6, T61);
- SET(d, a, b, c, 11, 10, T62);
- SET(c, d, a, b, 2, 15, T63);
- SET(b, c, d, a, 9, 21, T64);
-#undef SET
-
- /* Then perform the following additions. (That is increment each
- of the four registers by the value it had before this block
- was started.) */
- pms->abcd[0] += a;
- pms->abcd[1] += b;
- pms->abcd[2] += c;
- pms->abcd[3] += d;
-}
-
-void
-md5_init(md5_state_t *pms)
-{
- pms->count[0] = pms->count[1] = 0;
- pms->abcd[0] = 0x67452301;
- pms->abcd[1] = 0xefcdab89;
- pms->abcd[2] = 0x98badcfe;
- pms->abcd[3] = 0x10325476;
-}
-
-void
-md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
-{
- const md5_byte_t *p = data;
- int left = nbytes;
- int offset = (pms->count[0] >> 3) & 63;
- md5_word_t nbits = (md5_word_t)(nbytes << 3);
-
- if (nbytes <= 0)
- return;
-
- /* Update the message length. */
- pms->count[1] += nbytes >> 29;
- pms->count[0] += nbits;
- if (pms->count[0] < nbits)
- pms->count[1]++;
-
- /* Process an initial partial block. */
- if (offset) {
- int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
-
- memcpy(pms->buf + offset, p, copy);
- if (offset + copy < 64)
- return;
- p += copy;
- left -= copy;
- md5_process(pms, pms->buf);
- }
-
- /* Process full blocks. */
- for (; left >= 64; p += 64, left -= 64)
- md5_process(pms, p);
-
- /* Process a final partial block. */
- if (left)
- memcpy(pms->buf, p, left);
-}
-
-void
-md5_finish(md5_state_t *pms, md5_byte_t digest[16])
-{
- static const md5_byte_t pad[64] = {
- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
- md5_byte_t data[8];
- int i;
-
- /* Save the length before padding. */
- for (i = 0; i < 8; ++i)
- data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
- /* Pad to 56 bytes mod 64. */
- md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
- /* Append the length. */
- md5_append(pms, data, 8);
- for (i = 0; i < 16; ++i)
- digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
-}
diff --git a/src/tracker-thumbnailer/md5.h b/src/tracker-thumbnailer/md5.h
deleted file mode 100644
index a2d7b3415..000000000
--- a/src/tracker-thumbnailer/md5.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- Copyright (C) 1999 Aladdin Enterprises. All rights reserved.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- L. Peter Deutsch
- ghost@aladdin.com
-
- */
-/*$Id$ */
-/*
- Independent implementation of MD5 (RFC 1321).
-
- This code implements the MD5 Algorithm defined in RFC 1321.
- It is derived directly from the text of the RFC and not from the
- reference implementation.
-
- The original and principal author of md5.h is L. Peter Deutsch
- <ghost@aladdin.com>. Other authors are noted in the change history
- that follows (in reverse chronological order):
-
- 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
- 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
- added conditionalization for C++ compilation from Martin
- Purschke <purschke@bnl.gov>.
- 1999-05-03 lpd Original version.
- */
-
-#ifndef md5_INCLUDED
-# define md5_INCLUDED
-
-/*
- * This code has some adaptations for the Ghostscript environment, but it
- * will compile and run correctly in any environment with 8-bit chars and
- * 32-bit ints. Specifically, it assumes that if the following are
- * defined, they have the same meaning as in Ghostscript: P1, P2, P3,
- * ARCH_IS_BIG_ENDIAN.
- */
-
-typedef unsigned char md5_byte_t; /* 8-bit byte */
-typedef unsigned int md5_word_t; /* 32-bit word */
-
-/* Define the state of the MD5 Algorithm. */
-typedef struct md5_state_s {
- md5_word_t count[2]; /* message length in bits, lsw first */
- md5_word_t abcd[4]; /* digest buffer */
- md5_byte_t buf[64]; /* accumulate block */
-} md5_state_t;
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Initialize the algorithm. */
-#ifdef P1
-void md5_init(P1(md5_state_t *pms));
-#else
-void md5_init(md5_state_t *pms);
-#endif
-
-/* Append a string to the message. */
-#ifdef P3
-void md5_append(P3(md5_state_t *pms, const md5_byte_t *data, int nbytes));
-#else
-void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
-#endif
-
-/* Finish the message and return the digest. */
-#ifdef P2
-void md5_finish(P2(md5_state_t *pms, md5_byte_t digest[16]));
-#else
-void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
-#endif
-
-#ifdef __cplusplus
-} /* end extern "C" */
-#endif
-
-#endif /* md5_INCLUDED */
diff --git a/src/tracker-thumbnailer/tracker-thumbnailer.c b/src/tracker-thumbnailer/tracker-thumbnailer.c
deleted file mode 100644
index d5fa3c4b5..000000000
--- a/src/tracker-thumbnailer/tracker-thumbnailer.c
+++ /dev/null
@@ -1,286 +0,0 @@
-
-/* tracker-thumbnailer
- * Copyright (C) 2006, Edward Duffy <eduffy@gmail.com>
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <png.h>
-#include "md5.h"
-
-#ifdef OS_WIN32
-#include <Windows.h>
-
-#define _fullpath_internal(res,path,size) \
- (GetFullPathName ((path), (size), (res), NULL) ? (res) : NULL)
-#define realpath(path,resolved_path) _fullpath_internal(resolved_path, path, MAX_PATH)
-#endif
-
-#ifndef LIBDIR
-#define LIBDIR "/usr/lib"
-#endif
-
-guint
-create_thumbnails_dir (const gchar * const subdir)
-{
- gchar *thumbnails_dir = NULL;
- thumbnails_dir = g_build_filename (g_get_home_dir(), ".thumbnails", NULL);
-
- /* Ensure that ~/.thumbnails is not a file if it exists */
- if (g_file_test (thumbnails_dir, G_FILE_TEST_EXISTS) &&
- !g_file_test (thumbnails_dir, G_FILE_TEST_IS_DIR)) {
- g_printerr ("%s exists but is not a directory.\n", thumbnails_dir);
- goto error;
- }
-
- g_free (thumbnails_dir);
- thumbnails_dir = g_build_filename (g_get_home_dir(), ".thumbnails", subdir, NULL);
- if (g_mkdir_with_parents (thumbnails_dir, 00775) == -1) {
- g_printerr ("failed: g_mkdir_with_parents (%s)\n", thumbnails_dir);
- goto error;
- }
-
- g_free (thumbnails_dir);
- return 0;
-
-error:
- g_free (thumbnails_dir);
- return -1;
-}
-
-/* argv[1] == full path of file to be nailed
- * argv[2] == mime type of said file
- * argv[3] == requested size: "normal", "large", "preview"
- */
-
-int main (int argc, char *argv[])
-{
- gchar *uri;
- gchar realname[MAXPATHLEN];
- struct stat stat_info;
- gchar *mtime;
- md5_state_t hash_state;
- guchar hash[16];
- gchar uri_hash[21], *p;
- int i;
- guint32 j;
- gchar *thumbnail_filename;
- FILE *fp;
- png_structp png_ptr;
- png_infop info_ptr;
- png_textp pngtext;
- int count, tests_passed;
- gchar *thumbnailer;
- gchar *args[5];
- png_uint_32 width, height;
- int bit_depth, color_type, interlace_method;
- int compression_method, filter_method;
- png_colorp palette;
- int num_palette;
- png_bytepp row_pointers;
-
- /* only make normal size thumbnails for now */
- if (strcmp (argv[3], "normal") != 0) {
- g_printerr ("Only normal sized thumbnails are supported\n");
- return EXIT_FAILURE;
- }
-
- if (create_thumbnails_dir (argv[3]) != 0)
- return EXIT_FAILURE;
-
- /* make sure the actual file exists */
- if (!g_file_test (argv[1], G_FILE_TEST_EXISTS)) {
- g_printerr ("%s does not exist\n", argv[1]);
- return EXIT_FAILURE;
- }
-
- /* g_filename_to_uri needs an absolute filename */
- if (!realpath (argv[1], realname)) {
- g_printerr("could not resolve absolute pathname for %s\n", argv[1]);
- return EXIT_FAILURE;
- }
-
- /* convert file name to URI */
- uri = g_filename_to_uri (realname, NULL, NULL);
-
- /* get stat information on the file */
- if (g_stat (argv[1], &stat_info) == -1) {
- g_printerr ("stat () failed for %s\n", argv[1]);
- return EXIT_FAILURE;
- }
- mtime = g_strdup_printf ("%lu", stat_info.st_mtime);
-
- /* create path to thumbnail */
- md5_init (&hash_state);
- md5_append (&hash_state, (guchar *)uri, strlen (uri));
- md5_finish (&hash_state, hash);
- p = uri_hash;
- for (i = 0; i < 16; i++) {
- g_sprintf (p, "%02x", hash[i]);
- p += 2;
- }
- g_sprintf (p, ".png");
- thumbnail_filename = g_build_filename (
- g_get_home_dir (), ".thumbnails", argv[3], uri_hash, NULL);
-
- /* check to see if the thumbnail already exists */
- if (g_file_test (thumbnail_filename, G_FILE_TEST_EXISTS)) {
- g_printerr ("%s exists\n", thumbnail_filename);
-
- /* thumbnail exists; but is it valid? */
- g_assert ((fp = g_fopen (thumbnail_filename, "r")));
- g_assert ((png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)));
- g_assert ((info_ptr = png_create_info_struct (png_ptr)));
- png_init_io (png_ptr, fp);
- png_read_info (png_ptr, info_ptr);
- i = png_get_text (png_ptr, info_ptr, &pngtext, &count);
- tests_passed = 0;
- for (i = 0; i < count; i++) {
- if (strcmp (pngtext[i].key, "Thumb::URI") == 0 && strcmp (pngtext[i].text, uri) == 0) {
- ++tests_passed;
- }
- else if (strcmp (pngtext[i].key, "Thumb::MTime") == 0 && strcmp (pngtext[i].text, mtime) == 0) {
- ++tests_passed;
- }
- }
- fclose (fp);
- if (tests_passed == 2) {
- g_printerr ("Thumbnail valid\n");
- g_print ("%s\n", thumbnail_filename);
- return EXIT_SUCCESS;
- }
- g_printerr ("Not all tests passed. Recreating thumbnail...\n");
- }
- /* thumbnail either doesn't exist or is invalid; contiue... */
-
- /* do we have a thumbnailer for this mime type? */
- thumbnailer = g_strconcat (LIBDIR "/tracker/thumbnailers/",
- argv[2], "_thumbnailer", NULL);
-
- if (!g_file_test (thumbnailer, G_FILE_TEST_EXISTS)) {
- g_printerr ("%s not found\n", thumbnailer);
- return EXIT_FAILURE;
- }
-
- /* execute the thumbnailer */
- args[0] = thumbnailer;
- args[1] = g_filename_from_utf8 (argv[1], -1, NULL, NULL, NULL);
- args[2] = thumbnail_filename;
- if (strcmp (argv[3], "normal") == 0)
- args[3] = g_strdup ("128");
- args[4] = NULL;
-
- if (!g_spawn_sync (NULL, args, NULL,
- G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
- NULL, NULL, NULL, NULL, NULL, NULL)) {
-
- g_printerr ("%s failed to create %s\n", thumbnailer, thumbnail_filename);
- g_remove (thumbnail_filename);
- return EXIT_FAILURE;
- }
-
- /* the fd.o spec requires us to set certain PNG keys. As far as I can
- * see, libpng doesn't allow you to just set metadata, you have to do
- * that when you create the file. Therefore, we need to copy the newly
- * created thumbnail into a new one while setting the required attributes
- */
-
- /* read in the thumbnail into a buffer */
-
- if (!g_file_test (thumbnail_filename, G_FILE_TEST_EXISTS)) {
- return EXIT_FAILURE;
- }
-
- g_assert ((fp = g_fopen (thumbnail_filename, "r")));
- g_assert ((png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)));
- g_assert ((info_ptr = png_create_info_struct (png_ptr)));
-
- if (setjmp (png_jmpbuf (png_ptr))) {
- g_printerr ("Error reading thumbnail\n");
- fclose (fp);
- g_remove (thumbnail_filename);
- return EXIT_FAILURE;
- }
-
- png_init_io (png_ptr, fp);
- png_read_info (png_ptr, info_ptr);
-
- g_assert ((1 == png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_method, &compression_method, &filter_method)));
-
- png_get_PLTE (png_ptr, info_ptr, &palette, &num_palette);
-
- row_pointers = g_new (png_bytep, height);
- for (j = 0; j < height; j++) {
- row_pointers[j] = (png_bytep) malloc (png_get_rowbytes (png_ptr, info_ptr));
- }
- png_read_image (png_ptr, row_pointers);
- png_read_end (png_ptr, NULL);
- fclose (fp);
-
- /* write the new thumbnail (overwrites the old) */
- g_assert ((fp = g_fopen (thumbnail_filename, "w")));
- g_assert ((png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)));
- g_assert ((info_ptr = png_create_info_struct (png_ptr)));
-
- if (setjmp (png_jmpbuf (png_ptr))) {
- g_printerr ("Error creating thumbnail\n");
- fclose (fp);
- g_remove (thumbnail_filename);
- return EXIT_FAILURE;
- }
-
- png_init_io (png_ptr, fp);
-
- png_set_IHDR (png_ptr, info_ptr, width, height, bit_depth, color_type, interlace_method, compression_method, filter_method);
-
- if (palette && num_palette > 0)
- png_set_PLTE (png_ptr, info_ptr, palette, num_palette);
-
- /* set the required fields */
- pngtext = g_new0 (png_text, 3);
- pngtext[0].key = "Thumb::URI";
- pngtext[0].text = uri;
- pngtext[0].text_length = strlen (uri);
- pngtext[0].compression = PNG_TEXT_COMPRESSION_NONE;
- pngtext[1].key = "Thumb::MTime";
- pngtext[1].text = mtime;
- pngtext[1].text_length = strlen (mtime);
- pngtext[1].compression = PNG_TEXT_COMPRESSION_NONE;
- /* set some optional fields */
- pngtext[2].key = "Software";
- pngtext[2].text = "Tracker thumbnail factory";
- pngtext[2].compression = PNG_TEXT_COMPRESSION_NONE;
- png_set_text(png_ptr, info_ptr, pngtext, 3);
-
- png_write_info (png_ptr, info_ptr);
- png_write_image (png_ptr, row_pointers);
- png_write_end (png_ptr, info_ptr);
- fclose (fp);
-
- /* if we get here, everything must have succeeded */
- g_print ("%s\n", thumbnail_filename);
- return EXIT_SUCCESS;
-}
diff --git a/src/trackerd/Makefile.am b/src/trackerd/Makefile.am
deleted file mode 100644
index dfec4f5f6..000000000
--- a/src/trackerd/Makefile.am
+++ /dev/null
@@ -1,159 +0,0 @@
-module_flags = -module -avoid-version -no-undefined
-mail_modulesdir = $(libdir)/tracker/mail-modules
-
-INCLUDES = \
- -DSHAREDIR=\""$(datadir)"\" \
- -DLIBDIR=\""$(libdir)"\" \
- -DLOCALEDIR=\""$(localedir)"\" \
- $(GLIB2_CFLAGS) \
- $(GMODULE_CFLAGS) \
- $(PANGO_CFLAGS) \
- $(GMIME_CFLAGS) \
- $(HAL_CFLAGS) \
- $(FAM_CFLAGS) \
- $(DBUS_CFLAGS) \
- $(SQLITE3_CFLAGS) \
- $(QDBM_CFLAGS) \
- $(UNAC_CFLAGS) \
- -DMAIL_MODULES_DIR=\"$(mail_modulesdir)\" \
- -I$(top_srcdir)/src
-
-if HAVE_INOTIFY
-watch_sources = \
- linux-inotify-syscalls.h \
- tracker-inotify.c
-else
-if HAVE_FAM
-watch_sources = tracker-fam.c
-else
-if OS_WIN32
-watch_sources = tracker-win-fs-changes.c
-else
-watch_sources = tracker-poll.c
-endif
-endif
-endif
-
-if OS_WIN32
-win_sources = tracker-os-dependant-win.c
-else
-unix_sources = tracker-os-dependant-unix.c
-endif
-
-if HAVE_HAL
-hal_sources = \
- tracker-hal.c \
- tracker-hal.h
-endif
-
-db_sources = \
- tracker-indexer.c \
- tracker-indexer.h \
- tracker-cache.c \
- tracker-cache.h \
- tracker-parser.c \
- tracker-parser.h \
- tracker-db-interface.c \
- tracker-db-interface.h \
- tracker-db-interface-sqlite.c \
- tracker-db-interface-sqlite.h \
- tracker-db-sqlite.c \
- tracker-db-sqlite.h \
- tracker-db-email.c \
- tracker-db-email.h
-
-
-bin_PROGRAMS = trackerd
-
-trackerd_SOURCES = \
- trackerd.c \
- $(watch_sources) \
- $(win_sources) \
- $(unix_sources) \
- $(hal_sources) \
- $(db_sources) \
- tracker-apps.c \
- tracker-apps.h \
- tracker-db.c \
- tracker-db.h \
- tracker-dbus.c \
- tracker-dbus.h \
- tracker-dbus-files.c \
- tracker-dbus-files.h \
- tracker-dbus-methods.c \
- tracker-dbus-methods.h \
- tracker-dbus-metadata.c \
- tracker-dbus-metadata.h \
- tracker-dbus-keywords.c \
- tracker-dbus-keywords.h \
- tracker-dbus-search.c \
- tracker-dbus-search.h \
- tracker-email.c \
- tracker-email.h \
- tracker-email-utils.c \
- tracker-email-utils.h \
- tracker-metadata.c \
- tracker-metadata.h \
- tracker-process-files.c \
- tracker-process-files.h \
- tracker-process-requests.c \
- tracker-process-requests.h \
- tracker-query-tree.c \
- tracker-query-tree.h \
- tracker-rdf-query.c \
- tracker-rdf-query.h \
- tracker-utils.c \
- tracker-utils.h \
- tracker-service.c \
- tracker-service.h \
- tracker-service-manager.c \
- tracker-service-manager.h \
- tracker-ioprio.c \
- tracker-ioprio.h \
- tracker-os-dependant.h \
- tracker-watch.h
-
-if OS_WIN32
-trackerd_win_libs = -lws2_32 -lkernel32
-endif
-
-trackerd_LDADD = \
- $(GLIB2_LIBS) \
- $(GMODULE_LIBS) \
- $(FAM_LIBS) \
- $(DBUS_LIBS) \
- $(PANGO_LIBS) \
- $(GMIME_LIBS) \
- $(HAL_LIBS) \
- $(SQLITE3_LIBS) \
- $(QDBM_LIBS) \
- $(UNAC_LIBS) \
- $(GTHREAD_LIBS) \
- -lz \
- -lm \
- $(top_builddir)/src/libtracker-common/libtracker-common.la \
- $(top_builddir)/src/libstemmer/libstemmer-private.la \
- $(top_builddir)/src/xdgmime/libxdgmime.la \
- $(trackerd_win_libs)
-
-mail_modules_LTLIBRARIES = \
- libemail-evolution.la \
- libemail-thunderbird.la \
- libemail-kmail.la \
- libemail-modest.la
-
-libemail_modest_la_SOURCES = tracker-email-modest.c tracker-email-modest.h
-libemail_modest_la_LDFLAGS = $(module_flags)
-libemail_modest_la_LIBADD = $(GLIB2_LIBS)
-
-libemail_evolution_la_SOURCES = tracker-email-evolution.c
-libemail_evolution_la_LDFLAGS = $(module_flags)
-libemail_evolution_la_LIBADD = $(GLIB2_LIBS)
-
-libemail_thunderbird_la_SOURCES = tracker-email-thunderbird.c
-libemail_thunderbird_la_LDFLAGS = $(module_flags)
-libemail_thunderbird_la_LIBADD = $(GLIB2_LIBS)
-
-libemail_kmail_la_SOURCES = tracker-email-kmail.c
-libemail_kmail_la_LDFLAGS = $(module_flags)
-libemail_kmail_la_LIBADD = $(GLIB2_LIBS)
diff --git a/src/trackerd/linux-inotify-syscalls.h b/src/trackerd/linux-inotify-syscalls.h
deleted file mode 100644
index c7194487c..000000000
--- a/src/trackerd/linux-inotify-syscalls.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * wrapping of libc features and kernel interfaces
- *
- * Copyright (C) 2005-2006 Kay Sievers <kay.sievers@vrfy.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef _UDEV_SYSDEPS_H_
-#define _UDEV_SYSDEPS_H_
-
-#include <sys/syscall.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdint.h>
-
-/* needed until Inotify! syscalls reach glibc */
-
-#ifndef __NR_inotify_init
-#if defined(__i386__)
-# define __NR_inotify_init 291
-# define __NR_inotify_add_watch 292
-# define __NR_inotify_rm_watch 293
-#elif defined(__x86_64__)
-# define __NR_inotify_init 253
-# define __NR_inotify_add_watch 254
-# define __NR_inotify_rm_watch 255
-#elif defined(__powerpc__) || defined(__powerpc64__)
-# define __NR_inotify_init 275
-# define __NR_inotify_add_watch 276
-# define __NR_inotify_rm_watch 277
-#elif defined (__ia64__)
-# define __NR_inotify_init 1277
-# define __NR_inotify_add_watch 1278
-# define __NR_inotify_rm_watch 1279
-#elif defined (__s390__)
-# define __NR_inotify_init 284
-# define __NR_inotify_add_watch 285
-# define __NR_inotify_rm_watch 286
-#elif defined (__mc68000__)
-# define __NR_inotify_init 284
-# define __NR_inotify_add_watch 285
-# define __NR_inotify_rm_watch 286
-#elif defined (__alpha__)
-# define __NR_inotify_init 444
-# define __NR_inotify_add_watch 445
-# define __NR_inotify_rm_watch 446
-#elif defined (__sparc__) || defined (__sparc64__)
-# define __NR_inotify_init 151
-# define __NR_inotify_add_watch 152
-# define __NR_inotify_rm_watch 156
-#elif defined (__arm__)
-# define __NR_inotify_init __NR_SYSCALL_BASE+316
-# define __NR_inotify_add_watch __NR_SYSCALL_BASE+317
-# define __NR_inotify_rm_watch __NR_SYSCALL_BASE+318
-#elif defined (__sh__)
-# define __NR_inotify_init 290
-# define __NR_inotify_add_watch 291
-# define __NR_inotify_rm_watch 292
-#elif defined (__m32r__)
-# define __NR_inotify_init 290
-# define __NR_inotify_add_watch 291
-# define __NR_inotify_rm_watch 292
-#elif defined (__hppa__)
-# define __NR_inotify_init 269
-# define __NR_inotify_add_watch 270
-# define __NR_inotify_rm_watch 271
-#elif defined (__mips__)
-# include <sgidefs.h>
-# if _MIPS_SIM == _MIPS_SIM_ABI32
-# define __NR_Linux 4000
-# define __NR_inotify_init (__NR_Linux + 284)
-# define __NR_inotify_add_watch (__NR_Linux + 285)
-# define __NR_inotify_rm_watch (__NR_Linux + 286)
-# elif _MIPS_SIM == _MIPS_SIM_ABI64
-# define __NR_Linux 5000
-# define __NR_inotify_init (__NR_Linux + 243)
-# define __NR_inotify_add_watch (__NR_Linux + 244)
-# define __NR_inotify_rm_watch (__NR_Linux + 245)
-# elif _MIPS_SIM == _MIPS_SIM_NABI32
-# define __NR_Linux 6000
-# define __NR_inotify_init (__NR_Linux + 247)
-# define __NR_inotify_add_watch (__NR_Linux + 248)
-# define __NR_inotify_rm_watch (__NR_Linux + 249)
-# endif
-#else
-#warning "inotify unsupported on this architecture!"
-#endif
-#endif /* __NR_inotify_init */
-
-/* dummy if we don't have the syscalls defined */
-#ifndef __NR_inotify_init
-static inline int inotify_init(void)
-{
- return -1;
-}
-
-static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
-{
- return -1;
-}
-#else
-/* needed until /usr/include/sys/inotify.h is working */
-#ifndef __GLIBC__
-#include <sys/inotify.h>
-#else
-static inline int inotify_init(void)
-{
- return syscall(__NR_inotify_init);
-}
-
-static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
-{
- return syscall(__NR_inotify_add_watch, fd, name, mask);
-}
-
-static inline int inotify_rm_watch (int fd, uint32_t wd)
-{
- return syscall(__NR_inotify_rm_watch, fd, wd);
-}
-
-
-#endif /* __GLIBC__ */
-#endif /* __NR_inotify_init */
-
-#ifndef IN_CREATE
-#define IN_CREATE 0x00000100 /* Subfile was created */
-#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
-#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
-#define IN_DELETE 0x00000200 /* Subfile was deleted */
-#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
-#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
-#endif /* IN_CREATE */
-
-/* needed for our signal handlers to work */
-#undef asmlinkage
-#ifdef __i386__
-#define asmlinkage __attribute__((regparm(0)))
-#else
-#define asmlinkage
-#endif /* __i386__ */
-
-/* headers are broken on some architectures */
-#ifndef __FD_SET
-#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
-#endif
-#ifndef __FD_CLR
-#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
-#endif
-#ifndef __FD_ISSET
-#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)
-#endif
-#ifndef __FD_ZERO
-#define __FD_ZERO(set) ((void) memset ((void*) (set), 0, sizeof (fd_set)))
-#endif
-
-#ifndef NETLINK_KOBJECT_UEVENT
-#define NETLINK_KOBJECT_UEVENT 15
-#endif
-
-#ifndef SO_RCVBUFFORCE
-#if defined(__alpha__) || defined(__hppa__) || defined(__sparc__) || defined(__sparc_v9__)
-#define SO_RCVBUFFORCE 0x100b
-#else
-#define SO_RCVBUFFORCE 33
-#endif
-#endif
-
-extern size_t strlcpy(char *dst, const char *src, size_t size);
-extern size_t strlcat(char *dst, const char *src, size_t size);
-
-#endif
diff --git a/src/trackerd/mingw-compat.h b/src/trackerd/mingw-compat.h
deleted file mode 100644
index 6e593204d..000000000
--- a/src/trackerd/mingw-compat.h
+++ /dev/null
@@ -1,109 +0,0 @@
-#ifndef MINGW_COMPAT_H
-#define MINGW_COMPAT_H
-
-#include <Windows.h>
-
-#define _fullpath_internal(res,path,size) \
- (GetFullPathName ((path), (size), (res), NULL) ? (res) : NULL)
-
-#define realpath(path,resolved_path) _fullpath_internal(resolved_path, path, MAX_PATH)
-
-#define getc_unlocked(s) getc(s)
-
-#define RLIMIT_CPU 0 /* CPU time in seconds */
-#define RLIMIT_AS 6 /* address space (virt. memory) limit */
-typedef unsigned long rlim_t;
-
-struct rlimit {
- rlim_t rlim_cur;
- rlim_t rlim_max;
-};
-
-#define localtime_r( _clock, _result ) \
- ( *(_result) = *localtime( (_clock) ), \
- (_result) )
-
-#include <time.h>
-#include <sys/time.h>
-#include <sys/timeb.h>
-
-struct timezone {
- int tz_minuteswest; /* minutes west of Greenwich */
- int tz_dsttime; /* type of dst correction */
- };
-
-static int gettimeofday (struct timeval *tv, struct timezone *tz)
-{
- struct _timeb tb;
-
- if (!tv)
- return (-1);
-
- _ftime (&tb);
- tv->tv_sec = tb.time;
- tv->tv_usec = tb.millitm * 1000 + 500;
- if (tz)
- {
- tz->tz_minuteswest = -60 * _timezone;
- tz->tz_dsttime = _daylight;
- }
- return (0);
-}
-
-// Does not exist in a windows filesystem
-#define S_IFLNK 0
-#define S_IFSOCK 0
-#define S_ISVTX 0
-#define S_ISLNK(X) 0
-#define S_ISUID 0
-#define S_ISGID 0
-#define S_ISGRP 0
-#define S_IXOTH 0
-#define S_IXGRP 0
-
-#define link(from, to) 0
-
-#define _LK_UNLCK 0 /* Unlock */
-#define _LK_LOCK 1 /* Lock */
-#define _LK_NBLCK 2 /* Non-blocking lock */
-#define _LK_RLCK 3 /* Lock for read only */
-#define _LK_NBRLCK 4 /* Non-blocking lock for read only */
-
-#define F_TLOCK _LK_NBLCK /* Test and lock a section for exclusive use */
-
-#ifndef SIGHUP
-#define SIGHUP 1 /* hangup */
-#endif
-#ifndef SIGBUS
-#define SIGBUS 7 /* bus error */
-#endif
-#ifndef SIGKILL
-#define SIGKILL 9 /* kill (cannot be caught or ignored) */
-#endif
-#ifndef SIGSEGV
-#define SIGSEGV 11 /* segment violation */
-#endif
-#ifndef SIGPIPE
-#define SIGPIPE 13 /* write on a pipe with no one to read it */
-#endif
-#ifndef SIGCHLD
-#define SIGCHLD 20 /* to parent on child stop or exit */
-#endif
-#ifndef SIGUSR1
-#define SIGUSR1 30 /* user defined signal 1 */
-#endif
-#ifndef SIGUSR2
-#define SIGUSR2 31 /* user defined signal 2 */
-#endif
-
-#define sigemptyset(pset) (*(pset) = 0)
-#define sigfillset(pset) (*(pset) = (unsigned int)-1)
-#define sigaddset(pset, num) (*(pset) |= (1L<<(num)))
-#define sigdelset(pset, num) (*(pset) &= ~(1L<<(num)))
-#define sigismember(pset, num) (*(pset) & (1L<<(num)))
-
-#define lockf _locking
-
-#define nice(nice_level) 0
-
-#endif
diff --git a/src/trackerd/tracker-apps.c b/src/trackerd/tracker-apps.c
deleted file mode 100644
index 2457f22d9..000000000
--- a/src/trackerd/tracker-apps.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Tracker
- * routines for applications
- * Copyright (C) 2007, Marcus Rosell (mudflap75@gmail.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-apps.h"
-#include "tracker-db.h"
-
-void
-tracker_applications_add_service_directories (void)
-{
- if (1) { /* TODO: configurable.. tracker->index_applications? */
-
- char *value = NULL;
- gchar *dir = NULL;
-
- value = getenv ("XDG_DATA_HOME");
- if (value) {
- dir = g_strdup_printf ("%s/applications", value);
- } else {
- dir = g_strdup_printf ("%s/.local/share/applications", g_get_home_dir());
-
- }
-
- /* Add user defined applications path to service directory list */
- if (dir) {
- tracker_log ("Registering path %s as belonging to service Applications", dir);
- tracker_add_service_path ("Applications", dir);
- g_free (dir);
- }
-
- /* Add system defined applications path to service directory list */
- value = getenv ("XDG_DATA_DIRS");
- if (value != NULL) {
- gchar **dir_array;
- dir_array = g_strsplit (value, ":", 0);
-
- gint i;
- for (i = 0; dir_array[i] != NULL; ++i) {
- dir = g_strdup_printf ("%s/applications", dir_array[i]);
- tracker_info ("Registering path %s as belonging to service Applications", dir);
- tracker_add_service_path ("Applications", dir);
- g_free (dir);
- }
- g_strfreev (dir_array);
-
- } else {
- tracker_log ("Registering path %s as belonging to service Applications", "/usr/local/share/applications");
- tracker_log ("Registering path %s as belonging to service Applications", "/usr/share/applications");
- tracker_add_service_path ("Applications", "/usr/local/share/applications");
- tracker_add_service_path ("Applications", "/usr/share/applications");
- }
- }
-}
-
-static void
-free_metadata_list (gpointer key, gpointer value, gpointer data)
-{
- GSList *list = value;
-
- g_slist_foreach (list, (GFunc) g_free, NULL);
- g_slist_free (list);
-
-}
-
-void
-tracker_db_index_application (DBConnection *db_con, FileInfo *info)
-{
- /* Index application metadata from .desktop files */
-
- GHashTable *meta_table;
-
- GError *error = NULL;
- GKeyFile *key_file = NULL;
-
- gchar *type = NULL;
- gboolean is_hidden = FALSE;
- char *hidden = NULL;
- gchar *tmp_str = NULL;
- gchar desktop_entry[] = { "Desktop Entry" };
- char **mimes = NULL;
- char **categories = NULL;
-
- const char *file_name = "File:Name";
- const char *app_name = "App:Name";
- const char *app_display_name = "App:DisplayName";
- const char *app_generic_name = "App:GenericName";
- const char *app_comment = "App:Comment";
- const char *app_exec = "App:Exec";
- const char *app_icon = "App:Icon";
- const char *app_mime_type = "App:MimeType";
- const char *app_categories = "App:Categories";
-
- /* Check (to be sure) if this is a .desktop file */
- if (g_str_has_suffix (info->uri, ".desktop") == FALSE) return;
-
- const gchar * const *locale_array;
- locale_array = g_get_language_names();
-
- key_file = g_key_file_new();
-
- if (g_key_file_load_from_file (key_file, info->uri, G_KEY_FILE_NONE, &error) == TRUE) {
-
- type = g_key_file_get_string (key_file, desktop_entry, "Type", NULL);
- hidden = g_key_file_get_string (key_file, desktop_entry, "Hidden", NULL);
-
- if (hidden) {
- is_hidden = (strcasecmp (hidden, "true") == 0);
- g_free (hidden);
- hidden = NULL;
- }
-
- if (!is_hidden && type && (strcasecmp (type, "Application") == 0)) {
-
- meta_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- if ((tmp_str = g_key_file_get_string (key_file, desktop_entry, "Name", NULL)) != NULL) {
- tracker_add_metadata_to_table (meta_table, app_name, tmp_str);
- }
-
- if ((tmp_str = g_key_file_get_locale_string (key_file, desktop_entry, "Name", locale_array[0], NULL)) != NULL) {
- tracker_add_metadata_to_table (meta_table, app_display_name, tmp_str);
- }
-
- if ((tmp_str = g_key_file_get_locale_string (key_file, desktop_entry, "GenericName", locale_array[0], NULL)) != NULL) {
- tracker_add_metadata_to_table (meta_table, app_generic_name, tmp_str);
- }
-
- if ((tmp_str = g_key_file_get_locale_string (key_file, desktop_entry, "Comment", locale_array[0], NULL)) != NULL) {
- tracker_add_metadata_to_table (meta_table, app_comment, tmp_str);
- }
-
- if ((tmp_str = g_key_file_get_string (key_file, desktop_entry, "Exec", NULL)) != NULL) {
- tracker_add_metadata_to_table (meta_table, app_exec, tmp_str);
- }
-
- if ((tmp_str = g_key_file_get_string (key_file, desktop_entry, "Icon", NULL)) != NULL) {
- tracker_add_metadata_to_table (meta_table, app_icon, tmp_str);
- }
-
-
- if ((mimes = g_key_file_get_string_list (key_file, desktop_entry, "MimeType", NULL, NULL)) != NULL) {
- char **array;
-
- for (array = mimes; *array; array++) {
- tracker_add_metadata_to_table (meta_table, app_mime_type, g_strdup (*array));
- }
-
- g_strfreev (mimes);
- }
-
- if ((categories = g_key_file_get_string_list (key_file, desktop_entry, "Categories", NULL, NULL)) != NULL) {
- char **array;
-
- for (array = categories; *array; array++) {
- tracker_add_metadata_to_table (meta_table, app_categories, g_strdup (*array));
- }
-
- g_strfreev (categories);
- }
-
- char *fname = g_path_get_basename (info->uri);
-
- /* remove desktop extension */
- int l = strlen (fname) - 8;
- fname[l] = '\0';
-
- tracker_add_metadata_to_table (meta_table, file_name, fname);
-
-
-// info->mime = g_strdup ("unknown");
- tracker_db_index_service (db_con, info, "Applications", meta_table, NULL, FALSE, TRUE, FALSE, FALSE);
-
-
- g_hash_table_foreach (meta_table, (GHFunc) free_metadata_list, NULL);
- g_hash_table_destroy (meta_table);
- }
-
- g_key_file_free (key_file);
- g_free (type);
- }
-}
-
diff --git a/src/trackerd/tracker-apps.h b/src/trackerd/tracker-apps.h
deleted file mode 100644
index 459a67386..000000000
--- a/src/trackerd/tracker-apps.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Tracker
- * routines for applications
- * Copyright (C) 2007, Marcus Rosell (mudflap75@gmail.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_APPS_H_
-#define _TRACKER_APPS_H_
-
-#include "tracker-utils.h"
-
-#include "config.h"
-
-#include "tracker-db-sqlite.h"
-
-void tracker_applications_add_service_directories (void);
-void tracker_db_index_application (DBConnection *db_con, FileInfo *info);
-
-#endif
diff --git a/src/trackerd/tracker-cache.c b/src/trackerd/tracker-cache.c
deleted file mode 100644
index e87c03ca3..000000000
--- a/src/trackerd/tracker-cache.c
+++ /dev/null
@@ -1,421 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <sqlite3.h>
-#include <unistd.h>
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-config.h>
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-utils.h"
-#include "tracker-dbus.h"
-#include "tracker-cache.h"
-
-#define USE_SLICE
-
-extern Tracker *tracker;
-
-typedef struct
-{
- Indexer *file_index;
- Indexer *file_update_index;
- Indexer *email_index;
-
-
-} IndexConnection;
-
-
-static Indexer *
-create_merge_index (const char *name)
-{
- Indexer *indexer;
- char *temp_file_name;
- int i;
-
- for (i=1; i < 1000; i++) {
- temp_file_name = g_strdup_printf ("%s%d", name, i);
-
- char *tmp = g_build_filename (tracker->data_dir, temp_file_name, NULL);
-
- if (g_file_test (tmp , G_FILE_TEST_EXISTS)) {
- g_free (temp_file_name);
- g_free (tmp);
- continue;
- }
- g_free (tmp);
- break;
- }
-
- indexer = tracker_indexer_open (temp_file_name, FALSE);
-
- g_free (temp_file_name);
-
- return indexer;
-}
-
-
-
-static gint
-flush_all_file_words ( gpointer key,
- gpointer value,
- gpointer data)
-{
- IndexConnection *index_con = data;
-
- GByteArray *array = value;
-
- if (array) {
-
- tracker_indexer_append_word_chunk (index_con->file_index, key, (WordDetails *) array->data, (array->len / sizeof (WordDetails)));
-
- g_byte_array_free (array, TRUE);
- }
-
- g_free (key);
-
- return 1;
-}
-
-
-static gint
-flush_all_file_update_words ( gpointer key,
- gpointer value,
- gpointer data)
-{
- IndexConnection *index_con = data;
-
- GByteArray *array = value;
-
- if (array) {
-
- tracker_indexer_update_word_chunk (index_con->file_update_index, key, (WordDetails *) array->data, (array->len / sizeof (WordDetails)));
-
- g_byte_array_free (array, TRUE);
- }
-
- g_free (key);
-
- return 1;
-}
-
-
-static gint
-flush_all_email_words ( gpointer key,
- gpointer value,
- gpointer data)
-{
- IndexConnection *index_con = data;
-
- GByteArray *array = value;
-
- if (array) {
-
- tracker_indexer_append_word_chunk (index_con->email_index, key, (WordDetails *) array->data, (array->len / sizeof (WordDetails)));
-
- g_byte_array_free (array, TRUE);
- }
-
- g_free (key);
-
- return 1;
-}
-
-void
-tracker_cache_flush_all ()
-{
- IndexConnection index_con;
- gboolean using_file_tmp = FALSE, using_email_tmp = FALSE;
-
- if (tracker->word_count == 0 && tracker->word_update_count == 0) {
- return;
- }
-
- tracker_log ("Flushing all words - total hits in cache is %d, total words %d", tracker->word_detail_count, tracker->word_count);
-
- /* if word count is small then flush to main index rather than a new temp index */
- if (tracker->word_count < 1500) {
-
- index_con.file_index = tracker->file_index;
- index_con.email_index = tracker->email_index;
-
- } else {
-
- /* determine is index has been written to significantly before and create new ones if so */
- if (tracker_indexer_size (tracker->file_index) > 4000000) {
- index_con.file_index = create_merge_index ("file-index.tmp.");
- tracker_log ("flushing to %s", tracker_indexer_get_name (index_con.file_index));
- using_file_tmp = TRUE;
- } else {
- index_con.file_index = tracker->file_index;
- }
-
- if (tracker_indexer_size (tracker->email_index) > 4000000) {
- index_con.email_index = create_merge_index ("email-index.tmp.");
- tracker_log ("flushing to %s", tracker_indexer_get_name (index_con.email_index));
- using_email_tmp = TRUE;
- } else {
- index_con.email_index = tracker->email_index;
- }
- }
-
- if (!tracker_indexer_has_merge_files (INDEX_TYPE_FILES) && tracker->word_update_count < 5000) {
- index_con.file_update_index = tracker->file_index;
- } else {
- index_con.file_update_index = tracker->file_update_index;
- }
-
- g_hash_table_foreach (tracker->file_word_table, (GHFunc) flush_all_file_words, &index_con);
- g_hash_table_destroy (tracker->file_word_table);
-
- g_hash_table_foreach (tracker->email_word_table, (GHFunc) flush_all_email_words, &index_con);
- g_hash_table_destroy (tracker->email_word_table);
-
- g_hash_table_foreach (tracker->file_update_word_table, (GHFunc) flush_all_file_update_words, &index_con);
- g_hash_table_destroy (tracker->file_update_word_table);
-
- if (using_file_tmp) {
- tracker_indexer_close (index_con.file_index);
- }
-
- if (using_email_tmp) {
- tracker_indexer_close (index_con.email_index);
- }
-
- tracker->file_word_table = g_hash_table_new (g_str_hash, g_str_equal);
- tracker->file_update_word_table = g_hash_table_new (g_str_hash, g_str_equal);
- tracker->email_word_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- tracker->word_detail_count = 0;
- tracker->word_count = 0;
- tracker->flush_count = 0;
- tracker->word_update_count = 0;
-}
-
-
-static gboolean
-cache_needs_flush ()
-{
-
- int estimate_cache;
-
- estimate_cache = tracker->word_detail_count * 8;
-
- estimate_cache += (tracker->word_count * 75) + (tracker->word_update_count * 75);
-
- if (estimate_cache > tracker->memory_limit) {
- return TRUE;
- }
-
- return FALSE;
-
-
-}
-
-
-static inline gboolean
-is_email (gint service_type)
-{
- return (service_type >= tracker->email_service_min && service_type <= tracker->email_service_max);
-}
-
-
-static gboolean
-update_word_table (GHashTable *table, const char *word, WordDetails *word_details)
-{
- gboolean new_word = FALSE;
-
- int sz = sizeof (WordDetails);
-
- tracker->word_detail_count++;
-
- GByteArray *array = g_hash_table_lookup (table, word);
-
- if (!array) {
-
- if (!tracker_config_get_low_memory_mode (tracker->config)) {
- array = g_byte_array_sized_new (sz * 2);
- } else {
- array = g_byte_array_sized_new (sz);
- }
-
- new_word = TRUE;
- }
-
- array = g_byte_array_append (array, (guint8 *) word_details, sz);
-
- if (new_word) {
- g_hash_table_insert (table, g_strdup (word), array);
- } else {
- g_hash_table_insert (table, (gchar *) word, array);
- }
-
- return new_word;
-
-}
-
-
-void
-tracker_cache_add (const gchar *word, guint32 service_id, gint service_type, gint score, gboolean is_new)
-{
- static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
- WordDetails word_details;
-
- word_details.id = service_id;
- word_details.amalgamated = tracker_indexer_calc_amalgamated (service_type, score);
-
- if (is_new) {
-
- /* no need to mutex new stuff as only one thread is processing them */
- if (!is_email (service_type)) {
- if (update_word_table (tracker->file_word_table, word, &word_details)) tracker->word_count++;
- } else {
- if (update_word_table (tracker->email_word_table, word, &word_details)) tracker->word_count++;
- }
-
- } else {
- /* we need to mutex this to prevent corruption on multi cpu machines as both index process thread and user request thread (when setting tags/metadata) can call this */
- g_static_mutex_lock (&mutex);
-
- if (update_word_table (tracker->file_update_word_table, word, &word_details)) tracker->word_update_count++;
-
- g_static_mutex_unlock (&mutex);
- }
-
-}
-
-gboolean
-tracker_cache_process_events (DBConnection *db_con, gboolean check_flush)
-{
- gboolean stopped_trans = FALSE;
-
- while (TRUE) {
-
- gboolean sleep = FALSE;
-
-
- if (tracker->shutdown) {
- return FALSE;
- }
-
- if (!tracker->is_running ||
- !tracker_config_get_enable_indexing (tracker->config)) {
- if (check_flush) tracker_cache_flush_all ();
- sleep = TRUE;
- }
-
- if (tracker->index_status > INDEX_APPLICATIONS && tracker_pause ()) {
- if (db_con) {
- stopped_trans = TRUE;
- }
-
- sleep = TRUE;
- }
-
- if (sleep) {
-
- if (db_con) tracker_db_end_index_transaction (db_con);
-
- tracker_dbus_send_index_status_change_signal ();
-
-
- if (tracker_pause ()) {
- g_cond_wait (tracker->file_thread_signal, tracker->files_signal_mutex);
- } else {
-
- /* set mutex to indicate we are in "check" state to prevent race conditions from other threads resetting gloabl vars */
- g_mutex_lock (tracker->files_check_mutex);
-
- if ((!tracker->is_running ||
- !tracker_config_get_enable_indexing (tracker->config)) &&
- (!tracker->shutdown)) {
- g_cond_wait (tracker->file_thread_signal, tracker->files_signal_mutex);
- }
-
- g_mutex_unlock (tracker->files_check_mutex);
- }
-
- /* determine if wake up call is a shutdown signal */
- if (tracker->shutdown) {
- if (check_flush) tracker_cache_flush_all ();
- return FALSE;
- } else {
- tracker_dbus_send_index_status_change_signal ();
- continue;
- }
-
- }
-
- if (tracker->grace_period > 1) {
-
- tracker_log ("pausing indexing while client requests or external disk I/O are taking place");
-
- tracker->request_waiting = FALSE;
-
- if (db_con) {
- tracker_db_end_index_transaction (db_con);
- stopped_trans = TRUE;
- }
-
- tracker->pause_io = TRUE;
-
- tracker_dbus_send_index_status_change_signal ();
-
- g_usleep (1000 * 1000);
-
- tracker->grace_period--;
-
- if (tracker->grace_period > 2) tracker->grace_period = 2;
-
- continue;
-
- } else {
- if (tracker->pause_io) {
- tracker->pause_io = FALSE;
- tracker_dbus_send_index_status_change_signal ();
- }
- }
-
-
- if (check_flush && cache_needs_flush ()) {
-
- if (db_con) {
- tracker_db_end_index_transaction (db_con);
- tracker_db_refresh_all (db_con->data);
- stopped_trans = TRUE;
- }
-
- tracker_cache_flush_all ();
-
- }
-
-
- if (stopped_trans && db_con && !db_con->in_transaction) tracker_db_start_index_transaction (db_con);
-
- tracker_throttle (5000);
-
- return TRUE;
-
- }
-
-
-}
-
diff --git a/src/trackerd/tracker-cache.h b/src/trackerd/tracker-cache.h
deleted file mode 100644
index 946b37d5d..000000000
--- a/src/trackerd/tracker-cache.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Tracker
- * routines for cacheing
- * Copyright (C) 2007, Jamie McCracken
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_CACHE_H_
-#define _TRACKER_CACHE_H_
-
-#include "tracker-db-sqlite.h"
-#include "tracker-indexer.h"
-
-
-void tracker_cache_add (const gchar *word, guint32 service_id, gint service_type, gint score, gboolean is_new);
-void tracker_cache_flush_all ();
-gboolean tracker_cache_process_events (DBConnection *db_con, gboolean check_flush);
-
-#endif
diff --git a/src/trackerd/tracker-convert-file.c b/src/trackerd/tracker-convert-file.c
deleted file mode 100644
index 8b4cecd1a..000000000
--- a/src/trackerd/tracker-convert-file.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <locale.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include "tracker-parser.h"
-
-
-
-
-static char *
-load_text_from_file (const char *filename_in_locale)
-{
-
- char *text;
- gsize length;
-
- if (!g_file_get_contents (filename_in_locale, &text, &length, NULL)) {
- g_warning ("could not open file %s", filename_in_locale);
- return NULL;
- }
-
-
- if (!g_utf8_validate (text, -1, NULL)) {
-
- char *value;
-
- /* attempt to convert from locale */
- value = g_locale_to_utf8 (text, length, NULL, NULL, NULL);
-
- if (!value) {
- g_warning ("Cannot convert file to valid utf-8\n");
- return NULL;
- }
-
- g_free (text);
-
- return value;
-
- }
-
- return text;
-
-}
-
-static void
-write_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- char *word = (char *)key;
- int score = GPOINTER_TO_INT (value);
- GString *str = user_data;
-
- g_string_append_printf (str, "%d %s\n", score, word);
-
-}
-
-
-static void
-save_words_to_file (const char *filename_in_locale, GHashTable *table)
-{
-
- GString *str = g_string_new ("");
-
- if (table) {
- g_hash_table_foreach (table, write_data, str);
- g_hash_table_destroy (table);
- }
-
-
- g_file_set_contents (filename_in_locale, g_string_free (str, FALSE), -1, NULL);
-
-}
-
-
-int
-main (int argc, char **argv)
-{
- char *text;
- GHashTable *table;
-
-
- setlocale (LC_ALL, "");
-
- if (argc < 3) {
- g_print ("must give two filenames on the command line\n");
- return 1;
- }
-
-
- text = load_text_from_file (argv[1]);
-
- if (!text) {
- return 1;
- }
-
- parser->min_word_length = 3;
- parser->max_word_length = 30;
- parser->use_stemmer = TRUE;
- parser->stem_language = STEM_ENG;
- parser->stop_words = NULL;
-
- table = tracker_parse_text (parser, NULL, text, 1);
-
-
-
- save_words_to_file (argv[2], table);
-
- if (text) {
- g_free (text);
- }
-
- return 0;
-}
diff --git a/src/trackerd/tracker-db-email.c b/src/trackerd/tracker-db-email.c
deleted file mode 100644
index b5a1294a3..000000000
--- a/src/trackerd/tracker-db-email.c
+++ /dev/null
@@ -1,798 +0,0 @@
-/* Tracker
- * routines for emails with databases
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-db-email.h"
-
-#define MAX_ADDRESSES 255
-
-static gint
-tracker_db_email_get_mbox_offset (DBConnection *db_con, const gchar *mbox_uri)
-{
- TrackerDBResultSet *result_set;
- gint offset;
-
- result_set = tracker_exec_proc (db_con, "GetMBoxDetails", mbox_uri, NULL);
-
- if (!result_set) {
- return -1;
- }
-
- tracker_db_result_set_get (result_set, 4, &offset, -1);
- g_object_unref (result_set);
-
- return offset;
-}
-
-
-void
-tracker_db_email_register_mbox (DBConnection *db_con,
- MailApplication mail_app,
- MailType mail_type,
- const gchar *path,
- const gchar *filename,
- const gchar *uri_prefix)
-{
- gchar *types[6] = {"MBOX", "IMAP", "IMAP4", "MAIL_TYPE_MAILDIR", "MAIL_TYPE_MH", "MAIL_TYPE_POP"};
-
- gchar *str_mail_app = tracker_int_to_str (mail_app);
- gchar *str_mail_type = tracker_int_to_str (mail_type);
-
- tracker_exec_proc (db_con, "InsertMboxDetails", str_mail_app, str_mail_type, filename, path, uri_prefix, NULL);
-
- tracker_log ("Registered email store %s of type %s", filename, types[mail_type]);
-
- g_free (str_mail_app);
- g_free (str_mail_type);
-}
-
-
-void
-tracker_db_email_flag_mbox_junk (DBConnection *db_con, const gchar *mbox_uri)
-{
- tracker_exec_proc (db_con, "SetJunkMbox", "1", mbox_uri, NULL);
-}
-
-
-void
-tracker_db_email_reset_mbox_junk (DBConnection *db_con, const gchar *mbox_uri)
-{
- tracker_exec_proc (db_con, "SetJunkMbox", "0", mbox_uri, NULL);
-}
-
-
-TrackerDBResultSet *
-tracker_db_email_get_mboxes (DBConnection *db_con)
-{
- return tracker_exec_proc (db_con, "GetMboxes", NULL);
-}
-
-
-void
-tracker_db_email_insert_junk (DBConnection *db_con, const gchar *mbox_uri, guint32 uid)
-{
- gint mbox_id = tracker_db_email_get_mbox_id (db_con, mbox_uri);
-
- if (mbox_id == -1) {
- return;
- }
-
- gchar *str_mbox_id = tracker_int_to_str (mbox_id);
- gchar *str_uid = tracker_uint_to_str (uid);
-
- if (!tracker_db_email_lookup_junk (db_con, str_mbox_id, uid)) {
-
- tracker_exec_proc (db_con, "InsertJunk", str_uid, str_mbox_id, NULL);
- }
-
- g_free (str_uid);
- g_free (str_mbox_id);
-}
-
-
-MailStore *
-tracker_db_email_get_mbox_details (DBConnection *db_con, const gchar *mbox_uri)
-{
- TrackerDBResultSet *result_set;
- MailStore *mail_store;
-
- result_set = tracker_exec_proc (db_con, "GetMBoxDetails", mbox_uri, NULL);
-
- if (!result_set) {
- return NULL;
- }
-
- mail_store = g_slice_new0 (MailStore);
- tracker_db_result_set_get (result_set,
- 1, &mail_store->type,
- 3, &mail_store->uri_prefix,
- 4, &mail_store->offset,
- 6, &mail_store->mail_count,
- 7, &mail_store->junk_count,
- 8, &mail_store->delete_count,
- -1);
-
- g_object_unref (result_set);
-
- return mail_store;
-}
-
-void
-tracker_db_email_free_mail_store (MailStore *store)
-{
- g_return_if_fail (store);
-
- if (store->uri_prefix) {
- g_free (store->uri_prefix);
- }
-
- g_slice_free (MailStore, store);
-}
-
-
-gint
-tracker_db_email_get_mbox_id (DBConnection *db_con, const gchar *mbox_uri)
-{
- TrackerDBResultSet *result_set;
- gint id;
-
- result_set = tracker_exec_proc (db_con, "GetMboxID", mbox_uri, NULL);
-
- if (!result_set) {
- return -1;
- }
-
- tracker_db_result_set_get (result_set, 0, &id, -1);
- g_object_unref (result_set);
-
- return id;
-}
-
-
-gchar *
-tracker_db_email_get_mbox_uri_prefix (DBConnection *db_con, const gchar *mbox_uri)
-{
- TrackerDBResultSet *result_set;
- gchar *uri;
-
- result_set = tracker_exec_proc (db_con, "GetMBoxDetails", mbox_uri, NULL);
-
- if (!result_set) {
- return NULL;
- }
-
- tracker_db_result_set_get (result_set, 3, &uri, -1);
- g_object_unref (result_set);
-
- return uri;
-}
-
-
-gchar *
-tracker_db_email_get_mbox_path (DBConnection *db_con, const gchar *filename)
-{
- TrackerDBResultSet *result_set;
- gchar *path;
-
- result_set = tracker_exec_proc (db_con, "GetMBoxPath", filename, NULL);
-
- if (!result_set) {
- return NULL;
- }
-
- tracker_db_result_set_get (result_set, 0, &path, -1);
- g_object_unref (result_set);
-
- return path;
-}
-
-
-void
-tracker_db_email_get_message_counts (DBConnection *db_con,
- const gchar *mbox_file_path,
- gint *mail_count,
- gint *junk_count,
- gint *delete_count)
-{
- TrackerDBResultSet *result_set;
-
- *mail_count = 0;
- *junk_count = 0;
- *delete_count = 0;
-
- result_set = tracker_exec_proc (db_con, "GetMBoxDetails", mbox_file_path, NULL);
-
- if (!result_set) {
- return;
- }
-
- tracker_db_result_set_get (result_set,
- 6, mail_count,
- 7, junk_count,
- 8, delete_count,
- -1);
-
- g_object_unref (result_set);
-}
-
-
-void
-tracker_db_email_set_message_counts (DBConnection *db_con,
- const gchar *dir_path,
- gint mail_count,
- gint junk_count,
- gint delete_count)
-{
- g_return_if_fail (db_con);
- g_return_if_fail (dir_path);
-
- /* make sure dir_path is registered in DB before doing an update */
- if (tracker_db_email_get_mbox_offset (db_con, dir_path) != -1) {
- gchar *str_mail_count, *str_junk_count, *str_delete_count;
-
- str_mail_count = tracker_uint_to_str (mail_count);
- str_junk_count = tracker_uint_to_str (junk_count);
- str_delete_count = tracker_uint_to_str (delete_count);
-
- tracker_exec_proc (db_con, "UpdateMboxCounts", str_mail_count, str_junk_count, str_delete_count, dir_path, NULL);
-
- g_free (str_mail_count);
- g_free (str_junk_count);
- g_free (str_delete_count);
-
- } else {
- tracker_error ("ERROR: invalid dir_path \"%s\"", dir_path);
- }
-}
-
-
-off_t
-tracker_db_email_get_last_mbox_offset (DBConnection *db_con, const gchar *mbox_file_path)
-{
- off_t offset;
-
- g_return_val_if_fail (db_con, 0);
- g_return_val_if_fail (mbox_file_path, 0);
-
- offset = tracker_db_email_get_mbox_offset (db_con, mbox_file_path);
-
- if (offset == -1) {
- /* we need to add this mbox */
- tracker_error ("ERROR: mbox/dir for emails for %s is not registered", mbox_file_path);
- }
-
- return offset;
-}
-
-
-void
-tracker_db_email_update_mbox_offset (DBConnection *db_con, MailFile *mf)
-{
- g_return_if_fail (db_con);
- g_return_if_fail (mf);
-
- if (!mf->path) {
- tracker_error ("ERROR: invalid mbox (empty path!)");
- return;
- }
-
- /* make sure mbox is registered in DB before doing an update */
- if (tracker_db_email_get_mbox_offset (db_con, mf->path) != -1) {
- gchar *str_offset;
-
- str_offset = tracker_uint_to_str (mf->next_email_offset);
- tracker_exec_proc (db_con, "UpdateMboxOffset", str_offset, mf->path, NULL);
-
- g_free (str_offset);
-
- } else {
- tracker_error ("ERROR: invalid mbox \"%s\"", mf->path);
- }
-}
-
-
-static inline gchar *
-get_utf8 (const gchar *str)
-{
- if (!str) {
- return NULL;
- }
-
- gsize len = strlen (str);
-
- if (!g_utf8_validate (str, len, NULL)) {
-
- char *s = g_locale_to_utf8 (str, len, NULL, NULL, NULL);
-
- if (!s) {
- return g_strdup ("");
- } else {
- return s;
- }
-
- } else {
- return g_strdup (str);
- }
-}
-
-
-static gchar *
-get_service_name (MailApplication app)
-{
- if (app == MAIL_APP_EVOLUTION) {
- return g_strdup ("EvolutionEmails");
- } else if (app == MAIL_APP_MODEST) {
- return g_strdup ("ModestEmails");
- } else if (app == MAIL_APP_KMAIL) {
- return g_strdup ("KMailEmails");
- } else if (app == MAIL_APP_THUNDERBIRD) {
- return g_strdup ("ThunderbirdEmails");
- } else if (app == MAIL_APP_THUNDERBIRD_FEED) {
- return g_strdup ("ThunderbirdEmails");
- } else {
- return g_strdup ("OtherEmails");
- }
-}
-
-
-static gchar *
-get_mime (MailApplication app)
-{
- if (app == MAIL_APP_EVOLUTION) {
- return g_strdup ("Evolution/Email");
- } else if (app == MAIL_APP_MODEST) {
- return g_strdup ("Modest/Email");
- } else if (app == MAIL_APP_KMAIL) {
- return g_strdup ("KMail/Email");
- } else if (app == MAIL_APP_THUNDERBIRD) {
- return g_strdup ("Thunderbird/Email");
- } else if (app == MAIL_APP_THUNDERBIRD_FEED) {
- return g_strdup ("Thunderbird/Feed");
- } else {
- return g_strdup ("Other/Email");
- }
-}
-
-
-static gchar *
-get_attachment_service_name (MailApplication app)
-{
- if (app == MAIL_APP_EVOLUTION) {
- return g_strdup ("EvolutionAttachments");
- } else if (app == MAIL_APP_MODEST) {
- return g_strdup ("ModestAttachments");
- } else if (app == MAIL_APP_KMAIL) {
- return g_strdup ("KMailAttachments");
- } else if (app == MAIL_APP_THUNDERBIRD) {
- return g_strdup ("ThunderbirdAttachments");
- } else {
- return g_strdup ("OtherAttachments");
- }
-}
-
-
-gboolean
-tracker_db_email_is_up_to_date (DBConnection *db_con, const gchar *uri, guint32 *id)
-{
- return tracker_db_is_file_up_to_date (db_con->emails, uri, id);
-}
-
-
-
-static inline int
-limit_address_count (int len)
-{
- if (len > MAX_ADDRESSES - 1) {
- return MAX_ADDRESSES - 1;
- }
-
- return len;
-
-}
-
-
-gboolean
-tracker_db_email_save_email (DBConnection *db_con, MailMessage *mm, MailApplication mail_app)
-{
- gint mbox_id, type_id, id, len;
- gchar *service, *attachment_service, *mime;
- gchar *array[MAX_ADDRESSES];
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mm, FALSE);
-
- if (!mm->uri) {
- tracker_error ("ERROR: email has no uri");
- return FALSE;
- }
-
- if (!mm->subject) {
- tracker_log ("WARNING: email with uri: %s has no subject",mm->uri);
- mm->subject = g_strdup("");
- }
-
- if (mm->parent_mail_file && !mm->parent_mail_file->path) {
- tracker_error ("ERROR: badly formatted email - abandoning index");
- return FALSE;
- }
-
- if (mm->store) {
- mm->store->mail_count++;
- } else {
- tracker_error ("WARNING: no mail store found for email");
- }
-
- if (mm->deleted || mm->junk) {
- if (mm->parent_mail_file) {
- tracker_db_email_insert_junk (db_con->index, mm->parent_mail_file->path, mm->id);
- }
-
- if (mm->store) {
- if (mm->deleted) {
- mm->store->delete_count++;
- } else {
- mm->store->junk_count++;
- }
- } else {
- tracker_error ("WARNING: no mail store found for email");
- }
-
- return TRUE;
- }
-
- mbox_id = -1; /* to have a default value */
-
- if (mm->parent_mail_file) {
- if (mm->is_mbox) {
- mbox_id = tracker_db_email_get_mbox_id (db_con->index, mm->parent_mail_file->path);
- if (mbox_id == -1) {
- tracker_error ("ERROR: no mbox is registered for email %s", mm->uri);
- return TRUE;
- }
- }
- service = get_service_name (mm->parent_mail_file->mail_app);
- mime = get_mime (mm->parent_mail_file->mail_app);
- attachment_service = get_attachment_service_name (mm->parent_mail_file->mail_app);
-
- } else {
- mbox_id = 0;
- mm->offset =0;
- service = get_service_name (mail_app);
- mime = get_mime (mail_app);
- attachment_service = get_attachment_service_name (mail_app);
- }
-
- type_id = tracker_service_manager_get_id_for_service (service);
- if (type_id == -1) {
- tracker_error ("ERROR: service %s not found", service);
- g_free (attachment_service);
- g_free (service);
- g_free (mime);
- return TRUE;
- }
-
- FileInfo *info = tracker_create_file_info (mm->uri, 0,0,0);
-
- info->mime = mime;
- info->offset = mm->offset;
- info->aux_id = mbox_id;
- info->mtime = mm->mtime;
-
- id = tracker_db_create_service (db_con->index, service, info);
-
- tracker_free_file_info (info);
-
- if (id != 0) {
- GHashTable *index_table;
- gchar *str_id, *str_date;
- GSList *tmp;
-
-
- tracker_info ("saving email service %d with uri \"%s\" and subject \"%s\" from \"%s\"", type_id, mm->uri, mm->subject, mm->from);
-
- index_table = g_hash_table_new (g_str_hash, g_str_equal);
- str_id = tracker_int_to_str (id);
- str_date = tracker_date_to_str (mm->date);
-
- if (mm->body) {
- gchar *value = get_utf8 (mm->body);
-
- if (value) {
- tracker_db_insert_single_embedded_metadata (db_con->index, service, str_id, "Email:Body", value, index_table);
- g_free (value);
- }
- }
-
- if (str_date) {
- tracker_db_insert_single_embedded_metadata (db_con->index, service, str_id, "Email:Date", str_date, index_table);
- }
-
- if (mm->from) {
- gchar *value = get_utf8 (mm->from);
-
- if (value) {
- tracker_db_insert_single_embedded_metadata (db_con->index, service, str_id, "Email:Sender", value, index_table);
- g_free (value);
- }
- }
-
- if (mm->subject) {
- gchar *value = get_utf8 (mm->subject);
-
- if (value) {
- tracker_db_insert_single_embedded_metadata (db_con->index, service, str_id, "Email:Subject", value, index_table);
- g_free (value);
- }
- }
-
- g_free (str_date);
-
- len = g_slist_length (mm->to);
- len = limit_address_count (len);
- if (len > 0) {
- gint i;
- array[len] = NULL;
-
- for (i = 0, tmp = mm->to; tmp && i < len; tmp = tmp->next, i++) {
- const MailPerson *mp = tmp->data;
- GString *gstr = g_string_new ("");
-
- if (mp->addr) {
-
- gchar *value = get_utf8 (mp->addr);
-
- if (value) {
- g_string_append_printf (gstr, "%s ", value);
- g_free (value);
- }
- }
-
- if (mp->name) {
-
- gchar *value = get_utf8 (mp->name);
-
- if (value) {
- g_string_append (gstr, value);
- g_free (value);
- }
- }
-
- array[i] = g_string_free (gstr, FALSE);
- }
-
- if (i > 0) {
- tracker_db_insert_embedded_metadata (db_con->index, service, str_id, "Email:SentTo", array, i, index_table);
- }
-
- for (i--; i>-1; i--) {
- g_free (array[i]);
- }
- }
-
- len = g_slist_length (mm->cc);
- len = limit_address_count (len);
- if (len > 0) {
- gint i;
- array[len] = NULL;
-
- for (i = 0, tmp = mm->cc; tmp && i < len; tmp = tmp->next, i++) {
- const MailPerson *mp = tmp->data;
- GString *gstr = g_string_new ("");
-
- if (mp->addr) {
- gchar *value = get_utf8 (mp->addr);
-
- if (value) {
- g_string_append_printf (gstr, "%s ", value);
- g_free (value);
- }
- }
-
- if (mp->name) {
- gchar *value = get_utf8 (mp->name);
-
- if (value) {
- g_string_append_printf (gstr, "%s ", value);
- g_free (value);
- }
- }
-
- array[i] = g_string_free (gstr, FALSE);
- }
-
- if (i > 0) {
- tracker_db_insert_embedded_metadata (db_con->index, service, str_id, "Email:CC", array, i, index_table);
- }
-
- for (i--; i > -1; i--) {
- g_free (array[i]);
- }
- }
-
- len = g_slist_length (mm->attachments);
- len = limit_address_count (len);
- if (len > 0) {
- gint i;
- array[len] = NULL;
-
- for (i = 0, tmp = mm->attachments; tmp && i < len; tmp = tmp->next, i++) {
- const MailAttachment *ma = tmp->data;
-
- if (!ma->attachment_name) {
- continue;
- }
- gchar *value = get_utf8 (ma->attachment_name);
-
- if (value) {
- array[i] = value;
- } else {
- array[i] = g_strdup ("unknown");
- }
- }
-
- if (i > 0) {
- tracker_db_insert_embedded_metadata (db_con->index, service, str_id, "Email:Attachments", array, i, index_table);
- }
-
- for (i--; i > -1; i--) {
- g_free (array[i]);
- }
- }
-
- tracker_db_update_indexes_for_new_service (id, type_id, index_table);
-
- tracker_word_table_free (index_table);
-
-
- g_free (str_id);
-
-
- /* index attachments */
- for (tmp = mm->attachments; tmp; tmp = tmp->next) {
- MailAttachment *ma = tmp->data;
-
- if (ma->tmp_decoded_file) {
- FileInfo *attachment_info;
- gchar *locale_path, *uri;
-
- locale_path = g_filename_from_utf8 (ma->tmp_decoded_file, -1, NULL, NULL, NULL);
-
- if (!g_file_test (locale_path, G_FILE_TEST_EXISTS)) {
- g_free (locale_path);
- continue;
- }
-
- attachment_info = tracker_create_file_info (ma->tmp_decoded_file, TRACKER_ACTION_CHECK, 0, WATCH_OTHER);
- attachment_info->is_directory = FALSE;
- attachment_info->mime = g_strdup (ma->mime);
-
- uri = g_strconcat (mm->uri, "/", ma->attachment_name, NULL);
- tracker_info ("indexing attachment with uri %s and mime %s", uri, attachment_info->mime);
- tracker_db_index_file (db_con, attachment_info, uri, attachment_service);
- g_free (uri);
-
- tracker_dec_info_ref (attachment_info);
-
- /* remove temporary and indexed attachment file */
- g_unlink (locale_path);
-
- g_free (locale_path);
-
- /* attachment file does not exist anymore so we remove its name in MailAttachment */
- g_free (ma->tmp_decoded_file);
- ma->tmp_decoded_file = NULL;
- }
- }
-
- } else {
- tracker_error ("ERROR: failed to save email %s", mm->uri);
- }
-
- g_free (attachment_service);
- g_free (service);
-
- return TRUE;
-}
-
-
-gboolean
-tracker_db_email_is_saved_email_file (DBConnection *db_con, const gchar *uri)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (uri, FALSE);
-
- return tracker_db_get_file_id (db_con, uri) != 0 ;
-}
-
-
-void
-tracker_db_email_update_email (DBConnection *db_con, MailMessage *mm)
-{
- g_return_if_fail (db_con);
- g_return_if_fail (mm);
-
- tracker_log ("update email with uri \"%s\" and subject \"%s\" from \"%s\"", mm->uri, mm->subject, mm->from);
-
- /* FIXME: add code... */
-}
-
-
-gboolean
-tracker_db_email_delete_emails_of_mbox (DBConnection *db_con, const gchar *mbox_file_path)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mbox_file_path, FALSE);
-
- /* FIXME: add code... */
- return TRUE;
-}
-
-
-gboolean
-tracker_db_email_delete_email (DBConnection *db_con, const gchar *uri)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (uri, FALSE);
-
- gchar *id = tracker_db_get_id (db_con, "Emails", uri);
-
- if (!id) {
- return FALSE;
- }
-
- tracker_info ("deleting email %s", uri);
-
- tracker_db_delete_directory (db_con, atoi (id), uri);
-
- g_free (id);
-
- return TRUE;
-}
-
-
-gboolean
-tracker_db_email_lookup_junk (DBConnection *db_con, const gchar *mbox_id, gint uid)
-{
- TrackerDBResultSet *result_set;
- gchar *str_uid;
- gint id;
-
- str_uid = tracker_uint_to_str (uid);
-
- result_set = tracker_exec_proc (db_con, "LookupJunk", str_uid, mbox_id, NULL);
-
- g_free (str_uid);
-
- if (!result_set) {
- return FALSE;
- }
-
- tracker_db_result_set_get (result_set, 0, &id, -1);
- g_object_unref (result_set);
-
- return (id > 0);
-}
diff --git a/src/trackerd/tracker-db-email.h b/src/trackerd/tracker-db-email.h
deleted file mode 100644
index 1ad7ab957..000000000
--- a/src/trackerd/tracker-db-email.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Tracker
- * routines for emails with databases
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_DB_EMAIL_BASE_H_
-#define _TRACKER_DB_EMAIL_BASE_H_
-
-#include "tracker-db.h"
-#include "tracker-email-utils.h"
-
-
-off_t tracker_db_email_get_last_mbox_offset (DBConnection *db_con, const gchar *mail_file_path);
-void tracker_db_email_update_mbox_offset (DBConnection *db_con, MailFile *mf);
-gboolean tracker_db_email_is_up_to_date (DBConnection *db_con, const gchar *uri, guint32 *id);
-gboolean tracker_db_email_save_email (DBConnection *db_con, MailMessage *mm, MailApplication mail_app);
-gboolean tracker_db_email_is_saved_email_file (DBConnection *db_con, const gchar *uri);
-void tracker_db_email_update_email (DBConnection *db_con, MailMessage *mm);
-gboolean tracker_db_email_delete_email_file (DBConnection *db_con, const gchar *uri);
-gboolean tracker_db_email_delete_emails_of_mbox (DBConnection *db_con, const gchar *mbox_file_path);
-gboolean tracker_db_email_delete_email (DBConnection *db_con, const gchar *uri);
-gint tracker_db_email_get_mbox_id (DBConnection *db_con, const gchar *mbox_uri);
-void tracker_db_email_insert_junk (DBConnection *db_con, const gchar *mbox_uri, guint32 uid);
-void tracker_db_email_reset_mbox_junk (DBConnection *db_con, const gchar *mbox_uri);
-void tracker_db_email_flag_mbox_junk (DBConnection *db_con, const gchar *mbox_uri);
-void tracker_db_email_register_mbox (DBConnection *db_con, MailApplication mail_app, MailType mail_type,
- const gchar *path, const gchar *filename, const gchar *uri_prefix);
-gchar * tracker_db_email_get_mbox_path (DBConnection *db_con, const gchar *filename);
-
-void
-tracker_db_email_set_message_counts (DBConnection *db_con, const gchar *dir_path,
- gint mail_count, gint junk_count, gint delete_count);
-
-void
-tracker_db_email_get_message_counts (DBConnection *db_con, const gchar *mbox_file_path,
- gint *mail_count, gint *junk_count, gint *delete_count);
-
-gchar *
-tracker_db_email_get_mbox_uri_prefix (DBConnection *db_con, const gchar *mbox_uri);
-
-gboolean
-tracker_db_email_lookup_junk (DBConnection *db_con, const gchar *mbox_id, gint uid);
-
-void
-tracker_db_email_free_mail_store (MailStore *store);
-
-MailStore *
-tracker_db_email_get_mbox_details (DBConnection *db_con, const gchar *mbox_uri);
-
-TrackerDBResultSet *
-tracker_db_email_get_mboxes (DBConnection *db_con);
-
-#endif
diff --git a/src/trackerd/tracker-db-interface-sqlite.c b/src/trackerd/tracker-db-interface-sqlite.c
deleted file mode 100644
index 889a6cc3e..000000000
--- a/src/trackerd/tracker-db-interface-sqlite.c
+++ /dev/null
@@ -1,600 +0,0 @@
-/* Tracker - Sqlite implementation
- * Copyright (C) 2008 Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <sqlite3.h>
-#include "tracker-db-interface-sqlite.h"
-
-#define TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_DB_INTERFACE_SQLITE, TrackerDBInterfaceSqlitePrivate))
-
-typedef struct TrackerDBInterfaceSqlitePrivate TrackerDBInterfaceSqlitePrivate;
-typedef struct SqliteFunctionData SqliteFunctionData;
-
-struct TrackerDBInterfaceSqlitePrivate {
- gchar *filename;
- sqlite3 *db;
-
- GHashTable *statements;
- GHashTable *procedures;
-
- GSList *function_data;
-
- guint in_transaction : 1;
-};
-
-struct SqliteFunctionData {
- TrackerDBInterface *interface;
- TrackerDBFunc func;
-};
-
-static void tracker_db_interface_sqlite_iface_init (TrackerDBInterfaceIface *iface);
-
-enum {
- PROP_0,
- PROP_FILENAME,
- PROP_IN_TRANSACTION
-};
-
-G_DEFINE_TYPE_WITH_CODE (TrackerDBInterfaceSqlite, tracker_db_interface_sqlite, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (TRACKER_TYPE_DB_INTERFACE,
- tracker_db_interface_sqlite_iface_init))
-
-static GObject *
-tracker_db_interface_sqlite_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_params)
-{
- GObject *object;
- TrackerDBInterfaceSqlitePrivate *priv;
-
- object = (* G_OBJECT_CLASS (tracker_db_interface_sqlite_parent_class)->constructor) (type,
- n_construct_properties,
- construct_params);
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (object);
- g_assert (priv->filename != NULL);
-
- if (sqlite3_open (priv->filename, &priv->db) != SQLITE_OK) {
- g_critical ("Can't open DB at: %s\n", priv->filename);
- }
-
- sqlite3_extended_result_codes (priv->db, 0);
- sqlite3_busy_timeout (priv->db, 10000000);
-
- return object;
-}
-
-static void
-tracker_db_interface_sqlite_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- priv->filename = g_value_dup_string (value);
- break;
- case PROP_IN_TRANSACTION:
- priv->in_transaction = g_value_get_boolean (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
-tracker_db_interface_sqlite_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_value_set_string (value, priv->filename);
- break;
- case PROP_IN_TRANSACTION:
- g_value_set_boolean (value, priv->in_transaction);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
-tracker_db_interface_sqlite_finalize (GObject *object)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (object);
-
- g_free (priv->filename);
-
- g_hash_table_destroy (priv->statements);
- g_hash_table_unref (priv->procedures);
-
- g_slist_foreach (priv->function_data, (GFunc) g_free, NULL);
- g_slist_free (priv->function_data);
-
- sqlite3_close (priv->db);
-
- G_OBJECT_CLASS (tracker_db_interface_sqlite_parent_class)->finalize (object);
-}
-
-static void
-tracker_db_interface_sqlite_class_init (TrackerDBInterfaceSqliteClass *class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (class);
-
- object_class->constructor = tracker_db_interface_sqlite_constructor;
- object_class->set_property = tracker_db_interface_sqlite_set_property;
- object_class->get_property = tracker_db_interface_sqlite_get_property;
- object_class->finalize = tracker_db_interface_sqlite_finalize;
-
- g_object_class_install_property (object_class,
- PROP_FILENAME,
- g_param_spec_string ("filename",
- "DB filename",
- "DB filename",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
- /* Override properties from interface */
- g_object_class_override_property (object_class,
- PROP_IN_TRANSACTION,
- "in-transaction");
-
- g_type_class_add_private (object_class,
- sizeof (TrackerDBInterfaceSqlitePrivate));
-}
-
-static void
-tracker_db_interface_sqlite_init (TrackerDBInterfaceSqlite *db_interface)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
-
- priv->procedures = g_hash_table_new_full (g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) g_free);
- priv->statements = g_hash_table_new_full (g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) sqlite3_finalize);
-}
-
-static void
-add_row (TrackerDBResultSet *result_set,
- sqlite3_stmt *stmt)
-{
- gint cols, i;
-
- cols = sqlite3_column_count (stmt);
- _tracker_db_result_set_append (result_set);
-
- for (i = 0; i < cols; i++) {
- GValue value = { 0, };
- gint col_type;
-
- col_type = sqlite3_column_type (stmt, i);
-
- switch (col_type) {
- case SQLITE_TEXT:
- g_value_init (&value, G_TYPE_STRING);
- g_value_set_string (&value, (gchar *) sqlite3_column_text (stmt, i));
- break;
- case SQLITE_INTEGER:
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, sqlite3_column_int (stmt, i));
- break;
- case SQLITE_FLOAT:
- g_value_init (&value, G_TYPE_DOUBLE);
- g_value_set_double (&value, sqlite3_column_double (stmt, i));
- break;
- case SQLITE_NULL:
- /* just ignore NULLs */
- break;
- default:
- g_critical ("Unknown database column type: %d\n", col_type);
- }
-
- if (G_VALUE_TYPE (&value) != G_TYPE_INVALID) {
- _tracker_db_result_set_set_value (result_set, i, &value);
- g_value_unset (&value);
- }
- }
-}
-
-static void
-internal_sqlite3_function (sqlite3_context *context,
- int argc,
- sqlite3_value *argv[])
-{
- SqliteFunctionData *data;
- GValue *values, result;
- GByteArray *blob_array;
- gint i;
-
- data = (SqliteFunctionData *) sqlite3_user_data (context);
- values = g_new0 (GValue, argc);
-
- /* Transform the arguments */
- for (i = 0; i < argc; i++) {
- switch (sqlite3_value_type (argv[i])) {
- case SQLITE_TEXT:
- g_value_init (&values[i], G_TYPE_STRING);
- g_value_set_string (&values[i], (gchar *) sqlite3_value_text (argv[i]));
- break;
- case SQLITE_INTEGER:
- g_value_init (&values[i], G_TYPE_INT);
- g_value_set_int (&values[i], sqlite3_value_int (argv[i]));
- break;
- case SQLITE_FLOAT:
- g_value_init (&values[i], G_TYPE_DOUBLE);
- g_value_set_double (&values[i], sqlite3_value_double (argv[i]));
- break;
- case SQLITE_BLOB: {
- gconstpointer blob;
- gint size;
-
- blob = sqlite3_value_blob (argv[i]);
- size = sqlite3_value_bytes (argv[i]);
-
- blob_array = g_byte_array_sized_new (size);
- g_byte_array_append (blob_array, blob, size);
-
- g_value_init (&values[i], TRACKER_TYPE_DB_BLOB);
- g_value_take_boxed (&values[i], blob_array);
-
- break;
- }
- default:
- g_critical ("Unknown database value type: %d\n", sqlite3_value_type (argv[i]));
- }
- }
-
- /* Call the function */
- result = data->func (data->interface, argc, values);
-
- /* And return something appropriate to the context */
- if (G_VALUE_HOLDS_INT (&result)) {
- sqlite3_result_int (context, g_value_get_int (&result));
- } else if (G_VALUE_HOLDS_DOUBLE (&result)) {
- sqlite3_result_double (context, g_value_get_double (&result));
- } else if (G_VALUE_HOLDS_STRING (&result)) {
- sqlite3_result_text (context,
- g_value_dup_string (&result),
- -1, g_free);
- } else if (G_VALUE_HOLDS (&result, TRACKER_TYPE_DB_BLOB)) {
- blob_array = g_value_get_boxed (&result);
- sqlite3_result_blob (context,
- g_memdup (blob_array->data, blob_array->len),
- blob_array->len,
- g_free);
- } else if (G_VALUE_HOLDS (&result, G_TYPE_INVALID)) {
- sqlite3_result_null (context);
- } else {
- g_critical ("Returned type not managed: %s\n", G_VALUE_TYPE_NAME (&result));
- sqlite3_result_null (context);
- }
-
- /* Now free all this mess */
- for (i = 0; i < argc; i++) {
- g_value_unset (&values[i]);
- }
-
- if (! G_VALUE_HOLDS (&result, G_TYPE_INVALID)) {
- g_value_unset (&result);
- }
-
- g_free (values);
-}
-
-static void
-tracker_db_interface_sqlite_set_procedure_table (TrackerDBInterface *db_interface,
- GHashTable *procedure_table)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
- priv->procedures = g_hash_table_ref (procedure_table);
-}
-
-static TrackerDBResultSet *
-create_result_set_from_stmt (TrackerDBInterfaceSqlite *interface,
- sqlite3_stmt *stmt,
- GError **error)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
- TrackerDBResultSet *result_set = NULL;
- gint columns, result, busy_count;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (interface);
- columns = sqlite3_column_count (stmt);
- result = SQLITE_OK;
-
- while (result == SQLITE_OK ||
- result == SQLITE_ROW ||
- result == SQLITE_BUSY) {
-
- result = sqlite3_step (stmt);
-
- switch (result) {
- case SQLITE_ERROR:
- sqlite3_reset (stmt);
- break;
- case SQLITE_BUSY:
- busy_count++;
-
- if (busy_count > 100000) {
- /* tracker_error ("ERROR: excessive busy count in query %s", query); */
- busy_count = 0;
- }
-
- if (busy_count > 50) {
- g_usleep (g_random_int_range (1000, busy_count * 200));
- } else {
- g_usleep (100);
- }
-
- break;
- case SQLITE_ROW:
- if (G_UNLIKELY (!result_set)) {
- result_set = _tracker_db_result_set_new (columns);
- }
-
- add_row (result_set, stmt);
- break;
- }
- }
-
- if (result != SQLITE_DONE) {
- if (result == SQLITE_CORRUPT) {
- g_critical ("Database %s is corrupt. Can't live without it", priv->filename);
- g_assert_not_reached ();
- }
-
- if (!error) {
- g_warning (sqlite3_errmsg (priv->db));
- } else {
- g_set_error (error,
- TRACKER_DB_INTERFACE_ERROR,
- TRACKER_DB_QUERY_ERROR,
- sqlite3_errmsg (priv->db));
- }
-
- /* If there was an error, result set may be invalid or incomplete */
- if (result_set) {
- g_object_unref (result_set);
- }
-
- return NULL;
- }
-
- return result_set;
-}
-
-static sqlite3_stmt *
-get_stored_stmt (TrackerDBInterfaceSqlite *db_interface,
- const gchar *procedure_name)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
- sqlite3_stmt *stmt;
- gint result;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
- stmt = g_hash_table_lookup (priv->statements, procedure_name);
-
- if (!stmt || sqlite3_expired (stmt) != 0) {
- const gchar *procedure;
-
- procedure = g_hash_table_lookup (priv->procedures, procedure_name);
-
- if (!procedure) {
- g_critical ("Prepared query %s not found", procedure_name);
- return NULL;
- }
-
- result = sqlite3_prepare_v2 (priv->db, procedure, -1, &stmt, NULL);
-
- if (result == SQLITE_OK && stmt) {
- g_hash_table_insert (priv->statements,
- g_strdup (procedure_name),
- stmt);
- }
- } else {
- sqlite3_reset (stmt);
- }
-
- return stmt;
-}
-
-static TrackerDBResultSet *
-tracker_db_interface_sqlite_execute_procedure (TrackerDBInterface *db_interface,
- GError **error,
- const gchar *procedure_name,
- va_list args)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
- sqlite3_stmt *stmt;
- gint stmt_args, n_args;
- gchar *str;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
- stmt = get_stored_stmt (TRACKER_DB_INTERFACE_SQLITE (db_interface), procedure_name);
- stmt_args = sqlite3_bind_parameter_count (stmt);
- n_args = 1;
-
- while ((str = va_arg (args, gchar *)) != NULL) {
- sqlite3_bind_text (stmt, n_args, str, -1, SQLITE_STATIC);
- n_args++;
- }
-
- /* Just panic if the number of arguments don't match */
- g_assert (n_args != stmt_args);
-
- return create_result_set_from_stmt (db_interface, stmt, error);
-}
-
-static TrackerDBResultSet *
-tracker_db_interface_sqlite_execute_procedure_len (TrackerDBInterface *db_interface,
- GError **error,
- const gchar *procedure_name,
- va_list args)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
- sqlite3_stmt *stmt;
- gint stmt_args, n_args, len;
- gchar *str;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
- stmt = get_stored_stmt (TRACKER_DB_INTERFACE_SQLITE (db_interface), procedure_name);
- stmt_args = sqlite3_bind_parameter_count (stmt);
- n_args = 1;
-
- while ((str = va_arg (args, gchar *)) != NULL) {
- len = va_arg (args, gint);
-
- if (len == -1) {
- /* Assume we're dealing with strings */
- sqlite3_bind_text (stmt, n_args, str, len, SQLITE_STATIC);
- } else {
- /* Deal with it as a blob */
- sqlite3_bind_blob (stmt, n_args, str, len, SQLITE_STATIC);
- }
-
- n_args++;
- }
-
- /* Just panic if the number of arguments don't match */
- g_assert (n_args != stmt_args);
-
- return create_result_set_from_stmt (db_interface, stmt, error);
-}
-
-static TrackerDBResultSet *
-tracker_db_interface_sqlite_execute_query (TrackerDBInterface *db_interface,
- GError **error,
- const gchar *query)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
- TrackerDBResultSet *result_set;
- sqlite3_stmt *stmt;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
-
- sqlite3_prepare_v2 (priv->db, query, -1, &stmt, NULL);
-
- if (!stmt) {
- g_set_error (error,
- TRACKER_DB_INTERFACE_ERROR,
- TRACKER_DB_QUERY_ERROR,
- sqlite3_errmsg (priv->db));
- return NULL;
- }
-
- result_set = create_result_set_from_stmt (db_interface, stmt, error);
- sqlite3_finalize (stmt);
-
- return result_set;
-}
-
-static void
-tracker_db_interface_sqlite_iface_init (TrackerDBInterfaceIface *iface)
-{
- iface->set_procedure_table = tracker_db_interface_sqlite_set_procedure_table;
- iface->execute_procedure = tracker_db_interface_sqlite_execute_procedure;
- iface->execute_procedure_len = tracker_db_interface_sqlite_execute_procedure_len;
- iface->execute_query = tracker_db_interface_sqlite_execute_query;
-}
-
-TrackerDBInterface *
-tracker_db_interface_sqlite_new (const gchar *filename)
-{
- return g_object_new (TRACKER_TYPE_DB_INTERFACE_SQLITE,
- "filename", filename,
- NULL);
-}
-
-static gint
-collation_function (gpointer data,
- int len1,
- gconstpointer str1,
- int len2,
- gconstpointer str2)
-{
- TrackerDBCollationFunc func;
-
- func = (TrackerDBCollationFunc) data;
-
- return (func) ((gchar *) str1, len1, (gchar *) str2, len2);
-}
-
-void
-tracker_db_interface_sqlite_create_function (TrackerDBInterface *interface,
- const gchar *name,
- TrackerDBFunc func,
- gint n_args)
-{
- SqliteFunctionData *data;
- TrackerDBInterfaceSqlitePrivate *priv;
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (interface);
-
- data = g_new0 (SqliteFunctionData, 1);
- data->interface = interface;
- data->func = func;
-
- priv->function_data = g_slist_prepend (priv->function_data, data);
-
- sqlite3_create_function (priv->db, name, n_args, SQLITE_ANY, data, &internal_sqlite3_function, NULL, NULL);
-}
-
-gboolean
-tracker_db_interface_sqlite_set_collation_function (TrackerDBInterfaceSqlite *interface,
- const gchar *name,
- TrackerDBCollationFunc func)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
- gint result;
-
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE_SQLITE (interface), FALSE);
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (interface);
-
- result = sqlite3_create_collation (priv->db, name, SQLITE_UTF8, func, &collation_function);
-
- return (result == SQLITE_OK);
-}
-
-gint64
-tracker_db_interface_sqlite_get_last_insert_id (TrackerDBInterfaceSqlite *interface)
-{
- TrackerDBInterfaceSqlitePrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE_SQLITE (interface), 0);
-
- priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (interface);
-
- return (gint64) sqlite3_last_insert_rowid (priv->db);
-}
diff --git a/src/trackerd/tracker-db-interface-sqlite.h b/src/trackerd/tracker-db-interface-sqlite.h
deleted file mode 100644
index 6881d7bd8..000000000
--- a/src/trackerd/tracker-db-interface-sqlite.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Tracker - Sqlite implementation
- * Copyright (C) 2008 Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_DB_INTERFACE_SQLITE_H__
-#define __TRACKER_DB_INTERFACE_SQLITE_H__
-
-#include "tracker-db-interface.h"
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_DB_INTERFACE_SQLITE (tracker_db_interface_sqlite_get_type ())
-#define TRACKER_DB_INTERFACE_SQLITE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_DB_INTERFACE_SQLITE, TrackerDBInterfaceSqlite))
-#define TRACKER_DB_INTERFACE_SQLITE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_DB_INTERFACE_SQLITE, TrackerDBInterfaceSqliteClass))
-#define TRACKER_IS_DB_INTERFACE_SQLITE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_DB_INTERFACE_SQLITE))
-#define TRACKER_IS_DB_INTERFACE_SQLITE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((o), TRACKER_TYPE_DB_INTERFACE_SQLITE))
-#define TRACKER_DB_INTERFACE_SQLITE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_DB_INTERFACE_SQLITE, TrackerDBInterfaceSqliteClass))
-
-typedef struct TrackerDBInterfaceSqlite TrackerDBInterfaceSqlite;
-typedef struct TrackerDBInterfaceSqliteClass TrackerDBInterfaceSqliteClass;
-
-typedef gint (* TrackerDBCollationFunc) (gchar *str1,
- gint len1,
- gchar *str2,
- gint len2);
-typedef GValue (* TrackerDBFunc) (TrackerDBInterface *interface,
- gint argc,
- GValue argv[]);
-
-struct TrackerDBInterfaceSqlite {
- GObject parent_instance;
-};
-
-struct TrackerDBInterfaceSqliteClass {
- GObjectClass parent_class;
-};
-
-GType tracker_db_interface_sqlite_get_type (void);
-
-TrackerDBInterface * tracker_db_interface_sqlite_new (const gchar *filename);
-
-void tracker_db_interface_sqlite_create_function (TrackerDBInterface *interface,
- const gchar *name,
- TrackerDBFunc func,
- gint n_args);
-gboolean tracker_db_interface_sqlite_set_collation_function (TrackerDBInterfaceSqlite *interface,
- const gchar *name,
- TrackerDBCollationFunc func);
-
-gint64 tracker_db_interface_sqlite_get_last_insert_id (TrackerDBInterfaceSqlite *interface);
-
-
-G_END_DECLS
-
-#endif /* __TRACKER_DB_INTERFACE_SQLITE_H__ */
diff --git a/src/trackerd/tracker-db-interface.c b/src/trackerd/tracker-db-interface.c
deleted file mode 100644
index 5a03b62e7..000000000
--- a/src/trackerd/tracker-db-interface.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/* Tracker - DB abstraction
- * Copyright (C) 2008 Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <gobject/gvaluecollector.h>
-#include "tracker-db-interface.h"
-
-
-#define TRACKER_DB_RESULT_SET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_DB_RESULT_SET, TrackerDBResultSetPrivate))
-
-typedef struct TrackerDBResultSetPrivate TrackerDBResultSetPrivate;
-
-struct TrackerDBResultSetPrivate {
- GType *col_types;
- GPtrArray *array;
- guint columns;
- guint current_row;
-};
-
-enum {
- PROP_0,
- PROP_COLUMNS
-};
-
-G_DEFINE_TYPE (TrackerDBResultSet, tracker_db_result_set, G_TYPE_OBJECT)
-
-GQuark
-tracker_db_interface_error_quark (void)
-{
- return g_quark_from_static_string ("tracker-db-interface-error-quark");
-}
-
-static void
-tracker_db_interface_class_init (gpointer iface)
-{
- g_object_interface_install_property (iface,
- g_param_spec_boolean ("in-transaction",
- "In transaction",
- "Whether the connection has a transaction opened",
- FALSE,
- G_PARAM_READWRITE));
-}
-
-GType
-tracker_db_interface_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "TrackerDBInterface",
- sizeof (TrackerDBInterfaceIface),
- (GClassInitFunc) tracker_db_interface_class_init,
- 0, NULL, 0);
-
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
- }
-
- return type;
-}
-
-/* Boxed type for blobs */
-static gpointer
-blob_copy (gpointer boxed)
-{
- GByteArray *array, *copy;
-
- array = (GByteArray *) boxed;
- copy = g_byte_array_sized_new (array->len);
- g_byte_array_append (copy, array->data, array->len);
-
- return copy;
-}
-
-static void
-blob_free (gpointer boxed)
-{
- GByteArray *array;
-
- array = (GByteArray *) boxed;
- g_byte_array_free (array, TRUE);
-}
-
-GType
-tracker_db_blob_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- type = g_boxed_type_register_static ("TrackerDBBlob",
- blob_copy,
- blob_free);
- }
-
- return type;
-}
-
-/* TrackerDBResultSet */
-static void
-tracker_db_result_set_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TrackerDBResultSetPrivate *priv;
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_COLUMNS:
- priv->columns = g_value_get_uint (value);
- priv->col_types = g_new0 (GType, priv->columns);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
-tracker_db_result_set_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TrackerDBResultSetPrivate *priv;
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_COLUMNS:
- g_value_set_uint (value, priv->columns);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
-free_row (gpointer *row,
- gpointer data)
-{
- guint columns = GPOINTER_TO_UINT (data);
- guint i;
-
- if (!row)
- return;
-
- for (i = 0; i < columns; i++) {
- g_free (row[i]);
- }
-
- g_free (row);
-}
-
-static void
-tracker_db_result_set_finalize (GObject *object)
-{
- TrackerDBResultSetPrivate *priv;
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (object);
-
- if (priv->array) {
- g_ptr_array_foreach (priv->array, (GFunc) free_row,
- GUINT_TO_POINTER (priv->columns));
- g_ptr_array_free (priv->array, TRUE);
- }
-
- g_free (priv->col_types);
-
- G_OBJECT_CLASS (tracker_db_result_set_parent_class)->finalize (object);
-}
-
-static void
-tracker_db_result_set_class_init (TrackerDBResultSetClass *class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (class);
-
- object_class->set_property = tracker_db_result_set_set_property;
- object_class->get_property = tracker_db_result_set_get_property;
- object_class->finalize = tracker_db_result_set_finalize;
-
- g_object_class_install_property (object_class,
- PROP_COLUMNS,
- g_param_spec_uint ("columns",
- "Columns",
- "Resultset columns",
- 0, G_MAXUINT, 0,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
-
- g_type_class_add_private (object_class,
- sizeof (TrackerDBResultSetPrivate));
-}
-
-static void
-tracker_db_result_set_init (TrackerDBResultSet *result_set)
-{
-}
-
-static TrackerDBResultSet *
-ensure_result_set_state (TrackerDBResultSet *result_set)
-{
- if (!result_set)
- return NULL;
-
- if (tracker_db_result_set_get_n_rows (result_set) == 0) {
- g_object_unref (result_set);
- return NULL;
- }
-
- /* ensure that it's at the first item */
- tracker_db_result_set_rewind (result_set);
-
- return result_set;
-}
-
-TrackerDBResultSet *
-tracker_db_interface_execute_vquery (TrackerDBInterface *interface,
- GError **error,
- const gchar *query,
- va_list args)
-{
- TrackerDBResultSet *result_set = NULL;
- gchar *str;
-
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (interface), NULL);
- g_return_val_if_fail (query != NULL, NULL);
-
- if (!TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_query) {
- g_critical ("Database abstraction %s doesn't implement the method execute_vquery()", G_OBJECT_TYPE_NAME (interface));
- return NULL;
- }
-
- str = g_strdup_vprintf (query, args);
- result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_query (interface, error, str);
- g_free (str);
-
- return ensure_result_set_state (result_set);
-}
-
-TrackerDBResultSet *
-tracker_db_interface_execute_query (TrackerDBInterface *interface,
- GError **error,
- const gchar *query,
- ...)
-{
- TrackerDBResultSet *result_set;
- va_list args;
-
- va_start (args, query);
- result_set = tracker_db_interface_execute_vquery (interface, error, query, args);
- va_end (args);
-
- return result_set;
-}
-
-void
-tracker_db_interface_set_procedure_table (TrackerDBInterface *interface,
- GHashTable *procedure_table)
-{
- g_return_if_fail (TRACKER_IS_DB_INTERFACE (interface));
- g_return_if_fail (procedure_table != NULL);
-
- if (!TRACKER_DB_INTERFACE_GET_IFACE (interface)->set_procedure_table) {
- g_critical ("Database abstraction %s doesn't implement the method set_procedure_table()", G_OBJECT_TYPE_NAME (interface));
- return;
- }
-
- TRACKER_DB_INTERFACE_GET_IFACE (interface)->set_procedure_table (interface, procedure_table);
-}
-
-TrackerDBResultSet *
-tracker_db_interface_execute_vprocedure (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- va_list args)
-{
- TrackerDBResultSet *result_set;
-
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (interface), NULL);
- g_return_val_if_fail (procedure != NULL, NULL);
-
- if (!TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure) {
- g_critical ("Database abstraction %s doesn't implement the method execute_procedure()", G_OBJECT_TYPE_NAME (interface));
- return NULL;
- }
-
- result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure (interface, error, procedure, args);
-
- return ensure_result_set_state (result_set);
-}
-
-TrackerDBResultSet *
-tracker_db_interface_execute_vprocedure_len (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- va_list args)
-{
- TrackerDBResultSet *result_set;
-
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (interface), NULL);
- g_return_val_if_fail (procedure != NULL, NULL);
-
- if (!TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure_len) {
- g_critical ("Database abstraction %s doesn't implement the method execute_procedure_len()", G_OBJECT_TYPE_NAME (interface));
- return NULL;
- }
-
- result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure_len (interface, error, procedure, args);
-
- return ensure_result_set_state (result_set);
-}
-
-TrackerDBResultSet *
-tracker_db_interface_execute_procedure (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- ...)
-{
- TrackerDBResultSet *result_set;
- va_list args;
-
- va_start (args, procedure);
- result_set = tracker_db_interface_execute_vprocedure (interface, error, procedure, args);
- va_end (args);
-
- return result_set;
-}
-
-TrackerDBResultSet *
-tracker_db_interface_execute_procedure_len (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- ...)
-{
- TrackerDBResultSet *result_set;
- va_list args;
-
- va_start (args, procedure);
- result_set = tracker_db_interface_execute_vprocedure_len (interface, error, procedure, args);
- va_end (args);
-
- return result_set;
-}
-
-gboolean
-tracker_db_interface_start_transaction (TrackerDBInterface *interface)
-{
- GError *error = NULL;
-
- tracker_db_interface_execute_query (interface, &error, "BEGIN TRANSACTION");
-
- if (error) {
- g_warning (error->message);
- g_error_free (error);
- return FALSE;
- }
-
- g_object_set (interface, "in-transaction", TRUE, NULL);
- return TRUE;
-}
-
-gboolean
-tracker_db_interface_end_transaction (TrackerDBInterface *interface)
-{
- gboolean in_transaction;
- GError *error = NULL;
-
- g_object_get (interface, "in-transaction", &in_transaction, NULL);
-
- if (!in_transaction)
- return FALSE;
-
- g_object_set (interface, "in-transaction", FALSE, NULL);
- tracker_db_interface_execute_query (interface, &error, "COMMIT");
-
- if (error) {
- g_warning (error->message);
- g_error_free (error);
-
- tracker_db_interface_execute_query (interface, NULL, "ROLLBACK");
-
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* TrackerDBResultSet semiprivate API */
-TrackerDBResultSet *
-_tracker_db_result_set_new (guint columns)
-{
- return g_object_new (TRACKER_TYPE_DB_RESULT_SET,
- "columns", columns,
- NULL);
-}
-
-void
-_tracker_db_result_set_append (TrackerDBResultSet *result_set)
-{
- TrackerDBResultSetPrivate *priv;
-
- g_return_if_fail (TRACKER_IS_DB_RESULT_SET (result_set));
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
-
- if (G_UNLIKELY (!priv->array)) {
- priv->array = g_ptr_array_sized_new (100);
- }
-
- g_ptr_array_add (priv->array, NULL);
- priv->current_row = priv->array->len - 1;
-}
-
-void
-_tracker_db_result_set_set_value (TrackerDBResultSet *result_set,
- guint column,
- const GValue *value)
-{
- TrackerDBResultSetPrivate *priv;
- gpointer *row = NULL;
-
- g_return_if_fail (TRACKER_IS_DB_RESULT_SET (result_set));
-
- /* just return if the value doesn't contain anything */
- if (G_VALUE_TYPE (value) == 0)
- return;
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
-
- g_return_if_fail (column < priv->columns);
-
- /* Assign a GType if it didn't have any */
- if (G_UNLIKELY (priv->col_types[column] == 0))
- priv->col_types[column] = G_VALUE_TYPE (value);
-
- row = g_ptr_array_index (priv->array, priv->current_row);
-
- /* Allocate space for the row, if it wasn't allocated previously */
- if (G_UNLIKELY (!row)) {
- row = g_new0 (gpointer, priv->columns);
- g_ptr_array_index (priv->array, priv->current_row) = row;
- }
-
- switch (priv->col_types [column]) {
- case G_TYPE_INT: {
- gint *val;
-
- val = g_new (gint, 1);
- *val = g_value_get_int (value);
- row[column] = val;
- break;
- }
- case G_TYPE_DOUBLE: {
- gdouble *val;
-
- val = g_new (gdouble, 1);
- *val = g_value_get_double (value);
- row[column] = val;
- break;
- }
- case G_TYPE_STRING:
- row[column] = (gpointer) g_value_dup_string (value);
- break;
- default:
- g_warning ("Unknown type for resultset: %s\n", G_VALUE_TYPE_NAME (value));
- }
-}
-
-static void
-fill_in_value (GValue *value,
- gpointer data)
-{
- switch (G_VALUE_TYPE (value)) {
- case G_TYPE_INT:
- g_value_set_int (value, *((gint*) data));
- break;
- case G_TYPE_DOUBLE:
- g_value_set_double (value, *((gdouble *) data));
- break;
- case G_TYPE_STRING:
- g_value_set_string (value, data);
- break;
- }
-}
-
-void
-_tracker_db_result_set_get_value (TrackerDBResultSet *result_set,
- guint column,
- GValue *value)
-{
- TrackerDBResultSetPrivate *priv;
- gpointer *row;
-
- g_return_if_fail (TRACKER_IS_DB_RESULT_SET (result_set));
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
- row = g_ptr_array_index (priv->array, priv->current_row);
-
- if (priv->col_types[column] != G_TYPE_INVALID) {
- g_value_init (value, priv->col_types[column]);
- fill_in_value (value, row[column]);
- } else {
- /* Make up some empty value */
- g_value_init (value, G_TYPE_STRING);
- g_value_set_string (value, "");
- }
-}
-
-/* TrackerDBResultSet API */
-void
-tracker_db_result_set_get (TrackerDBResultSet *result_set,
- ...)
-{
- TrackerDBResultSetPrivate *priv;
- va_list args;
- gint n_col;
- GValue value = { 0, };
- gpointer *row;
- gchar *error = NULL;
-
- g_return_if_fail (TRACKER_IS_DB_RESULT_SET (result_set));
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
- row = g_ptr_array_index (priv->array, priv->current_row);
- va_start (args, result_set);
-
- while ((n_col = va_arg (args, gint)) >= 0) {
- if ((guint) n_col >= priv->columns) {
- g_critical ("Result set has %d columns, trying to access column %d, "
- "maybe -1 is missing at the end of the arguments?",
- priv->columns, n_col);
- break;
- }
-
- if (priv->col_types[n_col] != G_TYPE_INVALID) {
- g_value_init (&value, priv->col_types[n_col]);
- fill_in_value (&value, row[n_col]);
- G_VALUE_LCOPY (&value, args, 0, &error);
- g_value_unset (&value);
- } else {
- gpointer *pointer;
-
- /* No valid type, set to NULL/0 */
- pointer = va_arg (args, gpointer *);
- *pointer = NULL;
- }
-
- if (error) {
- g_warning (error);
- g_free (error);
- }
- }
-
- va_end (args);
-}
-
-void
-tracker_db_result_set_rewind (TrackerDBResultSet *result_set)
-{
- TrackerDBResultSetPrivate *priv;
-
- g_return_if_fail (TRACKER_IS_DB_RESULT_SET (result_set));
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
- priv->current_row = 0;
-}
-
-gboolean
-tracker_db_result_set_iter_next (TrackerDBResultSet *result_set)
-{
- TrackerDBResultSetPrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_DB_RESULT_SET (result_set), FALSE);
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
-
- if (priv->current_row + 1 >= priv->array->len)
- return FALSE;
-
- priv->current_row++;
- return TRUE;
-}
-
-guint
-tracker_db_result_set_get_n_columns (TrackerDBResultSet *result_set)
-{
- TrackerDBResultSetPrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_DB_RESULT_SET (result_set), 0);
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
-
- return priv->columns;
-}
-
-guint
-tracker_db_result_set_get_n_rows (TrackerDBResultSet *result_set)
-{
- TrackerDBResultSetPrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_DB_RESULT_SET (result_set), 0);
-
- priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
-
- if (!priv->array)
- return 0;
-
- return priv->array->len;
-}
diff --git a/src/trackerd/tracker-db-interface.h b/src/trackerd/tracker-db-interface.h
deleted file mode 100644
index 269764e86..000000000
--- a/src/trackerd/tracker-db-interface.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Tracker - DB abstraction
- * Copyright (C) 2008 Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_DB_INTERFACE_H__
-#define __TRACKER_DB_INTERFACE_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_DB_INTERFACE (tracker_db_interface_get_type ())
-#define TRACKER_DB_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_TYPE_DB_INTERFACE, TrackerDBInterface))
-#define TRACKER_IS_DB_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_TYPE_DB_INTERFACE))
-#define TRACKER_DB_INTERFACE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TRACKER_TYPE_DB_INTERFACE, TrackerDBInterfaceIface))
-
-#define TRACKER_TYPE_DB_RESULT_SET (tracker_db_result_set_get_type ())
-#define TRACKER_DB_RESULT_SET(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_DB_RESULT_SET, TrackerDbResultSet))
-#define TRACKER_DB_RESULT_SET_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_DB_RESULT_SET, TrackerDbResultSetClass))
-#define TRACKER_IS_DB_RESULT_SET(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_DB_RESULT_SET))
-#define TRACKER_IS_DB_RESULT_SET_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((o), TRACKER_TYPE_DB_RESULT_SET))
-#define TRACKER_DB_RESULT_SET_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_DB_RESULT_SET, TrackerDbResultSetClass))
-
-#define TRACKER_TYPE_DB_BLOB (tracker_db_blob_get_type ())
-
-#define TRACKER_DB_INTERFACE_ERROR (tracker_db_interface_error_quark ())
-
-typedef enum {
- TRACKER_DB_QUERY_ERROR,
- TRACKER_DB_CORRUPT
-} TrackerDBInterfaceError;
-
-typedef struct TrackerDBInterface TrackerDBInterface;
-typedef struct TrackerDBInterfaceIface TrackerDBInterfaceIface;
-typedef struct TrackerDBResultSet TrackerDBResultSet;
-typedef struct TrackerDBResultSetClass TrackerDBResultSetClass;
-
-struct TrackerDBInterfaceIface {
- GTypeInterface iface;
-
- void (* set_procedure_table) (TrackerDBInterface *interface,
- GHashTable *procedure_table);
- TrackerDBResultSet * (* execute_procedure) (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- va_list args);
- TrackerDBResultSet * (* execute_procedure_len) (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- va_list args);
- TrackerDBResultSet * (* execute_query) (TrackerDBInterface *interface,
- GError **error,
- const gchar *query);
-};
-
-struct TrackerDBResultSet {
- GObject parent_class;
-};
-
-struct TrackerDBResultSetClass {
- GObjectClass parent_class;
-};
-
-
-GQuark tracker_db_interface_error_quark (void);
-
-GType tracker_db_interface_get_type (void);
-GType tracker_db_result_set_get_type (void);
-GType tracker_db_blob_get_type (void);
-
-
-/* Functions to create queries/procedures */
-TrackerDBResultSet * tracker_db_interface_execute_vquery (TrackerDBInterface *interface,
- GError **error,
- const gchar *query,
- va_list args);
-TrackerDBResultSet * tracker_db_interface_execute_query (TrackerDBInterface *interface,
- GError **error,
- const gchar *query,
- ...) G_GNUC_PRINTF (3, 4);
-void tracker_db_interface_set_procedure_table (TrackerDBInterface *interface,
- GHashTable *procedure_table);
-TrackerDBResultSet * tracker_db_interface_execute_vprocedure (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- va_list args);
-TrackerDBResultSet * tracker_db_interface_execute_procedure (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- ...) G_GNUC_NULL_TERMINATED;
-
-TrackerDBResultSet * tracker_db_interface_execute_vprocedure_len (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- va_list args);
-TrackerDBResultSet * tracker_db_interface_execute_procedure_len (TrackerDBInterface *interface,
- GError **error,
- const gchar *procedure,
- ...) G_GNUC_NULL_TERMINATED;
-
-gboolean tracker_db_interface_start_transaction (TrackerDBInterface *interface);
-gboolean tracker_db_interface_end_transaction (TrackerDBInterface *interface);
-
-
-/* Semi private TrackerDBResultSet functions */
-TrackerDBResultSet * _tracker_db_result_set_new (guint cols);
-void _tracker_db_result_set_append (TrackerDBResultSet *result_set);
-void _tracker_db_result_set_set_value (TrackerDBResultSet *result_set,
- guint column,
- const GValue *value);
-void _tracker_db_result_set_get_value (TrackerDBResultSet *result_set,
- guint column,
- GValue *value);
-
-/* Functions to deal with the resultset */
-void tracker_db_result_set_get (TrackerDBResultSet *result_set,
- ...);
-void tracker_db_result_set_rewind (TrackerDBResultSet *result_set);
-gboolean tracker_db_result_set_iter_next (TrackerDBResultSet *result_set);
-guint tracker_db_result_set_get_n_columns (TrackerDBResultSet *result_set);
-guint tracker_db_result_set_get_n_rows (TrackerDBResultSet *result_set);
-
-
-G_END_DECLS
-
-#endif /* __TRACKER_DB_INTERFACE_H__ */
diff --git a/src/trackerd/tracker-db-sqlite.c b/src/trackerd/tracker-db-sqlite.c
deleted file mode 100644
index 43a7455d9..000000000
--- a/src/trackerd/tracker-db-sqlite.c
+++ /dev/null
@@ -1,5315 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include "tracker-rdf-query.h"
-
-#include "config.h"
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <strings.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <time.h>
-#include <regex.h>
-#include <zlib.h>
-
-#ifdef OS_WIN32
-#include "mingw-compat.h"
-#endif
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-db-interface-sqlite.h"
-#include "tracker-db-sqlite.h"
-#include "tracker-indexer.h"
-#include "tracker-cache.h"
-#include "tracker-metadata.h"
-#include "tracker-utils.h"
-#include "tracker-watch.h"
-#include "tracker-service-manager.h"
-#include "tracker-query-tree.h"
-
-#define MAX_TEXT_BUFFER 65567
-#define MAX_COMPRESS_BUFFER 65565
-#define DEFAULT_PAGE_CACHE 64
-#define MIN_PAGE_CACHE 16
-
-extern Tracker *tracker;
-
-static GHashTable *prepared_queries;
-//static GMutex *sequence_mutex;
-
-gboolean use_nfs_safe_locking = FALSE;
-
-typedef struct {
- guint32 service_id;
- int service_type_id;
- DBConnection *db_con;
-} ServiceTypeInfo;
-
-
-
-
-
-/* sqlite utf-8 user defined collation sequence */
-
-static int
-utf8_collation_func (gchar *str1, gint len1, gchar *str2, int len2)
-{
- char *word1, *word2;
- int result;
-
- /* collate words */
-
- word1 = g_utf8_collate_key_for_filename (str1, len1);
- word2 = g_utf8_collate_key_for_filename (str2, len2);
-
- result = strcmp (word1, word2);
-
- g_free (word1);
- g_free (word2);
-
- return result;
-}
-
-
-
-
-/* sqlite user defined functions for use in sql */
-
-/* converts date/time in UTC format to ISO 8160 standardised format for display */
-static GValue
-function_date_to_str (TrackerDBInterface *interface,
- gint argc,
- GValue values[])
-{
- GValue result = { 0, };
- gchar *str;
-
- str = tracker_date_to_str (g_value_get_double (&values[0]));
- g_value_init (&result, G_TYPE_STRING);
- g_value_take_string (&result, str);
-
- return result;
-}
-
-static GValue
-function_regexp (TrackerDBInterface *interface,
- gint argc,
- GValue values[])
-{
- GValue result = { 0, };
- regex_t regex;
- int ret;
-
- if (argc != 2) {
- g_critical ("Invalid argument count");
- return result;
- }
-
- ret = regcomp (&regex,
- g_value_get_string (&values[0]),
- REG_EXTENDED | REG_NOSUB);
-
- if (ret != 0) {
- g_critical ("Error compiling regular expression");
- return result;
- }
-
- ret = regexec (&regex,
- g_value_get_string (&values[1]),
- 0, NULL, 0);
-
- g_value_init (&result, G_TYPE_INT);
- g_value_set_int (&result, (ret == REG_NOMATCH) ? 0 : 1);
- regfree (&regex);
-
- return result;
-}
-
-/* unzips data */
-static GValue
-function_uncompress (TrackerDBInterface *interface,
- gint argc,
- GValue values[])
-{
- GByteArray *array;
- GValue result = { 0, };
- gchar *output;
- gint len;
-
- array = g_value_get_boxed (&values[0]);
-
- if (!array) {
- return result;
- }
-
- output = tracker_uncompress ((const gchar *) array->data, array->len, &len);
-
- if (!output) {
- g_warning ("Uncompress failed");
- return result;
- }
-
- g_value_init (&result, G_TYPE_STRING);
- g_value_take_string (&result, output);
-
- return result;
-}
-
-static GValue
-function_get_service_name (TrackerDBInterface *interface,
- gint argc,
- GValue values[])
-{
- GValue result = { 0, };
- gchar *str;
-
- str = tracker_service_manager_get_service_by_id (g_value_get_int (&values[0]));
- g_value_init (&result, G_TYPE_STRING);
- g_value_take_string (&result, str);
-
- return result;
-}
-
-static GValue
-function_get_service_type (TrackerDBInterface *interface,
- gint argc,
- GValue values[])
-{
- GValue result = { 0, };
- gint id;
-
- id = tracker_service_manager_get_id_for_service (g_value_get_string (&values[0]));
- g_value_init (&result, G_TYPE_INT);
- g_value_set_int (&result, id);
-
- return result;
-}
-
-static GValue
-function_get_max_service_type (TrackerDBInterface *interface,
- gint argc,
- GValue values[])
-{
- GValue result = { 0, };
- gint id;
-
- id = tracker_service_manager_get_id_for_service (g_value_get_string (&values[0]));
- g_value_init (&result, G_TYPE_INT);
- g_value_set_int (&result, id);
-
- return result;
-}
-
-static void
-load_sql_file (DBConnection *db_con, const char *sql_file)
-{
- char *filename, *query;
-
- filename = g_build_filename (SHAREDIR, "tracker", sql_file, NULL);
-
- if (!g_file_get_contents (filename, &query, NULL, NULL)) {
- tracker_error ("ERROR: Tracker cannot read required file %s - Please reinstall tracker or check read permissions on the file if it exists", sql_file);
- g_assert (FALSE);
- } else {
- char **queries, **queries_p ;
-
- queries = g_strsplit_set (query, ";", -1);
-
- for (queries_p = queries; *queries_p; queries_p++) {
- tracker_db_exec_no_reply (db_con, *queries_p);
- }
- g_strfreev (queries);
- g_free (query);
- tracker_log ("loaded sql file %s", sql_file);
- }
-
- g_free (filename);
-}
-
-
-static void
-load_sql_trigger (DBConnection *db_con, const char *sql_file)
-{
- char *filename, *query;
-
- filename = g_build_filename (SHAREDIR, "tracker", sql_file, NULL);
-
- if (!g_file_get_contents (filename, &query, NULL, NULL)) {
- tracker_error ("ERROR: Tracker cannot read required file %s - Please reinstall tracker or check read permissions on the file if it exists", sql_file);
- g_assert (FALSE);
- } else {
- char **queries, **queries_p ;
-
- queries = g_strsplit_set (query, "!", -1);
-
- for (queries_p = queries; *queries_p; queries_p++) {
- tracker_db_exec_no_reply (db_con, *queries_p);
- }
- g_strfreev (queries);
- g_free (query);
- tracker_log ("loaded sql file %s", sql_file);
- }
-
- g_free (filename);
-}
-
-
-
-FieldDef *
-tracker_db_get_field_def (DBConnection *db_con, const char *field_name)
-{
- FieldDef *def;
- char *name;
-
- name = g_utf8_strdown (field_name, -1);
- def = g_hash_table_lookup (tracker->metadata_table, name);
- g_free (name);
-
- return def;
-
-}
-
-
-void
-tracker_db_free_field_def (FieldDef *def)
-{
-}
-
-
-char **
-tracker_db_get_row (char ***result, int num)
-{
- if (!result) {
- return NULL;
- }
-
- if (result[num]) {
- return result[num];
- }
-
- return NULL;
-}
-
-void
-tracker_db_free_result (char ***result)
-{
- char ***rows;
-
- if (!result) {
- return;
- }
-
- for (rows = result; *rows; rows++) {
- g_strfreev (*rows);
- }
-
- g_free (result);
-}
-
-
-int
-tracker_get_row_count (char ***result)
-{
- char ***rows;
- int i;
-
- if (!result) {
- return 0;
- }
-
- i = 0;
-
- for (rows = result; *rows; rows++) {
- i++;
- }
-
- return i;
-}
-
-
-int
-tracker_get_field_count (char ***result)
-{
- char **row, **p;
- int i;
-
- if (!result) {
- return 0;
- }
-
- row = tracker_db_get_row (result, 0);
-
- if (!row) {
- return 0;
- }
-
- i = 0;
-
- for (p = row; *p; p++) {
- i++;
- }
-
- return i;
-}
-
-static inline void
-lock_connection (DBConnection *db_con)
-{
-}
-
-
-static inline void
-unlock_connection (DBConnection *db_con)
-{
-}
-
-
-gboolean
-tracker_db_initialize (void)
-{
- FILE *file;
- char *sql_file;
- GTimeVal *tv;
- int i = 0;
-
- prepared_queries = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-
- tracker_log ("Loading prepared queries...");
-
- sql_file = g_build_filename (SHAREDIR, "tracker", "sqlite-stored-procs.sql", NULL);
-
- if (!g_file_test (sql_file, G_FILE_TEST_EXISTS)) {
- tracker_error ("ERROR: Tracker cannot read required file %s - Please reinstall tracker or check read permissions on the file if it exists", sql_file);
- g_assert (FALSE);
- }
-
-
- file = g_fopen (sql_file, "r");
-
-
- tv = tracker_timer_start ();
-
- while (!feof (file)) {
- char buffer[8192];
- char *sep;
-
- i++;
-
- if (!fgets (buffer, 8192, file)) {
- /* An "if" to avoid warnings about value returned by fgets()
- not handled...
- We do not look the returned value since we will have NULL
- with a file which terminates with '\n' on a empty line...
- */
- }
-
- if (strlen (buffer) < 5) {
- continue;
- }
-
- sep = strchr (buffer, ' ');
-
- if (sep) {
- const char *query, *name;
-
- *sep = '\0';
-
- query = sep + 1;
- name = buffer;
-
- //tracker_log ("installing query %s with sql %s", name, query);
- g_hash_table_insert (prepared_queries, g_strdup (name), g_strdup (query));
- } else {
- continue;
- }
-
-
- }
-
- fclose (file);
-
- g_free (sql_file);
-
- tracker_timer_end (tv, "File loaded in ");
-
- return TRUE;
-}
-
-
-void
-tracker_db_thread_init (void)
-{
-// sqlite3_enable_shared_cache (1);
-}
-
-void
-tracker_db_finalize (void)
-{
-}
-
-static inline void
-close_db (DBConnection *db_con)
-{
- if (db_con->db) {
- g_object_unref (db_con->db);
- db_con->db = NULL;
- }
-
- tracker_debug ("Database closed for thread %s", db_con->thread);
-}
-
-
-void
-tracker_db_close (DBConnection *db_con)
-{
- if (!db_con->thread) {
- db_con->thread = "main";
- }
-
- close_db (db_con);
-}
-
-
-
-
-
-/*
-static void
-test_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- DBConnection *db_con;
- sqlite3_stmt *stmt;
- int rc;
-
- db_con = user_data;
-
- rc = sqlite3_prepare (db_con->db, query, -1, &stmt, 0);
-
- if (rc == SQLITE_OK && stmt != NULL) {
- char *procedure, *query;
-
- procedure = (char *) key;
- query = (char *) value;
-
- //tracker_log ("successfully prepared query %s", procedure);
- //g_hash_table_insert (db_con->statements, g_strdup (procedure), stmt);
- } else {
- tracker_error ("ERROR: failed to prepare query %s with sql %s due to %s", procedure, query, sqlite3_errmsg (db_con->db));
- return;
- }
-}
-*/
-
-
-static TrackerDBInterface *
-open_user_db (const char *name, gboolean *create_table)
-{
- TrackerDBInterface *db;
- gboolean db_exists;
- char *dbname;
-
- dbname = g_build_filename (tracker->user_data_dir, name, NULL);
- db_exists = g_file_test (dbname, G_FILE_TEST_IS_REGULAR);
-
- if (!db_exists) {
- tracker_log ("database file %s is not present - will create", dbname);
- }
-
- if (create_table) {
- *create_table = db_exists;
- }
-
- db = tracker_db_interface_sqlite_new (dbname);
- tracker_db_interface_set_procedure_table (db, prepared_queries);
- g_free (dbname);
-
- return db;
-}
-
-
-
-static TrackerDBInterface *
-open_db (const char *name, gboolean *create_table)
-{
- TrackerDBInterface *db;
- gboolean db_exists;
- char *dbname;
-
- dbname = g_build_filename (tracker->data_dir, name, NULL);
- db_exists = g_file_test (dbname, G_FILE_TEST_IS_REGULAR);
-
- if (!db_exists) {
- tracker_log ("database file %s is not present - will create", dbname);
- }
-
- if (create_table) {
- *create_table = db_exists;
- }
-
- db = tracker_db_interface_sqlite_new (dbname);
- tracker_db_interface_set_procedure_table (db, prepared_queries);
- g_free (dbname);
-
- return db;
-
-}
-
-
-static void
-set_params (DBConnection *db_con, int cache_size, gboolean add_functions)
-{
- tracker_db_set_default_pragmas (db_con);
-
- tracker_db_exec_no_reply (db_con, "PRAGMA page_size = %d", 4096);
-
- if (tracker_config_get_low_memory_mode (tracker->config)) {
- cache_size /= 2;
- }
-
- tracker_db_exec_no_reply (db_con, "PRAGMA cache_size = %d", cache_size);
-
- if (add_functions) {
- if (! tracker_db_interface_sqlite_set_collation_function (TRACKER_DB_INTERFACE_SQLITE (db_con->db),
- "UTF8", utf8_collation_func)) {
- tracker_error ("ERROR: collation sequence failed");
- }
-
- /* create user defined functions that can be used in sql */
- tracker_db_interface_sqlite_create_function (db_con->db, "FormatDate", function_date_to_str, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetServiceName", function_get_service_name, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetServiceTypeID", function_get_service_type, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetMaxServiceTypeID", function_get_max_service_type, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "REGEXP", function_regexp, 2);
- }
-}
-
-
-
-static void
-open_common_db (DBConnection *db_con)
-{
- gboolean create;
-
- db_con->db = open_user_db ("common.db", &create);
-
- set_params (db_con, 32, FALSE);
-
-}
-
-
-DBConnection *
-tracker_db_connect_common (void)
-{
-
- DBConnection *db_con;
-
- db_con = g_new0 (DBConnection, 1);
-
- open_common_db (db_con);
-
- db_con->db_type = TRACKER_DB_TYPE_COMMON;
-
- db_con->cache = NULL;
- db_con->emails = NULL;
- db_con->others = NULL;
- db_con->blob = NULL;
- db_con->common = db_con;
-
- db_con->thread = NULL;
-
- db_con->in_transaction = FALSE;
-
- return db_con;
-}
-
-void
-tracker_db_attach_db (DBConnection *db_con, const char *name)
-{
- gchar *path;
-
- if (strcmp (name, "common") == 0) {
- path = g_build_filename (tracker->user_data_dir, "common.db", NULL);
- tracker_db_exec_no_reply (db_con, "ATTACH '%s' as %s", path, name);
- } else if (strcmp (name, "cache") == 0) {
- path = g_build_filename (tracker->sys_tmp_root_dir, "cache.db", NULL);
- tracker_db_exec_no_reply (db_con, "ATTACH '%s' as %s", path, name);
- }
-
- g_free (path);
-}
-
-static inline void
-free_db_con (DBConnection *db_con)
-{
- g_free (db_con);
- db_con = NULL;
-}
-
-/* convenience function for process files thread */
-DBConnection *
-tracker_db_connect_all (gboolean indexer_process)
-{
-
- DBConnection *db_con;
- DBConnection *blob_db_con = NULL;
- DBConnection *word_index_db_con = NULL;
-
- DBConnection *common_db_con = NULL;
-
- DBConnection *emails_blob_db_con = NULL;
- DBConnection *emails_db_con= NULL;
- DBConnection *email_word_index_db_con= NULL;
-
- if (!indexer_process) {
- db_con = tracker_db_connect ();
- emails_db_con = tracker_db_connect_emails ();
- } else {
- db_con = tracker_db_connect_file_meta ();
- emails_db_con = tracker_db_connect_email_meta ();
- }
-
- blob_db_con = tracker_db_connect_file_content ();
- emails_blob_db_con = tracker_db_connect_email_content ();
- common_db_con = tracker_db_connect_common ();
-
- word_index_db_con = tracker->file_index;
- email_word_index_db_con = tracker->email_index;
-
- db_con->cache = tracker_db_connect_cache ();
-
- db_con->blob = blob_db_con;
- db_con->data = db_con;
- db_con->emails = emails_db_con;
- db_con->common = common_db_con;
- db_con->word_index = word_index_db_con;
- db_con->index = db_con;
-
- emails_db_con->common = common_db_con;
- emails_db_con->blob = emails_blob_db_con;
- emails_db_con->data = db_con;
- emails_db_con->word_index = email_word_index_db_con;
- emails_db_con->index = emails_db_con;
- emails_db_con->cache = db_con->cache;
-
- return db_con;
-
-}
-
-void
-tracker_db_close_all (DBConnection *db_con)
-{
-
- DBConnection *email_db_con = db_con->emails;
- DBConnection *email_blob_db_con = email_db_con->blob;
-
- DBConnection *common_db_con = db_con->common;
- DBConnection *cache_db_con = db_con->cache;
-
- DBConnection *file_blob_db_con = db_con->blob;
-
-
- /* close emails */
- if (email_blob_db_con) {
- tracker_db_close (email_blob_db_con);
- free_db_con (email_blob_db_con);
- }
-
- if (email_db_con) {
- tracker_db_close (email_db_con);
- g_free (email_db_con);
- }
-
-
- /* close files */
- if (file_blob_db_con) {
- tracker_db_close (file_blob_db_con);
- free_db_con (file_blob_db_con);
- }
-
- tracker_db_close (db_con);
- g_free (db_con);
-
-
- /* close others */
- if (common_db_con) {
- tracker_db_close (common_db_con);
- free_db_con (common_db_con);
- }
-
-
- if (cache_db_con) {
- tracker_db_close (cache_db_con);
- free_db_con (cache_db_con);
- }
-
-
-}
-
-void
-tracker_db_start_index_transaction (DBConnection *db_con)
-{
- DBConnection *email_db_con = db_con->emails;
-
- tracker_db_interface_start_transaction (db_con->common->db);
-
- /* files */
- tracker_db_interface_start_transaction (db_con->db);
- tracker_db_interface_start_transaction (db_con->blob->db);
-
- /* emails */
- tracker_db_interface_start_transaction (email_db_con->db);
- tracker_db_interface_start_transaction (email_db_con->blob->db);
-}
-
-
-
-void
-tracker_db_end_index_transaction (DBConnection *db_con)
-{
- DBConnection *email_db_con = db_con->emails;
-
- tracker_db_interface_end_transaction (db_con->common->db);
-
- /* files */
- tracker_db_interface_end_transaction (db_con->db);
- tracker_db_interface_end_transaction (db_con->blob->db);
-
- /* emails */
- tracker_db_interface_end_transaction (email_db_con->db);
- tracker_db_interface_end_transaction (email_db_con->blob->db);
-}
-
-
-void
-tracker_db_set_default_pragmas (DBConnection *db_con)
-{
- tracker_db_exec_no_reply (db_con, "PRAGMA synchronous = NORMAL;");
-
- tracker_db_exec_no_reply (db_con, "PRAGMA count_changes = 0;");
-
- tracker_db_exec_no_reply (db_con, "PRAGMA temp_store = FILE;");
-
- tracker_db_exec_no_reply (db_con, "PRAGMA encoding = \"UTF-8\"");
-
- tracker_db_exec_no_reply (db_con, "PRAGMA auto_vacuum = 0;");
-
-}
-
-
-DBConnection *
-tracker_db_connect (void)
-{
- DBConnection *db_con;
- gboolean create_table = FALSE;
- char *dbname;
-
- dbname = g_build_filename (tracker->data_dir, "file-meta.db", NULL);
-
- if (!g_file_test (dbname, G_FILE_TEST_IS_REGULAR)) {
- tracker_log ("database file %s is not present - will create", dbname);
- create_table = TRUE;
- }
-
- db_con = g_new0 (DBConnection, 1);
- db_con->db = tracker_db_interface_sqlite_new (dbname);
- tracker_db_interface_set_procedure_table (db_con->db, prepared_queries);
- g_free (dbname);
-
- db_con->db_type = TRACKER_DB_TYPE_DATA;
- db_con->db_category = DB_CATEGORY_FILES;
-
- db_con->data = db_con;
-
- tracker_db_set_default_pragmas (db_con);
-
- if (!tracker_config_get_low_memory_mode (tracker->config)) {
- tracker_db_exec_no_reply (db_con, "PRAGMA cache_size = %d", 32);
- } else {
- tracker_db_exec_no_reply (db_con, "PRAGMA cache_size = %d", 16);
- }
-
- /* create user defined utf-8 collation sequence */
- if (! tracker_db_interface_sqlite_set_collation_function (TRACKER_DB_INTERFACE_SQLITE (db_con->db),
- "UTF8", utf8_collation_func)) {
- tracker_error ("ERROR: collation sequence failed");
- }
-
- /* create user defined functions that can be used in sql */
- tracker_db_interface_sqlite_create_function (db_con->db, "FormatDate", function_date_to_str, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetServiceName", function_get_service_name, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetServiceTypeID", function_get_service_type, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetMaxServiceTypeID", function_get_max_service_type, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "REGEXP", function_regexp, 2);
-
- if (create_table) {
- tracker_log ("Creating file database...");
- load_sql_file (db_con, "sqlite-service.sql");
- load_sql_trigger (db_con, "sqlite-service-triggers.sql");
-
- load_sql_file (db_con, "sqlite-metadata.sql");
-
- tracker_db_load_service_file (db_con, "default.metadata", FALSE);
- tracker_db_load_service_file (db_con, "file.metadata", FALSE);
- tracker_db_load_service_file (db_con, "audio.metadata", FALSE);
- tracker_db_load_service_file (db_con, "application.metadata", FALSE);
- tracker_db_load_service_file (db_con, "document.metadata", FALSE);
- tracker_db_load_service_file (db_con, "email.metadata", FALSE);
- tracker_db_load_service_file (db_con, "image.metadata", FALSE);
- tracker_db_load_service_file (db_con, "video.metadata", FALSE);
-
- tracker_db_exec_no_reply (db_con, "ANALYZE");
- }
-
-
- tracker_db_attach_db (db_con, "common");
- tracker_db_attach_db (db_con, "cache");
-
- db_con->cache = db_con;
- db_con->common = db_con;
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-void
-tracker_db_fsync (DBConnection *db_con, gboolean enable)
-{
- if (!enable) {
- tracker_db_exec_no_reply (db_con, "PRAGMA synchronous = OFF;");
- } else {
- tracker_db_exec_no_reply (db_con, "PRAGMA synchronous = NORMAL;");
- }
-
-}
-
-static inline void
-open_file_db (DBConnection *db_con)
-{
- gboolean create;
-
- db_con->db = open_db ("file-meta.db", &create);
-
- set_params (db_con, 512, TRUE);
-}
-
-DBConnection *
-tracker_db_connect_file_meta (void)
-{
- DBConnection *db_con;
-
- db_con = g_new0 (DBConnection, 1);
-
- db_con->db_type = TRACKER_DB_TYPE_INDEX;
- db_con->db_category = DB_CATEGORY_FILES;
- db_con->index = db_con;
-
- open_file_db (db_con);
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-static inline void
-open_email_db (DBConnection *db_con)
-{
- gboolean create;
-
- db_con->db = open_db ("email-meta.db", &create);
-
- set_params (db_con, 512, TRUE);
-}
-
-DBConnection *
-tracker_db_connect_email_meta (void)
-{
- DBConnection *db_con;
-
- db_con = g_new0 (DBConnection, 1);
-
- db_con->db_type = TRACKER_DB_TYPE_INDEX;
- db_con->db_category = DB_CATEGORY_EMAILS;
-
- db_con->index = db_con;
- db_con->emails = db_con;
-
- open_email_db (db_con);
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-static inline void
-open_file_content_db (DBConnection *db_con)
-{
- gboolean create;
-
- db_con->db = open_db ("file-contents.db", &create);
-
- set_params (db_con, 1024, FALSE);
-
- if (create) {
- tracker_db_exec_no_reply (db_con, "CREATE TABLE ServiceContents (ServiceID Int not null, MetadataID Int not null, Content Text, primary key (ServiceID, MetadataID))");
- tracker_log ("creating file content table");
- }
-
- tracker_db_interface_sqlite_create_function (db_con->db, "uncompress", function_uncompress, 1);
-}
-
-DBConnection *
-tracker_db_connect_file_content (void)
-{
- DBConnection *db_con;
-
- db_con = g_new0 (DBConnection, 1);
-
- db_con->db_type = TRACKER_DB_TYPE_CONTENT;
- db_con->db_category = DB_CATEGORY_FILES;
- db_con->blob = db_con;
-
- open_file_content_db (db_con);
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-static inline void
-open_email_content_db (DBConnection *db_con)
-{
- gboolean create;
-
- db_con->db = open_db ("email-contents.db", &create);
-
- set_params (db_con, 512, FALSE);
-
- if (create) {
- tracker_db_exec_no_reply (db_con, "CREATE TABLE ServiceContents (ServiceID Int not null, MetadataID Int not null, Content Text, primary key (ServiceID, MetadataID))");
- tracker_log ("creating email content table");
- }
-
- tracker_db_interface_sqlite_create_function (db_con->db, "uncompress", function_uncompress, 1);
-}
-
-DBConnection *
-tracker_db_connect_email_content (void)
-{
- DBConnection *db_con;
-
- db_con = g_new0 (DBConnection, 1);
-
- db_con->db_type = TRACKER_DB_TYPE_CONTENT;
- db_con->db_category = DB_CATEGORY_EMAILS;
- db_con->blob = db_con;
-
- open_email_content_db (db_con);
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-void
-tracker_db_refresh_all (DBConnection *db_con)
-{
- gboolean cache_trans = FALSE;
- DBConnection *cache = db_con->cache;
- DBConnection *emails = db_con->emails;
-
- if (cache && tracker_db_interface_end_transaction (cache->db)) {
- cache_trans = TRUE;
- }
-
- /* close and reopen all databases */
- close_db (db_con);
- close_db (db_con->blob);
-
- close_db (emails->blob);
- close_db (emails->common);
- close_db (emails);
-
- open_file_db (db_con);
- open_file_content_db (db_con->blob);
-
- open_email_content_db (emails->blob);
- open_common_db (emails->common);
- open_email_db (emails);
-
- if (cache_trans) {
- tracker_db_interface_start_transaction (cache->db);
- }
-
-
-}
-
-void
-tracker_db_refresh_email (DBConnection *db_con)
-{
- gboolean cache_trans = FALSE;
- DBConnection *cache = db_con->cache;
-
- if (cache && tracker_db_interface_end_transaction (cache->db)) {
- cache_trans = TRUE;
- }
-
- /* close email DBs and reopen them */
-
- DBConnection *emails = db_con->emails;
-
- close_db (emails->blob);
- close_db (emails->common);
- close_db (emails);
-
- open_email_content_db (emails->blob);
- open_common_db (emails->common);
- open_email_db (emails);
-
- if (cache_trans) {
- tracker_db_interface_start_transaction (cache->db);
- }
-}
-
-DBConnection *
-tracker_db_connect_cache (void)
-{
- gboolean create_table;
- char *dbname;
- DBConnection *db_con;
-
- create_table = FALSE;
-
- if (!tracker || !tracker->sys_tmp_root_dir) {
- tracker_error ("FATAL ERROR: system TMP dir for cache set to %s", tracker->sys_tmp_root_dir);
- exit (1);
- }
-
- dbname = g_build_filename (tracker->sys_tmp_root_dir, "cache.db", NULL);
-
- if (!tracker_file_is_valid (dbname)) {
- create_table = TRUE;
- }
-
- db_con = g_new0 (DBConnection, 1);
- db_con->db = tracker_db_interface_sqlite_new (dbname);
- tracker_db_interface_set_procedure_table (db_con->db, prepared_queries);
- g_free (dbname);
-
- db_con->db_type = TRACKER_DB_TYPE_CACHE;
- db_con->cache = db_con;
-
- tracker_db_set_default_pragmas (db_con);
-
- if (!tracker_config_get_low_memory_mode (tracker->config)) {
- tracker_db_exec_no_reply (db_con, "PRAGMA cache_size = %d", 128);
- } else {
- tracker_db_exec_no_reply (db_con, "PRAGMA cache_size = %d", 32);
- }
-
-
- if (create_table) {
- load_sql_file (db_con, "sqlite-cache.sql");
- tracker_db_exec_no_reply (db_con, "ANALYZE");
- }
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-DBConnection *
-tracker_db_connect_emails (void)
-{
- gboolean create_table;
- char *dbname;
- DBConnection *db_con;
-
- create_table = FALSE;
-
- dbname = g_build_filename (tracker->data_dir, "email-meta.db", NULL);
-
-
- if (!g_file_test (dbname, G_FILE_TEST_IS_REGULAR)) {
- tracker_log ("database file %s is not present - will create", dbname);
- create_table = TRUE;
- }
-
-
- db_con = g_new0 (DBConnection, 1);
- db_con->db = tracker_db_interface_sqlite_new (dbname);
- tracker_db_interface_set_procedure_table (db_con->db, prepared_queries);
- g_free (dbname);
-
-
- db_con->db_type = TRACKER_DB_TYPE_EMAIL;
- db_con->db_category = DB_CATEGORY_EMAILS;
-
- db_con->emails = db_con;
-
- tracker_db_exec_no_reply (db_con, "PRAGMA page_size = %d", 4096);
-
- tracker_db_set_default_pragmas (db_con);
-
- tracker_db_exec_no_reply (db_con, "PRAGMA cache_size = %d", 8);
-
- /* create user defined utf-8 collation sequence */
- if (! tracker_db_interface_sqlite_set_collation_function (TRACKER_DB_INTERFACE_SQLITE (db_con->db),
- "UTF8", utf8_collation_func)) {
- tracker_error ("ERROR: collation sequence failed");
- }
-
- /* create user defined functions that can be used in sql */
- tracker_db_interface_sqlite_create_function (db_con->db, "FormatDate", function_date_to_str, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetServiceName", function_get_service_name, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetServiceTypeID", function_get_service_type, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "GetMaxServiceTypeID", function_get_max_service_type, 1);
- tracker_db_interface_sqlite_create_function (db_con->db, "REGEXP", function_regexp, 2);
-
- if (create_table) {
- tracker_log ("Creating email database...");
- load_sql_file (db_con, "sqlite-service.sql");
- load_sql_trigger (db_con, "sqlite-service-triggers.sql");
- load_sql_file (db_con, "sqlite-email.sql");
-
- tracker_db_exec_no_reply (db_con, "ANALYZE");
- }
-
- tracker_db_attach_db (db_con, "common");
- tracker_db_attach_db (db_con, "cache");
-
- db_con->thread = NULL;
-
- return db_con;
-}
-
-
-char *
-tracker_db_get_alias (const char *service)
-{
- gchar *parent;
- gint id;
-
- id = tracker_service_manager_get_id_for_parent_service (service);
- parent = tracker_service_manager_get_service_by_id (id);
-
- if (strcmp (parent, "Files") == 0) {
- g_free (parent);
- return g_strdup ("files");
- }
-
- if (strcmp (parent, "Emails") == 0) {
- g_free (parent);
- return g_strdup ("emails");
- }
-
- g_free (parent);
- return g_strdup ("misc");
-
-
-
-
-}
-
-
-/* get no of links to a file - used for safe NFS atomic file locking */
-static int
-get_nlinks (const char *name)
-{
- struct stat st;
-
- if (g_stat (name, &st) == 0) {
- return st.st_nlink;
- } else {
- return -1;
- }
-}
-
-
-static int
-get_mtime (const char *name)
-{
- struct stat st;
-
- if (g_stat (name, &st) == 0) {
- return st.st_mtime;
- } else {
- return -1;
- }
-}
-
-
-/* serialises db access via a lock file for safe use on (lock broken) NFS mounts */
-static gboolean
-lock_db (void)
-{
- int attempt;
- char *lock_file, *tmp, *tmp_file;
-
- if (!use_nfs_safe_locking) {
- return TRUE;
- }
-
- lock_file = g_build_filename (tracker->root_dir, "tracker.lock", NULL);
- tmp = g_build_filename (tracker->root_dir, g_get_host_name (), NULL);
- tmp_file = g_strdup_printf ("%s_%d.lock", tmp, (guint32) getpid ());
- g_free (tmp);
-
- for (attempt = 0; attempt < 10000; ++attempt) {
- int fd;
-
- /* delete existing lock file if older than 5 mins */
- if (g_file_test (lock_file, G_FILE_TEST_EXISTS) && ( time((time_t *) NULL) - get_mtime (lock_file)) > 300) {
- g_unlink (lock_file);
- }
-
- fd = g_open (lock_file, O_CREAT|O_EXCL, 0644);
-
- if (fd >= 0) {
-
- /* create host specific file and link to lock file */
- if (link (lock_file, tmp_file) == -1) {
- goto error;
- }
-
- /* for atomic NFS-safe locks, stat links = 2 if file locked. If greater than 2 then we have a race condition */
- if (get_nlinks (lock_file) == 2) {
- close (fd);
- g_free (lock_file);
- g_free (tmp_file);
-
- return TRUE;
- } else {
- close (fd);
- g_usleep (g_random_int_range (1000, 100000));
- }
- }
- }
-
- error:
- tracker_error ("ERROR: lock failure");
- g_free (lock_file);
- g_free (tmp_file);
-
- return FALSE;
-}
-
-
-static void
-unlock_db (void)
-{
- char *lock_file, *tmp, *tmp_file;
-
- if (!use_nfs_safe_locking) {
- return;
- }
-
- lock_file = g_build_filename (tracker->root_dir, "tracker.lock", NULL);
- tmp = g_build_filename (tracker->root_dir, g_get_host_name (), NULL);
- tmp_file = g_strdup_printf ("%s_%d.lock", tmp, (guint32) getpid ());
- g_free (tmp);
-
- unlink (tmp_file);
- unlink (lock_file);
-
- g_free (tmp_file);
- g_free (lock_file);
-}
-
-
-void
-tracker_db_prepare_queries (DBConnection *db_con)
-{
-}
-
-
-gboolean
-tracker_db_exec_no_reply (DBConnection *db_con, const char *query, ...)
-{
- TrackerDBResultSet *result_set;
- va_list args;
-
- lock_db();
-
- va_start (args, query);
- result_set = tracker_db_interface_execute_vquery (db_con->db, NULL, query, args);
- va_end (args);
-
- /* This function is meant for queries that don't return any result set,
- * if it's passed some query that returns a result set, just discard it.
- */
- if (G_UNLIKELY (result_set)) {
- g_object_unref (result_set);
- }
-
- unlock_db ();
-
- return TRUE;
-}
-
-void
-tracker_db_release_memory (void)
-{
-
-}
-
-char *
-tracker_escape_string (const char *in)
-{
- gchar **array, *out;
-
- if (strchr (in, '\'')) {
- return g_strdup (in);
- }
-
- /* double single quotes */
- array = g_strsplit (in, "'", -1);
- out = g_strjoinv ("''", array);
- g_strfreev (array);
-
- return out;
-}
-
-TrackerDBResultSet *
-tracker_exec_proc (DBConnection *db_con, const char *procedure, ...)
-{
- TrackerDBResultSet *result_set;
- va_list args;
-
- va_start (args, procedure);
- result_set = tracker_db_interface_execute_vprocedure (db_con->db, NULL, procedure, args);
- va_end (args);
-
- return result_set;
-}
-
-
-gboolean
-tracker_exec_proc_no_reply (DBConnection *db_con, const char *procedure, ...)
-{
- TrackerDBResultSet *result_set;
- va_list args;
-
- va_start (args, procedure);
- result_set = tracker_db_interface_execute_vprocedure (db_con->db, NULL, procedure, args);
- va_end (args);
-
- if (result_set) {
- g_object_unref (result_set);
- }
-
- return TRUE;
-}
-
-void
-tracker_db_load_stored_procs (DBConnection *db_con)
-{
-}
-
-
-
-
-void
-tracker_create_db (void)
-{
- DBConnection *db_con;
-
- tracker_log ("Creating tracker database...");
-
-
- /* create common db first */
-
- db_con = tracker_db_connect_common ();
-
- load_sql_file (db_con, "sqlite-tracker.sql");
- load_sql_file (db_con, "sqlite-service-types.sql");
- load_sql_file (db_con, "sqlite-metadata.sql");
- load_sql_trigger (db_con, "sqlite-tracker-triggers.sql");
-
- tracker_db_load_service_file (db_con, "default.metadata", FALSE);
- tracker_db_load_service_file (db_con, "file.metadata", FALSE);
- tracker_db_load_service_file (db_con, "audio.metadata", FALSE);
- tracker_db_load_service_file (db_con, "application.metadata", FALSE);
- tracker_db_load_service_file (db_con, "document.metadata", FALSE);
- tracker_db_load_service_file (db_con, "email.metadata", FALSE);
- tracker_db_load_service_file (db_con, "image.metadata", FALSE);
- tracker_db_load_service_file (db_con, "video.metadata", FALSE);
-
- tracker_db_load_service_file (db_con, "default.service", FALSE);
-
- tracker_db_exec_no_reply (db_con, "ANALYZE");
-
- tracker_db_close (db_con);
-
- g_free (db_con);
-
-
-
-
-}
-
-static gboolean
-db_exists (const char *name)
-{
- gboolean is_present = FALSE;
-
- char *dbname = g_build_filename (tracker->data_dir, name, NULL);
-
- if (g_file_test (dbname, G_FILE_TEST_EXISTS)) {
- is_present = TRUE;
- }
-
- g_free (dbname);
-
- return is_present;
-}
-
-
-gboolean
-tracker_db_needs_setup ()
-{
- return (!db_exists ("file-meta.db") || !db_exists ("file-index.db") || !db_exists ("file-contents.db"));
-}
-
-
-gboolean
-tracker_db_needs_data ()
-{
- gboolean need_setup;
- char *dbname;
-
- need_setup = FALSE;
-
- dbname = g_build_filename (tracker->user_data_dir, "common.db", NULL);
-
- if (!g_file_test (dbname, G_FILE_TEST_EXISTS)) {
- need_setup = TRUE;
- }
-
- g_free (dbname);
-
- return need_setup;
-
-}
-
-
-gboolean
-tracker_update_db (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- char *version;
- int i;
-
- result_set = tracker_db_interface_execute_query
- (db_con->db, NULL, "SELECT OptionValue FROM Options WHERE OptionKey = 'DBVersion'");
-
- if (!result_set) {
- return FALSE;
- }
-
- tracker_db_result_set_get (result_set, 0, &version, -1);
- i = atoi (version);
-
- g_object_unref (result_set);
- g_free (version);
-
- tracker_log ("Checking tracker DB version...Current version is %d and needed version is %d", i, TRACKER_DB_VERSION_REQUIRED);
-
- if (i < TRACKER_DB_VERSION_REQUIRED) {
- tracker_log ("Your database is too out of date and will need to be rebuilt and all your files reindexed.\nPlease wait while we reindex...\n");
- tracker_remove_dirs (tracker->data_dir);
- return TRUE;
- }
-
- if (i < 15) {
- tracker_db_exec_no_reply (db_con, "delete from MetaDataTypes where MetaName = 'Email:Body'");
- tracker_db_exec_no_reply (db_con, "delete from MetaDataTypes where MetaName = 'File:Contents'");
- tracker_db_exec_no_reply (db_con, "insert Into MetaDataTypes (MetaName, DatatypeID, MultipleValues, Weight) values ('Email:Body', 0, 0, 1)");
-
- }
-
- if (i < 16) {
- tracker_db_exec_no_reply (db_con, "drop table ServiceTypes");
- tracker_db_exec_no_reply (db_con, "drop table MetaDataTypes");
- tracker_db_exec_no_reply (db_con, "drop table MetaDataChildren");
-
- load_sql_file (db_con, "sqlite-service-types.sql");
- load_sql_file (db_con, "sqlite-metadata.sql");
-
- tracker_db_interface_execute_query (db_con->db, NULL,
- "update Options set OptionValue = '16' where OptionKey = 'DBVersion'");
- tracker_db_interface_execute_query (db_con->db, NULL, "ANALYZE");
- }
-
- /* apply and table changes for each version update */
-/* while (i < TRACKER_DB_VERSION_REQUIRED) {
- char *sql_file, *query;
-
- i++;
-
- sql_file = g_strconcat (TRACKER_DATADIR, "/tracker/tracker-db-table-update", version, ".sql", NULL);
-
- tracker_log ("Please wait while database is being updated to the latest version");
-
- if (g_file_get_contents (sql_file, &query, NULL, NULL)) {
- char **queries, **queries_p ;
-
- queries = g_strsplit_set (query, ";", -1);
-
- for (queries_p = queries; *queries_p; queries_p++) {
- tracker_exec_sql (db, *queries_p);
- }
-
- g_strfreev (queries);
- g_free (query);
- }
-
- g_free (sql_file);
- }
-*/
-
- return FALSE;
-}
-
-
-gint
-tracker_metadata_is_key (const gchar *service, const gchar *meta_name)
-{
- return tracker_service_manager_metadata_in_service (service, meta_name);
-}
-
-
-static inline gboolean
-is_equal (const char *s1, const char *s2)
-{
- return (strcasecmp (s1, s2) == 0);
-}
-
-char *
-tracker_db_get_field_name (const char *service, const char *meta_name)
-{
- int key_field = tracker_metadata_is_key (service, meta_name);
-
- if (key_field > 0) {
- return g_strdup_printf ("KeyMetadata%d", key_field);
-
- }
-
- if (is_equal (meta_name, "File:Path")) return g_strdup ("Path");
- if (is_equal (meta_name, "File:Name")) return g_strdup ("Name");
- if (is_equal (meta_name, "File:Mime")) return g_strdup ("Mime");
- if (is_equal (meta_name, "File:Size")) return g_strdup ("Size");
- if (is_equal (meta_name, "File:Rank")) return g_strdup ("Rank");
- if (is_equal (meta_name, "File:Modified")) return g_strdup ("IndexTime");
-
- return NULL;
-
-}
-
-
-char *
-tracker_db_get_display_field (FieldDef *def)
-{
- if (def->type == DATA_INDEX || def->type == DATA_STRING || def->type == DATA_DOUBLE) {
- return g_strdup ("MetaDataDisplay");
- }
-
- return g_strdup ("MetaDataValue");
-
-}
-
-
-
-
-GHashTable *
-tracker_db_get_file_contents_words (DBConnection *db_con, guint32 id, GHashTable *old_table)
-{
- TrackerDBResultSet *result_set;
- char *str_file_id;
- gboolean valid = TRUE;
-
- str_file_id = tracker_uint_to_str (id);
-
- lock_connection (db_con);
- result_set = tracker_db_interface_execute_procedure (db_con->db, NULL, "GetAllContents", str_file_id, NULL);
- unlock_connection (db_con);
-
- g_free (str_file_id);
-
- if (!result_set)
- return NULL;
-
- while (valid) {
- gchar *st;
-
- tracker_db_result_set_get (result_set, 0, &st, -1);
- old_table = tracker_parse_text (old_table, st, 1, TRUE, FALSE);
-
- valid = tracker_db_result_set_iter_next (result_set);
- g_free (st);
- }
-
- g_object_unref (result_set);
-
- return old_table;
-}
-
-
-GHashTable *
-tracker_db_get_indexable_content_words (DBConnection *db_con, guint32 id, GHashTable *table, gboolean embedded_only)
-{
- TrackerDBResultSet *result_set;
- char *str_id;
-
- str_id = tracker_uint_to_str (id);
-
- if (embedded_only) {
- result_set = tracker_exec_proc (db_con, "GetAllIndexable", str_id, "1", NULL);
- } else {
- result_set = tracker_exec_proc (db_con, "GetAllIndexable", str_id, "0", NULL);
- }
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *value;
- gint weight;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &value,
- 1, &weight,
- -1);
-
- table = tracker_parse_text_fast (table, value, weight);
-
- g_free (value);
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- if (embedded_only) {
- result_set = tracker_exec_proc (db_con, "GetAllIndexableKeywords", str_id, "1", NULL);
- } else {
- result_set = tracker_exec_proc (db_con, "GetAllIndexableKeywords", str_id, "0", NULL);
- }
-
- if (result_set) {
- gboolean valid = TRUE;
- gboolean filtered, delimited;
- gchar *value;
- gint weight;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &value,
- 1, &weight,
- 2, &filtered,
- 3, &delimited
- -1);
-
- table = tracker_parse_text (table, value, weight, filtered, delimited);
- valid = tracker_db_result_set_iter_next (result_set);
- g_free (value);
- }
-
- g_object_unref (result_set);
- }
-
- g_free (str_id);
-
- return table;
-}
-
-static void
-save_full_text_bytes (DBConnection *blob_db_con, const char *str_file_id, GByteArray *byte_array)
-{
- FieldDef *def;
-
- def = tracker_db_get_field_def (blob_db_con, "File:Contents");
-
- if (!def) {
- tracker_error ("WARNING: metadata not found for type %s", "File:Contents");
- return;
- }
-
- tracker_db_interface_execute_procedure_len (blob_db_con->db,
- NULL,
- "SaveServiceContents",
- str_file_id, -1,
- def->id, -1,
- byte_array->data, byte_array->len,
- NULL);
-}
-
-
-static void
-save_full_text (DBConnection *blob_db_con, const char *str_file_id, const char *text, int length)
-{
- gchar *compressed, *value = NULL;
- gint bytes_compressed;
- FieldDef *def;
-
- compressed = tracker_compress (text, length, &bytes_compressed);
-
- if (compressed) {
- tracker_debug ("compressed full text size of %d to %d", length, bytes_compressed);
- value = compressed;
- } else {
- tracker_error ("WARNING: compression has failed");
- value = g_strdup (text);
- bytes_compressed = length;
- }
-
-
- def = tracker_db_get_field_def (blob_db_con, "File:Contents");
-
- if (!def) {
- tracker_error ("WARNING: metadata not found for type %s", "File:Contents");
- g_free (value);
- return;
- }
-
- tracker_db_interface_execute_procedure_len (blob_db_con->db,
- NULL,
- "SaveServiceContents",
- str_file_id, -1,
- def->id, -1,
- value, bytes_compressed,
- NULL);
- g_free (value);
-}
-
-
-void
-tracker_db_save_file_contents (DBConnection *db_con, GHashTable *index_table, GHashTable *old_table, const char *file_name, FileInfo *info)
-{
- char buffer[MAX_TEXT_BUFFER], out[MAX_COMPRESS_BUFFER];
- int fd, bytes_read = 0, bytes_compressed = 0, flush;
- guint32 buffer_length;
- char *str_file_id;
- z_stream strm;
- GByteArray *byte_array;
- gboolean finished = FALSE;
- int max_iterations = 10000;
-
- DBConnection *blob_db_con = db_con->blob;
-
- fd = tracker_file_open (file_name, TRUE);
-
- if (fd ==-1) {
- tracker_error ("ERROR: could not open file %s", file_name);
- return;
- }
-
- strm.zalloc = Z_NULL;
- strm.zfree = Z_NULL;
- strm.opaque = Z_NULL;
-
- if (deflateInit (&strm, Z_DEFAULT_COMPRESSION) != Z_OK) {
- tracker_error ("ERROR: could not initialise zlib");
- close (fd);
- return;
- }
-
- str_file_id = g_strdup_printf ("%d", info->file_id);
-
- if (!index_table) {
- index_table = g_hash_table_new (g_str_hash, g_str_equal);
- }
-
- byte_array = g_byte_array_sized_new (MAX_TEXT_BUFFER);
-
- while (!finished) {
-
- char *value = NULL;
- gboolean use_buffer = TRUE;
-
- max_iterations--;
-
- if (max_iterations < 0) break;
-
- buffer_length = read (fd, buffer, MAX_TEXT_BUFFER-1);
-
- if (buffer_length == 0) {
- finished = TRUE;
- break;
- }
-
- bytes_read += buffer_length;
-
- buffer[buffer_length] = '\0';
-
- if (buffer_length == (MAX_TEXT_BUFFER - 1)) {
-
- /* seek beck to last line break so we get back a clean string for utf-8 validation */
- char *end = strrchr (buffer, '\n');
-
- if (!end) {
- tracker_log ("Could not find line break in text chunk..exiting");
- break;
- }
-
- int bytes_backtracked = strlen (end) * -1;
-
- buffer_length += bytes_backtracked;
-
- buffer[buffer_length] = '\0';
-
- if (lseek (fd, bytes_backtracked, SEEK_CUR) == -1) {
- tracker_error ("Could not seek to line break in text chunk");
- break;
- }
-
- } else {
- finished = TRUE;
- }
-
-
-
- if (!g_utf8_validate (buffer, buffer_length, NULL)) {
-
- value = g_locale_to_utf8 (buffer, buffer_length, NULL, &buffer_length, NULL);
-
- if (!value) {
- finished = FALSE;
- tracker_info ("could not convert text to valid utf8");
- break;
- }
-
- use_buffer = FALSE;
-
- }
-
- if (use_buffer) {
- index_table = tracker_parse_text (index_table, buffer, 1, TRUE, FALSE);
- } else {
- index_table = tracker_parse_text (index_table, value, 1, TRUE, FALSE);
- }
-
- strm.avail_in = buffer_length;
-
- if (use_buffer) {
- strm.next_in = (unsigned char *) buffer;
- } else {
- strm.next_in = (unsigned char *) value;
- }
-
- strm.avail_out = MAX_COMPRESS_BUFFER;
- strm.next_out = (unsigned char *) out;
-
- /* set upper limit on text we read in */
- if (finished || bytes_read >= tracker->max_index_text_length) {
- finished = TRUE;
- flush = Z_FINISH;
- } else {
- flush = Z_NO_FLUSH;
- }
-
-
- /* compress */
- do {
- int ret = deflate (&strm, flush);
-
- if (ret == Z_STREAM_ERROR) {
- finished = FALSE;
- tracker_error ("compression failed");
- if (!use_buffer) g_free (value);
- break;
- }
-
- bytes_compressed = 65565 - strm.avail_out;
-
- byte_array = g_byte_array_append (byte_array, (guint8 *) out, bytes_compressed);
-
- max_iterations--;
-
- if (max_iterations < 0) break;
-
- } while (strm.avail_out == 0);
-
- if (!use_buffer) g_free (value);
-
- gint throttle;
-
- throttle = tracker_config_get_throttle (tracker->config);
- if (throttle > 9) {
- tracker_throttle (throttle * 100);
- }
-
- }
-
-
- deflateEnd(&strm);
-
- /* flush cache for file as we wont touch it again */
- tracker_file_close (fd, TRUE);
-
- if (finished && max_iterations > 0) {
- if (bytes_read > 2) {
- save_full_text_bytes (blob_db_con, str_file_id, byte_array);
- }
- } else {
- tracker_info ("An error prevented full text extraction");
- }
-
- g_byte_array_free (byte_array, TRUE);
-
- g_free (str_file_id);
-
-
-}
-
-
-
-void
-tracker_db_clear_temp (DBConnection *db_con)
-{
- tracker_db_interface_start_transaction (db_con->cache->db);
- tracker_db_exec_no_reply (db_con->cache, "DELETE FROM FilePending");
- tracker_db_exec_no_reply (db_con->cache, "DELETE FROM FileWatches");
- tracker_db_interface_end_transaction (db_con->cache->db);
-}
-
-void
-tracker_db_check_tables (DBConnection *db_con)
-{
-}
-
-
-TrackerDBResultSet *
-tracker_db_search_text (DBConnection *db_con, const char *service, const char *search_string, int offset, int limit, gboolean save_results, gboolean detailed)
-{
- TrackerQueryTree *tree;
- TrackerDBResultSet *result_set, *result;
- char **array;
- GArray *hits;
- int count;
- gboolean detailed_emails = FALSE, detailed_apps = FALSE;
- int service_array[255];
- const gchar *procedure;
- GArray *services = NULL;
- GSList *duds = NULL;
- guint i = 0;
-
- array = tracker_parse_text_into_array (search_string);
-
- result_set = tracker_exec_proc (db_con->common, "GetRelatedServiceIDs", service, service, NULL);
-
- if (result_set) {
- gboolean valid = TRUE;
- gint type_id;
-
- while (valid) {
- g_print ("aaaandaya %d\n", i);
- tracker_db_result_set_get (result_set, 0, &type_id, -1);
- service_array[i] = type_id;
- i++;
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- service_array[i] = 0;
- services = g_array_new (TRUE, TRUE, sizeof (gint));
- g_array_append_vals (services, service_array, i);
-
- g_object_unref (result_set);
- }
-
- tree = tracker_query_tree_new (search_string, db_con->word_index, services);
- hits = tracker_query_tree_get_hits (tree, offset, limit);
- result = NULL;
-
- if (!save_results) {
- count = hits->len;
-
- if (count > limit) count = limit;
- } else {
- tracker_db_interface_start_transaction (db_con->db);
- tracker_exec_proc (db_con, "DeleteSearchResults1", NULL);
- }
-
- count = 0;
-
- for (i = 0; i < hits->len; i++) {
- TrackerSearchHit hit;
- char *str_id;
-
- if (count >= limit) break;
-
- hit = g_array_index (hits, TrackerSearchHit, i);
-
- str_id = tracker_uint_to_str (hit.service_id);
-
- /* we save results into SearchResults table instead of returing an array of array of strings */
- if (save_results) {
- char *str_score;
-
- str_score = tracker_int_to_str (hit.score);
-
- tracker_exec_proc (db_con, "InsertSearchResult1", str_id, str_score, NULL);
-
- g_free (str_id);
- g_free (str_score);
-
- continue;
- }
-
- if (detailed) {
- if (strcmp (service, "Emails") == 0) {
- detailed_emails = TRUE;
- procedure = "GetEmailByID";
- } else if (strcmp (service, "Applications") == 0) {
- detailed_apps = TRUE;
- procedure = "GetApplicationByID";
- } else {
- procedure = "GetFileByID2";
- }
- } else {
- procedure = "GetFileByID";
- }
-
- result_set = tracker_exec_proc (db_con, procedure, str_id, NULL);
- g_free (str_id);
-
- if (result_set) {
- gchar *path;
-
- tracker_db_result_set_get (result_set, 0, &path, -1);
-
- if (!detailed || detailed_emails || detailed_apps ||
- (detailed && g_file_test (path, G_FILE_TEST_EXISTS))) {
- guint columns, i;
-
- columns = tracker_db_result_set_get_n_columns (result_set);
-
- if (G_UNLIKELY (!result)) {
- guint columns;
-
- columns = tracker_db_result_set_get_n_columns (result_set);
- result = _tracker_db_result_set_new (columns);
- }
-
- _tracker_db_result_set_append (result);
-
- for (i = 0; i < columns; i++) {
- GValue value = { 0, };
-
- _tracker_db_result_set_get_value (result_set, i, &value);
- _tracker_db_result_set_set_value (result, i, &value);
- g_value_unset (&value);
- }
- }
-
- g_free (path);
- g_object_unref (result_set);
- } else {
- tracker_log ("dud hit for search detected");
- /* add to dud list */
- duds = g_slist_prepend (duds, &hit);
- }
-
- }
-
- if (save_results) {
- tracker_db_interface_end_transaction (db_con->db);
- }
-
- /* delete duds */
- if (duds) {
- GSList *words, *w;
- Indexer *indexer;
-
- words = tracker_query_tree_get_words (tree);
- indexer = tracker_query_tree_get_indexer (tree);
-
- for (w = words; w; w = w->next) {
- tracker_remove_dud_hits (indexer, (const gchar *) w->data, duds);
- }
-
- g_slist_free (words);
- }
-
- g_object_unref (tree);
- g_array_free (hits, TRUE);
- g_array_free (services, TRUE);
-
- if (!result)
- return NULL;
-
- if (tracker_db_result_set_get_n_rows (result) == 0) {
- g_object_unref (result);
- return NULL;
- }
-
- tracker_db_result_set_rewind (result);
-
- return result;
-}
-
-TrackerDBResultSet *
-tracker_db_search_files_by_text (DBConnection *db_con, const char *text, int offset, int limit, gboolean sort)
-{
- return NULL;
-}
-
-
-TrackerDBResultSet *
-tracker_db_search_metadata (DBConnection *db_con, const char *service, const char *field, const char *text, int offset, int limit)
-{
- FieldDef *def;
- TrackerDBResultSet *result_set;
-
- g_return_val_if_fail ((service && field && text), NULL);
-
- def = tracker_db_get_field_def (db_con, field);
-
- if (!def) {
- tracker_error ("ERROR: metadata not found for type %s", field);
- return NULL;
- }
-
- switch (def->type) {
-
- case 0:
- case 1: result_set = tracker_exec_proc (db_con, "SearchMetadata", def->id, text, NULL); break;
-
- case 2:
- case 3: result_set = tracker_exec_proc (db_con, "SearchMetadataNumeric", def->id, text, NULL); break;
-
- case 5: result_set = tracker_exec_proc (db_con, "SearchMetadataKeywords", def->id, text, NULL); break;
-
- default: tracker_error ("ERROR: metadata could not be retrieved as type %d is not supported", def->type); result_set = NULL;
- }
-
-
- return result_set;
-}
-
-
-TrackerDBResultSet *
-tracker_db_search_matching_metadata (DBConnection *db_con, const char *service, const char *id, const char *text)
-{
- g_return_val_if_fail (id, NULL);
-
- return NULL;
-}
-
-TrackerDBResultSet *
-tracker_db_get_metadata (DBConnection *db_con, const char *service, const char *id, const char *key)
-{
- TrackerDBResultSet *result_set;
- FieldDef *def;
-
- g_return_val_if_fail (id, NULL);
-
- def = tracker_db_get_field_def (db_con, key);
-
- if (!def) {
- tracker_error ("ERROR: metadata not found for id %s and type %s", id, key);
- return NULL;
- }
-
- switch (def->type) {
- case DATA_INDEX:
- case DATA_STRING:
- case DATA_DOUBLE:
- result_set = tracker_exec_proc (db_con, "GetMetadata", id, def->id, NULL);
- break;
- case DATA_INTEGER:
- case DATA_DATE:
- result_set = tracker_exec_proc (db_con, "GetMetadataNumeric", id, def->id, NULL);
- break;
- case DATA_FULLTEXT:
- result_set = tracker_exec_proc (db_con, "GetContents", id, def->id, NULL);
- break;
- case DATA_KEYWORD:
- result_set = tracker_exec_proc (db_con, "GetMetadataKeyword", id, def->id, NULL);
- break;
-
- default:
- tracker_error ("ERROR: metadata could not be retrieved as type %d is not supported", def->type); result_set = NULL;
- }
-
- return result_set;
-}
-
-
-/* gets specified metadata value as a single row (multple values for a metadata type are returned delimited by "|" ) */
-char *
-tracker_db_get_metadata_delimited (DBConnection *db_con, const char *service, const char *id, const char *key)
-{
- GString *gstr = NULL;
- TrackerDBResultSet *result_set;
-
- result_set = tracker_db_get_metadata (db_con, service, id, key);
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *str;
-
- while (valid) {
- tracker_db_result_set_get (result_set, 0, &str, -1);
-
- if (gstr) {
- g_string_append_printf (gstr, "|%s", str);
- } else {
- gstr = g_string_new (str);
- }
-
- g_free (str);
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- if (gstr) {
- return g_string_free (gstr, FALSE);
- } else {
- return NULL;
- }
-}
-
-
-static void
-update_metadata_index (DBConnection *db_con, const char *id, const char *service, FieldDef *def, const char *old_value, const char *new_value)
-{
- GHashTable *old_table, *new_table;
- gint sid;
-
- if (!def) {
- tracker_error ("ERROR: cannot find details for metadata type");
- return;
- }
-
-
- old_table = NULL;
- new_table = NULL;
-
- if (old_value) {
- old_table = tracker_parse_text (old_table,
- old_value,
- def->weight,
- def->filtered,
- def->delimited);
- }
-
- /* parse new metadata value */
- if (new_value) {
- new_table = tracker_parse_text (new_table, new_value, def->weight, def->filtered, def->delimited);
- }
-
- /* we only do differential updates so only changed words scores are updated */
- sid = tracker_service_manager_get_id_for_service (service);
- tracker_db_update_differential_index (db_con, old_table, new_table, id, sid);
-
- tracker_word_table_free (old_table);
- tracker_word_table_free (new_table);
-}
-
-
-
-char *
-tracker_get_related_metadata_names (DBConnection *db_con, const char *name)
-{
- TrackerDBResultSet *result_set;
-
- result_set = tracker_exec_proc (db_con, "GetMetadataAliasesForName", name, name, NULL);
-
- if (result_set) {
- GString *gstr = NULL;
- gboolean valid = TRUE;
- gint id;
-
- while (valid) {
- tracker_db_result_set_get (result_set, 1, &id, -1);
-
- if (gstr) {
- g_string_append_printf (gstr, ", %d", id);
- } else {
- gstr = g_string_new ("");
- g_string_append_printf (gstr, "%d", id);
- }
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
-
- return g_string_free (gstr, FALSE);
- }
-
- return NULL;
-}
-
-char *
-tracker_get_metadata_table (DataTypes type)
-{
- switch (type) {
-
- case DATA_INDEX:
- case DATA_STRING:
- case DATA_DOUBLE:
- return g_strdup ("ServiceMetaData");
-
- case DATA_INTEGER:
- case DATA_DATE:
- return g_strdup ("ServiceNumericMetaData");
-
- case DATA_BLOB: return g_strdup("ServiceBlobMetaData");
-
- case DATA_KEYWORD: return g_strdup("ServiceKeywordMetaData");
-
- default: return NULL;
- }
-
- return NULL;
-}
-
-
-static char *
-format_date (const char *avalue)
-{
-
- char *dvalue;
-
- dvalue = tracker_format_date (avalue);
-
- if (dvalue) {
- time_t time;
-
- time = tracker_str_to_date (dvalue);
-
- g_free (dvalue);
-
- if (time != -1) {
- return (tracker_int_to_str (time));
- }
- }
-
- return NULL;
-
-}
-
-
-/* fast insert of embedded metadata. Table parameter is used to build up a unique word list of indexable contents */
-void
-tracker_db_insert_single_embedded_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value, GHashTable *table)
-{
- char *array[1];
-
- array[0] = (char *)value;
-
- tracker_db_insert_embedded_metadata (db_con, service, id, key, array, 1, table);
-}
-
-void
-tracker_db_insert_embedded_metadata (DBConnection *db_con, const gchar *service, const gchar *id, const gchar *key, gchar **values, gint length, GHashTable *table)
-{
- gint key_field = 0;
-
- if (!service || !id || !key || !values || !values[0]) {
- return;
- }
-
- FieldDef *def = tracker_db_get_field_def (db_con, key);
-
- if (!def) {
- tracker_error ("ERROR: metadata %s not found", key);
- return;
- }
-
- g_return_if_fail (def->embedded);
-
- if (length == -1) {
- length = 0;
- while (values[length] != NULL) {
- length++;
- }
- }
-
- key_field = tracker_metadata_is_key (service, key);
-
- switch (def->type) {
-
- case DATA_KEYWORD: {
- gint i;
- for (i = 0; i < length; i++) {
- if (!values[i] || !values[i][0]) {
- continue;
- }
-
- if (table) {
- gchar *mvalue = tracker_parse_text_to_string (values[i], FALSE, FALSE, FALSE);
-
- table = tracker_parse_text_fast (table, mvalue, def->weight);
-
- g_free (mvalue);
- }
-
- tracker_exec_proc (db_con, "SetMetadataKeyword", id, def->id, values[i], NULL);
- }
-
- break;
- }
- case DATA_INDEX: {
- gint i;
- for (i = 0; i < length; i++) {
- gchar *mvalue;
-
- if (!values[i] || !values[i][0]) {
- continue;
- }
-
- mvalue = tracker_parse_text_to_string (values[i], def->filtered, def->filtered, def->delimited);
-
- if (table) {
- table = tracker_parse_text_fast (table, mvalue, def->weight);
- }
-
- tracker_exec_proc (db_con, "SetMetadata", id, def->id, mvalue, values[i], NULL);
-
- g_free (mvalue);
- }
-
- break;
- }
- case DATA_FULLTEXT: {
- gint i;
- for (i = 0; i < length; i++) {
- if (!values[i] || !values[i][0]) {
- continue;
- }
-
- if (table) {
- table = tracker_parse_text (table, values[i], def->weight, def->filtered, def->delimited);
- }
-
- save_full_text (db_con->blob, id, values[i], strlen (values[i]));
- }
-
- break;
- }
- case DATA_DOUBLE: {
- gint i;
- for (i = 0; i < length; i++) {
- if (!values[i]) {
- continue;
- }
-
- tracker_exec_proc (db_con, "SetMetadata", id, def->id, " ", values[i], NULL);
- }
-
- break;
- }
- case DATA_STRING: {
- gint i;
- for (i = 0; i < length; i++) {
- if (!values[i]) {
- continue;
- }
-
- gchar *mvalue = tracker_parse_text_to_string (values[i], def->filtered, def->filtered, def->delimited);
-
- tracker_exec_proc (db_con, "SetMetadata", id, def->id, mvalue, values[i], NULL);
-
- g_free (mvalue);
- }
-
- break;
- }
- case DATA_INTEGER: {
- gint i;
- for (i = 0; i < length; i++) {
- if (!values[i]) {
- continue;
- }
-
- tracker_exec_proc (db_con, "SetMetadataNumeric", id, def->id, values[i], NULL);
- }
-
- break;
- }
- case DATA_DATE: {
- gint i;
- for (i = 0; i < length; i++) {
- if (!values[i]) {
- continue;
- }
-
- gchar *mvalue = format_date (values[i]);
-
- if (!mvalue) {
- tracker_debug ("Could not format date %s", values[i]);
- continue;
- }
-
- tracker_exec_proc (db_con, "SetMetadataNumeric", id, def->id, mvalue, NULL);
-
- g_free (mvalue);
- }
-
- break;
- }
- default: {
- tracker_error ("ERROR: metadata could not be set as type %d for metadata %s is not supported",
- def->type, key);
- break;
- }
- }
-
- if (key_field > 0) {
-
- if (values[0]) {
- gchar *esc_value = NULL;
-
- if (def->type == DATA_DATE) {
- esc_value = format_date (values[0]);
-
- if (!esc_value) {
- return;
- }
-
- } else {
- gchar *my_val = tracker_array_to_str (values, length, '|');
-
- esc_value = tracker_escape_string (my_val);
- g_free (my_val);
- }
-
- tracker_db_exec_no_reply (db_con,
- "update Services set KeyMetadata%d = '%s' where id = %s",
- key_field, esc_value, id);
-
- g_free (esc_value);
- }
- }
-}
-
-
-static char *
-get_backup_id (DBConnection *db_con, const char *id)
-{
- TrackerDBResultSet *result_set;
- char *backup_id = NULL;
-
- result_set = tracker_exec_proc (db_con, "GetBackupServiceByID", id, NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &backup_id, -1);
- g_object_unref (result_set);
- }
-
- if (!backup_id) {
- gint64 id;
-
- tracker_exec_proc (db_con, "InsertBackupService", id, NULL);
- id = tracker_db_interface_sqlite_get_last_insert_id (TRACKER_DB_INTERFACE_SQLITE (db_con->db));
- backup_id = tracker_int_to_str (id);
- }
-
- return backup_id;
-}
-
-
-static inline void
-backup_non_embedded_metadata (DBConnection *db_con, const char *id, const char *key_id, const char *value)
-{
-
- char *backup_id = get_backup_id (db_con, id);
-
- if (backup_id) {
- tracker_exec_proc (db_con->common, "SetBackupMetadata", backup_id, key_id, value, NULL);
- g_free (backup_id);
- }
-
-}
-
-
-
-static inline void
-backup_delete_non_embedded_metadata_value (DBConnection *db_con, const char *id, const char *key_id, const char *value)
-{
-
- char *backup_id = get_backup_id (db_con, id);
-
- if (backup_id) {
- tracker_exec_proc (db_con->common, "DeleteBackupMetadataValue", backup_id, key_id, value, NULL);
- g_free (backup_id);
- }
-
-}
-
-static inline void
-backup_delete_non_embedded_metadata (DBConnection *db_con, const char *id, const char *key_id)
-{
-
- char *backup_id = get_backup_id (db_con, id);
-
- if (backup_id) {
- tracker_exec_proc (db_con->common, "DeleteBackupMetadata", backup_id, key_id, NULL);
- g_free (backup_id);
- }
-
-}
-
-
-void
-tracker_db_set_single_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value, gboolean do_backup)
-{
- char *array[1];
-
- array[0] = (char *)value;
-
- tracker_db_set_metadata (db_con, service, id, key, array, 1, do_backup);
-
-
-}
-
-
-char *
-tracker_db_set_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, char **values, int length, gboolean do_backup)
-{
- FieldDef *def;
- char *old_value = NULL, *new_value = NULL;
- gboolean update_index;
- int key_field = 0;
- int i;
- GString *str = NULL;
- char *res_service;
-
-
- g_return_val_if_fail (id && values && key && service, NULL);
-
- if (strcmp (id, "0") == 0) {
- return NULL;
- }
-
- def = tracker_db_get_field_def (db_con, key);
-
- if (!def) {
- tracker_error ("metadata type %s not found", key);
- return NULL;
-
- }
-
- res_service = tracker_db_get_service_for_entity (db_con, id);
-
- if (!res_service) {
- tracker_error ("ERROR: service not found for id %s", id);
- return NULL;
- }
-
- if (def->multiple_values && length > 1) {
- str = g_string_new ("");
- }
-
-
-
- key_field = tracker_metadata_is_key (res_service, key);
- update_index = (def->type == DATA_INDEX || def->type == DATA_KEYWORD || def->type == DATA_FULLTEXT);
-
-
- if (update_index) {
- old_value = tracker_db_get_metadata_delimited (db_con, service, id, key);
- }
-
- /* delete old value if metadata does not support multiple values */
- if (!def->multiple_values) {
- tracker_db_delete_metadata (db_con, service, id, key, FALSE);
- }
-
-
- switch (def->type) {
-
- case DATA_KEYWORD:
-
- for (i=0; i<length; i++) {
-
- if (!values[i] || !values[i][0]) continue;
-
- tracker_exec_proc (db_con, "SetMetadataKeyword", id, def->id, values[i], NULL);
-
- /* backup non-embedded data for embedded services */
- if (do_backup &&
- !def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_non_embedded_metadata (db_con, id, def->id, values[i]);
- }
-
- if (str) {
- g_string_append_printf (str, " %s ", values[i]);
- } else {
- new_value = values[i];
- }
-
- tracker_log ("saving keyword %s", values[i]);
- }
-
- break;
-
- case DATA_INDEX:
-
- for (i=0; i<length; i++) {
-
- if (!values[i] || !values[i][0]) continue;
-
- if (str) {
- g_string_append_printf (str, " %s ", values[i]);
- } else {
- new_value = values[i];
- }
-
- /* backup non-embedded data for embedded services */
- if (do_backup &&
- !def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_non_embedded_metadata (db_con, id, def->id, values[i]);
- }
-
-
- char *mvalue = tracker_parse_text_to_string (values[i], def->filtered, def->filtered, def->delimited);
-
- tracker_exec_proc (db_con, "SetMetadata", id, def->id, mvalue, values[i], NULL);
-
- g_free (mvalue);
-
- }
-
- break;
-
- case DATA_FULLTEXT:
-
- /* we do not support multiple values for fulltext clobs */
-
- if (!values[0]) break;
-
- save_full_text (db_con->blob, id, values[0], strlen (values[0]));
- new_value = values[0];
-
- break;
-
-
- case DATA_STRING:
-
- for (i=0; i<length; i++) {
-
- if (!values[i] || !values[i][0]) continue;
-
- /* backup non-embedded data for embedded services */
- if (do_backup &&
- !def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_non_embedded_metadata (db_con, id, def->id, values[i]);
- }
-
- char *mvalue = tracker_parse_text_to_string (values[i], def->filtered, def->filtered, def->delimited);
-
- tracker_exec_proc (db_con, "SetMetadata", id, def->id, mvalue, values[i], NULL);
-
- g_free (mvalue);
- }
- break;
-
- case DATA_DOUBLE:
-
-
- for (i=0; i<length; i++) {
-
- if (!values[i] || !values[i][0]) continue;
-
- /* backup non-embedded data for embedded services */
- if (do_backup &&
- !def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_non_embedded_metadata (db_con, id, def->id, values[i]);
- }
-
-
- tracker_exec_proc (db_con, "SetMetadata", id, def->id, " ", values[i], NULL);
-
- }
- break;
-
-
-
- case DATA_INTEGER:
-
- for (i=0; i<length; i++) {
- if (!values[i] || !values[i][0]) continue;
-
- /* backup non-embedded data for embedded services */
- if (do_backup &&
- !def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_non_embedded_metadata (db_con, id, def->id, values[i]);
- }
-
-
- tracker_exec_proc (db_con, "SetMetadataNumeric", id, def->id, values[i], NULL);
- }
-
- break;
-
- case DATA_DATE:
-
- for (i=0; i<length; i++) {
-
- if (!values[i] || !values[i][0]) continue;
-
- char *mvalue = format_date (values[i]);
-
- if (!mvalue) {
- tracker_debug ("Could not format date %s", values[i]);
- continue;
-
- }
-
- tracker_exec_proc (db_con, "SetMetadataNumeric", id, def->id, mvalue, NULL);
-
- /* backup non-embedded data for embedded services */
- if (do_backup &&
- !def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_non_embedded_metadata (db_con, id, def->id, mvalue);
- }
-
-
- g_free (mvalue);
- }
-
- break;
-
- default :
-
- tracker_error ("ERROR: metadata could not be set as type %d for metadata %s is not supported", def->type, key);
- break;
-
-
-
-
- }
-
- if (key_field > 0) {
-
-
-
- if (values[0]) {
- char *esc_value = NULL;
-
- if (def->type == DATA_DATE) {
- esc_value = format_date (values[0]);
-
- if (!esc_value) return NULL;
-
- } else {
-
- char *my_val = tracker_array_to_str (values, length, '|');
-
- esc_value = tracker_escape_string (my_val);
- g_free (my_val);
-
- }
-
- tracker_db_exec_no_reply (db_con,
- "update Services set KeyMetadata%d = '%s' where id = %s",
- key_field, esc_value, id);
-
- g_free (esc_value);
- }
-
- }
-
-
-
-
- /* update fulltext index differentially with current and new values */
- if (update_index) {
-
- if (str) {
- update_metadata_index (db_con, id, res_service, def, old_value, str->str);
- g_string_free (str, TRUE);
- } else {
- update_metadata_index (db_con, id, res_service, def, old_value, new_value);
- }
- }
-
- g_free (old_value);
- g_free (res_service);
-
- return NULL;
-
-}
-
-TrackerDBResultSet *
-tracker_db_get_unique_metadata_values (DBConnection *db_con, const char *meta_type, int offset, int limit)
-{
- FieldDef *def;
- char *str_offset, *str_limit;
- TrackerDBResultSet *result_set;
-
- g_return_val_if_fail ((meta_type), NULL);
-
- def = tracker_db_get_field_def (db_con, meta_type);
-
- if (!def) {
- tracker_error ("ERROR: metadata not found for type %s", meta_type);
- return NULL;
- }
-
- str_offset = tracker_int_to_str (offset);
- str_limit = tracker_int_to_str (limit);
-
- switch (def->type) {
-
- case DATA_INDEX:
- case DATA_STRING:
- case DATA_DOUBLE:
- result_set = tracker_exec_proc (db_con, "GetMetadataValues", def->id, str_offset, str_limit, NULL); break;
-
- case DATA_INTEGER:
- case DATA_DATE:
- result_set = tracker_exec_proc (db_con, "GetMetadataNumericValues", def->id, str_offset, str_limit, NULL); break;
-
- case DATA_KEYWORD:
- result_set = tracker_exec_proc (db_con, "GetMetadataKeywordValues", def->id, str_offset, str_limit, NULL); break;
-
- default: tracker_error ("ERROR: metadata could not be retrieved as type %d is not supported", def->type); result_set = NULL;
- }
-
- return result_set;
-
-}
-
-
-static char *
-remove_value (const char *str, const char *del_str)
-{
- char **tmp, **array = g_strsplit (str, "|", -1);
-
- GString *s = NULL;
-
- for (tmp = array; *tmp; tmp++) {
-
- if (tracker_is_empty_string (*tmp)) {
- continue;
- }
-
- if (strcmp (del_str, *tmp) != 0) {
-
- if (!s) {
- s = g_string_new (*tmp);
- } else {
- g_string_append_printf (s, "%s%s", "|", *tmp);
- }
- }
- }
-
- g_strfreev (array);
-
- if (!s) {
- return NULL;
- }
-
- return g_string_free (s, FALSE);
-
-}
-
-void
-tracker_db_delete_metadata_value (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value)
-{
-
- char *old_value = NULL, *new_value = NULL, *mvalue;
- FieldDef *def;
- gboolean update_index;
-
- g_return_if_fail (id && key && service && db_con);
-
- /* get type details */
- def = tracker_db_get_field_def (db_con, key);
-
- if (!def) {
- return;
- }
-
-
- if (!def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_delete_non_embedded_metadata_value (db_con, id, def->id, value);
- }
-
-
- char *res_service = tracker_db_get_service_for_entity (db_con, id);
-
- if (!res_service) {
- tracker_error ("ERROR: entity not found");
- return;
- }
-
- int key_field = tracker_metadata_is_key (res_service, key);
-
- update_index = (def->type == DATA_INDEX || def->type == DATA_KEYWORD);
-
- if (update_index) {
-
- /* get current value and claculate the new value */
-
- old_value = tracker_db_get_metadata_delimited (db_con, service, id, key);
-
- if (old_value) {
- new_value = remove_value (old_value, value);
- } else {
- g_free (res_service);
- return;
- }
-
- }
-
-
- /* perform deletion */
- switch (def->type) {
-
- case DATA_INDEX:
- case DATA_STRING:
- mvalue = tracker_parse_text_to_string (value, def->filtered, def->filtered, def->delimited);
- tracker_exec_proc (db_con, "DeleteMetadataValue", id, def->id, mvalue, NULL);
- g_free (mvalue);
- break;
-
-
- case DATA_DOUBLE:
- tracker_exec_proc (db_con, "DeleteMetadataValue", id, def->id, value, NULL);
- break;
-
-
- case DATA_INTEGER:
- case DATA_DATE:
-
- tracker_exec_proc (db_con, "DeleteMetadataNumericValue", id, def->id, value, NULL);
- break;
-
-
- case DATA_KEYWORD:
-
- tracker_exec_proc (db_con, "DeleteMetadataKeywordValue", id, def->id, value, NULL);
- break;
-
- default:
- tracker_error ("ERROR: metadata could not be deleted as type %d for metadata %s is not supported", def->type, key);
- break;
-
-
- }
-
- if (key_field > 0) {
- TrackerDBResultSet *result_set;
- gchar *value;
-
- result_set = tracker_db_get_metadata (db_con, service, id, key);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &value, -1);
-
- if (value) {
- char *esc_value = tracker_escape_string (value);
-
- tracker_db_exec_no_reply (db_con,
- "update Services set KeyMetadata%d = '%s' where id = %s",
- key_field, esc_value, id);
-
- g_free (esc_value);
- g_free (value);
- } else {
- tracker_db_exec_no_reply (db_con,
- "update Services set KeyMetadata%d = NULL where id = %s",
- key_field, id);
- }
-
- g_object_unref (result_set);
- } else {
- tracker_db_exec_no_reply (db_con,
- "update Services set KeyMetadata%d = NULL where id = %s",
- key_field, id);
- }
- }
-
-
- /* update fulltext index differentially with old and new values */
- if (update_index) {
- update_metadata_index (db_con, id, service, def, old_value, new_value);
- }
-
- g_free (new_value);
- g_free (old_value);
-
- g_free (res_service);
-
-}
-
-
-void
-tracker_db_delete_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, gboolean update_indexes)
-{
- char *old_value = NULL;
- FieldDef *def;
- gboolean update_index;
-
- g_return_if_fail (id && key && service && db_con);
-
-
- /* get type details */
- def = tracker_db_get_field_def (db_con, key);
-
- if (!def) {
- return;
- }
-
- if (!def->embedded &&
- tracker_service_manager_is_service_embedded (service)) {
- backup_delete_non_embedded_metadata (db_con, id, def->id);
- }
-
-
- char *res_service = tracker_db_get_service_for_entity (db_con, id);
-
- if (!res_service) {
- tracker_error ("ERROR: entity not found");
- return;
- }
-
-
- int key_field = tracker_metadata_is_key (res_service, key);
-
- update_index = update_indexes && (def->type == DATA_INDEX || def->type == DATA_KEYWORD);
-
-
- if (update_index) {
- /* get current value */
- old_value = tracker_db_get_metadata_delimited (db_con, service, id, key);
- tracker_debug ("old value is %s", old_value);
-
- }
-
-
-
- if (key_field > 0) {
- tracker_db_exec_no_reply (db_con,
- "update Services set KeyMetadata%d = NULL where id = %s",
- key_field, id);
- }
-
-
- /* perform deletion */
- switch (def->type) {
-
- case DATA_INDEX:
- case DATA_STRING:
- case DATA_DOUBLE:
- tracker_exec_proc (db_con, "DeleteMetadata", id, def->id, NULL);
- break;
-
- case DATA_INTEGER:
- case DATA_DATE:
- tracker_exec_proc (db_con, "DeleteMetadataNumeric", id, def->id, NULL);
- break;
-
-
- case DATA_KEYWORD:
- tracker_exec_proc (db_con, "DeleteMetadataKeyword", id, def->id, NULL);
- break;
-
- case DATA_FULLTEXT:
-
- tracker_exec_proc (db_con, "DeleteContent", id, def->id, NULL);
- break;
-
- default:
- tracker_error ("ERROR: metadata could not be deleted as this operation is not supported by type %d for metadata %s", def->type, key);
- break;
-
- }
-
-
- /* update fulltext index differentially with old values and NULL */
- if (update_index && old_value) {
- update_metadata_index (db_con, id, service, def, old_value, " ");
- }
-
-
- g_free (old_value);
- g_free (res_service);
-
-
-}
-
-guint32
-tracker_db_create_service (DBConnection *db_con, const char *service, FileInfo *info)
-{
- TrackerDBResultSet *result_set;
- int i;
- guint32 id = 0;
- char *sid;
- char *str_mtime;
- const char *str_is_dir, *str_is_link;
- char *str_filesize, *str_offset, *str_aux;
- int service_type_id;
- char *str_service_type_id, *path, *name;
-
- if (!info || !info->uri || !info->uri[0] || !service || !db_con) {
- tracker_error ("ERROR: cannot create service");
- return 0;
-
- }
-
- if (info->uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (info->uri);
- path = g_path_get_dirname (info->uri);
- } else {
- name = tracker_get_vfs_name (info->uri);
- path = tracker_get_vfs_path (info->uri);
- }
-
-
- /* get a new unique ID for the service - use mutex to prevent race conditions */
-
- result_set = tracker_exec_proc (db_con->common, "GetNewID", NULL);
-
- if (!result_set) {
- tracker_error ("ERROR: could not create service - GetNewID failed");
- return 0;
- }
-
- tracker_db_result_set_get (result_set, 0, &sid, -1);
- i = atoi (sid);
- g_free (sid);
- i++;
-
- sid = tracker_int_to_str (i);
- tracker_exec_proc (db_con->common, "UpdateNewID", sid, NULL);
-
- g_object_unref (result_set);
-
- if (info->is_directory) {
- str_is_dir = "1";
- } else {
- str_is_dir = "0";
- }
-
- if (info->is_link) {
- str_is_link = "1";
- } else {
- str_is_link = "0";
- }
-
- str_filesize = tracker_guint32_to_str (info->file_size);
- str_mtime = tracker_gint32_to_str (info->mtime);
- str_offset = tracker_gint32_to_str (info->offset);
-
- service_type_id = tracker_service_manager_get_id_for_service (service);
-
- if (info->mime) {
- tracker_debug ("service id for %s is %d and sid is %s with mime %s", service, service_type_id, sid, info->mime);
- } else {
- tracker_debug ("service id for %s is %d and sid is %s", service, service_type_id, sid);
- }
-
- str_service_type_id = tracker_int_to_str (service_type_id);
-
- str_aux = tracker_int_to_str (info->aux_id);
-
- if (service_type_id != -1) {
- gchar *parent;
-
- // gchar *apath = tracker_escape_string (path);
- // gchar *aname = tracker_escape_string (name);
-
- tracker_exec_proc (db_con, "CreateService", sid, path, name,
- str_service_type_id, info->mime, str_filesize,
- str_is_dir, str_is_link, str_offset, str_mtime, str_aux, NULL);
- // g_free (apath);
- // g_free (aname);
-
- if (db_con->in_error) {
- tracker_error ("ERROR: CreateService uri is %s/%s", path, name);
- g_free (name);
- g_free (path);
- g_free (str_aux);
- g_free (str_service_type_id);
- g_free (sid);
- g_free (str_filesize);
- g_free (str_mtime);
- g_free (str_offset);
- return 0;
- }
- id = tracker_db_interface_sqlite_get_last_insert_id (TRACKER_DB_INTERFACE_SQLITE (db_con->db));
-
- if (info->is_hidden) {
- tracker_db_exec_no_reply (db_con,
- "Update services set Enabled = 0 where ID = %d",
- (int) id);
- }
-
- tracker_exec_proc (db_con->common, "IncStat", service, NULL);
-
- parent = tracker_service_manager_get_parent_service (service);
-
- if (parent) {
- tracker_exec_proc (db_con->common, "IncStat", parent, NULL);
- g_free (parent);
- }
-
- }
- g_free (name);
- g_free (path);
- g_free (str_aux);
- g_free (str_service_type_id);
- g_free (sid);
- g_free (str_filesize);
- g_free (str_mtime);
- g_free (str_offset);
-
- return id;
-}
-
-
-
-/*
-static void
-delete_index_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- char *word;
- guint32 id;
-
- word = (char *) key;
-
- id = GPOINTER_TO_UINT (user_data);
-g_hash_table_foreach (table, delete_index_data, GUINT_TO_POINTER (id));
- tracker_indexer_update_word (tracker->file_indexer, word, id, 0, 1, TRUE);
-}
-*/
-
-static void
-delete_index_for_service (DBConnection *db_con, guint32 id)
-{
- char *str_file_id;
-
- str_file_id = tracker_uint_to_str (id);
-
- tracker_exec_proc (db_con->blob, "DeleteAllContents", str_file_id, NULL);
-
- g_free (str_file_id);
-
- /* disable deletion of words in index for performance reasons - we can filter out deletes when we search
- GHashTable *table;
-
- table = get_indexable_content_words (db_con, id, table);
-
- table = get_file_contents_words (blob_db_con, id);
-
- if (table) {
- g_hash_table_foreach (table, delete_index_data, GUINT_TO_POINTER (id));
- g_hash_table_destroy (table);
- }
-
- */
-
-}
-
-
-
-
-/*
-static gint
-delete_id_from_list (gpointer key,
- gpointer value,
- gpointer data)
-{
-
- GSList *list, *l;
- WordDetails *wd;
- guint32 file_id = GPOINTER_TO_UINT (data);
-
- list = value;
-
- if (!list) {
- return 1;
- }
-
- for (l=list;l;l=l->next) {
- wd = l->data;
- if (wd->id == file_id) {
-
- list = g_slist_remove (list, l->data);
- g_slice_free (WordDetails, wd);
- value = list;
- tracker->word_detail_count--;
-
- if (g_slist_length (list) == 0) {
- tracker->word_count--;
- }
-
- return 1;
- }
- }
-
- return 1;
-}
-*/
-
-/*
-static void
-delete_cache_words (guint32 file_id)
-{
- g_hash_table_foreach (tracker->cached_table, (GHFunc) delete_id_from_list, GUINT_TO_POINTER (file_id));
-}
-*/
-
-static void
-dec_stat (DBConnection *db_con, int id)
-{
- gchar *service;
-
- service = tracker_service_manager_get_service_by_id (id);
-
- if (service) {
- gchar *parent;
-
- tracker_exec_proc (db_con->common, "DecStat", service, NULL);
-
- parent = tracker_service_manager_get_parent_service (service);
-
- if (parent) {
- tracker_exec_proc (db_con->common, "DecStat", parent, NULL);
- g_free (parent);
- }
-
- g_free (service);
-
-
- } else {
- tracker_debug ("could not dec stat for service ID %d", id);
- }
-
-}
-
-
-char *
-tracker_db_get_id (DBConnection *db_con, const char *service, const char *uri)
-{
- gint service_id;
- guint32 id;
-
- service_id = tracker_service_manager_get_id_for_service (service);
-
- if (service_id == -1) {
- return NULL;
- }
-
- id = tracker_db_get_file_id (db_con, uri);
-
- if (id > 0) {
- return tracker_uint_to_str (id);
- }
-
- return NULL;
-}
-
-
-
-void
-tracker_db_delete_file (DBConnection *db_con, guint32 file_id)
-{
- char *str_file_id, *name = NULL, *path;
- TrackerDBResultSet *result_set;
- gint id;
-
- delete_index_for_service (db_con, file_id);
-
- str_file_id = tracker_uint_to_str (file_id);
-
- result_set = tracker_exec_proc (db_con, "GetFileByID3", str_file_id, NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set,
- 0, &name,
- 1, &path,
- 3, &id,
- -1);
-
- if (name && path) {
- dec_stat (db_con, id);
-
- tracker_exec_proc (db_con, "DeleteService1", str_file_id, NULL);
- tracker_exec_proc (db_con->common, "DeleteService6", path, name, NULL);
- tracker_exec_proc (db_con->common, "DeleteService7", path, name, NULL);
- tracker_exec_proc (db_con->common, "DeleteService9", path, name, NULL);
-
- g_free (name);
- g_free (path);
- }
-
- g_object_unref (result_set);
- }
-
- g_free (str_file_id);
-}
-
-
-void
-tracker_db_delete_directory (DBConnection *db_con, guint32 file_id, const char *uri)
-{
- TrackerDBResultSet *result_set;
- char *str_file_id, *uri_prefix;
-
- str_file_id = tracker_uint_to_str (file_id);
-
- uri_prefix = g_strconcat (uri, G_DIR_SEPARATOR_S, "*", NULL);
-
- delete_index_for_service (db_con, file_id);
-
- /* get all file id's for all files recursively under directory amd delete them */
- result_set = tracker_exec_proc (db_con, "SelectSubFileIDs", uri, uri_prefix, NULL);
-
- if (result_set) {
- gboolean valid = TRUE;
- gint id;
-
- while (valid) {
- tracker_db_result_set_get (result_set, 0, &id, -1);
- tracker_db_delete_file (db_con, id);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
-
- /* delete all files underneath directory
- tracker_db_interface_start_transaction (db_con->db);
- tracker_exec_proc (db_con, "DeleteService2", uri, NULL);
- tracker_exec_proc (db_con, "DeleteService3", uri_prefix, NULL);
- tracker_exec_proc (db_con, "DeleteService4", uri, NULL);
- tracker_exec_proc (db_con, "DeleteService5", uri_prefix, NULL);
- tracker_exec_proc (db_con, "DeleteService8", uri, uri_prefix, NULL);
- tracker_exec_proc (db_con, "DeleteService10", uri, uri_prefix, NULL);
- tracker_db_interface_end_transaction (db_con->db);
- */
-
- /* delete directory */
- tracker_db_delete_file (db_con, file_id);
-
-
- g_free (uri_prefix);
- g_free (str_file_id);
-}
-
-void
-tracker_db_delete_service (DBConnection *db_con, guint32 id, const char *uri)
-{
- tracker_db_delete_directory (db_con, id, uri);
-
-}
-
-
-
-void
-tracker_db_update_file (DBConnection *db_con, FileInfo *info)
-{
- char *str_file_id;
- char *str_service_type_id;
- char *str_size;
- char *str_mtime;
- char *str_offset;
- char *name, *path;
-
- str_file_id = tracker_uint_to_str (info->file_id);
- str_service_type_id = tracker_int_to_str (info->service_type_id);
- str_size = tracker_int_to_str (info->file_size);
- str_mtime = tracker_int_to_str (info->mtime);
- str_offset = tracker_int_to_str (info->offset);
-
- name = g_path_get_basename (info->uri);
- path = g_path_get_dirname (info->uri);
-
- tracker_exec_proc (db_con->index, "UpdateFile", str_service_type_id, path, name, info->mime, str_size, str_mtime, str_offset, str_file_id, NULL);
-
- g_free (str_service_type_id);
- g_free (str_size);
- g_free (str_offset);
- g_free (name);
- g_free (path);
- g_free (str_file_id);
- g_free (str_mtime);
-}
-
-
-gboolean
-tracker_db_has_pending_files (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- gboolean has_pending;
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- has_pending = FALSE;
-
- result_set = tracker_exec_proc (db_con->cache, "ExistsPendingFiles", NULL);
-
- if (result_set) {
- gint pending_file_count;
-
- tracker_db_result_set_get (result_set, 0, &pending_file_count, -1);
- has_pending = (pending_file_count > 0);
-
- g_object_unref (result_set);
- }
-
- return has_pending;
-}
-
-
-gboolean
-tracker_db_has_pending_metadata (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- gboolean has_pending;
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- has_pending = FALSE;
-
- result_set = tracker_exec_proc (db_con->cache, "CountPendingMetadataFiles", 0);
-
- if (result_set) {
- gint pending_file_count;
-
- tracker_db_result_set_get (result_set, 0, &pending_file_count, -1);
- has_pending = (pending_file_count > 0);
-
- g_object_unref (result_set);
- }
-
- return has_pending;
-}
-
-
-TrackerDBResultSet *
-tracker_db_get_pending_files (DBConnection *db_con)
-{
- DBConnection *cache;
- time_t time_now;
-
- if (!tracker->is_running) {
- return NULL;
- }
-
- cache = db_con->cache;
- time (&time_now);
-
- tracker_db_exec_no_reply (cache, "DELETE FROM FileTemp");
-
- tracker_db_exec_no_reply (cache,
- "INSERT INTO FileTemp (ID, FileID, Action, FileUri, MimeType,"
- " IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID) "
- "SELECT ID, FileID, Action, FileUri, MimeType,"
- " IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID "
- "FROM FilePending WHERE (PendingDate < %d) AND (Action <> 20) LIMIT 250",
- (gint) time_now);
-
- tracker_db_exec_no_reply (cache, "DELETE FROM FilePending WHERE ID IN (SELECT ID FROM FileTemp)");
-
- return tracker_db_interface_execute_query (cache->db, NULL, "SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM FileTemp ORDER BY ID");
-}
-
-
-void
-tracker_db_remove_pending_files (DBConnection *db_con)
-{
- tracker_db_exec_no_reply (db_con->cache, "DELETE FROM FileTemp");
-}
-
-
-TrackerDBResultSet *
-tracker_db_get_pending_metadata (DBConnection *db_con)
-{
- DBConnection *cache;
- const char *str;
-
- if (!tracker->is_running) {
- return NULL;
- }
-
- cache = db_con->cache;
-
- str = "INSERT INTO MetadataTemp (ID, FileID, Action, FileUri, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID) SELECT ID, FileID, Action, FileUri, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM FilePending WHERE Action = 20 LIMIT 250";
-
- tracker_db_exec_no_reply (cache, "DELETE FROM MetadataTemp");
- tracker_db_exec_no_reply (cache, str);
- tracker_db_exec_no_reply (cache, "DELETE FROM FilePending WHERE ID IN (SELECT ID FROM MetadataTemp)");
-
- return tracker_db_interface_execute_query (cache->db, NULL, "SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM MetadataTemp ORDER BY ID");
-}
-
-
-void
-tracker_db_remove_pending_metadata (DBConnection *db_con)
-{
- tracker_db_exec_no_reply (db_con->cache, "DELETE FROM MetadataTemp");
-}
-
-
-void
-tracker_db_insert_pending (DBConnection *db_con, const char *id, const char *action, const char *counter, const char *uri, const char *mime, gboolean is_dir, gboolean is_new, int service_type_id)
-{
- time_t time_now;
- char *time_str;
- int i;
- const char *str_new;
- char *str_service_type_id;
-
- time (&time_now);
-
- i = atoi (counter);
-
- if (i == 0) {
- time_str = tracker_int_to_str (i);
- } else {
- time_str = tracker_int_to_str (time_now + i);
- }
-
- if (is_new) {
- str_new = "1";
- } else {
- str_new = "0";
- }
-
- str_service_type_id = tracker_int_to_str (service_type_id);
-
- if (is_dir) {
- tracker_exec_proc (db_con->cache, "InsertPendingFile", id, action, time_str, uri, mime, "1", str_new, "1", "1", str_service_type_id, NULL);
- } else {
- tracker_exec_proc (db_con->cache, "InsertPendingFile", id, action, time_str, uri, mime, "0", str_new, "1", "1", str_service_type_id, NULL);
- }
-
- g_free (str_service_type_id);
- g_free (time_str);
-}
-
-
-void
-tracker_db_update_pending (DBConnection *db_con, const char *counter, const char *action, const char *uri)
-{
- time_t time_now;
- char *time_str;
- int i;
-
- time (&time_now);
-
- i = atoi (counter);
-
- time_str = tracker_int_to_str (time_now + i);
-
- tracker_exec_proc (db_con->cache, "UpdatePendingFile", time_str, action, uri, NULL);
-
- g_free (time_str);
-}
-
-
-TrackerDBResultSet *
-tracker_db_get_files_by_service (DBConnection *db_con, const char *service, int offset, int limit)
-{
- TrackerDBResultSet *result_set;
- char *str_limit, *str_offset;
-
- str_limit = tracker_int_to_str (limit);
- str_offset = tracker_int_to_str (offset);
-
- result_set = tracker_exec_proc (db_con, "GetByServiceType", service, service, str_offset, str_limit, NULL);
-
- g_free (str_offset);
- g_free (str_limit);
-
- return result_set;
-}
-
-TrackerDBResultSet *
-tracker_db_get_files_by_mime (DBConnection *db_con, char **mimes, int n, int offset, int limit, gboolean vfs)
-{
- TrackerDBResultSet *result_set;
- int i;
- char *service;
- char *query;
- GString *str;
-
- g_return_val_if_fail (mimes, NULL);
-
- if (vfs) {
- service = "VFS";
- } else {
- service = "Files";
- }
-
- str = g_string_new ("SELECT DISTINCT F.Path || '/' || F.Name AS uri FROM Services F INNER JOIN ServiceKeywordMetaData M ON F.ID = M.ServiceID WHERE M.MetaDataID = (SELECT ID FROM MetaDataTypes WHERE MetaName ='File:Mime') AND (M.MetaDataValue IN ");
-
- g_string_append_printf (str, "('%s'", mimes[0]);
-
- for (i = 1; i < n; i++) {
- g_string_append_printf (str, ", '%s'", mimes[i]);
-
- }
-
- g_string_append_printf (str, ")) AND (F.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) LIMIT %d,%d", service, service, offset, limit);
-
- query = g_string_free (str, FALSE);
-
- tracker_debug ("getting files with mimes using sql %s", query);
-
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, query);
-
- g_free (query);
-
- return result_set;
-}
-
-TrackerDBResultSet *
-tracker_db_search_text_mime (DBConnection *db_con, const char *text, char **mime_array)
-{
- TrackerQueryTree *tree;
- TrackerDBResultSet *result;
- GArray *hits;
- GSList *result_list;
- guint i;
- int count;
- gint service_array[8];
- GArray *services;
-
- result = NULL;
- result_list = NULL;
-
- service_array[0] = tracker_service_manager_get_id_for_service ("Files");
- service_array[1] = tracker_service_manager_get_id_for_service ("Folders");
- service_array[2] = tracker_service_manager_get_id_for_service ("Documents");
- service_array[3] = tracker_service_manager_get_id_for_service ("Images");
- service_array[4] = tracker_service_manager_get_id_for_service ("Music");
- service_array[5] = tracker_service_manager_get_id_for_service ("Videos");
- service_array[6] = tracker_service_manager_get_id_for_service ("Text");
- service_array[7] = tracker_service_manager_get_id_for_service ("Other");
-
- services = g_array_new (TRUE, TRUE, sizeof (gint));
- g_array_append_vals (services, service_array, 8);
-
- tree = tracker_query_tree_new (text, db_con->word_index, services);
- hits = tracker_query_tree_get_hits (tree, 0, 0);
- count = 0;
-
- for (i = 0; i < hits->len; i++) {
- TrackerDBResultSet *result_set;
- TrackerSearchHit hit;
- char *str_id, *mimetype;
-
- hit = g_array_index (hits, TrackerSearchHit, i);
-
- str_id = tracker_uint_to_str (hit.service_id);
-
- result_set = tracker_exec_proc (db_con, "GetFileByID", str_id, NULL);
-
- g_free (str_id);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 2, &mimetype, -1);
-
- if (tracker_str_in_array (mimetype, mime_array) != -1) {
- GValue value = { 0, };
-
- if (G_UNLIKELY (!result)) {
- result = _tracker_db_result_set_new (2);
- }
-
- _tracker_db_result_set_append (result);
-
- /* copy value in column 0 */
- _tracker_db_result_set_get_value (result_set, 0, &value);
- _tracker_db_result_set_set_value (result, 0, &value);
- g_value_unset (&value);
-
- /* copy value in column 1 */
- _tracker_db_result_set_get_value (result_set, 1, &value);
- _tracker_db_result_set_set_value (result, 1, &value);
- g_value_unset (&value);
-
- count++;
- }
-
- g_free (mimetype);
- g_object_unref (result_set);
- }
-
- if (count > 2047) {
- break;
- }
- }
-
- g_object_unref (tree);
- g_array_free (hits, TRUE);
- g_array_free (services, TRUE);
-
- if (!result)
- return NULL;
-
- if (tracker_db_result_set_get_n_rows (result) == 0) {
- g_object_unref (result);
- return NULL;
- }
-
- tracker_db_result_set_rewind (result);
-
- return result;
-}
-
-TrackerDBResultSet *
-tracker_db_search_text_location (DBConnection *db_con, const char *text, const char *location)
-{
- TrackerDBResultSet *result;
- TrackerQueryTree *tree;
- GArray *hits;
- char *location_prefix;
- int count;
- gint service_array[8];
- guint i;
- GArray *services;
-
- location_prefix = g_strconcat (location, G_DIR_SEPARATOR_S, NULL);
-
- service_array[0] = tracker_service_manager_get_id_for_service ("Files");
- service_array[1] = tracker_service_manager_get_id_for_service ("Folders");
- service_array[2] = tracker_service_manager_get_id_for_service ("Documents");
- service_array[3] = tracker_service_manager_get_id_for_service ("Images");
- service_array[4] = tracker_service_manager_get_id_for_service ("Music");
- service_array[5] = tracker_service_manager_get_id_for_service ("Videos");
- service_array[6] = tracker_service_manager_get_id_for_service ("Text");
- service_array[7] = tracker_service_manager_get_id_for_service ("Other");
-
- services = g_array_new (TRUE, TRUE, sizeof (gint));
- g_array_append_vals (services, service_array, 8);
-
- tree = tracker_query_tree_new (text, db_con->word_index, services);
- hits = tracker_query_tree_get_hits (tree, 0, 0);
- count = 0;
-
- for (i = 0; i < hits->len; i++) {
- TrackerDBResultSet *result_set;
- TrackerSearchHit hit;
- char *str_id, *path;
-
- hit = g_array_index (hits, TrackerSearchHit, i);
-
- str_id = tracker_uint_to_str (hit.service_id);
-
- result_set = tracker_exec_proc (db_con, "GetFileByID", str_id, NULL);
-
- g_free (str_id);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &path, -1);
-
- if (g_str_has_prefix (path, location_prefix) || (strcmp (path, location) == 0)) {
- GValue value = { 0, };
-
- if (G_UNLIKELY (!result)) {
- result = _tracker_db_result_set_new (2);
- }
-
- _tracker_db_result_set_append (result);
-
- /* copy value in column 0 */
- _tracker_db_result_set_get_value (result_set, 0, &value);
- _tracker_db_result_set_set_value (result, 0, &value);
- g_value_unset (&value);
-
- /* copy value in column 1 */
- _tracker_db_result_set_get_value (result_set, 1, &value);
- _tracker_db_result_set_set_value (result, 1, &value);
- g_value_unset (&value);
-
- count++;
- }
-
- g_object_unref (result_set);
- }
-
- if (count > 2047) {
- break;
- }
- }
-
- g_free (location_prefix);
-
- g_object_unref (tree);
- g_array_free (hits, TRUE);
- g_array_free (services, TRUE);
-
- if (!result)
- return NULL;
-
- if (tracker_db_result_set_get_n_rows (result) == 0) {
- g_object_unref (result);
- return NULL;
- }
-
- tracker_db_result_set_rewind (result);
-
- return result;
-}
-
-TrackerDBResultSet *
-tracker_db_search_text_mime_location (DBConnection *db_con, const char *text, char **mime_array, const char *location)
-{
- TrackerDBResultSet *result;
- TrackerQueryTree *tree;
- GArray *hits;
- char *location_prefix;
- int count;
- gint service_array[8];
- guint i;
- GArray *services;
-
- location_prefix = g_strconcat (location, G_DIR_SEPARATOR_S, NULL);
-
- service_array[0] = tracker_service_manager_get_id_for_service ("Files");
- service_array[1] = tracker_service_manager_get_id_for_service ("Folders");
- service_array[2] = tracker_service_manager_get_id_for_service ("Documents");
- service_array[3] = tracker_service_manager_get_id_for_service ("Images");
- service_array[4] = tracker_service_manager_get_id_for_service ("Music");
- service_array[5] = tracker_service_manager_get_id_for_service ("Videos");
- service_array[6] = tracker_service_manager_get_id_for_service ("Text");
- service_array[7] = tracker_service_manager_get_id_for_service ("Other");
-
- services = g_array_new (TRUE, TRUE, sizeof (gint));
- g_array_append_vals (services, service_array, 8);
-
- tree = tracker_query_tree_new (text, db_con->word_index, services);
- hits = tracker_query_tree_get_hits (tree, 0, 0);
- count = 0;
-
- for (i = 0; i < hits->len; i++) {
- TrackerDBResultSet *result_set;
- TrackerSearchHit hit;
- char *str_id, *path, *mimetype;
-
- hit = g_array_index (hits, TrackerSearchHit, i);
-
- str_id = tracker_uint_to_str (hit.service_id);
-
- result_set = tracker_exec_proc (db_con, "GetFileByID", str_id, NULL);
-
- g_free (str_id);
-
- if (result_set) {
- tracker_db_result_set_get (result_set,
- 0, &path,
- 2, &mimetype,
- -1);
-
- if ((g_str_has_prefix (path, location_prefix) || (strcmp (path, location) == 0)) &&
- tracker_str_in_array (mimetype, mime_array) != -1) {
- GValue value = { 0, };
-
- if (G_UNLIKELY (!result)) {
- result = _tracker_db_result_set_new (2);
- }
-
- _tracker_db_result_set_append (result);
-
- /* copy value in column 0 */
- _tracker_db_result_set_get_value (result_set, 0, &value);
- _tracker_db_result_set_set_value (result, 0, &value);
- g_value_unset (&value);
-
- /* copy value in column 1 */
- _tracker_db_result_set_get_value (result_set, 1, &value);
- _tracker_db_result_set_set_value (result, 1, &value);
- g_value_unset (&value);
-
- count++;
- }
-
- g_free (path);
- g_free (mimetype);
- g_object_unref (result_set);
- }
-
- if (count > 2047) {
- break;
- }
- }
-
- g_free (location_prefix);
-
- g_object_unref (tree);
- g_array_free (hits, TRUE);
- g_array_free (services, TRUE);
-
- if (!result)
- return NULL;
-
- if (tracker_db_result_set_get_n_rows (result) == 0) {
- g_object_unref (result);
- return NULL;
- }
-
- tracker_db_result_set_rewind (result);
-
- return result;
-}
-
-TrackerDBResultSet *
-tracker_db_get_metadata_types (DBConnection *db_con, const char *class, gboolean writeable)
-{
- if (strcmp (class, "*") == 0) {
- if (writeable) {
- return tracker_exec_proc (db_con, "GetWriteableMetadataTypes", NULL);
- } else {
- return tracker_exec_proc (db_con, "GetMetadataTypes", NULL);
- }
-
- } else {
- if (writeable) {
- return tracker_exec_proc (db_con, "GetWriteableMetadataTypesLike", class, NULL);
- } else {
- return tracker_exec_proc (db_con, "GetMetadataTypesLike", class, NULL);
- }
- }
-}
-
-TrackerDBResultSet *
-tracker_db_get_sub_watches (DBConnection *db_con, const char *dir)
-{
- TrackerDBResultSet *result_set;
- char *folder;
-
- folder = g_strconcat (dir, G_DIR_SEPARATOR_S, "*", NULL);
-
- result_set = tracker_exec_proc (db_con->cache, "GetSubWatches", folder, NULL);
-
- g_free (folder);
-
- return result_set;
-}
-
-
-TrackerDBResultSet *
-tracker_db_delete_sub_watches (DBConnection *db_con, const char *dir)
-{
- TrackerDBResultSet *result_set;
- char *folder;
-
- folder = g_strconcat (dir, G_DIR_SEPARATOR_S, "*", NULL);
-
- result_set = tracker_exec_proc (db_con->cache, "DeleteSubWatches", folder, NULL);
-
- g_free (folder);
-
- return result_set;
-}
-
-
-void
-tracker_db_move_file (DBConnection *db_con, const char *moved_from_uri, const char *moved_to_uri)
-{
-
- tracker_log ("Moving file %s to %s", moved_from_uri, moved_to_uri);
-
- /* if orig file not in DB, treat it as a create action */
- guint32 id = tracker_db_get_file_id (db_con, moved_from_uri);
- if (id == 0) {
- tracker_debug ("WARNING: original file %s not found in DB", moved_from_uri);
- tracker_db_insert_pending_file (db_con, id, moved_to_uri, NULL, "unknown", 0, TRACKER_ACTION_WRITABLE_FILE_CLOSED, FALSE, TRUE, -1);
- tracker_db_interface_end_transaction (db_con->db);
- return;
- }
-
- char *str_file_id = tracker_uint_to_str (id);
- char *name = g_path_get_basename (moved_to_uri);
- char *path = g_path_get_dirname (moved_to_uri);
- char *old_name = g_path_get_basename (moved_from_uri);
- char *old_path = g_path_get_dirname (moved_from_uri);
-
-
- /* update db so that fileID reflects new uri */
- tracker_exec_proc (db_con, "UpdateFileMove", path, name, str_file_id, NULL);
-
- /* update File:Path and File:Filename metadata */
- tracker_db_set_single_metadata (db_con, "Files", str_file_id, "File:Path", path, FALSE);
- tracker_db_set_single_metadata (db_con, "Files", str_file_id, "File:Name", name, FALSE);
-
- char *ext = strrchr (moved_to_uri, '.');
- if (ext) {
- ext++;
- tracker_db_set_single_metadata (db_con, "Files", str_file_id, "File:Ext", ext, FALSE);
- }
-
- /* update backup service if necessary */
- tracker_exec_proc (db_con->common, "UpdateBackupService", path, name, old_path, old_name, NULL);
-
- g_free (str_file_id);
- g_free (name);
- g_free (path);
- g_free (old_name);
- g_free (old_path);
-
-
-}
-
-
-
-static char *
-str_get_after_prefix (const char *source,
- const char *delimiter)
-{
- char *prefix_start, *str;
-
- g_return_val_if_fail (source != NULL, NULL);
-
- if (delimiter == NULL) {
- return g_strdup (source);
- }
-
- prefix_start = strstr (source, delimiter);
-
- if (prefix_start == NULL) {
- return NULL;
- }
-
- str = prefix_start + strlen (delimiter);
-
- return g_strdup (str);
-}
-
-
-
-
-/* update all non-dirs in a dir for a file move */
-static void
-move_directory_files (DBConnection *db_con, const char *moved_from_uri, const char *moved_to_uri)
-{
- TrackerDBResultSet *result_set;
-
- /* get all sub files (excluding folders) that were moved and add watches */
- result_set = tracker_exec_proc (db_con, "SelectFileChildWithoutDirs", moved_from_uri, NULL);
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *prefix, *name, *file_name, *moved_file_name;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &prefix,
- 1, &name,
- -1);
-
- if (prefix && name) {
- file_name = g_build_filename (prefix, name, NULL);
- moved_file_name = g_build_filename (moved_to_uri, name, NULL);
-
- tracker_db_move_file (db_con, file_name, moved_file_name);
-
- g_free (moved_file_name);
- g_free (file_name);
- g_free (prefix);
- g_free (name);
- }
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-}
-
-
-static inline void
-move_directory (DBConnection *db_con, const char *moved_from_uri, const char *moved_to_uri)
-{
-
- /* stop watching old dir, start watching new dir */
- tracker_remove_watch_dir (moved_from_uri, TRUE, db_con);
-
- tracker_db_move_file (db_con, moved_from_uri, moved_to_uri);
- move_directory_files (db_con, moved_from_uri, moved_to_uri);
-
- if (tracker_count_watch_dirs () < (int) tracker->watch_limit) {
- tracker_add_watch_dir (moved_to_uri, db_con);
- }
-
-}
-
-
-void
-tracker_db_move_directory (DBConnection *db_con, const char *moved_from_uri, const char *moved_to_uri)
-{
- TrackerDBResultSet *result_set;
- char *old_path;
-
- old_path = g_strconcat (moved_from_uri, G_DIR_SEPARATOR_S, NULL);
-
- /* get all sub folders that were moved and add watches */
- result_set = tracker_db_get_file_subfolders (db_con, moved_from_uri);
-
- if (result_set) {
- gboolean valid = TRUE;
-
- while (valid) {
- gchar *prefix, *name;
- gchar *dir_name, *sep, *new_path;
-
- tracker_db_result_set_get (result_set,
- 1, &prefix,
- 2, &name,
- -1);
-
- dir_name = g_build_filename (prefix, name, NULL);
- sep = str_get_after_prefix (dir_name, old_path);
-
- if (!sep) {
- g_free (dir_name);
- continue;
- }
-
- new_path = g_build_filename (moved_to_uri, sep, NULL);
- g_free (sep);
-
- tracker_info ("moving subfolder %s to %s", dir_name, new_path);
-
- move_directory (db_con, dir_name, new_path);
-
- g_usleep (1000);
-
- g_free (prefix);
- g_free (name);
- g_free (new_path);
- g_free (dir_name);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- move_directory (db_con, moved_from_uri, moved_to_uri);
-
- g_free (old_path);
-}
-
-
-TrackerDBResultSet *
-tracker_db_get_file_subfolders (DBConnection *db_con, const char *uri)
-{
- TrackerDBResultSet *result_set;
- char *folder;
-
- folder = g_strconcat (uri, G_DIR_SEPARATOR_S, "*", NULL);
-
- result_set = tracker_exec_proc (db_con, "SelectFileSubFolders", uri, folder, NULL);
-
- g_free (folder);
-
- return result_set;
-}
-
-
-
-
-
-
-static inline guint8
-get_service_type_from_detail (WordDetails *details)
-{
- return (details->amalgamated >> 24) & 0xFF;
-}
-
-static inline guint16
-get_score_from_detail (WordDetails *details)
-{
- unsigned char a[2];
-
- a[0] = (details->amalgamated >> 16) & 0xFF;
- a[1] = (details->amalgamated >> 8) & 0xFF;
-
- return (a[0] << 8) | (a[1]);
-
-}
-
-
-static void
-append_index_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- char *word;
- int score;
- ServiceTypeInfo *info;
-
- word = (char *) key;
- score = GPOINTER_TO_INT (value);
- info = user_data;
-
- if (score != 0) {
- /* cache word update */
- tracker_cache_add (word, info->service_id, info->service_type_id, score, TRUE);
- }
-
-
-}
-
-
-static void
-update_index_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- char *word;
- int score;
- ServiceTypeInfo *info;
-
- word = (char *) key;
- score = GPOINTER_TO_INT (value);
- info = user_data;
-
- if (score == 0) return;
-
- tracker_debug ("updating index for word %s with score %d", word, score);
-
- tracker_cache_add (word, info->service_id, info->service_type_id, score, FALSE);
-
-}
-
-
-void
-tracker_db_update_indexes_for_new_service (guint32 service_id, int service_type_id, GHashTable *table)
-{
-
- if (table) {
- ServiceTypeInfo *info;
-
- info = g_slice_new (ServiceTypeInfo);
-
- info->service_id = service_id;
- info->service_type_id = service_type_id;
- info->db_con = NULL;
-
- g_hash_table_foreach (table, append_index_data, info);
- g_slice_free (ServiceTypeInfo, info);
- }
-}
-
-
-
-
-
-static void
-cmp_data (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- char *word;
- int score;
- GHashTable *new_table;
-
- gpointer k=0,v=0;
-
- word = (char *) key;
- score = GPOINTER_TO_INT (value);
- new_table = user_data;
-
- if (!g_hash_table_lookup_extended (new_table, word, &k, &v)) {
- g_hash_table_insert (new_table, g_strdup (word), GINT_TO_POINTER (0 - score));
- } else {
- g_hash_table_insert (new_table, (char *) word, GINT_TO_POINTER (GPOINTER_TO_INT (v) - score));
- }
-}
-
-
-void
-tracker_db_update_differential_index (DBConnection *db_con, GHashTable *old_table, GHashTable *new_table, const char *id, int service_type_id)
-{
- ServiceTypeInfo *info;
-
- g_return_if_fail (id || service_type_id > -1);
-
- if (!new_table) {
- new_table = g_hash_table_new (g_str_hash, g_str_equal);
- }
-
- /* calculate the differential word scores between old and new data*/
- if (old_table) {
- g_hash_table_foreach (old_table, cmp_data, new_table);
- }
-
- info = g_new (ServiceTypeInfo, 1);
-
- info->service_id = strtoul (id, NULL, 10);
- info->service_type_id = service_type_id;
- info->db_con = db_con;
-
- g_hash_table_foreach (new_table, update_index_data, info);
-
- g_free (info);
-}
-
-
-TrackerDBResultSet *
-tracker_db_get_keyword_list (DBConnection *db_con, const char *service)
-{
-
- tracker_debug (service);
- return tracker_exec_proc (db_con, "GetKeywordList", service, service, NULL);
-}
-
-GSList *
-tracker_db_mime_query (DBConnection *db_con,
- const gchar *stored_proc,
- gint service_id)
-{
- TrackerDBResultSet *result_set;
- GSList *result = NULL;
- gchar *service_id_str;
-
- service_id_str = g_strdup_printf ("%d", service_id);
- result_set = tracker_exec_proc (db_con, stored_proc, service_id_str, NULL);
- g_free (service_id_str);
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *str;
-
- while (valid) {
- tracker_db_result_set_get (result_set, 0, &str, -1);
- result = g_slist_prepend (result, str);
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- return result;
-}
-
-GSList *
-tracker_db_get_mimes_for_service_id (DBConnection *db_con,
- gint service_id)
-{
- return tracker_db_mime_query (db_con, "GetMimeForServiceId", service_id);
-}
-
-GSList *
-tracker_db_get_mime_prefixes_for_service_id (DBConnection *db_con,
- gint service_id)
-{
- return tracker_db_mime_query (db_con, "GetMimePrefixForServiceId", service_id);
-}
-
-static TrackerService *
-db_row_to_service (TrackerDBResultSet *result_set)
-{
- TrackerService *service;
- GSList *new_list = NULL;
- gint id, i;
- gchar *name, *parent, *content_metadata;
- gboolean enabled, embedded, has_metadata, has_fulltext;
- gboolean has_thumbs, show_service_files, show_service_directories;
-
- service = tracker_service_new ();
-
- tracker_db_result_set_get (result_set,
- 0, &id,
- 1, &name,
- 2, &parent,
- 3, &enabled,
- 4, &embedded,
- 5, &has_metadata,
- 6, &has_fulltext,
- 7, &has_thumbs,
- 8, &content_metadata,
- 10, &show_service_files,
- 11, &show_service_directories,
- -1);
-
- tracker_service_set_id (service, id);
- tracker_service_set_name (service, name);
- tracker_service_set_parent (service, parent);
- tracker_service_set_enabled (service, enabled);
- tracker_service_set_embedded (service, embedded);
- tracker_service_set_has_metadata (service, has_metadata);
- tracker_service_set_has_full_text (service, has_fulltext);
- tracker_service_set_has_thumbs (service, has_thumbs);
- tracker_service_set_content_metadata (service, content_metadata);
-
- if (g_str_has_prefix (name, "Email") ||
- g_str_has_suffix (name, "Emails")) {
- tracker_service_set_db_type (service, TRACKER_DB_TYPE_EMAIL);
-
- if (tracker->email_service_min == 0 ||
- id < tracker->email_service_min) {
- tracker->email_service_min = id;
- }
-
- if (tracker->email_service_max == 0 ||
- id > tracker->email_service_max) {
- tracker->email_service_max = id;
- }
- } else {
- tracker_service_set_db_type (service, TRACKER_DB_TYPE_DATA);
- }
-
- tracker_service_set_show_service_files (service, show_service_files);
- tracker_service_set_show_service_directories (service, show_service_directories);
-
- for (i = 12; i < 23; i++) {
- gchar *metadata;
-
- tracker_db_result_set_get (result_set, i, &metadata, -1);
-
- if (metadata) {
- new_list = g_slist_prepend (new_list, metadata);
- }
- }
-
- /* Hack to prevent db change late in the cycle, check the
- * service name matches "Applications", then add some voodoo.
- */
- if (strcmp (name, "Applications") == 0) {
- /* These strings should be definitions at the top of
- * this file somewhere really.
- */
- new_list = g_slist_prepend (new_list, g_strdup ("App:DisplayName"));
- new_list = g_slist_prepend (new_list, g_strdup ("App:Exec"));
- new_list = g_slist_prepend (new_list, g_strdup ("App:Icon"));
- }
-
- new_list = g_slist_reverse (new_list);
-
- tracker_service_set_key_metadata (service, new_list);
- g_slist_foreach (new_list, (GFunc) g_free, NULL);
- g_slist_free (new_list);
-
- return service;
-}
-
-/* get static data like metadata field definitions and services definitions and load them into hashtables */
-void
-tracker_db_get_static_data (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
-
- /* get static metadata info */
- result_set = tracker_exec_proc (db_con, "GetMetadataTypes", 0);
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *name;
- gint id;
-
- while (valid) {
- TrackerDBResultSet *result_set2;
- gboolean embedded, multiple_values, delimited, filtered, store_metadata;
- FieldDef *def;
-
- def = g_new0 (FieldDef, 1);
-
- tracker_db_result_set_get (result_set,
- 0, &id,
- 1, &name,
- 2, &def->type,
- 3, &def->field_name,
- 4, &def->weight,
- 5, &embedded,
- 6, &multiple_values,
- 7, &delimited,
- 8, &filtered,
- 9, &store_metadata,
- -1);
-
- def->id = tracker_int_to_str (id);
- def->embedded = embedded;
- def->multiple_values = multiple_values;
- def->delimited = delimited;
- def->filtered = filtered;
- def->store_metadata = store_metadata;
-
- result_set2 = tracker_exec_proc (db_con, "GetMetadataAliases", def->id, NULL);
-
- if (result_set2) {
- valid = TRUE;
-
- while (valid) {
- tracker_db_result_set_get (result_set2, 1, &id, -1);
- def->child_ids = g_slist_prepend (def->child_ids,
- tracker_int_to_str (id));
-
- valid = tracker_db_result_set_iter_next (result_set2);
- }
-
- g_object_unref (result_set2);
- }
-
- g_hash_table_insert (tracker->metadata_table, g_utf8_strdown (name, -1), def);
- tracker_debug ("loading metadata def %s with weight %d", def->field_name, def->weight);
-
- g_free (name);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- /* get static service info */
- result_set = tracker_exec_proc (db_con, "GetAllServices", 0);
-
- if (result_set) {
- gboolean valid = TRUE;
-
- tracker->email_service_min = 0;
- tracker->email_service_max = 0;
-
- while (valid) {
- TrackerService *service;
- GSList *mimes, *mime_prefixes;
- const gchar *name;
- gint id;
-
- service = db_row_to_service (result_set);
-
- if (!service) {
- continue;
- }
-
- id = tracker_service_get_id (service);
- name = tracker_service_get_name (service);
-
- mimes = tracker_db_get_mimes_for_service_id (db_con, id);
- mime_prefixes = tracker_db_get_mime_prefixes_for_service_id (db_con, id);
-
- tracker_debug ("Adding service definition for %s with id %d", name, id);
- tracker_service_manager_add_service (service,
- mimes,
- mime_prefixes);
-
- g_slist_free (mimes);
- g_slist_free (mime_prefixes);
- g_object_unref (service);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
-
- /* check for web history */
- if (!tracker_service_manager_get_service ("Webhistory")) {
- tracker_log ("Adding missing Webhistory service");
- tracker_exec_proc (db_con, "InsertServiceType", "Webhistory", NULL);
- }
- }
-}
-
-DBConnection *
-tracker_db_get_service_connection (DBConnection *db_con, const char *service)
-{
- TrackerDBType type;
-
- type = tracker_service_manager_get_db_for_service (service);
-
- if (type == TRACKER_DB_TYPE_EMAIL) {
- return db_con->emails;
- }
-
- return db_con;
-}
-
-
-char *
-tracker_db_get_service_for_entity (DBConnection *db_con, const char *id)
-{
- TrackerDBResultSet *result_set;
- char *result = NULL;
-
- result_set = tracker_exec_proc (db_con, "GetFileByID2", id, NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 1, &result, -1);
- g_object_unref (result_set);
- }
-
- return result;
-}
-
-
-gboolean
-tracker_db_metadata_is_child (DBConnection *db_con, const char *child, const char *parent)
-{
- FieldDef *def_child, *def_parent;
-
- def_child = tracker_db_get_field_def (db_con, child);
-
- if (!def_child) {
- return FALSE;
- }
-
-
- def_parent = tracker_db_get_field_def (db_con, parent);
-
- if (!def_parent) {
- return FALSE;
- }
-
- GSList *tmp;
-
- for (tmp = def_parent->child_ids; tmp; tmp = tmp->next) {
-
- if (!tmp->data) return FALSE;
-
- if (strcmp (def_child->id, tmp->data) == 0) {
- return TRUE;
- }
- }
-
- return FALSE;
-
-}
-
-
-gboolean
-tracker_db_load_service_file (DBConnection *db_con, const char *filename, gboolean full_path)
-{
- GKeyFile *key_file = NULL;
- const char * const *locale_array;
- char *service_file;
- gboolean is_metadata = FALSE, is_service = FALSE, is_extractor = FALSE;
- int id;
-
- char *DataTypeArray[11] = {"Keyword", "Indexable", "CLOB", "String", "Integer", "Double", "DateTime", "BLOB", "Struct", "Link", NULL};
-
- if (!full_path) {
- service_file = g_build_filename (tracker->services_dir, filename, NULL);
- } else {
- service_file = g_strdup (filename);
- }
-
-
- locale_array = g_get_language_names ();
-
- key_file = g_key_file_new ();
-
- if (g_key_file_load_from_file (key_file, service_file, G_KEY_FILE_NONE, NULL)) {
-
- if (g_str_has_suffix (filename, ".metadata")) {
- is_metadata = TRUE;
- } else if (g_str_has_suffix (filename, ".service")) {
- is_service = TRUE;
- } else if (g_str_has_suffix (filename, ".extractor")) {
- is_extractor = TRUE;
- } else {
- g_key_file_free (key_file);
- g_free (service_file);
- return FALSE;
- }
-
-
- char **groups = g_key_file_get_groups (key_file, NULL);
- char **array;
-
- for (array = groups; *array; array++) {
-
- if (is_metadata) {
- FieldDef *def = tracker_db_get_field_def (db_con, *array);
-
- if (!def) {
- tracker_exec_proc (db_con, "InsertMetadataType", *array, NULL);
- id = tracker_db_interface_sqlite_get_last_insert_id (TRACKER_DB_INTERFACE_SQLITE (db_con->db));
- } else {
- id = atoi (def->id);
- }
- } else if (is_service) {
- TrackerService *service;
-
- tracker_log ("Trying to obtain service %s in cache", *array);
- service = tracker_service_manager_get_service (*array);
-
- if (!service) {
- tracker_exec_proc (db_con, "InsertServiceType", *array, NULL);
- id = tracker_db_interface_sqlite_get_last_insert_id (TRACKER_DB_INTERFACE_SQLITE (db_con->db));
- } else {
- id = tracker_service_get_id (service);
- }
- } else {
- /* TODO add support for extractors here */;
- }
-
- /* get inserted ID */
-
- char *str_id = tracker_uint_to_str (id);
-
- char **keys = g_key_file_get_keys (key_file, *array, NULL, NULL);
- char **array2;
-
- for (array2 = keys; *array2; array2++) {
-
- char *value = g_key_file_get_locale_string (key_file, *array, *array2, locale_array[0], NULL);
-
- if (value) {
-
- if (strcasecmp (value, "true") == 0) {
-
- g_free (value);
- value = g_strdup ("1");
-
- } else if (strcasecmp (value, "false") == 0) {
-
- g_free (value);
- value = g_strdup ("0");
- }
-
- if (is_metadata) {
-
- if (strcasecmp (*array2, "Parent") == 0) {
-
- tracker_exec_proc (db_con, "InsertMetaDataChildren", str_id, value, NULL);
-
- } else if (strcasecmp (*array2, "DataType") == 0) {
-
- int data_id = tracker_str_in_array (value, DataTypeArray);
-
- if (data_id != -1) {
- tracker_db_exec_no_reply (db_con,
- "update MetaDataTypes set DataTypeID = %d where ID = %s",
- data_id, str_id);
- }
-
-
- } else {
- char *esc_value = tracker_escape_string (value);
-
- tracker_db_exec_no_reply (db_con,
- "update MetaDataTypes set %s = '%s' where ID = %s",
- *array2, esc_value, str_id);
- g_free (esc_value);
- }
-
- } else if (is_service) {
-
- if (strcasecmp (*array2, "TabularMetadata") == 0) {
-
- char **tab_array = g_key_file_get_string_list (key_file, *array, *array2, NULL, NULL);
-
- char **tmp;
- for (tmp = tab_array; *tmp; tmp++) {
-
- tracker_exec_proc (db_con, "InsertServiceTabularMetadata", str_id, *tmp, NULL);
-
- }
-
- g_strfreev (tab_array);
-
-
-
- } else if (strcasecmp (*array2, "TileMetadata") == 0) {
-
- char **tab_array = g_key_file_get_string_list (key_file, *array, *array2, NULL, NULL);
-
- char **tmp;
- for (tmp = tab_array; *tmp; tmp++) {
-
- tracker_exec_proc (db_con, "InsertServiceTileMetadata", str_id, *tmp, NULL);
- }
-
- g_strfreev (tab_array);
-
- } else if (strcasecmp (*array2, "Mimes") == 0) {
-
- char **tab_array = g_key_file_get_string_list (key_file, *array, *array2, NULL, NULL);
-
- char **tmp;
- for (tmp = tab_array; *tmp; tmp++) {
- tracker_exec_proc (db_con, "InsertMimes", *tmp, NULL);
-
- tracker_db_exec_no_reply (db_con,
- "update FileMimes set ServiceTypeID = %s where Mime = '%s'",
- str_id, *tmp);
- }
-
- g_strfreev (tab_array);
-
- } else if (strcasecmp (*array2, "MimePrefixes") == 0) {
-
- char **tab_array = g_key_file_get_string_list (key_file, *array, *array2, NULL, NULL);
-
- char **tmp;
- for (tmp = tab_array; *tmp; tmp++) {
- tracker_exec_proc (db_con, "InsertMimePrefixes", *tmp, NULL);
-
- tracker_db_exec_no_reply (db_con,
- "update FileMimePrefixes set ServiceTypeID = %s where MimePrefix = '%s'",
- str_id, *tmp);
- }
-
- g_strfreev (tab_array);
-
-
- } else {
- char *esc_value = tracker_escape_string (value);
-
- tracker_db_exec_no_reply (db_con,
- "update ServiceTypes set %s = '%s' where TypeID = %s",
- *array2, esc_value, str_id);
- g_free (esc_value);
- }
-
- } else {
- /* to do - support extractors here */ ;
- }
-
- g_free (value);
-
- }
- }
-
- if (keys) {
- g_strfreev (keys);
- }
-
- g_free (str_id);
-
- }
-
-
- if (groups) {
- g_strfreev (groups);
- }
-
-
- g_key_file_free (key_file);
-
- } else {
- g_key_file_free (key_file);
- g_free (service_file);
- return FALSE;
- }
-
-
-
- g_free (service_file);
-
- return TRUE;
-}
-
-
-FieldData *
-tracker_db_get_metadata_field (DBConnection *db_con, const char *service, const char *field_name, int field_count, gboolean is_select, gboolean is_condition)
-{
- FieldData *field_data;
-
- field_data = NULL;
-
- FieldDef *def;
-
- field_data = g_new0 (FieldData, 1);
-
- field_data->is_select = is_select;
- field_data->is_condition = is_condition;
- field_data->field_name = g_strdup (field_name);
-
- def = tracker_db_get_field_def (db_con, field_name);
-
- if (def) {
-
- field_data->table_name = tracker_get_metadata_table (def->type);
- field_data->alias = g_strdup_printf ("M%d", field_count);
- field_data->data_type = def->type;
- field_data->id_field = g_strdup (def->id);
- field_data->multiple_values = def->multiple_values;
-
- char *my_field = tracker_db_get_field_name (service, field_name);
-
- if (my_field) {
- field_data->select_field = g_strdup_printf (" S.%s ", my_field);
- g_free (my_field);
- field_data->needs_join = FALSE;
- } else {
- char *disp_field = tracker_db_get_display_field (def);
- field_data->select_field = g_strdup_printf ("M%d.%s", field_count, disp_field);
- g_free (disp_field);
- field_data->needs_join = TRUE;
- }
- g_print ("Type for %d is %d", field_count, def->type);
- if (def->type == DATA_DOUBLE || def->type == DATA_STRING || def->type == DATA_INDEX) {
- field_data->where_field = g_strdup_printf ("M%d.MetaDataDisplay", field_count);
- } else {
- field_data->where_field = g_strdup_printf ("M%d.MetaDataValue", field_count);
- }
-
-
- tracker_db_free_field_def (def);
-
- } else {
- g_free (field_data);
- return NULL;
- }
-
-
- return field_data;
-}
-
-char *
-tracker_db_get_option_string (DBConnection *db_con, const char *option)
-{
- TrackerDBResultSet *result_set;
- gchar *value = NULL;
-
- result_set = tracker_exec_proc (db_con->common, "GetOption", option, NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &value, -1);
- g_object_unref (result_set);
- }
-
- return value;
-}
-
-
-void
-tracker_db_set_option_string (DBConnection *db_con, const char *option, const char *value)
-{
- tracker_exec_proc (db_con->common, "SetOption", value, option, NULL);
-}
-
-
-int
-tracker_db_get_option_int (DBConnection *db_con, const char *option)
-{
- TrackerDBResultSet *result_set;
- gchar *str;
- int value = 0;
-
- result_set = tracker_exec_proc (db_con->common, "GetOption", option, NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &str, -1);
-
- if (str) {
- value = atoi (str);
- g_free (str);
- }
-
- g_object_unref (result_set);
- }
-
- return value;
-}
-
-
-void
-tracker_db_set_option_int (DBConnection *db_con, const char *option, int value)
-{
- char *str_value = tracker_int_to_str (value);
-
- tracker_exec_proc (db_con->common, "SetOption", str_value, option, NULL);
-
- g_free (str_value);
-}
-
-
-gboolean
-tracker_db_regulate_transactions (DBConnection *db_con, int interval)
-{
- tracker->index_count++;
-
- if ((tracker->index_count == 1 || tracker->index_count == interval || (tracker->index_count >= interval && tracker->index_count % interval == 0))) {
-
- if (tracker->index_count > 1) {
- tracker_db_end_index_transaction (db_con);
- tracker_db_start_index_transaction (db_con);
- tracker_log ("Current memory usage is %d, word count %d and hits %d", tracker_get_memory_usage (), tracker->word_count, tracker->word_detail_count);
- }
-
- return TRUE;
-
- }
-
- return FALSE;
-
-}
-
-gboolean
-tracker_db_integrity_check (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- gboolean integrity_check = TRUE;
-
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, "pragma integrity_check;");
-
- if (!result_set) {
- integrity_check = FALSE;
- } else {
- gchar *check;
-
- tracker_db_result_set_get (result_set, 0, &check, -1);
-
- if (check) {
- integrity_check = (strcasecmp (check, "ok") == 0);
- g_free (check);
- }
-
- g_object_unref (result_set);
- }
-
- return integrity_check;
-}
-
diff --git a/src/trackerd/tracker-db-sqlite.h b/src/trackerd/tracker-db-sqlite.h
deleted file mode 100644
index 93235f95e..000000000
--- a/src/trackerd/tracker-db-sqlite.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_SQLITE_DB_H_
-#define _TRACKER_SQLITE_DB_H_
-
-#include <glib.h>
-
-#include "tracker-db-interface.h"
-#include "tracker-utils.h"
-#include "tracker-service-manager.h"
-
-
-typedef enum {
- METADATA_INDEX,
- METADATA_REINDEX,
- METADATA_USER,
- METADATA_USER_REPLACE
-} MetadataAction;
-
-
-
-typedef struct DBConnection DBConnection;
-
-struct DBConnection {
- TrackerDBInterface *db;
- TrackerDBType db_type;
- DBCategory db_category;
- char *err;
- char *name;
- char *file_name;
- int rc;
- char *thread; /* name of the thread that created this */
-
- guint in_transaction : 1;
- guint in_error : 1;
-
- /* pointers to other database connection objects */
- DBConnection *data;
- DBConnection *common;
- DBConnection *files;
- DBConnection *index;
- DBConnection *emails;
- DBConnection *others;
- DBConnection *blob;
- DBConnection *cache;
- DBConnection *user;
- gpointer word_index;
-};
-
-
-char ** tracker_db_get_row (char ***result, int num);
-unsigned int tracker_db_get_last_id (DBConnection *db_con);
-void tracker_db_free_result (char ***result);
-void tracker_db_log_result (char ***result);
-int tracker_get_row_count (char ***result);
-int tracker_get_field_count (char ***result);
-
-gboolean tracker_db_needs_setup (void);
-gboolean tracker_db_needs_data (void);
-gboolean tracker_db_initialize (void);
-void tracker_db_thread_init (void);
-void tracker_db_thread_end (void);
-void tracker_db_close (DBConnection *db_con);
-void tracker_db_finalize (void);
-
-DBConnection * tracker_db_connect (void);
-DBConnection * tracker_db_connect_common (void);
-DBConnection * tracker_db_connect_file_content (void);
-DBConnection * tracker_db_connect_email_content(void);
-DBConnection * tracker_db_connect_cache (void);
-DBConnection * tracker_db_connect_emails (void);
-DBConnection * tracker_db_connect_email_meta (void);
-DBConnection * tracker_db_connect_file_meta (void);
-DBConnection * tracker_db_connect_all (gboolean indexer_process);
-void tracker_db_close_all (DBConnection *db_con);
-void tracker_db_refresh_all (DBConnection *db_con);
-void tracker_db_refresh_email (DBConnection *db_con);
-
-gboolean tracker_update_db (DBConnection *db_con);
-
-char * tracker_escape_string (const char *in);
-
-void tracker_db_prepare_queries (DBConnection *db_con);
-TrackerDBResultSet * tracker_exec_proc (DBConnection *db_con, const char *procedure, ...);
-gboolean tracker_exec_proc_no_reply (DBConnection *db_con, const char *procedure, ...);
-gboolean tracker_db_exec_no_reply (DBConnection *db_con, const char *query, ...);
-void tracker_create_db (void);
-void tracker_db_load_stored_procs (DBConnection *db_con);
-void tracker_db_save_file_contents (DBConnection *db_con, GHashTable *index_table, GHashTable *old_table, const char *file_name, FileInfo *info);
-void tracker_db_clear_temp (DBConnection *db_con);
-void tracker_db_check_tables (DBConnection *db_con);
-gboolean tracker_db_start_transaction (DBConnection *db_con);
-gboolean tracker_db_end_transaction (DBConnection *db_con);
-
-void tracker_db_update_indexes_for_new_service (guint32 service_id, int service_type_id, GHashTable *table);
-void tracker_db_update_differential_index (DBConnection *db_con,GHashTable *old_table, GHashTable *new_table, const char *id, int service_type_id);
-void tracker_db_update_index_file_contents (DBConnection *blob_db_con, GHashTable *index_table);
-int tracker_db_flush_words_to_qdbm (DBConnection *db_con, int limit);
-
-void tracker_db_release_memory (void);
-
-void tracker_db_set_default_pragmas (DBConnection *db_con);
-
-void tracker_db_fsync (DBConnection *db_con, gboolean enable);
-
-
-char * tracker_get_related_metadata_names (DBConnection *db_con, const char *name);
-char * tracker_get_metadata_table (DataTypes type);
-
-TrackerDBResultSet * tracker_db_search_text (DBConnection *db_con, const char *service, const char *search_string, int offset, int limit, gboolean save_results, gboolean detailed);
-TrackerDBResultSet * tracker_db_search_files_by_text (DBConnection *db_con, const char *text, int offset, int limit, gboolean sort);
-TrackerDBResultSet * tracker_db_search_metadata (DBConnection *db_con, const char *service, const char *field, const char *text, int offset, int limit);
-TrackerDBResultSet * tracker_db_search_matching_metadata (DBConnection *db_con, const char *service, const char *id, const char *text);
-
-/* gets metadata as a single row (with multiple values delimited by semicolons) */
-TrackerDBResultSet * tracker_db_get_metadata (DBConnection *db_con, const char *service, const char *id, const char *key);
-
-/* gets metadata using a separate row for each value it has */
-char * tracker_db_get_metadata_delimited (DBConnection *db_con, const char *service, const char *id, const char *key);
-char * tracker_db_set_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, char **values, int length, gboolean do_backup);
-void tracker_db_set_single_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value, gboolean do_backup);
-
-TrackerDBResultSet * tracker_db_get_unique_metadata_values (DBConnection *db_con, const char *meta_type, int offset, int limit);
-
-void tracker_db_insert_embedded_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, char **values, int length, GHashTable *table);
-void tracker_db_insert_single_embedded_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value, GHashTable *table);
-
-
-void tracker_db_delete_metadata_value (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value);
-void tracker_db_delete_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, gboolean update_indexes);
-
-char * tracker_db_refresh_display_metadata (DBConnection *db_con, const char *id, const char *metadata_id, int data_type, const char *key);
-void tracker_db_refresh_all_display_metadata (DBConnection *db_con, const char *id);
-
-void tracker_db_update_keywords (DBConnection *db_con, const char *service, const char *id, const char *value);
-
-guint32 tracker_db_create_service (DBConnection *db_con, const char *service, FileInfo *info);
-
-void tracker_db_delete_file (DBConnection *db_con, guint32 file_id);
-void tracker_db_delete_directory (DBConnection *db_con, guint32 file_id, const char *uri);
-void tracker_db_update_file (DBConnection *db_con, FileInfo *info);
-void tracker_db_move_file (DBConnection *db_con, const char *moved_from_uri, const char *moved_to_uri);
-void tracker_db_move_directory (DBConnection *db_con, const char *moved_from_uri, const char *moved_to_uri);
-
-guint32 tracker_db_get_file_id (DBConnection *db_con, const char *uri);
-void tracker_db_insert_pending_file (DBConnection *db_con, guint32 file_id, const char *uri, const char *moved_to_uri, const char *mime, int counter, TrackerChangeAction action, gboolean is_directory, gboolean is_new, int service_type_id);
-
-gboolean tracker_db_has_pending_files (DBConnection *db_con);
-gboolean tracker_db_has_pending_metadata (DBConnection *db_con);
-TrackerDBResultSet * tracker_db_get_pending_files (DBConnection *db_con);
-void tracker_db_remove_pending_files (DBConnection *db_con);
-TrackerDBResultSet * tracker_db_get_pending_metadata (DBConnection *db_con);
-void tracker_db_remove_pending_metadata (DBConnection *db_con);
-void tracker_db_insert_pending (DBConnection *db_con, const char *id, const char *action, const char *counter, const char *uri, const char *mime, gboolean is_dir, gboolean is_new, int service_type_id);
-void tracker_db_update_pending (DBConnection *db_con, const char *counter, const char *action, const char *uri);
-
-TrackerDBResultSet * tracker_db_get_files_by_service (DBConnection *db_con, const char *service, int offset, int limit);
-TrackerDBResultSet * tracker_db_get_files_by_mime (DBConnection *db_con, char **mimes, int n, int offset, int limit, gboolean vfs);
-TrackerDBResultSet * tracker_db_search_text_mime (DBConnection *db_con, const char *text, char **mime_array);
-TrackerDBResultSet * tracker_db_search_text_location (DBConnection *db_con, const char *text,const char *location);
-TrackerDBResultSet * tracker_db_search_text_mime_location (DBConnection *db_con, const char *text, char **mime_array, const char *location);
-
-TrackerDBResultSet * tracker_db_get_file_subfolders (DBConnection *db_con, const char *uri);
-
-TrackerDBResultSet * tracker_db_get_metadata_types (DBConnection *db_con, const char *class, gboolean writeable);
-
-TrackerDBResultSet * tracker_db_get_sub_watches (DBConnection *db_con, const char *dir);
-TrackerDBResultSet * tracker_db_delete_sub_watches (DBConnection *db_con, const char *dir);
-
-TrackerDBResultSet * tracker_db_get_keyword_list (DBConnection *db_con, const char *service);
-
-void tracker_db_update_index_multiple_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, char **values);
-
-void tracker_db_get_static_data (DBConnection *db_con);
-
-DBConnection * tracker_db_get_service_connection (DBConnection *db_con, const char *service);
-
-char * tracker_db_get_service_for_entity (DBConnection *db_con, const char *id);
-
-gboolean tracker_db_metadata_is_child (DBConnection *db_con, const char *child, const char *parent);
-
-GHashTable * tracker_db_get_file_contents_words (DBConnection *db_con, guint32 id, GHashTable *old_table);
-
-GHashTable * tracker_db_get_indexable_content_words (DBConnection *db_con, guint32 id, GHashTable *table, gboolean embedded_only);
-
-gboolean tracker_db_has_display_metadata (FieldDef *def);
-
-gboolean tracker_db_load_service_file (DBConnection *db_con, const char *filename, gboolean full_path);
-
-char * tracker_db_get_field_name (const char *service, const char *meta_name);
-int tracker_metadata_is_key (const char *service, const char *meta_name);
-char * tracker_db_get_display_field (FieldDef *def);
-
-void tracker_db_delete_service (DBConnection *db_con, guint32 id, const char *uri);
-
-FieldData * tracker_db_get_metadata_field (DBConnection *db_con, const char *service, const char *field_name, int field_count, gboolean is_select, gboolean is_condition);
-
-void tracker_db_start_index_transaction (DBConnection *db_con);
-void tracker_db_end_index_transaction (DBConnection *db_con);
-gboolean tracker_db_regulate_transactions (DBConnection *db_con, int interval);
-
-
-char * tracker_db_get_option_string (DBConnection *db_con, const char *option);
-void tracker_db_set_option_string (DBConnection *db_con, const char *option, const char *value);
-int tracker_db_get_option_int (DBConnection *db_con, const char *option);
-void tracker_db_set_option_int (DBConnection *db_con, const char *option, int value);
-
-gboolean tracker_db_integrity_check (DBConnection *db_con);
-
-#endif
diff --git a/src/trackerd/tracker-db.c b/src/trackerd/tracker-db.c
deleted file mode 100644
index 447842123..000000000
--- a/src/trackerd/tracker-db.c
+++ /dev/null
@@ -1,1254 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2007, Jason Kivlighn (jkivlighn@gmail.com)
- * Copyright (C) 2007, Creative Commons (http://creativecommons.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-db.h"
-#include "tracker-email.h"
-#include "tracker-metadata.h"
-#include "tracker-os-dependant.h"
-#include "tracker-service-manager.h"
-#include "tracker-process-files.h"
-
-extern Tracker *tracker;
-
-#define XMP_MIME_TYPE "application/rdf+xml"
-#define STACK_SIZE 30
-#define BLACK_LIST_SECONDS 3600
-#define MAX_DURATION 180
-#define MAX_CHANGE_TIMES 3
-
-typedef struct {
- DBConnection *db_con;
- char *file_id;
- char *service;
- GHashTable *table;
-} DatabaseAction;
-
-static void
-free_metadata_list (GSList *list)
-{
- g_slist_foreach (list, (GFunc) g_free, NULL);
- g_slist_free (list);
-
-}
-
-gboolean
-tracker_db_is_file_up_to_date (DBConnection *db_con, const char *uri, guint32 *id)
-{
- TrackerDBResultSet *result_set;
- char *path, *name;
- gint32 index_time;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (tracker_check_uri (uri), FALSE);
-
- if (uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (uri);
- path = g_path_get_dirname (uri);
- } else {
- name = tracker_get_vfs_name (uri);
- path = tracker_get_vfs_path (uri);
- }
-
- result_set = tracker_exec_proc (db_con, "GetServiceID", path, name, NULL);
-
- g_free (path);
- g_free (name);
-
- index_time = 0;
- *id = 0;
-
- if (result_set) {
- tracker_db_result_set_get (result_set,
- 0, id,
- 1, &index_time,
- -1);
-
- g_object_unref (result_set);
- } else {
- return FALSE;
- }
-
- if (index_time < (gint32) tracker_get_file_mtime (uri)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-guint32
-tracker_db_get_file_id (DBConnection *db_con, const char *uri)
-{
- TrackerDBResultSet *result_set;
- char *path, *name;
- guint32 id;
-
- g_return_val_if_fail (db_con, 0);
- g_return_val_if_fail (uri, 0);
-
- if (uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (uri);
- path = g_path_get_dirname (uri);
- } else {
- name = tracker_get_vfs_name (uri);
- path = tracker_get_vfs_path (uri);
- }
-
- result_set = tracker_exec_proc (db_con->index, "GetServiceID", path, name, NULL);
-
- g_free (path);
- g_free (name);
-
- id = 0;
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &id, -1);
- g_object_unref (result_set);
- }
-
- return id;
-}
-
-
-FileInfo *
-tracker_db_get_file_info (DBConnection *db_con, FileInfo *info)
-{
- TrackerDBResultSet *result_set;
- gchar *path, *name;
-
- g_return_val_if_fail (db_con, info);
- g_return_val_if_fail (info, info);
-
- if (!tracker_process_files_is_file_info_valid (info)) {
- return NULL;
- }
-
- name = g_path_get_basename (info->uri);
- path = g_path_get_dirname (info->uri);
-
- //apath = tracker_escape_string (path);
- //aname = tracker_escape_string (name);
-
- result_set = tracker_exec_proc (db_con->index, "GetServiceID", path, name, NULL);
-
-// g_free (aname);
-// g_free (apath);
-
- g_free (name);
- g_free (path);
-
- if (result_set) {
- gint id, indextime, service_type_id;
- gboolean is_directory;
-
- tracker_db_result_set_get (result_set,
- 0, &id,
- 1, &indextime,
- 2, &is_directory,
- 3, &service_type_id,
- -1);
-
- if (id > 0) {
- info->file_id = id;
- info->is_new = FALSE;
- }
-
- info->indextime = indextime;
- info->is_directory = is_directory;
- info->service_type_id = service_type_id;
-
- g_object_unref (result_set);
- }
-
- return info;
-}
-
-
-
-static void
-add_embedded_keywords (DBConnection *db_con, const char *service, const char *file_id, const char *keyword_type, const char *keywords, GHashTable *table)
-{
- char **array;
-
- if (!service) {
- return;
- }
-
- array = g_strsplit_set (keywords, "\t\n\v\f\r !\"#$%&'()*/<=>?[\\]^`{|}~+,.:;@\"[]", -1);
-
- tracker_db_insert_embedded_metadata (db_con, service, file_id, keyword_type, array, -1, table);
-
- g_strfreev (array);
-}
-
-
-
-static void
-save_meta_table_data (gpointer mtype,
- gpointer value,
- gpointer user_data)
-{
- DatabaseAction *db_action;
-
- if (mtype == NULL || value == NULL) {
- return;
- }
-
- db_action = user_data;
-
- /* auto-tag keyword related metadata */
- if (tracker_db_metadata_is_child (db_action->db_con, mtype, "DC:Keywords")) {
-
- GSList *tmp;
- for (tmp = value; tmp; tmp = tmp->next) {
-
- if (tmp->data) {
- add_embedded_keywords (db_action->db_con, db_action->service, db_action->file_id, mtype, tmp->data, db_action->table);
- }
- }
-
- } else {
- gchar **array = tracker_gslist_to_string_list (value);
-
- tracker_db_insert_embedded_metadata (db_action->db_con, db_action->service, db_action->file_id, mtype, array, g_slist_length (value), db_action->table);
-
- g_strfreev (array);
- }
-
-}
-
-
-GHashTable *
-tracker_db_save_metadata (DBConnection *db_con, GHashTable *table, GHashTable *index_table, const char *service, guint32 file_id, gboolean new_file)
-{
- DatabaseAction db_action;
-
- g_return_val_if_fail (db_con, NULL);
- g_return_val_if_fail (table, NULL);
-
- if (file_id == 0) {
- return NULL;
- }
-
- db_action.db_con = db_con;
- db_action.table = index_table;
- db_action.file_id = tracker_uint_to_str (file_id);
- db_action.service = (char *) service;
-
- if (table) {
- g_hash_table_foreach (table, save_meta_table_data, &db_action);
- }
-
- g_free (db_action.file_id);
-
- return db_action.table;
-}
-
-
-void
-tracker_db_save_thumbs (DBConnection *db_con, const char *small_thumb, const char *large_thumb, guint32 file_id)
-{
- char *str_file_id;
-
- str_file_id = tracker_uint_to_str (file_id);
-
- g_return_if_fail (str_file_id);
-
- if (small_thumb) {
- char *small_thumb_file;
-
- small_thumb_file = tracker_escape_string (small_thumb);
-/* tracker_db_set_metadata (db_con, "Files", str_file_id, "File.SmallThumbnailPath", small_thumb_file, TRUE, FALSE, TRUE); */
-/* tracker_exec_proc (db_con, "SetMetadata", "Files", str_file_id, "File.SmallThumbnailPath", small_thumb_file, "1", NULL); */
- g_free (small_thumb_file);
- }
-
- if (large_thumb) {
- char *large_thumb_file;
-
- large_thumb_file = tracker_escape_string (large_thumb);
-/* tracker_db_set_metadata (db_con, "Files", str_file_id, "File.LargeThumbnailPath", large_thumb_file, TRUE, FALSE, TRUE); */
- g_free (large_thumb_file);
- }
-
- g_free (str_file_id);
-}
-
-
-char **
-tracker_db_get_files_in_folder (DBConnection *db_con, const char *folder_uri)
-{
- TrackerDBResultSet *result_set;
- GPtrArray *array;
-
- g_return_val_if_fail (db_con, NULL);
- g_return_val_if_fail (db_con->index, NULL);
- g_return_val_if_fail (folder_uri, NULL);
- g_return_val_if_fail (folder_uri[0] != '\0', NULL);
-
- result_set = tracker_exec_proc (db_con->index, "SelectFileChild", folder_uri, NULL);
- array = g_ptr_array_new ();
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *name, *prefix;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 1, &prefix,
- 2, &name,
- -1);
-
- g_ptr_array_add (array, g_build_filename (prefix, name, NULL));
-
- g_free (prefix);
- g_free (name);
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- g_ptr_array_add (array, NULL);
-
- return (gchar **) g_ptr_array_free (array, FALSE);
-}
-
-
-gboolean
-tracker_metadata_is_date (DBConnection *db_con, const char *meta)
-{
- FieldDef *def;
- gboolean res;
-
- def = tracker_db_get_field_def (db_con, meta);
-
- if (!def) {
- tracker_error ("ERROR: failed to get info for metadata type %s", meta);
- return FALSE;
- }
-
- g_return_val_if_fail (def, FALSE);
-
- res = (def->type == DATA_DATE);
-
- tracker_db_free_field_def (def);
-
- return res;
-}
-
-
-FileInfo *
-tracker_db_get_pending_file (DBConnection *db_con, const char *uri)
-{
- TrackerDBResultSet *result_set;
- FileInfo *info;
-
- info = NULL;
- result_set = tracker_exec_proc (db_con->cache, "SelectPendingByUri", uri, NULL);
-
- if (result_set) {
- gboolean is_directory, is_new, extract_embedded, extract_contents;
- gint counter, service_type_id;
- gchar *mimetype;
-
- tracker_db_result_set_get (result_set,
- 2, &counter,
- 3, &mimetype,
- 4, &is_directory,
- 5, &is_new,
- 6, &extract_embedded,
- 7, &extract_contents,
- 8, &service_type_id,
- -1);
-
- info = tracker_create_file_info (uri, counter, 0, 0);
- info->mime = mimetype;
- info->is_directory = is_directory;
- info->is_new = is_new;
- info->extract_embedded = extract_embedded;
- info->extract_contents = extract_contents;
- info->service_type_id = service_type_id;
-
- g_object_unref (result_set);
- }
-
- return info;
-}
-
-
-static void
-make_pending_file (DBConnection *db_con, guint32 file_id, const char *uri, const char *moved_to_uri, const char *mime, int counter, TrackerChangeAction action, gboolean is_directory, gboolean is_new, int service_type_id)
-{
- char *str_file_id, *str_action, *str_counter;
-
- g_return_if_fail (tracker_check_uri (uri));
-
- str_file_id = tracker_uint_to_str ( file_id);
- str_action = tracker_int_to_str (action);
- str_counter = tracker_int_to_str (counter);
-
- if (tracker->is_running) {
-
- gboolean move_file = (action == TRACKER_ACTION_FILE_MOVED_FROM || action == TRACKER_ACTION_DIRECTORY_MOVED_FROM);
-
- if (!move_file && ((counter > 0) || (g_async_queue_length (tracker->file_process_queue) > tracker->max_process_queue_size))) {
-
- /* tracker_log ("************ counter for pending file %s is %d ***********", uri, counter); */
- if (!mime) {
- tracker_db_insert_pending (db_con, str_file_id, str_action, str_counter, uri, "unknown", is_directory, is_new, service_type_id);
- } else {
- tracker_db_insert_pending (db_con, str_file_id, str_action, str_counter, uri, mime, is_directory, is_new, service_type_id);
- }
-
- } else {
-
- FileInfo *info;
-
- info = tracker_create_file_info (uri, action, 0, WATCH_OTHER);
-
- info->is_directory = is_directory;
- info->is_new = is_new;
-
- if (!mime) {
- info->mime = g_strdup ("unknown");
- } else {
- info->mime = g_strdup (mime);
- }
-
- if (action == TRACKER_ACTION_FILE_MOVED_FROM || action == TRACKER_ACTION_DIRECTORY_MOVED_FROM) {
- info->moved_to_uri = g_strdup (moved_to_uri);
- }
-
- if (action != TRACKER_ACTION_EXTRACT_METADATA) {
- g_async_queue_push (tracker->file_process_queue, info);
- } else {
- g_async_queue_push (tracker->file_metadata_queue, info);
- }
- }
-
- } else {
- g_free (str_file_id);
- g_free (str_action);
- g_free (str_counter);
- return;
- }
-
- /* tracker_log ("inserting pending file for %s with action %s", uri, tracker_actions[action]); */
-
- /* signal respective thread that data is available and awake it if its asleep */
- if (action == TRACKER_ACTION_EXTRACT_METADATA) {
- tracker_notify_meta_data_available ();
- } else {
- tracker_notify_file_data_available ();
- }
-
- g_free (str_file_id);
- g_free (str_action);
- g_free (str_counter);
-}
-
-
-void
-tracker_db_update_pending_file (DBConnection *db_con, const char *uri, int counter, TrackerChangeAction action)
-{
- char *str_counter, *str_action;
-
- g_return_if_fail (tracker_check_uri (uri));
-
- str_counter = tracker_int_to_str (counter);
- str_action = tracker_int_to_str (action);
-
- if (tracker->is_running) {
- tracker_db_update_pending (db_con, str_counter, str_action, uri);
- }
-
- g_free (str_counter);
- g_free (str_action);
-}
-
-
-void
-tracker_db_add_to_extract_queue (DBConnection *db_con, FileInfo *info)
-{
- int i;
-
- g_return_if_fail (info);
- g_return_if_fail (tracker_check_uri (info->uri));
-
- i = g_async_queue_length (tracker->file_metadata_queue);
-
- if (i < tracker->max_extract_queue_size) {
-
- /* inc ref count to prevent it being deleted */
- info = tracker_inc_info_ref (info);
-
- g_async_queue_push (tracker->file_metadata_queue, info);
-
- } else {
- tracker_db_insert_pending_file (db_con, info->file_id, info->uri, NULL, info->mime, 0, TRACKER_ACTION_EXTRACT_METADATA, info->is_directory, info->is_new, info->service_type_id);
- }
-
- tracker_notify_meta_data_available ();
-}
-
-static void
-refresh_file_change_queue (gpointer data, gpointer user_data)
-{
- FileChange *change = (FileChange*)data;
- int *current = (int *)user_data;
-
- if ((*current - change->first_change_time) > MAX_DURATION) {
- g_queue_remove_all (tracker->file_change_queue, data);
- free_file_change (&change);
- }
-}
-
-static gint
-uri_comp (gconstpointer a, gconstpointer b)
-{
- FileChange *change = (FileChange *)a;
- char *valuea = change->uri;
- char *valueb = (char *)b;
-
- return strcmp (valuea, valueb);
-}
-
-static gint
-file_change_sort_comp (gconstpointer a, gconstpointer b, gpointer user_data)
-{
- FileChange *changea, *changeb;
- changea = (FileChange *)a;
- changeb = (FileChange *)b;
-
- if ((changea->num_of_change - changeb->num_of_change) == 0) {
- return changea->first_change_time - changeb->first_change_time;
- } else {
- return changea->num_of_change - changeb->num_of_change;
- }
-}
-
-static void
-print_file_change_queue ()
-{
- GList *head, *l;
- FileChange *change;
- gint count;
-
- head = g_queue_peek_head_link (tracker->file_change_queue);
-
- tracker_log ("File Change queue is:");
- count = 1;
- for (l = g_list_first (head); l != NULL; l = g_list_next (l)) {
- change = (FileChange*)l->data;
- tracker_info ("%d\t%s\t%d\t%d",
- count++, change->uri,
- change->first_change_time,
- change->num_of_change);
- }
-
-}
-
-static void
-index_blacklist_file (char *uri)
-{
- FileInfo *info;
-
- info = tracker_create_file_info (uri, TRACKER_ACTION_FILE_CHECK, 0, WATCH_OTHER);
-
- info->is_directory = FALSE;
-
- info->is_new = FALSE;
-
- info->mime = g_strdup ("unknown");
-
- g_async_queue_push (tracker->file_process_queue, info);
-
- tracker_notify_file_data_available ();
-
-}
-
-
-static gboolean
-index_black_list ()
-{
- GSList *black_list;
-
- black_list = tracker_process_files_get_temp_black_list ();
- g_slist_foreach (black_list,
- (GFunc) index_blacklist_file,
- NULL);
-
- tracker_process_files_set_temp_black_list (NULL);
-
- tracker->black_list_timer_active = FALSE;
-
- return FALSE;
-
-}
-
-
-
-static gboolean
-check_uri_changed_frequently (const char *uri)
-{
- GList *find;
- FileChange *change;
- time_t current;
-
- if (!tracker->file_change_queue) {
- /* init queue */
- tracker->file_change_queue = g_queue_new ();
- }
-
- current = time (NULL);
-
- /* remove items which are very old */
- g_queue_foreach (tracker->file_change_queue,
- refresh_file_change_queue, &current);
-
- find = g_queue_find_custom (tracker->file_change_queue, uri, uri_comp);
- if (!find) {
- /* not found, add to in the queue */
-
- change = g_new0 (FileChange, 1);
- change->uri = g_strdup (uri);
- change->first_change_time = current;
- change->num_of_change = 1;
- if (g_queue_get_length (tracker->file_change_queue) == STACK_SIZE) {
- FileChange *tmp = (FileChange*) g_queue_pop_head (
- tracker->file_change_queue);
- free_file_change (&tmp);
- }
- g_queue_insert_sorted (tracker->file_change_queue, change,
- file_change_sort_comp, NULL);
- print_file_change_queue ();
- return FALSE;
- } else {
- change = (FileChange *) find->data;
- (change->num_of_change)++;
- g_queue_sort (tracker->file_change_queue,
- file_change_sort_comp, NULL);
- if (change->num_of_change < MAX_CHANGE_TIMES) {
- print_file_change_queue ();
- return FALSE;
- } else {
- print_file_change_queue ();
-
- /* add uri to blacklist */
-
- tracker_log ("blacklisting %s", change->uri);
-
- tracker_process_files_append_temp_black_list (change->uri);
-
- if (!tracker->black_list_timer_active) {
- tracker->black_list_timer_active = TRUE;
- g_timeout_add_seconds (BLACK_LIST_SECONDS, (GSourceFunc) index_black_list, NULL);
- }
-
- g_queue_remove_all (tracker->file_change_queue, change);
- free_file_change (&change);
-
- return TRUE;
- }
- }
-
-}
-
-void
-tracker_db_insert_pending_file (DBConnection *db_con, guint32 file_id, const char *uri, const char *moved_to_uri, const char *mime, int counter, TrackerChangeAction action, gboolean is_directory, gboolean is_new, int service_type_id)
-{
- FileInfo *info;
-
- g_return_if_fail (tracker_check_uri (uri));
-
- /* check if uri changed too frequently */
- if (((action == TRACKER_ACTION_CHECK) ||
- (action == TRACKER_ACTION_FILE_CHECK) || (action == TRACKER_ACTION_WRITABLE_FILE_CLOSED)) &&
- check_uri_changed_frequently (uri)) {
-
- return;
- }
-
-
- /* check if uri already has a pending action and update accordingly */
- info = tracker_db_get_pending_file (db_con, uri);
-
- if (info) {
- switch (action) {
-
- case TRACKER_ACTION_FILE_CHECK:
-
- /* update counter for any existing event in the file_scheduler */
-
- if ((info->action == TRACKER_ACTION_FILE_CHECK) ||
- (info->action == TRACKER_ACTION_FILE_CREATED) ||
- (info->action == TRACKER_ACTION_FILE_CHANGED)) {
-
- tracker_db_update_pending_file (db_con, uri, counter, action);
- }
-
- break;
-
- case TRACKER_ACTION_FILE_CHANGED:
-
- tracker_db_update_pending_file (db_con, uri, counter, action);
-
- break;
-
- case TRACKER_ACTION_WRITABLE_FILE_CLOSED:
-
- tracker_db_update_pending_file (db_con, uri, 0, action);
-
- break;
-
- case TRACKER_ACTION_FILE_DELETED:
- case TRACKER_ACTION_FILE_CREATED:
- case TRACKER_ACTION_DIRECTORY_DELETED:
- case TRACKER_ACTION_DIRECTORY_CREATED:
-
- /* overwrite any existing event in the file_scheduler */
- tracker_db_update_pending_file (db_con, uri, 0, action);
-
- break;
-
- case TRACKER_ACTION_EXTRACT_METADATA:
-
- /* we only want to continue extracting metadata if file is not being changed/deleted in any way */
- if (info->action == TRACKER_ACTION_FILE_CHECK) {
- tracker_db_update_pending_file (db_con, uri, 0, action);
- }
-
- break;
-
- default:
- break;
- }
-
- tracker_free_file_info (info);
-
- } else {
- make_pending_file (db_con, file_id, uri, moved_to_uri, mime, counter, action, is_directory, is_new, service_type_id);
- }
-}
-
-
-static void
-restore_backup_data (gpointer mtype,
- gpointer value,
- gpointer user_data)
-{
- DatabaseAction *db_action;
- gchar **string_list;
-
- if (mtype == NULL || value == NULL) {
- return;
- }
-
- db_action = user_data;
-
- string_list = tracker_gslist_to_string_list (value);
- tracker_log ("restoring keyword list with %d items", g_slist_length (value));
-
- tracker_db_set_metadata (db_action->db_con->index, db_action->service, db_action->file_id, mtype, string_list, g_slist_length (value), FALSE);
-
- g_strfreev (string_list);
-}
-
-
-
-void
-tracker_db_index_service (DBConnection *db_con, FileInfo *info, const char *service, GHashTable *meta_table, const char *attachment_uri, const char *attachment_service, gboolean get_embedded, gboolean get_full_text, gboolean get_thumbs)
-{
- char *str_file_id;
- const char *uri;
- GHashTable *index_table, *old_table;
-
- if (!service) {
- /* its an external service - TODO get external service name */
- if (service) {
- tracker_log ("External service %s not supported yet", service);
- } else {
- tracker_log ("External service not supported yet");
- }
- return;
- }
-
- if (!attachment_uri) {
- uri = info->uri;
- } else {
- uri = attachment_uri;
- }
-
- info->service_type_id = tracker_service_manager_get_id_for_service (service);
-
- if (info->service_type_id == -1) {
- tracker_log ("Service %s not supported yet", service);
- return;
- }
-
- if (info->mime == NULL) {
- info->mime = g_strdup("unknown");
- }
-
- if (info->is_new) {
- if (info->mime)
- tracker_info ("Indexing %s with service %s and mime %s (new)", uri, service, info->mime);
- else
- tracker_info ("Indexing %s with service %s (new)", uri, service);
- } else {
- if (info->mime)
- tracker_info ("Indexing %s with service %s and mime %s (existing)", uri, service, info->mime);
- else
- tracker_info ("Indexing %s with service %s (existing)", uri, service);
- }
-
-
-
- if (!info->is_new) {
- old_table = g_hash_table_new (g_str_hash, g_str_equal);
- } else {
- old_table = NULL;
- }
-
- index_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- /* get embedded metadata filter */
- if (get_embedded && meta_table) {
- tracker_metadata_get_embedded (info->uri, info->mime, meta_table);
- }
-
- if (info->is_new) {
-
- char *old_uri = info->uri;
- info->uri = (char *) uri;
-
- if (attachment_service) {
- info->file_id = tracker_db_create_service (db_con->index, attachment_service, info);
- } else {
- info->file_id = tracker_db_create_service (db_con->index, service, info);
- }
-
- info->uri = old_uri;
-
- if (info->file_id == 0) {
- tracker_error ("ERROR: could not get file id for %s - unable to continue indexing this file", uri);
- return;
- }
-
- if (info->service_type_id == -1) {
- tracker_error ("ERROR: unknown service type for %s with service %s and mime %s", uri, service, info->mime);
- }
- }
-
- str_file_id = tracker_uint_to_str (info->file_id);
-
- if (get_thumbs && tracker_config_get_enable_thumbnails (tracker->config)) {
- char *small_thumb_file = NULL;
-
- small_thumb_file = tracker_metadata_get_thumbnail (info->uri, info->mime, "normal");
-
- g_free (small_thumb_file);
-
- }
-
-
- if (!info->is_new) {
- /* get original text for the differential indexer */
- old_table = tracker_db_get_file_contents_words (db_con->blob, info->file_id, old_table);
- }
-
-
- if (get_full_text && tracker_config_get_enable_content_indexing (tracker->config)) {
- char *file_as_text;
-
- file_as_text = tracker_metadata_get_text_file (info->uri, info->mime);
-
- if (file_as_text) {
-
- tracker_db_save_file_contents (db_con, index_table, old_table, file_as_text, info);
-
- /* clear up if text contents are in a temp file */
- if (g_str_has_prefix (file_as_text, tracker->sys_tmp_root_dir)) {
- g_unlink (file_as_text);
- }
-
- g_free (file_as_text);
-
- } else {
- get_full_text = FALSE;
- }
-
- }
-
- if (attachment_service) {
- info->service_type_id = tracker_service_manager_get_id_for_service (attachment_service);
- }
-
- /* save stuff to Db */
-
-
-
- if (!info->is_new) {
-
- /* update existing file entry */
- tracker_db_update_file (db_con, info);
-
- /* get original embedded metadata for the differential indexer */
- old_table = tracker_db_get_indexable_content_words (db_con, info->file_id, old_table, TRUE);
-
- /* delete any exisitng embedded metadata */
- tracker_exec_proc (db_con, "DeleteEmbeddedServiceMetadata1", str_file_id, NULL);
- tracker_exec_proc (db_con, "DeleteEmbeddedServiceMetadata2", str_file_id, NULL);
- tracker_exec_proc (db_con, "DeleteEmbeddedServiceMetadata3", str_file_id, NULL);
-
- }
-
- if (meta_table && (g_hash_table_size (meta_table) > 0)) {
- tracker_db_save_metadata (db_con->index, meta_table, index_table, service, info->file_id, info->is_new);
- }
-
-
-
-
-
- /* update full text indexes */
- if (info->is_new) {
- tracker_db_update_indexes_for_new_service (info->file_id, info->service_type_id, index_table);
- } else {
- tracker_db_update_differential_index (db_con, old_table, index_table, str_file_id, info->service_type_id);
- }
-
- tracker_word_table_free (index_table);
- tracker_word_table_free (old_table);
-
-
- /* check for backup user defined metadata */
- if (info->is_new) {
- TrackerDBResultSet *result_set;
- char *name = tracker_get_vfs_name (info->uri);
- char *path = tracker_get_vfs_path (info->uri);
-
- result_set = tracker_exec_proc (db_con->common, "GetBackupMetadata", path, name, NULL);
-
- if (result_set) {
- gboolean valid = TRUE;
- GHashTable *meta_table;
- DatabaseAction db_action;
- gchar *key, *value;
-
- meta_table = g_hash_table_new_full (g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) free_metadata_list);
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &key,
- 1, &value,
- -1);
-
- tracker_log ("found backup metadata for %s\%s with key %s and value %s", path, name, key, value);
- tracker_add_metadata_to_table (meta_table, key, value);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
-
- db_action.db_con = db_con;
- db_action.file_id = str_file_id;
-
- if (attachment_service) {
- db_action.service = (char *) attachment_service;
- } else {
- db_action.service = (char *) service;
- }
-
- g_hash_table_foreach (meta_table, restore_backup_data, &db_action);
-
- g_hash_table_destroy (meta_table);
- }
-
- g_free (name);
- g_free (path);
- }
-
-
- g_free (str_file_id);
-}
-
-
-
-
-void
-tracker_db_index_master_files (DBConnection *db_con, const gchar *dirname, const gchar *basename, const gchar *filename)
-{
- GDir* dir = g_dir_open (dirname, 0, NULL);
-
- if (dir) {
-
- const gchar *curr_ext;
- const gchar *curr_filename;
-
- FileInfo *master_info;
- gchar *master_uri;
-
- while ((curr_filename = g_dir_read_name (dir)) != NULL) {
- curr_ext = strrchr (curr_filename, '.');
- if (!curr_ext) {
- curr_ext = &curr_filename[strlen (curr_filename)];
- }
-
- if (curr_ext+1 && strncmp (basename, curr_filename, curr_ext-curr_filename) == 0 &&
- strcmp (curr_ext+1, "xmp") != 0 &&
- !g_str_has_suffix (curr_ext+1, "~")) {
-
- tracker_debug ("master file, %s, about to be updated", curr_filename);
-
- master_uri = g_build_filename (dirname, curr_filename, NULL);
- master_info = tracker_create_file_info (master_uri, TRACKER_ACTION_FILE_CHANGED, 0, 0);
- master_info = tracker_db_get_file_info (db_con, master_info);
- g_free (master_uri);
-
- tracker_db_index_file (db_con, master_info, NULL, NULL);
- }
- }
-
- g_dir_close (dir);
- }
-}
-
-
-void
-tracker_db_index_file (DBConnection *db_con, FileInfo *info, const char *attachment_uri, const char *attachment_service)
-{
-
- GHashTable *meta_table;
- const char *ext;
- char *filename, *dirname;
- char *str_link_uri, *service_name;
- gboolean is_file_indexable, service_has_metadata, is_external_service, service_has_fulltext, service_has_thumbs, is_sidecar;
-
- const char *uri;
-
- if (!attachment_uri) {
- uri = info->uri;
- } else {
- uri = attachment_uri;
- }
-
- if (info->mime) {
- g_free (info->mime);
- }
-
- if (info->is_directory) {
- service_name = g_strdup ("Folders");
- info->mime = g_strdup ("Folder");
- info->file_size = 0;
- } else {
- info->mime = tracker_get_mime_type (info->uri);
-
- if (!info->mime) {
- info->mime = g_strdup ("unknown");
- }
-
- tracker_info ("mime is %s for %s", info->mime, info->uri);
-
- service_name = tracker_service_manager_get_service_type_for_mime (info->mime);
-
- }
-
- if (info->is_link) {
- str_link_uri = g_build_filename (info->link_path, info->link_name, NULL);
- } else {
- str_link_uri = NULL;
- }
-
- if (!info->is_hidden) {
-
- meta_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) free_metadata_list);
-
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:NameDelimited"), g_strdup (uri));
-
- dirname = g_path_get_dirname (uri);
- filename = g_path_get_basename (uri);
- ext = strrchr (filename, '.');
- if (ext) {
- ext++;
- tracker_debug ("file extension is %s", ext);
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Ext"), g_strdup (ext));
- is_sidecar = strcmp("xmp",ext) == 0;
- } else {
- is_sidecar = FALSE;
- }
-
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Path"), g_strdup (dirname));
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Name"), g_strdup (filename));
-
- if (str_link_uri) {
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Link"), str_link_uri);
- }
-
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Mime"), g_strdup (info->mime));
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Size"), tracker_uint_to_str (info->file_size));
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Modified"), tracker_date_to_str (info->mtime));
- tracker_add_metadata_to_table (meta_table, g_strdup ("File:Accessed"), tracker_date_to_str (info->atime));
-
- /* need to add special data for web history */
- if (attachment_service != NULL && strcmp(attachment_service,"WebHistory") == 0) {
-
- gchar* meta_file = g_strconcat(dirname,"/.",filename,NULL);
-
- FILE* fp = g_fopen(meta_file, "r");
-
- if (fp != NULL) {
- char buf[512];
-
- fgets(buf,512,fp); //get the first line, it is URL for this web history object
- tracker_debug("URL for this WebHistory is %s\n",buf);
- tracker_add_metadata_to_table (meta_table, g_strdup ("Doc:URL"), g_strdup(buf));
-
- fgets(buf,512,fp);
- fgets(buf,512,fp);
- fgets(buf,512,fp);
- fgets(buf,512,fp); // get the keywords for this file
-
- if (buf != NULL) {
-
- /* format like t:dc:keyword=xxx */
- gchar** keys = g_strsplit (buf,"=",0);
-
- if (keys != NULL && strcmp(keys[0],"t:dc:keyword") == 0 && keys[1]) {
-
- char *doc_keyword = g_strdup (keys[1]);
-
- tracker_debug("found keywords : %s\n",doc_keyword);
-
- tracker_add_metadata_to_table (meta_table, g_strdup ("Doc:Keywords"), doc_keyword);
- }
-
-
- if (keys) g_strfreev(keys);
-
-
- }
-
- fclose (fp);
- }
- g_free (meta_file);
- }
-
-
-
- is_external_service = g_str_has_prefix (info->mime, "service/");
- is_file_indexable = (!info->is_directory &&
- (strcmp (info->mime, "unknown") != 0) &&
- (strcmp (info->mime, "symlink") != 0) &&
- tracker_file_is_indexable (info->uri));
-
- service_has_metadata =
- (is_external_service ||
- (is_file_indexable &&
- tracker_service_manager_has_metadata (service_name))) &&
- !is_sidecar;
- service_has_fulltext =
- (is_external_service ||
- (is_file_indexable &&
- tracker_service_manager_has_text (service_name))) &&
- !is_sidecar;
- service_has_thumbs =
- (is_external_service ||
- (is_file_indexable &&
- tracker_service_manager_has_thumbnails (service_name)));
-
- #ifdef HAVE_EXEMPI
- if (!info->is_directory) {
- gchar *basename;
-
- if (ext) {
- basename = g_strndup (filename, (ext - filename -1));
- } else {
- basename = g_strdup (filename);
- }
-
- if (is_sidecar) {
- tracker_db_index_master_files (db_con, dirname, basename, filename);
- } else {
- gchar *sidecar_filename = g_strconcat (basename, ".xmp", NULL);
- gchar *sidecar_uri = g_build_filename (dirname, sidecar_filename, NULL);
-
- if (g_file_test (sidecar_uri, G_FILE_TEST_EXISTS)) {
- tracker_debug ("xmp sidecar found for %s", uri);
- tracker_metadata_get_embedded (sidecar_uri, XMP_MIME_TYPE, meta_table);
- }
-
- g_free (sidecar_filename);
- g_free (sidecar_uri);
- }
- g_free (basename);
- }
- #endif
-
- tracker_debug ("file %s has fulltext %d with service %s", info->uri, service_has_fulltext, service_name);
- tracker_db_index_service (db_con, info, service_name, meta_table, uri, attachment_service, service_has_metadata, service_has_fulltext, service_has_thumbs);
-
- g_hash_table_destroy (meta_table);
-
- g_free (filename);
- g_free (dirname);
- } else {
- tracker_db_index_service (db_con, info, service_name, NULL, uri, NULL, FALSE, FALSE, FALSE);
-
- }
-
- g_free (service_name);
-
- if (attachment_uri ) {
- tracker_unlink (info->uri);
- }
-
- tracker_dec_info_ref (info);
-}
-
-
-void
-tracker_db_index_conversation (DBConnection *db_con, FileInfo *info)
-{
- /* to do use offsets */
-
- tracker_db_index_file (db_con, info, NULL, "GaimConversations");
-}
-
-void
-tracker_db_index_webhistory(DBConnection *db_con, FileInfo *info)
-{
- tracker_db_index_file (db_con, info, NULL, "WebHistory");
-}
-
diff --git a/src/trackerd/tracker-db.h b/src/trackerd/tracker-db.h
deleted file mode 100644
index 26e0f0004..000000000
--- a/src/trackerd/tracker-db.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_DB_H_
-#define _TRACKER_DB_H_
-
-#include <glib.h>
-
-#include "tracker-utils.h"
-
-#include "config.h"
-
-#include "tracker-db-sqlite.h"
-
-gboolean tracker_db_is_file_up_to_date (DBConnection *db_con, const char *uri, guint32 *id);
-FileInfo * tracker_db_get_file_info (DBConnection *db_con, FileInfo *info);
-gboolean tracker_is_valid_service (DBConnection *db_con, const char *service);
-char * tracker_db_get_id (DBConnection *db_con, const char *service, const char *uri);
-GHashTable * tracker_db_save_metadata (DBConnection *db_con, GHashTable *table, GHashTable *index_table, const char *service, guint32 file_id, gboolean new_file);
-void tracker_db_save_thumbs (DBConnection *db_con, const char *small_thumb, const char *large_thumb, guint32 file_id);
-char ** tracker_db_get_files_in_folder (DBConnection *db_con, const char *folder_uri);
-FieldDef * tracker_db_get_field_def (DBConnection *db_con, const char *field_name);
-void tracker_db_free_field_def (FieldDef *def);
-gboolean tracker_metadata_is_date (DBConnection *db_con, const char *meta);
-FileInfo * tracker_db_get_pending_file (DBConnection *db_con, const char *uri);
-void tracker_db_update_pending_file (DBConnection *db_con, const char *uri, int counter, TrackerChangeAction action);
-void tracker_db_add_to_extract_queue (DBConnection *db_con, FileInfo *info);
-gboolean tracker_db_has_pending_files (DBConnection *db_con);
-gboolean tracker_db_has_pending_metadata (DBConnection *db_con);
-
-void tracker_db_index_service (DBConnection *db_con, FileInfo *info, const char *service, GHashTable *meta_table, const char *attachment_uri, const char *attachment_service,
- gboolean get_embedded, gboolean get_full_text, gboolean get_thumbs);
-
-void tracker_db_index_file (DBConnection *db_con, FileInfo *info, const char *attachment_uri, const char *attachment_service);
-void tracker_db_index_conversation (DBConnection *db_con, FileInfo *info);
-void tracker_db_index_application (DBConnection *db_con, FileInfo *info);
-void tracker_db_index_webhistory (DBConnection *db_con, FileInfo *info);
-
-#endif
diff --git a/src/trackerd/tracker-dbus-files.c b/src/trackerd/tracker-dbus-files.c
deleted file mode 100644
index 68a3f981e..000000000
--- a/src/trackerd/tracker-dbus-files.c
+++ /dev/null
@@ -1,1136 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#include <stdlib.h>
-#include <string.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-dbus-methods.h"
-#include "tracker-metadata.h"
-#include "tracker-dbus-files.h"
-#include "tracker-service-manager.h"
-
-void
-tracker_dbus_method_files_exists (DBusRec *rec)
-{
- DBusMessage *reply;
- DBConnection *db_con;
- DBusError dbus_error;
- char *uri;
- gboolean auto_create;
- gboolean file_valid;
- gboolean result;
- guint32 file_id;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Determines if the file is in tracker's database. The option auto_create if set to TRUE will register the file in the database if not already present -->
- <method name="Exists">
- <arg type="s" name="uri" direction="in" />
- <arg type="b" name="auto_create" direction="in" />
- <arg type="b" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_BOOLEAN, &auto_create,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
-
- if (!uri) {
- tracker_set_error (rec, "No file was specified");
- return;
- }
-
- file_id = tracker_db_get_file_id (db_con, uri);
- result = (file_id > 0);
-
- if (!result && auto_create) {
- char *str_file_id, *service;
- FileInfo *info;
-
- info = NULL;
- service = NULL;
- str_file_id = NULL;
-
- info = tracker_create_file_info (uri, 1, 0, 0);
-
- if (!tracker_file_is_valid (uri)) {
- file_valid = FALSE;
- info->mime = g_strdup ("unknown");
- service = g_strdup ("Files");
- } else {
- info->mime = tracker_get_mime_type (uri);
- service = tracker_service_manager_get_service_type_for_mime (info->mime);
- info = tracker_get_file_info (info);
- }
-
- file_id = tracker_db_create_service (db_con, "Files", info);
- tracker_free_file_info (info);
- g_free (service);
-
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_BOOLEAN, &result,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_create (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusMessage *reply;
- DBusError dbus_error;
- char *uri, *name, *path, *mime, *service, *str_mtime, *str_size, *str_file_id;
- gboolean is_dir;
- int size, mtime;
- guint32 file_id;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- searches specified service for entities that match the specified search_text.
- Returns id field of all hits. sort_by_relevance returns results sorted with the biggest hits first (as sorting is slower, you might want to disable this for fast queries) -->
- <method name="Create">
- <arg type="s" name="uri" direction="in" />
- <arg type="b" name="is_directory" direction="in" />
- <arg type="s" name="mime" direction="in" />
- <arg type="i" name="size" direction="in" />
- <arg type="i" name="mtime" direction="in" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_BOOLEAN, &is_dir,
- DBUS_TYPE_STRING, &mime,
- DBUS_TYPE_INT32, &size,
- DBUS_TYPE_INT32, &mtime,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (!uri) {
- tracker_set_error (rec, "No file was specified");
- return;
- }
-
-
- FileInfo *info;
-
- info = NULL;
- service = NULL;
- str_file_id = NULL;
-
- info = tracker_create_file_info (uri, 1, 0, 0);
-
- info->mime = g_strdup (mime);
- service = tracker_service_manager_get_service_type_for_mime (mime);
- info->is_directory = is_dir;
- info->file_size = size;
- info->mtime = mtime;
-
- str_mtime = tracker_int_to_str (mtime);
- str_size = tracker_int_to_str (size);
- name = NULL;
-
- if (info->uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (info->uri);
- path = g_path_get_dirname (info->uri);
- } else {
- name = tracker_get_vfs_name (info->uri);
- path = tracker_get_vfs_path (info->uri);
- }
-
-
- file_id = tracker_db_create_service (db_con, service, info);
- tracker_free_file_info (info);
- str_file_id = tracker_uint_to_str (file_id);
-
- if (file_id != 0) {
- tracker_db_set_single_metadata (db_con, service, str_file_id, "File:Modified", str_mtime, FALSE);
- tracker_db_set_single_metadata (db_con, service, str_file_id, "File:Size", str_size, FALSE);
- tracker_db_set_single_metadata (db_con, service, str_file_id, "File:Name", name, FALSE);
- tracker_db_set_single_metadata (db_con, service, str_file_id, "File:Path", path, FALSE);
- tracker_db_set_single_metadata (db_con, service, str_file_id, "File:Format", mime, FALSE);
- tracker_notify_file_data_available ();
- }
-
- g_free (service);
- g_free (str_mtime);
- g_free (str_size);
- g_free (name);
- g_free (path);
- g_free (str_file_id);
-
- reply = dbus_message_new_method_return (rec->message);
- dbus_message_append_args (reply, DBUS_TYPE_INVALID);
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-
-}
-
-
-void
-tracker_dbus_method_files_delete (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusMessage *reply;
- DBusError dbus_error;
- char *uri, *name, *path, *str_file_id;
- guint32 file_id;
- gboolean is_dir;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Removes the file entry from tracker's database-->
- <method name="Delete">
- <arg type="s" name="uri" direction="in" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (!uri) {
- tracker_set_error (rec, "No file was specified");
- return;
- }
-
- if (uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (uri);
- path = g_path_get_dirname (uri);
- } else {
- name = tracker_get_vfs_name (uri);
- path = tracker_get_vfs_path (uri);
- }
-
- file_id = tracker_db_get_file_id (db_con, uri);
- str_file_id = tracker_uint_to_str (file_id);
- is_dir = FALSE;
-
- result_set = tracker_exec_proc (db_con, "GetServiceID", path, name, NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 2, &is_dir, -1);
- g_object_unref (result_set);
- }
-
- if (file_id != 0) {
- if (is_dir) {
- tracker_db_insert_pending_file (db_con, file_id, uri, NULL, g_strdup ("unknown"), 0, TRACKER_ACTION_DIRECTORY_DELETED, TRUE, FALSE, -1);
- } else {
- tracker_db_insert_pending_file (db_con, file_id, uri, NULL, g_strdup ("unknown"), 0, TRACKER_ACTION_FILE_DELETED, FALSE, FALSE, -1);
- }
- }
-
- g_free (name);
- g_free (path);
- g_free (str_file_id);
-
- reply = dbus_message_new_method_return (rec->message);
- dbus_message_append_args (reply, DBUS_TYPE_INVALID);
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_get_service_type (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *uri, *str_id, *mime, *result;
- guint32 file_id;
-
-/*
- <!-- Get the Service subtype for the file -->
- <method name="GetServiceType">
- <arg type="s" name="uri" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (!uri) {
- tracker_set_error (rec, "No file was specified");
- return;
- }
-
- file_id = tracker_db_get_file_id (db_con, uri);
-
- if (file_id < 1) {
- tracker_set_error (rec, "File %s was not found in Tracker's database", uri);
- return;
- }
-
- str_id = tracker_uint_to_str (file_id);
-
- mime = tracker_get_metadata (db_con, "Files", str_id, "File:Mime");
-
- result = tracker_service_manager_get_service_type_for_mime (mime);
-
- tracker_log ("Info for file %s is : id=%u, mime=%s, service=%s", uri, file_id, mime, result);
-
- g_free (mime);
-
- g_free (str_id);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &result,
- DBUS_TYPE_INVALID);
-
- g_free (result);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_get_text_contents (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- char *uri, *service_id;
- int offset, max_length;
- char *str_offset, *str_max_length;
-
-/*
- <!-- Get the "File.Content" field for a file and allows you to specify the offset and amount of text to retrieve -->
- <method name="GetTextContents">
- <arg type="s" name="uri" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_length" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &max_length,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (!uri) {
- tracker_set_error (rec, "No uri was specified");
- return;
- }
-
- if (offset < 0) {
- tracker_set_error (rec, "Offset must be positive");
- return;
- }
-
- if (max_length < 0) {
- tracker_set_error (rec, "Length of content must be positive");
- return;
- }
-
-
- service_id = tracker_db_get_id (db_con, "Files", uri);
-
- if (!service_id) {
- service_id = tracker_db_get_id (db_con, "Emails", uri);
- }
-
- if (!service_id) {
- g_free (service_id);
- tracker_set_error (rec, "Unable to retrieve serviceID for uri %s", uri);
- return;
- }
-
- str_offset = tracker_int_to_str (offset);
- str_max_length = tracker_int_to_str (max_length);
- result_set = tracker_exec_proc (db_con->blob, "GetFileContents",
- str_offset, str_max_length, service_id, NULL);
- g_free (str_offset);
- g_free (str_max_length);
- g_free (service_id);
-
- const gchar *txt;
-
- if (result_set) {
- DBusMessage *reply;
-
- tracker_db_result_set_get (result_set, 0, &txt, -1);
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &txt,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
- g_object_unref (result_set);
- } else {
- tracker_set_error (rec, "Contents of the URI not stored");
- }
-}
-
-
-void
-tracker_dbus_method_files_search_text_contents (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- char *uri, *text;
- int max_length;
-
-/*
- <!-- Retrieves a chunk of matching text of specified length that contains the search text in the File.Content field -->
- <method name="SearchTextContents">
- <arg type="s" name="uri" direction="in" />
- <arg type="s" name="text" direction="in" />
- <arg type="i" name="length" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- tracker_set_error (rec, "Method not implemented yet");
- return;
-
- /* ******************************************************************** */
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_STRING, &text,
- DBUS_TYPE_INT32, &max_length,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (uri) {
- TrackerDBResultSet *result_set = NULL;
- char *path, *name, *str_max_length;
-
-
- if (uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (uri);
- path = g_path_get_dirname (uri);
- } else {
- name = tracker_get_vfs_name (uri);
- path = tracker_get_vfs_path (uri);
- }
-
- str_max_length = tracker_int_to_str (max_length);
-
- //tracker_exec_proc (db_con, "SearchFileContents", 4, path, name, text, str_max_length);
-
- g_free (str_max_length);
- g_free (path);
- g_free (name);
-
- if (result_set) {
- char *result;
-
- tracker_db_result_set_get (result_set, 0, &result, -1);
-
- if (result) {
- DBusMessage *reply;
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &result,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
- g_free (result);
- }
-
- g_object_unref (result_set);
- }
- }
-}
-
-
-void
-tracker_dbus_method_files_get_mtime (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- char *uri;
-
-/*
- <!-- returns mtime of file in seconds since epoch -->
- <method name="GetMTime">
- <arg type="s" name="uri" direction="in" />
- <arg type="i" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (uri) {
- TrackerDBResultSet *result_set;
- char *path, *name;
-
- if (uri[0] == G_DIR_SEPARATOR) {
- name = g_path_get_basename (uri);
- path = g_path_get_dirname (uri);
- } else {
- name = tracker_get_vfs_name (uri);
- path = tracker_get_vfs_path (uri);
- }
-
- result_set = tracker_exec_proc (db_con, "GetFileMTime", path, name, NULL);
-
- g_free (path);
- g_free (name);
-
- if (result_set) {
- DBusMessage *reply;
- int result;
-
- tracker_db_result_set_get (result_set, 0, &result, -1);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_INT32, &result,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-
- g_object_unref (result_set);
- }
- }
-}
-
-
-void
-tracker_dbus_method_files_get_by_service_type (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- int query_id, limit, offset, row_count;
- char *service;
- char **array;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!--
- Retrieves all files that match a service description
- -->
- <method name="GetByServiceType">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="file_service" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
-
- result_set = tracker_db_get_files_by_service (db_con, service, offset, limit);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_get_by_mime_type (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- int query_id, n, offset, limit, row_count;
- char **array, **mimes;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Retrieves all non-vfs files of the specified mime type(s) -->
- <method name="GetByMimeType">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="as" name="mime_types" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &mimes, &n,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- if (n < 1) {
- tracker_set_error (rec, "No mimes specified");
- return;
- }
-
- result_set = tracker_db_get_files_by_mime (db_con, mimes, n, offset, limit, FALSE);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_get_by_mime_type_vfs (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- int query_id, n, offset, limit, row_count;
- char **array, **mimes;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Retrieves all vfs files of the specified mime type(s) -->
- <method name="GetByMimeTypeVfs">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="as" name="mime_types" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &mimes, &n,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- result_set = tracker_db_get_files_by_mime (db_con, mimes, n, offset, limit, TRUE);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_get_metadata_for_files_in_folder (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- int i, query_id, folder_name_len, file_id, n;
- char *tmp_folder, *folder, *str;
- char **array;
- GString *sql;
- FieldDef *defs[255];
- gboolean needs_join[255];
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Retrieves all non-vfs files in a folder complete with all requested metadata fields. An array of stringarrays is outpout with uri and field metadata as part of the array -->
- <method name="GetMetadataForFilesInFolder">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="uri" direction="in" />
- <arg type="as" name="fields" direction="in" />
- <arg type="aas" name="values" direction="out" />
- </method>
-*/
-
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &tmp_folder,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, &n,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
-
- for (i = 0; i < n; i++) {
- defs[i] = tracker_db_get_field_def (db_con, array[i]);
-
- if (!defs[i]) {
- tracker_set_error(rec, "Error: Metadata field %s was not found", array[i]);
- dbus_error_free(&dbus_error);
- }
-
- }
-
-
- folder_name_len = strlen (tmp_folder);
-
- folder_name_len--;
-
- if (folder_name_len != 0 && tmp_folder[folder_name_len] == G_DIR_SEPARATOR) {
- /* remove trailing 'G_DIR_SEPARATOR' */
- folder = g_strndup (tmp_folder, folder_name_len);
- } else {
- folder = g_strdup (tmp_folder);
- }
-
- file_id = tracker_get_file_id (db_con, folder, FALSE);
-
- if (file_id == 0) {
- tracker_set_error (rec, "Cannot find folder %s in Tracker database", folder);
- return;
- }
-
- /* build SELECT clause */
- sql = g_string_new (" SELECT (F.Path || ");
-
- g_string_append_printf (sql, "'%s' || F.Name) as PathName ", G_DIR_SEPARATOR_S);
-
- for (i = 1; i <= n; i++) {
-
- char *my_field = tracker_db_get_field_name ("Files", array[i-1]);
-
- if (my_field) {
- g_string_append_printf (sql, ", F.%s ", my_field);
- g_free (my_field);
- needs_join[i-1] = FALSE;
- } else {
- char *disp_field = tracker_db_get_display_field (defs[i]);
- g_string_append_printf (sql, ", M%d.%s ", i, disp_field);
- g_free (disp_field);
- needs_join[i-1] = TRUE;
- }
- }
-
-
- /* build FROM clause */
- g_string_append (sql, " FROM Services F ");
-
- for (i = 0; i < n; i++) {
-
- char *table;
-
- if (!needs_join[i]) {
- continue;
- }
-
- table = tracker_get_metadata_table (defs[i]->type);
-
- g_string_append_printf (sql, " LEFT OUTER JOIN %s M%d ON F.ID = M%d.ServiceID AND M%d.MetaDataID = %s ", table, i+1, i+1, i+1, defs[i]->id);
-
- g_free (table);
-
- }
-
- dbus_free_string_array(array);
-
- /* build WHERE clause */
-
- g_string_append_printf (sql, " WHERE F.Path = '%s' ", folder);
-
- str = g_string_free (sql, FALSE);
-
- tracker_debug (str);
-
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, str);
-
- g_free (str);
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- g_object_unref (result_set);
-}
-
-
-void
-tracker_dbus_method_files_search_by_text_mime (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *str;
- char **array;
- int n, row_count;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, &n,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- result_set = tracker_db_search_text_mime (db_con, str, array);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *prefix, *name;
- gint i = 0;
-
- row_count = tracker_db_result_set_get_n_rows (result_set);
- array = g_new (gchar *, row_count);
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &prefix,
- 1, &name,
- -1);
-
- array[i] = g_build_filename (prefix, name, NULL);
- valid = tracker_db_result_set_iter_next (result_set);
- i++;
-
- g_free (prefix);
- g_free (name);
- }
-
- g_object_unref (result_set);
- } else {
- array = g_new (char *, 1);
-
- array[0] = NULL;
- }
-
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_search_by_text_location (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *str, *location;
- char **array;
- int row_count;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_STRING, &location,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- result_set = tracker_db_search_text_location (db_con, str, location);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *prefix, *name;
- gint i = 0;
-
- row_count = tracker_db_result_set_get_n_rows (result_set);
- array = g_new (char *, row_count);
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &prefix,
- 1, &name,
- -1);
-
- array[i] = g_build_filename (prefix, name, NULL);
- valid = tracker_db_result_set_iter_next (result_set);
- i++;
-
- g_free (prefix);
- g_free (name);
- }
-
- g_object_unref (result_set);
- } else {
- array = g_new (char *, 1);
-
- array[0] = NULL;
- }
-
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_files_search_by_text_mime_location (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *str, *location;
- char **array;
- int n, row_count;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, &dbus_error,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, &n,
- DBUS_TYPE_STRING, &location,
- DBUS_TYPE_INVALID)) {
- tracker_set_error(rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
- return;
- }
-
- result_set = tracker_db_search_text_mime_location (db_con, str, array, location);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *prefix, *name;
- gint i = 0;
-
- row_count = tracker_db_result_set_get_n_rows (result_set);
- array = g_new (char *, row_count);
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &prefix,
- 1, &name,
- -1);
-
- array[i] = g_build_filename (prefix, name, NULL);
- valid = tracker_db_result_set_iter_next (result_set);
- i++;
-
- g_free (prefix);
- g_free (name);
- }
-
- g_object_unref (result_set);
- } else {
- array = g_new (char *, 1);
-
- array[0] = NULL;
- }
-
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
diff --git a/src/trackerd/tracker-dbus-files.h b/src/trackerd/tracker-dbus-files.h
deleted file mode 100644
index 0358aae41..000000000
--- a/src/trackerd/tracker-dbus-files.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_DBUS_FILES_H_
-#define _TRACKER_DBUS_FILES_H_
-
-#include "tracker-dbus.h"
-
-void tracker_dbus_method_files_exists (DBusRec *rec);
-void tracker_dbus_method_files_create (DBusRec *rec);
-void tracker_dbus_method_files_delete (DBusRec *rec);
-void tracker_dbus_method_files_get_service_type (DBusRec *rec);
-void tracker_dbus_method_files_get_text_contents (DBusRec *rec);
-void tracker_dbus_method_files_search_text_contents (DBusRec *rec);
-void tracker_dbus_method_files_get_mtime (DBusRec *rec);
-void tracker_dbus_method_files_get_by_service_type (DBusRec *rec);
-void tracker_dbus_method_files_get_by_mime_type (DBusRec *rec);
-void tracker_dbus_method_files_get_by_mime_type_vfs (DBusRec *rec);
-
-void tracker_dbus_method_files_get_metadata_for_files_in_folder (DBusRec *rec);
-void tracker_dbus_method_files_search_by_text_mime (DBusRec *rec);
-void tracker_dbus_method_files_search_by_text_location (DBusRec *rec);
-void tracker_dbus_method_files_search_by_text_mime_location (DBusRec *rec);
-
-#endif
diff --git a/src/trackerd/tracker-dbus-keywords.c b/src/trackerd/tracker-dbus-keywords.c
deleted file mode 100644
index 4d752d5b3..000000000
--- a/src/trackerd/tracker-dbus-keywords.c
+++ /dev/null
@@ -1,659 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-dbus-methods.h"
-#include "tracker-dbus-keywords.h"
-
-extern Tracker *tracker;
-
-/*
-static void
-update_keywords_metadata (DBConnection *db_con, const char* service, const char *path, const char *name)
-{
- char ***res;
- char *tmp;
- char *id;
- char *keywords;
-
- tmp = g_build_filename (path, name, NULL);
- id = tracker_db_get_id (db_con, service, tmp);
-
- g_free (tmp);
-
- if (!id) {
- return;
- }
-
- res = tracker_exec_proc (db_con, "GetKeywords", 2, path, name);
-
- if (res) {
- GString *words;
- char **row;
- int i;
-
- words = g_string_new (" ");
- i = 0;
-
- while ((row = tracker_db_get_row (res, i))) {
- if (row[0]) {
-
- if (i != 0) {
- words = g_string_append (words, ",");
- }
-
- words = g_string_append (words, row[0]);
- i++;
- }
- }
-
- tracker_db_free_result (res);
-
- keywords = g_string_free (words, FALSE);
-
-
- tracker_db_update_keywords (db_con, service, id, keywords);
-
- g_free (keywords);
-
- } else {
- tracker_db_update_keywords (db_con, service, id, " ");
- }
-
- g_free (id);
-}
-*/
-
-void
-tracker_dbus_signal_keywords_added (const char *service, const char *uri, const char *keyword)
-{
- DBusMessage *msg;
- dbus_uint32_t serial = 0;
-
- msg = dbus_message_new_signal (TRACKER_OBJECT,
- TRACKER_INTERFACE_KEYWORDS,
- TRACKER_SIGNAL_KEYWORD_ADDED);
-
- if (!msg || !tracker->dbus_con) {
- return;
- }
-
- /*
-
- <signal name="KeywordAdded">
- <arg type="s" name="service"/>
- <arg type="s" name="uri" />
- <arg type="s" name="keyword" />
- </signal>
- */
-
- dbus_message_append_args (msg,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_STRING, &keyword,
- DBUS_TYPE_INVALID);
-
- dbus_message_set_no_reply (msg, TRUE);
-
- if (!dbus_connection_send (tracker->dbus_con, msg, &serial)) {
- tracker_error ("Raising the keyword added signal failed");
- return;
- }
-
- dbus_connection_flush (tracker->dbus_con);
-
- dbus_message_unref (msg);
-
-
-}
-
-
-void
-tracker_dbus_signal_keywords_removed (const char *service, const char *uri, const char *keyword)
-{
- DBusMessage *msg;
- dbus_uint32_t serial = 0;
-
- msg = dbus_message_new_signal (TRACKER_OBJECT,
- TRACKER_INTERFACE_KEYWORDS,
- TRACKER_SIGNAL_KEYWORD_REMOVED);
-
- if (!msg || !tracker->dbus_con) {
- return;
- }
-
- /*
-
- <signal name="KeywordRemoved">
- <arg type="s" name="service"/>
- <arg type="s" name="uri" />
- <arg type="s" name="keyword" />
- </signal>
- */
-
- dbus_message_append_args (msg,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_STRING, &keyword,
- DBUS_TYPE_INVALID);
-
- dbus_message_set_no_reply (msg, TRUE);
-
- if (!dbus_connection_send (tracker->dbus_con, msg, &serial)) {
- tracker_error ("Raising the keyword removed signal failed");
- return;
- }
-
- dbus_connection_flush (tracker->dbus_con);
-
- dbus_message_unref (msg);
-
-
-}
-
-
-
-void
-tracker_dbus_method_keywords_get_list (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- char *service;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- gets a list of all unique keywords/tags that are in use by the specified service irrespective of the uri or id of the entity
- Returns an array of string arrays with the keyword and the total usage count of the keyword as the string array
- -->
- <method name="GetList">
- <arg type="s" name="service" direction="in" />
- <arg type="aas" name="value" direction="out" />
- </method>
-
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- result_set = tracker_db_get_keyword_list (db_con, service);
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- g_object_unref (result_set);
-}
-
-
-void
-tracker_dbus_method_keywords_get (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *id, *uri, *service;
- char **array;
- int row_count;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- gets all unique keywords/tags for specified service and id -->
- <method name="Get">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="value" direction="out" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (uri)) {
- tracker_set_error (rec, "Uri is invalid");
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- id = tracker_db_get_id (db_con, service, uri);
-
- if (!id) {
- tracker_set_error (rec, "[keywords_get] Entity %s not found in database", uri);
- return;
- }
-
-
-
- result_set = tracker_db_get_metadata (db_con, service, id, "User:Keywords");
-
- g_free (id);
-
- row_count = 0;
- array = NULL;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_keywords_add (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *id, *uri, *service;
- char **array = NULL;
- int row_count = 0;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Adds new keywords/tags for specified service and id -->
- <method name="Add">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="values" direction="in" />
- </method>
-*/
-
- dbus_error_init (&dbus_error);
-
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, &row_count,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (uri)) {
- tracker_set_error (rec, "URI is invalid");
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
- id = tracker_db_get_id (db_con, service, uri);
-
- if (!id) {
- tracker_set_error (rec, "Entity %s not found in database", uri);
- return;
- }
-
-
- if (array && (row_count > 0)) {
- tracker_db_set_metadata (db_con, service, id, "User:Keywords", array, row_count, TRUE);
- tracker_notify_file_data_available ();
-
- int i;
- for (i=0; i<row_count; i++) {
- tracker_dbus_signal_keywords_added (service, uri, array[i]);
- tracker_log ("adding keyword %s to %s", array[i], uri);
- }
- }
-
- dbus_free_string_array (array);
-
- g_free (id);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_keywords_remove (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *id, *uri, *service;
- char **array;
- int row_count = 0;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- array = NULL;
-
-/*
- <!-- removes all specified keywords/tags for specified service and id -->
- <method name="Remove">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="keywords" direction="in" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, &row_count,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (uri)) {
- tracker_set_error (rec, "ID is invalid");
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- id = tracker_db_get_id (db_con, service, uri);
-
- if (!id) {
- tracker_set_error (rec, "Entity %s not found in database", uri);
- return;
- }
-
- if (array && (row_count > 0)) {
- int i;
-
- for (i = 0; i < row_count; i++) {
- if (array[i]) {
- tracker_log ("deleting keyword %s from %s with ID %s", array[i], uri, id);
- tracker_db_delete_metadata_value (db_con, service, id, "User:Keywords", array[i]);
- tracker_notify_file_data_available ();
- tracker_dbus_signal_keywords_removed (service, uri, array[i]);
- }
- }
- }
-
- dbus_free_string_array (array);
-
- g_free (id);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_keywords_remove_all (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *id, *uri, *service;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
-
- <!-- removes all keywords/tags for specified service and id -->
- <method name="RemoveAll">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (uri)) {
- tracker_set_error (rec, "URI is invalid");
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
- id = tracker_db_get_id (db_con, service, uri);
-
- if (!id) {
- tracker_set_error (rec, "Entity %s not found in database", uri);
- return;
- }
-
- tracker_db_delete_metadata (db_con, service, id, "User:Keywords", TRUE);
- tracker_notify_file_data_available ();
-
- g_free (id);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_keywords_search (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *service;
- char **array;
- int row_count, limit, query_id, offset;
- GString *str_words, *str_select, *str_where;
- char *query_sel, *query_where, *query;
- int i;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- searches specified service for matching keyword/tag and returns an array of matching id values for the service-->
- <method name="Search">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="as" name="keywords" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init(&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, &row_count,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (offset < 0) {
- offset = 0;
- }
-
- if (row_count < 1) {
-
- tracker_set_error (rec, "No keywords supplied");
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- str_words = g_string_new ("");
- g_string_append_printf (str_words, "'%s'", array[0]);
-
- for (i = 1; i < row_count; i++) {
- g_string_append_printf (str_words, ", '%s'", array[i]);
- }
-
- tracker_log ("executing keyword search on %s", str_words->str);
-
- str_select = g_string_new (" Select distinct S.Path || '");
-
- str_select = g_string_append (str_select, G_DIR_SEPARATOR_S);
-
- str_select = g_string_append (str_select, "' || S.Name as EntityName from Services S, ServiceKeywordMetaData M ");
-
- char *related_metadata = tracker_get_related_metadata_names (db_con, "User:Keywords");
-
- str_where = g_string_new ("");
-
- g_string_append_printf (str_where, " where S.ID = M.ServiceID and M.MetaDataID in (%s) and M.MetaDataValue in (%s) ", related_metadata, str_words->str);
-
- g_free (related_metadata);
-
- g_string_free (str_words, TRUE);
-
- gint smin, smax;
- char *str_min, *str_max;
-
- smin = tracker_service_manager_get_id_for_service (service);
-
- if (smin == 0) {
- smax = 8;
- } else {
- smax = smin;
- }
-
- str_min = tracker_int_to_str (smin);
- str_max = tracker_int_to_str (smax);
-
-
- g_string_append_printf (str_where, " and (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) ", service, service);
-
-
- g_free (str_min);
- g_free (str_max);
-
- g_string_append_printf (str_where, " Limit %d,%d", offset, limit);
-
-
- query_sel = g_string_free (str_select, FALSE);
- query_where = g_string_free (str_where, FALSE);
- query = g_strconcat (query_sel, query_where, NULL);
-
- tracker_log (query);
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, query);
-
- g_free (query_sel);
- g_free (query_where);
- g_free (query);
-
- dbus_free_string_array (array);
- row_count = 0;
- array = NULL;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
diff --git a/src/trackerd/tracker-dbus-keywords.h b/src/trackerd/tracker-dbus-keywords.h
deleted file mode 100644
index a59999f71..000000000
--- a/src/trackerd/tracker-dbus-keywords.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_DBUS_KEYWORDS_H_
-#define _TRACKER_DBUS_KEYWORDS_H_
-
-#include "tracker-dbus.h"
-
-void tracker_dbus_method_keywords_get_list (DBusRec *rec);
-void tracker_dbus_method_keywords_get (DBusRec *rec);
-void tracker_dbus_method_keywords_add (DBusRec *rec);
-void tracker_dbus_method_keywords_remove (DBusRec *rec);
-void tracker_dbus_method_keywords_remove_all (DBusRec *rec);
-void tracker_dbus_method_keywords_search (DBusRec *rec);
-
-#endif
diff --git a/src/trackerd/tracker-dbus-metadata.c b/src/trackerd/tracker-dbus-metadata.c
deleted file mode 100644
index 8c8e54f09..000000000
--- a/src/trackerd/tracker-dbus-metadata.c
+++ /dev/null
@@ -1,766 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-dbus-methods.h"
-#include "tracker-dbus-metadata.h"
-
-void
-tracker_dbus_method_metadata_set (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- int i, key_count, value_count;
- char *uri, *service, *id;
- char **keys, **values;
- gboolean is_local_file;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <method name="Set">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="keys" direction="in" />
- <arg type="as" name="values" direction="in" />
- </method>
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &keys, &key_count,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &values, &value_count,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- if (tracker_is_empty_string (uri)) {
- tracker_set_error (rec, "ID is invalid");
- return;
- }
-
- if (key_count == 0 || value_count == 0) {
- tracker_set_error (rec, "No metadata types or metadata values specified");
- return;
- }
-
- if (key_count != value_count ) {
- tracker_set_error (rec, "The number of specified keys does not match the supplied values");
- return;
- }
-
- id = tracker_db_get_id (db_con, service, uri);
-
- if (!id) {
- tracker_set_error (rec, "Entity with ID %s not found in database", uri);
- return;
- }
-
-
-
- is_local_file = (uri[0] == G_DIR_SEPARATOR);
-
- for (i = 0; i < key_count; i++) {
- char *meta, *value;
-
- meta = keys[i];
- value = values[i];
-
- if (!meta || strlen (meta) < 3 || (strchr (meta, ':') == NULL) ) {
- tracker_set_error (rec, "Metadata type name %s is invalid. All names must be registered in tracker", meta);
- g_free (id);
- return;
- }
-
- tracker_db_set_single_metadata (db_con, service, id, meta, value, TRUE);
- tracker_notify_file_data_available ();
- }
-
- g_free (id);
- dbus_free_string_array (keys);
- dbus_free_string_array (values);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-#include "tracker-rdf-query.h"
-
-
-void
-tracker_dbus_method_metadata_get (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- int i, key_count, row_count;
- char **keys, **array;
- char *uri, *id, *str, *service, *res_service;
- GString *sql, *sql_join;
-
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- /* <method name="Get">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="as" name="keys" direction="in" />
- <arg type="as" name="values" direction="out" />
- </method>
- */
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &keys, &key_count,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (key_count == 0) {
- tracker_set_error (rec, "No Metadata was specified");
- return;
- }
-
-
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- id = tracker_db_get_id (db_con, service, uri);
-
- if (!id) {
- tracker_set_error (rec, "Entity with ID %s and service %s was not found in database", uri, service);
- return;
- }
-
-
- res_service = tracker_db_get_service_for_entity (db_con, id);
-
- if (!res_service) {
- tracker_set_error (rec, "Service info cannot be found for entity %s", uri);
- return;
- }
-
- /* build SELECT clause */
- sql = g_string_new (" SELECT DISTINCT ");
-
- sql_join = g_string_new (" FROM Services S ");
-
-
- for (i = 0; i < key_count; i++) {
-
- FieldData *field = tracker_db_get_metadata_field (db_con, res_service, keys[i], i, TRUE, FALSE);
-
- if (!field) {
- tracker_set_error (rec, "Invalid or non-existant metadata type %s was specified", keys[i]);
- g_string_free (sql, TRUE);
- return;
-
- }
-
- if (i==0) {
- g_string_append_printf (sql, " %s", field->select_field);
- } else {
- g_string_append_printf (sql, ", %s", field->select_field);
- }
- if (field->needs_join) {
- g_string_append_printf (sql_join, "\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ", field->table_name, field->alias, field->alias, field->alias, field->id_field);
- }
-
- tracker_free_metadata_field (field);
- }
-
- g_string_append (sql, sql_join->str);
-
- g_string_free (sql_join, TRUE);
-
- dbus_free_string_array (keys);
- g_free (res_service);
-
- /* build WHERE clause */
-
- g_string_append_printf (sql, " WHERE S.ID = %s", id );
-
- str = g_string_free (sql, FALSE);
-
- tracker_log (str);
-
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, str);
-
- g_free (str);
- g_free (id);
-
-
- reply = dbus_message_new_method_return (rec->message);
-
- row_count = 0;
-
- if (result_set) {
- GValue transform = { 0, };
-
- row_count = key_count;
- array = g_new (char *, key_count);
-
- g_value_init (&transform, G_TYPE_STRING);
-
- for (i = 0; i < key_count; i++) {
- GValue value = { 0, };
-
- _tracker_db_result_set_get_value (result_set, i, &value);
-
- if (g_value_transform (&value, &transform)) {
- array[i] = g_value_dup_string (&transform);
- } else {
- array[i] = g_strdup ("");
- }
-
- g_value_unset (&value);
- g_value_reset (&transform);
- }
-
- g_object_unref (result_set);
- } else {
- row_count = 1;
- array = g_new (char *, 1);
- array[0] = g_strdup ("");
-
- }
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, key_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_metadata_register_type (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *meta, *type_id;
- char *type;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &meta,
- DBUS_TYPE_STRING, &type,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!meta || strlen (meta) < 3 || (strchr (meta, ':') == NULL) ) {
- tracker_set_error (rec, "Metadata name is invalid. All names must be in the format 'class.name' ");
- return;
- }
-
- if (strcmp ("index", type) == 0) {
- type_id = "0";
- } else if (strcmp ("string", type) == 0) {
- type_id = "1";
- } else if (strcmp ("numeric", type) == 0) {
- type_id = "2";
- } else if (strcmp ("date", type) == 0) {
- type_id = "3";
- } else {
- tracker_set_error (rec, "Invalid Metadata Type specified");
- return;
- }
-
- tracker_exec_proc (db_con, "InsertMetadataType", meta, type_id, "0", "1", NULL);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_metadata_get_type_details (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *meta, *data_type;
- gboolean is_embedded, is_writable;
- gint id;
-
-/*
- <method name="GetTypeDetails">
- <arg type="s" name="name" direction="in" />
- <arg type="s" name="data_type" direction="out" />
- <arg type="b" name="is_embedded" direction="out" />
- <arg type="b" name="is_writable" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &meta,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- data_type = NULL;
- is_embedded = FALSE;
- is_writable = FALSE;
-
- if (!meta) {
- tracker_set_error (rec, "Unknown metadata type %s", meta);
- return;
- }
-
- result_set = tracker_exec_proc (db_con, "GetMetadataTypeInfo", meta, NULL);
-
- if (!result_set) {
- tracker_set_error (rec, "Unknown metadata type %s", meta);
- return;
- }
-
- tracker_db_result_set_get (result_set,
- 1, &id,
- 2, &is_embedded,
- 3, &is_writable,
- -1);
-
- data_type = type_array[id];
- g_object_unref (result_set);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &data_type,
- DBUS_TYPE_BOOLEAN, &is_embedded,
- DBUS_TYPE_BOOLEAN, &is_writable,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_metadata_get_registered_types (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *class, **array;
- int row_count;
-
-/*
- <!-- returns an array of all metadata types that are registered for a certain class -->
- <method name="GetRegisteredTypes">
- <arg type="s" name="metadata_class" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &class,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- array = NULL;
- row_count = 0;
-
- if (class) {
- TrackerDBResultSet *result_set;
-
- result_set = tracker_db_get_metadata_types (db_con, class, TRUE);
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_metadata_get_writeable_types (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- char *class, *class_formatted, **array;
- int row_count;
-
-/*
- <!-- returns an array of all metadata types that are writeable and registered for a certain class
- You can enter "*" as the class to get all metadat types for all classes that are writeable
- -->
- <method name="GetWriteableTypes">
- <arg type="s" name="metadata_class" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &class,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- array = NULL;
- row_count = 0;
-
- if (class) {
- TrackerDBResultSet *result_set;
-
- class_formatted = g_strconcat (class, ".*", NULL);
-
- result_set = tracker_db_get_metadata_types (db_con, class_formatted, TRUE);
-
- g_free (class_formatted);
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_metadata_get_registered_classes (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusMessage *reply;
- char **array;
- int row_count;
-
-/*
- <!-- returns an array of all metadata type classes that are registered -->
- <method name="GetRegisteredClasses">
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- result_set = tracker_exec_proc (db_con, "SelectMetadataClasses", NULL);
-
- array = NULL;
- row_count = 0;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_metadata_get_unique_values (DBusRec *rec)
-{
- DBConnection *db_con;
- DBusError dbus_error;
- gchar **meta_types = NULL;
- gchar *service;
- gchar *query = NULL;
- gint meta_count;
- gboolean order_desc;
- gint limit, offset;
-
- FieldDef *def;
- TrackerDBResultSet *result_set;
- GString *select;
- GString *from;
- GString *where;
- GString *group;
- GString *order;
- char *str_offset, *str_limit;
- gchar *sql;
-
- int i;
-
-/*
- <!-- returns an array of all unique values of given metadata type -->
- <method name="GetUniqueValues">
- <arg type="s" name="service" direction="in" />
- <arg type="as" name="meta_types" direction="in" />
- <arg type="s" name="query" direction="in" />
- <arg type="b" name="descending" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-*/
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- result_set = NULL;
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &meta_types, &meta_count,
- DBUS_TYPE_STRING, &query,
- DBUS_TYPE_BOOLEAN, &order_desc,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- if (limit < 1) {
- limit = 1024;
- }
-
- if(!meta_count) {
- tracker_set_error (rec, "ERROR: No metadata type specified");
- return;
- }
-
- str_offset = tracker_int_to_str (offset);
- str_limit = tracker_int_to_str (limit);
-
- select = g_string_new ("SELECT ");
- from = g_string_new ("\nFROM Services S ");
- where = g_string_new ("\nWHERE ");
- order = g_string_new ("\nORDER BY ");
- group = g_string_new ("\nGROUP BY ");
-
- for (i=0;i<meta_count;i++) {
- def = tracker_db_get_field_def (db_con, meta_types[i]);
-
- if (!def) {
- tracker_set_error (rec, "ERROR: metadata not found for type %s", meta_types[i]);
- return;
- }
-
- if (i) {
- g_string_append_printf (where, " AND ");
- g_string_append_printf (select, ", ");
- g_string_append_printf (group, ", ");
- g_string_append_printf (order, ", ");
- }
-
- switch (def->type) {
-
- case DATA_INDEX:
- case DATA_STRING:
- case DATA_DOUBLE:
- g_string_append_printf (select, "D%d.MetaDataDisplay", i);
- g_string_append_printf (from, "INNER JOIN ServiceMetaData D%d ON (S.ID = D%d.ServiceID) ", i,i);
- g_string_append_printf (where, "(D%d.MetaDataID = %s)", i, def->id);
- g_string_append_printf (group, "D%d.MetaDataDisplay", i);
- if (order_desc) {
- g_string_append_printf (order, "D%d.MetaDataDisplay DESC", i);
- } else {
- g_string_append_printf (order, "D%d.MetaDataDisplay ASC", i);
- }
- break;
-
- case DATA_INTEGER:
- case DATA_DATE:
- g_string_append_printf (select, "D%d.MetaDataValue", i);
- g_string_append_printf (from, "INNER JOIN ServiceNumericMetaData D%d ON (S.ID = D%d.ServiceID) ", i, i);
- g_string_append_printf (where, "(D%d.MetaDataID = %s)", i, def->id);
- g_string_append_printf (group, "D%d.MetaDataValue", i);
- if (order_desc) {
- g_string_append_printf (order, "D%d.MetaDataValue DESC", i);
- } else {
- g_string_append_printf (order, "D%d.MetaDataValue ASC", i);
- }
- break;
-
- case DATA_KEYWORD:
- g_string_append_printf (select, "D%d.MetaDataValue", i);
- g_string_append_printf (from, "INNER JOIN ServiceKeywordMetaData D%d ON (S.ID = D%d.ServiceID) ", i, i);
- g_string_append_printf (where, "(D%d.MetaDataID = %s)", i,def->id);
- g_string_append_printf (group, "D%d.MetaDataValue", i);
- if (order_desc) {
- g_string_append_printf (order, "D%d.MetaDataValue DESC", i);
- } else {
- g_string_append_printf (order, "D%d.MetaDataValue ASC", i);
- }
- break;
-
- default:
- tracker_error ("ERROR: metadata could not be retrieved as type %d is not supported", def->type);
- g_string_free (select, TRUE);
- g_string_free (from, TRUE);
- g_string_free (where, TRUE);
- g_string_free (group, TRUE);
- g_string_free (order, TRUE);
- }
- }
-
- g_string_append_printf (select, ", COUNT (*) ");
-
- if (query) {
- char *rdf_where;
- char *rdf_from;
- GError *error = NULL;
-
- tracker_rdf_filter_to_sql (db_con, query, service, &rdf_from, &rdf_where, error);
-
- if (error) {
- tracker_set_error (rec, "ERROR: Parse error: %s", error->message);
- g_error_free (error);
- return;
- }
-
- g_string_append_printf (from, " %s ", rdf_from);
- g_string_append_printf (where, " AND %s", rdf_where);
-
- g_free (rdf_from);
- g_free (rdf_where);
- }
-
- g_string_append_printf (order, " LIMIT %s,%s", str_offset, str_limit);
- sql = g_strconcat (select->str, " ", from->str, " ", where->str, " ", group->str, " ", order->str, NULL);
-
- g_string_free (select, TRUE);
- g_string_free (from, TRUE);
- g_string_free (where, TRUE);
- g_string_free (group, TRUE);
- g_string_free (order, TRUE);
- g_free (str_offset);
- g_free (str_limit);
-
- g_message ("Unique value query executed:\n%s", sql);
-
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, sql);
-
- g_free (sql);
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- if (result_set) {
- g_object_unref (result_set);
- }
-}
diff --git a/src/trackerd/tracker-dbus-metadata.h b/src/trackerd/tracker-dbus-metadata.h
deleted file mode 100644
index 27ec6dab1..000000000
--- a/src/trackerd/tracker-dbus-metadata.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef _TRACKER_DBUS_METADATA_H_
-#define _TRACKER_DBUS_METADATA_H_
-
-#include "tracker-dbus.h"
-
-void tracker_dbus_method_metadata_get (DBusRec *rec);
-void tracker_dbus_method_metadata_set (DBusRec *rec);
-
-void tracker_dbus_method_metadata_register_type (DBusRec *rec);
-
-void tracker_dbus_method_metadata_get_type_details (DBusRec *rec);
-void tracker_dbus_method_metadata_get_registered_types (DBusRec *rec);
-void tracker_dbus_method_metadata_get_writeable_types (DBusRec *rec);
-void tracker_dbus_method_metadata_get_registered_classes (DBusRec *rec);
-
-void tracker_dbus_method_metadata_get_unique_values (DBusRec *rec);
-
-#endif
diff --git a/src/trackerd/tracker-dbus-methods.c b/src/trackerd/tracker-dbus-methods.c
deleted file mode 100644
index 24963571b..000000000
--- a/src/trackerd/tracker-dbus-methods.c
+++ /dev/null
@@ -1,592 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#ifdef OS_WIN32
-#include "mingw-compat.h"
-#endif
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-dbus-methods.h"
-#include "tracker-metadata.h"
-#include "tracker-rdf-query.h"
-
-extern Tracker *tracker;
-
-void
-tracker_set_error (DBusRec *rec,
- const char *fmt,
- ...)
-{
- char *msg;
- va_list args;
- DBusMessage *reply;
-
- va_start (args, fmt);
- msg = g_strdup_vprintf (fmt, args);
- va_end (args);
-
- reply = dbus_message_new_error (rec->message,
- "org.freedesktop.Tracker.Error",
- msg);
-
- if (reply == NULL || !dbus_connection_send (rec->connection, reply, NULL)) {
- tracker_error ("WARNING: out of memory");
- }
-
- tracker_error ("ERROR: %s", msg);
- g_free (msg);
-
- dbus_message_unref (reply);
-}
-
-
-char *
-tracker_get_metadata (DBConnection *db_con, const char *service, const char *id, const char *key)
-{
- TrackerDBResultSet *result_set;
- char *value;
-
- g_return_val_if_fail (db_con && !tracker_is_empty_string (id), NULL);
-
- value = g_strdup (" ");
-
- result_set = tracker_db_get_metadata (db_con, service, id, key);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &value, -1);
- g_object_unref (result_set);
- }
-
- tracker_log ("Metadata %s is %s", key, value);
-
- return value;
-}
-
-
-guint32
-tracker_get_file_id (DBConnection *db_con, const char *uri, gboolean create_record)
-{
- int id;
-
- g_return_val_if_fail (db_con && !tracker_is_empty_string (uri), 0);
-
- id = tracker_db_get_file_id (db_con, uri);
-
- if (id == 0 && create_record) {
- char *uri_in_locale;
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- tracker_error ("ERROR: info->uri could not be converted to locale format");
- return 0;
- }
-
- /* file not found in DB - so we must insert a new file record */
-
-
- char *str_file_id, *service;
- FileInfo *info;
-
- info = NULL;
- service = NULL;
- str_file_id = NULL;
-
- info = tracker_create_file_info (uri_in_locale, 1, 0, 0);
-
- if (!tracker_file_is_valid (uri_in_locale)) {
- info->mime = g_strdup ("unknown");
- service = g_strdup ("Files");
- } else {
- info->mime = tracker_get_mime_type (uri_in_locale);
- service = tracker_service_manager_get_service_type_for_mime (info->mime);
- info = tracker_get_file_info (info);
- }
-
- id = tracker_db_create_service (db_con, "Files", info);
- tracker_free_file_info (info);
- g_free (service);
-
- g_free (uri_in_locale);
-
-
- }
-
- return id;
-}
-
-
-void
-tracker_dbus_reply_with_query_result (DBusRec *rec,
- TrackerDBResultSet *result_set)
-{
- DBusMessage *reply;
- DBusMessageIter iter;
- DBusMessageIter iter2;
- gboolean valid = TRUE;
- gint columns;
-
- if (result_set) {
- columns = tracker_db_result_set_get_n_columns (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
- dbus_message_iter_init_append (reply, &iter);
-
- dbus_message_iter_open_container (&iter,
- DBUS_TYPE_ARRAY,
- "as",
- &iter2);
-
- while (result_set && valid) {
- DBusMessageIter iter_array;
- gint i;
- GValue transform = { 0, };
-
- g_value_init (&transform, G_TYPE_STRING);
- dbus_message_iter_open_container (&iter2,
- DBUS_TYPE_ARRAY,
- DBUS_TYPE_STRING_AS_STRING,
- &iter_array);
-
- /* append fields to the array */
- for (i = 0; i < columns; i++) {
- GValue value = { 0, };
- const gchar *str;
-
- _tracker_db_result_set_get_value (result_set, i, &value);
-
- if (g_value_transform (&value, &transform)) {
- str = g_value_get_string (&transform);
- } else {
- str = "";
- }
-
- dbus_message_iter_append_basic (&iter_array,
- DBUS_TYPE_STRING,
- &str);
- g_value_unset (&value);
- g_value_reset (&transform);
- }
-
- dbus_message_iter_close_container (&iter2, &iter_array);
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- dbus_message_iter_close_container (&iter, &iter2);
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-
-}
-
-
-
-void
-tracker_add_query_result_to_dict (TrackerDBResultSet *result_set,
- DBusMessageIter *iter_dict)
-{
- gint field_count;
- gboolean valid = TRUE;
-
- g_return_if_fail (result_set);
-
- field_count = tracker_db_result_set_get_n_columns (result_set);
-
- while (valid) {
- DBusMessageIter iter_dict_entry;
- DBusMessageIter iter_var, iter_array;
- char *key;
- int i;
- GValue transform;
-
- g_value_init (&transform, G_TYPE_STRING);
- tracker_db_result_set_get (result_set, 0, &key, -1);
-
- dbus_message_iter_open_container (iter_dict,
- DBUS_TYPE_DICT_ENTRY,
- NULL,
- &iter_dict_entry);
-
- dbus_message_iter_append_basic (&iter_dict_entry, DBUS_TYPE_STRING, &key);
-
-
- dbus_message_iter_open_container (&iter_dict_entry,
- DBUS_TYPE_VARIANT,
- DBUS_TYPE_ARRAY_AS_STRING
- DBUS_TYPE_STRING_AS_STRING,
- &iter_var);
-
- dbus_message_iter_open_container (&iter_var,
- DBUS_TYPE_ARRAY,
- DBUS_TYPE_STRING_AS_STRING,
- &iter_array);
-
- /* append additional fields to the variant */
- for (i = 1; i < field_count; i++) {
- GValue value;
- const gchar *str;
-
- _tracker_db_result_set_get_value (result_set, i, &value);
-
- if (g_value_transform (&value, &transform)) {
- str = g_value_get_string (&transform);
- } else {
- str = "";
- }
-
- dbus_message_iter_append_basic (&iter_array,
- DBUS_TYPE_STRING,
- &str);
- g_value_unset (&value);
- g_value_reset (&transform);
- }
-
- dbus_message_iter_close_container (&iter_var, &iter_array);
- dbus_message_iter_close_container (&iter_dict_entry, &iter_var);
- dbus_message_iter_close_container (iter_dict, &iter_dict_entry);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-}
-
-
-char **
-tracker_get_query_result_as_array (TrackerDBResultSet *result_set,
- int *row_count)
-{
- gboolean valid = TRUE;
- char **array;
- gint i = 0;
-
- *row_count = tracker_db_result_set_get_n_rows (result_set);
- array = g_new (char *, *row_count);
-
- while (valid) {
- tracker_db_result_set_get (result_set, 0, &array[i], -1);
- valid = tracker_db_result_set_iter_next (result_set);
- i++;
- }
-
- return array;
-}
-
-
-void
-tracker_dbus_method_get_services (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- DBusMessageIter iter;
- DBusMessageIter iter_dict;
- gboolean main_only;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- tracker_log ("Executing GetServices Dbus Call");
-
- dbus_error_init (&dbus_error);
-
- if (!dbus_message_get_args (rec->message, NULL, DBUS_TYPE_BOOLEAN, &main_only, DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- result_set = tracker_exec_proc (db_con, "GetServices", 0);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_iter_init_append (reply, &iter);
-
- dbus_message_iter_open_container (&iter,
- DBUS_TYPE_ARRAY,
- DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
- DBUS_TYPE_STRING_AS_STRING
- DBUS_TYPE_VARIANT_AS_STRING
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
- &iter_dict);
-
- if (result_set) {
- tracker_add_query_result_to_dict (result_set, &iter_dict);
- g_object_unref (result_set);
- }
-
- dbus_message_iter_close_container (&iter, &iter_dict);
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_get_stats (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
-
- g_return_if_fail (rec && rec->user_data);
-
- db_con = rec->user_data;
-
- tracker_log ("Executing GetStats Dbus Call");
-
- result_set = tracker_exec_proc (db_con, "GetStats", 0);
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- g_object_unref (result_set);
-}
-
-void
-tracker_dbus_method_get_status (DBusRec *rec)
-{
- DBusMessage *reply = dbus_message_new_method_return (rec->message);
-
-
- gchar* status = tracker_get_status ();
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &status,
- DBUS_TYPE_INVALID);
-
- g_free (status);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-
-}
-
-void
-tracker_dbus_method_get_version (DBusRec *rec)
-{
- DBusMessage *reply;
- int i;
-
- g_return_if_fail (rec);
-
- i = TRACKER_VERSION_INT;
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_INT32,
- &i,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-void
-tracker_dbus_method_set_bool_option (DBusRec *rec)
-{
- DBusMessage *reply;
- DBusError dbus_error;
- char *option = NULL;
- gboolean value = FALSE;
-
- g_return_if_fail (rec);
-
- dbus_error_init (&dbus_error);
-
- /* <!-- sets boolean options in tracker - option can be one of "Pause", "EnableIndexing", "LowMemoryMode", "IndexFileContents" -->
- <method name="SetBoolOption">
- <arg type="s" name="option" direction="in" />
- <arg type="b" name="value" direction="in" />
- </method>
-
- */
-
- if (!dbus_message_get_args (rec->message, NULL, DBUS_TYPE_STRING, &option, DBUS_TYPE_BOOLEAN, &value, DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (strcasecmp (option, "Pause") == 0) {
- tracker->pause_manual = value;
-
- tracker_dbus_send_index_status_change_signal ();
-
- if (value) {
- tracker_log ("trackerd is paused by user");
- } else {
- tracker_log ("trackerd is unpaused by user");
- }
-
- } else if (strcasecmp (option, "FastMerges") == 0) {
- tracker_config_set_fast_merges (tracker->config, value);
- tracker_log ("Fast merges set to %d", value);
- } else if (strcasecmp (option, "EnableIndexing") == 0) {
- tracker_config_set_enable_indexing (tracker->config, value);
- tracker_log ("Enable indexing set to %d", value);
- tracker_dbus_send_index_status_change_signal ();
- } else if (strcasecmp (option, "EnableWatching") == 0) {
- tracker_config_set_enable_watches (tracker->config, value);
- tracker_log ("Enable Watching set to %d", value);
- } else if (strcasecmp (option, "LowMemoryMode") == 0) {
- tracker_config_set_low_memory_mode (tracker->config, value);
- tracker_log ("Extra memory usage set to %d", !value);
- } else if (strcasecmp (option, "IndexFileContents") == 0) {
- tracker_config_set_enable_content_indexing (tracker->config, value);
- tracker_log ("Index file contents set to %d", value);
- } else if (strcasecmp (option, "GenerateThumbs") == 0) {
- tracker_config_set_enable_thumbnails (tracker->config, value);
- tracker_log ("Generate thumbnails set to %d", value);
- } else if (strcasecmp (option, "IndexMountedDirectories") == 0) {
- tracker_config_set_index_mounted_directories (tracker->config, value);
- tracker_log ("Index mounted directories set to %d", value);
- } else if (strcasecmp (option, "IndexRemovableDevices") == 0) {
- tracker_config_set_index_removable_devices (tracker->config, value);
- tracker_log ("Index removable media set to %d", value);
- } else if (strcasecmp (option, "BatteryIndex") == 0) {
- tracker_config_set_disable_indexing_on_battery (tracker->config, !value);
- tracker_log ("Disable index on battery set to %d", !value);
- } else if (strcasecmp (option, "BatteryIndexInitial") == 0) {
- tracker_config_set_disable_indexing_on_battery_init (tracker->config, !value);
- tracker_log ("Disable initial index sweep on battery set to %d", !value);
- }
-
- tracker_notify_file_data_available ();
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_set_int_option (DBusRec *rec)
-{
- DBusMessage *reply;
- DBusError dbus_error;
- char *option = NULL;
- int value = 0;
-
- g_return_if_fail (rec);
-
- dbus_error_init (&dbus_error);
-
- /* <!-- sets integer based option values in tracker - option can be one of "Throttle", "IndexDelay" -->
- <method name="SetIntOption">
- <arg type="s" name="option" direction="in" />
- <arg type="i" name="value" direction="in" />
- </method>
-
- */
-
- if (!dbus_message_get_args (rec->message, NULL, DBUS_TYPE_STRING, &option, DBUS_TYPE_INT32, &value, DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (strcasecmp (option, "Throttle") == 0) {
- tracker_config_set_throttle (tracker->config, value);
- tracker_log ("throttle set to %d", value);
- } else if (strcasecmp (option, "MaxText") == 0) {
- tracker_config_set_max_text_to_index (tracker->config, value);
- tracker_log ("Maxinum amount of text set to %d", value);
- } else if (strcasecmp (option, "MaxWords") == 0) {
- tracker_config_set_max_words_to_index (tracker->config, value);
- tracker_log ("Maxinum number of unique words set to %d", value);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_shutdown (DBusRec *rec)
-{
- DBusMessage *reply;
- DBusError dbus_error;
- gboolean reindex = FALSE;
-
- g_return_if_fail (rec);
-
- dbus_error_init (&dbus_error);
-
- /* <!-- shutdown tracker service with optional reindex -->
- <method name="Shutdown">
- <arg type="b" name="reindex" direction="in" />
- </method>
-
- */
-
- if (!dbus_message_get_args (rec->message, NULL, DBUS_TYPE_BOOLEAN, &reindex, DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- tracker_log ("attempting restart");
-
- tracker->reindex = reindex;
-
- g_timeout_add (500, (GSourceFunc) tracker_do_cleanup, NULL);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_prompt_index_signals (DBusRec *rec)
-{
- DBusMessage *reply;
-
- g_return_if_fail (rec);
-
- tracker_dbus_send_index_status_change_signal ();
-
- tracker_dbus_send_index_progress_signal ("Files", "");
- tracker_dbus_send_index_progress_signal ("Emails", "");
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-}
-
-
-
diff --git a/src/trackerd/tracker-dbus-methods.h b/src/trackerd/tracker-dbus-methods.h
deleted file mode 100644
index c2c201369..000000000
--- a/src/trackerd/tracker-dbus-methods.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_DBUS_METHODS_H_
-#define _TRACKER_DBUS_METHODS_H_
-
-#include "tracker-dbus.h"
-#include "tracker-db.h"
-#include "tracker-db-interface.h"
-
-
-void tracker_set_error (DBusRec *rec, const char *fmt, ...);
-
-char * tracker_get_metadata (DBConnection *db_con, const char *service, const char *id, const char *key);
-
-void tracker_set_metadata (DBConnection *db_con, const char *service, const char *id, const char *key, const char *value, gboolean overwrite);
-
-guint32 tracker_get_file_id (DBConnection *db_con, const char *uri, gboolean create_record);
-
-void tracker_dbus_reply_with_query_result (DBusRec *rec, TrackerDBResultSet *result_set);
-
-void tracker_add_query_result_to_dict (TrackerDBResultSet *result_set, DBusMessageIter *iter_dict);
-
-char * tracker_format_search_terms (const char *str, gboolean *do_bool_search);
-
-
-char ** tracker_get_query_result_as_array (TrackerDBResultSet *result_set, int *row_count);
-
-void tracker_dbus_method_get_stats (DBusRec *rec);
-void tracker_dbus_method_get_status (DBusRec *rec);
-void tracker_dbus_method_get_services (DBusRec *rec);
-void tracker_dbus_method_get_version (DBusRec *rec);
-
-void tracker_dbus_method_set_bool_option (DBusRec *rec);
-void tracker_dbus_method_set_int_option (DBusRec *rec);
-void tracker_dbus_method_shutdown (DBusRec *rec);
-void tracker_dbus_method_prompt_index_signals (DBusRec *rec);
-
-
-#endif
diff --git a/src/trackerd/tracker-dbus-search.c b/src/trackerd/tracker-dbus-search.c
deleted file mode 100644
index 26426e10d..000000000
--- a/src/trackerd/tracker-dbus-search.c
+++ /dev/null
@@ -1,923 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-dbus-methods.h"
-#include "tracker-rdf-query.h"
-#include "tracker-query-tree.h"
-#include "tracker-indexer.h"
-#include "tracker-service-manager.h"
-
-extern Tracker *tracker;
-
-void
-tracker_dbus_method_search_get_hit_count (DBusRec *rec)
-{
- TrackerQueryTree *tree;
- DBConnection *db_con;
- DBusError dbus_error;
- gchar *service;
- gchar *str;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- returns no of hits for the search_text on the servce -->
- <method name="GetHitCount">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="result" direction="out" />
- </method>
-
-
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!service) {
- tracker_set_error (rec, "No service was specified");
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (str)) {
- tracker_set_error (rec, "No search term was specified");
- return;
- }
-
- //tracker_log ("Executing GetHitCount with params %s, %s", service, str);
-
- gint service_array[12];
- GArray *services;
- gint result;
- DBusMessage *reply;
-
- service_array[0] = tracker_service_manager_get_id_for_service (service);
-
- if (strcmp (service, "Files") == 0) {
- service_array[1] = tracker_service_manager_get_id_for_service ("Folders");
- service_array[2] = tracker_service_manager_get_id_for_service ("Documents");
- service_array[3] = tracker_service_manager_get_id_for_service ("Images");
- service_array[4] = tracker_service_manager_get_id_for_service ("Videos");
- service_array[5] = tracker_service_manager_get_id_for_service ("Music");
- service_array[6] = tracker_service_manager_get_id_for_service ("Text");
- service_array[7] = tracker_service_manager_get_id_for_service ("Development");
- service_array[8] = tracker_service_manager_get_id_for_service ("Other");
- service_array[9] = 0;
- } else if (strcmp (service, "Emails") == 0) {
- service_array[1] = tracker_service_manager_get_id_for_service ("EvolutionEmails");
- service_array[2] = tracker_service_manager_get_id_for_service ("KMailEmails");
- service_array[3] = tracker_service_manager_get_id_for_service ("ThunderbirdEmails");
- service_array[4] = tracker_service_manager_get_id_for_service ("ModestEmails");
- service_array[5] = 0;
- } else if (strcmp (service, "Conversations") == 0) {
- service_array[1] = tracker_service_manager_get_id_for_service ("GaimConversations");
- service_array[2] = 0;
- }
-
- services = g_array_new (TRUE, TRUE, sizeof (gint));
- g_array_append_vals (services, service_array, G_N_ELEMENTS (service_array));
-
- db_con = tracker_db_get_service_connection (db_con, service);
- tree = tracker_query_tree_new (str, db_con->word_index, services);
- result = tracker_query_tree_get_hit_count (tree);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_INT32,
- &result,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
- g_object_unref (tree);
- g_array_free (services, TRUE);
-}
-
-
-void
-tracker_dbus_method_search_get_hit_count_all (DBusRec *rec)
-{
- TrackerDBResultSet *result_set = NULL;
- TrackerQueryTree *tree;
- GArray *hit_counts, *mail_hit_counts;
- DBConnection *db_con;
- DBusError dbus_error;
- gchar *str;
- guint i;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- returns [service name, no. of hits] for the search_text -->
- <method name="GetHitCountAll">
- <arg type="s" name="search_text" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (tracker_is_empty_string (str)) {
- tracker_set_error (rec, "No search term was specified");
- return;
- }
-
- //tracker_log ("Executing detailed search with params %s, %s, %d, %d", service, str, offset, limit);
-
- tree = tracker_query_tree_new (str, db_con->word_index, NULL);
- hit_counts = tracker_query_tree_get_hit_counts (tree);
-
- tracker_query_tree_set_indexer (tree, tracker->email_index);
- mail_hit_counts = tracker_query_tree_get_hit_counts (tree);
- g_array_append_vals (hit_counts, mail_hit_counts->data, mail_hit_counts->len);
- g_array_free (mail_hit_counts, TRUE);
-
- for (i = 0; i < hit_counts->len; i++) {
- TrackerHitCount count;
- GValue value = { 0, };
-
- if (G_UNLIKELY (!result_set)) {
- result_set = _tracker_db_result_set_new (2);
- }
-
- count = g_array_index (hit_counts, TrackerHitCount, i);
- _tracker_db_result_set_append (result_set);
-
- g_value_init (&value, G_TYPE_STRING);
- g_value_take_string (&value, tracker_service_manager_get_service_by_id (count.service_type_id));
- _tracker_db_result_set_set_value (result_set, 0, &value);
- g_value_unset (&value);
-
- g_value_init (&value, G_TYPE_INT);
- g_value_set_int (&value, count.count);
- _tracker_db_result_set_set_value (result_set, 1, &value);
- g_value_unset (&value);
- }
-
- if (result_set) {
- tracker_db_result_set_rewind (result_set);
- }
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- g_array_free (hit_counts, TRUE);
- g_object_unref (tree);
-
- if (result_set) {
- g_object_unref (result_set);
- }
-}
-
-
-void
-tracker_dbus_method_search_text (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- gchar **array;
- gint row_count, i;
- gint limit, query_id, offset;
- gchar *service;
- gchar *str;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- searches specified service for entities that match the specified search_text.
- Returns uri of all hits. -->
- <method name="Text">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL, DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!service) {
- tracker_set_error (rec, "No service was specified");
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (str)) {
- tracker_set_error (rec, "No search term was specified");
- return;
- }
-
- if (limit < 1) {
- limit = 1024;
- }
-
- tracker_log ("Executing search with params %s, %s", service, str);
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- result_set = tracker_db_search_text (db_con, service, str, offset, limit, FALSE, FALSE);
-
- row_count = 0;
- array = NULL;
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *prefix, *name;
-
- row_count = tracker_db_result_set_get_n_rows (result_set);
- array = g_new (gchar *, row_count);
- i = 0;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 0, &prefix,
- 1, &name,
- -1);
-
- array[i] = g_build_filename (prefix, name, NULL);
- valid = tracker_db_result_set_iter_next (result_set);
- i++;
-
- g_free (prefix);
- g_free (name);
- }
-
- g_object_unref (result_set);
- } else {
- array = g_new (gchar *, 1);
- array[0] = NULL;
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- for (i = 0; i < row_count; i++) {
- if (array[i]) {
- g_free (array[i]);
- }
- }
-
- g_free (array);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_search_text_detailed (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- gint limit, query_id, offset;
- gchar *service;
- gchar *str;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- More detailed version of above. Searches specified service for entities that match the specified search_text.
- Returns hits in array format [uri, service, mime] -->
- <method name="TextDetailed">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL, DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!service) {
- tracker_set_error (rec, "No service was specified");
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (str)) {
- tracker_set_error (rec, "No search term was specified");
- return;
- }
-
- if (limit < 1) {
- limit = 1024;
- }
-
- tracker_log ("Executing detailed search with params %s, %s, %d, %d", service, str, offset, limit);
-
- db_con = tracker_db_get_service_connection (db_con, service);
-
- result_set = tracker_db_search_text (db_con, service, str, offset, limit, FALSE, TRUE);
-
- /*
- if (tracker_config_get_verbosity (tracker->config) > 0) {
- tracker_db_log_result (res);
- }
- */
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- if (result_set) {
- g_object_unref (result_set);
- }
-}
-
-
-void
-tracker_dbus_method_search_get_snippet (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- gchar *service, *uri, *str;
- gchar *snippet, *service_id;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Returns a search snippet of text with matchinhg text enclosed in bold tags -->
- <method name="GetSnippet">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
-
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!service) {
- tracker_set_error (rec, "No service was specified");
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (str)) {
- tracker_set_error (rec, "No search term was specified");
- return;
- }
-
- //tracker_log ("Getting snippet with params %s, %s, %s", service, uri, str);
- db_con = tracker_db_get_service_connection (db_con, service);
- service_id = tracker_db_get_id (db_con, service, uri);
-
- if (!service_id) {
- g_free (service_id);
- tracker_set_error (rec, "Service uri %s not found", uri);
- return;
- }
-
- snippet = NULL;
-
- result_set = tracker_exec_proc (db_con->blob, "GetAllContents", service_id, NULL);
- g_free (service_id);
-
- if (result_set) {
- gchar **array, *text;
-
- tracker_db_result_set_get (result_set, 0, &text, -1);
- array = tracker_parse_text_into_array (str);
-
- if (array && array[0]) {
- snippet = tracker_get_snippet (text, array, 120);
- }
-
- g_strfreev (array);
- g_free (text);
- g_object_unref (result_set);
- }
-
- /* do not pass NULL to dbus or it will crash */
- if (!snippet || !g_utf8_validate (snippet, -1, NULL) ) {
- snippet = g_strdup (" ");
- }
-
-// tracker_debug ("snippet is %s", snippet);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &snippet,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-
- g_free (snippet);
-}
-
-
-void
-tracker_dbus_method_search_files_by_text (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- DBusMessageIter iter;
- DBusMessageIter iter_dict;
- gchar *text;
- gint limit, query_id, offset;
- gboolean sort;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
- sort = FALSE;
-
-/*
- <!-- searches all file based entities that match the specified search_text.
- Returns dict/hashtable with the uri as key and the following fields as the variant part in order: file service category, File:Format, File:Size, File:Rank, File:Modified
- If group_results is True then results are sorted and grouped by service type.
- -->
- <method name="FilesByText">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="b" name="group_results" direction="in" />
- <arg type="a{sv}" name="result" direction="out" />
- </method>
-
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &text,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_BOOLEAN, &sort,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- result_set = tracker_db_search_files_by_text (db_con, text, offset, limit, sort);
-
- if (!result_set)
- return;
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_iter_init_append (reply, &iter);
-
- dbus_message_iter_open_container (&iter,
- DBUS_TYPE_ARRAY,
- DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
- DBUS_TYPE_STRING_AS_STRING
- DBUS_TYPE_VARIANT_AS_STRING
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
- &iter_dict);
-
- tracker_add_query_result_to_dict (result_set, &iter_dict);
- g_object_unref (result_set);
-
- dbus_message_iter_close_container (&iter, &iter_dict);
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_search_metadata (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- DBusMessage *reply;
- gchar *service, *field, *text;
- gchar **array;
- gint limit, row_count = 0, offset;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- searches a specific metadata field (field parameter) for a search term (search_text).
- The result is an array of uri/id's
- -->
- <method name="Metadata">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="field" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="as" name="result" direction="out" />
- </method>
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &field,
- DBUS_TYPE_STRING, &text,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
-// result_set = tracker_db_search_metadata (db_con, service, field, text, offset, limit);
- result_set = NULL;
-
- array = NULL;
-
- if (result_set) {
- array = tracker_get_query_result_as_array (result_set, &row_count);
- g_object_unref (result_set);
- }
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &array, row_count,
- DBUS_TYPE_INVALID);
-
- tracker_free_array (array, row_count);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
-}
-
-
-void
-tracker_dbus_method_search_matching_fields (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- gchar *text, *service, *id;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
-/*
- <!-- Retrieves matching metadata fields for a search term on a specific service and entity.
- The result is a dict/hashtable with the metadata name as the key and the corresponding metadata value as the variant
- If the metadata result is a large field (like File.Content) then only a small chunk of the matching text is returned
- Only indexable metadata fields are searched and returned.
- -->
- <method name="MatchingFields">
- <arg type="s" name="service" direction="in" />
- <arg type="s" name="id" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="a{sv}" name="result" direction="out" />
- </method>
-
-*/
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &id,
- DBUS_TYPE_STRING, &text,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (tracker_is_empty_string (id)) {
- tracker_set_error (rec, "Id field must have a value");
- return;
- }
- db_con = tracker_db_get_service_connection (db_con, service);
- result_set = tracker_db_search_matching_metadata (db_con, service, id, text);
-
- if (result_set) {
- DBusMessage *reply;
- DBusMessageIter iter;
- DBusMessageIter iter_dict;
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_iter_init_append (reply, &iter);
-
- dbus_message_iter_open_container (&iter,
- DBUS_TYPE_ARRAY,
- DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
- DBUS_TYPE_STRING_AS_STRING
- DBUS_TYPE_VARIANT_AS_STRING
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
- &iter_dict);
-
- tracker_add_query_result_to_dict (result_set, &iter_dict);
- g_object_unref (result_set);
-
- dbus_message_iter_close_container (&iter, &iter_dict);
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
- }
-}
-
-
-void
-tracker_dbus_method_search_query (DBusRec *rec)
-{
- TrackerDBResultSet *result_set;
- DBConnection *db_con;
- DBusError dbus_error;
- gchar **fields;
- gint limit, row_count, query_id, offset;
- gchar *query, *search_text, *service, *keyword;
- gboolean sort_results;
-
- g_return_if_fail (rec);
- g_return_if_fail (rec->user_data);
-
- db_con = rec->user_data;
-
- sort_results = FALSE;
-/*
- <!-- searches specified service for matching entities.
- The service parameter specifies the service which the query will be performed on
- The fields parameter specifies an array of aditional metadata fields to return in addition to the id field (which is returned as the "key" in the resultant dict/hashtable) and the service category. This can be null
- The optional search_text paramter specifies the text to search for in a full text search of all indexed fields - this parameter can be null if the query_condition is not null (in which case only the query condition is used to find matches)
- The optional keyword search - a single keyword may be used here to filter the results.
- The optional query_condition parameter specifies an xml-based rdf query condition which is used to filter out the results - this parameter can be null if the search_text is not null (in which case only the search_text parameter is used to find matches)
- The Offset parameter sets the start row of the returned result set (useful for paging/cursors). A value of 0 should be passed to get rows from the beginning.
- The max_hits parameter limits the size of the result set.
- The sort_by_service parameter optionally sorts results by their service category (if FALSE no service sorting is done)
- The result is a hashtable/dict with the id of the matching entity as the key fields.
- The variant part of the result is the service category followed by list of supplied fields as specified in the fields parameter
- -->
- <method name="Query">
- <arg type="i" name="live_query_id" direction="in" />
- <arg type="s" name="service" direction="in" />
- <arg type="as" name="fields" direction="in" />
- <arg type="s" name="search_text" direction="in" />
- <arg type="s" name="keyword" direction="in" />
- <arg type="s" name="query_condition" direction="in" />
- <arg type="b" name="sort_by_service" direction="in" />
- <arg type="i" name="offset" direction="in" />
- <arg type="i" name="max_hits" direction="in" />
- <arg type="aas" name="result" direction="out" />
- </method>
-*/
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_INT32, &query_id,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &fields, &row_count,
- DBUS_TYPE_STRING, &search_text,
- DBUS_TYPE_STRING, &keyword,
- DBUS_TYPE_STRING, &query,
- DBUS_TYPE_BOOLEAN, &sort_results,
- DBUS_TYPE_INT32, &offset,
- DBUS_TYPE_INT32, &limit,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- if (!tracker_service_manager_is_valid_service (service)) {
- tracker_set_error (rec, "Invalid service %s or service has not been implemented yet", service);
- return;
- }
-
- if (limit < 1) {
- limit = 1024;
- }
-
- result_set = NULL;
-
- if (query) {
- gchar *str;
- GError *error = NULL;
-
- tracker_log ("executing rdf query %s\n with search term %s and keyword %s", query, search_text, keyword);
-
- str = tracker_rdf_query_to_sql (db_con, query, service, fields, row_count, search_text, keyword, sort_results, offset, limit, error);
-
- if (error || !str) {
- if (error) {
- tracker_set_error (rec, "Invalid rdf query produced following error: %s", error->message);
- g_error_free (error);
- } else {
- tracker_set_error (rec, "Invalid rdf query");
- }
- return;
- }
-
- /*if (!str) {
- g_free (search_term);
- reply = dbus_message_new_method_return (rec->message);
- dbus_message_iter_init_append (reply, &iter);
-
- dbus_message_iter_open_container (&iter,
- DBUS_TYPE_ARRAY,
- DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
- DBUS_TYPE_STRING_AS_STRING
- DBUS_TYPE_VARIANT_AS_STRING
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
- &iter_dict);
- dbus_message_iter_close_container (&iter, &iter_dict);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
- g_return_if_fail (str);
- }*/
-
- tracker_log ("translated rdf query is \n%s\n", str);
- db_con = tracker_db_get_service_connection (db_con, service);
- if (!tracker_is_empty_string (search_text)) {
- tracker_db_search_text (db_con, service, search_text, 0, 999999, TRUE, FALSE);
- }
-
- result_set = tracker_db_interface_execute_query (db_con->db, NULL, str);
-
- g_free (str);
-
- } else {
- return;
- }
-
- tracker_dbus_reply_with_query_result (rec, result_set);
-
- if (result_set) {
- g_object_unref (result_set);
- }
-}
-
-
-
-
-void
-tracker_dbus_method_search_suggest (DBusRec *rec)
-{
- DBusError dbus_error;
- DBusMessage *reply;
- gchar *term;
- gint maxdist;
- gchar *winner_str;
-
- /*
- <method name="Suggest">
- <arg type="s" name="search_text" direction="in" />
- <arg type="i" name="maxdist" direction="in" />
- <arg type="s" name="result" direction="out" />
- </method>
- */
-
- dbus_error_init (&dbus_error);
- if (!dbus_message_get_args (rec->message, NULL,
- DBUS_TYPE_STRING, &term,
- DBUS_TYPE_INT32, &maxdist,
- DBUS_TYPE_INVALID)) {
- tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return;
- }
-
- Indexer *index = tracker->file_index;
-
- winner_str = tracker_indexer_get_suggestion (index, term, maxdist);
-
- if (!winner_str) {
- tracker_set_error (rec, "Possible data error in index. Aborting tracker_dbus_method_search_suggest.");
- return;
- }
-
- tracker_log ("Suggested spelling for %s is %s.", term, winner_str);
-
- reply = dbus_message_new_method_return (rec->message);
-
- dbus_message_append_args (reply,
- DBUS_TYPE_STRING, &winner_str,
- DBUS_TYPE_INVALID);
- free (winner_str);
-
- dbus_connection_send (rec->connection, reply, NULL);
-
- dbus_message_unref (reply);
-
-}
diff --git a/src/trackerd/tracker-dbus-search.h b/src/trackerd/tracker-dbus-search.h
deleted file mode 100644
index fbaca32f5..000000000
--- a/src/trackerd/tracker-dbus-search.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef _TRACKER_DBUS_SEARCH_H_
-#define _TRACKER_DBUS_SEARCH_H_
-
-#include "tracker-dbus.h"
-void tracker_dbus_method_search_get_hit_count (DBusRec *rec);
-void tracker_dbus_method_search_get_hit_count_all (DBusRec *rec);
-void tracker_dbus_method_search_text (DBusRec *rec);
-void tracker_dbus_method_search_text_detailed (DBusRec *rec);
-void tracker_dbus_method_search_get_snippet (DBusRec *rec);
-void tracker_dbus_method_search_files_by_text (DBusRec *rec);
-void tracker_dbus_method_search_metadata (DBusRec *rec);
-void tracker_dbus_method_search_matching_fields (DBusRec *rec);
-void tracker_dbus_method_search_query (DBusRec *rec);
-void tracker_dbus_method_search_suggest (DBusRec *rec);
-
-#endif
diff --git a/src/trackerd/tracker-dbus.c b/src/trackerd/tracker-dbus.c
deleted file mode 100644
index 7e32c00f9..000000000
--- a/src/trackerd/tracker-dbus.c
+++ /dev/null
@@ -1,678 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-dbus.h"
-#include "tracker-utils.h"
-#include "tracker-watch.h"
-
-extern Tracker *tracker;
-
-
-static void unregistered_func (DBusConnection *conn, gpointer data);
-
-static DBusHandlerResult message_func (DBusConnection *conn, DBusMessage *message, gpointer data);
-
-static DBusObjectPathVTable tracker_vtable = {
- unregistered_func,
- message_func,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
-DBusConnection *
-tracker_dbus_init (void)
-{
- DBusError error;
- DBusConnection *connection;
- int ret;
-
- dbus_error_init (&error);
-
- connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
-
- if ((connection == NULL) || dbus_error_is_set (&error)) {
- if (dbus_error_is_set (&error)) {
- tracker_error ("DBUS ERROR: %s occurred with message %s", error.name, error.message);
- dbus_error_free (&error);
- }
-
- tracker_error ("ERROR: could not get the dbus session bus - exiting");
- exit (EXIT_FAILURE);
-
- }
-
- dbus_connection_setup_with_g_main (connection, NULL);
-
- dbus_error_init (&error);
-
- ret = dbus_bus_request_name (connection,
- TRACKER_DBUS_SERVICE,
- DBUS_NAME_FLAG_DO_NOT_QUEUE,
- &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("ERROR: could not acquire service name due to '%s'", error.message);
- exit (EXIT_FAILURE);
- }
-
- if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
- tracker_error ("ERROR: trackerd already running on your session dbus - exiting...");
- exit (EXIT_FAILURE);
- }
-
- if (!dbus_connection_register_object_path (connection,
- TRACKER_OBJECT,
- &tracker_vtable,
- NULL)) {
- tracker_error ("ERROR: could not register D-BUS handlers");
- connection = NULL;
- }
-
-
- if (connection != NULL) {
- dbus_connection_set_exit_on_disconnect (connection, FALSE);
- }
-
- return connection;
-}
-
-
-void
-tracker_dbus_shutdown (DBusConnection *conn)
-{
- if (!conn) {
- return;
- }
-
- dbus_connection_close (conn);
- dbus_connection_unref (conn);
-}
-
-
-void
-tracker_dbus_send_index_status_change_signal ()
-{
- DBusMessage *msg;
- dbus_uint32_t serial = 0;
- gchar *status;
- gboolean battery_pause;
- gboolean enable_indexing;
-
- msg = dbus_message_new_signal (TRACKER_OBJECT,
- TRACKER_INTERFACE,
- TRACKER_SIGNAL_INDEX_STATUS_CHANGE);
-
- if (!msg || !tracker->dbus_con) {
- return;
- }
-
- status = tracker_get_status ();
- battery_pause = tracker_pause_on_battery ();
-
- enable_indexing = tracker_config_get_enable_indexing (tracker->config);
-
- /*
- <signal name="IndexStateChange">
- <arg type="s" name="state" />
- <arg type="b" name="initial_index" />
- <arg type="b" name="in_merge" />
- <arg type="b" name="is_manual_paused" />
- <arg type="b" name="is_battery_paused" />
- <arg type="b" name="is_io_paused" />
- <arg type="b" name="is_indexing_enabled" />
- </signal>
- */
-
- dbus_message_append_args (msg,
- DBUS_TYPE_STRING, &status,
- DBUS_TYPE_BOOLEAN, &tracker->first_time_index,
- DBUS_TYPE_BOOLEAN, &tracker->in_merge,
- DBUS_TYPE_BOOLEAN, &tracker->pause_manual,
- DBUS_TYPE_BOOLEAN, &battery_pause,
- DBUS_TYPE_BOOLEAN, &tracker->pause_io,
- DBUS_TYPE_BOOLEAN, &enable_indexing,
- DBUS_TYPE_INVALID);
-
- g_free (status);
-
- dbus_message_set_no_reply (msg, TRUE);
-
- if (!dbus_connection_send (tracker->dbus_con, msg, &serial)) {
- tracker_error ("Raising the index status changed signal failed");
- return;
- }
-
- dbus_connection_flush (tracker->dbus_con);
-
- dbus_message_unref (msg);
-
-
-}
-
-void
-tracker_dbus_send_index_progress_signal (const char *service, const char *uri)
-{
- DBusMessage *msg;
- dbus_uint32_t serial = 0;
- int count, processed;
-
- msg = dbus_message_new_signal (TRACKER_OBJECT,
- TRACKER_INTERFACE,
- TRACKER_SIGNAL_INDEX_PROGRESS);
-
- if (!msg || !tracker->dbus_con) {
- return;
- }
-
-
- if (strcmp (service, "Emails") == 0) {
- count = tracker->mbox_count;
- processed = tracker->mbox_processed;
-
- } else if (strcmp (service, "Merging") == 0) {
-
- count = tracker->merge_count;
- processed = tracker->merge_processed;
-
- } else {
-
- count = tracker->folders_count;
- processed = tracker->folders_processed;
- }
-
-
- /*
-
- <signal name="IndexProgress">
- <arg type="s" name="service"/>
- <arg type="s" name="current_uri" />
- <arg type="i" name="index_count"/>
- <arg type="i" name="folders_processed"/>
- <arg type="i" name="folders_total"/>
- </signal>
- */
-
- dbus_message_append_args (msg,
- DBUS_TYPE_STRING, &service,
- DBUS_TYPE_STRING, &uri,
- DBUS_TYPE_INT32, &tracker->index_count,
- DBUS_TYPE_INT32, &processed,
- DBUS_TYPE_INT32, &count,
- DBUS_TYPE_INVALID);
-
- dbus_message_set_no_reply (msg, TRUE);
-
- if (!dbus_connection_send (tracker->dbus_con, msg, &serial)) {
- tracker_error ("Raising the index status changed signal failed");
- return;
- }
-
- dbus_connection_flush (tracker->dbus_con);
-
- dbus_message_unref (msg);
-
-
-}
-
-
-
-
-
-
-void
-tracker_dbus_send_index_finished_signal ()
-{
- DBusMessage *msg;
- dbus_uint32_t serial = 0;
- int i = time (NULL) - tracker->index_time_start;
-
- msg = dbus_message_new_signal (TRACKER_OBJECT,
- TRACKER_INTERFACE,
- TRACKER_SIGNAL_INDEX_FINISHED);
-
- if (!msg || !tracker->dbus_con) {
- return;
- }
-
- /*
- <signal name="IndexFinished">
- <arg type="i" name="time_taken"/>
- </signal>
- */
-
- dbus_message_append_args (msg,
- DBUS_TYPE_INT32, &i,
- DBUS_TYPE_INVALID);
-
- dbus_message_set_no_reply (msg, TRUE);
-
- if (!dbus_connection_send (tracker->dbus_con, msg, &serial)) {
- tracker_error ("Raising the index status changed signal failed");
- return;
- }
-
- dbus_connection_flush (tracker->dbus_con);
-
- dbus_message_unref (msg);
-
-
-}
-
-
-static void
-unregistered_func (DBusConnection *conn,
- gpointer data)
-{
-}
-
-
-static DBusHandlerResult
-message_func (DBusConnection *conn,
- DBusMessage *message,
- gpointer data)
-{
- DBusRec *rec;
-
- rec = g_new (DBusRec, 1);
- rec->connection = conn;
- rec->message = message;
-
- if (!tracker->is_running) {
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_NONE;
-
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- /* process shutdown calls in this thread */
- if (dbus_message_is_method_call (message,
- TRACKER_INTERFACE,
- TRACKER_METHOD_SHUTDOWN)) {
-
- DBusMessage *reply;
- DBusError dbus_error;
- gboolean reindex = FALSE;
-
- if (!dbus_message_get_args (message, NULL, DBUS_TYPE_BOOLEAN, &reindex, DBUS_TYPE_INVALID)) {
- //tracker_set_error (rec, "DBusError: %s;%s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- return 0;
- }
-
- tracker_log ("attempting restart");
-
- tracker->reindex = reindex;
-
- tracker->is_running = FALSE;
- tracker_end_watching ();
-
- g_timeout_add_full (G_PRIORITY_LOW,
- 1,
- (GSourceFunc) tracker_do_cleanup,
- g_strdup ("dbus shutdown"), NULL
- );
-
-
- reply = dbus_message_new_method_return (message);
-
- dbus_connection_send (conn, reply, NULL);
-
- dbus_message_unref (reply);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-
- }
-
-
-
- if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_PING)) {
- /* ref the message here because we are going to reply to it in a different thread */
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_PING;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_GET_STATS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_GET_STATS;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_GET_SERVICES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_GET_SERVICES;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_GET_VERSION)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_GET_VERSION;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_GET_STATUS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_GET_STATUS;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_SET_BOOL_OPTION)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SET_BOOL_OPTION;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_SET_INT_OPTION)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SET_INT_OPTION;
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_SHUTDOWN)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SHUTDOWN;
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE, TRACKER_METHOD_PROMPT_INDEX_SIGNALS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_PROMPT_INDEX_SIGNALS;
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_SET)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_SET;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_REGISTER_TYPE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_REGISTER_TYPE;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET_TYPE_DETAILS )) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET_TYPE_DETAILS;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET_REGISTERED_TYPES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET_REGISTERED_TYPES;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET_WRITEABLE_TYPES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET_WRITEABLE_TYPES;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET_REGISTERED_CLASSES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET_REGISTERED_CLASSES;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET_UNIQUE_VALUES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET_UNIQUE_VALUES;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_METADATA, TRACKER_METHOD_METADATA_GET_UNIQUE_VALUES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_METADATA_GET_UNIQUE_VALUES;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_KEYWORDS, TRACKER_METHOD_KEYWORDS_GET_LIST)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_KEYWORDS_GET_LIST;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_KEYWORDS, TRACKER_METHOD_KEYWORDS_GET)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_KEYWORDS_GET;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_KEYWORDS, TRACKER_METHOD_KEYWORDS_ADD)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_KEYWORDS_ADD;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_KEYWORDS, TRACKER_METHOD_KEYWORDS_REMOVE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_KEYWORDS_REMOVE;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_KEYWORDS, TRACKER_METHOD_KEYWORDS_REMOVE_ALL)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_KEYWORDS_REMOVE_ALL;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_KEYWORDS, TRACKER_METHOD_KEYWORDS_SEARCH)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_KEYWORDS_SEARCH;
-
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_GET_HIT_COUNT)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_GET_HIT_COUNT;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_GET_HIT_COUNT_ALL)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_GET_HIT_COUNT_ALL;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_TEXT)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_TEXT;
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_TEXT_DETAILED)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_TEXT_DETAILED;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_GET_SNIPPET)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_GET_SNIPPET;
-
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_FILES_BY_TEXT )) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_FILES_BY_TEXT;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_METADATA)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_METADATA;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_MATCHING_FIELDS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_MATCHING_FIELDS;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_QUERY)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_QUERY;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_SEARCH, TRACKER_METHOD_SEARCH_SUGGEST)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_SEARCH_SUGGEST;
-
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_EXISTS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_EXISTS;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_CREATE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_CREATE;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_DELETE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_DELETE;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_SERVICE_TYPE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_SERVICE_TYPE;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_TEXT_CONTENTS )) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_TEXT_CONTENTS ;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_SEARCH_TEXT_CONTENTS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_SEARCH_TEXT_CONTENTS;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_BY_SERVICE_TYPE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_BY_SERVICE_TYPE;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_BY_MIME_TYPE)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_BY_MIME_TYPE;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_BY_MIME_TYPE_VFS)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_BY_MIME_TYPE_VFS;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_REFRESH_METADATA)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_REFRESH_METADATA;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_MTIME)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_MTIME;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_GET_METADATA_FOLDER_FILES)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_GET_METADATA_FOLDER_FILES;
-
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_SEARCH_BY_TEXT_MIME)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_SEARCH_BY_TEXT_MIME;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_SEARCH_BY_TEXT_MIME_LOCATION)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_SEARCH_BY_TEXT_MIME_LOCATION;
-
-
- } else if (dbus_message_is_method_call (message, TRACKER_INTERFACE_FILES, TRACKER_METHOD_FILES_SEARCH_BY_TEXT_LOCATION)) {
-
- dbus_message_ref (message);
- rec->action = DBUS_ACTION_FILES_SEARCH_BY_TEXT_LOCATION;
-
-
- } else {
- g_free (rec);
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
-
- g_async_queue_push (tracker->user_request_queue, rec);
-
- tracker_notify_request_data_available ();
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
diff --git a/src/trackerd/tracker-dbus.h b/src/trackerd/tracker-dbus.h
deleted file mode 100644
index 84169010c..000000000
--- a/src/trackerd/tracker-dbus.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_DBUS_H_
-#define _TRACKER_DBUS_H_
-
-#ifndef DBUS_API_SUBJECT_TO_CHANGE
-#define DBUS_API_SUBJECT_TO_CHANGE
-#endif
-
-
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include <dbus/dbus-glib.h>
-
-
-#define TRACKER_DBUS_SERVICE "org.freedesktop.Tracker"
-#define TRACKER_OBJECT "/org/freedesktop/tracker"
-#define TRACKER_INTERFACE "org.freedesktop.Tracker"
-#define TRACKER_INTERFACE_METADATA "org.freedesktop.Tracker.Metadata"
-#define TRACKER_INTERFACE_KEYWORDS "org.freedesktop.Tracker.Keywords"
-#define TRACKER_INTERFACE_SEARCH "org.freedesktop.Tracker.Search"
-#define TRACKER_INTERFACE_FILES "org.freedesktop.Tracker.Files"
-#define TRACKER_INTERFACE_MUSIC "org.freedesktop.Tracker.Music"
-#define TRACKER_INTERFACE_PLAYLISTS "org.freedesktop.Tracker.PlayLists"
-
-/* main service interface */
-#define TRACKER_METHOD_PING "Ping"
-#define TRACKER_METHOD_GET_STATS "GetStats"
-#define TRACKER_METHOD_GET_SERVICES "GetServices"
-#define TRACKER_METHOD_GET_VERSION "GetVersion"
-#define TRACKER_METHOD_GET_STATUS "GetStatus"
-#define TRACKER_METHOD_SET_BOOL_OPTION "SetBoolOption"
-#define TRACKER_METHOD_SET_INT_OPTION "SetIntOption"
-#define TRACKER_METHOD_SHUTDOWN "Shutdown"
-#define TRACKER_METHOD_PROMPT_INDEX_SIGNALS "PromptIndexSignals"
-
-/* metadata interface */
-#define TRACKER_METHOD_METADATA_GET "Get"
-#define TRACKER_METHOD_METADATA_SET "Set"
-#define TRACKER_METHOD_METADATA_REGISTER_TYPE "RegisterType"
-#define TRACKER_METHOD_METADATA_GET_TYPE_DETAILS "GetTypeDetails"
-#define TRACKER_METHOD_METADATA_GET_REGISTERED_TYPES "GetRegisteredTypes"
-#define TRACKER_METHOD_METADATA_GET_WRITEABLE_TYPES "GetWriteableTypes"
-#define TRACKER_METHOD_METADATA_GET_REGISTERED_CLASSES "GetRegisteredClasses"
-#define TRACKER_METHOD_METADATA_GET_UNIQUE_VALUES "GetUniqueValues"
-
-/* keywords interface */
-#define TRACKER_METHOD_KEYWORDS_GET_LIST "GetList"
-#define TRACKER_METHOD_KEYWORDS_GET "Get"
-#define TRACKER_METHOD_KEYWORDS_ADD "Add"
-#define TRACKER_METHOD_KEYWORDS_REMOVE "Remove"
-#define TRACKER_METHOD_KEYWORDS_REMOVE_ALL "RemoveAll"
-#define TRACKER_METHOD_KEYWORDS_SEARCH "Search"
-
-/* Search interface */
-#define TRACKER_METHOD_SEARCH_GET_HIT_COUNT "GetHitCount"
-#define TRACKER_METHOD_SEARCH_GET_HIT_COUNT_ALL "GetHitCountAll"
-#define TRACKER_METHOD_SEARCH_TEXT "Text"
-#define TRACKER_METHOD_SEARCH_TEXT_DETAILED "TextDetailed"
-#define TRACKER_METHOD_SEARCH_GET_SNIPPET "GetSnippet"
-#define TRACKER_METHOD_SEARCH_FILES_BY_TEXT "FilesByText"
-#define TRACKER_METHOD_SEARCH_METADATA "Metadata"
-#define TRACKER_METHOD_SEARCH_MATCHING_FIELDS "MatchingFields"
-#define TRACKER_METHOD_SEARCH_QUERY "Query"
-#define TRACKER_METHOD_SEARCH_SUGGEST "Suggest"
-
-/* File Interface */
-#define TRACKER_METHOD_FILES_EXISTS "Exists"
-#define TRACKER_METHOD_FILES_CREATE "Create"
-#define TRACKER_METHOD_FILES_DELETE "Delete"
-#define TRACKER_METHOD_FILES_GET_SERVICE_TYPE "GetServiceType"
-#define TRACKER_METHOD_FILES_GET_TEXT_CONTENTS "GetTextContents"
-#define TRACKER_METHOD_FILES_SEARCH_TEXT_CONTENTS "SearchTextContents"
-#define TRACKER_METHOD_FILES_GET_BY_SERVICE_TYPE "GetByServiceType"
-#define TRACKER_METHOD_FILES_GET_BY_MIME_TYPE "GetByMimeType"
-#define TRACKER_METHOD_FILES_GET_BY_MIME_TYPE_VFS "GetByMimeTypeVFS"
-#define TRACKER_METHOD_FILES_REFRESH_METADATA "RefreshMetadata"
-#define TRACKER_METHOD_FILES_GET_MTIME "GetMTime"
-#define TRACKER_METHOD_FILES_GET_METADATA_FOLDER_FILES "GetMetadataForFilesInFolder"
-
-/* Deprecated calls */
-#define TRACKER_METHOD_FILES_SEARCH_BY_TEXT_MIME "SearchByTextAndMime"
-#define TRACKER_METHOD_FILES_SEARCH_BY_TEXT_MIME_LOCATION "SearchByTextAndMimeAndLocation"
-#define TRACKER_METHOD_FILES_SEARCH_BY_TEXT_LOCATION "SearchByTextAndLocation"
-
-
-/* signals */
-#define TRACKER_SIGNAL_INDEX_STATUS_CHANGE "IndexStateChange"
-#define TRACKER_SIGNAL_INDEX_FINISHED "IndexFinished"
-#define TRACKER_SIGNAL_INDEX_PROGRESS "IndexProgress"
-
-#define TRACKER_SIGNAL_KEYWORD_ADDED "KeywordAdded"
-#define TRACKER_SIGNAL_KEYWORD_REMOVED "KeywordRemoved"
-
-typedef enum {
-
- DBUS_ACTION_NONE,
-
- DBUS_ACTION_PING,
- DBUS_ACTION_GET_SERVICES,
- DBUS_ACTION_GET_STATS,
- DBUS_ACTION_GET_VERSION,
- DBUS_ACTION_GET_STATUS,
-
- DBUS_ACTION_SET_BOOL_OPTION,
- DBUS_ACTION_SET_INT_OPTION,
- DBUS_ACTION_SHUTDOWN,
- DBUS_ACTION_PROMPT_INDEX_SIGNALS,
-
- DBUS_ACTION_METADATA_GET,
- DBUS_ACTION_METADATA_SET,
- DBUS_ACTION_METADATA_REGISTER_TYPE,
- DBUS_ACTION_METADATA_GET_TYPE_DETAILS,
- DBUS_ACTION_METADATA_GET_REGISTERED_TYPES,
- DBUS_ACTION_METADATA_GET_WRITEABLE_TYPES,
- DBUS_ACTION_METADATA_GET_REGISTERED_CLASSES,
- DBUS_ACTION_METADATA_GET_UNIQUE_VALUES,
-
- DBUS_ACTION_KEYWORDS_GET_LIST,
- DBUS_ACTION_KEYWORDS_GET,
- DBUS_ACTION_KEYWORDS_ADD,
- DBUS_ACTION_KEYWORDS_REMOVE,
- DBUS_ACTION_KEYWORDS_REMOVE_ALL,
- DBUS_ACTION_KEYWORDS_SEARCH,
-
- DBUS_ACTION_SEARCH_GET_HIT_COUNT,
- DBUS_ACTION_SEARCH_GET_HIT_COUNT_ALL,
- DBUS_ACTION_SEARCH_TEXT,
- DBUS_ACTION_SEARCH_TEXT_DETAILED,
- DBUS_ACTION_SEARCH_GET_SNIPPET,
- DBUS_ACTION_SEARCH_FILES_BY_TEXT,
- DBUS_ACTION_SEARCH_METADATA,
- DBUS_ACTION_SEARCH_MATCHING_FIELDS,
- DBUS_ACTION_SEARCH_QUERY,
- DBUS_ACTION_SEARCH_SUGGEST,
-
- DBUS_ACTION_FILES_EXISTS,
- DBUS_ACTION_FILES_CREATE,
- DBUS_ACTION_FILES_DELETE,
- DBUS_ACTION_FILES_GET_SERVICE_TYPE,
- DBUS_ACTION_FILES_GET_TEXT_CONTENTS,
- DBUS_ACTION_FILES_SEARCH_TEXT_CONTENTS,
- DBUS_ACTION_FILES_GET_BY_SERVICE_TYPE,
- DBUS_ACTION_FILES_GET_BY_MIME_TYPE,
- DBUS_ACTION_FILES_GET_BY_MIME_TYPE_VFS,
- DBUS_ACTION_FILES_REFRESH_METADATA,
- DBUS_ACTION_FILES_GET_MTIME,
- DBUS_ACTION_FILES_GET_METADATA_FOLDER_FILES,
-
- DBUS_ACTION_FILES_SEARCH_BY_TEXT_MIME,
- DBUS_ACTION_FILES_SEARCH_BY_TEXT_MIME_LOCATION,
- DBUS_ACTION_FILES_SEARCH_BY_TEXT_LOCATION
-
-} DBusAction;
-
-
-typedef struct {
- DBusConnection *connection;
- DBusMessage *message;
- DBusAction action;
- gpointer user_data;
-} DBusRec;
-
-
-DBusConnection* tracker_dbus_init (void);
-void tracker_dbus_shutdown (DBusConnection *conn);
-void tracker_dbus_send_index_status_change_signal ();
-void tracker_dbus_send_index_finished_signal ();
-void tracker_dbus_send_index_progress_signal (const char *service, const char *uri);
-
-
-
-
-#endif
diff --git a/src/trackerd/tracker-email-evolution.c b/src/trackerd/tracker-email-evolution.c
deleted file mode 100644
index e35408f9f..000000000
--- a/src/trackerd/tracker-email-evolution.c
+++ /dev/null
@@ -1,2812 +0,0 @@
-/* Tracker
- * routines for emails with Evolution
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-email-utils.h"
-#include "tracker-db-email.h"
-#include "tracker-cache.h"
-#include "tracker-dbus.h"
-#include "tracker-watch.h"
-
-#define EVOLUTION_MAIL_DIR_S ".evolution/mail"
-
-
-typedef enum {
- EVOLUTION_MAIL_PROTOCOL_UNKNOWN,
- EVOLUTION_MAIL_PROTOCOL_MBOX,
- EVOLUTION_MAIL_PROTOCOL_IMAP,
- EVOLUTION_MAIL_PROTOCOL_MH,
- EVOLUTION_MAIL_PROTOCOL_MAILDIR
-} EvolutionMailProtocol;
-
-typedef struct {
- gchar *name; /* laurent.aguerreche@free.fr */
- gchar *uid; /* unique ID generated by Evolution, looks like "1134161347.7985.16@foo.bar" */
- gboolean enabled; /* enabled account or not */
- EvolutionMailProtocol protocol; /* protocol used: MBox, IMAP, MH, Maildir */
- gchar *source_url; /* mbox:///var/mail/laurent (used to find where root directory for email files is) */
-} EvolutionAccount;
-
-typedef struct {
- gchar *mail_dir; /* something like "/home/laurent.evolution/mail" */
- GSList *accounts; /* list of EvolutionAccount elements */
- gchar *dir_local; /* something like "/home/laurent.evolution/mail/local" */
- GSList *imap_dirs; /* a directory looks like "/home/laurent.evolution/mail/imap/laurent.aguerreche@free.fr".
- Email address acts as an account name. */
- GSList *mh_dirs; /* list of MH directories */
- GSList *maildir_dirs; /* list of maildir directories */
-} EvolutionConfig;
-
-typedef struct {
- GQueue *elements; /* Stack of elements in XML files.
- Eg. <source><url>foo</url></source> where "url" and "source" will appear in that stack. */
- EvolutionAccount *account; /* Parsing of an XML entity feeds that account. */
-} ParsingAccountState;
-
-enum {
- EVOLUTION_MESSAGE_ANSWERED = 1 << 0,
- EVOLUTION_MESSAGE_DELETED = 1 << 1,
- EVOLUTION_MESSAGE_DRAFT = 1 << 2,
- EVOLUTION_MESSAGE_FLAGGED = 1 << 3,
- EVOLUTION_MESSAGE_SEEN = 1 << 4,
- EVOLUTION_MESSAGE_ATTACHMENTS = 1 << 5,
- EVOLUTION_MESSAGE_ANSWERED_ALL = 1 << 6,
- EVOLUTION_MESSAGE_JUNK = 1 << 7,
- EVOLUTION_MESSAGE_SECURE = 1 << 8
-};
-
-typedef struct {
- gchar *path; /* path the summary file */
- FILE *f; /* opened file descriptor for the file */
- EvolutionAccount *associated_account; /* pointer to the associated Evo account of this file (so we will not free
- this pointer...) */
-} SummaryFile;
-
-typedef struct {
- gint32 version;
- gboolean legacy;
- gint32 flags;
- gint32 nextuid;
- time_t time;
- gint32 saved_count;
- gint32 unread_count;
- gint32 deleted_count;
- gint32 junk_count;
- gchar *uri_prefix;
-} SummaryFileHeader;
-
-/* Some infos are only accessible throw a deep code path but we need to retreive them. */
-typedef struct {
- gchar *mail_uid;
-} EvolutionAdHocInfos;
-
-
-extern Tracker *tracker;
-
-static EvolutionConfig *evolution_config = NULL;
-
-
-static gboolean load_evolution_config (EvolutionConfig **conf);
-static void free_evolution_config (EvolutionConfig *conf);
-
-static EvolutionAccount * copy_evolution_account (EvolutionAccount *account);
-static void free_evolution_account (EvolutionAccount *account);
-static GSList * find_accounts_by_gconf (GSList *found_accounts);
-static void account_start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attr_names,
- const gchar **attr_values,
- gpointer user_data,
- GError **error);
-static void account_text_handler (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error);
-static void account_end_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error);
-
-static gboolean is_in_dir_local (const gchar *dir);
-static gboolean is_in_dir_imap (const gchar *dir);
-static gboolean is_in_dir_imap4 (const gchar *dir);
-
-/*
-static gboolean is_in_dir_mh (const gchar *path);
-static gboolean is_in_dir_maildir (const gchar *path);
-*/
-
-static gchar * get_account_name_in_imap_path (const gchar *path);
-static gchar * get_account_name_from_imap_uri (const gchar *imap_uri);
-
-typedef gboolean (* LoadSummaryFileMetaHeaderFct) (SummaryFile *summary, SummaryFileHeader *header);
-typedef gboolean (* LoadMailMessageFct) (SummaryFile *summary, MailMessage **mail_msg);
-typedef gboolean (* SkipMailMessageFct) (SummaryFile *summary);
-typedef gboolean (* SaveOnDiskMailMessageFct) (DBConnection *db_con, MailMessage *msg);
-
-static void index_mail_messages_by_summary_file (DBConnection *db_con, MailType mail_type,
- const gchar *summary_file_path,
- LoadSummaryFileMetaHeaderFct load_meta_header,
- LoadMailMessageFct load_mail,
- SkipMailMessageFct skip_mail,
- SaveOnDiskMailMessageFct save_ondisk_mail);
-
-static void load_uri_and_status_of_mbox_mail_message (GMimeMessage *g_m_message, MailMessage *msg, gpointer user_data);
-
-static gboolean open_summary_file (const gchar *path, SummaryFile **summary);
-static void free_summary_file (SummaryFile *summary);
-
-static gboolean load_summary_file_header (SummaryFile *summary, SummaryFileHeader **header);
-static void free_summary_file_header (SummaryFileHeader *header);
-static gboolean load_summary_file_meta_header_for_local (SummaryFile *summary, SummaryFileHeader *header);
-static gboolean load_summary_file_meta_header_for_imap (SummaryFile *summary, SummaryFileHeader *header);
-//static gboolean load_summary_file_meta_header_for_maildir (SummaryFile *summary, SummaryFileHeader *header);
-
-/* static gboolean load_mail_message_for_local (SummaryFile *summary, MailMessage **mail_msg); */
-static gboolean load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg);
-static gboolean load_mail_message_for_imap4 (SummaryFile *summary, MailMessage **mail_msg);
-static gboolean do_load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info);
-//static gboolean load_mail_message_for_maildir (SummaryFile *summary, MailMessage **mail_msg);
-static gboolean load_mail_message (SummaryFile *summary, MailMessage *mail_msg);
-
-/* static gboolean skip_mail_message_for_local (SummaryFile *summary); */
-static gboolean skip_mail_message_for_imap (SummaryFile *summary);
-static gboolean skip_mail_message_for_imap4 (SummaryFile *summary);
-static gboolean do_skip_mail_message_for_imap (SummaryFile *summary, gboolean do_skipping_of_content_info);
-//static gboolean skip_mail_message_for_maildir (SummaryFile *summary);
-static gboolean skip_mail_message (SummaryFile *summary);
-
-static gboolean skip_loading_content_info (SummaryFile *summary);
-static gboolean do_skip_loading_content_info (SummaryFile *summary);
-
-static gboolean save_ondisk_email_message_for_imap (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean save_ondisk_email_message_for_imap4 (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean do_save_ondisk_email_message_for_imap (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean do_save_ondisk_email_message (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean index_mail_parts (DBConnection *db_con, MailMessage *mail_msg, const gchar *mail_part_radix);
-
-static GSList * add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s);
-
-static gboolean scan_summary_for_junk (SummaryFile *summary, guint32 *uid, MailType type);
-
-static inline gboolean decode_gint32 (FILE *f, gint32 *n);
-static inline gboolean skip_gint32_decoding (FILE *f);
-static inline gboolean decode_guint32 (FILE *f, guint32 *n);
-static inline gboolean skip_guint32_decoding (FILE *f);
-static inline gboolean decode_time_t (FILE *f, time_t *t);
-static inline gboolean skip_time_t_decoding (FILE *f);
-static inline gboolean decode_off_t (FILE *f, off_t *t);
-static inline gboolean skip_off_t_decoding (FILE *f);
-static inline gboolean decode_string (FILE *f, gchar **str);
-static inline gboolean skip_string_decoding (FILE *f);
-static inline gboolean skip_token_decoding (FILE *f);
-
-static gchar * g_unescape_uri_string (const gchar *escaped, const gchar *illegal_characters);
-static void check_summary_file (DBConnection *db_con, const gchar *filename, MailStore *store);
-
-static gboolean
-evolution_module_is_running (void)
-{
- return evolution_config != NULL;
-}
-
-/********************************************************************************************
- Public functions
-*********************************************************************************************/
-
-gboolean
-tracker_email_init (void)
-{
- EvolutionConfig *conf;
-
- if (evolution_config) {
- return TRUE;
- }
-
- conf = NULL;
-
- if (load_evolution_config (&conf)) {
- evolution_config = conf;
- }
-
- return evolution_module_is_running ();
-}
-
-
-gboolean
-tracker_email_finalize (void)
-{
- if (!evolution_config) {
- return TRUE;
- }
-
- free_evolution_config (evolution_config);
- evolution_config = NULL;
-
- return !evolution_module_is_running ();
-}
-
-
-void
-tracker_email_watch_emails (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
-
- /* if initial indexing has not finished reset mtime on all email stuff so they are rechecked */
- if (tracker_db_get_option_int (db_con->common, "InitialIndex") == 1) {
- char *sql = g_strdup_printf ("update Services set mtime = 0 where path like '%s/.evolution/%s'", g_get_home_dir (), "%");
-
- tracker_db_interface_execute_query (db_con->db, NULL, sql);
- g_free (sql);
- }
-
- /* check all registered mbox/paths for deletions */
- result_set = tracker_db_email_get_mboxes (db_con);
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *filename, *path;
- MailStore *store;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 2, &filename,
- 3, &path,
- -1);
-
- store = tracker_db_email_get_mbox_details (db_con, path);
-
- if (store) {
- check_summary_file (db_con, filename, store);
- tracker_db_email_free_mail_store (store);
- }
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- email_watch_directory (evolution_config->dir_local, "EvolutionEmails");
-
- g_slist_foreach (evolution_config->imap_dirs, (GFunc) email_watch_directory, "EvolutionEmails");
- g_slist_foreach (evolution_config->mh_dirs, (GFunc) email_watch_directory, "EvolutionEmails");
- g_slist_foreach (evolution_config->maildir_dirs, (GFunc) email_watch_directory, "EvolutionEmails");
-}
-
-
-static gboolean
-evolution_file_is_interesting (FileInfo *info)
-{
- GSList *dir;
-
- g_return_val_if_fail (info, FALSE);
- g_return_val_if_fail (info->uri, FALSE);
- g_return_val_if_fail (evolution_config, FALSE);
- g_return_val_if_fail (evolution_config->mail_dir, FALSE);
-
- /* mbox/pop/imap all have summary files (*.ev-summary or "summary") */
- if ((strcmp (info->uri, "summary") == 0) || g_str_has_suffix (info->uri, "summary")) {
- return (!g_str_has_suffix (info->uri, "Drafts.ev-summary") && !g_str_has_suffix (info->uri, "Outbox.ev-summary"));
- } else {
- return FALSE;
- }
-
- /* But emails into MH dirs need to be treat separately since they can
- be anywhere! */
- for (dir = evolution_config->mh_dirs; dir; dir = dir->next) {
- const gchar *dir_path;
- gchar *mime;
- gboolean result;
-
- dir_path = dir->data;
-
- if (g_str_has_prefix (info->uri, dir_path)) {
- mime = tracker_get_mime_type (info->uri);
- result = (strcmp (mime, "message/rfc822") == 0);
- g_free (mime);
-
- return result;
- }
- }
-
- /* and same thing for maildir dirs */
- for (dir = evolution_config->maildir_dirs; dir; dir = dir->next) {
- const gchar *dir_path;
- gchar *mime;
- gboolean result;
-
- dir_path = dir->data;
-
- if (g_str_has_prefix (info->uri, dir_path)) {
- mime = tracker_get_mime_type (info->uri);
- result = (strcmp (mime, "message/rfc822") == 0);
- g_free (mime);
-
- return result;
- }
- }
-
- return FALSE;
-}
-
-
-gboolean
-tracker_email_index_file (DBConnection *db_con, FileInfo *info)
-{
- gchar *file_name;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (info, FALSE);
-
- if (!evolution_file_is_interesting (info))
- return FALSE;
-
- file_name = g_path_get_basename (info->uri);
-
- if (g_str_has_prefix (file_name, "junk")) goto end_index;
- if (g_str_has_prefix (file_name, "trash")) goto end_index;
- if (g_str_has_prefix (file_name, "outbox")) goto end_index;
- if (g_str_has_prefix (file_name, "drafts")) goto end_index;
-
- tracker_debug ("indexing email summary %s", info->uri);
-
- if (is_in_dir_local (info->uri) && g_str_has_suffix (file_name, ".ev-summary")) {
- /* a MBox file changed */
- gchar *mbox_file;
- SummaryFile *summary;
-
- mbox_file = tracker_get_radix_by_suffix (info->uri, ".ev-summary");
-
- tracker_debug ("summary %s is an mbox", info->uri);
-
- /* check mbox is registered */
- if (tracker_db_email_get_mbox_id (db_con, mbox_file) == -1) {
- gchar *uri_prefix, *mail_path1, *mail_path2;
-
- gchar *mbox_dir = g_strconcat (evolution_config->dir_local, "/", NULL);
- mail_path1 = tracker_string_replace (mbox_file, mbox_dir, NULL);
- g_free (mbox_dir);
-
-
- mail_path2 = tracker_string_replace (mail_path1, ".sbd", NULL);
-
- uri_prefix = g_strdup_printf ("email://%s/%s;uid=", "local@local", mail_path2);
-
- g_free (mail_path1);
- g_free (mail_path2);
-
- tracker_db_email_register_mbox (db_con, MAIL_APP_EVOLUTION, MAIL_TYPE_MBOX ,mbox_file, info->uri, uri_prefix);
-
- g_free (uri_prefix);
-
- }
-
- MailStore *store = tracker_db_email_get_mbox_details (db_con, mbox_file);
-
- summary = NULL;
-
- if (store && open_summary_file (info->uri, &summary)) {
- SummaryFileHeader *header = NULL;
-
- tracker_info ("investigating summary file %s", mbox_file);
-
- if (!load_summary_file_header (summary, &header)) {
- tracker_error ("ERROR: failed to load summary file %s", info->uri);
- free_summary_file (summary);
- goto end_index;
- }
-
- if (!load_summary_file_meta_header_for_local (summary, header)) {
- tracker_error ("ERROR: failed to load summary header file %s", info->uri);
- free_summary_file_header (header);
- free_summary_file (summary);
- goto end_index;
- }
-
-
- if (!email_parse_mail_file_and_save_new_emails (db_con, MAIL_APP_EVOLUTION, mbox_file,
- load_uri_and_status_of_mbox_mail_message, NULL,
- NULL, NULL,
- store)) {
- tracker_info ("setting junk status on email file %s", mbox_file);
- tracker_db_email_flag_mbox_junk (db_con, mbox_file);
- } else {
- tracker_db_email_set_message_counts (db_con, mbox_file, store->mail_count, store->junk_count, store->delete_count);
- tracker_debug ("Number of existing messages in %s are %d, %d junk, %d deleted and header totals are %d, %d, %d", mbox_file,
- store->mail_count, store->junk_count, store->delete_count, header->saved_count, header->junk_count, header->deleted_count);
- }
-
- free_summary_file_header (header);
- free_summary_file (summary);
- } else {
- tracker_error ("ERROR: failed to open summary file %s", info->uri);
- }
-
- g_free (mbox_file);
-
- if (store) {
- tracker_db_email_free_mail_store (store);
- }
-
-
- } else if (is_in_dir_imap (info->uri) || is_in_dir_imap4 (info->uri)) {
-
- if (strcmp (file_name, "summary") == 0) {
-
- if (is_in_dir_imap4 (info->uri)) {
- index_mail_messages_by_summary_file (db_con, MAIL_TYPE_IMAP4, info->uri,
- load_summary_file_meta_header_for_imap,
- load_mail_message_for_imap4,
- skip_mail_message_for_imap4,
- save_ondisk_email_message_for_imap4);
- } else {
- index_mail_messages_by_summary_file (db_con, MAIL_TYPE_IMAP, info->uri,
- load_summary_file_meta_header_for_imap,
- load_mail_message_for_imap,
- skip_mail_message_for_imap,
- save_ondisk_email_message_for_imap);
- }
- }
-
-
-
-/* TO DO : add support for mail_dir and mh */
-/* } else if (info->mime && strcmp (info->mime, "message/rfc822") == 0 && g_str_has_suffix (file_name, ".")) {
-
- MailMessage *ondisk_msg;
-
- ondisk_msg = email_parse_mail_message_by_path (MAIL_APP_EVOLUTION, info->uri, NULL);
- if (ondisk_msg) {
- tracker_db_email_update_email (db_con, ondisk_msg);
- email_free_mail_message (ondisk_msg);
- }
-
-
- } else if (is_in_dir_maildir (info->uri)) {
-
- if (g_str_has_suffix (info->uri, ".ev-summary")) {
- index_mail_messages_by_summary_file (db_con, info->uri, MAIL_TYPE_MAILDIR,
- load_summary_file_meta_header_for_maildir,
- load_mail_message_for_maildir,
- skip_mail_message_for_maildir);
-
- } else if (info->mime && strcmp (info->mime, "message/rfc822") == 0) {
- MailMessage *ondisk_msg;
-
- ondisk_msg = email_parse_mail_message_by_path (MAIL_APP_EVOLUTION, info->uri, NULL);
- if (ondisk_msg) {
- tracker_db_email_update_email (db_con, ondisk_msg);
- email_free_mail_message (ondisk_msg);
- }
- }
-
- } else if (info->mime && strcmp (info->mime, "message/rfc822") == 0) {
-
-
- if (email_mh_is_in_a_mh_dir (info->uri)) {
-
- try_to_save_ondisk_email_message (db_con, info->uri, NULL);
-
- }
-*/
- }
-
- end_index:
- g_free (file_name);
-
- return TRUE;
-}
-
-const gchar *
-tracker_email_get_name (void)
-{
- return "EvolutionEmails";
-}
-
-
-/********************************************************************************************
- Private functions
-*********************************************************************************************/
-
-#define HEX_ESCAPE '%'
-
-static gint
-hex_to_int (gchar c)
-{
- return c >= '0' && c <= '9' ? c - '0'
- : c >= 'A' && c <= 'F' ? c - 'A' + 10
- : c >= 'a' && c <= 'f' ? c - 'a' + 10
- : -1;
-}
-
-
-static gint
-unescape_character (const gchar *scanner)
-{
- gint first_digit;
- gint second_digit;
-
- first_digit = hex_to_int (*scanner++);
-
- if (first_digit < 0) {
- return -1;
- }
-
- second_digit = hex_to_int (*scanner++);
- if (second_digit < 0) {
- return -1;
- }
-
- return (first_digit << 4) | second_digit;
-}
-
-
-static gchar *
-g_unescape_uri_string (const gchar *escaped, const gchar *illegal_characters)
-{
- const gchar *in;
- gchar *out, *result;
- gint character;
-
- if (escaped == NULL) {
- return NULL;
- }
-
- result = g_malloc (strlen (escaped) + 1);
-
- out = result;
- for (in = escaped; *in != '\0'; in++) {
- character = *in;
- if (character == HEX_ESCAPE) {
-
- character = unescape_character (in + 1);
-
- /* Check for an illegal character. We consider '\0' illegal here. */
- if (character == 0 || (illegal_characters != NULL && strchr (illegal_characters, (char)character) != NULL)) {
- g_free (result);
- return NULL;
- }
- in += 2;
- }
- *out++ = character;
- }
-
- *out = '\0';
-
- //g_assert (out - result <= strlen (escaped));
-
- if (!g_utf8_validate (result, -1, NULL)) {
- g_free (result);
- return NULL;
- }
-
- return result;
-}
-
-
-static void
-check_summary_file (DBConnection *db_con, const gchar *filename, MailStore *store)
-{
- SummaryFile *summary = NULL;
-
- g_return_if_fail (store);
-
- if (open_summary_file (filename, &summary)) {
- SummaryFileHeader *header;
- gchar *path;
-
- header = NULL;
-
- tracker_log ("Scanning summary file %s for junk", filename);
-
- if (!load_summary_file_header (summary, &header)) {
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary file %s", filename);
- return;
- }
-
- if (store->type == MAIL_TYPE_MBOX) {
-
- if (!load_summary_file_meta_header_for_local (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary header file %s", filename);
- return;
- }
- } else if (store->type == MAIL_TYPE_IMAP || store->type == MAIL_TYPE_IMAP4) {
-
- if (!load_summary_file_meta_header_for_imap (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary header file %s", filename);
- return;
- }
- } else {
- tracker_error ("ERROR: summary file not supported");
- free_summary_file_header (header);
- free_summary_file (summary);
- return;
-
- }
-
- path = tracker_db_email_get_mbox_path (db_con, filename);
-
- if ((header->junk_count > store->junk_count) || (header->deleted_count > store->delete_count)) {
-
- gchar *mbox_id = tracker_int_to_str (tracker_db_email_get_mbox_id (db_con, path));
- gint i;
-
- for (i = 0; i < header->saved_count ; i++) {
- guint32 uid = 0;
-
- if (scan_summary_for_junk (summary, &uid, store->type)) {
- if (uid > 0) {
- gchar *uri, *str_uid;
-
- str_uid = tracker_uint_to_str (uid);
-
- tracker_db_email_insert_junk (db_con, path, uid);
-
- uri = g_strconcat (store->uri_prefix, str_uid, NULL);
-
- tracker_db_email_delete_email (db_con, uri);
-
- g_free (uri);
- g_free (str_uid);
-
- }
- } else {
- tracker_error ("ERROR: whilst scanning summary file");
- return;
- break;
- }
- }
- g_free (mbox_id);
- }
- tracker_db_email_reset_mbox_junk (db_con, path);
- tracker_db_email_set_message_counts (db_con, path, store->mail_count, header->junk_count, header->deleted_count);
-
- g_free (path);
-
- free_summary_file_header (header);
- free_summary_file (summary);
- }
-}
-
-
-static gchar *
-get_account_name_from_imap_uri (const gchar *imap_uri)
-{
- /* Assume url schema is:
- imap://foo@imap.free.fr/;etc
- or
- imap://foo;auth=DIGEST-MD5@imap.bar.com/;etc
-
- We try to get "foo@imap.free.fr".
- */
-
- /* check for embedded @ and then look for first colon after that */
-
- const gchar *start = imap_uri + 7;
- const gchar *at = strchr (start, '@');
- const gchar *semic = strchr (start, ';');
-
- gchar *user_name = NULL;
- gchar *at_host_name = NULL;
- gchar *account_name = NULL;
-
- if ( strlen (imap_uri) < 7 || at == NULL ) {
- return NULL;
- }
-
- if (semic < at) {
- /* we have a ";auth=FOO@host" schema
- Set semic to the next semicolon, which ends the hostname. */
- user_name = g_strndup (start, semic - start);
- /* look for ';' at the end of the domain name */
- semic = strchr (at, ';');
- } else {
- user_name = g_strndup (start, at - start);
- }
-
- at_host_name = g_strndup (at, (semic - 1) - at);
-
- account_name = g_strconcat (user_name, at_host_name, NULL);
-
- g_free (user_name);
- g_free (at_host_name);
-
- return account_name;
-}
-
-
-static gboolean
-load_evolution_config (EvolutionConfig **conf)
-{
- char *dir_imap, *dir_imap4;
- EvolutionConfig *m_conf;
- GSList *accounts;
- const GSList *account;
-
- if (*conf) {
- free_evolution_config (*conf);
- }
-
- *conf = g_slice_new0 (EvolutionConfig);
- m_conf = *conf;
-
- m_conf->mail_dir = g_build_filename (g_get_home_dir (), EVOLUTION_MAIL_DIR_S, NULL);
- m_conf->dir_local = g_build_filename (m_conf->mail_dir, "local", NULL);
-
- dir_imap = g_build_filename (m_conf->mail_dir, "imap", NULL);
- dir_imap4 = g_build_filename (m_conf->mail_dir, "imap4", NULL);
-
- accounts = find_accounts_by_gconf (NULL);
-
- tracker_log ("Checking for Evolution email accounts...");
-
- for (account = accounts; account; account = account->next) {
- EvolutionAccount *evo_acc = account->data;
-
- if (evo_acc->enabled) {
- m_conf->accounts = g_slist_prepend (m_conf->accounts, copy_evolution_account (evo_acc));
-
- if (evo_acc->source_url) {
-
- switch (evo_acc->protocol) {
- case EVOLUTION_MAIL_PROTOCOL_MBOX: {
- /* currently nothing */
- break;
- }
-
- case EVOLUTION_MAIL_PROTOCOL_IMAP: {
-
- gchar *account_name = get_account_name_from_imap_uri (evo_acc->source_url);
-
- if (account_name) {
-
- tracker_log ("Found imap account %s", account_name);
-
- m_conf->imap_dirs = g_slist_prepend (m_conf->imap_dirs, g_build_filename (dir_imap, account_name, NULL));
-
- g_free (account_name);
-
- }
-
- break;
- }
-
- case EVOLUTION_MAIL_PROTOCOL_MH: {
- m_conf->mh_dirs = g_slist_prepend (m_conf->mh_dirs, g_strdup (evo_acc->source_url + 5));
- break;
- }
-
- case EVOLUTION_MAIL_PROTOCOL_MAILDIR: {
- m_conf->maildir_dirs = g_slist_prepend (m_conf->maildir_dirs, g_strdup (evo_acc->source_url + 10));
- break;
- }
-
- case EVOLUTION_MAIL_PROTOCOL_UNKNOWN:
- default:
- break;
- }
- }
- }
- }
-
- g_slist_foreach (accounts, (GFunc) free_evolution_account, NULL);
- g_slist_free (accounts);
-
- g_free (dir_imap);
- g_free (dir_imap4);
-
- return TRUE;
-}
-
-
-static void
-free_evolution_config (EvolutionConfig *conf)
-{
- if (!conf) {
- return;
- }
-
- if (conf->mail_dir) {
- g_free (conf->mail_dir);
- }
-
- if (conf->dir_local) {
- g_free (conf->dir_local);
- }
-
- #define FREE_MY_LIST(list, free_fct) \
- g_slist_foreach (list, (GFunc) free_fct, NULL); \
- g_slist_free (list);
-
- FREE_MY_LIST (conf->accounts, free_evolution_account);
- FREE_MY_LIST (conf->imap_dirs, g_free);
- FREE_MY_LIST (conf->mh_dirs, g_free);
- FREE_MY_LIST (conf->maildir_dirs, g_free);
-
- #undef FREE_MY_LIST
-
- g_slice_free (EvolutionConfig, conf);
-}
-
-
-static EvolutionAccount *
-copy_evolution_account (EvolutionAccount *account)
-{
- EvolutionAccount *ret;
-
- g_return_val_if_fail (account, NULL);
-
- ret = g_slice_new0 (EvolutionAccount);
-
- #define DEEP_COPY_STR(val) \
- if (account->val) { \
- ret->val = g_strdup (account->val); \
- }
-
- DEEP_COPY_STR (name);
- DEEP_COPY_STR (uid);
- ret->enabled = account->enabled;
- ret->protocol = account->protocol;
- DEEP_COPY_STR (source_url);
-
- #undef DEEP_COPY_STR
-
- return ret;
-}
-
-
-static void
-free_evolution_account (EvolutionAccount *account)
-{
- if (!account) {
- return;
- }
-
- if (account->name) {
- g_free (account->name);
- }
-
- if (account->uid) {
- g_free (account->uid);
- }
-
- if (account->source_url) {
- g_free (account->source_url);
- }
-
- g_slice_free (EvolutionAccount, account);
-}
-
-
-static GSList *
-find_accounts_by_gconf (GSList *found_accounts)
-{
- gchar *argv[4];
- gchar *text;
-
- argv[0] = "gconftool";
- argv[1] = "--get";
- argv[2] = "/apps/evolution/mail/accounts";
- argv[3] = NULL;
-
- text = NULL;
-
- if (!g_spawn_sync (NULL,
- argv,
- NULL,
- G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL,
- NULL,
- NULL,
- &text,
- NULL,
- NULL,
- NULL)) {
-
- argv[0] = "gconftool-2";
-
- if (!g_spawn_sync (NULL,
- argv,
- NULL,
- G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL,
- NULL,
- NULL,
- &text,
- NULL,
- NULL,
- NULL)) {
-
- return found_accounts;
- }
- }
-
-
- if (text) {
- gchar *to_parse;
- GMarkupParser *parser;
- GMarkupParseContext *parser_context;
- gchar **accounts;
- ParsingAccountState *state;
-
- if (text[0] == '[') {
- size_t len;
-
- /* Usually a string returned by gconftool begins by character '['.
- We remove this character. */
-
- to_parse = text + 1;
-
- /* and then it probably ends with string "]\n"... */
- len = strlen (text);
- if (text[len - 1] == '\n' && text[len - 2] == ']') {
- text[len - 2] = '\0';
- }
- } else {
- to_parse = text;
- }
-
- parser = g_slice_new0 (GMarkupParser);
- parser->start_element = account_start_element_handler;
- parser->text = account_text_handler;
- parser->end_element = account_end_element_handler;
-
- state = g_slice_new0 (ParsingAccountState);
- state->elements = g_queue_new ();
-
- parser_context = g_markup_parse_context_new (parser, 0, state, NULL);
-
- /* Accounts look that way:
-
- <?xml version="1.0"?>
- <account name="laurent.aguerreche@free.fr" uid="1134161347.7985.16@foo.bar" enabled="true"><identity><...etc...></account>
- ,<?xml version="1.0"?>
- <account name="whrahahaaa@free.fr" uid="1147098156.5252.0@foo.bar" enabled="true"><identity><...etc...></account>
-
- so we split accounts around string "\n,".
- */
-
- accounts = g_strsplit (to_parse, "\n,", -1);
-
- if (accounts) {
- gchar **account;
-
- for (account = accounts; *account; account++) {
- state->account = g_slice_new0 (EvolutionAccount);
- g_markup_parse_context_parse (parser_context, *account, -1, NULL);
- found_accounts = g_slist_prepend (found_accounts, state->account);
- }
-
- g_strfreev (accounts);
- }
-
- g_markup_parse_context_free (parser_context);
-
- g_queue_free (state->elements);
- g_slice_free (ParsingAccountState, state);
- g_slice_free (GMarkupParser, parser);
- g_free (text);
- }
-
- return found_accounts;
-}
-
-
-#define ELEMENT_ACCOUNT "account"
-#define ELEMENT_SOURCE "source"
-
-#define ELEMENT_URL "url"
-
-#define ELEMENT_IS(name) (element_name != NULL && strcmp (element_name, (name)) == 0)
-#define PREV_ELEMENT_IS(name) (prev_element_name != NULL && strcmp (prev_element_name, (name)) == 0)
-
-#define ATTRIBUTE_NAME "name"
-#define ATTRIBUTE_UID "uid"
-#define ATTRIBUTE_ENABLED "enabled"
-
-#define ATTRIBUTE_IS(name) (strcmp (attr_names[i], (name)) == 0)
-
-
-static void
-account_start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attr_names,
- const gchar **attr_values,
- gpointer user_data,
- GError **error)
-{
- ParsingAccountState *state;
- EvolutionAccount *account;
-
- state = user_data;
-
- g_return_if_fail (state);
-
- account = state->account;
-
- g_queue_push_head (state->elements, g_strdup (element_name));
-
- if (ELEMENT_IS (ELEMENT_ACCOUNT)) {
- guint i;
- for (i = 0; attr_names[i]; i++) {
- if (ATTRIBUTE_IS (ATTRIBUTE_NAME)) {
- account->name = g_strdup (attr_values[i]);
-
- } else if (ATTRIBUTE_IS (ATTRIBUTE_UID)) {
- account->uid = g_strdup (attr_values[i]);
-
- } else if (ATTRIBUTE_IS (ATTRIBUTE_ENABLED)) {
- account->enabled = (strcmp (attr_values[i], "true") == 0);
- }
- }
- }
-}
-
-
-static void
-account_text_handler (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error)
-{
- ParsingAccountState *state;
- const gchar *element_name, *prev_element_name;
-
- state = user_data;
-
- g_return_if_fail (state);
-
- element_name = g_queue_peek_head (state->elements);
- prev_element_name = g_queue_peek_nth (state->elements, 1);
-
- if (ELEMENT_IS (ELEMENT_URL) && PREV_ELEMENT_IS (ELEMENT_SOURCE)) {
-
- if (text_len > 0 && text) {
- gchar *source_url, *esc_source_url;
-
- source_url = g_strndup (text, text_len);
-
- tracker_log ("Found email account uri %s", source_url);
-
- if (strncmp (source_url, "mbox:", 5) == 0 || strncmp (source_url, "pop", 3) == 0) {
- state->account->protocol = EVOLUTION_MAIL_PROTOCOL_MBOX;
- } else if ((strncmp (source_url, "imap:", 5) == 0) || (strncmp (source_url, "imap4:", 6) == 0)) {
- state->account->protocol = EVOLUTION_MAIL_PROTOCOL_IMAP;
- } else if (strncmp (source_url, "mh:", 3) == 0) {
- state->account->protocol = EVOLUTION_MAIL_PROTOCOL_MH;
- } else if (strncmp (source_url, "maildir:", 8) == 0) {
- state->account->protocol = EVOLUTION_MAIL_PROTOCOL_MAILDIR;
- } else {
- state->account->protocol = EVOLUTION_MAIL_PROTOCOL_MBOX;
- }
-
- esc_source_url = g_unescape_uri_string (source_url, "");
- g_free (source_url);
-
- state->account->source_url = esc_source_url;
- } else {
- state->account->source_url = NULL;
- state->account->protocol = EVOLUTION_MAIL_PROTOCOL_UNKNOWN;
- }
- }
-}
-
-
-static void
-account_end_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error)
-{
- ParsingAccountState *state;
- gchar *my_element_name;
-
- state = user_data;
-
- g_return_if_fail (state);
-
- my_element_name = g_queue_pop_head (state->elements);
-
- g_free (my_element_name);
-}
-
-
-static gboolean
-is_in_dir_local (const gchar *path)
-{
- g_return_val_if_fail (path, FALSE);
-
- return (g_str_has_prefix (path, evolution_config->dir_local));
-}
-
-
-static gboolean
-is_in_dir_imap (const gchar *path)
-{
- g_return_val_if_fail (path, FALSE);
-
- return strstr (path, G_DIR_SEPARATOR_S "imap") != NULL;
-}
-
-
-static gboolean
-is_in_dir_imap4 (const gchar *path)
-{
- g_return_val_if_fail (path, FALSE);
-
- return strstr (path, G_DIR_SEPARATOR_S "imap4" G_DIR_SEPARATOR_S) != NULL;
-}
-
-/*
-static gboolean
-is_in_dir_mh (const gchar *path)
-{
- const GSList *dir;
-
- g_return_val_if_fail (path, FALSE);
-
- for (dir = evolution_config->mh_dirs; dir; dir = dir->next) {
- const gchar *dir_path;
-
- dir_path = dir->data;
- if (g_str_has_prefix (path, dir_path)) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-static gboolean
-is_in_dir_maildir (const gchar *path)
-{
- const GSList *dir;
-
- g_return_val_if_fail (path, FALSE);
-
- for (dir = evolution_config->maildir_dirs; dir; dir = dir->next) {
- const gchar *dir_path;
-
- dir_path = dir->data;
- if (g_str_has_prefix (path, dir_path)) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-*/
-
-
-static gchar *
-get_account_name_in_imap_path (const gchar *path)
-{
- const gchar *pos_imap;
-
- g_return_val_if_fail (path, NULL);
-
- pos_imap = strstr (path, G_DIR_SEPARATOR_S "imap");
-
- if (pos_imap) {
- const gchar *s, *s_end;
-
- s = pos_imap + 5; /* strlen (G_DIR_SEPARATOR_S "imap") == 5 */
-
- if (s[0] == '4') {
- /* we are reading the end of word "imap4" */
- s++;
-
- if (s[0] == '\0') {
- return NULL;
- }
- }
-
- /* we are currently on a G_DIR_SEPARATOR character. Let's go further. */
- s++;
-
- if (s[0] == G_DIR_SEPARATOR || s[0] == '\0') {
- return NULL;
- }
-
- s_end = strchr (s, G_DIR_SEPARATOR);
-
- return (s_end) ? g_strndup (s, s_end - s) : g_strdup (s);
- }
-
- return NULL;
-}
-
-
-static void
-index_mail_messages_by_summary_file (DBConnection *db_con,
- MailType mail_type,
- const gchar *summary_file_path,
- LoadSummaryFileMetaHeaderFct load_meta_header,
- LoadMailMessageFct load_mail,
- SkipMailMessageFct skip_mail,
- SaveOnDiskMailMessageFct save_ondisk_mail)
-{
- SummaryFile *summary = NULL;
-
- if (!tracker->is_running) {
- return;
- }
-
- if (!tracker_config_get_enable_indexing (tracker->config)) {
- return;
- }
-
- if (open_summary_file (summary_file_path, &summary)) {
- SummaryFileHeader *header;
- gint32 mail_count, junk_count, delete_count;
- gchar *dir;
-
- header = NULL;
-
- if (!load_summary_file_header (summary, &header)) {
- free_summary_file (summary);
- return;
- }
-
- if (!(*load_meta_header) (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- return;
- }
-
- dir = g_path_get_dirname (summary->path);
-
- /* check summary file is registered */
- if (tracker_db_email_get_mbox_id (db_con, dir) == -1) {
- const gchar *pos_folders = strstr (dir, G_DIR_SEPARATOR_S "folders" G_DIR_SEPARATOR_S);
-
- if (pos_folders) {
- size_t len_pos_folders = strlen (pos_folders);
-
- if (len_pos_folders > 9) { /* strlen ("/folders/") == 9 */
- gchar *uri_dir, *clean_uri_dir, *uri_prefix;
-
- pos_folders += 9;
-
- uri_dir = NULL;
-
- /* we find relative summary file path from directory INBOX (or Sent, etc.).
- It can be INBOX/, INBOX/sent-mail ,etc. */
- if (pos_folders) {
- uri_dir = g_strdup (pos_folders);
- }
-
- clean_uri_dir = NULL;
-
- if (uri_dir) {
- gchar *tmp_str = tracker_string_replace (uri_dir, "subfolders/", NULL);
- clean_uri_dir = tracker_string_replace (tmp_str, "folders/", NULL);
- g_free (tmp_str);
- }
-
- if (clean_uri_dir) {
- uri_prefix = g_strdup_printf ("email://%s/%s;uid=", summary->associated_account->uid, clean_uri_dir);
- g_free (clean_uri_dir);
- } else {
- uri_prefix = g_strdup_printf ("email://%s;uid=", summary->associated_account->uid);
- }
-
- g_free (uri_dir);
-
- tracker_db_email_register_mbox (db_con, MAIL_APP_EVOLUTION, mail_type, dir, summary_file_path, uri_prefix);
-
- g_free (uri_prefix);
- }
- }
- }
-
- MailStore *store = tracker_db_email_get_mbox_details (db_con, dir);
-
- if (!store) {
- tracker_error ("ERROR: could not retrieve store for file %s", dir);
- free_summary_file (summary);
- free_summary_file_header (header);
-
- g_free (dir);
- return;
- }
-
- tracker_debug ("Number of existing messages in %s are %d, %d junk, %d deleted and header totals are %d, %d, %d", dir,
- store->mail_count, store->junk_count, store->delete_count, header->saved_count, header->junk_count, header->deleted_count);
-
- tracker->mbox_count++;
- tracker_dbus_send_index_progress_signal ("Emails", dir);
-
- if (header->saved_count > store->mail_count) {
- /* assume new emails received */
-
- gint i;
-
- /* skip already indexed emails */
- for (i = 0; i < store->mail_count; i++) {
- if (!(*skip_mail) (summary)) {
- tracker_error ("ERROR: skipping email no. %d in summary file", i+1);
- tracker_db_email_free_mail_store (store);
- free_summary_file (summary);
- free_summary_file_header (header);
- tracker->mbox_processed++;
- g_free (dir);
- return;
- }
- }
-
- mail_count = 0;
- junk_count = 0;
- delete_count = 0;
-
- /* now we will read the new emails */
- for (i = store->mail_count; i < header->saved_count; i++) {
- MailMessage *mail_msg = NULL;
-
- mail_count++;
- tracker_debug ("processing email no. %d / %" G_GINT32_FORMAT, store->mail_count + 1, header->saved_count);
-
- if (!(*load_mail) (summary, &mail_msg)) {
- tracker_error ("ERROR: loading email no. %d in summary file", mail_count);
- tracker_db_email_free_mail_store (store);
- free_summary_file (summary);
- free_summary_file_header (header);
- tracker->mbox_processed++;
- g_free (dir);
- return;
- }
-
- gchar *sum_file_dir = g_path_get_dirname (summary->path);
- mail_msg->path = g_strdup_printf ("%s%s%d.", sum_file_dir, G_DIR_SEPARATOR_S, mail_msg->id);
- g_free (sum_file_dir);
-
- gchar *str_id = tracker_int_to_str (mail_msg->id);
- mail_msg->uri = g_strconcat (store->uri_prefix, str_id, NULL);
- g_free (str_id);
-
- mail_msg->store = store;
-
- if (!(*save_ondisk_mail) (db_con, mail_msg)) {
- tracker_log ("WARNING: Message, or message parts, could not be found locally - if you are using IMAP make sure you have selected the \"copy folder content locally for offline operation\" option in Evolution");
- /* we do not have all infos but we still save them */
- if (!tracker_db_email_save_email (db_con, mail_msg, MAIL_APP_EVOLUTION)) {
- tracker_log ("Failed to save email");
- }
- }
-
- if (mail_msg->junk) {
- junk_count++;
- }
-
- if (mail_msg->deleted) {
- delete_count++;
- }
-
- email_free_mail_file (mail_msg->parent_mail_file);
- email_free_mail_message (mail_msg);
-
- if (!tracker_cache_process_events (db_con->data, TRUE)) {
- tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE);
- tracker->shutdown = TRUE;
- return;
- }
-
- if (tracker_db_regulate_transactions (db_con->data, 500)) {
- if (tracker_config_get_verbosity (tracker->config) == 1) {
- tracker_log ("indexing #%d - Emails in %s", tracker->index_count, dir);
- }
-
- if (tracker->index_count % 1000 == 0) {
- tracker_db_end_index_transaction (db_con->data);
- tracker_db_refresh_all (db_con->data);
- tracker_db_start_index_transaction (db_con->data);
- }
-
- tracker_dbus_send_index_progress_signal ("Emails", dir);
-
- }
-
-
- }
-
- tracker_log ("No. of new emails indexed in summary file %s is %d, %d junk, %d deleted", dir, mail_count, junk_count, delete_count);
-
- tracker_db_email_set_message_counts (db_con, dir, store->mail_count, store->junk_count, store->delete_count);
-
- } else {
- /* schedule check for junk */
- tracker_db_email_flag_mbox_junk (db_con, dir);
- }
-
- tracker->mbox_processed++;
- tracker_dbus_send_index_progress_signal ("Emails", dir);
-
- tracker_db_email_free_mail_store (store);
- free_summary_file (summary);
- free_summary_file_header (header);
-
- g_free (dir);
- }
-}
-
-
-static void
-load_uri_and_status_of_mbox_mail_message (GMimeMessage *g_m_message, MailMessage *msg, gpointer user_data)
-{
- const gchar *field;
- gchar **parts;
- unsigned long int flags;
-
- g_return_if_fail (g_m_message);
- g_return_if_fail (msg);
-
- field = g_mime_message_get_header (g_m_message, "X-Evolution");
-
- g_return_if_fail (field);
-
- /* we want to split lines with that form: 00001fd3-0100 into 00001fd3 and 0100 */
- parts = g_strsplit (field, "-", -1);
-
- if (!parts || !parts[0] || !parts[1]) {
- g_strfreev (parts);
- return;
- }
-
- /* parts[0] contains UID to contruct mail URI */
-
- msg->id = strtoul (parts[0], NULL, 16);
-
- /* parts[1] contains flags for status */
-
- flags = strtoul (parts[1], NULL, 16);
-
- if ((flags & EVOLUTION_MESSAGE_DELETED) == EVOLUTION_MESSAGE_DELETED) {
- msg->deleted = TRUE;
- }
-
- if ((flags & EVOLUTION_MESSAGE_JUNK) == EVOLUTION_MESSAGE_JUNK) {
- msg->junk = TRUE;
- }
-
- g_strfreev (parts);
-
-}
-
-
-static gboolean
-open_summary_file (const gchar *path, SummaryFile **summary)
-{
- gint fd;
- FILE *f;
-
- g_return_val_if_fail (path, FALSE);
-
- if (!tracker_file_is_indexable (path)) {
- return FALSE;
- }
-
- if (*summary) {
- free_summary_file (*summary);
- *summary = NULL;
- }
-
- fd = tracker_file_open (path, TRUE);
-
- if (fd == -1) {
- return FALSE;
- }
-
- f = fdopen (fd, "r");
- if (!f) {
- tracker_file_close (fd, TRUE);
- return FALSE;
- }
-
- *summary = g_slice_new0 (SummaryFile);
- (*summary)->f = f;
- (*summary)->path = g_strdup (path);
-
- if (is_in_dir_local ((*summary)->path)) {
- (*summary)->associated_account = NULL;
- return TRUE;
- }
-
- /* find associated Evo account */
- {
- const GSList *account;
-
- for (account = evolution_config->accounts; account; account = account->next) {
- EvolutionAccount *evo_acc = account->data;
-
- switch (evo_acc->protocol) {
- case EVOLUTION_MAIL_PROTOCOL_MBOX:
-
- if (is_in_dir_local ((*summary)->path)) {
- /* is it possible to have more than one MBox account? */
- (*summary)->associated_account = evo_acc;
- goto loop_exit;
- }
- break;
-
- case EVOLUTION_MAIL_PROTOCOL_IMAP: {
- gchar *account_name = get_account_name_in_imap_path ((*summary)->path);
-
- if (!evo_acc->source_url || !account_name) {
- continue;
- }
-
- tracker_debug ("Account name for summary file is %s and path is %s", account_name, (*summary)->path);
-
- gchar *source_account_name = get_account_name_from_imap_uri (evo_acc->source_url);
-
- if (source_account_name) {
- if (!strcmp (source_account_name, account_name)) {
- (*summary)->associated_account = evo_acc;
- g_free (source_account_name);
- g_free (account_name);
- goto loop_exit;
- }
- g_free (source_account_name);
- }
- g_free (account_name);
- break;
- }
-
- case EVOLUTION_MAIL_PROTOCOL_MH:
- case EVOLUTION_MAIL_PROTOCOL_MAILDIR: {
- gchar *sum_file_dir = g_path_get_dirname ((*summary)->path);
- if (g_str_has_prefix (evo_acc->source_url, sum_file_dir)) {
- (*summary)->associated_account = evo_acc;
- g_free (sum_file_dir);
- goto loop_exit;
- }
- g_free (sum_file_dir);
- break;
- }
-
- default:
- tracker_error ("ERROR: no matching account found for email");
- continue;
- break;
- }
- }
- }
-
- loop_exit:
-
- if (!(*summary)->associated_account) {
- free_summary_file (*summary);
- *summary = NULL;
-
- return FALSE;
- } else {
- return TRUE;
- }
-}
-
-
-static void
-free_summary_file (SummaryFile *summary)
-{
- if (!summary) {
- return;
- }
-
- fclose (summary->f);
-
- g_free (summary->path);
- g_slice_free (SummaryFile, summary);
-}
-
-
-static gboolean
-load_summary_file_header (SummaryFile *summary, SummaryFileHeader **header)
-{
- SummaryFileHeader *h;
- FILE *f;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (*header) {
- free_summary_file_header (*header);
- }
-
- *header = g_slice_new0 (SummaryFileHeader);
-
- h = *header;
-
- h->uri_prefix = NULL;
-
- f = summary->f;
-
-
- if (!decode_gint32 (f, &h->version)) {
- goto error;
- }
-
- tracker_debug ("summary.version = %d", h->version);
-
- if (h->version > 0xff && (h->version & 0xff) < 12) {
- tracker_error ("ERROR: summary file header version too low");
- goto error;
- }
-
- h->legacy = !(h->version < 0x100 && h->version >= 13);
-
- if (h->legacy) {
- tracker_debug ("WARNING: summary file is a legacy version");
- }
-
-
- if (!decode_gint32 (f, &h->flags) ||
- !decode_gint32 (f, &h->nextuid) ||
- !decode_time_t (f, &h->time) ||
- !decode_gint32 (f, &h->saved_count)) {
- goto error;
- }
-
- tracker_debug ("summary.flags = %d", h->flags);
- tracker_debug ("summary.nextuid = %d", h->nextuid);
- tracker_debug ("summary.time = %d", h->time);
- tracker_debug ("summary.count = %" G_GINT32_FORMAT, h->saved_count);
-
- if (!h->legacy) {
- if (!decode_gint32 (f, &h->unread_count) ||
- !decode_gint32 (f, &h->deleted_count) ||
- !decode_gint32 (f, &h->junk_count)) {
- goto error;
- }
- }
-
- tracker_debug ("summary.Unread = %d", h->unread_count);
- tracker_debug ("summary.deleted = %d", h->deleted_count);
- tracker_debug ("summary.junk = %d", h->junk_count);
-
- return TRUE;
-
- error:
- free_summary_file_header (*header);
- *header = NULL;
-
- return FALSE;
-}
-
-
-static void
-free_summary_file_header (SummaryFileHeader *header)
-{
- if (!header) {
- return;
- }
-
- if (header->uri_prefix) {
- g_free (header->uri_prefix);
- }
-
- g_slice_free (SummaryFileHeader, header);
-}
-
-
-static gboolean
-load_summary_file_meta_header_for_local (SummaryFile *summary, SummaryFileHeader *header)
-{
- FILE *f;
- gint32 dummy;
-
- g_return_val_if_fail (summary, FALSE);
-
- f = summary->f;
-
- if (!decode_gint32 (f, &dummy) || /* major */
- !decode_gint32 (f, &dummy) || /* minor */
- !decode_gint32 (f, &dummy)) { /* uid_len */
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static gboolean
-load_summary_file_meta_header_for_imap (SummaryFile *summary, SummaryFileHeader *header)
-{
- FILE *f;
- guint32 dummy0;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (header, FALSE);
-
- f = summary->f;
-
- /* check for legacy version */
- if (header->version != 0x30c) {
- gint32 version, dummy1;
-
- if (!decode_gint32 (f, &version)) {
- return FALSE;
- }
-
- if (version < 0) {
- tracker_error ("ERROR: summary file version too low");
- return FALSE;
- }
-
- /* Right now we only support summary versions 1 through 3 */
- if (version > 3) {
- tracker_error ("ERROR: reported summary version (%" G_GINT32_FORMAT ") is too new", version);
- return FALSE;
- }
-
- if (version == 2) {
- if (!skip_gint32_decoding (f)) {
- return FALSE;
- }
- }
-
- /* validity */
- if (!decode_gint32 (f, &dummy1)) {
- return FALSE;
- }
- } else {
- /* validity */
- if (!decode_guint32 (f, &dummy0)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-/*
-static gboolean
-load_summary_file_meta_header_for_maildir (SummaryFile *summary, SummaryFileHeader *header)
-{
- gint32 version;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (header, FALSE);
-
- return decode_gint32 (summary->f, &version);
-}
-*/
-
-
-/*
-static gboolean
-load_mail_message_for_local (SummaryFile *summary, MailMessage **mail_msg)
-{
- off_t offset;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (*mail_msg) {
- email_free_mail_message (*mail_msg);
- }
-
- *mail_msg = email_allocate_mail_message ();
-
- if (!load_mail_message (summary, *mail_msg)) {
- goto error;
- }
-
- if (!decode_off_t (summary->f, &offset)) {
- goto error;
- }
-
- return TRUE;
-
- error:
- email_free_mail_message (*mail_msg);
- *mail_msg = NULL;
- return FALSE;
-}
-*/
-
-
-static gboolean
-load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg)
-{
- return do_load_mail_message_for_imap (summary, mail_msg, TRUE);
-}
-
-
-static gboolean
-load_mail_message_for_imap4 (SummaryFile *summary, MailMessage **mail_msg)
-{
- return do_load_mail_message_for_imap (summary, mail_msg, FALSE);
-}
-
-
-static gboolean
-do_load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info)
-{
- guint32 server_flags;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (*mail_msg) {
- email_free_mail_message (*mail_msg);
- }
-
- *mail_msg = email_allocate_mail_message ();
-
- if (!load_mail_message (summary, *mail_msg)) {
- goto error;
- }
-
- if (!decode_guint32 (summary->f, &server_flags)) {
- goto error;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- goto error;
- }
- }
-
- return TRUE;
-
- error:
- email_free_mail_message (*mail_msg);
- *mail_msg = NULL;
- return FALSE;
-}
-
-
-/*
-static gchar *
-get_relative_path_from_source_url (const gchar *url)
-{
- size_t url_len, i;
-
- g_return_val_if_fail (url, NULL);
-
- url_len = strlen (url);
- if (url_len == 0) {
- return NULL;
- }
-
- for (i = url_len - 1; i >= 0; i--) {
- if (url[i] == '#') {
- return g_strdup (url + i);
- }
- }
-
- return g_strdup ("");
-}
-*/
-/*
-static gboolean
-load_mail_message_for_maildir (SummaryFile *summary, MailMessage **mail_msg)
-{
- EvolutionAdHocInfos *adhoc_infos;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (*mail_msg) {
- email_free_mail_message (*mail_msg);
- }
-
- *mail_msg = email_allocate_mail_message ();
-
- adhoc_infos = g_slice_new0 (EvolutionAdHocInfos);
-
- if (!load_mail_message (summary, *mail_msg, adhoc_infos)) {
- goto error;
- }
-
- if (adhoc_infos->mail_uid) {
- gchar *uri_dir;
-
- uri_dir = get_relative_path_from_source_url (summary->associated_account->source_url);
- if (!uri_dir) {
- goto error;
- }
-
- (*mail_msg)->uri = make_uri (summary->associated_account->uid, uri_dir, adhoc_infos->mail_uid);
- g_free (uri_dir);
- }
-
- free_evolution_adhoc_infos (adhoc_infos);
-
- return TRUE;
-
- error:
- email_free_mail_message (*mail_msg);
- *mail_msg = NULL;
- return FALSE;
-}
-*/
-
-
-static gboolean
-load_mail_message (SummaryFile *summary, MailMessage *mail_msg)
-{
- FILE *f;
- guint32 flags, size, count;
- time_t date_sent, date_received;
- gchar *uid, *to, *cc, *mlist;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
-
- f = summary->f;
-
- if (!decode_string (f, &uid) ||
- !decode_guint32 (f, &flags) ||
- !decode_guint32 (f, &size) ||
- !decode_time_t (f, &date_sent) ||
- !decode_time_t (f, &date_received) ||
- !decode_string (f, &mail_msg->subject) ||
- !decode_string (f, &mail_msg->from) ||
- !decode_string (f, &to) ||
- !decode_string (f, &cc) ||
- !decode_string (f, &mlist)) {
-
- return FALSE;
- }
-
- g_free (mlist);
-
-
- mail_msg->id = strtoul (uid, NULL, 10);
-
- g_free (uid);
-
- if ((flags & EVOLUTION_MESSAGE_DELETED) == EVOLUTION_MESSAGE_DELETED) {
- mail_msg->deleted = TRUE;
- }
-
- if ((flags & EVOLUTION_MESSAGE_JUNK) == EVOLUTION_MESSAGE_JUNK) {
- mail_msg->junk = TRUE;
- }
-
- mail_msg->date = (long) date_received;
-
- mail_msg->to = add_persons_from_internet_address_list_string_parsing (NULL, to);
- mail_msg->cc = add_persons_from_internet_address_list_string_parsing (NULL, cc);
-
- g_free (to);
- g_free (cc);
-
- skip_gint32_decoding (f); /* mi->message_id.id.part.hi */
- skip_gint32_decoding (f); /* mi->message_id.id.part.lo */
-
- /* references */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.hi */
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.lo */
- }
- } else {
- return FALSE;
- }
-
- /* user flags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* a flag */
- }
- } else {
- return FALSE;
- }
-
- /* user tags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* tag name */
- skip_string_decoding (f); /* tag value */
- }
- } else {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static gboolean
-skip_mail_message_for_imap (SummaryFile *summary)
-{
- return do_skip_mail_message_for_imap (summary, TRUE);
-}
-
-
-static gboolean
-skip_mail_message_for_imap4 (SummaryFile *summary)
-{
- return do_skip_mail_message_for_imap (summary, TRUE);
-}
-
-
-static gboolean
-do_skip_mail_message_for_imap (SummaryFile *summary, gboolean do_skipping_of_content_info)
-{
- g_return_val_if_fail (summary, FALSE);
-
- if (!skip_mail_message (summary)) {
- return FALSE;
- }
-
- if (!skip_guint32_decoding (summary->f)) {
- return FALSE;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-/*
-static gboolean
-skip_mail_message_for_maildir (SummaryFile *summary)
-{
- return skip_mail_message (summary);
-}
-*/
-
-
-static gboolean
-skip_mail_message (SummaryFile *summary)
-{
- FILE *f;
- guint32 count;
- time_t tt;
- guint n;
-
- g_return_val_if_fail (summary, FALSE);
-
- f = summary->f;
-
-/* if (!skip_over_mail (f)) {
- return FALSE;
- }
-*/
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!decode_guint32 (f, &n))
- return FALSE;
-
- if (!decode_guint32 (f, &n))
- return FALSE;
-
- if (!decode_time_t (f, &tt))
- return FALSE;
-
- if (!decode_time_t (f, &tt))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
-
- skip_gint32_decoding (f); /* mi->message_id.id.part.hi */
- skip_gint32_decoding (f); /* mi->message_id.id.part.lo */
-
- /* references */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.hi */
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.lo */
- }
- } else {
- return FALSE;
- }
-
- /* user flags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* a flag */
- }
- } else {
- return FALSE;
- }
-
- /* user tags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* tag name */
- skip_string_decoding (f); /* tag value */
- }
- } else {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static inline gboolean
-skip_over_mail (FILE *f)
-{
- return (skip_string_decoding (f) && /* uid */
- skip_guint32_decoding (f) && /* flags */
- skip_guint32_decoding (f) && /* size */
- skip_time_t_decoding (f) && /* date_sent */
- skip_time_t_decoding (f) && /* date_received */
- skip_string_decoding (f) && /* subject */
- skip_string_decoding (f) && /* from */
- skip_string_decoding (f) && /* to */
- skip_string_decoding (f) && /* cc */
- skip_string_decoding (f)); /* mlist */
-}
-
-
-static gboolean
-skip_loading_content_info (SummaryFile *summary)
-{
- guint32 count, i;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (!do_skip_loading_content_info (summary)) {
- return FALSE;
- }
-
- if (!decode_guint32 (summary->f, &count)) {
- return FALSE;
- }
-
- if (count > 500) {
- return FALSE;
- }
-
- for (i = 0; i < count; i++) {
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-static gboolean
-do_skip_loading_content_info (SummaryFile *summary)
-{
- FILE *f;
- guint32 count;
-
- g_return_val_if_fail (summary, FALSE);
-
- f = summary->f;
-
- if (!fgetc (f)) { /* one byte to read... */
- return TRUE;
- }
-
- skip_token_decoding (f); /* type */
- skip_token_decoding (f); /* subtype */
-
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_token_decoding (f); /* name */
- skip_token_decoding (f); /* value */
- }
- } else {
- return FALSE;
- }
-
- if (!skip_token_decoding (f) || /* id */
- !skip_token_decoding (f) || /* description */
- !skip_token_decoding (f) || /* encoding */
- !decode_guint32 (f, &count)) { /* size */
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static gboolean
-save_ondisk_email_message_for_imap (DBConnection *db_con, MailMessage *mail_msg)
-{
- return do_save_ondisk_email_message_for_imap (db_con, mail_msg);
-}
-
-
-static gboolean
-save_ondisk_email_message_for_imap4 (DBConnection *db_con, MailMessage *mail_msg)
-{
- return do_save_ondisk_email_message_for_imap (db_con, mail_msg);
-}
-
-
-static gboolean
-do_save_ondisk_email_message_for_imap (DBConnection *db_con, MailMessage *mail_msg)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
-
- tracker_log ("Trying to index mail \"%s\"", mail_msg->uri);
-
- if (!do_save_ondisk_email_message (db_con, mail_msg)) {
- /* Mail not found... So two cases:
- * 1/ mail naming uses this schema:
- * - id.HEADER
- * - id.1.MIME
- * - id.1 <- contains a mail part
- * - id.2.MIME
- * - id.2
- * etc.
- * But we may also have something like
- * id.1.1.MIME, etc.
- * 2/ mail do not exist on disk.
- */
- gchar *header_file;
- gboolean ret;
-
- ret = FALSE;
-
- tracker_log ("... Trying to index mail parts");
-
- header_file = g_strconcat (mail_msg->path, "HEADER", NULL);
-
- if (tracker_file_is_indexable (header_file)) {
- /* email is on disk */
- tracker_log ("... Indexing mail parts of email \"%s\"", mail_msg->uri);
- ret = index_mail_parts (db_con, mail_msg, mail_msg->path);
- tracker_log ("... Treatment of mail parts of \"%s\" finished", mail_msg->uri);
-
- if (ret) {
- tracker_db_email_save_email (db_con, mail_msg, MAIL_APP_EVOLUTION);
- }
- } else {
- tracker_log ("...Indexing of mail parts failed");
- }
-
- g_free (header_file);
-
- return ret;
-
- } else {
- tracker_log ("Simple index of mail \"%s\" finished", mail_msg->uri);
- return TRUE;
- }
-}
-
-
-static gboolean
-do_save_ondisk_email_message (DBConnection *db_con, MailMessage *mail_msg)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
- g_return_val_if_fail (mail_msg->path, FALSE);
-
- if (tracker_file_is_indexable (mail_msg->path)) {
- /* we have downloaded the mail message on disk so we can fully index it. */
- MailMessage *mail_msg_on_disk = NULL;
-
- mail_msg_on_disk = email_parse_mail_message_by_path (MAIL_APP_EVOLUTION,
- mail_msg->path, NULL, NULL, NULL);
-
- if (mail_msg_on_disk && mail_msg_on_disk->parent_mail_file) {
-
- mail_msg_on_disk->parent_mail_file->next_email_offset = 0;
- mail_msg_on_disk->uri = g_strdup (mail_msg->uri);
- mail_msg_on_disk->store = mail_msg->store;
-
- tracker_db_email_save_email (db_con, mail_msg_on_disk, MAIL_APP_EVOLUTION);
-
- email_free_mail_file (mail_msg_on_disk->parent_mail_file);
- email_free_mail_message (mail_msg_on_disk);
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-static gboolean
-index_mail_parts (DBConnection *db_con, MailMessage *mail_msg, const gchar *mail_part_radix)
-{
- GQueue *mail_parts;
- gint i, num_parts;
-
- typedef struct {
- gchar *mail_file;
- gchar *mime_file;
- MimeInfos *mime_infos;
- } MailPart;
-
- #define free_mail_part(x) \
- g_free (x->mail_file); \
- g_free (x->mime_file); \
- email_free_mime_infos (x->mime_infos); \
- g_slice_free (MailPart, x);
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
- g_return_val_if_fail (mail_part_radix, FALSE);
-
- mail_parts = g_queue_new ();
-
- /* makes first names of mail parts to index */
- for (i = 1; ; i++) {
- gchar *str_i;
- MailPart *m;
-
- str_i = tracker_int_to_str (i);
- m = g_slice_new0 (MailPart);
- m->mail_file = g_strconcat (mail_part_radix, str_i, NULL);
- m->mime_file = g_strconcat (m->mail_file, ".MIME", NULL);
- g_free (str_i);
-
- if (tracker_file_is_indexable (m->mime_file)) {
- m->mime_infos = email_get_mime_infos_from_mime_file (m->mime_file);
- if (! m->mime_infos) {
- goto break_multipart_loop;
- }
- g_queue_push_tail (mail_parts, m);
- } else {
-break_multipart_loop:
- g_free (m->mail_file);
- g_free (m->mime_file);
- g_slice_free (MailPart, m);
- break;
- }
- }
-
- mail_msg->body = NULL;
-
- num_parts = 0;
-
- /* find mail parts in queue */
- while (!g_queue_is_empty (mail_parts)) {
- MailPart *m;
-
- num_parts++;
-
- m = g_queue_pop_head (mail_parts);
-
- if (strcmp (m->mime_infos->type, "multipart") == 0) {
- gint j;
-
- for (j = 1; ; j++) {
- gchar *str_j;
- MailPart *inner_m;
-
- str_j = tracker_int_to_str (j);
- inner_m = g_slice_new0 (MailPart);
- inner_m->mail_file = g_strconcat (m->mail_file, ".", str_j, NULL);
- inner_m->mime_file = g_strconcat (inner_m->mail_file, ".MIME", NULL);
- g_free (str_j);
-
- if (tracker_file_is_indexable (inner_m->mime_file)) {
- inner_m->mime_infos = email_get_mime_infos_from_mime_file (inner_m->mime_file);
- g_queue_push_tail (mail_parts, inner_m);
-
- } else {
- g_free (inner_m->mail_file);
- g_free (inner_m->mime_file);
- g_slice_free (MailPart, inner_m);
- break;
- }
- }
-
- } else{
- if (tracker_file_is_indexable (m->mail_file)) {
- tracker_log ("Indexing message part \"%s\"", m->mail_file);
-
- if (num_parts == 1 && strcmp (m->mime_infos->type, "text") == 0) {
- /* it is the first mail part so it is assume to be body mail */
- tracker_log ("Message part \"%s\" will be indexed as mail body...", m->mail_file);
- g_file_get_contents (m->mail_file, &mail_msg->body, NULL, NULL);
-
- } else {
- if (m->mime_infos) {
- MailAttachment *ma;
- gchar *tmp_filename;
-
- ma = email_allocate_mail_attachment ();
-
- ma->attachment_name = (m->mime_infos->name ?
- g_strdup (m->mime_infos->name) :
- g_path_get_basename (m->mail_file) /* this attachment has not a name... */
- );
- tmp_filename = (m->mime_infos->name ?
- g_path_get_basename (m->mime_infos->name) : /* we only take end of name to avoid to give
- access to anywhere on disk if the name
- contains characters from a path... */
- g_strdup (ma->attachment_name)
- );
- ma->mime = g_strconcat (m->mime_infos->type, "/", m->mime_infos->subtype, NULL);
- ma->tmp_decoded_file = email_make_tmp_name_for_mail_attachment (tmp_filename);
- g_free (tmp_filename);
-
- if (email_decode_mail_attachment_to_file (m->mail_file, ma->tmp_decoded_file, m->mime_infos->encoding)) {
- email_add_saved_mail_attachment_to_mail_message (mail_msg, ma);
-
- } else {
- tracker_error ("ERROR: failed to decode mail part \"%s\"", m->mail_file);
- email_free_mail_attachment (ma);
- }
- }
- }
- }
- }
-
- free_mail_part (m);
- }
-
- #undef free_mail_part
-
- g_queue_free (mail_parts);
-
- return num_parts != 0;
-}
-
-
-static GSList *
-add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s)
-{
- InternetAddressList *addrs_list, *tmp;
-
- g_return_val_if_fail (s, NULL);
-
- addrs_list = internet_address_parse_string (s);
-
- for (tmp = addrs_list; tmp; tmp = tmp->next) {
- MailPerson *mp;
-
- mp = email_allocate_mail_person ();
-
- mp->addr = g_strdup (tmp->address->value.addr);
- if(tmp->address->name)
- mp->name = g_strdup (tmp->address->name);
- else
- mp->name = g_strdup (tmp->address->value.addr);
-
- list = g_slist_prepend (list, mp);
- }
-
- internet_address_list_destroy (addrs_list);
-
- return list;
-}
-
-
-static gboolean
-scan_summary_for_junk (SummaryFile *summary, guint32 *uid, MailType type)
-{
- FILE *f;
- guint32 count, flags;
- time_t tt;
- guint n;
- gchar *return_uid;
-
- g_return_val_if_fail (summary, FALSE);
-
- f = summary->f;
-
- if (!decode_string (f, &return_uid))
- return FALSE;
-
- if (!decode_guint32 (f, &flags))
- return FALSE;
-
- if (!decode_guint32 (f, &n))
- return FALSE;
-
- if (!decode_time_t (f, &tt))
- return FALSE;
-
- if (!decode_time_t (f, &tt))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- *uid = 0;
-
- skip_gint32_decoding (f); /* mi->message_id.id.part.hi */
- skip_gint32_decoding (f); /* mi->message_id.id.part.lo */
-
- /* references */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.hi */
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.lo */
- }
- } else {
- return FALSE;
- }
-
- /* user flags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* a flag */
- }
- } else {
- return FALSE;
- }
-
- /* user tags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* tag name */
- skip_string_decoding (f); /* tag value */
- }
- } else {
- return FALSE;
- }
-
-
- if ((flags & EVOLUTION_MESSAGE_DELETED) == EVOLUTION_MESSAGE_DELETED) {
- *uid = strtoul (return_uid, NULL, 10);
-
-
- } else if ((flags & EVOLUTION_MESSAGE_JUNK) == EVOLUTION_MESSAGE_JUNK) {
- *uid = strtoul (return_uid, NULL, 10);
- }
-
- if (type == MAIL_TYPE_MBOX) {
- skip_off_t_decoding (summary->f);
-
- } else if (type == MAIL_TYPE_IMAP) {
- skip_guint32_decoding (summary->f);
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
-
-
- } else if (type == MAIL_TYPE_IMAP4) {
- skip_guint32_decoding (summary->f);
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-
-
-/***
- Functions to decode summary (or ev-summary) files.
-***/
-
-
-#define CFU_DECODE_T(type) \
-static inline gboolean \
-decode_##type (FILE *in, type *dest) \
-{ \
- type save = 0; \
- gint i = sizeof (type) - 1; \
- gint v = EOF; \
- \
- while (i >= 0 && (v = fgetc (in)) != EOF) { \
- save |= ((type)v) << (i * 8); \
- i--; \
- } \
- *dest = save; \
- if (v == EOF) { \
- return FALSE; \
- } \
- return TRUE; \
-}
-
-
-CFU_DECODE_T(time_t)
-CFU_DECODE_T(off_t)
-CFU_DECODE_T(size_t)
-
-
-static inline gboolean
-decode_guint32 (FILE *f, guint32 *n)
-{
- guint32 value;
- gint v;
-
- value = 0;
-
- /* until we get the last byte, keep decoding 7 bits at a time */
- while ( ((v = fgetc (f)) & 0x80) == 0 && v != EOF) {
- value |= v;
- value <<= 7;
- }
-
- if (v == EOF) {
- *n = value >> 7;
- return FALSE;
- }
-
- *n = value | (v & 0x7f);
-
- return TRUE;
-}
-
-
-static inline gboolean
-decode_string (FILE *in, gchar **str)
-{
- guint32 len;
- register gchar *ret;
-
- if (!decode_guint32 (in, &len)) {
- *str = NULL;
- return FALSE;
- }
-
- len--;
- if (len > 65536) {
- *str = NULL;
- return FALSE;
- }
-
- ret = g_malloc (len+1);
- if (len > 0 && fread (ret, len, 1, in) != 1) {
- g_free (ret);
- *str = NULL;
- return FALSE;
- }
-
- ret[len] = 0;
- *str = ret;
- return TRUE;
-}
-
-
-static inline gboolean
-decode_gint32 (FILE *f, gint32 *dest)
-{
- guint32 save;
-
- if (!f) return FALSE;
-
- if (fread (&save, sizeof (save), 1, f) == 1) {
- *dest = g_ntohl (save);
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-
-static inline gboolean
-skip_gint32_decoding (FILE *f)
-{
- return fseek (f, 4, SEEK_CUR) > 0;
-}
-
-
-static inline gboolean
-skip_guint32_decoding (FILE *f)
-{
- guint32 n;
-
- return decode_guint32 (f, &n);
-}
-
-
-static inline gboolean
-skip_time_t_decoding (FILE *f)
-{
- return fseek (f, sizeof (time_t), SEEK_CUR) == 0;
-}
-
-
-static inline gboolean
-skip_off_t_decoding (FILE *f)
-{
- return fseek (f, sizeof (off_t), SEEK_CUR) == 0;
-}
-
-
-static inline gboolean
-skip_string_decoding (FILE *f)
-{
- guint32 len;
-
- if (!decode_guint32 (f, &len)) {
- return FALSE;
- }
-
- if (fseek (f, len - 1, SEEK_CUR) != 0) {
- tracker_error ("ERROR: seek failed for string with length %d with error code %d", len - 1, errno);
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static inline gboolean
-skip_token_decoding (FILE *f)
-{
- guint32 len;
-
- if (!decode_guint32 (f, &len)) {
- return FALSE;
- }
-
- if (len < 32) {
- return TRUE;
- }
-
- len -= 32;
- return fseek (f, len, SEEK_CUR) == 0;
-}
diff --git a/src/trackerd/tracker-email-kmail.c b/src/trackerd/tracker-email-kmail.c
deleted file mode 100644
index 344391daa..000000000
--- a/src/trackerd/tracker-email-kmail.c
+++ /dev/null
@@ -1,1134 +0,0 @@
-/* Tracker
- * routines for emails with KMail
- * Copyright (C) 2006, 2007, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-email-utils.h"
-#include "tracker-db-email.h"
-#include "tracker-watch.h"
-#include "tracker-process-files.h"
-
-typedef struct {
- gchar *imap_path;
- gchar *file;
-} FileAndImapPaths;
-
-typedef enum {
- KMAIL_MAIL_PROTOCOL_UNKNOWN,
- KMAIL_MAIL_PROTOCOL_MBOX,
- KMAIL_MAIL_PROTOCOL_IMAP,
- KMAIL_MAIL_PROTOCOL_CACHED_IMAP
-} KMailMailProtocol;
-
-typedef struct {
- gchar *name;
- gchar *login;
- gchar *host;
- gchar *type;
- gchar *location; /* Currently only useful for maildir */
- FileAndImapPaths **file_and_imap_paths; /* only for IMAP
- each entry has been sort by its imap_path length */
-} KMailAccount;
-
-typedef struct {
- gchar *kmailrc_path;
- gchar *local_dir;
- gchar *cache_dir;
- gchar *imap_cache;
- gchar *dimap_cache;
- GSList *accounts;
-} KMailConfig;
-
-
-extern Tracker *tracker;
-
-static KMailConfig *kmail_config = NULL;
-
-
-static gboolean load_kmail_config (KMailConfig **conf);
-static void free_kmail_config (KMailConfig *conf);
-static FileAndImapPaths ** find_dir_and_imap_path_pairs (GKeyFile *key_file, gchar **groups, const gchar *imap_id);
-static void free_file_and_imap_path_pair (FileAndImapPaths *pair);
-static void free_kmail_account (KMailAccount *account);
-static GSList * get_dirs_to_watch (DBConnection *db_con, const gchar *dir_path, gboolean in_imap_dir);
-static gboolean ignore_email (const gchar *uri);
-static KMailMailProtocol find_mail_protocol (const gchar *mail_path);
-static gboolean index_mail_file_in_maildir_dir (DBConnection *db_con, const gchar *dir, FileInfo *info, MailType mail_type);
-//static void watch_imap_cache (DBConnection *db_con, const gchar *imap_dir_path);
-//static void watch_local_maildir_dir (DBConnection *db_con, const gchar *dir_path);
-
-static void load_uri_of_mbox_mail_message (GMimeMessage *g_m_message, MailMessage *mail_msg, gpointer user_data);
-static gchar * forward_uri_for_mbox_email (MailMessage *mail_msg, gpointer user_data);
-static void fill_uri_with_uid_for_imap (GMimeMessage *g_m_message, MailMessage *mail_msg, gpointer user_data);
-static gchar * make_imap_email_uri (MailMessage *mail_msg, gpointer user_data);
-
-static gchar * expand_string (const gchar *s);
-
-
-
-static gboolean
-kmail_module_is_running (void)
-{
- return kmail_config != NULL;
-}
-
-/********************************************************************************************
- Public functions
-*********************************************************************************************/
-
-gboolean
-kmail_init_module (void)
-{
- KMailConfig *conf;
-
- if (kmail_config) {
- return TRUE;
- }
-
- conf = NULL;
-
- if (load_kmail_config (&conf)) {
- kmail_config = conf;
- }
-
- return kmail_module_is_running ();
-}
-
-
-gboolean
-tracker_email_finalize (void)
-{
- if (!kmail_config) {
- return TRUE;
- }
-
- free_kmail_config (kmail_config);
- kmail_config = NULL;
-
- return !kmail_module_is_running ();
-}
-
-
-void
-tracker_email_watch_emails (DBConnection *db_con)
-{
- g_return_if_fail (kmail_config);
-
- #define WATCH_DIRS(root_dir, in_imap_dir) \
- { \
- GSList *dirs = get_dirs_to_watch (db_con, root_dir, in_imap_dir); \
- email_watch_directories (dirs, "KMailEmails"); \
- g_slist_foreach (dirs, (GFunc) g_free, NULL); \
- g_slist_free (dirs); \
- }
-
- WATCH_DIRS (kmail_config->local_dir, FALSE);
- WATCH_DIRS (kmail_config->imap_cache, TRUE);
- WATCH_DIRS (kmail_config->dimap_cache, TRUE);
-
- #undef WATCH_DIRS
-}
-
-
-static gboolean
-kmail_file_is_interesting (FileInfo *info)
-{
- const GSList *account;
-
- g_return_val_if_fail (info, FALSE);
- g_return_val_if_fail (kmail_config, FALSE);
-
- /* We want to take any file that KMail may handle. */
- if (g_str_has_prefix (info->uri, kmail_config->cache_dir) ||
- g_str_has_prefix (info->uri, kmail_config->local_dir)) {
- return TRUE;
- }
-
- for (account = kmail_config->accounts; account; account = account->next) {
- const KMailAccount *acc = account->data;
-
- if (acc->location && g_str_has_prefix (info->uri, acc->location)) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-gboolean
-tracker_email_index_file (DBConnection *db_con, FileInfo *info)
-{
- KMailMailProtocol mail_protocol;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (info, FALSE);
-
- if (!kmail_file_is_interesting (info))
- return FALSE;
-
- mail_protocol = find_mail_protocol (info->uri);
-
- switch (mail_protocol) {
- case KMAIL_MAIL_PROTOCOL_MBOX:
- case KMAIL_MAIL_PROTOCOL_IMAP: {
- if (email_is_in_a_maildir_dir (info->uri)) {
- /* check directory is registered */
- gchar *dir = g_path_get_dirname (info->uri);
- index_mail_file_in_maildir_dir (db_con, dir, info,
- (mail_protocol == KMAIL_MAIL_PROTOCOL_MBOX ? MAIL_TYPE_MBOX : MAIL_TYPE_IMAP));
- g_free (dir);
-
- } else {
- if (ignore_email (info->uri)) {
- break;
- }
-
- /* Directory can contain a file named something like %2BAH4 which acts as an index for emails.
- We ignore this type of file. */
- if (g_strrstr (info->uri, "%")) {
- break;
- }
-
- /* check mbox is registered */
- if (tracker_db_email_get_mbox_id (db_con, info->uri) == -1) {
- gchar *mbox_name = g_path_get_basename (info->uri);
- gchar *uri_prefix = g_path_get_dirname (info->uri);
-
- tracker_db_email_register_mbox (db_con, MAIL_APP_KMAIL,
- (mail_protocol == KMAIL_MAIL_PROTOCOL_MBOX ? MAIL_TYPE_MBOX : MAIL_TYPE_IMAP),
- info->uri, mbox_name, uri_prefix);
-
- g_free (mbox_name);
- g_free (uri_prefix);
- }
-
- MailStore *store = tracker_db_email_get_mbox_details (db_con, info->uri);
- if (!store) {
- tracker_error ("ERROR: could not retrieve store for file %s", info->uri);
- return FALSE;
- }
-
- if (mail_protocol == KMAIL_MAIL_PROTOCOL_MBOX) {
- email_parse_mail_file_and_save_new_emails (db_con, MAIL_APP_KMAIL, info->uri,
- load_uri_of_mbox_mail_message, NULL,
- forward_uri_for_mbox_email, NULL,
- store);
- } else {
- email_parse_mail_file_and_save_new_emails (db_con, MAIL_APP_KMAIL, info->uri,
- fill_uri_with_uid_for_imap, NULL,
- make_imap_email_uri, kmail_config->accounts,
- store);
-
- }
- tracker_db_email_free_mail_store (store);
- }
- break;
- }
- case KMAIL_MAIL_PROTOCOL_CACHED_IMAP: {
- gchar *dir = g_path_get_dirname (info->uri) ;
- //tracker_db_index_file (db_con, info, NULL, NULL);
- index_mail_file_in_maildir_dir (db_con, dir, info, MAIL_TYPE_IMAP);
- g_free (dir);
- break;
- }
- case KMAIL_MAIL_PROTOCOL_UNKNOWN: {
- break;
- }
- }
-
- return TRUE;
-}
-
-const gchar *
-tracker_email_get_name (void)
-{
- return "KMailEmails";
-}
-
-/********************************************************************************************
- Private functions
-*********************************************************************************************/
-
-static gboolean
-load_kmail_config (KMailConfig **conf)
-{
- KMailConfig *m_conf;
-
- if (*conf) {
- free_kmail_config (*conf);
- }
-
- *conf = g_slice_new0 (KMailConfig);
- m_conf = *conf;
-
- m_conf->kmailrc_path = g_build_filename (g_get_home_dir (), ".kde/share/config/kmailrc", NULL);
- m_conf->cache_dir = g_build_filename (g_get_home_dir (), ".kde/share/apps/kmail", NULL);
- m_conf->imap_cache = g_build_filename (m_conf->cache_dir, "imap", NULL);
- m_conf->dimap_cache = g_build_filename (m_conf->cache_dir, "dimap", NULL);
-
- if (g_file_test (m_conf->kmailrc_path, G_FILE_TEST_EXISTS)) {
- GKeyFile *key_file;
- gchar *tmp_local_dir, *str_nb_accounts;
- guint i, nb_accounts;
- gchar **groups;
-
- key_file = g_key_file_new ();
-
- if (!g_key_file_load_from_file (key_file, m_conf->kmailrc_path, G_KEY_FILE_NONE, NULL)) {
- goto error;
- }
-
- if (!g_key_file_has_group (key_file, "General")) {
- g_key_file_free (key_file);
- goto error;
- }
-
- tmp_local_dir = g_key_file_get_string (key_file, "General", "folders", NULL);
-
- if (tmp_local_dir) {
- m_conf->local_dir = expand_string (tmp_local_dir);
- g_free (tmp_local_dir);
-
- } else {
- g_key_file_free (key_file);
- goto error;
- }
-
- str_nb_accounts = g_key_file_get_string (key_file, "General", "accounts", NULL);
-
- if (!str_nb_accounts) {
- g_key_file_free (key_file);
- goto error;
- }
-
- if (!tracker_str_to_uint (str_nb_accounts, &nb_accounts)) {
- g_free (str_nb_accounts);
- g_key_file_free (key_file);
- goto error;
- }
-
- g_free (str_nb_accounts);
-
- groups = g_key_file_get_groups (key_file, NULL);
-
- for (i = 1; i <= nb_accounts; i++) {
- gchar *account_group;
- KMailAccount *account;
-
- account_group = g_strdup_printf ("Account %d", i);
-
- if (!g_key_file_has_group (key_file, account_group)) {
- g_free (account_group);
- continue;
- }
-
- account = g_slice_new0 (KMailAccount);
- account->name = g_key_file_get_string (key_file, account_group, "Name", NULL);
- account->login = g_key_file_get_string (key_file, account_group, "login", NULL);
- account->host = g_key_file_get_string (key_file, account_group, "host", NULL);
- account->type = g_key_file_get_string (key_file, account_group, "Type", NULL);
-
- if (strcmp (account->type, "imap") == 0) {
- gchar *account_id = g_key_file_get_string (key_file, account_group, "Id", NULL);
- if (account_id) {
- account->file_and_imap_paths = find_dir_and_imap_path_pairs (key_file, groups, account_id);
- g_free (account_id);
- }
-
- } else if (strcmp (account->type, "cachedimap") == 0) {
- gchar *account_id = g_key_file_get_string (key_file, account_group, "Id", NULL);
- if (account_id) {
- account->file_and_imap_paths = find_dir_and_imap_path_pairs (key_file, groups, account_id);
- g_free (account_id);
- }
-
- } else if (strcmp (account->type, "maildir") == 0) {
- gchar *location = g_key_file_get_string (key_file, account_group, "Location", NULL);
- if (location) {
- account->location = expand_string (location);
- g_free (location);
- }
- }
-
- g_free (account_group);
-
- m_conf->accounts = g_slist_prepend (m_conf->accounts, account);
- }
-
- g_strfreev (groups);
- g_key_file_free (key_file);
- }
-
- return TRUE;
-
- error:
- tracker_error ("ERROR: file \"%s\" cannot be loaded", m_conf->kmailrc_path);
- free_kmail_config (*conf);
- *conf = NULL;
- return FALSE;
-}
-
-
-static void
-free_kmail_config (KMailConfig *conf)
-{
- if (!conf) {
- return;
- }
-
- if (conf->kmailrc_path) {
- g_free (conf->kmailrc_path);
- }
-
- if (conf->local_dir) {
- g_free (conf->local_dir);
- }
-
- if (conf->cache_dir) {
- g_free (conf->cache_dir);
- }
-
- if (conf->imap_cache) {
- g_free (conf->imap_cache);
- }
-
- if (conf->dimap_cache) {
- g_free (conf->dimap_cache);
- }
-
- g_slist_foreach (conf->accounts, (GFunc) free_kmail_account, NULL);
-
- g_slice_free (KMailConfig, conf);
-}
-
-
-static gint
-compare_pairs (gconstpointer a, gconstpointer b)
-{
- const FileAndImapPaths *pa, *pb;
-
- pa = a;
- pb = b;
-
- /* we want longest names first */
- return - (strlen (pa->imap_path) - strlen (pb->imap_path));
-}
-
-
-static FileAndImapPaths **
-find_dir_and_imap_path_pairs (GKeyFile *key_file, gchar **groups, const gchar *imap_id)
-{
- gchar **group;
- gchar *str_group;
- GArray *pairs;
- FileAndImapPaths **ret;
- guint i;
-
- if (!groups) {
- return NULL;
- }
-
- pairs = g_array_new (TRUE, FALSE, sizeof (FileAndImapPaths *));
-
- str_group = g_strconcat ("Folder-.", imap_id, ".directory", NULL);
-
- for (group = groups; *group; group++) {
- if (g_str_has_prefix (*group, str_group)) {
- FileAndImapPaths *pair = g_slice_new0 (FileAndImapPaths);
-
- pair->imap_path = g_key_file_get_string (key_file, *group, "ImapPath", NULL);
- pair->file = g_strdup (strstr (*group, "-.") + 2);
-
- if (!pair->imap_path || !pair->file) {
- free_file_and_imap_path_pair (pair);
-
- } else {
- g_array_append_val (pairs, pair);
- }
- }
- }
-
- g_array_sort (pairs, compare_pairs);
-
- ret = g_new0 (FileAndImapPaths *, pairs->len + 1);
- for (i = 0; i < pairs->len; i++) {
- ret[i] = g_array_index (pairs, FileAndImapPaths *, i);
- }
-
- g_array_free (pairs, TRUE);
-
- return ret;
-}
-
-
-static void
-free_file_and_imap_path_pair (FileAndImapPaths *pair)
-{
- if (!pair) {
- return;
- }
-
- if (pair->imap_path) {
- g_free (pair->imap_path);
- }
-
- if (pair->file) {
- g_free (pair->file);
- }
-
- g_slice_free (FileAndImapPaths, pair);
-}
-
-
-static void
-free_kmail_account (KMailAccount *account)
-{
- if (!account) {
- return;
- }
-
- if (account->name) {
- g_free (account->name);
- }
-
- if (account->login) {
- g_free (account->login);
- }
-
- if (account->host) {
- g_free (account->host);
- }
-
- if (account->type) {
- g_free (account->type);
- }
-
- if (account->location) {
- g_free (account->location);
- }
-
- if (account->file_and_imap_paths) {
- FileAndImapPaths **pair;
-
- for (pair = account->file_and_imap_paths; *pair; pair++) {
- free_file_and_imap_path_pair (*pair);
- *pair = NULL;
- }
-
- g_free (account->file_and_imap_paths);
- }
-
- g_slice_free (KMailAccount, account);
-}
-
-
-#define HEX_ESCAPE '%'
-
-static gint
-hex_to_int (gchar c)
-{
- return c >= '0' && c <= '9' ? c - '0'
- : c >= 'A' && c <= 'F' ? c - 'A' + 10
- : c >= 'a' && c <= 'f' ? c - 'a' + 10
- : -1;
-}
-
-
-static gint
-unescape_character (const gchar *scanner)
-{
- gint first_digit;
- gint second_digit;
-
- first_digit = hex_to_int (*scanner++);
-
- if (first_digit < 0) {
- return -1;
- }
-
- second_digit = hex_to_int (*scanner++);
- if (second_digit < 0) {
- return -1;
- }
-
- return (first_digit << 4) | second_digit;
-}
-
-
-static gchar *
-g_unescape_uri_string (const gchar *escaped, const gchar *illegal_characters)
-{
- const gchar *in;
- gchar *out, *result;
- gint character;
-
- if (escaped == NULL) {
- return NULL;
- }
-
- result = g_malloc (strlen (escaped) + 1);
-
- out = result;
- for (in = escaped; *in != '\0'; in++) {
- character = *in;
- if (character == HEX_ESCAPE) {
-
- character = unescape_character (in + 1);
-
- /* Check for an illegal character. We consider '\0' illegal here. */
- if (character == 0 || (illegal_characters != NULL && strchr (illegal_characters, (char)character) != NULL)) {
- g_free (result);
- return NULL;
- }
- in += 2;
- }
- *out++ = character;
- }
-
- *out = '\0';
-
- //g_assert (out - result <= strlen (escaped));
-
- if (!g_utf8_validate (result, -1, NULL)) {
- g_free (result);
- return NULL;
- }
-
- return result;
-}
-
-
-static gboolean
-ignore_email (const gchar *uri)
-{
- return (g_strrstr (uri, "trash") ||
- g_strrstr (uri, "outbox") ||
- g_strrstr (uri, "drafts"));
-}
-
-
-static GSList *
-get_dirs_to_watch (DBConnection *db_con, const gchar *dir_path, gboolean in_imap_dir)
-{
- GSList *tmp_dirs, *dirs;
- const GSList *dir;
-
- g_return_val_if_fail (db_con, NULL);
- g_return_val_if_fail (dir_path, NULL);
-
- if (!tracker_process_files_should_be_watched (tracker->config, dir_path)) {
- return NULL;
- }
-
- dirs = NULL;
- tmp_dirs = NULL;
-
- tracker_process_files_get_all_dirs (tracker, dir_path, &tmp_dirs);
-
- for (dir = tmp_dirs; dir; dir = dir->next) {
- gchar *dir_path = g_unescape_uri_string (dir->data, "");
- gchar *dir_name = g_path_get_basename (dir_path);
-
- if (tracker_process_files_should_be_watched (tracker->config, dir_path) && !ignore_email (dir_path) &&
- (( in_imap_dir && dir_name[0] == '.' && g_str_has_suffix (dir_name, ".directory")) ||
- !in_imap_dir )
- ) {
- if (!tracker_is_directory_watched (dir_path, db_con)) {
- /* if we are in a maildir directory, we will only index emails in directory "cur" */
- gchar *dir_cur = g_build_filename (dir_path, "cur", NULL);
-
- if (tracker_is_directory (dir_cur)) {
- dirs = g_slist_prepend (dirs, g_strdup (dir_cur));
- }
- g_free (dir_cur);
- }
- }
-
- g_free (dir_path);
- g_free (dir_name);
- }
-
- g_slist_foreach (tmp_dirs, (GFunc) g_free, NULL);
- g_slist_free (tmp_dirs);
-
- return dirs;
-}
-
-
-static KMailMailProtocol
-find_mail_protocol (const gchar *mail_path)
-{
- if (g_str_has_prefix (mail_path, kmail_config->dimap_cache)) {
- return KMAIL_MAIL_PROTOCOL_CACHED_IMAP;
-
- } else if (g_str_has_prefix (mail_path, kmail_config->imap_cache)) {
- return KMAIL_MAIL_PROTOCOL_IMAP;
-
- } else if (g_str_has_prefix (mail_path, kmail_config->local_dir)) {
- return KMAIL_MAIL_PROTOCOL_MBOX;
-
- } else {
- return KMAIL_MAIL_PROTOCOL_UNKNOWN;
- }
-}
-
-
-static gboolean
-index_mail_file_in_maildir_dir (DBConnection *db_con, const gchar *dir, FileInfo *info, MailType mail_type)
-{
- MailStore *store;
-
- if (tracker_db_email_get_mbox_id (db_con, dir) == -1) {
- gchar *filename = g_path_get_basename (info->uri);
- gchar *uri_prefix = g_path_get_dirname (info->uri);
-
- tracker_db_email_register_mbox (db_con, MAIL_APP_KMAIL, mail_type, dir, filename, uri_prefix);
-
- g_free (filename);
- g_free (uri_prefix);
- }
-
- store = tracker_db_email_get_mbox_details (db_con, dir);
- if (!store) {
- tracker_error ("ERROR: could not retrieve store for directory %s", dir);
- return FALSE;
- }
-
- tracker_log ("Looking for email file \"%s\"", info->uri);
-
- if (!tracker_db_email_is_saved_email_file (db_con, info->uri)) {
- MailMessage *mail_msg = email_parse_mail_message_by_path (MAIL_APP_KMAIL, info->uri, NULL, NULL, NULL);
-
- if (!mail_msg) {
- tracker_log ("WARNING: email %s not found", info->uri);
- tracker_db_email_free_mail_store (store);
- return FALSE;
- }
-
- if (mail_msg->uri) {
- g_free (mail_msg->uri);
- }
-
- mail_msg->uri = g_strdup (mail_msg->path);
- mail_msg->store = store;
- mail_msg->mtime = tracker_get_file_mtime (mail_msg->path);
- tracker_db_email_save_email (db_con, mail_msg, MAIL_APP_KMAIL);
-
- email_free_mail_file (mail_msg->parent_mail_file);
- email_free_mail_message (mail_msg);
-
- } else {
- /* A file is never touched at all (ever when a user read it) so its containt is never updated.
- When a email file is put in trash it is moved to the trash directory and it is given the
- suffix ":2,S"... For us it just means that trackerd will see a file being deleted and it
- will remove it from its database.
- */
- tracker_log ("Nothing need to be done, email file \"%s\" is already up to date", info->uri) ;
- }
-
- tracker_db_email_free_mail_store (store);
-
- return TRUE;
-}
-
-
-/*
-
-static void
-watch_local_maildir_dir (DBConnection *db_con, const gchar *dir_path)
-{
- gchar *dir_names[] = {"inbox", "sent-mail", "drafts", NULL};
- gchar **dir_name;
-
- g_return_if_fail (db_con);
- g_return_if_fail (dir_path);
-
- for (dir_name = dir_names; *dir_name; dir_name++) {
- gchar *dir_path = g_build_filename (dir_path, *dir_name, NULL);
-
- if (tracker_is_directory (dir_path)) {
- email_maildir_watch_mail_messages (db_con, dir_path);
- }
-
- g_free (dir_path);
- }
-}
-*/
-
-static void
-load_uri_of_mbox_mail_message (GMimeMessage *g_m_message, MailMessage *mail_msg, gpointer user_data)
-{
- const gchar *field;
- gchar *tmp_from, *from;
-
- g_return_if_fail (g_m_message);
- g_return_if_fail (mail_msg);
-
- /* We need that line:
- From laurent.aguerreche@free.fr Fri Sep 22 00:58:37 2006
- and we need ALL the line (i.e. "From " + email address + date).
-
- This line is at the beginning of each header but GMIME does not give access to it so we reproduce it.
- */
-
- field = g_mime_message_get_header (g_m_message, "From");
-
- tmp_from = g_strdup (field);
-
- from = NULL;
-
- if (tmp_from) {
- gchar *email_addr_pos = strchr (tmp_from, '<');
-
- if (email_addr_pos) {
- size_t len;
-
- email_addr_pos++;
-
- len = strlen (email_addr_pos);
-
- if (len > 1) {
- from = g_strndup (email_addr_pos, len - 1);
- }
- } else {
- from = g_strdup (tmp_from);
- }
-
- g_free (tmp_from);
- }
-
- if (mail_msg->uri) {
- g_free (mail_msg->uri);
- }
-
- mail_msg->uri = NULL;
-
- if (from) {
- time_t date;
- gint gmt_offset;
-
- g_mime_message_get_date (g_m_message, &date, &gmt_offset);
- mail_msg->uri = g_strdup_printf ("mbox:%s/From %s %s", mail_msg->parent_mail_file->path, from, ctime (&date));
-
- /* remove '\n' introduced by ctime() */
- if (!tracker_is_empty_string (mail_msg->uri)) {
- size_t len = strlen (mail_msg->uri);
- if (mail_msg->uri[len - 1] == '\n') {
- mail_msg->uri[len - 1] = '\0';
- }
- }
- g_free (from);
- }
-}
-
-
-static gchar *
-forward_uri_for_mbox_email (MailMessage *mail_msg, gpointer user_data)
-{
- /* URI previously made in load_uri_of_mbox_mail_message() so we just
- need to forward it */
- return mail_msg->uri;
-}
-
-
-static void
-fill_uri_with_uid_for_imap (GMimeMessage *g_m_message, MailMessage *mail_msg, gpointer user_data)
-{
- gchar *headers;
- const gchar *pos_uid;
-
- g_return_if_fail (g_m_message);
- g_return_if_fail (mail_msg);
-
- if (mail_msg->uri) {
- g_free (mail_msg->uri);
- }
-
- mail_msg->uri = NULL;
-
- /* Currently, "g_mime_message_get_header(g_m_message, "X-UID")" does not work because GMIME
- only handles RFC822 headers... So we have to search X-UID header ourself. */
-
- headers = g_mime_message_get_headers (g_m_message);
- g_return_if_fail (headers);
-
- pos_uid = strstr (headers, "X-UID");
-
- if (pos_uid) {
- size_t len;
- const gchar *end_of_line, *end_of_uid;
- gchar *uid;
-
- len = strlen (pos_uid);
- if (len < 7) { /* 7 = strlen ("X-UID: ") */
- g_free (headers);
- return;
- }
-
- pos_uid += 6;
- if (*pos_uid != ' ') {
- /* I don't know what we're reading! */
- g_free (headers);
- return;
- }
- pos_uid++;
-
- end_of_line = strchr (pos_uid, '\n');
- if (!end_of_line) {
- /* ??? this mail is not RFC822 compliant... */
- g_free (headers);
- return;
- }
-
- for (end_of_uid = end_of_line; end_of_uid > pos_uid; end_of_uid--) {
- if (isdigit (*(end_of_uid - 1))) {
- break;
- }
- }
-
- if (end_of_uid == pos_uid) {
- /* This UID is empty?! */
- g_free (headers);
- return;
- }
-
- uid = g_strndup (pos_uid, end_of_uid - pos_uid);
-
- /* URI is not complete because we need more infos... but we'll use UID somewhere else. */
- mail_msg->uri = g_strdup_printf (";UID=%s", uid);
-
- g_free (uid);
- }
-
- g_free (headers);
-}
-
-
-static gchar *
-make_imap_email_uri (MailMessage *mail_msg, gpointer user_data)
-{
- gchar *head_uid, *uri;
- const GSList *account;
-
- if (!mail_msg->uri) {
- /* no UID found in the mail message? We return... */
- return NULL;
- }
-
- head_uid = mail_msg->uri;
- uri = NULL;
-
- for (account = user_data; account; account = account->next) {
- const KMailAccount *acc = account->data;
-
- if (acc->file_and_imap_paths) {
- FileAndImapPaths **pair;
-
- for (pair = acc->file_and_imap_paths; *pair; pair++) {
- if (g_str_has_suffix (mail_msg->parent_mail_file->path, (*pair)->file)) {
- /* URI is something like "imap://foo@imap.yeah.fr/INBOX/;UID=1114282150" */
- if (acc->login && acc->host && (*pair)->imap_path) {
- uri = g_strconcat ("imap://", acc->login, "@",
- acc->host, (*pair)->imap_path, head_uid, NULL);
- break;
- }
- }
- }
- }
- }
- g_free (head_uid);
-
- return uri;
-}
-
-
-/* Try to expand environment variables/call some programs in a string
- * Supported string formats: $(foo), ${foo} and $foo.
- */
-static gchar *
-expand_string (const gchar *s)
-{
- size_t i, len;
- GString *string;
- size_t word_beg, word_end;
- gchar *ret;
-
- g_return_val_if_fail (s, NULL);
-
- string = g_string_new ("");
-
- len = strlen (s);
-
- word_beg = word_end = 0;
-
- for (i = 0; i < len; i++) {
- gboolean eval_cmd = FALSE;
- gboolean delimited_word = FALSE; /* used to distinct ${foo} or $(foo), from $foo */
-
- if (s[i + 1] == '\0' || s[i] == '$') {
- gchar *word;
-
- /* we save the previous non-expanded word */
-
- if (s[i] == '$') {
- word = g_strndup (s + word_beg, i - word_beg);
- } else {
- word = g_strndup (s + word_beg, i + 1 - word_beg);
- }
-
- g_string_append (string, word);
- g_free (word);
-
- if (s[i + 1] == '\0') {
- break;
- }
- }
-
-
- if (s[i] == '$') {
- i++;
-
- if (s[i] == '{' && i < len - 1) {
- size_t j;
-
- word_beg = i + 1;
-
- for (j = word_beg; s[j] != '}' && j < len; j++)
- ;
-
- if (s[j] == '}' && s[j - 1] != '{') {
- word_end = j - 1;
- delimited_word = TRUE;
- } else {
- /* to not treat this word */
- word_end = word_beg;
- }
-
- } else if (s[i] == '(' && i < len - 1) {
- size_t j;
-
- word_beg = i + 1;
-
- for (j = word_beg; s[j] != ')' && j < len; j++)
- ;
-
- if (s[j] == ')' && s[j - 1] != '(') {
- word_end = j - 1;
- eval_cmd = TRUE;
- delimited_word = TRUE;
- } else {
- /* to not treat this word */
- word_end = word_beg;
- }
-
- } else {
- size_t j;
-
- word_beg = i;
-
- for (j = word_beg; s[j] != G_DIR_SEPARATOR && j < len; j++)
- ;
-
- if (s[j] == G_DIR_SEPARATOR) {
- word_end = j - 1;
-
- } else if (j == len) {
- if (j != i) {
- word_end = j - 1;
- } else {
- /* to not treat this word */
- word_end = word_beg;
- }
- }
- }
-
-
- if (word_beg != word_end) {
- gchar *word = g_strndup (s + word_beg, word_end - word_beg + 1);
-
- if (eval_cmd) {
- FILE *f;
- size_t nb_elm;
-
- f = popen (word, "r");
-
- if (f) {
- gchar buf[128];
- GString *tmp;
-
- tmp = g_string_new ("");
-
- for (;;) {
- nb_elm = fread (buf, 1, 128, f);
-
- if (nb_elm > 0) {
- buf [nb_elm - 1] = '\0';
- g_string_append (tmp, buf);
- }
-
- if (nb_elm < 128) {
- break;
- }
- }
-
- pclose (f);
-
- g_string_append (string, g_string_free (tmp, FALSE));
- }
-
- } else {
- const gchar *expanded = g_getenv (word);
-
- if (expanded) {
- g_string_append (string, expanded);
- }
- }
-
- g_free (word);
-
- if (delimited_word) {
- word_end++; /* remove last character: '}' or ')' */
- }
-
- word_beg = word_end = word_end + 1;
-
- /* for-loop will increment i so we have to start a bit earlier */
- i = word_beg - 1;
- }
- }
- }
-
- ret = g_string_free (string, FALSE);
-
- if (tracker_is_empty_string (ret)) {
- g_free (ret);
- ret = NULL;
- }
-
- return ret;
-}
diff --git a/src/trackerd/tracker-email-modest.c b/src/trackerd/tracker-email-modest.c
deleted file mode 100644
index 1ea02a77e..000000000
--- a/src/trackerd/tracker-email-modest.c
+++ /dev/null
@@ -1,1920 +0,0 @@
-/* Tracker
- * routines for emails with Modest
- * Copyright (C) 2008, Philip Van Hoof (pvanhoof@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <glib/gstdio.h>
-#include <dirent.h>
-
-#include "tracker-email-modest.h"
-#include "tracker-email-utils.h"
-#include "tracker-db-email.h"
-#include "tracker-cache.h"
-#include "tracker-dbus.h"
-#include "tracker-watch.h"
-
-
-#define MODEST_HOME ".modest"
-#define MODEST_HOME_CACHE_MAIL MODEST_HOME G_DIR_SEPARATOR_S "cache" G_DIR_SEPARATOR_S "mail"
-#define MODEST_HOME_LOCAL_FOLDERS MODEST_HOME G_DIR_SEPARATOR_S "local_folders"
-#define MODEST_HOME_OUTBOXES MODEST_HOME G_DIR_SEPARATOR_S "outboxes"
-
-
-typedef struct {
- gchar *mail_dir; /* something like "/home/laurent.modest/mail" */
- GSList *dirs;
- GSList *dynamic_dirs;
-} ModestConfig;
-
-
-enum {
- MODEST_MESSAGE_ANSWERED = 1 << 0,
- MODEST_MESSAGE_DELETED = 1 << 1,
- MODEST_MESSAGE_DRAFT = 1 << 2,
- MODEST_MESSAGE_FLAGGED = 1 << 3,
- MODEST_MESSAGE_SEEN = 1 << 4,
- MODEST_MESSAGE_ATTACHMENTS = 1 << 5,
- MODEST_MESSAGE_CACHED = 1 << 6,
- MODEST_MESSAGE_PARTIAL = 1 << 7,
- MODEST_MESSAGE_EXPUNGED = 1 << 8,
- MODEST_MESSAGE_HIGH_PRIORITY = 0<<9|1<<10,
- MODEST_MESSAGE_NORMAL_PRIORITY = 0<<9|0<<10,
- MODEST_MESSAGE_LOW_PRIORITY = 1<<9|0<<10,
- MODEST_MESSAGE_SUSPENDED = 1<<11
-};
-
-typedef struct {
- gchar *path; /* path the summary file */
- FILE *f; /* opened file descriptor for the file */
-} SummaryFile;
-
-typedef struct {
- gint32 version;
- gboolean legacy;
- gint32 flags;
- gint32 nextuid;
- time_t time;
- gint32 saved_count;
- gint32 unread_count;
- gint32 deleted_count;
- gint32 junk_count;
- gchar *uri_prefix;
-} SummaryFileHeader;
-
-
-extern Tracker *tracker;
-
-static ModestConfig *modest_config = NULL;
-
-
-static gboolean load_modest_config (ModestConfig **conf);
-static void free_modest_config (ModestConfig *conf);
-
-
-static gboolean is_in_dir_pop (const gchar *dir);
-static gboolean is_in_dir_imap (const gchar *dir);
-static gboolean is_in_dir_maildir (const gchar *dir);
-
-typedef gboolean (* LoadSummaryFileMetaHeaderFct) (SummaryFile *summary, SummaryFileHeader *header);
-typedef gboolean (* LoadMailMessageFct) (SummaryFile *summary, MailMessage **mail_msg);
-typedef gboolean (* SkipMailMessageFct) (SummaryFile *summary);
-typedef gboolean (* SaveOnDiskMailMessageFct) (DBConnection *db_con, MailMessage *msg);
-
-static void index_mail_messages_by_summary_file (DBConnection *db_con, MailType mail_type,
- const gchar *summary_file_path,
- LoadSummaryFileMetaHeaderFct load_meta_header,
- LoadMailMessageFct load_mail,
- SkipMailMessageFct skip_mail,
- SaveOnDiskMailMessageFct save_ondisk_mail);
-
-static gboolean open_summary_file (const gchar *path, SummaryFile **summary);
-static void free_summary_file (SummaryFile *summary);
-
-static gboolean load_summary_file_header (SummaryFile *summary, SummaryFileHeader **header);
-static void free_summary_file_header (SummaryFileHeader *header);
-static gboolean load_summary_file_meta_header_for_pop (SummaryFile *summary, SummaryFileHeader *header);
-static gboolean load_summary_file_meta_header_for_maildir (SummaryFile *summary, SummaryFileHeader *header);
-static gboolean load_summary_file_meta_header_for_imap (SummaryFile *summary, SummaryFileHeader *header);
-
-static gboolean load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg);
-static gboolean load_mail_message_for_pop (SummaryFile *summary, MailMessage **mail_msg);
-static gboolean load_mail_message_for_maildir (SummaryFile *summary, MailMessage **mail_msg);
-static gboolean do_load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info);
-static gboolean do_load_mail_message_for_pop (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info);
-static gboolean do_load_mail_message_for_maildir (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info);
-
-static gboolean load_mail_message (SummaryFile *summary, MailMessage *mail_msg);
-
-static gboolean skip_mail_message_for_imap (SummaryFile *summary);
-static gboolean skip_mail_message_for_pop (SummaryFile *summary);
-static gboolean skip_mail_message_for_maildir (SummaryFile *summary);
-
-static gboolean do_skip_mail_message_for_maildir (SummaryFile *summary, gboolean do_skipping_of_content_info);
-static gboolean do_skip_mail_message_for_pop (SummaryFile *summary, gboolean do_skipping_of_content_info);
-static gboolean do_skip_mail_message_for_imap (SummaryFile *summary, gboolean do_skipping_of_content_info);
-
-static gboolean skip_mail_message (SummaryFile *summary);
-
-static gboolean skip_loading_content_info (SummaryFile *summary);
-static gboolean do_skip_loading_content_info (SummaryFile *summary);
-
-static gboolean save_ondisk_email_message_for_imap (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean save_ondisk_email_message_for_pop (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean save_ondisk_email_message_for_maildir (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean do_save_ondisk_email_message_generic (DBConnection *db_con, MailMessage *mail_msg);
-static gboolean do_save_ondisk_email_message (DBConnection *db_con, MailMessage *mail_msg);
-
-static GSList * add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s);
-
-static inline gboolean decode_gint32 (FILE *f, gint32 *n);
-static inline gboolean skip_gint32_decoding (FILE *f);
-static inline gboolean decode_guint32 (FILE *f, guint32 *n);
-static inline gboolean skip_guint32_decoding (FILE *f);
-static inline gboolean decode_time_t (FILE *f, time_t *t);
-static inline gboolean skip_time_t_decoding (FILE *f);
-static inline gboolean decode_off_t (FILE *f, off_t *t);
-static inline gboolean skip_off_t_decoding (FILE *f);
-static inline gboolean decode_string (FILE *f, gchar **str);
-static inline gboolean skip_string_decoding (FILE *f);
-static inline gboolean skip_token_decoding (FILE *f);
-
-static void check_summary_file (DBConnection *db_con, const gchar *filename, MailStore *store);
-
-static void
-load_current_dynamic_folders (ModestConfig *modest_config)
-{
- /* TODO: Load and add existing dynamic-found dirs to modest_config->dynamic_dirs */
-
- email_watch_directories (modest_config->dynamic_dirs, "ModestEmails");
-}
-
-#if 0
-
-unused
-
-static void
-add_dynamic_folder (ModestConfig *modest_config, const gchar *dir_name)
-{
- char *dirn = g_strdup (dir_name);
- modest_config->dynamic_dirs = g_slist_prepend (modest_config->dynamic_dirs, dirn);
- email_watch_directory (dirn, "ModestEmails");
-}
-
-static void
-del_dynamic_folder (ModestConfig *modest_config, const gchar *dir_name)
-{
- GSList *found = g_slist_find_custom (modest_config->dynamic_dirs, dir_name, (GCompareFunc) strcmp);
- if (found) {
- gchar *rem_name = found->data;
- /* */
- email_unwatch_directory (rem_name, "ModestEmails");
- g_free (rem_name);
- modest_config->dynamic_dirs = g_slist_remove_link (modest_config->dynamic_dirs, found);
- g_slist_free (found);
- }
-}
-
-#endif
-
-static gboolean
-modest_module_is_running (void)
-{
- return modest_config != NULL;
-}
-
-
-/********************************************************************************************
- Public functions
-*********************************************************************************************/
-
-gboolean
-tracker_email_init (void)
-{
- ModestConfig *conf;
-
- if (modest_config) {
- return TRUE;
- }
-
- conf = NULL;
-
- if (load_modest_config (&conf)) {
- modest_config = conf;
- }
-
- return modest_module_is_running ();
-}
-
-
-
-gboolean
-tracker_email_finalize (void)
-{
- if (!modest_config) {
- return TRUE;
- }
-
- free_modest_config (modest_config);
- modest_config = NULL;
-
- return !modest_module_is_running ();
-}
-
-static void
-free_modest_config (ModestConfig *conf)
-{
- if (!conf) {
- return;
- }
-
- if (conf->mail_dir) {
- g_free (conf->mail_dir);
- }
-
- #define FREE_MY_LIST(list, free_fct) \
- g_slist_foreach (list, (GFunc) free_fct, NULL); \
- g_slist_free (list);
-
- FREE_MY_LIST (conf->dirs, g_free);
-
- #undef FREE_MY_LIST
-
- g_slice_free (ModestConfig, conf);
-}
-
-void
-tracker_email_watch_emails (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
-
- /* if initial indexing has not finished reset mtime on all email stuff so they are rechecked */
- if (tracker_db_get_option_int (db_con->common, "InitialIndex") == 1) {
- char *sql = g_strdup_printf ("update Services set mtime = 0 where path like '%s/.modest/%s'", g_get_home_dir (), "%");
-
- tracker_db_interface_execute_query (db_con->db, NULL, sql);
- g_free (sql);
- }
-
- /* check all registered mbox/paths for deletions */
- result_set = tracker_db_email_get_mboxes (db_con);
-
- if (result_set) {
- gboolean valid = TRUE;
- gchar *filename, *path;
- MailStore *store;
-
- while (valid) {
- tracker_db_result_set_get (result_set,
- 2, &filename,
- 3, &path,
- -1);
-
- store = tracker_db_email_get_mbox_details (db_con, path);
-
- if (store) {
- check_summary_file (db_con, filename, store);
- tracker_db_email_free_mail_store (store);
- }
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
-
- g_object_unref (result_set);
- }
-
- email_watch_directories (modest_config->dirs, "ModestEmails");
- load_current_dynamic_folders (modest_config);
-}
-
-static gboolean
-modest_file_is_interesting (FileInfo *info)
-{
- g_return_val_if_fail (info, FALSE);
- g_return_val_if_fail (info->uri, FALSE);
- g_return_val_if_fail (modest_config, FALSE);
- g_return_val_if_fail (modest_config->mail_dir, FALSE);
-
- /* maildir/pop/imap all have summary files (*.ev-summary.mmap or "summary.mmap") */
- if ((strcmp (info->uri, "summary.mmap") == 0) || g_str_has_suffix (info->uri, "summary.mmap")) {
- return TRUE;
- } else {
- return FALSE;
- }
-
- return FALSE;
-}
-
-
-gboolean
-tracker_email_index_file (DBConnection *db_con, FileInfo *info)
-{
- gchar *file_name;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (info, FALSE);
-
- if (!modest_file_is_interesting (info))
- return FALSE;
-
- file_name = g_path_get_basename (info->uri);
-
- tracker_debug ("indexing email summary %s", info->uri);
-
- if (is_in_dir_imap (info->uri)) {
- if (strcmp (file_name, "summary.mmap") == 0) {
- index_mail_messages_by_summary_file (db_con, MAIL_TYPE_IMAP, info->uri,
- load_summary_file_meta_header_for_imap,
- load_mail_message_for_imap,
- skip_mail_message_for_imap,
- save_ondisk_email_message_for_imap);
- }
- } else
-
- if (is_in_dir_pop (info->uri)) {
- if (strcmp (file_name, "summary.mmap") == 0) {
- index_mail_messages_by_summary_file (db_con, MAIL_TYPE_POP, info->uri,
- load_summary_file_meta_header_for_pop,
- load_mail_message_for_pop,
- skip_mail_message_for_pop,
- save_ondisk_email_message_for_pop);
- }
- } else
-
- if (is_in_dir_maildir (info->uri)) {
- if (strcmp (file_name, "summary.mmap") || g_str_has_suffix (info->uri, "summary.mmap")) {
- index_mail_messages_by_summary_file (db_con, MAIL_TYPE_MAILDIR, info->uri,
- load_summary_file_meta_header_for_maildir,
- load_mail_message_for_maildir,
- skip_mail_message_for_maildir,
- save_ondisk_email_message_for_maildir);
- }
- }
-
- g_free (file_name);
-
- return TRUE;
-}
-
-const gchar *
-tracker_email_get_name (void)
-{
- return "ModestEmails";
-}
-
-
-/********************************************************************************************
- Private functions
-*********************************************************************************************/
-
-
-static void
-check_summary_file (DBConnection *db_con, const gchar *filename, MailStore *store)
-{
- SummaryFile *summary = NULL;
-
- g_return_if_fail (store);
-
- if (open_summary_file (filename, &summary)) {
- SummaryFileHeader *header;
- gchar *path;
-
- header = NULL;
-
- tracker_log ("Scanning summary file %s for junk", filename);
-
- if (!load_summary_file_header (summary, &header)) {
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary file %s", filename);
- return;
- }
-
- if (store->type == MAIL_TYPE_IMAP) {
- if (!load_summary_file_meta_header_for_imap (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary header file %s", filename);
- return;
- }
-
- } else if (store->type == MAIL_TYPE_POP) {
- if (!load_summary_file_meta_header_for_pop (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary header file %s", filename);
- return;
- }
- } else if (store->type == MAIL_TYPE_MAILDIR) {
- if (!load_summary_file_meta_header_for_pop (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- tracker_error ("ERROR: failed to open summary header file %s", filename);
- return;
- }
-
- } else {
- tracker_error ("ERROR: summary file not supported");
- free_summary_file_header (header);
- free_summary_file (summary);
- return;
-
- }
-
- path = tracker_db_email_get_mbox_path (db_con, filename);
- tracker_db_email_set_message_counts (db_con, path, store->mail_count, header->junk_count, header->deleted_count);
- g_free (path);
-
- free_summary_file_header (header);
- free_summary_file (summary);
- }
-}
-
-
-
-
-static GSList*
-moredir (char *name, char *lastname, GSList *list) {
- DIR *dir = opendir (name);
- struct dirent *d;
-
- if (dir) {
- while ( (d = readdir(dir)) ) {
- struct stat st;
- if (strcmp (d->d_name, ".") != 0 && strcmp (d->d_name, "..") != 0) {
- char *tmp = g_build_filename (name, d->d_name, NULL);
- if (stat(tmp, &st) == 0 && S_ISDIR(st.st_mode))
- list = moredir (tmp, name, list);
- g_free (tmp);
-
- if ((strcmp (d->d_name, "summary.mmap") == 0) || g_str_has_suffix (d->d_name, "summary.mmap")) {
- tracker_log ("Adding mail_dir: %s\n", name);
- list = g_slist_prepend (list, g_strdup (name));
-
- /* Question from Philip Van Hoof:
- * I think we can return here, if a maildir's root
- * has two summary files, for two subdirs, only
- * monitoring the root once should suffice, I think
- *
- * Example FS structure:
- *
- * MyMailDirRoot <- Added to maildir_dirs twice (two summary files)
- * +- MyFolder1
- * | +- cur <- Actual settled E-mails
- * | +- new <- Recently created E-mails
- * | `- tmp <- Being created E-mails
- * |
- * +- MyFolder2 <- Added to maildir_dirs once (one summary file)
- * | +- MyFolder3.ev-summary.mmap <- to monitor
- * | +- MyFolder3
- * | | +- cur
- * | | +- new
- * | | `- tmp
- * | |
- * | +- cur
- * | +- new
- * | `- tmp
- * +- MyFolder1.ev-summary.mmap <- to monitor
- * `- MyFolder2.ev-summary.mmap <- to monitor
- */
- }
- }
- }
- closedir(dir);
- }
- return list;
-}
-
-
-
-static gboolean
-load_modest_config (ModestConfig **conf)
-{
- char *dir_imap, *dir_pop, *dir_maildir;
- ModestConfig *m_conf;
-
- if (*conf) {
- free_modest_config (*conf);
- }
-
- tracker_log ("Checking for Modest email accounts...");
-
- *conf = g_slice_new0 (ModestConfig);
- m_conf = *conf;
-
- m_conf->mail_dir = g_build_filename (g_get_home_dir (), MODEST_HOME_CACHE_MAIL, NULL);
-
- dir_imap = g_build_filename (m_conf->mail_dir, "imap", NULL);
- m_conf->dirs = moredir (dir_imap, m_conf->mail_dir, m_conf->dirs);
- g_free (dir_imap);
-
- dir_pop = g_build_filename (m_conf->mail_dir, "pop", NULL);
- m_conf->dirs = moredir (dir_pop, m_conf->mail_dir, m_conf->dirs);
- g_free (dir_pop);
-
- dir_maildir = g_build_filename (g_get_home_dir (), MODEST_HOME_LOCAL_FOLDERS, NULL);
- m_conf->dirs = moredir (dir_maildir, dir_maildir, m_conf->dirs);
- g_free (dir_maildir);
-
- dir_maildir = g_build_filename (g_get_home_dir (), MODEST_HOME_OUTBOXES, NULL);
- m_conf->dirs = moredir (dir_maildir, dir_maildir, m_conf->dirs);
- g_free (dir_maildir);
-
- /* Init to NULL here */
- m_conf->dynamic_dirs = NULL;
-
- return TRUE;
-}
-
-
-
-static gboolean
-is_in_dir_imap (const gchar *path)
-{
- g_return_val_if_fail (path, FALSE);
- return strstr (path, G_DIR_SEPARATOR_S "imap") != NULL;
-}
-
-
-static gboolean
-is_in_dir_maildir (const gchar *path)
-{
- g_return_val_if_fail (path, FALSE);
- return strstr (path, "ev-summary.mmap") != NULL;
-}
-
-
-static gboolean
-is_in_dir_pop (const gchar *path)
-{
- g_return_val_if_fail (path, FALSE);
- return strstr (path, G_DIR_SEPARATOR_S "pop" G_DIR_SEPARATOR_S) != NULL;
-}
-
-
-
-/* From RFC 2396 2.4.3, the characters that should always be encoded */
-static const char url_encoded_char[] = {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x00 - 0x0f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x10 - 0x1f */
- 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* ' ' - '/' */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* '0' - '?' */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* '@' - 'O' */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, /* 'P' - '_' */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* '`' - 'o' */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, /* 'p' - 0x7f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-};
-
-static void
-append_url_encoded (GString *str, const char *in, const char *extra_enc_chars)
-{
- const unsigned char *s = (const unsigned char *)in;
- while (*s) {
- if (url_encoded_char[*s] ||
- (extra_enc_chars && strchr (extra_enc_chars, *s)))
- g_string_append_printf (str, "%%%02x", (int)*s++);
- else
- g_string_append_c (str, *s++);
- }
-}
-
-char *
-url_encode (const char *part, const char *escape_extra)
-{
- GString *str;
- char *encoded;
- g_return_val_if_fail (part != NULL, NULL);
- str = g_string_new (NULL);
- append_url_encoded (str, part, escape_extra);
- encoded = str->str;
- g_string_free (str, FALSE);
- return encoded;
-}
-
-char *
-file_util_safe_filename (const char *name)
-{
-#ifdef G_OS_WIN32
- const char *unsafe_chars = "/?()'*<>:\"\\|";
-#else
- const char *unsafe_chars = "/?()'*";
-#endif
- if (name == NULL)
- return NULL;
- return url_encode(name, unsafe_chars);
-}
-
-#define DATA_CACHE_BITS (6)
-#define DATA_CACHE_MASK ((1<<DATA_CACHE_BITS)-1)
-
-static char *
-data_cache_path(const char *path, const char *key)
-{
- char *dir, *real, *tmp;
- guint32 hash;
- hash = g_str_hash (key);
- hash = (hash >> 5) & DATA_CACHE_MASK;
- dir = alloca (strlen(path) + 8 + 6);
- sprintf (dir, "%s/cache/%02x", path, hash);
- tmp = file_util_safe_filename (key);
- real = g_strdup_printf ("%s/%s", dir, tmp);
- g_free (tmp);
- return real;
-}
-
-
-char *maildir_get_filename (const gchar *fpath, const gchar *uid)
-{
- gint len = 0;
- gchar *cur = g_strdup_printf("%s/cur", fpath);
- gchar *compare = g_strdup_printf("%s/%s", cur, uid);
- DIR *dir; struct dirent *d;
- dir = opendir(cur);
-
- if (dir) {
- while ( (d = readdir(dir)) ) {
- char *nname = g_strdup_printf ("%s/%s", cur, d->d_name);
- char *ptr = strstr (nname, "!");
-
- if (!ptr)
- strstr (nname, ":");
-
- if (ptr)
- len = (ptr - nname);
- else
- len = strlen (nname);
-
- if (!g_ascii_strncasecmp (nname, compare, len)) {
- g_free (compare);
- compare = nname;
- break;
- }
- g_free (nname);
- }
- closedir(dir);
- }
- g_free (cur);
-
- return compare;
-}
-
-static void
-index_mail_messages_by_summary_file (DBConnection *db_con,
- MailType mail_type,
- const gchar *summary_file_path,
- LoadSummaryFileMetaHeaderFct load_meta_header,
- LoadMailMessageFct load_mail,
- SkipMailMessageFct skip_mail,
- SaveOnDiskMailMessageFct save_ondisk_mail)
-{
- SummaryFile *summary = NULL;
-
- if (!tracker->is_running)
- return;
-
- if (open_summary_file (summary_file_path, &summary)) {
- SummaryFileHeader *header;
- gint32 mail_count, junk_count, delete_count;
- gchar *dir;
-
- header = NULL;
-
- if (!load_summary_file_header (summary, &header)) {
- free_summary_file (summary);
- return;
- }
-
- if (!(*load_meta_header) (summary, header)) {
- free_summary_file_header (header);
- free_summary_file (summary);
- return;
- }
-
- if (mail_type != MAIL_TYPE_MAILDIR)
- dir = g_path_get_dirname (summary->path);
- else {
- gchar *tdir = g_strdup (summary->path);
- char *part = strstr (tdir, "ev-summary.mmap");
- /**
- * home/user/.modest/local_folders/New folder/
- * home/user/.modest/local_folders/New folder/cur/
- * home/user/.modest/local_folders/New folder/new/
- * home/user/.modest/local_folders/New folder/tmp/
- * home/user/.modest/local_folders/New folder.ev-summary.mmap <--
- **/
- if (part) {
- part--;
- *part = '\0';
- dir = tdir;
- } else {
- dir = g_path_get_dirname (summary->path);
- g_free (tdir);
- }
- }
-
- /* check summary file is registered */
- if (tracker_db_email_get_mbox_id (db_con, dir) == -1) {
- char *uri_prefix = NULL;
-
- if (mail_type == MAIL_TYPE_IMAP || mail_type == MAIL_TYPE_POP) {
- const gchar *pos_folders = strstr (dir, G_DIR_SEPARATOR_S "folders" G_DIR_SEPARATOR_S);
- char *piece;
- char *tdir = g_strdup (dir);
- char *loc = strstr (tdir, MODEST_HOME_CACHE_MAIL);
- char *tloc;
-
- loc += strlen (MODEST_HOME_CACHE_MAIL) + 1;
-
- loc = strchr (loc, '/'); loc++; /* word imap|pop */
- tloc = strchr (loc, '/'); /* word account name */
- if (tloc) {
- loc = tloc;
- loc++;
- } else
- loc = tdir + strlen (tdir);
-
- *loc = '\0';
-
- char *tmp = g_build_filename (tdir, "url_string", NULL);
- FILE *f = fopen (tmp, "r");
- if (f) {
- int len;
- char str[4000];
- memset (str, 0, 4000);
- fgets (str, 4000, f);
- len = strlen (str);
- if (str [len - 1] == '\n')
- piece = g_strndup (str, len - 1);
- else
- piece = g_strndup (str, len);
- } else
- piece = g_strdup ("unknown://location/");
- g_free (tmp);
- g_free (tdir);
-
- if (pos_folders) {
- size_t len_pos_folders = strlen (pos_folders);
- if (len_pos_folders > 9) {
- gchar *uri_dir, *clean_uri_dir;
- pos_folders += 9;
- uri_dir = NULL;
- if (pos_folders)
- uri_dir = g_strdup (pos_folders);
- clean_uri_dir = NULL;
- if (uri_dir) {
- gchar *tmp_str = tracker_string_replace (uri_dir, "subfolders/", NULL);
- clean_uri_dir = tracker_string_replace (tmp_str, "folders/", NULL);
- g_free (tmp_str);
- g_free (uri_dir);
- }
- if (clean_uri_dir) {
- uri_prefix = g_strdup_printf ("%s/%s/", piece, clean_uri_dir);
- g_free (clean_uri_dir);
- } else
- uri_prefix = g_strdup (piece);
- } else
- uri_prefix = g_strdup (piece);
- } else
- uri_prefix = g_strdup_printf ("%s/INBOX/", piece);
-
- g_free (piece);
-
- } else if (mail_type == MAIL_TYPE_MAILDIR)
- uri_prefix = g_strdup_printf ("maildir:/%s/", dir);
- else
- uri_prefix = g_strdup ("unknown://location/");
-
- tracker_db_email_register_mbox (db_con, MAIL_APP_MODEST, mail_type, dir, summary_file_path, uri_prefix);
- g_free (uri_prefix);
- }
-
-
- MailStore *store = tracker_db_email_get_mbox_details (db_con, dir);
-
- if (!store) {
- tracker_error ("ERROR: could not retrieve store for file %s", dir);
- free_summary_file (summary);
- free_summary_file_header (header);
-
- g_free (dir);
- return;
- }
-
- tracker_debug ("Number of existing messages in %s are %d, %d junk, %d deleted and header totals are %d, %d, %d", dir,
- store->mail_count, store->junk_count, store->delete_count, header->saved_count, header->junk_count, header->deleted_count);
-
- tracker->mbox_count++;
- tracker_dbus_send_index_progress_signal ("Emails", dir);
-
- if (header->saved_count > store->mail_count) {
- /* assume new emails received */
-
- gint i;
-
- /* skip already indexed emails */
- for (i = 0; i < store->mail_count; i++) {
- if (!(*skip_mail) (summary)) {
- tracker_error ("ERROR: skipping email no. %d in summary file", i+1);
- tracker_db_email_free_mail_store (store);
- free_summary_file (summary);
- free_summary_file_header (header);
- tracker->mbox_processed++;
- g_free (dir);
- return;
- }
- }
-
- mail_count = 0;
- junk_count = 0;
- delete_count = 0;
-
- /* now we will read the new emails */
- for (i = store->mail_count; i < header->saved_count; i++) {
- MailMessage *mail_msg = NULL;
-
- mail_count++;
- tracker_debug ("processing email no. %d / %" G_GINT32_FORMAT, store->mail_count + 1, header->saved_count);
-
- if (!(*load_mail) (summary, &mail_msg)) {
- tracker_error ("ERROR: loading email no. %d in summary file", mail_count);
- tracker_db_email_free_mail_store (store);
- free_summary_file (summary);
- free_summary_file_header (header);
- tracker->mbox_processed++;
- g_free (dir);
- return;
- }
-
-
-
- if (mail_type == MAIL_TYPE_IMAP) {
- gchar *sum_file_dir = g_path_get_dirname (summary->path);
- mail_msg->path = g_strdup_printf ("%s%s%s.", sum_file_dir, G_DIR_SEPARATOR_S, mail_msg->uid);
- g_free (sum_file_dir);
- } else if (mail_type == MAIL_TYPE_POP) {
- gchar *sum_file_dir = g_path_get_dirname (summary->path);
- mail_msg->path = data_cache_path (sum_file_dir, mail_msg->uid);
- g_free (sum_file_dir);
- } else if (mail_type == MAIL_TYPE_MAILDIR) {
- mail_msg->path = maildir_get_filename (dir, mail_msg->uid);
- } else
- mail_msg->path = NULL;
-
- mail_msg->uri = g_strconcat (store->uri_prefix, mail_msg->uid, NULL);
-
- mail_msg->store = store;
-
- if (!(*save_ondisk_mail) (db_con, mail_msg)) {
- tracker_log ("WARNING: Message, or message parts, could not be found locally - if you are using IMAP make sure you have selected the \"copy folder content locally for offline operation\" option in Modest");
- /* we do not have all infos but we still save them */
- if (!tracker_db_email_save_email (db_con, mail_msg, MAIL_APP_MODEST)) {
- tracker_log ("Failed to save email");
- }
- }
-
- if (mail_msg->junk) {
- junk_count++;
- }
-
- if (mail_msg->deleted) {
- delete_count++;
- }
-
- email_free_mail_file (mail_msg->parent_mail_file);
- email_free_mail_message (mail_msg);
-
- if (!tracker_cache_process_events (db_con->data, TRUE)) {
- tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE);
- tracker->shutdown = TRUE;
- return;
- }
-
- if (tracker_db_regulate_transactions (db_con->data, 500)) {
-
- if (tracker->index_count % 1000 == 0) {
- tracker_db_end_index_transaction (db_con->data);
- tracker_db_refresh_all (db_con->data);
- tracker_db_start_index_transaction (db_con->data);
- }
-
- tracker_dbus_send_index_progress_signal ("Emails", dir);
-
- }
-
-
- }
-
- tracker_log ("No. of new emails indexed in summary file %s is %d, %d junk, %d deleted", dir, mail_count, junk_count, delete_count);
-
- tracker_db_email_set_message_counts (db_con, dir, store->mail_count, store->junk_count, store->delete_count);
-
- } else {
- /* schedule check for junk */
- tracker_db_email_flag_mbox_junk (db_con, dir);
- }
-
- tracker->mbox_processed++;
- tracker_dbus_send_index_progress_signal ("Emails", dir);
-
- tracker_db_email_free_mail_store (store);
- free_summary_file (summary);
- free_summary_file_header (header);
-
- g_free (dir);
- }
-}
-
-
-
-
-static gboolean
-open_summary_file (const gchar *path, SummaryFile **summary)
-{
- gint fd;
- FILE *f;
-
- g_return_val_if_fail (path, FALSE);
-
- if (!tracker_file_is_indexable (path)) {
- return FALSE;
- }
-
- if (*summary) {
- free_summary_file (*summary);
- *summary = NULL;
- }
-
- fd = tracker_file_open (path, TRUE);
-
- if (fd == -1) {
- return FALSE;
- }
-
- f = fdopen (fd, "r");
- if (!f) {
- tracker_file_close (fd, TRUE);
- return FALSE;
- }
-
- *summary = g_slice_new0 (SummaryFile);
- (*summary)->f = f;
- (*summary)->path = g_strdup (path);
-
- return TRUE;
-}
-
-
-static void
-free_summary_file (SummaryFile *summary)
-{
- if (!summary) {
- return;
- }
-
- fclose (summary->f);
-
- g_free (summary->path);
- g_slice_free (SummaryFile, summary);
-}
-
-
-static gboolean
-load_summary_file_header (SummaryFile *summary, SummaryFileHeader **header)
-{
- SummaryFileHeader *h;
- FILE *f;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (*header) {
- free_summary_file_header (*header);
- }
-
- *header = g_slice_new0 (SummaryFileHeader);
-
- h = *header;
-
- h->uri_prefix = NULL;
-
- f = summary->f;
-
-
- if (!decode_gint32 (f, &h->version)) {
- goto error;
- }
-
- tracker_debug ("summary.version = %d", h->version);
-
- if (h->version > 0xff && (h->version & 0xff) < 12) {
- tracker_error ("ERROR: summary file header version too low");
- goto error;
- }
-
- h->legacy = !(h->version < 0x100 && h->version >= 13);
-
- if (h->legacy) {
- tracker_debug ("WARNING: summary file is a legacy version");
- }
-
-
- if (!decode_gint32 (f, &h->flags) ||
- !decode_gint32 (f, &h->nextuid) ||
- !decode_time_t (f, &h->time) ||
- !decode_gint32 (f, &h->saved_count)) {
- goto error;
- }
-
- tracker_debug ("summary.flags = %d", h->flags);
- tracker_debug ("summary.nextuid = %d", h->nextuid);
- tracker_debug ("summary.time = %d", h->time);
- tracker_debug ("summary.count = %" G_GINT32_FORMAT, h->saved_count);
-
- if (!h->legacy) {
- if (!decode_gint32 (f, &h->unread_count) ||
- !decode_gint32 (f, &h->deleted_count) ||
- !decode_gint32 (f, &h->junk_count)) {
- goto error;
- }
- }
-
- tracker_debug ("summary.Unread = %d", h->unread_count);
- tracker_debug ("summary.deleted = %d", h->deleted_count);
- tracker_debug ("summary.junk = %d", h->junk_count);
-
- return TRUE;
-
- error:
- free_summary_file_header (*header);
- *header = NULL;
-
- return FALSE;
-}
-
-
-static void
-free_summary_file_header (SummaryFileHeader *header)
-{
- if (!header) {
- return;
- }
-
- if (header->uri_prefix) {
- g_free (header->uri_prefix);
- }
-
- g_slice_free (SummaryFileHeader, header);
-}
-
-
-static gboolean
-load_summary_file_meta_header_maildir (SummaryFile *summary, SummaryFileHeader *header)
-{
- FILE *f;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (header, FALSE);
-
- f = summary->f;
-
- /* check for legacy version */
- if (header->version != 0x30c) {
- gint32 version;
-
- if (!decode_gint32 (f, &version)) {
- return FALSE;
- }
-
- if (version < 0) {
- tracker_error ("ERROR: summary file version too low");
- return FALSE;
- }
-
- /* Right now we only support summary versions 1 through 3 */
- if (version > 3) {
- tracker_error ("ERROR: reported summary version (%" G_GINT32_FORMAT ") is too new", version);
- return FALSE;
- }
-
- if (version == 2) {
- if (!skip_gint32_decoding (f)) {
- return FALSE;
- }
- }
-
- }
-
- return TRUE;
-}
-
-
-static gboolean
-load_summary_file_meta_header_pop (SummaryFile *summary, SummaryFileHeader *header)
-{
- FILE *f;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (header, FALSE);
-
- f = summary->f;
-
- return TRUE;
-}
-
-static gboolean
-load_summary_file_meta_header_for_imap (SummaryFile *summary, SummaryFileHeader *header)
-{
- FILE *f;
- guint32 dummy0;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (header, FALSE);
-
- f = summary->f;
-
- /* check for legacy version */
- if (header->version != 0x30c) {
- gint32 version, dummy1;
-
- if (!decode_gint32 (f, &version)) {
- return FALSE;
- }
-
- if (version < 0) {
- tracker_error ("ERROR: summary file version too low");
- return FALSE;
- }
-
- /* Right now we only support summary versions 1 through 3 */
- if (version > 3) {
- tracker_error ("ERROR: reported summary version (%" G_GINT32_FORMAT ") is too new", version);
- return FALSE;
- }
-
- if (version == 2) {
- if (!skip_gint32_decoding (f)) {
- return FALSE;
- }
- }
-
- /* validity */
- if (!decode_gint32 (f, &dummy1)) {
- return FALSE;
- }
- } else {
- /* validity */
- if (!decode_guint32 (f, &dummy0)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-static gboolean
-load_summary_file_meta_header_for_pop (SummaryFile *summary, SummaryFileHeader *header)
-{
- return load_summary_file_meta_header_pop (summary, header);
-}
-
-static gboolean
-load_summary_file_meta_header_for_maildir (SummaryFile *summary, SummaryFileHeader *header)
-{
- return load_summary_file_meta_header_maildir (summary, header);
-}
-
-
-static gboolean
-load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg)
-{
- return do_load_mail_message_for_imap (summary, mail_msg, TRUE);
-}
-
-static gboolean
-load_mail_message_for_maildir (SummaryFile *summary, MailMessage **mail_msg)
-{
- return do_load_mail_message_for_maildir (summary, mail_msg, FALSE);
-}
-
-static gboolean
-load_mail_message_for_pop (SummaryFile *summary, MailMessage **mail_msg)
-{
- return do_load_mail_message_for_pop (summary, mail_msg, FALSE);
-}
-
-
-static gboolean
-do_load_mail_message_for_imap (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info)
-{
- guint32 server_flags;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (*mail_msg) {
- email_free_mail_message (*mail_msg);
- }
-
- *mail_msg = email_allocate_mail_message ();
-
- if (!load_mail_message (summary, *mail_msg)) {
- goto error;
- }
-
- if (!decode_guint32 (summary->f, &server_flags)) {
- goto error;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- goto error;
- }
- }
-
- return TRUE;
-
- error:
- email_free_mail_message (*mail_msg);
- *mail_msg = NULL;
- return FALSE;
-}
-
-
-
-static gboolean
-do_load_mail_message_generic (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info)
-{
- g_return_val_if_fail (summary, FALSE);
-
- if (*mail_msg) {
- email_free_mail_message (*mail_msg);
- }
-
- *mail_msg = email_allocate_mail_message ();
-
- if (!load_mail_message (summary, *mail_msg)) {
- goto error;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- goto error;
- }
- }
-
- return TRUE;
-
- error:
- email_free_mail_message (*mail_msg);
- *mail_msg = NULL;
- return FALSE;
-}
-
-
-
-static gboolean
-do_load_mail_message_for_pop (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info)
-{
-
- return do_load_mail_message_generic (summary, mail_msg, do_skipping_of_content_info);
-}
-
-
-
-static gboolean
-do_load_mail_message_for_maildir (SummaryFile *summary, MailMessage **mail_msg, gboolean do_skipping_of_content_info)
-{
- return do_load_mail_message_generic (summary, mail_msg, do_skipping_of_content_info);
-}
-
-static gboolean
-load_mail_message (SummaryFile *summary, MailMessage *mail_msg)
-{
- FILE *f;
- guint32 flags, size, count;
- time_t date_sent, date_received;
- gchar *uid, *to, *cc, *mlist;
-
- g_return_val_if_fail (summary, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
-
- f = summary->f;
-
- if (!decode_string (f, &uid) ||
- !decode_guint32 (f, &size) || /* Size and flags are reversed in tny */
- !decode_guint32 (f, &flags) || /* Size and flags are reversed in tny */
- !decode_time_t (f, &date_sent) ||
- !decode_time_t (f, &date_received) ||
- !decode_string (f, &mail_msg->subject) ||
- !decode_string (f, &mail_msg->from) ||
- !decode_string (f, &to) ||
- !decode_string (f, &cc) ||
- !decode_string (f, &mlist)) /* mlist will be an empty string in tny */
- {
-
- return FALSE;
- }
-
- g_free (mlist);
-
-
- /* This is pointless, it's not always an int as a string*/
- mail_msg->id = strtoul (uid, NULL, 10);
-
- /* Only this really makes sense */
- mail_msg->uid = uid; /* g_free (uid); */
-
- if ((flags & MODEST_MESSAGE_DELETED) == MODEST_MESSAGE_DELETED) {
- mail_msg->deleted = TRUE;
- }
-
- if ((flags & MODEST_MESSAGE_EXPUNGED) == MODEST_MESSAGE_EXPUNGED) {
- mail_msg->deleted = TRUE;
- }
-
- mail_msg->junk = FALSE;
-
- mail_msg->date = (long) date_received;
-
- mail_msg->to = add_persons_from_internet_address_list_string_parsing (NULL, to);
- mail_msg->cc = add_persons_from_internet_address_list_string_parsing (NULL, cc);
-
- g_free (to);
- g_free (cc);
-
- skip_gint32_decoding (f); /* mi->message_id.id.part.hi */
- skip_gint32_decoding (f); /* mi->message_id.id.part.lo */
-
- /* references */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.hi */
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.lo */
- }
- } else {
- return FALSE;
- }
-
- /* user flags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* a flag */
- }
- } else {
- return FALSE;
- }
-
- /* user tags */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* tag name */
- skip_string_decoding (f); /* tag value */
- }
- } else {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static gboolean
-skip_mail_message_for_imap (SummaryFile *summary)
-{
- return do_skip_mail_message_for_imap (summary, TRUE);
-}
-
-
-static gboolean
-skip_mail_message_for_pop (SummaryFile *summary)
-{
- return do_skip_mail_message_for_pop (summary, FALSE);
-}
-
-static gboolean
-skip_mail_message_for_maildir (SummaryFile *summary)
-{
- return do_skip_mail_message_for_maildir (summary, FALSE);
-}
-
-
-static gboolean
-do_skip_mail_message_for_imap (SummaryFile *summary, gboolean do_skipping_of_content_info)
-{
- g_return_val_if_fail (summary, FALSE);
-
- if (!skip_mail_message (summary)) {
- return FALSE;
- }
-
- if (!skip_guint32_decoding (summary->f)) {
- return FALSE;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-
-static gboolean
-do_skip_mail_message_for_pop (SummaryFile *summary, gboolean do_skipping_of_content_info)
-{
- g_return_val_if_fail (summary, FALSE);
-
- if (!skip_mail_message (summary)) {
- return FALSE;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-
-static gboolean
-do_skip_mail_message_for_maildir (SummaryFile *summary, gboolean do_skipping_of_content_info)
-{
- g_return_val_if_fail (summary, FALSE);
-
- if (!skip_mail_message (summary)) {
- return FALSE;
- }
-
- if (do_skipping_of_content_info) {
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-
-
-static gboolean
-skip_mail_message (SummaryFile *summary)
-{
- FILE *f;
- guint32 count;
- time_t tt;
- guint n;
-
- g_return_val_if_fail (summary, FALSE);
-
- f = summary->f;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!decode_guint32 (f, &n))
- return FALSE;
-
- if (!decode_guint32 (f, &n))
- return FALSE;
-
- if (!decode_time_t (f, &tt))
- return FALSE;
-
- if (!decode_time_t (f, &tt))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
- if (!skip_string_decoding (f))
- return FALSE;
-
-
- skip_gint32_decoding (f); /* mi->message_id.id.part.hi */
- skip_gint32_decoding (f); /* mi->message_id.id.part.lo */
-
- /* references , always 0 items in tny */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.hi */
- skip_gint32_decoding (f); /* mi->references->references[i].id.part.lo */
- }
- } else {
- return FALSE;
- }
-
- /* user flags , always 0 items in tny */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* a flag */
- }
- } else {
- return FALSE;
- }
-
- /* user tags , always 0 items in tny */
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_string_decoding (f); /* tag name */
- skip_string_decoding (f); /* tag value */
- }
- } else {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static inline gboolean
-skip_over_mail (FILE *f)
-{
- return (skip_string_decoding (f) && /* uid */
- skip_guint32_decoding (f) && /* size switched with flags in tny */
- skip_guint32_decoding (f) && /* flags switched with size in tny */
- skip_time_t_decoding (f) && /* date_sent */
- skip_time_t_decoding (f) && /* date_received */
- skip_string_decoding (f) && /* subject */
- skip_string_decoding (f) && /* from */
- skip_string_decoding (f) && /* to */
- skip_string_decoding (f) && /* cc */
- skip_string_decoding (f)); /* mlist? */
-}
-
-
-static gboolean
-skip_loading_content_info (SummaryFile *summary)
-{
- guint32 count, i;
-
- g_return_val_if_fail (summary, FALSE);
-
- if (!do_skip_loading_content_info (summary)) {
- return FALSE;
- }
-
- if (!decode_guint32 (summary->f, &count)) {
- return FALSE;
- }
-
- if (count > 500) {
- return FALSE;
- }
-
- for (i = 0; i < count; i++) {
- if (!skip_loading_content_info (summary)) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-static gboolean
-do_skip_loading_content_info (SummaryFile *summary)
-{
- FILE *f;
- guint32 count;
- guint32 doit = 0;
-
- g_return_val_if_fail (summary, FALSE);
-
- f = summary->f;
-
- if (!decode_guint32 (f, &doit))
- return FALSE;
-
- if (!doit)
- return TRUE;
-
- skip_token_decoding (f); /* type */
- skip_token_decoding (f); /* subtype */
-
- if (decode_guint32 (f, &count) && count <= 500) {
- guint32 i;
- for (i = 0; i < count; i++) {
- skip_token_decoding (f); /* name */
- skip_token_decoding (f); /* value */
- }
- } else {
- return FALSE;
- }
-
- if (!skip_token_decoding (f) || /* id */
- !skip_token_decoding (f) || /* description */
- !skip_token_decoding (f) || /* encoding */
- !decode_guint32 (f, &count)) { /* size */
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static gboolean
-save_ondisk_email_message_for_imap (DBConnection *db_con, MailMessage *mail_msg)
-{
- return do_save_ondisk_email_message_generic (db_con, mail_msg);
-}
-
-
-static gboolean
-save_ondisk_email_message_for_pop (DBConnection *db_con, MailMessage *mail_msg)
-{
- return do_save_ondisk_email_message_generic (db_con, mail_msg);
-}
-
-static gboolean
-save_ondisk_email_message_for_maildir (DBConnection *db_con, MailMessage *mail_msg)
-{
- return do_save_ondisk_email_message_generic (db_con, mail_msg);
-}
-
-static gboolean
-do_save_ondisk_email_message_generic (DBConnection *db_con, MailMessage *mail_msg)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
-
- tracker_log ("Trying to index mail \"%s\"", mail_msg->uri);
-
- if (!do_save_ondisk_email_message (db_con, mail_msg)) {
- tracker_log ("Indexing mail without body nor attachment parsing \"%s\"", mail_msg->uri);
- tracker_db_email_save_email (db_con, mail_msg, MAIL_APP_MODEST);
- } else {
- tracker_log ("Simple index of mail \"%s\" finished", mail_msg->uri);
- }
-
-
- return TRUE;
-
-}
-
-static void
-find_attachment (GMimeObject *obj, gpointer data)
-{
- /* For now we don't want to do anything with attachments on the device */
- return;
-}
-
-static gboolean
-do_save_ondisk_email_message (DBConnection *db_con, MailMessage *mail_msg)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (mail_msg, FALSE);
-
- if (mail_msg->path && g_file_test (mail_msg->path, G_FILE_TEST_EXISTS) && tracker_file_is_indexable (mail_msg->path)) {
- /* we have downloaded the mail message on disk so we can fully index it. */
- MailMessage *mail_msg_on_disk = NULL;
-
- /* The last argument is a function pointer for implementing
- * fetching the attachments and indexing them */
-
- mail_msg_on_disk = email_parse_mail_message_by_path (MAIL_APP_MODEST,
- mail_msg->path, NULL, NULL, find_attachment);
-
- if (mail_msg_on_disk && mail_msg_on_disk->parent_mail_file) {
-
- mail_msg_on_disk->parent_mail_file->next_email_offset = 0;
- mail_msg_on_disk->uri = g_strdup (mail_msg->uri);
- mail_msg_on_disk->store = mail_msg->store;
-
- tracker_db_email_save_email (db_con, mail_msg_on_disk, MAIL_APP_MODEST);
-
- email_free_mail_file (mail_msg_on_disk->parent_mail_file);
- email_free_mail_message (mail_msg_on_disk);
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-static GSList *
-add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s)
-{
- InternetAddressList *addrs_list, *tmp;
-
- g_return_val_if_fail (s, NULL);
-
- addrs_list = internet_address_parse_string (s);
-
- for (tmp = addrs_list; tmp; tmp = tmp->next) {
- MailPerson *mp;
-
- mp = email_allocate_mail_person ();
-
- mp->addr = g_strdup (tmp->address->value.addr);
- if(tmp->address->name)
- mp->name = g_strdup (tmp->address->name);
- else
- mp->name = g_strdup (tmp->address->value.addr);
-
- list = g_slist_prepend (list, mp);
- }
-
- internet_address_list_destroy (addrs_list);
-
- return list;
-}
-
-
-
-/***
- Functions to decode summary (or ev-summary) files.
-***/
-
-
-static inline gboolean
-decode_string (FILE *in, gchar **str)
-{
- guint32 len;
- register gchar *ret;
-
- if (!decode_guint32 (in, &len)) {
- *str = NULL;
- return FALSE;
- }
-
- /* I think I need to remove this for tinymail vs. evolution,
- * because Tinymail's format cares about a last \0 character */
-
- /* len--; */
-
- if (len > 65536) {
- *str = NULL;
- return FALSE;
- }
-
- ret = g_malloc (len+1);
- if (len > 0 && fread (ret, len, 1, in) != 1) {
- g_free (ret);
- *str = NULL;
- return FALSE;
- }
-
- ret[len] = 0;
- *str = ret;
- return TRUE;
-}
-
-
-static inline gboolean
-decode_gint32 (FILE *f, gint32 *dest)
-{
- guint32 save;
-
- if (!f) return FALSE;
-
- if (fread (&save, sizeof (save), 1, f) == 1) {
- *dest = g_ntohl (save);
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-/* This is completely different in Tinymail (we just reuse the impl for signed) */
-static inline gboolean
-decode_guint32 (FILE *f, guint32 *n)
-{
- return decode_gint32 (f, (gint32*)n);
-}
-
-/* These are all aliases for signed ints in tinymail's format */
-
-#define CFU_DECODE_T(type) \
-static inline gboolean \
-decode_##type (FILE *in, type *dest) \
-{ \
- return decode_gint32 (in, (gint32*) dest); \
-}
-
-CFU_DECODE_T(time_t)
-CFU_DECODE_T(off_t)
-CFU_DECODE_T(size_t)
-
-static inline gboolean
-skip_gint32_decoding (FILE *f)
-{
- return fseek (f, 4, SEEK_CUR) > 0;
-}
-
-
-/* Same, we just reuse the impl. for signed numbers */
-static inline gboolean
-skip_guint32_decoding (FILE *f)
-{
- return skip_gint32_decoding (f);
-}
-
-/* Same, we just reuse the impl. for signed numbers */
-static inline gboolean
-skip_time_t_decoding (FILE *f)
-{
- return skip_gint32_decoding (f);
-}
-
-/* Same, we just reuse the impl. for signed numbers */
-static inline gboolean
-skip_off_t_decoding (FILE *f)
-{
- return skip_gint32_decoding (f);
-}
-
-
-static inline gboolean
-skip_string_decoding (FILE *f)
-{
- guint32 len;
-
- if (!decode_guint32 (f, &len)) {
- return FALSE;
- }
-
- /* Same as decode_string, Tinymail cares about the last \0 character
- * whereas this character is not present in Evolution's format */
-
- if (fseek (f, len /*- 1*/, SEEK_CUR) != 0) {
- tracker_error ("ERROR: seek failed for string with length %d with error code %d", len - 1, errno);
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static inline gboolean
-skip_token_decoding (FILE *f)
-{
- guint32 len;
-
- if (!decode_guint32 (f, &len)) {
- return FALSE;
- }
-
- if (len < 32) {
- return TRUE;
- }
-
- len -= 32;
- return fseek (f, len, SEEK_CUR) == 0;
-}
diff --git a/src/trackerd/tracker-email-modest.h b/src/trackerd/tracker-email-modest.h
deleted file mode 100644
index 8b1378917..000000000
--- a/src/trackerd/tracker-email-modest.h
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/src/trackerd/tracker-email-thunderbird.c b/src/trackerd/tracker-email-thunderbird.c
deleted file mode 100644
index 7d66be1af..000000000
--- a/src/trackerd/tracker-email-thunderbird.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* Tracker
- * routines for emails with Thunderbird
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- * Copyright (C) 2007, Michal Pryc (Michal.Pryc@Sun.Com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-db-email.h"
-#include "tracker-watch.h"
-
-typedef enum
-{
- TAG_NONE = 0,
- TAG_FOLDER_FILE,
- TAG_FEED_URL,
- TAG_AUTHOR,
- TAG_DATE,
- TAG_FOLDER,
- TAG_HAS_OFFLINE,
- TAG_MESSAGE_ID,
- TAG_MESSAGE_SIZE,
- TAG_MESSAGE_OFFSET,
- TAG_OFFLINE_SIZE,
- TAG_RECIPIENTS,
- TAG_SUBJECT,
- TAG_MESSAGE_KEY,
- TAG_URI,
-} TmsParserTag;
-
-typedef struct
-{
- TmsParserTag tag;
- GString *buffer;
- MailMessage *mail_message;
-} TmsParserData;
-
-typedef struct {
- GSList *mail_dirs;
-} ThunderbirdPrefs;
-
-#define THUNDERBIRD_MAIL_DIR_S ".xesam/ThunderbirdEmails/ToIndex"
-
-
-extern Tracker *tracker;
-
-static gchar *thunderbird_mail_dir = NULL;
-static GMarkupParser tms_file_parser;
-
-
-static GSList * add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s);
-static gboolean email_parse_mail_tms_file_and_save_new_emails (DBConnection *db_con, MailApplication mail_app,
- const gchar *path);
-static MailMessage * email_parse_mail_tms_file_by_path (MailApplication mail_app, const gchar *path);
-static void text_handler (GMarkupParseContext *context, const gchar *text,
- gsize text_len, gpointer user_data, GError **error);
-static void start_element_handler (GMarkupParseContext *context, const gchar *element_name,
- const gchar **attribute_names, const gchar **attribute_values,
- gpointer user_data, GError **error);
-static void end_element_handler (GMarkupParseContext *context, const gchar *element_name,
- gpointer user_data, GError **error);
-static glong get_date_from_string (const gchar *date_string);
-static void free_parser_data (gpointer user_data);
-
-
-static gboolean
-thunderbird_module_is_running (void)
-{
- return thunderbird_mail_dir != NULL;
-}
-
-static gboolean
-thunderbird_file_is_interesting (FileInfo *info)
-{
- //Filename should be objectX.tms (Thunderbird Message Summary)
- return g_str_has_suffix (info->uri, ".tms") ;
-}
-
-/********************************************************************************************
- Public functions
-*********************************************************************************************/
-
-gboolean
-tracker_email_init (void)
-{
- if (!thunderbird_mail_dir) {
- thunderbird_mail_dir = g_build_filename (g_get_home_dir (), THUNDERBIRD_MAIL_DIR_S, NULL);
- }
-
- return thunderbird_module_is_running();
-}
-
-
-gboolean
-tracker_email_finalize (void)
-{
- if (thunderbird_mail_dir) {
- g_free (thunderbird_mail_dir);
- thunderbird_mail_dir = NULL;
- }
-
- return !thunderbird_module_is_running();
-}
-
-
-void
-tracker_email_watch_emails (DBConnection *db_con)
-{
- if( thunderbird_mail_dir != NULL ) {
- tracker_log("Thunderbird directory lookup: \"%s\"", thunderbird_mail_dir);
- email_watch_directory(thunderbird_mail_dir, "ThunderbirdEmails");
- }
-}
-
-
-gboolean
-tracker_email_index_file (DBConnection *db_con, FileInfo *info)
-{
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (info, FALSE);
-
- if (!thunderbird_file_is_interesting (info))
- return FALSE;
-
- tracker_log ("Thunderbird file index: \"%s\"\n",info->uri);
- if (email_parse_mail_tms_file_and_save_new_emails (db_con, MAIL_APP_THUNDERBIRD, info->uri)) {
- unlink(info->uri);
- }
-
- return TRUE;
-}
-
-const gchar *
-tracker_email_get_name (void)
-{
- return "ThunderbirdEmails";
-}
-
-/********************************************************************************************
- Private functions
-*********************************************************************************************/
-
-static gboolean
-email_parse_mail_tms_file_and_save_new_emails (DBConnection *db_con, MailApplication mail_app, const gchar *path)
-{
- MailMessage *mail_msg;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (path, FALSE);
-
- mail_msg = email_parse_mail_tms_file_by_path (mail_app, path);
-
- if (!mail_msg) {
- return FALSE;
- }
- //Check if it is valid mail message
-
- if (mail_msg->parent_mail_file->mail_app == MAIL_APP_THUNDERBIRD ) {
-// || mail_msg->parent_mail_file->mail_app == MAIL_APP_THUNDERBIRD_FEED) {
- tracker_db_email_save_email (db_con, mail_msg, mail_app);
- email_free_mail_file(mail_msg->parent_mail_file);
- email_free_mail_message (mail_msg);
- return TRUE;
- }
-
- email_free_mail_file(mail_msg->parent_mail_file);
- email_free_mail_message (mail_msg);
-
- return FALSE;
-}
-
-
-static MailMessage *
-email_parse_mail_tms_file_by_path (MailApplication mail_app, const gchar *path)
-{
- MailMessage *mail_msg;
- gsize length;
- gchar *contents = NULL;
- GMarkupParseContext *context;
- GError *error = NULL;
- TmsParserData *parser_data;
-
- g_return_val_if_fail (path, NULL);
-
- parser_data = g_slice_new0 (TmsParserData);
- parser_data->mail_message = email_allocate_mail_message ();
- mail_msg = parser_data->mail_message;
- mail_msg->parent_mail_file = g_slice_new0 (MailFile);
-
- mail_msg->parent_mail_file->path = g_strdup (path);
-
- if (!g_file_get_contents(path, &contents, &length, &error)) {
- tracker_log ("Error reading Thunderbird message summary %s\n", error->message);
- g_error_free (error);
- return mail_msg;
- }
-
- context = g_markup_parse_context_new (&tms_file_parser, G_MARKUP_TREAT_CDATA_AS_TEXT,
- parser_data, free_parser_data);
-
- if (!g_markup_parse_context_parse(context, contents, length, NULL)) {
- tracker_log ("Error parsing context with length \n");
- goto end;
- }
-
- if (!g_markup_parse_context_end_parse(context, NULL)) {
- tracker_log ("Error parsing context \n");
- goto end;
- }
-
- end:
- g_markup_parse_context_free (context);
- g_free (contents);
- return mail_msg;
-}
-
-
-static void
-text_handler (GMarkupParseContext *context, const gchar *text,
- gsize text_len, gpointer user_data, GError **error)
-{
- TmsParserData *data = user_data;
-
- if (data->buffer == NULL) {
- data->buffer = g_string_new_len (text, text_len);
- } else {
- g_string_append_len (data->buffer, text, text_len);
- }
-}
-
-
-static void
-start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data, GError **error)
-{
- TmsParserData *data = user_data;
-
- if (data->buffer != NULL) {
- g_string_free (data->buffer, TRUE);
- data->buffer = NULL;
- }
-
- if (!strcmp (element_name, "MailMessage")) {
- data->mail_message->parent_mail_file->mail_app = MAIL_APP_THUNDERBIRD;
- } else if (!strcmp (element_name, "DeleteFolder")) {
- //data->mail_message->tms_type = TYPE_DELETE_FOLDER;
- } else if (!strcmp (element_name, "FeedItem")) {
- data->mail_message->parent_mail_file->mail_app = MAIL_APP_THUNDERBIRD_FEED;
- } else if (!strcmp (element_name, "FolderFile")) {
- data->tag = TAG_FOLDER_FILE;
- } else if (!strcmp (element_name, "Author")) {
- data->tag = TAG_AUTHOR;
- } else if (!strcmp (element_name, "Date")) {
- data->tag = TAG_DATE;
- } else if (!strcmp (element_name, "Folder")) {
- data->tag = TAG_FOLDER;
- } else if (!strcmp (element_name, "FolderFile")) {
- data->tag = TAG_FOLDER_FILE;
- } else if (!strcmp (element_name, "HasOffline")) {
- data->tag = TAG_HAS_OFFLINE;
- } else if (!strcmp (element_name, "MessageId")) {
- data->tag = TAG_MESSAGE_ID;
- } else if (!strcmp (element_name, "MessageSize")) {
- data->tag = TAG_MESSAGE_SIZE;
- } else if (!strcmp (element_name, "MessageOffset")) {
- data->tag = TAG_MESSAGE_OFFSET;
- } else if (!strcmp (element_name, "OfflineSize")) {
- data->tag = TAG_OFFLINE_SIZE;
- } else if (!strcmp (element_name, "Recipients")) {
- data->tag = TAG_RECIPIENTS;
- } else if (!strcmp (element_name, "Subject")) {
- data->tag = TAG_SUBJECT;
- } else if (!strcmp (element_name, "MessageKey")) {
- data->tag = TAG_MESSAGE_KEY;
- } else if (!strcmp (element_name, "Uri")) {
- data->tag = TAG_URI;
- } else if (!strcmp (element_name, "FeedURL")) {
- data->tag = TAG_FEED_URL;
- }
-}
-
-
-static void
-end_element_handler (GMarkupParseContext *context, const gchar *element_name,
- gpointer user_data, GError **error)
-{
- TmsParserData *data = user_data;
- MailMessage *msg = data->mail_message;
- gchar *buffer;
-
- if (data->buffer == NULL) {
- return;
- }
-
- buffer = g_string_free (data->buffer, FALSE);
- data->buffer = NULL;
-
- if (*buffer != '\0') {
- switch (data->tag) {
- case TAG_AUTHOR:
- msg->from = g_strdup (buffer);
- break;
- case TAG_DATE:
- msg->date = get_date_from_string (g_strdup (buffer));
- break;
- case TAG_FOLDER:
- //msg->folder = g_strdup (buffer);
- break;
- case TAG_FOLDER_FILE:
- //msg->folder_file = g_strdup (buffer);
- break;
- case TAG_HAS_OFFLINE:
- //msg->has_offline = get_boolean_from_string (g_strdup (buffer));
- break;
- case TAG_MESSAGE_ID:
- msg->message_id = g_strdup (buffer);
- break;
- case TAG_MESSAGE_SIZE:
- //Value should be uint
- //msg->message_size = atoi (g_strdup (buffer));
- break;
- case TAG_MESSAGE_OFFSET:
- msg->offset = atoi (g_strdup (buffer));
- break;
- case TAG_OFFLINE_SIZE:
- //msg->offline_size = atoi (g_strdup (buffer));
- break;
- case TAG_RECIPIENTS:
- //Should be function to parse recipients
- //
- //g_slist_prepend (msg->to,g_strdup (buffer));
- msg->to = add_persons_from_internet_address_list_string_parsing (NULL, g_strdup (buffer));
- break;
- case TAG_SUBJECT:
- msg->subject = g_strdup (buffer);
- break;
- case TAG_MESSAGE_KEY:
- //msg->message_key = g_strdup (buffer);
- break;
- case TAG_URI:
- msg->uri = g_strdup (buffer);
- break;
- case TAG_FEED_URL:
- //msg->url = g_strdup (buffer);
- break;
- default:
- break;
- }
- }
-
- data->tag = TAG_NONE;
-
- g_free (buffer);
-}
-
-
-static GMarkupParser tms_file_parser =
-{
- start_element_handler,
- end_element_handler,
- text_handler,
- NULL,
- NULL
-};
-
-
-static glong
-get_date_from_string (const gchar *date_string)
-{
- gchar *char_date = NULL;
- glong date;
-
- date = strtol (date_string, &char_date, 10);
-
- return *char_date ? 0 : date;
-}
-
-
-static void
-free_parser_data (gpointer user_data)
-{
- TmsParserData *data = user_data;
-
- if (data->buffer != NULL) {
- g_string_free (data->buffer, TRUE);
- }
-
- g_slice_free (TmsParserData, data);
-}
-
-
-static GSList *
-add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s)
-{
- InternetAddressList *addrs_list, *tmp;
-
- g_return_val_if_fail (s, NULL);
-
- addrs_list = internet_address_parse_string (s);
-
- for (tmp = addrs_list; tmp; tmp = tmp->next) {
- MailPerson *mp = email_allocate_mail_person ();
-
- mp->addr = g_strdup (tmp->address->value.addr);
- if(tmp->address->name) {
- mp->name = g_strdup (tmp->address->name);
- } else {
- mp->name = g_strdup (tmp->address->value.addr);
- }
-
- list = g_slist_prepend (list, mp);
- }
-
- internet_address_list_destroy (addrs_list);
-
- return list;
-}
diff --git a/src/trackerd/tracker-email-utils.c b/src/trackerd/tracker-email-utils.c
deleted file mode 100644
index a5a02d8a4..000000000
--- a/src/trackerd/tracker-email-utils.c
+++ /dev/null
@@ -1,1082 +0,0 @@
-/* Tracker
- * routines for emails
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-#include <fcntl.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <time.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-cache.h"
-#include "tracker-db-email.h"
-#include "tracker-dbus.h"
-#include "tracker-email-utils.h"
-#include "tracker-watch.h"
-
-extern Tracker *tracker;
-
-
-//static void mh_watch_mail_messages_in_dir (DBConnection *db_con, const gchar *dir_path);
-static GMimeStream *new_gmime_stream_from_file (const gchar *path, gint flags, off_t start, off_t end);
-
-static GSList * add_gmime_references (GSList *list, GMimeMessage *message, const gchar *header);
-static GSList * add_recipients (GSList *list, GMimeMessage *message, const gchar *type);
-static void find_attachment (GMimeObject *obj, gpointer data);
-
-
-
-
-/********************************************************************************************
- Public functions
-*********************************************************************************************/
-
-void
-email_unwatch_directory (const gchar *dir, const gchar *service)
-{
- tracker_log ("Registering path %s as belonging to service %s", dir, service);
- tracker_del_service_path (service, dir);
-}
-
-void
-email_watch_directory (const gchar *dir, const gchar *service)
-{
- tracker_log ("Registering path %s as belonging to service %s", dir, service);
- tracker_add_service_path (service, dir);
-}
-
-
-void
-email_watch_directories (const GSList *dirs, const gchar *service)
-{
- const GSList *tmp;
-
- for (tmp = dirs; tmp; tmp = tmp->next) {
- const gchar *dir = tmp->data;
- email_watch_directory (dir, service);
- }
-}
-
-
-gboolean
-email_parse_and_save_mail_message (DBConnection *db_con, MailApplication mail_app, const char *path,
- ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data)
-{
- MailMessage *mail_msg;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (path, FALSE);
-
- mail_msg = email_parse_mail_message_by_path (mail_app, path,
- read_mail_helper, read_mail_user_data, NULL);
-
- if (!mail_msg) {
- return FALSE;
- }
-
- tracker_db_email_save_email (db_con, mail_msg, mail_app);
-
- email_free_mail_message (mail_msg);
-
- return TRUE;
-}
-
-
-gboolean
-email_parse_mail_file_and_save_new_emails (DBConnection *db_con, MailApplication mail_app, const char *path,
- ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data,
- MakeURIHelperFct uri_helper, gpointer make_uri_user_data,
- MailStore *store)
-{
- MailFile *mf;
- MailMessage *mail_msg;
- gint indexed = 0, junk = 0, deleted = 0;
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (path, FALSE);
- g_return_val_if_fail (store, FALSE);
-
- mf = email_open_mail_file_at_offset (mail_app, path, store->offset, TRUE);
-
- tracker->mbox_count++;
- tracker_dbus_send_index_progress_signal ("Emails", path);
-
- while ((mail_msg = email_mail_file_parse_next (mf, read_mail_helper, read_mail_user_data, NULL))) {
-
- if (!tracker->is_running) {
- email_free_mail_message (mail_msg);
- email_free_mail_file (mf);
- return TRUE;
- }
-
- mail_msg->is_mbox = TRUE;
- mail_msg->store = store;
-
- /* set uri */
- if (!uri_helper) {
- if (mail_msg->uri) {
- g_free (mail_msg->uri);
- }
- gchar *str_id = tracker_int_to_str (mail_msg->id);
- mail_msg->uri = g_strconcat (store->uri_prefix, str_id, NULL);
- g_free (str_id);
- } else {
- mail_msg->uri = (*uri_helper) (mail_msg, make_uri_user_data);
- }
-
- indexed++;
-
- if (mail_msg->junk) {
- junk++;
- } else if (mail_msg->deleted) {
- deleted++;
- }
-
- tracker_db_email_save_email (db_con, mail_msg, mail_app);
- tracker_db_email_update_mbox_offset (db_con, mf);
-
- email_free_mail_message (mail_msg);
-
- if (!tracker_cache_process_events (db_con->data, TRUE) ) {
- tracker->shutdown = TRUE;
- return FALSE;
- }
-
- if (tracker_db_regulate_transactions (db_con->data, 500)) {
-
- if (tracker_config_get_verbosity (tracker->config) == 1) {
- tracker_log ("indexing #%d - Emails in %s", tracker->index_count, path);
- }
-
- if (tracker->index_count % 2500 == 0) {
- tracker_db_end_index_transaction (db_con->data);
- tracker_db_refresh_all (db_con->data);
- tracker_db_start_index_transaction (db_con->data);
- }
- tracker_dbus_send_index_progress_signal ("Emails", path);
-
- }
-
-
- }
-
- email_free_mail_file (mf);
- tracker->mbox_processed++;
- tracker_dbus_send_index_progress_signal ("Emails", path);
-
- if (indexed > 0) {
- tracker_info ("Indexed %d emails in email store %s and ignored %d junk and %d deleted emails",
- indexed, path, junk, deleted);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-gboolean
-email_is_in_a_mh_dir (const gchar *path)
-{
- /* We only take care of files into directory "inbox", "sent" or "trash".
- So we check that string "/inbox/" is into the path or that path ends with "/inbox" for instance. */
-
- return (strstr (path, G_DIR_SEPARATOR_S "inbox" G_DIR_SEPARATOR_S) != NULL || g_str_has_suffix (path, G_DIR_SEPARATOR_S "inbox") ||
- strstr (path, G_DIR_SEPARATOR_S "sent" G_DIR_SEPARATOR_S) != NULL || g_str_has_suffix (path, G_DIR_SEPARATOR_S "sent") ||
- strstr (path, G_DIR_SEPARATOR_S "trash" G_DIR_SEPARATOR_S) != NULL || g_str_has_suffix (path, G_DIR_SEPARATOR_S "trash"));
-}
-
-
-/* void */
-/* email_mh_watch_mail_messages (DBConnection *db_con, const gchar *path) */
-/* { */
-/* gchar *mail_dirs[] = {"inbox", "sent", "trash", NULL}; */
-/* gchar **dir_name; */
-
-/* g_return_if_fail (db_con); */
-/* g_return_if_fail (path); */
-
-/* if (tracker_file_is_no_watched (path)) { */
-/* return; */
-/* } */
-
-/* for (dir_name = mail_dirs; *dir_name; dir_name++) { */
-/* gchar *dir_path = g_build_filename (path, *dir_name, NULL); */
-
-/* if (tracker_is_directory (dir_path)) { */
-/* mh_watch_mail_messages_in_dir (db_con, dir_path); */
-/* } */
-
-/* g_free (dir_path); */
-/* } */
-/* } */
-
-
-gboolean
-email_is_in_a_maildir_dir (const gchar *path)
-{
- /* We only take care of files into directory "cur".
- So we check that string "/cur/" is into the path or that path ends with "/cur". */
-
- return (strstr (path, G_DIR_SEPARATOR_S "cur" G_DIR_SEPARATOR_S) != NULL ||
- g_str_has_suffix (path, G_DIR_SEPARATOR_S "cur"));
-}
-
-
-/* void */
-/* email_maildir_watch_mail_messages (DBConnection *db_con, const gchar *path) */
-/* { */
-/* gchar *dir_cur; */
-
-/* g_return_if_fail (db_con); */
-/* g_return_if_fail (path); */
-
-/* if (tracker_file_is_no_watched (path)) { */
-/* return; */
-/* } */
-
-/* dir_cur = g_build_filename (path, "cur", NULL); */
-
-/* if (tracker_is_directory (dir_cur)) { */
-/* GSList *files; */
-/* const GSList *file; */
-/* GPatternSpec *pattern; */
-
-/* if (!tracker_is_directory_watched (dir_cur, db_con)) { */
-/* tracker_add_watch_dir (dir_cur, db_con); */
-/* } */
-
-/* files = tracker_get_files (dir_cur, FALSE); */
-
-/* /\* We only want files that contain mail message so we check their names. *\/ */
-/* pattern = g_pattern_spec_new ("*.*.*"); */
-
-/* for (file = files; file; file = file->next) { */
-/* const gchar *file_path = file->data; */
-
-/* if (g_pattern_match_string (pattern, file_path)) { */
-/* tracker_db_insert_pending_file (db_con, 0, file_path, NULL, 0, TRACKER_ACTION_CHECK, FALSE, FALSE, -1); */
-/* } */
-/* } */
-
-/* g_pattern_spec_free (pattern); */
-
-/* g_slist_foreach (files, (GFunc) g_free, NULL); */
-/* g_slist_free (files); */
-/* } */
-
-/* g_free (dir_cur); */
-/* } */
-
-
-MailFile *
-email_open_mail_file_at_offset (MailApplication mail_app, const gchar *path, off_t offset, gboolean scan_from_for_mbox)
-{
- GMimeStream *stream;
- GMimeParser *parser;
- MailFile *mf;
-
- g_return_val_if_fail (path, NULL);
-
-#if defined(__linux__)
- stream = new_gmime_stream_from_file (path, (O_RDONLY | O_NOATIME) , offset, -1);
-#else
- stream = new_gmime_stream_from_file (path, O_RDONLY , offset, -1);
-#endif
-
- if (!stream) {
- return NULL;
- }
-
- parser = g_mime_parser_new_with_stream (stream);
-
- if (!parser) {
- g_mime_stream_close (stream);
- g_object_unref (stream);
- return NULL;
- }
-
- g_mime_parser_set_scan_from (parser, scan_from_for_mbox);
-
-
- mf = g_slice_new0 (MailFile);
-
- mf->path = g_strdup (path);
- mf->mail_app = mail_app;
- mf->parser = parser;
- mf->stream = stream;
- mf->next_email_offset = offset;
-
- return mf;
-}
-
-
-void
-email_free_mail_file (MailFile *mf)
-{
- if (!mf) {
- return;
- }
-
- if (mf->path) {
- g_free (mf->path);
- }
-
- if (mf->parser) {
- g_object_unref (mf->parser);
- }
-
- if (mf->stream) {
- //g_mime_stream_close (mf->stream);
- g_object_unref (mf->stream);
- }
-
- g_slice_free (MailFile, mf);
-}
-
-
-MailPerson *
-email_allocate_mail_person (void)
-{
- return g_slice_new0 (MailPerson);
-}
-
-
-void
-email_free_mail_person (MailPerson *mp)
-{
- if (!mp) {
- return;
- }
-
- g_free (mp->name);
- g_free (mp->addr);
-
- g_slice_free (MailPerson, mp);
-}
-
-
-MailAttachment *
-email_allocate_mail_attachment (void)
-{
- return g_slice_new0 (MailAttachment);
-}
-
-
-void
-email_free_mail_attachment (MailAttachment *ma)
-{
- if (!ma) {
- return;
- }
-
- if (ma->attachment_name) {
- g_free (ma->attachment_name);
- }
-
- if (ma->mime) {
- g_free (ma->mime);
- }
-
- if (ma->tmp_decoded_file) {
- /* Removes tmp file */
- g_unlink (ma->tmp_decoded_file);
- g_free (ma->tmp_decoded_file);
- }
-
- g_slice_free (MailAttachment, ma);
-}
-
-
-MailMessage *
-email_allocate_mail_message (void)
-{
- return g_slice_new0 (MailMessage);
-}
-
-
-void
-email_free_mail_message (MailMessage *mail_msg)
-{
- if (!mail_msg) {
- return;
- }
-
- /* we do not free parent_mail_file of course... */
-
- if (mail_msg->uid) {
- g_free (mail_msg->uid);
- }
-
- if (mail_msg->path) {
- g_free (mail_msg->path);
- }
-
- if (mail_msg->uri) {
- g_free (mail_msg->uri);
- }
-
- if (mail_msg->message_id) {
- g_free (mail_msg->message_id);
- }
-
- if (mail_msg->reply_to) {
- g_free (mail_msg->reply_to);
- }
-
- if (mail_msg->references) {
- g_slist_foreach (mail_msg->references, (GFunc) g_free, NULL);
- g_slist_free (mail_msg->references);
- }
-
- if (mail_msg->in_reply_to_ids) {
- g_slist_foreach (mail_msg->in_reply_to_ids, (GFunc) g_free, NULL);
- g_slist_free (mail_msg->in_reply_to_ids);
- }
-
- if (mail_msg->from) {
- g_free (mail_msg->from);
- }
-
- if (mail_msg->to) {
- g_slist_foreach (mail_msg->to, (GFunc) email_free_mail_person, NULL);
- g_slist_free (mail_msg->to);
- }
-
- if (mail_msg->cc) {
- g_slist_foreach (mail_msg->cc, (GFunc) email_free_mail_person, NULL);
- g_slist_free (mail_msg->cc);
- }
-
- if (mail_msg->bcc) {
- g_slist_foreach (mail_msg->bcc, (GFunc) email_free_mail_person, NULL);
- g_slist_free (mail_msg->bcc);
- }
-
- if (mail_msg->subject) {
- g_free (mail_msg->subject);
- }
-
- if (mail_msg->content_type) {
- g_free (mail_msg->content_type);
- }
-
- if (mail_msg->body) {
- g_free (mail_msg->body);
- }
-
- if (mail_msg->attachments) {
- g_slist_foreach (mail_msg->attachments, (GFunc) email_free_mail_attachment, NULL);
- g_slist_free (mail_msg->attachments);
- }
-
- g_slice_free (MailMessage, mail_msg);
-}
-
-
-MailMessage *
-email_mail_file_parse_next (MailFile *mf, ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data, FindAttachmentsHelperFct find_attachments_helper)
-{
- MailMessage *mail_msg;
- guint64 msg_offset;
- GMimeMessage *g_m_message;
- time_t date;
- gint gmt_offset;
- gboolean is_html;
-
- g_return_val_if_fail ((mf && mf->parser), NULL);
-
- msg_offset = g_mime_parser_tell (mf->parser);
-
- g_m_message = g_mime_parser_construct_message (mf->parser);
-
- if (!g_m_message) {
- return NULL;
- }
-
- mf->next_email_offset = g_mime_parser_tell (mf->parser);
-
- mail_msg = email_allocate_mail_message ();
-
- mail_msg->parent_mail_file = mf;
- mail_msg->offset = msg_offset;
- mail_msg->message_id = g_strdup (g_mime_message_get_message_id (g_m_message));
- mail_msg->reply_to = g_strdup (g_mime_message_get_reply_to (g_m_message));
-
- /* default */
- mail_msg->deleted = FALSE;
- mail_msg->junk = FALSE;
-
- mail_msg->references = add_gmime_references (NULL, g_m_message, "References");
- mail_msg->in_reply_to_ids = add_gmime_references (NULL, g_m_message, "In-Reply-To");
-
- g_mime_message_get_date (g_m_message, &date, &gmt_offset);
- mail_msg->date = (glong) (date + gmt_offset);
-
- mail_msg->from = g_strdup (g_mime_message_get_sender (g_m_message));
-
- mail_msg->to = add_recipients (NULL, g_m_message, GMIME_RECIPIENT_TYPE_TO);
- mail_msg->cc = add_recipients (NULL, g_m_message, GMIME_RECIPIENT_TYPE_CC);
- mail_msg->bcc = add_recipients (NULL, g_m_message, GMIME_RECIPIENT_TYPE_BCC);
-
- mail_msg->subject = g_strdup (g_mime_message_get_subject (g_m_message));
-
- mail_msg->body = g_mime_message_get_body (g_m_message, TRUE, &is_html);
- mail_msg->content_type = g_strdup (is_html ? "text/html" : "text/plain");
-
- if (read_mail_helper) {
- (*read_mail_helper) (g_m_message, mail_msg, read_mail_user_data);
- }
-
- mail_msg->attachments = NULL;
-
- /* find then save attachments in sys tmp directory of Tracker and save entries in MailMessage struct */
- if (find_attachments_helper == NULL)
- find_attachments_helper = find_attachment;
-
- g_mime_message_foreach_part (g_m_message, find_attachments_helper, mail_msg);
-
- g_object_unref (g_m_message);
-
- return mail_msg;
-}
-
-
-MailMessage *
-email_parse_mail_message_by_path (MailApplication mail_app, const gchar *path,
- ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data, FindAttachmentsHelperFct find_attachments_helper)
-{
- MailFile *mf;
- MailMessage *mail_msg;
-
- g_return_val_if_fail (path, NULL);
-
- mf = email_open_mail_file_at_offset (mail_app, path, 0, FALSE);
- if (!mf) {
- return NULL;
- }
-
- mail_msg = email_mail_file_parse_next (mf, read_mail_helper, read_mail_user_data, find_attachments_helper);
-
- if (mail_msg) {
- mail_msg->path = g_strdup (path);
- mail_msg->is_mbox = FALSE;
- }
-
- return mail_msg;
-}
-
-
-MimeInfos *
-email_allocate_mime_infos (void)
-{
- return g_slice_new0 (MimeInfos);
-}
-
-
-void
-email_free_mime_infos (MimeInfos *infos)
-{
- if (!infos) {
- return;
- }
-
- if (infos->type) {
- g_free (infos->type);
- }
-
- if (infos->subtype) {
- g_free (infos->subtype);
- }
-
- if (infos->name) {
- g_free (infos->name);
- }
-
- g_slice_free (MimeInfos, infos);
-}
-
-
-MimeInfos *
-email_get_mime_infos_from_mime_file (const gchar *mime_file)
-{
- MimeInfos *mime_infos;
- gchar *tmp, *mime_content;
- const gchar *pos_content_type;
-
- g_return_val_if_fail (mime_file, NULL);
-
- if (!g_file_get_contents (mime_file, &tmp, NULL, NULL)) {
- return NULL;
- }
-
- /* all text content in lower case for comparaisons */
- mime_content = g_ascii_strdown (tmp, -1);
- g_free (tmp);
-
- mime_infos = NULL;
-
- pos_content_type = strstr (mime_content, "content-type:");
-
- if (pos_content_type) {
- size_t len;
-
- len = strlen (pos_content_type);
-
- if (len > 13) { /* strlen ("content-type:") == 13 */
- pos_content_type += 13;
-
- /* ignore spaces, tab or line returns */
- while (*pos_content_type != '\0' && (*pos_content_type == ' ' || *pos_content_type == '\t' || *pos_content_type == '\n')) {
- pos_content_type++;
- }
-
- if (*pos_content_type != '\0') {
- GMimeContentType *mime = g_mime_content_type_new_from_string (pos_content_type);
-
- if (mime) {
- GMimeParam *param;
- gchar *type, *subtype, *name;
- const gchar *pos_encoding;
- MimeEncoding encoding;
-
- type = mime->type ? g_strdup (mime->type) : g_strdup ("text"); /* NULL means text */
- subtype = mime->subtype ? g_strdup (mime->subtype) : g_strdup ("plain"); /* NULL means plain */
-
- name = NULL;
-
- /* get name and encoding, hashtable from m->mime_infos->param_hash is buggy */
- for (param = mime->params; param; param = param->next) {
- if (strcmp (param->name, "name") == 0) {
- name = g_strdup (param->value);
- }
- }
-
- encoding = MIME_ENCODING_UNKNOWN;
-
- pos_encoding = strstr (pos_content_type, "content-transfer-encoding:");
-
- if (pos_encoding) {
- size_t len_encoding;
- const gchar *pos_end_encoding;
-
- len_encoding = strlen (pos_encoding);
- if (len_encoding > 26) { /* strlen ("content-transfer-encoding:") == 26 */
- pos_encoding += 26;
-
- /* find begining of content-transfert-encoding */
- while (*pos_encoding != '\0' && *pos_encoding == ' ') {
- pos_encoding++;
- }
- /* and now find end */;
- for (pos_end_encoding = pos_encoding;
- *pos_end_encoding != '\0' && (*pos_end_encoding != ' ' && *pos_end_encoding != '\n' && *pos_end_encoding != '\t');
- pos_end_encoding++)
- ;
- if (pos_encoding != pos_end_encoding) {
- gchar *encoding_str = g_strndup (pos_encoding, pos_end_encoding - pos_encoding);
-
- if (strcmp (encoding_str, "7bit") == 0) {
- encoding = MIME_ENCODING_7BIT;
- } else if (strcmp (encoding_str, "8bit") == 0) {
- encoding = MIME_ENCODING_8BIT;
- } else if (strcmp (encoding_str, "binary") == 0) {
- encoding = MIME_ENCODING_BINARY;
- } else if (strcmp (encoding_str, "base64") == 0) {
- encoding = MIME_ENCODING_BASE64;
- } else if (strcmp (encoding_str, "quoted-printable") == 0) {
- encoding = MIME_ENCODING_QUOTEDPRINTABLE;
- } else if (strcmp (encoding_str, "x-uuencode") == 0) {
- encoding = MIME_ENCODING_UUENCODE;
- }
-
- g_free (encoding_str);
- }
- }
- }
-
- mime_infos = email_allocate_mime_infos ();
-
- mime_infos->type = type;
- mime_infos->subtype = subtype;
- mime_infos->name = name;
- mime_infos->encoding = encoding;
- }
- }
- }
- }
-
- g_free (mime_content);
-
- return mime_infos;
-}
-
-
-gboolean
-email_add_saved_mail_attachment_to_mail_message (MailMessage *mail_msg, MailAttachment *ma)
-{
- g_return_val_if_fail (mail_msg, FALSE);
- g_return_val_if_fail (ma, FALSE);
-
- mail_msg->attachments = g_slist_prepend (mail_msg->attachments, ma);
-
- tracker_debug ("saved email attachment \"%s\"", ma->tmp_decoded_file);
-
- return TRUE;
-}
-
-
-gchar *
-email_make_tmp_name_for_mail_attachment (const gchar *filename)
-{
- gchar *str_uint, *tmp_filename, *tmp_name;
-
- g_return_val_if_fail (filename, NULL);
- g_return_val_if_fail (tracker->email_attachements_dir, NULL);
-
- str_uint = tracker_uint_to_str (g_random_int ());
- tmp_filename = g_strconcat (str_uint, "-", filename, NULL);
- g_free (str_uint);
- tmp_name = g_build_filename (tracker->email_attachements_dir, tmp_filename, NULL);
- g_free (tmp_filename);
-
- return tmp_name;
-}
-
-
-gboolean
-email_decode_mail_attachment_to_file (const gchar *src, const gchar *dst, MimeEncoding encoding)
-{
- GMimeStream *stream_src, *stream_dst;
- GMimeFilter *filter;
- GMimeStream *filtered_stream;
-
- g_return_val_if_fail (src, FALSE);
- g_return_val_if_fail (dst, FALSE);
-
-#if defined(__linux__)
- stream_src = new_gmime_stream_from_file (src, (O_RDONLY | O_NOATIME), 0, -1);
-#else
- stream_src = new_gmime_stream_from_file (src, O_RDONLY, 0, -1);
-#endif
- stream_dst = new_gmime_stream_from_file (dst, (O_CREAT | O_TRUNC | O_WRONLY), 0, -1);
-
- if (!stream_src || !stream_dst) {
- if (stream_src) {
- g_object_unref (stream_src);
- }
- if (stream_dst) {
- g_object_unref (stream_dst);
- }
- return FALSE;
- }
-
- filtered_stream = g_mime_stream_filter_new_with_stream (stream_src);
-
- switch (encoding) {
- case MIME_ENCODING_BASE64:
- filter = g_mime_filter_basic_new_type (GMIME_FILTER_BASIC_BASE64_DEC);
- g_mime_stream_filter_add (GMIME_STREAM_FILTER (filtered_stream), filter);
- g_object_unref (filter);
- break;
-
- case MIME_ENCODING_QUOTEDPRINTABLE:
- filter = g_mime_filter_basic_new_type (GMIME_FILTER_BASIC_QP_DEC);
- g_mime_stream_filter_add (GMIME_STREAM_FILTER (filtered_stream), filter);
- g_object_unref (filter);
- break;
-
- case MIME_ENCODING_UUENCODE:
- filter = g_mime_filter_basic_new_type (GMIME_FILTER_BASIC_UU_ENC);
- g_mime_stream_filter_add (GMIME_STREAM_FILTER (filtered_stream), filter);
- g_object_unref (filter);
- break;
-
- default:
- break;
- }
-
- g_mime_stream_write_to_stream (filtered_stream, stream_dst);
- g_mime_stream_flush (filtered_stream);
-
- g_object_unref (filtered_stream);
- g_object_unref (stream_src);
- g_object_unref (stream_dst);
-
- return TRUE;
-}
-
-
-
-
-/********************************************************************************************
- Private functions
-*********************************************************************************************/
-
-/* static void */
-/* mh_watch_mail_messages_in_dir (DBConnection *db_con, const gchar *dir_path) */
-/* { */
-/* GSList *files; */
-/* const GSList *file; */
-
-/* g_return_if_fail (db_con); */
-/* g_return_if_fail (dir_path); */
-
-/* if (tracker_file_is_no_watched (dir_path)) { */
-/* return; */
-/* } */
-
-/* if (!tracker_is_directory_watched (dir_path, db_con)) { */
-/* tracker_add_watch_dir (dir_path, db_con); */
-/* } */
-
-/* files = tracker_get_files (dir_path, FALSE); */
-
-/* for (file = files; file; file = file->next) { */
-/* const gchar *file_path = file->data; */
-
-/* if (tracker_file_is_indexable (file_path)) { */
-/* gchar *file_name, *p; */
-
-/* /\* filename must contain only digits *\/ */
-/* file_name = g_path_get_basename (file_path); */
-
-/* for (p = file_name; *p != '\0'; p++) { */
-/* if (!g_ascii_isdigit (*p)) { */
-/* goto end; */
-/* } */
-/* } */
-
-/* tracker_db_insert_pending_file (db_con, 0, file_path, NULL, 0, TRACKER_ACTION_CHECK, FALSE, FALSE, -1); */
-
-/* end: */
-/* g_free (file_name); */
-/* } */
-/* } */
-
-/* g_slist_foreach (files, (GFunc) g_free, NULL); */
-/* g_slist_free (files); */
-/* } */
-
-
-static GMimeStream *
-new_gmime_stream_from_file (const gchar *path, gint flags, off_t start, off_t end)
-{
- gchar *path_in_locale;
- gint fd;
- GMimeStream *stream;
-
- g_return_val_if_fail (path, NULL);
-
- path_in_locale = g_filename_from_utf8 (path, -1, NULL, NULL, NULL);
-
- if (!path_in_locale) {
- tracker_error ("ERROR: src or dst could not be converted to locale format");
- g_free (path_in_locale);
- return NULL;
- }
-
- fd = g_open (path_in_locale, flags, (S_IRUSR | S_IWUSR));
-
- g_free (path_in_locale);
-
- if (fd == -1) {
- return NULL;
- }
-
- stream = g_mime_stream_fs_new_with_bounds (fd, start, end);
-
- if (!stream) {
- close (fd);
- return NULL;
- }
-
- return stream;
-}
-
-
-static GSList *
-add_gmime_references (GSList *list, GMimeMessage *message, const gchar *header)
-{
- const gchar *tmp = g_mime_message_get_header (message, header);
-
- if (tmp) {
- GMimeReferences *refs;
- const GMimeReferences *tmp_ref;
-
- refs = g_mime_references_decode (tmp);
-
- for (tmp_ref = refs; tmp_ref; tmp_ref = tmp_ref->next) {
- const gchar *msgid = tmp_ref->msgid;
-
- if (!tracker_is_empty_string (msgid)) {
- list = g_slist_prepend (list, g_strdup (msgid));
- }
- }
-
- g_mime_references_clear (&refs);
- }
-
- return list;
-}
-
-
-static GSList *
-add_recipients (GSList *list, GMimeMessage *message, const gchar *type)
-{
- const InternetAddressList *addrs_list;
-
- for (addrs_list = g_mime_message_get_recipients (message, type); addrs_list; addrs_list = addrs_list->next) {
- MailPerson *mp = email_allocate_mail_person ();
-
- mp->name = g_strdup (addrs_list->address->name);
- mp->addr = g_strdup (addrs_list->address->value.addr);
-
- list = g_slist_prepend (list, mp);
- }
-
- return list;
-}
-
-
-static void
-find_attachment (GMimeObject *obj, gpointer data)
-{
- GMimePart *part;
- MailMessage *mail_msg;
- const gchar *content_disposition;
-
- g_return_if_fail (obj);
- g_return_if_fail (data);
-
-
- if (GMIME_IS_MESSAGE_PART (obj)) {
- GMimeMessage *g_msg = g_mime_message_part_get_message (GMIME_MESSAGE_PART (obj));
-
- if (g_msg) {
- g_mime_message_foreach_part (g_msg, find_attachment, data);
- g_object_unref (g_msg);
- }
- return;
-
- } else if (GMIME_IS_MULTIPART (obj)) {
- g_mime_multipart_foreach (GMIME_MULTIPART (obj), find_attachment, data);
- return;
-
- } else if (!GMIME_IS_PART (obj)) {
- /* What's this object?! */
- g_return_if_reached ();
- }
-
- part = GMIME_PART (obj);
-
- mail_msg = data;
-
- content_disposition = g_mime_part_get_content_disposition (part);
-
- /* test whether it is a mail attachment */
- if (content_disposition &&
- (strcmp (content_disposition, GMIME_DISPOSITION_ATTACHMENT) == 0 ||
- strcmp (content_disposition, GMIME_DISPOSITION_INLINE) == 0)) {
-
- const GMimeContentType *content_type;
- MailAttachment *ma;
- const gchar *filename;
- gchar *attachment_uri;
- gint fd;
-
- if (! (content_type = g_mime_part_get_content_type (part)))
- return;
-
- filename = g_mime_part_get_filename (part);
-
- if (!content_type->params || !content_type->type || !content_type->subtype || !filename) {
- /* we are unable to identify mime type or filename */
- return;
- }
-
- /* do not index signature attachments */
- if (g_str_has_suffix (filename, "signature.asc")) {
- return;
- } else {
- tracker_info ("attached filename is %s", filename);
- }
-
- attachment_uri = email_make_tmp_name_for_mail_attachment (filename);
-
- /* convert attachment filename from utf-8 to filesystem charset */
- gchar *locale_uri = g_filename_from_utf8 (attachment_uri, -1, NULL, NULL, NULL);
-
- fd = g_open (locale_uri, (O_CREAT | O_TRUNC | O_WRONLY), 0666);
-
- if (fd == -1) {
- tracker_error ("ERROR: failed to save attachment %s", locale_uri);
- g_free (attachment_uri);
- g_free (locale_uri);
- return;
-
- } else {
- /* Decodes email attachment and stores it in tracker->email_attachements_dir
- to index it latter.
- */
-
- GMimeStream *stream;
- GMimeDataWrapper *content;
-
- stream = g_mime_stream_fs_new (fd);
- content = g_mime_part_get_content_object (part);
-
- if (content) {
- gint x = g_mime_data_wrapper_write_to_stream (content, stream);
-
- if (x != -1) {
- g_mime_stream_flush (stream);
-
- ma = email_allocate_mail_attachment ();
-
- ma->attachment_name = g_strdup (filename);
- ma->mime = g_strconcat (content_type->type, "/", content_type->subtype, NULL);
- ma->tmp_decoded_file = g_strdup (attachment_uri);
-
- email_add_saved_mail_attachment_to_mail_message (mail_msg, ma);
- }
-
- g_object_unref (content);
- }
-
- g_object_unref (stream);
- }
-
- g_free (attachment_uri);
- g_free (locale_uri);
- }
-}
diff --git a/src/trackerd/tracker-email-utils.h b/src/trackerd/tracker-email-utils.h
deleted file mode 100644
index cc59bc736..000000000
--- a/src/trackerd/tracker-email-utils.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/* Tracker
- * routines for emails
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_EMAIL_BASE_H_
-#define _TRACKER_EMAIL_BASE_H_
-
-#include <gmime/gmime.h>
-
-#include "tracker-email.h"
-
-
-typedef enum {
- MAIL_APP_EVOLUTION,
- MAIL_APP_KMAIL,
- MAIL_APP_THUNDERBIRD,
- MAIL_APP_THUNDERBIRD_FEED,
- MAIL_APP_MODEST,
- MAIL_APP_UNKNOWN
-} MailApplication;
-
-
-
-typedef enum {
- MAIL_TYPE_MBOX,
- MAIL_TYPE_IMAP,
- MAIL_TYPE_IMAP4,
- MAIL_TYPE_MAILDIR,
- MAIL_TYPE_MH,
- MAIL_TYPE_POP,
-} MailType;
-
-
-typedef struct {
- gchar *name;
- gchar *addr;
-} MailPerson;
-
-
-typedef struct {
- gint offset;
- gint mail_count;
- gint junk_count;
- gint delete_count;
- gchar *uri_prefix;
- MailType type;
-} MailStore;
-
-
-typedef struct {
- gchar *path;
- MailApplication mail_app;
- GMimeParser *parser;
- GMimeStream *stream;
- guint64 next_email_offset;
-} MailFile;
-
-
-typedef struct {
- gchar *attachment_name;
- gchar *mime;
- gchar *tmp_decoded_file;
-} MailAttachment;
-
-
-typedef enum {
- MIME_ENCODING_UNKNOWN,
- MIME_ENCODING_7BIT,
- MIME_ENCODING_8BIT,
- MIME_ENCODING_BINARY,
- MIME_ENCODING_BASE64,
- MIME_ENCODING_QUOTEDPRINTABLE,
- MIME_ENCODING_UUENCODE
-} MimeEncoding;
-
-
-typedef struct {
- gchar *type;
- gchar *subtype;
- gchar *name;
- MimeEncoding encoding;
-} MimeInfos;
-
-
-typedef struct {
- MailFile *parent_mail_file;
- gint id;
- gboolean is_mbox;
- gint mtime;
- gchar *path;
- gchar *uri; /* uri to pass to a mail client to open it at mail message */
- guint64 offset; /* start address of the email */
- gchar *message_id;
- gchar *reply_to;
- gboolean deleted;
- gboolean junk;
- GSList *references; /* message_ids */
- GSList *in_reply_to_ids; /* message_id of emails that it replies to */
- glong date;
- gchar *from;
- GSList *to;
- GSList *cc;
- GSList *bcc;
- gchar *subject;
- gchar *content_type; /* text/plain or text/html etc. */
- gchar *body;
- GSList *attachments; /* names of attachments */
- MailStore *store;
- gchar *uid;
-} MailMessage;
-
-
-void email_unwatch_directory (const gchar *dir, const gchar *service);
-void email_watch_directory (const gchar *dir, const gchar *service);
-void email_watch_directories (const GSList *dirs, const gchar *service);
-
-typedef void ( * FindAttachmentsHelperFct) (GMimeObject *obj, gpointer data);
-typedef void (* ReadMailHelperFct) (GMimeMessage *g_m_message, MailMessage *msg, gpointer read_mail_user_data);
-typedef gchar* (* MakeURIHelperFct) (MailMessage *msg, gpointer read_mail_user_data);
-
-gboolean email_parse_and_save_mail_message (DBConnection *db_con, MailApplication mail_app, const char *path,
- ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data);
-
-gboolean email_parse_mail_file_and_save_new_emails (DBConnection *db_con, MailApplication mail_app, const char *path,
- ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data,
- MakeURIHelperFct uri_helper, gpointer make_uri_user_data,
- MailStore *store);
-
-//gboolean email_is_in_a_mh_dir (const gchar *path);
-//void email_mh_watch_mail_messages (DBConnection *db_con, const gchar *path);
-
-gboolean email_is_in_a_maildir_dir (const gchar *path);
-void email_maildir_watch_mail_messages (DBConnection *db_con, const gchar *path);
-
-MailPerson * email_allocate_mail_person (void);
-void email_free_mail_person (MailPerson *mp);
-
-MailAttachment* email_allocate_mail_attachment (void);
-void email_free_mail_attachment (MailAttachment *ma);
-
-MailMessage * email_allocate_mail_message (void);
-void email_free_mail_message (MailMessage *msg);
-
-MailFile * email_open_mail_file_at_offset (MailApplication mail_app, const char *path, off_t offset, gboolean scan_from_for_mbox);
-void email_free_mail_file (MailFile *mf);
-MailMessage * email_mail_file_parse_next (MailFile *mf, ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data,
- FindAttachmentsHelperFct find_attachments_helper);
-
-MailMessage * email_parse_mail_message_by_path (MailApplication mail_app, const gchar *path,
- ReadMailHelperFct read_mail_helper, gpointer read_mail_user_data,
- FindAttachmentsHelperFct find_attachments_helper);
-
-MimeInfos * email_allocate_mime_infos (void);
-void email_free_mime_infos (MimeInfos *infos);
-MimeInfos * email_get_mime_infos_from_mime_file (const gchar *mime_file);
-
-gboolean email_add_saved_mail_attachment_to_mail_message (MailMessage *mail_msg, MailAttachment *ma);
-
-gchar * email_make_tmp_name_for_mail_attachment (const gchar *filename);
-gboolean email_decode_mail_attachment_to_file (const gchar *src, const gchar *dst, MimeEncoding encoding);
-
-#endif
diff --git a/src/trackerd/tracker-email.c b/src/trackerd/tracker-email.c
deleted file mode 100644
index ea47fba59..000000000
--- a/src/trackerd/tracker-email.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Tracker
- * routines for emails
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <gmodule.h>
-
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-email.h"
-#include "tracker-email-utils.h"
-
-extern Tracker *tracker;
-
-static GModule *module = NULL;
-
-
-/* must be called before any work on files containing mails */
-void
-tracker_email_add_service_directories (DBConnection *db_con)
-{
- TrackerMailWatchEmails func;
-
- if (!module)
- return;
-
- if (g_module_symbol (module, "tracker_email_watch_emails", (gpointer *) &func)) {
- (func) (db_con);
- }
-}
-
-
-void
-tracker_email_end_email_watching (void)
-{
- TrackerMailFinalize func;
-
- if (!module)
- return;
-
- if (g_module_symbol (module, "tracker_email_finalize", (gpointer *) &func)) {
- (func) ();
- }
-
- g_mime_shutdown ();
-}
-
-
-gboolean
-tracker_email_index_file (DBConnection *db_con, FileInfo *info)
-{
- TrackerMailIndexFile func;
-
- g_return_val_if_fail (db_con, FALSE);
- g_return_val_if_fail (info, FALSE);
-
- if (!module)
- return FALSE;
-
- if (!g_module_symbol (module, "tracker_email_index_file", (gpointer *) &func))
- return FALSE;
-
- return (func) (db_con, info);
-}
-
-gboolean
-tracker_email_init (void)
-{
- TrackerMailInit func;
- const gchar *email_client;
- gchar *module_name, *module_path;
- gboolean result = FALSE;
-
- if (module)
- return result;
-
- email_client = tracker_config_get_email_client (tracker->config);
-
- if (!email_client)
- return result;
-
- if (!g_module_supported ()) {
- g_error ("Modules are not supported by this platform");
- return result;
- }
-
- module_name = g_strdup_printf ("libemail-%s.so", email_client);
- module_path = g_build_filename (MAIL_MODULES_DIR, module_name, NULL);
-
- module = g_module_open (module_path, G_MODULE_BIND_LOCAL);
-
- if (!module) {
- g_warning ("Could not load EMail module: %s , %s\n", module_name, g_module_error ());
- g_free (module_name);
- g_free (module_path);
- return result;
- }
-
- g_module_make_resident (module);
-
- if (g_module_symbol (module, "tracker_email_init", (gpointer *) &func)) {
- g_mime_init (0);
-
- result = (func) ();
- }
-
- g_free (module_name);
- g_free (module_path);
-
- return result;
-}
-
-const gchar *
-tracker_email_get_name (void)
-{
- TrackerMailGetName func;
-
- if (!module)
- return NULL;
-
- if (!g_module_symbol (module, "tracker_email_get_name", (gpointer *) &func))
- return NULL;
-
- return (func) ();
-}
diff --git a/src/trackerd/tracker-email.h b/src/trackerd/tracker-email.h
deleted file mode 100644
index 2bd98784c..000000000
--- a/src/trackerd/tracker-email.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Tracker
- * routines for emails
- * Copyright (C) 2006, Laurent Aguerreche (laurent.aguerreche@free.fr)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_EMAIL_H_
-#define _TRACKER_EMAIL_H_
-
-#include "tracker-utils.h"
-
-#include "config.h"
-
-#include "tracker-db-sqlite.h"
-
-typedef gboolean (* TrackerMailInit) (void);
-typedef void (* TrackerMailFinalize) (void);
-typedef void (* TrackerMailWatchEmails) (DBConnection *db_con);
-typedef gboolean (* TrackerMailIndexFile) (DBConnection *db_con,
- FileInfo *info);
-typedef const gchar * (* TrackerMailGetName) (void);
-
-gboolean tracker_email_init (void);
-void tracker_email_add_service_directories (DBConnection *db_con);
-void tracker_email_end_email_watching (void);
-gboolean tracker_email_file_is_interesting (FileInfo *info);
-gboolean tracker_email_index_file (DBConnection *db_con, FileInfo *info);
-const gchar * tracker_email_get_name (void);
-
-
-#endif
diff --git a/src/trackerd/tracker-fam.c b/src/trackerd/tracker-fam.c
deleted file mode 100644
index 87ef3b872..000000000
--- a/src/trackerd/tracker-fam.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#include <string.h>
-#include <unistd.h>
-#include <fam.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include "tracker-watch.h"
-
-
-extern Tracker *tracker;
-extern DBConnection *main_thread_db_con;
-
-
-typedef struct {
- char *watch_directory;
- FAMRequest *fr;
- WatchTypes watch_type;
-} DirWatch;
-
-
-static gint fam_watch_id = 0;
-static FAMConnection fc;
-
-/* table to store all active directory watches */
-static GHashTable *watch_table;
-
-
-gboolean
-tracker_is_directory_watched (const char *dir, DBConnection *db_con)
-{
- DirWatch *watch;
-
- if (!dir) {
- return FALSE;
- }
-
- watch = g_hash_table_lookup (watch_table, dir);
-
- return (watch != NULL);
-}
-
-
-static WatchTypes
-tracker_get_directory_watch_type (const char *dir)
-{
- DirWatch *watch;
-
- watch = g_hash_table_lookup (watch_table, dir);
-
- if (watch != NULL) {
- return watch->watch_type;
- }
-
- return WATCH_OTHER;
-}
-
-
-static void
-free_watch_func (gpointer user_data)
-{
- DirWatch *fw;
-
- fw = user_data;
-
- if (fw->fr) {
- g_free (fw->fr);
- }
-
- if (fw->watch_directory) {
- g_free (fw->watch_directory);
- }
-
- if (fw) {
- g_free (fw);
- }
-}
-
-
-void
-tracker_end_watching (void)
-{
- FAMClose (&fc);
-
- if (fam_watch_id > 0) {
- g_source_remove (fam_watch_id);
- fam_watch_id = 0;
- }
-
- g_hash_table_destroy (watch_table);
-}
-
-
-static gboolean
-is_delete_event (TrackerChangeAction event_type)
-{
- return (event_type == TRACKER_ACTION_DELETE ||
- event_type == TRACKER_ACTION_DELETE_SELF ||
- event_type == TRACKER_ACTION_FILE_DELETED ||
- event_type == TRACKER_ACTION_DIRECTORY_DELETED);
-}
-
-
-static gboolean
-fam_callback (GIOChannel *source,
- GIOCondition condition,
- gpointer data)
-{
- int counter;
-
- counter = 1;
-
- while (FAMPending (&fc)) {
- FAMEvent ev;
- DirWatch *watch;
- TrackerChangeAction event_type;
-
- if (FAMNextEvent (&fc, &ev) != 1) {
- tracker_end_watching ();
- return FALSE;
- }
-
- watch = (DirWatch *) ev.userdata;
- event_type = TRACKER_ACTION_IGNORE;
-
- switch (ev.code) {
-
- case FAMChanged:
- event_type = TRACKER_ACTION_CHECK;
- counter = 1;
- break;
- case FAMDeleted:
- event_type = TRACKER_ACTION_DELETE;
- counter = 0;
- break;
- case FAMCreated:
- event_type = TRACKER_ACTION_CREATE;
- counter = 1;
- break;
-
- case FAMStartExecuting:
- case FAMStopExecuting:
- case FAMAcknowledge:
- case FAMExists:
- case FAMEndExist:
- case FAMMoved:
- continue;
- break;
- }
-
- if (event_type != TRACKER_ACTION_IGNORE) {
- char *file_uri, *file_utf8_uri;
- FileInfo *info;
-
- if (tracker_is_empty_string (ev.filename)) {
- continue;
- }
-
- if (ev.filename[0] == G_DIR_SEPARATOR) {
- file_uri = g_strdup (ev.filename);
- } else {
- char *s;
-
- s = g_filename_to_utf8 (ev.filename, -1, NULL, NULL, NULL);
-
- if (tracker_ignore_file (s)) {
- g_free (s);
- continue;
- } else {
- file_uri = g_build_filename (watch->watch_directory, ev.filename, NULL);
- }
-
- g_free (s);
- }
-
- file_utf8_uri = g_filename_to_utf8 (file_uri, -1, NULL, NULL, NULL);
-
- g_free (file_uri);
-
- if (!file_utf8_uri) {
- tracker_error ("ERROR: FAM file uri could not be converted to utf8 format");
- continue;
- }
-
- if (file_utf8_uri[0] != '/' ||
- tracker_process_files_should_be_ignored (tracker->config, file_utf8_uri) ||
- tracker_process_files_should_be_crawled (tracker, file_utf8_uri) ||
- tracker_process_files_should_be_watched (tracker->config, file_utf8_uri)) {
- g_free (file_utf8_uri);
- continue;
-
- }
-
- info = tracker_create_file_info (file_utf8_uri, event_type, counter, WATCH_OTHER);
-
- if (tracker_file_info_is_valid (info)) {
-
- /* process deletions immediately - schedule (make pending) all others */
- if (is_delete_event (event_type)) {
- char *uri_in_locale, *parent;
-
- uri_in_locale = g_filename_from_utf8 (info->uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- tracker_error ("ERROR: FAM uri could not be converted to locale format");
- return FALSE;
- }
-
- parent = g_path_get_dirname (uri_in_locale);
-
- g_free (uri_in_locale);
-
- if (tracker_is_directory_watched (parent, NULL) || tracker_is_directory_watched (info->uri, NULL)) {
- g_async_queue_push (tracker->file_process_queue, info);
- tracker_add_io_grace (info->uri);
- tracker_notify_file_data_available ();
- } else {
- tracker_free_file_info (info);
- }
-
- g_free (parent);
-
- } else {
- tracker_add_io_grace (info->uri);
- if (event_type == TRACKER_ACTION_CREATE) {
- tracker_db_insert_pending_file (main_thread_db_con, info->file_id, info->uri, NULL, info->mime, info->counter, info->action, info->is_directory, TRUE, -1);
- } else {
- tracker_db_insert_pending_file (main_thread_db_con, info->file_id, info->uri, NULL, info->mime, info->counter, info->action, info->is_directory, FALSE, -1);
- }
- tracker_free_file_info (info);
- }
- }
-
- g_free (file_utf8_uri);
- }
- }
-
- return TRUE;
-}
-
-
-gboolean
-tracker_start_watching (void)
-{
- GIOChannel *ioc;
-
- if (FAMOpen2 (&fc, "Tracker") != 0) {
- return FALSE;
- }
-
- ioc = g_io_channel_unix_new (FAMCONNECTION_GETFD (&fc));
-
- fam_watch_id = g_io_add_watch (ioc,
- G_IO_IN | G_IO_HUP | G_IO_ERR,
- fam_callback, &fc);
- g_io_channel_unref (ioc);
-
- watch_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_watch_func);
-
- if (tracker->watch_limit == 0) {
- tracker->watch_limit = 300;
- }
-
- return TRUE;
-}
-
-
-gboolean
-tracker_add_watch_dir (const char *dir, DBConnection *db_con)
-{
- char *dir_in_locale;
-
- if (!tracker_file_is_valid (dir)) {
- return FALSE;
- }
-
- if (!tracker_is_directory (dir)) {
- return FALSE;
- }
-
-
- if (g_hash_table_size (watch_table) >= tracker->watch_limit) {
- tracker_error ("ERROR: watch Limit has been exceeded - unable to watch any more directories");
- return FALSE;
- }
-
- dir_in_locale = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL);
-
- if (!dir_in_locale) {
- tracker_error ("ERROR: FAM dir could not be converted to locale format");
- return FALSE;
- }
-
- /* check directory permissions are okay */
- if (g_access (dir_in_locale, F_OK) == 0 && g_access (dir_in_locale, R_OK) == 0) {
- DirWatch *fwatch;
- FAMRequest *fr;
- int rc;
-
- fwatch = g_new (DirWatch, 1);
- fr = g_new (FAMRequest, 1);
- fwatch->watch_directory = g_strdup (dir);
- fwatch->fr = fr;
- rc = -1;
- rc = FAMMonitorDirectory (&fc, dir_in_locale, fr, fwatch);
-
- if (rc > 0) {
- tracker_error ("ERROR: FAM watch on %s has failed", dir);
- g_free (dir_in_locale);
- free_watch_func (fwatch);
- return FALSE;
- } else {
- g_hash_table_insert (watch_table, g_strdup (dir), fwatch);
- g_free (dir_in_locale);
- tracker_log ("Watching directory %s (total watches = %d)", dir, g_hash_table_size (watch_table));
- return TRUE;
- }
- }
-
- g_free (dir_in_locale);
-
- return FALSE;
-}
-
-
-static gboolean
-delete_watch (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- DirWatch *fwatch;
- const char *dir;
-
- dir = user_data;
- fwatch = value;
-
- if (fwatch && dir) {
- char *dir_part;
-
- dir_part = g_strconcat (dir, G_DIR_SEPARATOR_S, NULL);
-
- /* need to delete subfolders of dir as well */
- if ((strcmp (fwatch->watch_directory, dir) == 0) || (g_str_has_prefix (fwatch->watch_directory, dir_part))) {
- FAMCancelMonitor (&fc, fwatch->fr);
- g_free (dir_part);
- return TRUE;
- }
-
- g_free (dir_part);
- }
-
- return FALSE;
-}
-
-
-int
-tracker_count_watch_dirs (void)
-{
- return g_hash_table_size (watch_table);
-}
-
-
-void
-tracker_remove_watch_dir (const char *dir, gboolean delete_subdirs, DBConnection *db_con)
-{
- char *str;
-
- str = g_strdup (dir);
-
- if (delete_subdirs) {
- g_hash_table_foreach_remove (watch_table, delete_watch, str);
- } else {
- DirWatch *fwatch;
-
- fwatch = g_hash_table_lookup (watch_table, dir);
- FAMCancelMonitor (&fc, fwatch->fr);
- g_hash_table_remove (watch_table, dir);
- }
-
- g_free (str);
-}
diff --git a/src/trackerd/tracker-hal.c b/src/trackerd/tracker-hal.c
deleted file mode 100644
index 5aabd6d71..000000000
--- a/src/trackerd/tracker-hal.c
+++ /dev/null
@@ -1,906 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <config.h>
-
-#ifdef HAVE_HAL
-
-#include <string.h>
-
-#include <libhal.h>
-#include <libhal-storage.h>
-
-#include <dbus/dbus-glib-lowlevel.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-db.h"
-#include "tracker-hal.h"
-#include "tracker-utils.h"
-
-#define DEVICE_AC_ADAPTER "ac_adapter"
-#define DEVICE_VOLUME "volume"
-
-#define PROP_AC_ADAPTER_ON "ac_adapter.present"
-#define PROP_IS_MOUNTED "volume.is_mounted"
-
-#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_HAL, TrackerHalPriv))
-
-typedef struct {
- LibHalContext *context;
-
- GHashTable *all_devices;
- GHashTable *mounted_devices;
- GHashTable *removable_devices;
-
- gchar *battery_udi;
- gboolean battery_in_use;
-} TrackerHalPriv;
-
-typedef struct {
- LibHalContext *context;
- GSList *roots;
-} GetRoots;
-
-static void tracker_hal_class_init (TrackerHalClass *klass);
-static void tracker_hal_init (TrackerHal *hal);
-static void tracker_hal_finalize (GObject *object);
-static void hal_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec);
-static gboolean hal_setup_devices (TrackerHal *hal);
-static gboolean hal_setup_batteries (TrackerHal *hal);
-static gboolean hal_device_add (TrackerHal *hal,
- LibHalVolume *volume);
-static void hal_device_added_cb (LibHalContext *context,
- const gchar *udi);
-static void hal_device_removed_cb (LibHalContext *context,
- const gchar *udi);
-static void hal_device_property_modified_cb (LibHalContext *context,
- const char *udi,
- const char *key,
- dbus_bool_t is_removed,
- dbus_bool_t is_added);
-
-enum {
- PROP_0,
- PROP_BATTERY_IN_USE,
- PROP_BATTERY_EXISTS,
-};
-
-enum {
- SIG_MOUNT_POINT_ADDED,
- SIG_MOUNT_POINT_REMOVED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = {0};
-
-G_DEFINE_TYPE (TrackerHal, tracker_hal, G_TYPE_OBJECT);
-
-static void
-tracker_hal_class_init (TrackerHalClass *klass)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = tracker_hal_finalize;
- object_class->get_property = hal_get_property;
-
- signals[SIG_MOUNT_POINT_ADDED] =
- g_signal_new ("mount-point-added",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1, G_TYPE_STRING);
-
- signals[SIG_MOUNT_POINT_REMOVED] =
- g_signal_new ("mount-point-removed",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE,
- 1, G_TYPE_STRING);
-
- g_object_class_install_property (object_class,
- PROP_BATTERY_IN_USE,
- g_param_spec_boolean ("battery-in-use",
- "Battery exists",
- "There is a battery on this machine",
- FALSE,
- G_PARAM_READABLE));
-
- g_object_class_install_property (object_class,
- PROP_BATTERY_EXISTS,
- g_param_spec_boolean ("battery-exists",
- "Battery exists",
- "There is a battery on this machine",
- FALSE,
- G_PARAM_READABLE));
-
- g_type_class_add_private (object_class, sizeof (TrackerHalPriv));
-}
-
-static void
-tracker_hal_init (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
- DBusError error;
- DBusConnection *connection;
-
- priv = GET_PRIV (hal);
-
- dbus_error_init (&error);
-
- connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not get the system DBus connection, %s",
- error.message);
- dbus_error_free (&error);
- return;
- }
-
- dbus_connection_setup_with_g_main (connection, NULL);
-
- tracker_debug ("Initializing HAL...");
- priv->context = libhal_ctx_new ();
-
- if (!priv->context) {
- tracker_error ("Could not create HAL context");
- return;
- }
-
- libhal_ctx_set_user_data (priv->context, hal);
- libhal_ctx_set_dbus_connection (priv->context, connection);
-
- if (!libhal_ctx_init (priv->context, &error)) {
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not initialise the HAL context, %s",
- error.message);
- dbus_error_free (&error);
- } else {
- tracker_error ("Could not initialise the HAL context, "
- "no error, is hald running?");
- }
-
- libhal_ctx_free (priv->context);
- return;
- }
-
- priv->all_devices = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) g_free);
-
- priv->mounted_devices = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) g_free);
-
- priv->removable_devices = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) g_free);
-
- /* Volume and property notification callbacks */
- tracker_debug ("HAL monitors set for devices added/removed/mounted/umounted...");
- libhal_ctx_set_device_added (priv->context, hal_device_added_cb);
- libhal_ctx_set_device_removed (priv->context, hal_device_removed_cb);
- libhal_ctx_set_device_property_modified (priv->context, hal_device_property_modified_cb);
-
- /* Get all devices which are mountable and set them up */
- if (!hal_setup_devices (hal)) {
- return;
- }
-
- /* Get all battery devices and set them up */
- if (!hal_setup_batteries (hal)) {
- return;
- }
-}
-
-static void
-tracker_hal_finalize (GObject *object)
-{
- TrackerHalPriv *priv;
-
- priv = GET_PRIV (object);
-
- g_hash_table_destroy (priv->removable_devices);
- g_hash_table_destroy (priv->mounted_devices);
- g_hash_table_destroy (priv->all_devices);
-
- g_free (priv->battery_udi);
-
- libhal_ctx_set_user_data (priv->context, NULL);
- libhal_ctx_free (priv->context);
-
- (G_OBJECT_CLASS (tracker_hal_parent_class)->finalize) (object);
-}
-
-static void
-hal_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TrackerHalPriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_BATTERY_IN_USE:
- g_value_set_boolean (value, priv->battery_in_use);
- break;
- case PROP_BATTERY_EXISTS:
- g_value_set_boolean (value, priv->battery_udi != NULL);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static gboolean
-hal_setup_devices (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
- DBusError error;
- gchar **devices, **p;
- gint num;
-
- priv = GET_PRIV (hal);
-
- dbus_error_init (&error);
-
- devices = libhal_find_device_by_capability (priv->context,
- DEVICE_VOLUME,
- &num,
- &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not get devices with 'volume' capability, %s",
- error.message);
- dbus_error_free (&error);
- return FALSE;
- }
-
- if (!devices || !devices[0]) {
- tracker_log ("HAL devices not found with 'volume' capability");
- return TRUE;
- }
-
- for (p = devices; *p; p++) {
- LibHalVolume *volume;
-
- volume = libhal_volume_from_udi (priv->context, *p);
- if (!volume) {
- continue;
- }
-
- tracker_debug ("HAL device found:\n"
- " - udi : %s\n"
- " - mount point: %s\n"
- " - device file: %s\n"
- " - uuid : %s\n"
- " - mounted : %s\n"
- " - file system: %s\n"
- " - label : %s",
- libhal_volume_get_udi (volume),
- libhal_volume_get_mount_point (volume),
- libhal_volume_get_device_file (volume),
- libhal_volume_get_uuid (volume),
- libhal_volume_is_mounted (volume) ? "yes" : "no",
- libhal_volume_get_fstype (volume),
- libhal_volume_get_label (volume));
-
- hal_device_add (hal, volume);
- libhal_volume_free (volume);
- }
-
- libhal_free_string_array (devices);
-
- return TRUE;
-}
-
-static gboolean
-hal_setup_batteries (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
- DBusError error;
- gchar **devices, **p;
- gint num;
-
- priv = GET_PRIV (hal);
-
- dbus_error_init (&error);
-
- devices = libhal_find_device_by_capability (priv->context,
- DEVICE_AC_ADAPTER,
- &num,
- &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not get AC adapter capable devices, %s",
- error.message);
- dbus_error_free (&error);
- return FALSE;
- }
-
- tracker_log ("HAL found %d AC adapter capable devices", num);
-
- if (!devices || !devices[0]) {
- libhal_free_string_array (devices);
-
- priv->battery_in_use = FALSE;
- priv->battery_udi = NULL;
-
- return TRUE;
- }
-
- for (p = devices; *p; p++) {
- if (!priv->battery_udi) {
- /* For now just use the first one we find */
- priv->battery_udi = g_strdup (*p);
- tracker_log (" - Device '%s' (default)", *p);
- } else {
- tracker_log (" - Device '%s'", *p);
- }
- }
-
- libhal_free_string_array (devices);
-
- /* Make sure we watch changes to the battery use */
- libhal_device_add_property_watch (priv->context,
- priv->battery_udi,
- &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not add device:'%s' to property watch, %s",
- priv->battery_udi, error.message);
- dbus_error_free (&error);
- return FALSE;
- }
-
- /* Get current state, are we using the battery now? */
- priv->battery_in_use = !libhal_device_get_property_bool (priv->context,
- priv->battery_udi,
- PROP_AC_ADAPTER_ON,
- NULL);
-
- tracker_log ("HAL reports system is currently powered by %s",
- priv->battery_in_use ? "battery" : "AC adapter");
-
- return TRUE;
-}
-
-static void
-hal_mount_point_add (TrackerHal *hal,
- const gchar *udi,
- const gchar *mount_point,
- gboolean removable_device)
-{
- TrackerHalPriv *priv;
-
- priv = GET_PRIV (hal);
-
- tracker_log ("HAL device with mount point:'%s', removable:%s now being tracked",
- mount_point,
- removable_device ? "yes" : "no");
-
- g_hash_table_insert (priv->mounted_devices,
- g_strdup (udi),
- g_strdup (mount_point));
-
- if (removable_device) {
- g_hash_table_insert (priv->removable_devices,
- g_strdup (udi),
- g_strdup (mount_point));
- }
-
- g_signal_emit (hal, signals[SIG_MOUNT_POINT_ADDED], 0, mount_point, NULL);
-}
-
-static void
-hal_mount_point_remove (TrackerHal *hal,
- const gchar *udi)
-{
- TrackerHalPriv *priv;
- const gchar *mount_point;
-
- priv = GET_PRIV (hal);
-
- mount_point = g_hash_table_lookup (priv->mounted_devices, udi);
- if (!mount_point) {
- return;
- }
-
- tracker_log ("HAL device with mount point:'%s', removable:%s NO LONGER being tracked",
- mount_point,
- g_hash_table_remove (priv->removable_devices, udi) ? "yes" : "no");
-
- g_signal_emit (hal, signals[SIG_MOUNT_POINT_REMOVED], 0, mount_point, NULL);
-
- g_hash_table_remove (priv->mounted_devices, udi);
- g_hash_table_remove (priv->removable_devices, udi);
-}
-
-static const gchar *
-hal_drive_type_to_string (LibHalDriveType type)
-{
- switch (type) {
- case LIBHAL_DRIVE_TYPE_REMOVABLE_DISK:
- return "LIBHAL_DRIVE_TYPE_REMOVABLE_DISK";
- case LIBHAL_DRIVE_TYPE_DISK:
- return "LIBHAL_DRIVE_TYPE_DISK";
- case LIBHAL_DRIVE_TYPE_CDROM:
- return "LIBHAL_DRIVE_TYPE_CDROM";
- case LIBHAL_DRIVE_TYPE_FLOPPY:
- return "LIBHAL_DRIVE_TYPE_FLOPPY";
- case LIBHAL_DRIVE_TYPE_TAPE:
- return "LIBHAL_DRIVE_TYPE_TAPE";
- case LIBHAL_DRIVE_TYPE_COMPACT_FLASH:
- return "LIBHAL_DRIVE_TYPE_COMPACT_FLASH";
- case LIBHAL_DRIVE_TYPE_MEMORY_STICK:
- return "LIBHAL_DRIVE_TYPE_MEMORY_STICK";
- case LIBHAL_DRIVE_TYPE_SMART_MEDIA:
- return "LIBHAL_DRIVE_TYPE_SMART_MEDIA";
- case LIBHAL_DRIVE_TYPE_SD_MMC:
- return "LIBHAL_DRIVE_TYPE_SD_MMC";
- case LIBHAL_DRIVE_TYPE_CAMERA:
- return "LIBHAL_DRIVE_TYPE_CAMERA";
- case LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER:
- return "LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER";
- case LIBHAL_DRIVE_TYPE_ZIP:
- return "LIBHAL_DRIVE_TYPE_ZIP";
- case LIBHAL_DRIVE_TYPE_JAZ:
- return "LIBHAL_DRIVE_TYPE_JAZ";
- case LIBHAL_DRIVE_TYPE_FLASHKEY:
- return "LIBHAL_DRIVE_TYPE_FLASHKEY";
- case LIBHAL_DRIVE_TYPE_MO:
- return "LIBHAL_DRIVE_TYPE_MO";
- }
-
- return "";
-}
-
-static gboolean
-hal_device_is_removable (TrackerHal *hal,
- const gchar *device_file)
-{
- TrackerHalPriv *priv;
- LibHalDrive *drive;
- gboolean removable;
-
- if (!device_file) {
- return FALSE;
- }
-
- priv = GET_PRIV (hal);
-
- drive = libhal_drive_from_device_file (priv->context, device_file);
- if (!drive) {
- return FALSE;
- }
-
- removable = libhal_drive_uses_removable_media (drive);
- libhal_drive_free (drive);
-
- return removable;
-}
-
-static gboolean
-hal_device_should_be_tracked (TrackerHal *hal,
- const gchar *device_file)
-{
- TrackerHalPriv *priv;
- LibHalDrive *drive;
- LibHalDriveType drive_type;
- gboolean eligible;
-
- if (!device_file) {
- return FALSE;
- }
-
- priv = GET_PRIV (hal);
-
- drive = libhal_drive_from_device_file (priv->context, device_file);
- if (!drive) {
- return FALSE;
- }
-
- /* From the list, the first one below seems to be the ONLY one
- * to ignore:
- *
- * LIBHAL_DRIVE_TYPE_REMOVABLE_DISK = 0x00,
- * LIBHAL_DRIVE_TYPE_DISK = 0x01,
- * LIBHAL_DRIVE_TYPE_CDROM = 0x02,
- * LIBHAL_DRIVE_TYPE_FLOPPY = 0x03,
- * LIBHAL_DRIVE_TYPE_TAPE = 0x04,
- * LIBHAL_DRIVE_TYPE_COMPACT_FLASH = 0x05,
- * LIBHAL_DRIVE_TYPE_MEMORY_STICK = 0x06,
- * LIBHAL_DRIVE_TYPE_SMART_MEDIA = 0x07,
- * LIBHAL_DRIVE_TYPE_SD_MMC = 0x08,
- * LIBHAL_DRIVE_TYPE_CAMERA = 0x09,
- * LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a,
- * LIBHAL_DRIVE_TYPE_ZIP = 0x0b,
- * LIBHAL_DRIVE_TYPE_JAZ = 0x0c,
- * LIBHAL_DRIVE_TYPE_FLASHKEY = 0x0d,
- * LIBHAL_DRIVE_TYPE_MO = 0x0e
- *
- */
-
- drive_type = libhal_drive_get_type (drive);
-
- /* So here we don't track CDROM devices or the hard disks in
- * the machine, we simply track devices which are added or
- * removed in real time which we are interested in and which
- * are viable for tracking. CDROMs are too slow.
- */
- eligible = TRUE;
- eligible &= drive_type != LIBHAL_DRIVE_TYPE_DISK;
- eligible &= drive_type != LIBHAL_DRIVE_TYPE_CDROM;
-
- libhal_drive_free (drive);
-
- if (!eligible) {
- tracker_debug ("HAL device is not eligible, type is '%s'",
- hal_drive_type_to_string (drive_type));
- } else {
- tracker_debug ("HAL device is eligible, type is '%s'",
- hal_drive_type_to_string (drive_type));
- }
-
- return eligible;
-}
-
-static gboolean
-hal_device_add (TrackerHal *hal,
- LibHalVolume *volume)
-{
- TrackerHalPriv *priv;
- DBusError error;
- const gchar *udi;
- const gchar *mount_point;
- const gchar *device_file;
-
- priv = GET_PRIV (hal);
-
- dbus_error_init (&error);
-
- udi = libhal_volume_get_udi (volume);
- mount_point = libhal_volume_get_mount_point (volume);
- device_file = libhal_volume_get_device_file (volume);
-
- if (g_hash_table_lookup (priv->all_devices, udi)) {
- return TRUE;
- }
-
- /* If there is no mount point, then there is nothing to track */
- if (!hal_device_should_be_tracked (hal, device_file)) {
- tracker_log ("HAL device should not be tracked (not eligible)");
- return TRUE;
- }
-
- /* Make sure we watch changes to the mount/umount state */
- libhal_device_add_property_watch (priv->context, udi, &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not add device property watch for udi:'%s', %s",
- udi, error.message);
- dbus_error_free (&error);
- return FALSE;
- }
-
- g_hash_table_insert (priv->all_devices,
- g_strdup (udi),
- g_strdup (device_file));
-
- if (mount_point) {
- hal_mount_point_add (hal,
- udi,
- mount_point,
- hal_device_is_removable (hal, device_file));
- }
-
- return TRUE;
-}
-
-static void
-hal_device_added_cb (LibHalContext *context,
- const gchar *udi)
-{
- TrackerHal *hal;
- DBusError error;
- LibHalVolume *volume;
-
- dbus_error_init (&error);
-
- volume = libhal_volume_from_udi (context, udi);
- if (!volume) {
- /* Not a device with a volume */
- return;
- }
-
- tracker_log ("HAL device added:\n"
- " - udi : %s\n"
- " - mount point: %s\n"
- " - device file: %s\n"
- " - uuid : %s\n"
- " - mounted : %s\n"
- " - file system: %s\n"
- " - label : %s",
- udi,
- libhal_volume_get_mount_point (volume),
- libhal_volume_get_device_file (volume),
- libhal_volume_get_uuid (volume),
- libhal_volume_is_mounted (volume) ? "yes" : "no",
- libhal_volume_get_fstype (volume),
- libhal_volume_get_label (volume));
-
- hal = (TrackerHal*) libhal_ctx_get_user_data (context);
- hal_device_add (hal, volume);
- libhal_volume_free (volume);
-}
-
-static void
-hal_device_removed_cb (LibHalContext *context,
- const gchar *udi)
-{
- TrackerHal *hal;
- TrackerHalPriv *priv;
- const gchar *device_file;
- const gchar *mount_point;
-
- hal = (TrackerHal*) libhal_ctx_get_user_data (context);
- priv = GET_PRIV (hal);
-
- device_file = g_hash_table_lookup (priv->all_devices, udi);
-
- if (!device_file) {
- /* Don't report about unknown devices */
- return;
- }
-
- mount_point = g_hash_table_lookup (priv->mounted_devices, udi);
-
- tracker_log ("HAL device removed:\n"
- " - udi : %s\n"
- " - mount point: %s\n"
- " - device_file: %s",
- udi,
- mount_point,
- device_file);
-
- g_hash_table_remove (priv->all_devices, udi);
-
- hal_mount_point_remove (hal, udi);
-}
-
-static void
-hal_device_property_modified_cb (LibHalContext *context,
- const char *udi,
- const char *key,
- dbus_bool_t is_removed,
- dbus_bool_t is_added)
-{
- TrackerHal *hal;
- TrackerHalPriv *priv;
- DBusError error;
- gboolean device_is_battery;
- gboolean current_state;
-
- hal = (TrackerHal*) libhal_ctx_get_user_data (context);
- priv = GET_PRIV (hal);
-
- current_state = priv->battery_in_use;
- device_is_battery = priv->battery_udi && strcmp (priv->battery_udi, udi) == 0;
-
- if (!device_is_battery &&
- !g_hash_table_lookup (priv->all_devices, udi)) {
- tracker_debug ("HAL device property change for another device, ignoring");
- return;
- }
-
- dbus_error_init (&error);
-
- /* We either get notifications about the battery state OR a
- * device being mounted/umounted.
- */
- if (device_is_battery) {
- priv->battery_in_use = !libhal_device_get_property_bool (priv->context,
- priv->battery_udi,
- PROP_AC_ADAPTER_ON,
- &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not device property:'%s' for udi:'%s', %s",
- udi, PROP_AC_ADAPTER_ON, error.message);
- dbus_error_free (&error);
- return;
- }
-
- tracker_log ("HAL reports system is now powered by %s",
- priv->battery_in_use ? "battery" : "AC adapter");
-
- /* If we have come off battery power wakeup index thread */
- if (current_state && !priv->battery_in_use) {
- tracker_notify_file_data_available ();
- }
- } else {
- gboolean is_mounted;
-
- tracker_debug ("HAL device property change for udi:'%s' and key:'%s'",
- udi, key);
-
- if (strcmp (key, PROP_IS_MOUNTED) != 0) {
- return;
- }
-
- is_mounted = libhal_device_get_property_bool (context,
- udi,
- key,
- &error);
-
- if (dbus_error_is_set (&error)) {
- tracker_error ("Could not get device property:'%s' for udi:'%s', %s",
- udi, key, error.message);
- dbus_error_free (&error);
- return;
- }
-
- if (is_mounted) {
- LibHalVolume *volume;
- const gchar *mount_point;
- const gchar *device_file;
-
- volume = libhal_volume_from_udi (context, udi);
- mount_point = libhal_volume_get_mount_point (volume);
- device_file = libhal_volume_get_device_file (volume);
-
- tracker_log ("HAL device with udi:'%s' is now mounted",
- udi);
-
- hal_mount_point_add (hal,
- udi,
- mount_point,
- hal_device_is_removable (hal, device_file));
-
- libhal_volume_free (volume);
- } else {
- tracker_log ("HAL device with udi:'%s' is now unmounted",
- udi);
-
- hal_mount_point_remove (hal, udi);
- }
- }
-}
-
-TrackerHal *
-tracker_hal_new (void)
-{
- return g_object_new (TRACKER_TYPE_HAL, NULL);
-}
-
-gboolean
-tracker_hal_get_battery_in_use (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_HAL (hal), TRUE);
-
- priv = GET_PRIV (hal);
-
- return priv->battery_in_use;
-}
-
-gboolean
-tracker_hal_get_battery_exists (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_HAL (hal), TRUE);
-
- priv = GET_PRIV (hal);
-
- return priv->battery_udi != NULL;
-}
-
-static void
-hal_get_mount_point_by_udi_foreach (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- LibHalVolume *volume;
- GetRoots *gr;
- const gchar *udi;
- const gchar *mount_point;
- gboolean is_mounted;
-
- gr = (GetRoots*) user_data;
- udi = (const gchar*) key;
-
- volume = libhal_volume_from_udi (gr->context, udi);
- if (!volume) {
- tracker_debug ("HAL device with udi:'%s' has no volume, "
- "should we delete?",
- udi);
- return;
- }
-
- mount_point = libhal_volume_get_mount_point (volume);
- is_mounted = libhal_volume_is_mounted (volume);
-
- if (is_mounted && mount_point) {
- gr->roots = g_slist_prepend (gr->roots, g_strdup (mount_point));
- }
-
- libhal_volume_free (volume);
-}
-
-GSList *
-tracker_hal_get_mounted_directory_roots (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
- GetRoots gr;
-
- g_return_val_if_fail (TRACKER_IS_HAL (hal), NULL);
-
- priv = GET_PRIV (hal);
-
- gr.context = priv->context;
- gr.roots = NULL;
-
- g_hash_table_foreach (priv->mounted_devices,
- hal_get_mount_point_by_udi_foreach,
- &gr);
-
- return gr.roots;
-}
-
-GSList *
-tracker_hal_get_removable_device_roots (TrackerHal *hal)
-{
- TrackerHalPriv *priv;
- GetRoots gr;
-
- g_return_val_if_fail (TRACKER_IS_HAL (hal), NULL);
-
- priv = GET_PRIV (hal);
-
- gr.context = priv->context;
- gr.roots = NULL;
-
- g_hash_table_foreach (priv->removable_devices,
- hal_get_mount_point_by_udi_foreach,
- &gr);
-
- return gr.roots;
-}
-
-#endif /* HAVE_HAL */
diff --git a/src/trackerd/tracker-hal.h b/src/trackerd/tracker-hal.h
deleted file mode 100644
index e64394c7d..000000000
--- a/src/trackerd/tracker-hal.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_HAL
-
-#ifndef __TRACKER_HAL_H__
-#define __TRACKER_HAL_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_HAL (tracker_hal_get_type ())
-#define TRACKER_HAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_HAL, TrackerHal))
-#define TRACKER_HAL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TRACKER_TYPE_HAL, TrackerHalClass))
-#define TRACKER_IS_HAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_HAL))
-#define TRACKER_IS_HAL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TRACKER_TYPE_HAL))
-#define TRACKER_HAL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_HAL, TrackerHalClass))
-
-typedef struct _TrackerHal TrackerHal;
-typedef struct _TrackerHalClass TrackerHalClass;
-
-struct _TrackerHal {
- GObject parent;
-};
-
-struct _TrackerHalClass {
- GObjectClass parent_class;
-};
-
-GType tracker_hal_get_type (void) G_GNUC_CONST;
-
-TrackerHal *tracker_hal_new (void);
-gboolean tracker_hal_get_battery_in_use (TrackerHal *hal);
-gboolean tracker_hal_get_battery_exists (TrackerHal *hal);
-GSList * tracker_hal_get_mounted_directory_roots (TrackerHal *hal);
-GSList * tracker_hal_get_removable_device_roots (TrackerHal *hal);
-
-G_END_DECLS
-
-#endif /* __TRACKER_HAL_H__ */
-
-#endif /* HAVE_HAL */
diff --git a/src/trackerd/tracker-indexer.c b/src/trackerd/tracker-indexer.c
deleted file mode 100644
index f7b70501f..000000000
--- a/src/trackerd/tracker-indexer.c
+++ /dev/null
@@ -1,1318 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-/* Needed before including math.h for lrintf() */
-#define _ISOC9X_SOURCE 1
-#define _ISOC99_SOURCE 1
-
-#define __USE_ISOC9X 1
-#define __USE_ISOC99 1
-
-/* Size of free block pool of inverted index */
-#define INDEXFBP 32
-#define SCORE_MULTIPLIER 100000
-#define MAX_HIT_BUFFER 480000
-
-#define CREATE_INDEX \
- "CREATE TABLE HitIndex (Word Text not null " \
- "unique, HitCount Integer, HitArraySize Integer, HitArray Blob);"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
-#include <math.h>
-
-#include <depot.h>
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-query-tree.h"
-#include "tracker-indexer.h"
-#include "tracker-cache.h"
-#include "tracker-dbus.h"
-#include "tracker-service-manager.h"
-#include "tracker-query-tree.h"
-#include "tracker-hal.h"
-#include "tracker-process-files.h"
-
-extern Tracker *tracker;
-
-struct Indexer_ {
- DEPOT *word_index; /* file hashtable handle for the word -> {serviceID, ServiceTypeID, Score} */
- GMutex *word_mutex;
- char *name;
- gpointer emails; /* pointer to email indexer */
- gpointer data; /* pointer to file indexer */
- gboolean main_index;
- gboolean needs_merge; /* should new stuff be added directly or merged later on from a new index */
-};
-
-static inline gint16
-get_score (WordDetails *details)
-{
- unsigned char a[2];
-
- a[0] = (details->amalgamated >> 16) & 0xFF;
- a[1] = (details->amalgamated >> 8) & 0xFF;
-
- return (gint16) (a[0] << 8) | (a[1]);
-}
-
-
-static inline guint8
-get_service_type (WordDetails *details)
-{
- return (details->amalgamated >> 24) & 0xFF;
-}
-
-
-guint32
-tracker_indexer_calc_amalgamated (gint service, gint score)
-{
- unsigned char a[4];
- gint16 score16;
- guint8 service_type;
-
- if (score > 30000) {
- score16 = 30000;
- } else {
- score16 = (gint16) score;
- }
-
- service_type = (guint8) service;
-
- /* amalgamate and combine score and service_type into a single 32-bit int for compact storage */
- a[0] = service_type;
- a[1] = (score16 >> 8 ) & 0xFF ;
- a[2] = score16 & 0xFF ;
- a[3] = 0;
-
- return (a[0] << 24) | (a[1] << 16) | (a[2] << 8) | a[3];
-}
-
-
-static int
-get_preferred_bucket_count (Indexer *indexer)
-{
- gint result;
- gint bucket_ratio;
-
- bucket_ratio = tracker_config_get_bucket_ratio (tracker->config);
- result = dprnum (indexer->word_index);
-
- if (bucket_ratio < 1) {
- result /= 2;
- } else if (bucket_ratio > 3) {
- result *= 4;
- } else {
- result *= bucket_ratio;
- }
-
- tracker_log ("Preferred bucket count is %d", result);
-
- return result;
-}
-
-gboolean
-tracker_indexer_repair (const char *name)
-{
- gboolean result = TRUE;
- char *index_name = g_build_filename (tracker->data_dir, name, NULL);
-
- result = dprepair (index_name);
- g_free (index_name);
-
- return result;
-}
-
-
-static inline DEPOT *
-open_index (const gchar *name)
-{
- DEPOT *word_index = NULL;
-
- if (!name) return NULL;
-
- tracker_log ("Opening index %s", name);
-
- if (strstr (name, "tmp")) {
- word_index = dpopen (name, DP_OWRITER | DP_OCREAT | DP_ONOLCK,
- tracker_config_get_min_bucket_count (tracker->config));
- } else {
- word_index = dpopen (name, DP_OWRITER | DP_OCREAT | DP_ONOLCK,
- tracker_config_get_max_bucket_count (tracker->config));
- }
-
- if (!word_index) {
- tracker_error ("%s index was not closed properly and caused error %s- attempting repair", name, dperrmsg (dpecode));
- if (dprepair (name)) {
- word_index = dpopen (name, DP_OWRITER | DP_OCREAT | DP_ONOLCK,
- tracker_config_get_min_bucket_count (tracker->config));
- } else {
- g_assert ("FATAL: index file is dead (suggest delete index file and restart trackerd)");
- }
- }
-
- return word_index;
-
-}
-
-
-static inline char *
-get_index_file (const char *name)
-{
- char *word_dir;
-
- word_dir = g_build_filename (tracker->data_dir, name, NULL);
-
- return word_dir;
-}
-
-Indexer *
-tracker_indexer_open (const gchar *name, gboolean main_index)
-{
- char *word_dir;
- DEPOT *word_index;
- Indexer *result;
-
- if (!name) return NULL;
-
- word_dir = get_index_file (name);
-
- word_index = open_index (word_dir);
-
- g_free (word_dir);
-
- result = g_new0 (Indexer, 1);
-
- result->main_index = main_index;
-
- result->needs_merge = FALSE;
-
- result->name = g_strdup (name);
-
- result->word_index = word_index;
-
- result->word_mutex = g_mutex_new ();
-
- dpsetalign (word_index , 8);
-
- /* re optimize database if bucket count < rec count */
-
- int bucket_count, rec_count;
-
- bucket_count = dpbnum (result->word_index);
- rec_count = dprnum (result->word_index);
-
- tracker_log ("Bucket count (max is %d) is %d and Record Count is %d",
- tracker_config_get_max_bucket_count (tracker->config),
- bucket_count, rec_count);
-
- return result;
-}
-
-
-void
-tracker_indexer_close (Indexer *indexer)
-{
- g_return_if_fail (indexer);
-
- g_mutex_lock (indexer->word_mutex);
-
- if (!dpclose (indexer->word_index)) {
- tracker_log ("Index closure has failed due to %s", dperrmsg (dpecode));
- }
-
- g_mutex_unlock (indexer->word_mutex);
- g_mutex_free (indexer->word_mutex);
- g_free (indexer->name);
- g_free (indexer);
-}
-
-
-void
-tracker_indexer_free (Indexer *indexer, gboolean remove_file)
-{
-
-
- if (remove_file) {
-
- char *dbname = g_build_filename (tracker->data_dir, indexer->name, NULL);
-
- g_return_if_fail (indexer);
-
- g_mutex_lock (indexer->word_mutex);
-
- dpremove (dbname);
-
- g_mutex_unlock (indexer->word_mutex);
-
- g_free (dbname);
- } else {
- g_mutex_lock (indexer->word_mutex);
- dpclose (indexer->word_index);
- g_mutex_unlock (indexer->word_mutex);
- }
-
- g_mutex_free (indexer->word_mutex);
-
- g_free (indexer->name);
-
- g_free (indexer);
-
-
-}
-
-const gchar *
-tracker_indexer_get_name (Indexer *indexer)
-{
- g_return_val_if_fail (indexer != NULL, NULL);
-
- return dpname (indexer->word_index);
-}
-
-
-guint32
-tracker_indexer_size (Indexer *indexer)
-{
- return dpfsiz (indexer->word_index);
-}
-
-
-void
-tracker_indexer_sync (Indexer *indexer)
-{
- g_mutex_lock (indexer->word_mutex);
- dpsync (indexer->word_index);
- g_mutex_unlock (indexer->word_mutex);
-}
-
-
-gboolean
-tracker_indexer_optimize (Indexer *indexer)
-{
-
- int num, b_count;
-
- if (tracker->shutdown) {
- return FALSE;
- }
-
- /* set bucket count to bucket_ratio times no. of recs divided by no. of divisions */
- num = CLAMP (get_preferred_bucket_count (indexer),
- tracker_config_get_min_bucket_count (tracker->config),
- tracker_config_get_max_bucket_count (tracker->config));
-
- b_count = num / tracker_config_get_divisions (tracker->config);
- tracker_log ("No. of buckets per division is %d", b_count);
-
- tracker_log ("Please wait while optimization of indexes takes place...");
- tracker_log ("Index has file size %10.0f and bucket count of %d of which %d are used...", tracker_indexer_size (indexer), dpbnum (indexer->word_index), dpbusenum (indexer->word_index));
-
- g_mutex_lock (indexer->word_mutex);
-
- if (!dpoptimize (indexer->word_index, b_count)) {
-
- g_mutex_unlock (indexer->word_mutex);
- tracker_log ("Optimization has failed due to %s", dperrmsg (dpecode));
- return FALSE;
- }
-
- g_mutex_unlock (indexer->word_mutex);
-
- tracker_log ("Index has been successfully optimized to file size %10.0f and with bucket count of %d of which %d are used...", tracker_indexer_size (indexer), dpbnum (indexer->word_index), dpbusenum (indexer->word_index));
-
-
- return TRUE;
-}
-
-static inline gboolean
-has_word (Indexer *index, const char *word)
-{
- char buffer [32];
-
- int count = dpgetwb (index->word_index, word, -1, 0, 32, buffer);
-
- return (count > 7);
-
-}
-
-
-
-void
-tracker_indexer_apply_changes (Indexer *dest, Indexer *src, gboolean update)
-{
- char *str;
- char buffer[MAX_HIT_BUFFER];
- int bytes;
- int sz = sizeof (WordDetails);
- int i = 0, interval;
- int buff_size = MAX_HITS_FOR_WORD * sz;
-
- tracker_log ("applying incremental changes to indexes");
-
- guint32 size = tracker_indexer_size (dest);
-
- if (size < (10 * 1024 * 1024)) {
- interval = 20000;
- } else if (size < (20 * 1024 * 1024)) {
- interval = 10000;
- } else if (size < (30 * 1024 * 1024)) {
- interval = 5000;
- } else if (size < (100 * 1024 * 1024)) {
- interval = 3000;
- } else {
- interval = 2000;
- }
-
-#ifdef HAVE_HAL
- /* halve the interval value as notebook hard drives are smaller */
- if (tracker_hal_get_battery_exists (tracker->hal)) {
- interval /= 2;
- }
-#endif
-
- dpiterinit (src->word_index);
-
- tracker->in_merge = TRUE;
- tracker->merge_count = 1;
- tracker->merge_processed = 0;
- tracker_dbus_send_index_progress_signal ("Merging", "");
-
-
- while ((str = dpiternext (src->word_index, NULL))) {
-
- i++;
-
- if (i > 1 && (i % 200 == 0)) {
- if (!tracker_cache_process_events (NULL, FALSE)) {
- return;
- }
- }
-
- if (i > 1 && (i % interval == 0)) {
- if (!tracker_config_get_fast_merges (tracker->config)) {
- dpsync (dest->word_index);
- }
- }
-
- bytes = dpgetwb (src->word_index, str, -1, 0, buff_size, buffer);
-
- if (bytes < 1) continue;
-
- if (bytes % sz != 0) {
- tracker_error ("possible corruption found during application of changes to index with word %s (ignoring update for this word)", str);
- continue;
- }
-
- if (update) {
- tracker_indexer_update_word_chunk (dest, str, (WordDetails *) buffer, bytes / sz);
- } else {
- tracker_indexer_append_word_chunk (dest, str, (WordDetails *) buffer, bytes / sz);
- }
-
- dpout (src->word_index, str, -1);
-
- g_free (str);
- }
-
- dpsync (dest->word_index);
-
- /* delete src and recreate if file update index */
-
- tracker_indexer_free (src, TRUE);
-
- if (update) {
- tracker->file_update_index = tracker_indexer_open ("file-update-index.db", FALSE);
- }
-
- tracker->in_merge = FALSE;
- tracker->merge_count = 1;
- tracker->merge_processed = 1;
- tracker_dbus_send_index_progress_signal ("Merging", "");
-
-}
-
-gboolean
-tracker_indexer_has_tmp_merge_files (IndexType type)
-{
- GSList *files = NULL;
- gboolean result = FALSE;
-
-
- if (type == INDEX_TYPE_FILES) {
- files = tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "file-index.tmp.");
- } else {
- files = tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "email-index.tmp.");
- }
-
- result = (files != NULL);
-
- if (result) {
- g_slist_foreach (files, (GFunc) g_free, NULL);
- g_slist_free (files);
- }
-
- return result;
-
-}
-
-
-
-gboolean
-tracker_indexer_has_merge_files (IndexType type)
-{
- GSList *files = NULL;
- gboolean result = FALSE;
- char *final;
-
- if (type == INDEX_TYPE_FILES) {
- files = tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "file-index.tmp.");
- final = g_build_filename(tracker->data_dir, "file-index-final", NULL);
- } else {
- files = tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, "email-index.tmp.");
- final = g_build_filename (tracker->data_dir, "email-index-final", NULL);
- }
-
- result = (files != NULL);
-
- if (!result) {
- result = g_file_test (final, G_FILE_TEST_EXISTS);
- } else {
- g_slist_foreach (files, (GFunc) g_free, NULL);
- g_slist_free (files);
- }
-
- g_free (final);
-
- return result;
-
-}
-
-static void
-move_index (Indexer *src_index, Indexer *dest_index, const char *fname)
-{
-
- if (!src_index || !dest_index) {
- tracker_error ("cannot move indexes");
- return;
- }
-
- /* remove existing main index */
- g_mutex_lock (dest_index->word_mutex);
-
- dpclose (dest_index->word_index);
-
- dpremove (fname);
-
- char *final_name = dpname (src_index->word_index);
-
- tracker_indexer_close (src_index);
-
- /* rename and reopen final index as main index */
-
- tracker_log ("renaming %s to %s", final_name, fname);
-
- rename (final_name, fname);
-
- dest_index->word_index = open_index (fname);
-
- if (!dest_index->word_index) {
- tracker_error ("index creation failure for %s from %s", fname, final_name);
- }
-
- g_free (final_name);
-
- g_mutex_unlock (dest_index->word_mutex);
-
-}
-
-
-void
-tracker_indexer_merge_indexes (IndexType type)
-{
- GSList *lst;
- Indexer *final_index;
- GSList *file_list = NULL, *index_list = NULL;
- const char *prefix;
- gint i = 0, index_count, interval = 5000;
- gboolean final_exists;
-
- if (tracker->shutdown) return;
-
- if (type == INDEX_TYPE_FILES) {
-
- g_return_if_fail (tracker->file_index);
-
- prefix = "file-index.tmp.";
-
- index_list = g_slist_prepend (index_list, tracker->file_index);
-
- char *tmp = g_build_filename (tracker->data_dir, "file-index-final", NULL);
-
- final_exists = g_file_test (tmp, G_FILE_TEST_EXISTS);
-
- g_free (tmp);
-
- } else {
- prefix = "email-index.tmp.";
-
- g_return_if_fail (tracker->email_index);
-
- index_list = g_slist_prepend (index_list, tracker->email_index);
-
- char *tmp = g_build_filename (tracker->data_dir, "email-index-final", NULL);
-
- final_exists = g_file_test (tmp, G_FILE_TEST_EXISTS);
-
- g_free (tmp);
- }
-
- file_list = tracker_process_files_get_files_with_prefix (tracker, tracker->data_dir, prefix);
-
- if (!file_list || !file_list->data) {
-
- g_slist_free (index_list);
-
- return;
-
- } else {
- GSList *file;
-
- for (file = file_list; file; file = file->next) {
-
- if (file->data) {
- char *name = g_path_get_basename (file->data);
- if (name) {
-
- if (g_file_test (file->data, G_FILE_TEST_EXISTS)) {
-
- Indexer *tmp_index = tracker_indexer_open (name, FALSE);
- if (tmp_index) {
- index_list = g_slist_prepend (index_list, tmp_index);
- }
- }
-
- g_free (name);
- }
- }
- }
-
- g_slist_foreach (file_list, (GFunc) g_free, NULL);
- g_slist_free (file_list);
- }
-
- index_count = g_slist_length (index_list);
-
- if (index_count < 2) {
-
- g_slist_free (index_list);
-
- return;
- }
-
- tracker_log ("starting merge of %d indexes", index_count);
- tracker->in_merge = TRUE;
- tracker->merge_count = index_count;
- tracker->merge_processed = 0;
- tracker_dbus_send_index_progress_signal ("Merging", "");
-
-
- if (index_count == 2 && !final_exists) {
-
- Indexer *index1 = index_list->data ;
- Indexer *index2 = index_list->next->data ;
-
- if (tracker_indexer_size (index1) * 3 < tracker_indexer_size (index2)) {
-
- tracker_indexer_apply_changes (index2, index1, FALSE);
-
- g_slist_free (index_list);
-
- goto end_of_merging;
- }
- }
-
- tracker_dbus_send_index_status_change_signal ();
-
- if (type == INDEX_TYPE_FILES) {
- final_index = tracker_indexer_open ("file-index-final", TRUE);
- } else {
- final_index = tracker_indexer_open ("email-index-final", TRUE);
- }
-
- if (!final_index) {
- g_slist_free (index_list);
- tracker_error ("could not open final index - abandoning index merge");
- goto end_of_merging;
- }
-
- for (lst = index_list; lst && lst->data; lst = lst->next) {
- gchar *str;
- Indexer *index = lst->data;
-
- dpiterinit (index->word_index);
-
- while ((str = dpiternext (index->word_index, NULL))) {
-
- gchar buffer[MAX_HIT_BUFFER];
- gint offset;
- gint sz = sizeof (WordDetails);
- gint buff_size = MAX_HITS_FOR_WORD * sz;
-
- if (!has_word (final_index, str)) {
-
- i++;
-
- if (i > 101 && (i % 100 == 0)) {
- if (!tracker_cache_process_events (NULL, FALSE)) {
- tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE);
- return;
- }
- }
-
- if (i > interval && (i % interval == 0)) {
-
- if (!tracker_config_get_fast_merges (tracker->config)) {
-
- dpsync (final_index->word_index);
-
- guint32 size = tracker_indexer_size (final_index);
-
- if (size < (10 * 1024 * 1024)) {
- interval = 10000;
- } else if (size < (20 * 1024 * 1024)) {
- interval = 6000;
- } else if (size < (50 * 1024 * 1024)) {
- interval = 6000;
- } else if (size < (100 * 1024 * 1024)) {
- interval = 4000;
- } else {
- interval = 3000;
- }
-
-#ifdef HAVE_HAL
- /* halve the interval value as notebook hard drives are smaller */
- if (tracker_hal_get_battery_exists (tracker->hal)) {
- interval /= 2;
- }
-#endif
- }
- }
-
- offset = dpgetwb (index->word_index, str, -1, 0, buff_size, buffer);
-
- if (offset < 1) {
- continue;
- }
-
- if (offset % sz != 0) {
- tracker_error ("possible corruption found during merge of word %s - purging word from index (it will not be searchable)", str);
- continue;
- }
-
- if (offset > 7 && offset < buff_size) {
-
- GSList *list;
-
- for (list = lst->next; list; list = list->next) {
- gchar tmp_buffer[MAX_HIT_BUFFER];
- Indexer *tmp_index = list->data;
-
- if (!tmp_index) {
- continue;
- }
-
- gint tmp_offset = dpgetwb (tmp_index->word_index, str, -1, 0, (buff_size - offset), tmp_buffer);
-
- if (tmp_offset > 0 && (tmp_offset % sz != 0)) {
- tracker_error ("possible corruption found during merge of word %s - purging word from index", str);
- continue;
- }
-
- if (tmp_offset > 7 && (tmp_offset % sz == 0)) {
- memcpy (buffer + offset, tmp_buffer, tmp_offset);
- offset += tmp_offset;
- }
- }
-
- dpput (final_index->word_index, str, -1, buffer, offset, DP_DOVER);
- }
- }
-
- g_free (str);
- }
-
-
-
-
- /* dont free last entry as that is the main index */
- if (lst->next) {
-
- if (index != tracker->file_index && index != tracker->email_index) {
- tracker_indexer_free (index, TRUE);
- tracker->merge_processed++;
- tracker_dbus_send_index_progress_signal ("Merging", "");
- }
-
-
- } else {
- if (type == INDEX_TYPE_FILES) {
-
- char *fname = get_index_file ("file-index.db");
- move_index (final_index, tracker->file_index, fname);
- g_free (fname);
-
- } else {
- char *fname = get_index_file ("email-index.db");
- move_index (final_index, tracker->email_index, fname);
- g_free (fname);
- }
- }
- }
-
- g_slist_free (index_list);
-
-
-
- end_of_merging:
- tracker->in_merge = FALSE;
- tracker_dbus_send_index_status_change_signal ();
-
-}
-
-
-
-/* indexing api */
-
-/* use for fast insertion of a word for multiple documents at a time */
-
-gboolean
-tracker_indexer_append_word_chunk (Indexer *indexer, const gchar *word, WordDetails *details, gint word_detail_count)
-{
- if (tracker->shutdown) {
- return FALSE;
- }
-
- g_return_val_if_fail (indexer, FALSE);
- g_return_val_if_fail (indexer->word_index, FALSE);
- g_return_val_if_fail (word, FALSE);
- g_return_val_if_fail (details, FALSE);
- g_return_val_if_fail (word_detail_count > 0, FALSE);
-
- g_mutex_lock (indexer->word_mutex);
- if (!dpput (indexer->word_index, word, -1, (char *) details, (word_detail_count * sizeof (WordDetails)), DP_DCAT)) {
- g_mutex_unlock (indexer->word_mutex);
- return FALSE;
- }
- g_mutex_unlock (indexer->word_mutex);
-
- return TRUE;
-}
-
-
-/* append individual word for a document */
-
-gboolean
-tracker_indexer_append_word (Indexer *indexer, const gchar *word, guint32 id, gint service, gint score)
-{
- if (score < 1) {
- return FALSE;
- }
-
- g_return_val_if_fail (indexer, FALSE);
- g_return_val_if_fail (indexer->word_index, FALSE);
- g_return_val_if_fail (word, FALSE);
-
- WordDetails pair;
-
- pair.id = id;
- pair.amalgamated = tracker_indexer_calc_amalgamated (service, score);
-
- return tracker_indexer_append_word_chunk (indexer, word, &pair, 1);
-}
-
-
-/* append lists of words for a document - returns no. of hits added */
-gint
-tracker_indexer_append_word_list (Indexer *indexer, const gchar *word, GSList *list)
-{
- WordDetails word_details[MAX_HITS_FOR_WORD], *wd;
- gint i;
- GSList *lst;
-
- g_return_val_if_fail (indexer, 0);
- g_return_val_if_fail (indexer->word_index, 0);
- g_return_val_if_fail (word, 0);
-
- i = 0;
-
- if (list) {
- for (lst = list; (lst && i < MAX_HITS_FOR_WORD); lst = lst->next) {
-
- if (lst->data) {
- wd = lst->data;
- word_details[i].id = wd->id;
- word_details[i].amalgamated = wd->amalgamated;
- i++;
- }
- }
- }
-
- if (i > 0) {
- tracker_indexer_append_word_chunk (indexer, word, word_details, i);
- }
-
- return i;
-}
-
-
-
-/* use for deletes or updates of multiple entities when they are not new */
-gboolean
-tracker_indexer_update_word_chunk (Indexer *indexer, const gchar *word, WordDetails *detail_chunk, gint word_detail_count)
-{
- int tsiz, j, i, score;
- char *tmp;
- WordDetails *word_details;
- gboolean write_back = FALSE;
- GSList *list = NULL;
-
- g_return_val_if_fail (indexer, FALSE);
- g_return_val_if_fail (indexer->word_index, FALSE);
- g_return_val_if_fail (word, FALSE);
- g_return_val_if_fail (detail_chunk, FALSE);
- g_return_val_if_fail (word_detail_count > 0, FALSE);
-
- /* check if existing record is there */
- gint hit_count = 0;
-
- g_mutex_lock (indexer->word_mutex);
-
- if ((tmp = dpget (indexer->word_index, word, -1, 0, MAX_HIT_BUFFER, &tsiz)) != NULL) {
-
-
- WordDetails *details = (WordDetails *) tmp;
- hit_count = tsiz / sizeof (WordDetails);
-
- details = (WordDetails *) tmp;
-
- for (j = 0; j < word_detail_count; j++) {
-
- word_details = &detail_chunk[j];
-
- gboolean edited = FALSE;
-
- for (i = 0; i < hit_count; i++) {
-
- if (details[i].id == word_details->id) {
-
- write_back = TRUE;
-
- /* NB the paramter score can be negative */
- score = get_score (&details[i]) + get_score (word_details);
- //g_print ("current score for %s is %d and new is %d and final is %d\n", word, get_score (&details[i]), get_score (word_details), score);
-
-
- /* check for deletion */
- if (score < 1) {
-
- //g_print ("deleting word hit %s\n", word);
-
- gint k;
-
- /* shift all subsequent records in array down one place */
- for (k = i + 1; k < hit_count; k++) {
- details[k - 1] = details[k];
- }
-
- hit_count--;
-
- } else {
- details[i].amalgamated = tracker_indexer_calc_amalgamated (get_service_type (&details[i]), score);
- }
-
- edited = TRUE;
- break;
- }
- }
-
- /* add hits that could not be updated directly here so they can be appended later */
- if (!edited) {
- list = g_slist_prepend (list, &detail_chunk[j]);
- tracker_debug ("could not update word hit %s - appending", word);
- }
- }
-
- /* write back if we have modded anything */
- if (write_back) {
- dpput (indexer->word_index, word, -1, (char *) details, (hit_count * sizeof (WordDetails)), DP_DOVER);
- }
-
- g_mutex_unlock (indexer->word_mutex);
-
- if (list) {
- tracker_indexer_append_word_list (indexer, word, list);
- g_slist_free (list);
- }
-
- return TRUE;
- }
-
- g_mutex_unlock (indexer->word_mutex);
-
- /* none of the updates can be applied if word does not exist so return them all to be appended later */
- return tracker_indexer_append_word_chunk (indexer, word, detail_chunk, word_detail_count);
-
-}
-
-
-/* use for deletes or updates of multiple entities when they are not new */
-gboolean
-tracker_indexer_update_word_list (Indexer *indexer, const gchar *word, GSList *update_list)
-{
- WordDetails word_details[MAX_HITS_FOR_WORD], *wd;
- gint i;
- GSList *lst;
-
- g_return_val_if_fail (indexer, 0);
- g_return_val_if_fail (indexer->word_index, 0);
- g_return_val_if_fail (word, 0);
-
- i = 0;
-
- if (update_list) {
- for (lst = update_list; (lst && i < MAX_HITS_FOR_WORD); lst = lst->next) {
-
- if (lst->data) {
- wd = lst->data;
- word_details[i].id = wd->id;
- word_details[i].amalgamated = wd->amalgamated;
- i++;
- }
- }
- }
-
- if (i > 0) {
- tracker_indexer_update_word_chunk (indexer, word, word_details, i);
- }
-
- return i;
-}
-
-WordDetails *
-tracker_indexer_get_word_hits (Indexer *indexer,
- const gchar *word,
- guint *count)
-{
- WordDetails *details;
- gint tsiz;
- gchar *tmp;
-
- g_mutex_lock (indexer->word_mutex);
-
- details = NULL;
- *count = 0;
-
- if ((tmp = dpget (indexer->word_index, word, -1, 0, MAX_HIT_BUFFER, &tsiz)) != NULL) {
- if (tsiz >= (int) sizeof (WordDetails)) {
- details = (WordDetails *) tmp;
- *count = tsiz / sizeof (WordDetails);
- }
- }
-
- g_mutex_unlock (indexer->word_mutex);
-
- return details;
-}
-
-/* use to delete dud hits for a word - dud_list is a list of TrackerSearchHit structs */
-gboolean
-tracker_remove_dud_hits (Indexer *indexer, const gchar *word, GSList *dud_list)
-{
- gint tsiz;
- char *tmp;
-
- g_return_val_if_fail (indexer, FALSE);
- g_return_val_if_fail (indexer->word_index, FALSE);
- g_return_val_if_fail (word, FALSE);
- g_return_val_if_fail (dud_list, FALSE);
-
- g_mutex_lock (indexer->word_mutex);
-
- /* check if existing record is there */
- if ((tmp = dpget (indexer->word_index, word, -1, 0, MAX_HIT_BUFFER, &tsiz)) != NULL) {
-
- if (tsiz >= (int) sizeof (WordDetails)) {
-
- WordDetails *details;
- int wi, i, pnum;
-
- details = (WordDetails *) tmp;
- pnum = tsiz / sizeof (WordDetails);
- wi = 0;
-
- for (i = 0; i < pnum; i++) {
-
- GSList *lst;
-
- for (lst = dud_list; lst; lst = lst->next) {
-
- TrackerSearchHit *hit = lst->data;
-
- if (hit) {
- if (details[i].id == hit->service_id) {
- int k;
-
- /* shift all subsequent records in array down one place */
- for (k = i + 1; k < pnum; k++) {
- details[k - 1] = details[k];
- }
-
- /* make size of array one size smaller */
- tsiz -= sizeof (WordDetails);
- pnum--;
-
- break;
- }
- }
- }
- }
-
- dpput (indexer->word_index, word, -1, (char *) details, tsiz, DP_DOVER);
-
- g_mutex_unlock (indexer->word_mutex);
-
- g_free (tmp);
-
- return TRUE;
- }
-
- g_free (tmp);
- }
-
- g_mutex_unlock (indexer->word_mutex);
-
- return FALSE;
-}
-
-static inline gint
-count_hit_size_for_word (Indexer *indexer, const gchar *word)
-{
- int tsiz;
-
- g_mutex_lock (indexer->word_mutex);
- tsiz = dpvsiz (indexer->word_index, word, -1);
- g_mutex_unlock (indexer->word_mutex);
-
- return tsiz;
-}
-
-guint8
-tracker_word_details_get_service_type (WordDetails *details)
-{
- return (details->amalgamated >> 24) & 0xFF;
-}
-
-gint16
-tracker_word_details_get_score (WordDetails *details)
-{
- unsigned char a[2];
-
- a[0] = (details->amalgamated >> 16) & 0xFF;
- a[1] = (details->amalgamated >> 8) & 0xFF;
-
- return (gint16) (a[0] << 8) | (a[1]);
-}
-
-/* int levenshtein ()
- * Original license: GNU Lesser Public License
- * from the Dixit project, (http://dixit.sourceforge.net/)
- * Author: Octavian Procopiuc <oprocopiuc@gmail.com>
- * Created: July 25, 2004
- * Copied into tracker, by Edward Duffy
- */
-
-static int
-levenshtein(const char *source, char *target, int maxdist)
-{
- char n, m;
- int l;
- l = strlen (source);
- if (l > 50)
- return -1;
- n = l;
-
- l = strlen (target);
- if (l > 50)
- return -1;
- m = l;
-
- if (maxdist == 0)
- maxdist = MAX(m, n);
- if (n == 0)
- return MIN(m, maxdist);
- if (m == 0)
- return MIN(n, maxdist);
-
- // Store the min. value on each column, so that, if it reaches
- // maxdist, we break early.
- char mincolval;
-
- char matrix[51][51];
-
- char j;
- char i;
- char cell;
-
- for (j = 0; j <= m; j++)
- matrix[0][(int)j] = j;
-
- for (i = 1; i <= n; i++) {
-
- mincolval = MAX(m, i);
- matrix[(int)i][0] = i;
-
- char s_i = source[i-1];
-
- for (j = 1; j <= m; j++) {
-
- char t_j = target[j-1];
-
- char cost = (s_i == t_j ? 0 : 1);
-
- char above = matrix[i-1][(int)j];
- char left = matrix[(int)i][j-1];
- char diag = matrix[i-1][j-1];
- cell = MIN(above + 1, MIN(left + 1, diag + cost));
-
- // Cover transposition, in addition to deletion,
- // insertion and substitution. This step is taken from:
- // Berghel, Hal ; Roach, David : "An Extension of Ukkonen's
- // Enhanced Dynamic Programming ASM Algorithm"
- // (http://www.acm.org/~hlb/publications/asm/asm.html)
-
- if (i > 2 && j > 2) {
- char trans = matrix[i-2][j-2] + 1;
- if (source[i-2] != t_j)
- trans++;
- if (s_i != target[j-2])
- trans++;
- if (cell > trans)
- cell = trans;
- }
-
- mincolval = MIN(mincolval, cell);
- matrix[(int)i][(int)j] = cell;
- }
-
- if (mincolval >= maxdist)
- break;
-
- }
-
- if (i == n + 1)
- return (int) matrix[(int)n][(int)m];
- else
- return maxdist;
-}
-
-static int
-count_hits_for_word (Indexer *indexer, const gchar *str) {
-
- gint tsiz, hits = 0;
-
- tsiz = count_hit_size_for_word (indexer, str);
-
- if (tsiz == -1 || tsiz % sizeof (WordDetails) != 0) {
- return -1;
- }
-
- hits = tsiz / sizeof (WordDetails);
-
- return hits;
-}
-
-char *
-tracker_indexer_get_suggestion (Indexer *indexer, const gchar *term, gint maxdist)
-{
-
- gchar *str;
- gint dist;
- gchar *winner_str;
- gint winner_dist;
- gint hits;
- GTimeVal start, current;
-
- winner_str = g_strdup (term);
- winner_dist = G_MAXINT; /* Initialize to the worst case */
-
- dpiterinit (indexer->word_index);
-
- g_get_current_time (&start);
-
- str = dpiternext (indexer->word_index, NULL);
-
- while (str != NULL) {
-
- dist = levenshtein (term, str, 0);
-
- if (dist != -1 && dist < maxdist && dist < winner_dist) {
-
- hits = count_hits_for_word (indexer, str);
-
- if (hits < 0) {
-
- g_free (winner_str);
- g_free (str);
- return NULL;
-
- } else if (hits > 0) {
-
- g_free (winner_str);
- winner_str = g_strdup (str);
- winner_dist = dist;
-
- } else {
- tracker_log ("No hits for %s!", str);
- }
- }
-
- g_free (str);
-
- g_get_current_time (&current);
-
- if (current.tv_sec - start.tv_sec >= 2) { /* 2 second time out */
- tracker_log ("Timeout in tracker_dbus_method_search_suggest");
- break;
- }
-
- str = dpiternext (indexer->word_index, NULL);
- }
-
- return winner_str;
-}
diff --git a/src/trackerd/tracker-indexer.h b/src/trackerd/tracker-indexer.h
deleted file mode 100644
index a8998098f..000000000
--- a/src/trackerd/tracker-indexer.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_INDEXER_H
-#define _TRACKER_INDEXER_H
-
-
-#include <stdlib.h>
-#include <glib.h>
-#include "tracker-utils.h"
-#include "tracker-db-interface.h"
-
-typedef struct { /* type of structure for an element of search result */
- guint32 id; /* Service ID number of the document */
- int amalgamated; /* amalgamation of service_type and score of the word in the document's metadata */
-} WordDetails;
-
-typedef enum {
- WordNormal,
- WordWildCard,
- WordExactPhrase
-} WordType;
-
-
-typedef struct {
- gchar *word;
- gint hit_count;
- gfloat idf;
- WordType word_type;
-} SearchWord;
-
-
-typedef struct Indexer_ Indexer;
-
-typedef enum
-{
- INDEX_TYPE_FILES,
- INDEX_TYPE_EMAILS,
- INDEX_TYPE_FILE_UPDATE
-} IndexType;
-
-
-guint32 tracker_indexer_calc_amalgamated (gint service, gint score);
-
-Indexer * tracker_indexer_open (const gchar *name, gboolean main_index);
-void tracker_indexer_close (Indexer *indexer);
-gboolean tracker_indexer_repair (const char *name);
-void tracker_indexer_free (Indexer *indexer, gboolean remove_file);
-gboolean tracker_indexer_has_merge_index (Indexer *indexer, gboolean update);
-
-const gchar * tracker_indexer_get_name (Indexer *indexer);
-guint32 tracker_indexer_size (Indexer *indexer);
-gboolean tracker_indexer_optimize (Indexer *indexer);
-void tracker_indexer_sync (Indexer *indexer);
-
-void tracker_indexer_apply_changes (Indexer *dest, Indexer *src, gboolean update);
-void tracker_indexer_merge_indexes (IndexType type);
-gboolean tracker_indexer_has_merge_files (IndexType type);
-gboolean tracker_indexer_has_tmp_merge_files (IndexType type);
-
-/* Indexing api */
-gboolean tracker_indexer_append_word (Indexer *indexer, const gchar *word, guint32 id, gint service, gint score);
-gboolean tracker_indexer_append_word_chunk (Indexer *indexer, const gchar *word, WordDetails *details, gint word_detail_count);
-gint tracker_indexer_append_word_list (Indexer *indexer, const gchar *word, GSList *list);
-
-gboolean tracker_indexer_update_word (Indexer *indexer, const gchar *word, guint32 id, gint service, gint score, gboolean remove_word);
-gboolean tracker_indexer_update_word_chunk (Indexer *indexer, const gchar *word, WordDetails *details, gint word_detail_count);
-gboolean tracker_indexer_update_word_list (Indexer *indexer, const gchar *word, GSList *update_list);
-
-WordDetails * tracker_indexer_get_word_hits (Indexer *indexer, const gchar *word, guint *count);
-
-gboolean tracker_remove_dud_hits (Indexer *indexer, const gchar *word, GSList *dud_list);
-
-char * tracker_indexer_get_suggestion (Indexer *indexer, const gchar *term, gint maxdist);
-
-guint8 tracker_word_details_get_service_type (WordDetails *details);
-gint16 tracker_word_details_get_score (WordDetails *details);
-
-#endif
diff --git a/src/trackerd/tracker-inotify.c b/src/trackerd/tracker-inotify.c
deleted file mode 100644
index 28f3c3d1b..000000000
--- a/src/trackerd/tracker-inotify.c
+++ /dev/null
@@ -1,658 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifdef HAVE_INOTIFY_LINUX
-#include <linux/inotify.h>
-#include "linux-inotify-syscalls.h"
-#else
-#include <sys/inotify.h>
-#endif
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-watch.h"
-#include "tracker-process-files.h"
-
-#define INOTIFY_WATCH_LIMIT "/proc/sys/fs/inotify/max_user_watches"
-
-/* project wide global vars */
-
-extern Tracker *tracker;
-extern DBConnection *main_thread_db_con;
-
-/* list to temporarily store moved_from events so they can be matched against moved_to events */
-static GSList *move_list;
-static GQueue *inotify_queue;
-static int inotify_monitor_fd = -1;
-static int inotify_count = 0;
-
-static GIOChannel *gio;
-
-
-static gboolean process_moved_events ();
-
-
-gboolean
-tracker_is_directory_watched (const char * dir, DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- gint id;
-
- g_return_val_if_fail (dir != NULL && dir[0] == G_DIR_SEPARATOR, FALSE);
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- result_set = tracker_exec_proc (db_con->cache, "GetWatchID", dir, NULL);
-
- if (!result_set) {
- return FALSE;
- }
-
- tracker_db_result_set_get (result_set, 0, &id, -1);
- g_object_unref (result_set);
-
- return (id >= 0);
-}
-
-
-static gboolean
-is_delete_event (TrackerChangeAction event_type)
-{
- return (event_type == TRACKER_ACTION_DELETE ||
- event_type == TRACKER_ACTION_DELETE_SELF ||
- event_type == TRACKER_ACTION_FILE_DELETED ||
- event_type == TRACKER_ACTION_DIRECTORY_DELETED);
-}
-
-
-
-static void
-process_event (const char *uri, gboolean is_dir, TrackerChangeAction action, guint32 cookie)
-{
- FileInfo *info;
-
- g_return_if_fail (uri && (uri[0] == '/'));
-
- info = tracker_create_file_info (uri, action, 1, WATCH_OTHER);
-
- if (!tracker_process_files_is_file_info_valid (info)) {
- return;
- }
-
- info->is_directory = is_dir;
-
- if (is_delete_event (action)) {
- char *parent;
-
- parent = g_path_get_dirname (info->uri);
-
- if (tracker_file_is_valid (parent)) {
- g_async_queue_push (tracker->file_process_queue, info);
- tracker_notify_file_data_available ();
- } else {
- info = tracker_free_file_info (info);
- }
-
- g_free (parent);
- return;
- }
-
- /* we are not interested in create events for non-folders (we use writable file closed instead) */
- if (action == TRACKER_ACTION_DIRECTORY_CREATED) {
-
- info->action = TRACKER_ACTION_DIRECTORY_CREATED;
- info->is_directory = TRUE;
- tracker_db_insert_pending_file (main_thread_db_con, info->file_id, info->uri, NULL, info->mime, 0, info->action, info->is_directory, TRUE, -1);
- info = tracker_free_file_info (info);
- return;
-
- } else if (action == TRACKER_ACTION_FILE_CREATED) {
- tracker_add_io_grace (info->uri);
- info = tracker_free_file_info (info);
- return;
-
- } else if (action == TRACKER_ACTION_DIRECTORY_MOVED_FROM || action == TRACKER_ACTION_FILE_MOVED_FROM) {
- tracker_add_io_grace (info->uri);
- info->cookie = cookie;
- info->counter = 1;
- move_list = g_slist_prepend (move_list, info);
- g_timeout_add_full (G_PRIORITY_LOW,
- 350,
- (GSourceFunc) process_moved_events,
- NULL, NULL
- );
- return;
-
- } else if (action == TRACKER_ACTION_FILE_MOVED_TO || action == TRACKER_ACTION_DIRECTORY_MOVED_TO) {
- FileInfo *moved_to_info;
- GSList *tmp;
-
- moved_to_info = info;
- tracker_add_io_grace (info->uri);
- for (tmp = move_list; tmp; tmp = tmp->next) {
- FileInfo *moved_from_info;
-
- moved_from_info = (FileInfo *) tmp->data;
-
- if (!moved_from_info) {
- tracker_error ("ERROR: bad FileInfo struct found in move list. Skipping...");
- continue;
- }
-
- if ((cookie > 0) && (moved_from_info->cookie == cookie)) {
-
- tracker_info ("found matching inotify pair from %s to %s", moved_from_info->uri, moved_to_info->uri);
-
- tracker->grace_period = 2;
- tracker->request_waiting = TRUE;
-
- if (!tracker_is_directory (moved_to_info->uri)) {
- tracker_db_insert_pending_file (main_thread_db_con, moved_from_info->file_id, moved_from_info->uri, moved_to_info->uri, moved_from_info->mime, 0, TRACKER_ACTION_FILE_MOVED_FROM, FALSE, TRUE, -1);
-
-// tracker_db_move_file (main_thread_db_con, moved_from_info->uri, moved_to_info->uri);
- } else {
- tracker_db_insert_pending_file (main_thread_db_con, moved_from_info->file_id, moved_from_info->uri, moved_to_info->uri, moved_from_info->mime, 0, TRACKER_ACTION_DIRECTORY_MOVED_FROM, TRUE, TRUE, -1);
-// tracker_db_move_directory (main_thread_db_con, moved_from_info->uri, moved_to_info->uri);
- }
-
- move_list = g_slist_remove (move_list, tmp->data);
-
- return;
- }
- }
-
- /* matching pair not found so treat as a create action */
- tracker_debug ("no matching pair found for inotify move event for %s", info->uri);
- if (tracker_is_directory (info->uri)) {
- info->action = TRACKER_ACTION_DIRECTORY_CREATED;
- } else {
- info->action = TRACKER_ACTION_WRITABLE_FILE_CLOSED;
- }
- tracker_db_insert_pending_file (main_thread_db_con, info->file_id, info->uri, NULL, info->mime, 10, info->action, info->is_directory, TRUE, -1);
- info = tracker_free_file_info (info);
- return;
-
- } else if (action == TRACKER_ACTION_WRITABLE_FILE_CLOSED) {
- tracker_add_io_grace (info->uri);
- tracker_info ("File %s has finished changing", info->uri);
- tracker_db_insert_pending_file (main_thread_db_con, info->file_id, info->uri, NULL, info->mime, 0, info->action, info->is_directory, TRUE, -1);
- info = tracker_free_file_info (info);
- return;
-
- }
-
- tracker_log ("WARNING: not processing event %s for uri %s", tracker_actions[info->action], info->uri);
- tracker_free_file_info (info);
-}
-
-
-static gboolean
-process_moved_events ()
-{
- const GSList *tmp;
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- if (!move_list) {
- return TRUE;
- }
-
- for (tmp = move_list; tmp; tmp = tmp->next) {
- FileInfo *info;
-
- info = (FileInfo *) tmp->data;
-
- /* make it a DELETE if we have not received a corresponding MOVED_TO event after a certain period */
- if ((info->counter < 1) && ((info->action == TRACKER_ACTION_FILE_MOVED_FROM) || (info->action == TRACKER_ACTION_DIRECTORY_MOVED_FROM))) {
-
- /* make sure file no longer exists before issuing a "delete" */
-
- if (!tracker_file_is_valid (info->uri)) {
- if (info->action == TRACKER_ACTION_DIRECTORY_MOVED_FROM) {
- process_event (info->uri, TRUE, TRACKER_ACTION_DIRECTORY_DELETED, 0);
- } else {
- process_event (info->uri, FALSE, TRACKER_ACTION_FILE_DELETED, 0);
- }
- }
-
- move_list = g_slist_remove (move_list, info);
- tracker_free_file_info (info);
- continue;
-
- } else {
- info->counter--;
- }
- }
-
- if (!move_list)
- return FALSE;
-
- return TRUE;
-}
-
-
-static TrackerChangeAction
-get_event (guint32 event_type)
-{
- if (event_type & IN_DELETE) {
- if (event_type & IN_ISDIR) {
- return TRACKER_ACTION_DIRECTORY_DELETED;
- } else {
- return TRACKER_ACTION_FILE_DELETED;
- }
- }
-
- if (event_type & IN_DELETE_SELF) {
- if (event_type & IN_ISDIR) {
- return TRACKER_ACTION_DIRECTORY_DELETED;
- } else {
- return TRACKER_ACTION_FILE_DELETED;
- }
- }
-
-
- if (event_type & IN_MOVED_FROM) {
- if (event_type & IN_ISDIR) {
- return TRACKER_ACTION_DIRECTORY_MOVED_FROM;
- } else {
- return TRACKER_ACTION_FILE_MOVED_FROM;
- }
- }
-
- if (event_type & IN_MOVED_TO) {
- if (event_type & IN_ISDIR) {
- return TRACKER_ACTION_DIRECTORY_MOVED_TO;
- } else {
- return TRACKER_ACTION_FILE_MOVED_TO;
- }
- }
-
-
- if (event_type & IN_CLOSE_WRITE) {
- return TRACKER_ACTION_WRITABLE_FILE_CLOSED;
- }
-
-
- if (event_type & IN_CREATE) {
- if (event_type & IN_ISDIR) {
- return TRACKER_ACTION_DIRECTORY_CREATED;
- } else {
- return TRACKER_ACTION_FILE_CREATED;
- }
- }
-
- return TRACKER_ACTION_IGNORE;
-}
-
-static gboolean
-process_inotify_events (void)
-{
- while (g_queue_get_length (inotify_queue) > 0) {
- TrackerDBResultSet *result_set;
- TrackerChangeAction action_type;
- char *str = NULL, *filename = NULL, *monitor_name = NULL, *str_wd;
- char *file_utf8_uri = NULL, *dir_utf8_uri = NULL;
- guint cookie;
-
- struct inotify_event *event;
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- event = g_queue_pop_head (inotify_queue);
-
- if (!event) {
- continue;
- }
-
- action_type = get_event (event->mask);
-
- if (action_type == TRACKER_ACTION_IGNORE) {
- g_free (event);
- continue;
- }
-
- if (event->len > 1) {
- filename = event->name;
- } else {
- filename = NULL;
- }
-
- cookie = event->cookie;
-
- /* get watch name as monitor */
-
- str_wd = g_strdup_printf ("%d", event->wd);
-
- result_set = tracker_exec_proc (main_thread_db_con->cache, "GetWatchUri", str_wd, NULL);
-
- g_free (str_wd);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &monitor_name, -1);
- g_object_unref (result_set);
-
- if (!monitor_name) {
- g_free (event);
- continue;
- }
- } else {
- g_free (event);
- continue;
- }
-
- if (tracker_is_empty_string (filename)) {
- //tracker_log ("WARNING: inotify event has no filename");
- g_free (event);
- continue;
- }
-
- file_utf8_uri = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
-
- if (tracker_is_empty_string (file_utf8_uri)) {
- tracker_error ("ERROR: file uri could not be converted to utf8 format");
- g_free (event);
- continue;
- }
-
- if (file_utf8_uri[0] == G_DIR_SEPARATOR) {
- str = g_strdup (file_utf8_uri);
- dir_utf8_uri = NULL;
- } else {
-
- dir_utf8_uri = g_filename_to_utf8 (monitor_name, -1, NULL, NULL, NULL);
-
- if (!dir_utf8_uri) {
- tracker_error ("Error: file uri could not be converted to utf8 format");
- g_free (file_utf8_uri);
- g_free (event);
- continue;
- }
-
- str = g_build_filename(dir_utf8_uri, file_utf8_uri, NULL);
- }
-
- if (str && str[0] == '/' &&
- (!tracker_process_files_should_be_ignored (str) ||
- action_type == TRACKER_ACTION_DIRECTORY_MOVED_FROM) &&
- tracker_process_files_should_be_crawled (tracker, str) &&
- tracker_process_files_should_be_watched (tracker->config, str)) {
- process_event (str, tracker_is_directory (str), action_type, cookie);
- } else {
- tracker_debug ("ignoring action %d on file %s", action_type, str);
- }
-
- if (monitor_name) {
- g_free (monitor_name);
- }
-
- if (str) {
- g_free (str);
- }
-
- if (file_utf8_uri) {
- g_free (file_utf8_uri);
- }
-
- if (dir_utf8_uri) {
- g_free (dir_utf8_uri);
- }
- g_free (event);
- }
-
- return FALSE;
-}
-
-
-static gboolean
-inotify_watch_func (GIOChannel *source, GIOCondition condition, gpointer data)
-{
- char buffer[16384];
- size_t buffer_i;
- size_t r;
- int fd;
-
- fd = g_io_channel_unix_get_fd (source);
-
- r = read (fd, buffer, 16384);
-
- if (r <= 0) {
- tracker_error ("ERROR: inotify system failure - unable to watch files");
- return FALSE;
- }
-
- buffer_i = 0;
-
- while (buffer_i < (size_t)r) {
- struct inotify_event *pevent, *event;
- size_t event_size;
-
- /* Parse events and process them ! */
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- pevent = (struct inotify_event *) &buffer[buffer_i];
- event_size = sizeof (struct inotify_event) + pevent->len;
- event = g_memdup (pevent, event_size);
- g_queue_push_tail (inotify_queue, event);
- buffer_i += event_size;
- }
-
- g_idle_add ((GSourceFunc) process_inotify_events, NULL);
-
- return TRUE;
-}
-
-
-gboolean
-tracker_start_watching (void)
-{
- g_return_val_if_fail (inotify_monitor_fd == -1, FALSE);
-
- inotify_monitor_fd = inotify_init ();
-
- g_return_val_if_fail (inotify_monitor_fd >= 0, FALSE);
-
- inotify_queue = g_queue_new ();
-
- if (tracker->watch_limit == 0) {
- tracker->watch_limit = 8191;
- if (g_file_test (INOTIFY_WATCH_LIMIT, G_FILE_TEST_EXISTS)) {
- gchar *limit;
- gsize size;
- if (g_file_get_contents (INOTIFY_WATCH_LIMIT, &limit, &size, NULL)) {
-
- /* leave 500 watches for other users */
- tracker->watch_limit = atoi (limit) - 500;
-
- tracker_log ("Setting inotify watch limit to %d.", tracker->watch_limit);
- g_free (limit);
- }
- }
- }
-
- gio = g_io_channel_unix_new (inotify_monitor_fd);
- g_io_add_watch (gio, G_IO_IN, inotify_watch_func, NULL);
- g_io_channel_set_flags (gio, G_IO_FLAG_NONBLOCK, NULL);
-
- /* periodically process unmatched moved_from events */
-
- return TRUE;
-}
-
-
-int
-tracker_count_watch_dirs (void)
-{
- return inotify_count;
-}
-
-
-gboolean
-tracker_add_watch_dir (const char *dir, DBConnection *db_con)
-{
- char *dir_in_locale;
- static gboolean limit_exceeded_msg = FALSE;
-
- g_return_val_if_fail (dir, FALSE);
- g_return_val_if_fail (dir[0] == '/', FALSE);
-
- if (!tracker->is_running) {
- return FALSE;
- }
-
- if (tracker_is_directory_watched (dir, db_con)) {
- return FALSE;
- }
-
- if (tracker_count_watch_dirs () >= (int) tracker->watch_limit) {
-
- if (!limit_exceeded_msg) {
- tracker_log ("Inotify Watch Limit has been exceeded - for best results you should increase number of inotify watches on your system");
- limit_exceeded_msg = TRUE;
- }
-
- return FALSE;
- }
-
- dir_in_locale = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL);
-
- /* check directory permissions are okay */
- if (g_access (dir_in_locale, F_OK) == 0 && g_access (dir_in_locale, R_OK) == 0) {
- const guint32 mask = (IN_CLOSE_WRITE | IN_MOVE | IN_CREATE | IN_DELETE| IN_DELETE_SELF | IN_MOVE_SELF);
- int wd;
- char *str_wd;
-
- wd = inotify_add_watch (inotify_monitor_fd, dir_in_locale, mask);
-
- g_free (dir_in_locale);
-
- if (wd < 0) {
- tracker_error ("ERROR: Inotify watch on %s has failed", dir);
- return FALSE;
- }
-
- str_wd = g_strdup_printf ("%d", wd);
- tracker_exec_proc (db_con->cache, "InsertWatch", dir, str_wd, NULL);
- g_free (str_wd);
- inotify_count++;
- tracker_log ("Watching directory %s (total watches = %d)", dir, inotify_count);
- return TRUE;
- }
-
- g_free (dir_in_locale);
-
- return FALSE;
-}
-
-
-static gboolean
-delete_watch (const char *dir, DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- int wd;
-
- g_return_val_if_fail (dir != NULL && dir[0] == G_DIR_SEPARATOR, FALSE);
-
- result_set = tracker_exec_proc (db_con->cache, "GetWatchID", dir, NULL);
-
- wd = -1;
-
- if (!result_set) {
- tracker_log ("WARNING: watch id not found for uri %s", dir);
- return FALSE;
- }
-
- tracker_db_result_set_get (result_set, 0, &wd, -1);
- g_object_unref (result_set);
-
- tracker_exec_proc (db_con->cache, "DeleteWatch", dir, NULL);
-
- if (wd > -1) {
- inotify_rm_watch (inotify_monitor_fd, wd);
- inotify_count--;
- }
-
- return TRUE;
-}
-
-
-void
-tracker_remove_watch_dir (const char *dir, gboolean delete_subdirs, DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- gboolean valid = TRUE;
- int wd;
-
- g_return_if_fail (dir != NULL && dir[0] == G_DIR_SEPARATOR);
-
- delete_watch (dir, db_con);
-
- if (!delete_subdirs) {
- return;
- }
-
- result_set = tracker_db_get_sub_watches (db_con, dir);
-
- wd = -1;
-
- if (!result_set) {
- return;
- }
-
- while (valid) {
- tracker_db_result_set_get (result_set, 0, &wd, -1);
- valid = tracker_db_result_set_iter_next (result_set);
-
- if (wd < 0) {
- continue;
- }
-
- inotify_rm_watch (inotify_monitor_fd, wd);
- inotify_count--;
- }
-
- g_object_unref (result_set);
- tracker_db_delete_sub_watches (db_con, dir);
-}
-
-
-void
-tracker_end_watching (void)
-{
- if (gio) {
- g_io_channel_shutdown (gio, TRUE, NULL);
- }
-}
diff --git a/src/trackerd/tracker-ioprio.c b/src/trackerd/tracker-ioprio.c
deleted file mode 100644
index 066a003dd..000000000
--- a/src/trackerd/tracker-ioprio.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * Based mostly on code by
- * Robert Love <rml@novell.com>
- *
- * Copyright (C) 2005 Novell, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "config.h"
-
-#ifdef IOPRIO_SUPPORT
-
-#include <stdio.h>
-#include <errno.h>
-#ifdef HAVE_LINUX_UNISTD_H
-#include <linux/unistd.h>
-#endif
-#include <sys/syscall.h>
-#include <unistd.h>
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include <tracker-utils.h>
-
-#include "tracker-ioprio.h"
-
-#ifndef __NR_ioprio_set
-
-#if defined(__i386__)
-#define __NR_ioprio_set 289
-#define __NR_ioprio_get 290
-#elif defined(__powerpc__) || defined(__powerpc64__)
-#define __NR_ioprio_set 273
-#define __NR_ioprio_get 274
-#elif defined(__x86_64__)
-#define __NR_ioprio_set 251
-#define __NR_ioprio_get 252
-#elif defined(__ia64__)
-#define __NR_ioprio_set 1274
-#define __NR_ioprio_get 1275
-#elif defined(__alpha__)
-#define __NR_ioprio_set 442
-#define __NR_ioprio_get 443
-#elif defined(__s390x__) || defined(__s390__)
-#define __NR_ioprio_set 282
-#define __NR_ioprio_get 283
-#elif defined(__SH4__)
-#define __NR_ioprio_set 288
-#define __NR_ioprio_get 289
-#elif defined(__SH5__)
-#define __NR_ioprio_set 316
-#define __NR_ioprio_get 317
-#elif defined(__sparc__) || defined(__sparc64__)
-#define __NR_ioprio_set 196
-#define __NR_ioprio_get 218
-#elif defined(__arm__)
-#define __NR_ioprio_set 314
-#define __NR_ioprio_get 315
-#else
-#error "Unsupported architecture!"
-#endif
-
-#endif
-
-enum {
- IOPRIO_CLASS_NONE,
- IOPRIO_CLASS_RT,
- IOPRIO_CLASS_BE,
- IOPRIO_CLASS_IDLE,
-};
-
-
-enum {
- IOPRIO_WHO_PROCESS = 1,
- IOPRIO_WHO_PGRP,
- IOPRIO_WHO_USER,
-};
-
-
-#define IOPRIO_CLASS_SHIFT 13
-
-
-static inline int
-ioprio_set (int which, int who, int ioprio_val)
-{
- return syscall (__NR_ioprio_set, which, who, ioprio_val);
-}
-
-
-int set_io_priority_idle (void)
-{
- int ioprio, ioclass;
-
- ioprio = 7; /* priority is ignored with idle class */
- ioclass = IOPRIO_CLASS_IDLE << IOPRIO_CLASS_SHIFT;
-
- return ioprio_set (IOPRIO_WHO_PROCESS, 0, ioprio | ioclass);
-}
-
-int set_io_priority_best_effort (int ioprio_val)
-{
- int ioclass;
-
- ioclass = IOPRIO_CLASS_BE << IOPRIO_CLASS_SHIFT;
-
- return ioprio_set (IOPRIO_WHO_PROCESS, 0, ioprio_val | ioclass);
-}
-
-
-
-void
-ioprio (void)
-{
-
-
- tracker_log ("Setting ioprio...");
-
- if (set_io_priority_idle () == -1) {
- g_print ("Could not set idle IO priority...attempting best effort 7 priority\n");
- if (set_io_priority_best_effort (7) == -1) {
- tracker_error ("ERROR: ioprio_set failed");
- }
- }
-
-}
-
-#endif
diff --git a/src/trackerd/tracker-ioprio.h b/src/trackerd/tracker-ioprio.h
deleted file mode 100644
index a886e2b28..000000000
--- a/src/trackerd/tracker-ioprio.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Tracker
- * io priority
- * Copyright (C) 2006, Anders Aagaard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TRACKER_IOPRIO_H
-#define TRACKER_IOPRIO_H
-
-#ifdef IOPRIO_SUPPORT
- void ioprio (void);
-#endif
-
-#endif
diff --git a/src/trackerd/tracker-metadata.c b/src/trackerd/tracker-metadata.c
deleted file mode 100644
index c1df988c8..000000000
--- a/src/trackerd/tracker-metadata.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#ifdef OS_WIN32
-#include <conio.h>
-#else
-#include <sys/resource.h>
-#endif
-
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-metadata.h"
-#include "tracker-utils.h"
-#include "tracker-service-manager.h"
-
-extern Tracker *tracker;
-
-
-char *
-tracker_metadata_get_text_file (const char *uri, const char *mime)
-{
- char *text_filter_file;
- char *service_type;
- text_filter_file = NULL;
-
- /* no need to filter text based files - index em directly */
- service_type = tracker_service_manager_get_service_type_for_mime (mime);
- if ( !strcmp ("Text", service_type) || !strcmp ("Development", service_type)) {
-
- g_free (service_type);
- return g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- } else {
- char *tmp;
-
- tmp = g_strdup (LIBDIR "/tracker/filters/");
-
-#ifdef OS_WIN32
- text_filter_file = g_strconcat (tmp, mime, "_filter.bat", NULL);
-#else
- text_filter_file = g_strconcat (tmp, mime, "_filter", NULL);
-#endif
-
- g_free (tmp);
- }
-
- if (text_filter_file && g_file_test (text_filter_file, G_FILE_TEST_EXISTS)) {
- char *argv[4];
- char *temp_file_name;
- int fd;
-
- temp_file_name = g_build_filename (tracker->sys_tmp_root_dir, "tmp_text_file_XXXXXX", NULL);
-
- fd = g_mkstemp (temp_file_name);
-
- if (fd == -1) {
- g_warning ("make tmp file %s failed", temp_file_name);
- return NULL;
- } else {
- close (fd);
- }
-
- argv[0] = g_strdup (text_filter_file);
- argv[1] = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
- argv[2] = g_strdup (temp_file_name);
- argv[3] = NULL;
-
- g_free (text_filter_file);
-
- if (!argv[1]) {
- tracker_error ("ERROR: uri could not be converted to locale format");
- g_free (argv[0]);
- g_free (argv[2]);
- return NULL;
- }
-
- tracker_info ("extracting text for %s using filter %s", argv[1], argv[0]);
-
- if (tracker_spawn (argv, 30, NULL, NULL)) {
-
-
- g_free (argv[0]);
- g_free (argv[1]);
- g_free (argv[2]);
-
- if (tracker_file_is_valid (temp_file_name)) {
- return temp_file_name;
- } else {
- g_free (temp_file_name);
- return NULL;
- }
-
- } else {
- g_free (temp_file_name);
-
- g_free (argv[0]);
- g_free (argv[1]);
- g_free (argv[2]);
-
- return NULL;
- }
-
- } else {
- g_free (text_filter_file);
- }
-
- return NULL;
-}
-
-
-char *
-tracker_metadata_get_thumbnail (const char *path, const char *mime, const char *size)
-{
- gchar *thumbnail;
- gchar *argv[5];
- gint exit_status;
-
- argv[0] = g_strdup ("tracker-thumbnailer");
- argv[1] = g_filename_from_utf8 (path, -1, NULL, NULL, NULL);
- argv[2] = g_strdup (mime);
- argv[3] = g_strdup (size);
- argv[4] = NULL;
-
- if (!tracker_spawn (argv, 10, &thumbnail, &exit_status)) {
- thumbnail = NULL;
- } else if (exit_status != EXIT_SUCCESS) {
- thumbnail = NULL;
- } else {
- tracker_log ("got thumbnail %s", thumbnail);
- }
-
- g_free (argv[0]);
- g_free (argv[1]);
- g_free (argv[2]);
- g_free (argv[3]);
-
- return thumbnail;
-}
-
-void
-tracker_metadata_get_embedded (const char *uri, const char *mime, GHashTable *table)
-{
- gboolean success;
- char *argv[4];
- char *output;
- char **values;
- char *service_type;
- gint i;
-
- if (!uri || !mime || !table) {
- return;
- }
-
- service_type = tracker_service_manager_get_service_type_for_mime (mime);
- if (!service_type ) {
- return;
- }
-
- if (!tracker_service_manager_has_metadata (service_type)) {
- g_free (service_type);
- return;
- }
-
- /* we extract metadata out of process using pipes */
- argv[0] = g_strdup ("tracker-extract");
- argv[1] = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
- argv[2] = g_locale_from_utf8 (mime, -1, NULL, NULL, NULL);
- argv[3] = NULL;
-
- if (!argv[1] || !argv[2]) {
- tracker_error ("ERROR: uri or mime could not be converted to locale format");
-
- g_free (argv[0]);
- g_free (argv[1]);
- g_free (argv[2]);
-
- return;
- }
-
- success = tracker_spawn (argv, 10, &output, NULL);
-
- g_free (argv[0]);
- g_free (argv[1]);
- g_free (argv[2]);
-
- if (!success || !output)
- return;
-
- /* parse returned stdout and extract keys and associated metadata values */
-
- values = g_strsplit_set (output, ";", -1);
-
- for (i = 0; values[i]; i++) {
- char *meta_data, *sep;
- const char *name, *value;
- char *utf_value;
-
- meta_data = g_strstrip (values[i]);
- sep = strchr (meta_data, '=');
-
- if (!sep)
- continue;
-
- /* zero out the separator, so we get
- * NULL-terminated name and value
- */
- sep[0] = '\0';
- name = meta_data;
- value = sep + 1;
-
- if (!name || !value)
- continue;
-
- if (g_hash_table_lookup (table, name))
- continue;
-
- if (!g_utf8_validate (value, -1, NULL)) {
- utf_value = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
- } else {
- utf_value = g_strdup (value);
- }
-
- if (!utf_value)
- continue;
-
- tracker_add_metadata_to_table (table, g_strdup (name), utf_value);
- }
-
- g_strfreev (values);
- g_free (output);
-}
diff --git a/src/trackerd/tracker-metadata.h b/src/trackerd/tracker-metadata.h
deleted file mode 100644
index 6d5761f71..000000000
--- a/src/trackerd/tracker-metadata.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_METADATA_H_
-#define _TRACKER_METADATA_H_
-
-#include <glib.h>
-
-#define THUMB_SMALL "128"
-#define THUMB_LARGE "640"
-
-
-void tracker_metadata_get_embedded (const char *uri, const char *mime, GHashTable *table);
-char * tracker_metadata_get_text_file (const char *uri, const char *mime);
-void tracker_metadata_parse_text_contents (const char *file_as_text, unsigned int ID);
-char * tracker_metadata_get_thumbnail (const char *path, const char *mime, const char *size);
-char * tracker_get_service_type_for_mime (const char *mime);
-
-#endif
diff --git a/src/trackerd/tracker-os-dependant-unix.c b/src/trackerd/tracker-os-dependant-unix.c
deleted file mode 100644
index 08ec837a7..000000000
--- a/src/trackerd/tracker-os-dependant-unix.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <errno.h>
-#include <unistd.h>
-#include <sys/resource.h>
-#include <glib.h>
-#include <glib/gspawn.h>
-#include <glib/gstring.h>
-
-#include "tracker-os-dependant.h"
-
-
-#define MAX_MEM 128
-#define MAX_MEM_AMD64 512
-
-
-gboolean
-tracker_check_uri (const gchar *uri)
-{
- return uri && uri[0] == G_DIR_SEPARATOR;
-}
-
-
-gboolean
-tracker_spawn (gchar **argv, gint timeout, gchar **tmp_stdout, gint *exit_status)
-{
- GSpawnFlags flags;
-
- if (!tmp_stdout) {
- flags = G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL;
- } else {
- flags = G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL;
- }
-
- return g_spawn_sync (NULL,
- argv,
- NULL,
- flags,
- tracker_child_cb,
- GINT_TO_POINTER (timeout),
- tmp_stdout,
- NULL,
- exit_status,
- NULL);
-}
-
-
-gchar *
-tracker_create_permission_string (struct stat finfo)
-{
- gchar *str;
- gint n, bit;
-
- /* create permissions string */
- str = g_strdup ("?rwxrwxrwx");
-
- switch (finfo.st_mode & S_IFMT) {
- case S_IFSOCK: str[0] = 's'; break;
- case S_IFIFO: str[0] = 'p'; break;
- case S_IFLNK: str[0] = 'l'; break;
- case S_IFCHR: str[0] = 'c'; break;
- case S_IFBLK: str[0] = 'b'; break;
- case S_IFDIR: str[0] = 'd'; break;
- case S_IFREG: str[0] = '-'; break;
- }
-
- for (bit = 0400, n = 1; bit; bit >>= 1, ++n) {
- if (!(finfo.st_mode & bit)) {
- str[n] = '-';
- }
- }
-
- if (finfo.st_mode & S_ISUID) {
- str[3] = (finfo.st_mode & S_IXUSR) ? 's' : 'S';
- }
-
- if (finfo.st_mode & S_ISGID) {
- str[6] = (finfo.st_mode & S_IXGRP) ? 's' : 'S';
- }
-
- if (finfo.st_mode & S_ISVTX) {
- str[9] = (finfo.st_mode & S_IXOTH) ? 't' : 'T';
- }
-
- return str;
-}
-
-
-static gboolean
-set_memory_rlimits (void)
-{
- struct rlimit rl;
- gboolean fail = FALSE;
-
- /* We want to limit the max virtual memory
- * most extractors use mmap() so only virtual memory can be effectively limited */
-#ifdef __x86_64__
- /* many extractors on AMD64 require 512M of virtual memory, so we limit heap too */
- getrlimit (RLIMIT_AS, &rl);
- rl.rlim_cur = MAX_MEM_AMD64 * 1024 * 1024;
- fail |= setrlimit (RLIMIT_AS, &rl);
-
- getrlimit (RLIMIT_DATA, &rl);
- rl.rlim_cur = MAX_MEM * 1024 * 1024;
- fail |= setrlimit (RLIMIT_DATA, &rl);
-#else
- /* on other architectures, 128M of virtual memory seems to be enough */
- getrlimit (RLIMIT_AS, &rl);
- rl.rlim_cur = MAX_MEM * 1024 * 1024;
- fail |= setrlimit (RLIMIT_AS, &rl);
-#endif
-
- if (fail) {
- g_printerr ("Error trying to set memory limit\n");
- }
-
- return !fail;
-}
-
-
-void
-tracker_child_cb (gpointer user_data)
-{
- struct rlimit cpu_limit;
- gint timeout = GPOINTER_TO_INT (user_data);
-
- /* set cpu limit */
- getrlimit (RLIMIT_CPU, &cpu_limit);
- cpu_limit.rlim_cur = timeout;
- cpu_limit.rlim_max = timeout+1;
-
- if (setrlimit (RLIMIT_CPU, &cpu_limit) != 0) {
- g_printerr ("ERROR: trying to set resource limit for cpu\n");
- }
-
- set_memory_rlimits ();
-
- /* Set child's niceness to 19 */
- errno = 0;
- /* nice() uses attribute "warn_unused_result" and so complains if we do not check its
- returned value. But it seems that since glibc 2.2.4, nice() can return -1 on a
- successful call so we have to check value of errno too. Stupid... */
- if (nice (19) == -1 && errno) {
- g_printerr ("ERROR: trying to set nice value\n");
- }
-
- /* have this as a precaution in cases where cpu limit has not been reached due to spawned app sleeping */
- alarm (timeout+2);
-
-}
diff --git a/src/trackerd/tracker-os-dependant-win.c b/src/trackerd/tracker-os-dependant-win.c
deleted file mode 100644
index 1b9ed1b83..000000000
--- a/src/trackerd/tracker-os-dependant-win.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <glib/gspawn.h>
-#include <glib/gstring.h>
-
-#include "mingw-compat.h"
-#include "tracker-os-dependant.h"
-
-
-gboolean
-tracker_check_uri (const gchar *uri)
-{
- return uri != NULL;
-}
-
-
-gboolean
-tracker_spawn (gchar **argv, gint timeout, gchar **tmp_stdout, gint *exit_status)
-{
- gint length;
- gint i;
-
- for (i = 0; argv[i]; i++)
- ;
- length = i;
-
- gchar **new_argv = g_new0 (gchar *, length + 3);
-
- new_argv[0] = "cmd.exe";
- new_argv[1] = "/c";
-
- for (i = 0; argv[i]; i++) {
- new_argv[i + 2] = argv[i];
- }
-
- GSpawnFlags flags;
- GError *error = NULL;
-
- if (!tmp_stdout) {
- flags = G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL;
- } else {
- flags = G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL;
- }
-
- gboolean status = g_spawn_sync (NULL,
- new_argv,
- NULL,
- flags,
- NULL,
- GINT_TO_POINTER (timeout),
- tmp_stdout,
- NULL,
- exit_status,
- &error);
-
- if (!status) {
- tracker_log (error->message);
- g_error_free (error);
- }
-
- g_strfreev (new_argv);
-
- return status;
-}
-
-
-gchar *
-tracker_create_permission_string (struct stat finfo)
-{
- gchar *str;
- gint n, bit;
-
- /* create permissions string */
- str = g_strdup ("?rwxrwxrwx");
-
- for (bit = 0400, n = 1; bit; bit >>= 1, ++n) {
- if (!(finfo.st_mode & bit)) {
- str[n] = '-';
- }
- }
-
- if (finfo.st_mode & S_ISUID) {
- str[3] = (finfo.st_mode & S_IXUSR) ? 's' : 'S';
- }
-
- if (finfo.st_mode & S_ISGID) {
- str[6] = (finfo.st_mode & S_IXGRP) ? 's' : 'S';
- }
-
- if (finfo.st_mode & S_ISVTX) {
- str[9] = (finfo.st_mode & S_IXOTH) ? 't' : 'T';
- }
-
- return str;
-}
-
-
-void
-tracker_child_cb (gpointer user_data)
-{
-}
diff --git a/src/trackerd/tracker-os-dependant.h b/src/trackerd/tracker-os-dependant.h
deleted file mode 100644
index 3dfb9fe06..000000000
--- a/src/trackerd/tracker-os-dependant.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_OS_DEPENDANT_H_
-#define _TRACKER_OS_DEPENDANT_H_
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-gboolean tracker_check_uri (const gchar *uri);
-gboolean tracker_spawn (gchar **argv, gint timeout, gchar **tmp_stdout, gint *exit_status);
-void tracker_child_cb (gpointer user_data);
-
-gchar * tracker_create_permission_string (struct stat finfo);
-
-#endif
diff --git a/src/trackerd/tracker-parser.c b/src/trackerd/tracker-parser.c
deleted file mode 100644
index 92c397364..000000000
--- a/src/trackerd/tracker-parser.c
+++ /dev/null
@@ -1,632 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#ifdef HAVE_UNAC
-#include <unac.h>
-#endif
-
-#include <pango/pango.h>
-
-#include <libtracker-common/tracker-config.h>
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-language.h>
-
-#include "tracker-parser.h"
-#include "tracker-utils.h"
-
-extern Tracker *tracker;
-
-/* need pango for CJK ranges which are : 0x3400 - 0x4DB5, 0x4E00 - 0x9FA5, 0x20000 - <= 0x2A6D6 */
-
-#define NEED_PANGO(c) (((c) >= 0x3400 && (c) <= 0x4DB5) || ((c) >= 0x4E00 && (c) <= 0x9FA5) || ((c) >= 0x20000 && (c) <= 0x2A6D6))
-#define IS_LATIN(c) (((c) <= 0x02AF) || ((c) >= 0x1E00 && (c) <= 0x1EFF))
-#define IS_ASCII(c) ((c) <= 0x007F)
-#define IS_ASCII_ALPHA_LOWER(c) ( (c) >= 0x0061 && (c) <= 0x007A )
-#define IS_ASCII_ALPHA_HIGHER(c) ( (c) >= 0x0041 && (c) <= 0x005A )
-#define IS_ASCII_NUMERIC(c) ((c) >= 0x0030 && (c) <= 0x0039)
-#define IS_ASCII_IGNORE(c) ((c) <= 0x002C)
-#define IS_HYPHEN(c) ((c) == 0x002D)
-#define IS_UNDERSCORE(c) ((c) == 0x005F)
-
-typedef enum {
- WORD_ASCII_HIGHER,
- WORD_ASCII_LOWER,
- WORD_HYPHEN,
- WORD_UNDERSCORE,
- WORD_NUM,
- WORD_ALPHA_HIGHER,
- WORD_ALPHA_LOWER,
- WORD_ALPHA,
- WORD_ALPHA_NUM,
- WORD_IGNORE
-} WordType;
-
-
-
-static inline WordType
-get_word_type (gunichar c)
-{
- /* fast ascii handling */
- if (IS_ASCII (c)) {
-
-
- if (IS_ASCII_ALPHA_LOWER (c)) {
- return WORD_ASCII_LOWER;
- }
-
- if (IS_ASCII_ALPHA_HIGHER (c)) {
- return WORD_ASCII_HIGHER;
- }
-
- if (IS_ASCII_IGNORE (c)) {
- return WORD_IGNORE;
- }
-
- if (IS_ASCII_NUMERIC (c)) {
- return WORD_NUM;
- }
-
- if (IS_HYPHEN (c)) {
- return WORD_HYPHEN;
- }
-
- if (IS_UNDERSCORE (c)) {
- return WORD_UNDERSCORE;
- }
-
-
- } else {
-
- if (g_unichar_isalpha (c)) {
-
- if (!g_unichar_isupper (c)) {
- return WORD_ALPHA_LOWER;
- } else {
- return WORD_ALPHA_HIGHER;
- }
-
- } else if (g_unichar_isdigit (c)) {
- return WORD_NUM;
- }
- }
-
- return WORD_IGNORE;
-
-}
-
-
-static inline char *
-strip_word (const char *str, int length, guint32 *len)
-{
-
- *len = length;
-
-#ifdef HAVE_UNAC
-
- if (tracker->strip_accents) {
-
- char *s = NULL;
-
- if (unac_string ("UTF-8", str, length, &s, &*len) != 0) {
- tracker_log ("WARNING: unac failed to strip accents");
- }
-
- return s;
-
- }
-
-#endif
- return NULL;
-}
-
-
-static gboolean
-text_needs_pango (const char *text)
-{
- /* grab first 1024 non-whitespace chars and test */
- const char *p;
- gunichar c;
- int i = 0;
-
- for (p = text; (*p && i < 1024); p = g_utf8_next_char (p)) {
-
- c = g_utf8_get_char (p);
-
- if (!g_unichar_isspace (c)) {
- i++;
- }
-
- if (NEED_PANGO(c)) {
- return TRUE;
- }
-
- }
-
- return FALSE;
-
-}
-
-
-
-static const char *
-analyze_text (const char *text, char **index_word, gboolean filter_words, gboolean filter_numbers, gboolean delimit_hyphen)
-{
- const char *p;
- const char *start = NULL;
-
- *index_word = NULL;
-
- if (text) {
- gunichar word[64];
- gboolean do_strip = FALSE, is_valid = TRUE;
- int length = 0;
- glong bytes = 0;
- WordType word_type = WORD_IGNORE;
-
- for (p = text; *p; p = g_utf8_next_char (p)) {
-
- gunichar c = g_utf8_get_char (p);
-
- WordType type = get_word_type (c);
-
- if (type == WORD_IGNORE || (delimit_hyphen && (type == WORD_HYPHEN || type == WORD_UNDERSCORE))) {
-
- if (!start) {
- continue;
- } else {
- break;
- }
- }
-
- if (!is_valid) continue;
-
- if (!start) {
- start = p;
-
- /* valid words must start with an alpha or underscore if we are filtering */
- if (filter_numbers) {
-
- if (type == WORD_NUM) {
- //if (!tracker->index_numbers) {
- is_valid = FALSE;
- continue;
- //}
-
- } else {
-
- if (type == WORD_HYPHEN) {
- is_valid = FALSE;
- continue;
- }
- }
- }
-
- }
-
- if (length >= tracker_config_get_max_word_length (tracker->config)) {
- continue;
- }
-
-
- length++;
-
-
- switch (type) {
-
- case WORD_ASCII_HIGHER:
- c += 32;
-
- case WORD_ASCII_LOWER:
- case WORD_HYPHEN:
- case WORD_UNDERSCORE:
-
- if (word_type == WORD_NUM || word_type == WORD_ALPHA_NUM) {
- word_type = WORD_ALPHA_NUM;
- } else {
- word_type = WORD_ALPHA;
- }
-
- break;
-
- case WORD_NUM:
-
- if (word_type == WORD_ALPHA || word_type == WORD_ALPHA_NUM) {
- word_type = WORD_ALPHA_NUM;
- } else {
- word_type = WORD_NUM;
- }
- break;
-
- case WORD_ALPHA_HIGHER:
- c = g_unichar_tolower (c);
-
- case WORD_ALPHA_LOWER:
-
- if (!do_strip) {
- do_strip = TRUE;
- }
-
- if (word_type == WORD_NUM || word_type == WORD_ALPHA_NUM) {
- word_type = WORD_ALPHA_NUM;
- } else {
- word_type = WORD_ALPHA;
- }
-
- break;
-
- default:
- break;
-
- }
-
- word[length -1] = c;
-
- }
-
-
- if (is_valid) {
-
- if (word_type == WORD_NUM) {
- if (!filter_numbers || length >= tracker->index_number_min_length) {
- *index_word = g_ucs4_to_utf8 (word, length, NULL, NULL, NULL);
- }
-
- } else {
-
- if (length >= tracker_config_get_min_word_length (tracker->config)) {
-
- char *str = NULL, *tmp;
- guint32 len;
-
- char *utf8 = g_ucs4_to_utf8 (word, length, NULL, &bytes, NULL);
-
- if (!utf8) {
- return p;
- }
-
- if (do_strip) {
- str = strip_word (utf8, bytes, &len);
- }
-
- if (!str) {
- tmp = g_utf8_normalize (utf8, bytes, G_NORMALIZE_NFC);
- } else {
- tmp = g_utf8_normalize (str, len, G_NORMALIZE_NFC);
- g_free (str);
- }
-
- g_free (utf8);
-
- /* ignore all stop words */
- if (filter_words && tracker->stop_words) {
- if (g_hash_table_lookup (tracker->stop_words, tmp)) {
- g_free (tmp);
-
- return p;
- }
- }
-
- *index_word = tracker_language_stem_word (tracker->language,
- tmp,
- strlen (tmp));
- if (*index_word) {
- g_free (tmp);
- } else {
- *index_word = tmp;
- }
-
-
- }
- }
-
- }
-
- return p;
-
- }
- return NULL;
-
-}
-
-
-char *
-tracker_parse_text_to_string (const char *txt, gboolean filter_words, gboolean filter_numbers, gboolean delimit)
-{
- const char *p = txt;
-
- char *word = NULL;
- guint32 i = 0;
-
- if (txt) {
-
- if (text_needs_pango (txt)) {
- /* CJK text does not need stemming or other treatment */
-
- PangoLogAttr *attrs;
- guint nb_bytes, str_len, word_start;
- GString *strs;
-
- nb_bytes = strlen (txt);
- str_len = g_utf8_strlen (txt, -1);
-
- strs = g_string_new (" ");
-
- attrs = g_new0 (PangoLogAttr, str_len + 1);
-
- pango_get_log_attrs (txt, nb_bytes, 0, pango_language_from_string ("C"), attrs, str_len + 1);
-
- word_start = 0;
-
- for (i = 0; i < str_len + 1; i++) {
-
- if (attrs[i].is_word_end) {
- char *start_word, *end_word;
-
- start_word = g_utf8_offset_to_pointer (txt, word_start);
- end_word = g_utf8_offset_to_pointer (txt, i);
-
- if (start_word != end_word) {
-
- /* normalize word */
- char *s = g_utf8_casefold (start_word, end_word - start_word);
-
- char *index_word = g_utf8_normalize (s, -1, G_NORMALIZE_NFC);
- g_free (s);
-
- strs = g_string_append (strs, index_word);
- strs = g_string_append_c (strs, ' ');
-
- g_free (index_word);
- }
-
- word_start = i;
- }
-
- if (attrs[i].is_word_start) {
- word_start = i;
- }
- }
-
- g_free (attrs);
-
- return g_string_free (strs, FALSE);
-
-
- } else {
-
- GString *str = g_string_new (" ");
-
- while (TRUE) {
- i++;
- p = analyze_text (p, &word, filter_words, filter_numbers, delimit);
-
- if (word) {
-
- g_string_append (str, word);
-
- g_string_append_c (str, ' ');
-
- g_free (word);
- }
-
- if (!p || !*p) {
- return g_string_free (str, FALSE);
- }
- }
- }
- }
-
- return NULL;
-}
-
-
-static void
-delete_words (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- char *word;
-
- word = (char *) key;
-
- g_free (word);
-
-}
-
-
-void
-tracker_word_table_free (GHashTable *table)
-{
- if (table) {
- g_hash_table_foreach (table, delete_words, NULL);
- g_hash_table_destroy (table);
- }
-}
-
-
-char **
-tracker_parse_text_into_array (const char *text)
-{
- char *s = tracker_parse_text_to_string (text, TRUE, FALSE, FALSE);
-
- char **array = g_strsplit (s, " ", -1);
-
- g_free (s);
-
- return array;
-}
-
-
-/* use this for already processed text only */
-GHashTable *
-tracker_parse_text_fast (GHashTable *word_table, const char *txt, int weight)
-{
- if (!word_table) {
- word_table = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
- }
-
- if (!txt || weight == 0) {
- return word_table;
- }
-
- char **tmp;
- char **array;
- gpointer k=0,v=0;
-
- array = g_strsplit (txt, " ", -1);
-
- for (tmp = array; *tmp; tmp++) {
- if (**tmp) {
-
- if (!g_hash_table_lookup_extended (word_table, *tmp, &k, &v)) {
- g_hash_table_insert (word_table, g_strdup (*tmp), GINT_TO_POINTER (GPOINTER_TO_INT (v) + weight));
- } else {
- g_hash_table_insert (word_table, *tmp, GINT_TO_POINTER (GPOINTER_TO_INT (v) + weight));
- }
- }
- }
-
- g_strfreev (array);
-
- return word_table;
-}
-
-
-/* use this for unprocessed raw text */
-GHashTable *
-tracker_parse_text (GHashTable *word_table, const char *txt, int weight, gboolean filter_words, gboolean delimit_words)
-{
- int total_words;
-
- if (!word_table) {
- word_table = g_hash_table_new (g_str_hash, g_str_equal);
- total_words = 0;
- } else {
- total_words = g_hash_table_size (word_table);
- }
-
- if (!txt || weight == 0) {
- return word_table;
- }
-
- const char *p = txt;
-
- char *word = NULL;
- guint32 i = 0;
-
- if (text_needs_pango (txt)) {
- /* CJK text does not need stemming or other treatment */
-
- PangoLogAttr *attrs;
- guint nb_bytes, str_len, word_start;
-
- nb_bytes = strlen (txt);
-
- str_len = g_utf8_strlen (txt, -1);
-
- attrs = g_new0 (PangoLogAttr, str_len + 1);
-
- pango_get_log_attrs (txt, nb_bytes, 0, pango_language_from_string ("C"), attrs, str_len + 1);
-
- word_start = 0;
-
- for (i = 0; i < str_len + 1; i++) {
-
- if (attrs[i].is_word_end) {
- char *start_word, *end_word;
-
- start_word = g_utf8_offset_to_pointer (txt, word_start);
- end_word = g_utf8_offset_to_pointer (txt, i);
-
- if (start_word != end_word) {
-
- /* normalize word */
- char *s = g_utf8_casefold (start_word, end_word - start_word);
- if (!s) continue;
-
- char *index_word = g_utf8_normalize (s, -1, G_NORMALIZE_NFC);
- g_free (s);
-
- if (!index_word) continue;
-
- total_words++;
-
- if (total_words < tracker_config_get_max_words_to_index (tracker->config)) {
-
- int count = GPOINTER_TO_INT (g_hash_table_lookup (word_table, index_word));
- g_hash_table_insert (word_table, index_word, GINT_TO_POINTER (count + weight));
-
- if (count != 0) {
- g_free (index_word);
- }
-
- } else {
- g_free (index_word);
- break;
- }
- }
-
- word_start = i;
- }
-
- if (attrs[i].is_word_start) {
- word_start = i;
- }
- }
-
- g_free (attrs);
-
- } else {
-
- while (TRUE) {
- i++;
- p = analyze_text (p, &word, filter_words, filter_words, delimit_words);
-
- if (word) {
-
- total_words++;
-
- if (total_words < tracker_config_get_max_words_to_index (tracker->config)) {
-
- int count = GPOINTER_TO_INT (g_hash_table_lookup (word_table, word));
- g_hash_table_insert (word_table, word, GINT_TO_POINTER (count + weight));
-
- if (count != 0) {
- g_free (word);
- }
-
- } else {
- g_free (word);
- break;
- }
-
- }
-
- if (!p || !*p) {
- break;
- }
- }
-
- }
- return word_table;
-}
diff --git a/src/trackerd/tracker-parser.h b/src/trackerd/tracker-parser.h
deleted file mode 100644
index d57009d90..000000000
--- a/src/trackerd/tracker-parser.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_PARSER_H_
-#define _TRACKER_PARSER_H_
-
-#include <glib.h>
-
-
-
-/* tracker_parse_text
- *
- * function to parse supplied text and break into individual words and maintain a count of no of occurances of the word multiplied by a "weight" factor.
- *
- * word_table - can be NULL. Contains the accumulated parsed words with weighted word counts for the text (useful for indexing stuff line by line)
- * text - the text to be parsed
- * weight - used to multiply the count of a word's occurance to create a weighted rank score
- *
- * returns the word_table.
- */
-GHashTable * tracker_parse_text (GHashTable *word_table, const char *txt, int weight, gboolean filter_words, gboolean delimit_words);
-
-GHashTable * tracker_parse_text_fast (GHashTable *word_table, const char *txt, int weight);
-
-char * tracker_parse_text_to_string (const char *txt, gboolean filter_words, gboolean filter_numbers, gboolean delimit);
-
-char ** tracker_parse_text_into_array (const char *text);
-
-void tracker_word_table_free (GHashTable *table);
-
-#endif
diff --git a/src/trackerd/tracker-poll.c b/src/trackerd/tracker-poll.c
deleted file mode 100644
index b8b431a49..000000000
--- a/src/trackerd/tracker-poll.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#include <string.h>
-#include <unistd.h>
-#include <glib.h>
-
-#include "tracker-watch.h"
-
-extern Tracker *tracker;
-
-gboolean tracker_start_watching (void){tracker->watch_limit = 0; return TRUE;}
-void tracker_end_watching (void){return;}
-
-gboolean tracker_add_watch_dir (const gchar *dir, DBConnection *db_con){return FALSE;}
-void tracker_remove_watch_dir (const gchar *dir, gboolean delete_subdirs, DBConnection *db_con) {return;}
-gboolean tracker_is_directory_watched (const gchar *dir, DBConnection *db_con) {return FALSE;}
-int tracker_count_watch_dirs (void) {return 0;}
-
diff --git a/src/trackerd/tracker-process-files.c b/src/trackerd/tracker-process-files.c
deleted file mode 100644
index eb12a9acd..000000000
--- a/src/trackerd/tracker-process-files.c
+++ /dev/null
@@ -1,1900 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2008, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <signal.h>
-
-#ifdef OS_WIN32
-#include <windows.h>
-#include <pthread.h>
-#include "mingw-compat.h"
-#endif
-
-#include <glib.h>
-
-#include <libtracker-common/tracker-config.h>
-#include <libtracker-common/tracker-log.h>
-#include "../xdgmime/xdgmime.h"
-
-#include "tracker-apps.h"
-#include "tracker-db.h"
-#include "tracker-dbus.h"
-#include "tracker-dbus-methods.h"
-#include "tracker-cache.h"
-#include "tracker-email.h"
-#include "tracker-hal.h"
-#include "tracker-indexer.h"
-#include "tracker-os-dependant.h"
-#include "tracker-utils.h"
-#include "tracker-watch.h"
-#include "tracker-service.h"
-#include "tracker-process-files.h"
-
-static GSList *ignore_pattern_list;
-static GSList *temp_black_list;
-static GSList *crawl_directories;
-
-static gchar **ignore_pattern;
-
-static const gchar *ignore_suffix[] = {
- "~", ".o", ".la", ".lo", ".loT", ".in",
- ".csproj", ".m4", ".rej", ".gmo", ".orig",
- ".pc", ".omf", ".aux", ".tmp", ".po",
- ".vmdk",".vmx",".vmxf",".vmsd",".nvram",
- ".part", NULL
-};
-
-static const gchar *ignore_prefix[] = {
- "autom4te", "conftest.", "confstat",
- "config.", NULL
-};
-
-static const gchar *ignore_name[] = {
- "po", "CVS", "aclocal", "Makefile", "CVS",
- "SCCS", "ltmain.sh","libtool", "config.status",
- "conftest", "confdefs.h", NULL
-};
-
-static void
-process_my_yield (void)
-{
-#ifndef OS_WIN32
- while (g_main_context_iteration (NULL, FALSE)) {
- /* FIXME: do something here? */
- }
-#endif
-}
-
-static GSList *
-process_get_files (Tracker *tracker,
- const char *dir,
- gboolean dir_only,
- gboolean skip_ignored_files,
- const char *filter_prefix)
-{
- GDir *dirp;
- GSList *files;
- char *dir_in_locale;
-
- dir_in_locale = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL);
-
- if (!dir_in_locale) {
- tracker_error ("ERROR: dir could not be converted to utf8 format");
- g_free (dir_in_locale);
- return NULL;
- }
-
- files = NULL;
-
- if ((dirp = g_dir_open (dir_in_locale, 0, NULL))) {
- const gchar *name;
-
- while ((name = g_dir_read_name (dirp))) {
- gchar *filename;
- gchar *built_filename;
-
- if (!tracker->is_running) {
- g_free (dir_in_locale);
- g_dir_close (dirp);
- return NULL;
- }
-
- filename = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
-
- if (!filename) {
- continue;
- }
-
- if (filter_prefix && !g_str_has_prefix (filename, filter_prefix)) {
- g_free (filename);
- continue;
- }
-
- if (skip_ignored_files &&
- tracker_process_files_should_be_ignored (filename)) {
- g_free (filename);
- continue;
- }
-
- built_filename = g_build_filename (dir, filename, NULL);
- g_free (filename);
-
- if (!tracker_file_is_valid (built_filename)) {
- g_free (built_filename);
- continue;
- }
-
- if (!tracker_process_files_should_be_crawled (tracker, built_filename)) {
- g_free (built_filename);
- continue;
- }
-
- if (!dir_only || tracker_is_directory (built_filename)) {
- if (tracker_process_files_should_be_watched (tracker->config, built_filename)) {
- files = g_slist_prepend (files, built_filename);
- } else {
- g_free (built_filename);
- }
- } else {
- g_free (built_filename);
- }
- }
-
- g_dir_close (dirp);
- }
-
- g_free (dir_in_locale);
-
- if (!tracker->is_running) {
- if (files) {
- g_slist_foreach (files, (GFunc) g_free, NULL);
- g_slist_free (files);
- }
-
- return NULL;
- }
-
- return files;
-}
-
-static void
-process_get_directories (Tracker *tracker,
- const char *dir,
- GSList **files)
-{
- GSList *l;
-
- l = process_get_files (tracker, dir, TRUE, TRUE, NULL);
-
- if (*files) {
- *files = g_slist_concat (*files, l);
- } else {
- *files = l;
- }
-}
-
-static void
-process_watch_directories (Tracker *tracker,
- GSList *dirs)
-{
- GSList *list;
-
- if (!tracker->is_running) {
- return;
- }
-
- /* Add sub directories breadth first recursively to avoid
- * running out of file handles.
- */
- list = dirs;
-
- while (list) {
- GSList *files = NULL;
- GSList *l;
-
- for (l = list; l; l = l->next) {
- gchar *dir;
- guint watches;
-
- if (!l->data) {
- continue;
- }
-
- if (!g_utf8_validate (l->data, -1, NULL)) {
- dir = g_filename_to_utf8 (l->data, -1, NULL,NULL,NULL);
- if (!dir) {
- tracker_error ("Directory to watch was not valid UTF-8 and couldn't be converted either");
- continue;
- }
- } else {
- dir = g_strdup (l->data);
- }
-
- if (!tracker_file_is_valid (dir)) {
- g_free (dir);
- continue;
- }
-
- if (!tracker_is_directory (dir)) {
- g_free (dir);
- continue;
- }
-
- if (!tracker_process_files_should_be_watched (tracker->config, dir) ||
- !tracker_process_files_should_be_watched (tracker->config, dir)) {
- continue;
- }
-
- crawl_directories = g_slist_prepend (crawl_directories, dir);
-
- if (!tracker_config_get_enable_watches (tracker->config)) {
- continue;
- }
-
- watches = tracker_count_watch_dirs () + g_slist_length (list);
-
- if (watches < tracker->watch_limit) {
- if (!tracker_add_watch_dir (dir, tracker->index_db)) {
- tracker_debug ("Watch failed for %s", dir);
- }
- }
- }
-
- for (l = list; l; l = l->next) {
- process_get_directories (tracker, l->data, &files);
- }
-
- /* Don't free original list */
- if (list != dirs) {
- g_slist_foreach (list, (GFunc) g_free, NULL);
- g_slist_free (list);
- }
-
- list = files;
- }
-}
-
-static void
-process_schedule_directory_check_foreach (const gchar *uri,
- Tracker *tracker)
-{
- if (!tracker->is_running) {
- return;
- }
-
- g_return_if_fail (tracker_check_uri (uri));
- g_return_if_fail (tracker->index_db);
-
- tracker_db_insert_pending_file (tracker->index_db, 0, uri, NULL, "unknown", 0,
- TRACKER_ACTION_DIRECTORY_REFRESH, TRUE, FALSE, -1);
-}
-
-static void
-process_schedule_file_check_foreach (const gchar *uri,
- Tracker *tracker)
-{
- if (!tracker->is_running) {
- return;
- }
-
- g_return_if_fail (tracker_check_uri (uri));
- g_return_if_fail (tracker->index_db);
-
- /* Keep mainloop responsive */
- process_my_yield ();
-
- if (!tracker_is_directory (uri)) {
- tracker_db_insert_pending_file (tracker->index_db, 0, uri, NULL, "unknown", 0,
- TRACKER_ACTION_CHECK, 0, FALSE, -1);
- } else {
- process_schedule_directory_check_foreach (uri, tracker);
- }
-}
-
-static inline void
-process_directory_list (Tracker *tracker,
- GSList *list,
- gboolean recurse)
-{
- crawl_directories = NULL;
-
- if (!list) {
- return;
- }
-
- process_watch_directories (tracker, list);
-
- g_slist_foreach (list,
- (GFunc) process_schedule_directory_check_foreach,
- tracker);
-
- if (recurse && crawl_directories) {
- g_slist_foreach (crawl_directories,
- (GFunc) process_schedule_directory_check_foreach,
- tracker);
- }
-
- if (crawl_directories) {
- g_slist_foreach (crawl_directories, (GFunc) g_free, NULL);
- g_slist_free (crawl_directories);
- crawl_directories = NULL;
- }
-}
-
-static void
-process_scan_directory (Tracker *tracker,
- const gchar *uri)
-{
- GSList *files;
-
- if (!tracker->is_running) {
- return;
- }
-
- g_return_if_fail (tracker->index_db);
- g_return_if_fail (tracker_check_uri (uri));
- g_return_if_fail (tracker_is_directory (uri));
-
- /* Keep mainloop responsive */
- process_my_yield ();
-
- files = process_get_files (tracker, uri, FALSE, TRUE, NULL);
-
- tracker_debug ("Scanning %s for %d files", uri, g_slist_length (files));
-
- g_slist_foreach (files,
- (GFunc) process_schedule_file_check_foreach,
- tracker);
- g_slist_foreach (files,
- (GFunc) g_free,
- NULL);
- g_slist_free (files);
-
- /* Recheck directory to update its mtime if its changed whilst
- * scanning.
- */
- process_schedule_directory_check_foreach (uri, tracker);
- tracker_debug ("Finished scanning");
-}
-
-static void
-process_action_verify (FileInfo *info)
-{
- /* Determines whether an action applies to a file or a
- * directory.
- */
-
- if (info->action == TRACKER_ACTION_CHECK) {
- if (info->is_directory) {
- info->action = TRACKER_ACTION_DIRECTORY_CHECK;
- info->counter = 0;
- } else {
- info->action = TRACKER_ACTION_FILE_CHECK;
- }
-
- } else {
- if (info->action == TRACKER_ACTION_DELETE || info->action == TRACKER_ACTION_DELETE_SELF) {
-
- /* we are in trouble if we cant find the deleted uri in the DB - assume its a directory (worst case) */
- if (info->file_id == 0) {
- info->is_directory = TRUE;
- }
-
- info->counter = 0;
- if (info->is_directory) {
- info->action = TRACKER_ACTION_DIRECTORY_DELETED;
- } else {
- info->action = TRACKER_ACTION_FILE_DELETED;
- }
- } else {
- if (info->action == TRACKER_ACTION_MOVED_FROM) {
- info->counter = 1;
- if (info->is_directory) {
- info->action = TRACKER_ACTION_DIRECTORY_MOVED_FROM;
- } else {
- info->action = TRACKER_ACTION_FILE_MOVED_FROM;
- }
-
- } else {
-
- if (info->action == TRACKER_ACTION_CREATE) {
- if (info->is_directory) {
- info->action = TRACKER_ACTION_DIRECTORY_CREATED;
- info->counter = 0; /* do not reschedule a created directory */
- } else {
- info->action = TRACKER_ACTION_FILE_CREATED;
- }
-
- } else {
- if (info->action == TRACKER_ACTION_FILE_MOVED_TO) {
- info->counter = 0;
- if (info->is_directory) {
- info->action = TRACKER_ACTION_DIRECTORY_MOVED_TO;
- } else {
- info->action = TRACKER_ACTION_FILE_MOVED_TO;
- }
- }
- }
- }
- }
- }
-}
-
-static void
-process_index_entity (Tracker *tracker,
- FileInfo *info)
-{
- TrackerService *def;
- gchar *service_info;
-
- g_return_if_fail (info);
- g_return_if_fail (tracker_check_uri (info->uri));
-
- if (!tracker_file_is_valid (info->uri)) {
- return;
- }
-
- if (!info->is_directory) {
- /* Sleep to throttle back indexing */
- tracker_throttle (100);
- }
-
- service_info = tracker_get_service_for_uri (info->uri);
-
- if (!service_info) {
- tracker_error ("ERROR: cannot find service for path %s", info->uri);
- return;
- }
-
- def = tracker_service_manager_get_service (service_info);
-
- if (!def) {
- if (service_info) {
- tracker_error ("ERROR: unknown service %s", service_info);
- } else {
- tracker_error ("ERROR: unknown service");
- }
- g_free (service_info);
- return;
- }
-
- if (info->is_directory) {
- info->is_hidden = !tracker_service_get_show_service_directories (def);
- tracker_db_index_file (tracker->index_db, info, NULL, NULL);
- g_free (service_info);
- return;
- } else {
- info->is_hidden = !tracker_service_get_show_service_files (def);
- }
-
- if (g_str_has_suffix (service_info, "Emails")) {
- DBConnection *db_con;
-
- db_con = tracker->index_db;
-
- if (!tracker_email_index_file (db_con->emails, info)) {
- g_free (service_info);
- return;
- }
- } else if (strcmp (service_info, "Files") == 0) {
- tracker_db_index_file (tracker->index_db, info, NULL, NULL);
- } else if (strcmp (service_info, "WebHistory") ==0 ) {
- tracker_db_index_webhistory (tracker->index_db, info);
- } else if (g_str_has_suffix (service_info, "Conversations")) {
- tracker_db_index_conversation (tracker->index_db, info);
- } else if (strcmp (service_info, "Applications") == 0) {
- tracker_db_index_application (tracker->index_db, info);
- } else {
- tracker_db_index_service (tracker->index_db, info, NULL, NULL, NULL, FALSE, TRUE, TRUE, TRUE);
- }
-
- g_free (service_info);
-}
-
-static void
-process_index_delete_file (Tracker *tracker,
- FileInfo *info)
-{
- /* Info struct may have been deleted in transit here so check
- * if still valid and intact.
- */
- g_return_if_fail (tracker_process_files_is_file_info_valid (info));
-
- /* If we dont have an entry in the db for the deleted file, we
- * ignore it.
- */
- if (info->file_id == 0) {
- return;
- }
-
- tracker_db_delete_file (tracker->index_db, info->file_id);
-
- tracker_log ("Deleting file %s", info->uri);
-}
-
-static void
-process_index_delete_directory (Tracker *tracker,
- FileInfo *info)
-{
- /* Info struct may have been deleted in transit here so check
- * if still valid and intact.
- */
- g_return_if_fail (tracker_process_files_is_file_info_valid (info));
-
- /* If we dont have an entry in the db for the deleted
- * directory, we ignore it.
- */
- if (info->file_id == 0) {
- return;
- }
-
- tracker_db_delete_directory (tracker->index_db, info->file_id, info->uri);
-
- tracker_remove_watch_dir (info->uri, TRUE, tracker->index_db);
-
- tracker_log ("Deleting dir %s and subdirs", info->uri);
-}
-
-static void
-process_index_delete_directory_check (Tracker *tracker,
- const gchar *uri)
-{
- gchar **files;
- gchar **p;
-
- /* Check for any deletions*/
- files = tracker_db_get_files_in_folder (tracker->index_db, uri);
-
- if (!files) {
- return;
- }
-
- for (p = files; *p; p++) {
- gchar *str = *p;
-
- if (!tracker_file_is_valid (str)) {
- FileInfo *info;
-
- info = tracker_create_file_info (str, 1, 0, 0);
- info = tracker_db_get_file_info (tracker->index_db, info);
-
- if (!info->is_directory) {
- process_index_delete_file (tracker, info);
- } else {
- process_index_delete_directory (tracker, info);
- }
- tracker_free_file_info (info);
- }
- }
-
- g_strfreev (files);
-}
-
-static inline void
-process_queue_files_foreach (const gchar *uri,
- gpointer user_data)
-{
- Tracker *tracker;
- FileInfo *info;
-
- tracker = (Tracker*) user_data;
- info = tracker_create_file_info (uri, TRACKER_ACTION_CHECK, 0, 0);
- g_async_queue_push (tracker->file_process_queue, info);
-}
-
-static void
-process_check_directory (Tracker *tracker,
- const gchar *uri)
-{
- GSList *files;
-
- if (!tracker->is_running) {
- return;
- }
-
- g_return_if_fail (tracker_check_uri (uri));
- g_return_if_fail (tracker_is_directory (uri));
-
- files = process_get_files (tracker, uri, FALSE, TRUE, NULL);
- tracker_debug ("Checking %s for %d files", uri, g_slist_length (files));
-
- g_slist_foreach (files, (GFunc) process_queue_files_foreach, tracker);
- g_slist_foreach (files, (GFunc) g_free, NULL);
- g_slist_free (files);
-
- process_queue_files_foreach (uri, tracker);
-
- if (tracker->index_status != INDEX_EMAILS) {
- tracker->folders_processed++;
- }
-}
-
-/*
- * Actual Indexing functions
- */
-static void
-process_index_config (Tracker *tracker)
-{
- tracker_log ("Starting config indexing");
-}
-
-static void
-process_index_applications (Tracker *tracker)
-{
- GSList *list;
- DBConnection *db_con;
-
- tracker_log ("Starting application indexing");
-
- db_con = tracker->index_db;
-
- tracker_db_start_index_transaction (db_con);
- tracker_db_interface_start_transaction (db_con->cache->db);
-
- tracker_applications_add_service_directories ();
-
- list = tracker_get_service_dirs ("Applications");
- process_directory_list (tracker, list, FALSE);
-
- tracker_db_interface_end_transaction (db_con->cache->db);
-
- g_slist_free (list);
-}
-
-static void
-process_index_get_remote_roots (Tracker *tracker,
- GSList **mounted_directory_roots,
- GSList **removable_device_roots)
-{
- GSList *l1 = NULL;
- GSList *l2 = NULL;
-
-#ifdef HAVE_HAL
- l1 = tracker_hal_get_mounted_directory_roots (tracker->hal);
- l2 = tracker_hal_get_removable_device_roots (tracker->hal);
-#endif
-
- /* The options to index removable media and the index mounted
- * directories are both mutually exclusive even though
- * removable media is mounted on a directory.
- *
- * Since we get ALL mounted directories from HAL, we need to
- * remove those which are removable device roots.
- */
- if (l2) {
- GSList *l;
- GSList *list = NULL;
-
- for (l = l1; l; l = l->next) {
- if (g_slist_find_custom (l2, l->data, (GCompareFunc) strcmp)) {
- continue;
- }
-
- list = g_slist_prepend (list, l->data);
- }
-
- *mounted_directory_roots = g_slist_reverse (list);
- } else {
- *mounted_directory_roots = NULL;
- }
-
- *removable_device_roots = g_slist_copy (l2);
-}
-
-static void
-process_index_get_roots (Tracker *tracker,
- GSList **included,
- GSList **excluded)
-{
- GSList *watch_directory_roots;
- GSList *no_watch_directory_roots;
- GSList *mounted_directory_roots;
- GSList *removable_device_roots;
-
- *included = NULL;
- *excluded = NULL;
-
- process_index_get_remote_roots (tracker,
- &mounted_directory_roots,
- &removable_device_roots);
-
- /* Delete all stuff in the no watch dirs */
- watch_directory_roots =
- tracker_config_get_watch_directory_roots (tracker->config);
-
- no_watch_directory_roots =
- tracker_config_get_no_watch_directory_roots (tracker->config);
-
- /* Create list for enabled roots based on config */
- *included = g_slist_concat (*included, g_slist_copy (watch_directory_roots));
-
- /* Create list for disabled roots based on config */
- *excluded = g_slist_concat (*excluded, g_slist_copy (no_watch_directory_roots));
-
- /* Add or remove roots which pertain to removable media */
- if (tracker_config_get_index_removable_devices (tracker->config)) {
- *included = g_slist_concat (*included, g_slist_copy (removable_device_roots));
- } else {
- *excluded = g_slist_concat (*excluded, g_slist_copy (removable_device_roots));
- }
-
- /* Add or remove roots which pertain to mounted directories */
- if (tracker_config_get_index_mounted_directories (tracker->config)) {
- *included = g_slist_concat (*included, g_slist_copy (mounted_directory_roots));
- } else {
- *excluded = g_slist_concat (*excluded, g_slist_copy (mounted_directory_roots));
- }
-}
-
-static void
-process_index_files (Tracker *tracker)
-{
- DBConnection *db_con;
- GSList *index_include;
- GSList *index_exclude;
- gint initial_sleep;
-
- tracker_log ("Starting file indexing...");
-
- db_con = tracker->index_db;
-
- initial_sleep = tracker_config_get_initial_sleep (tracker->config);
-
- tracker->pause_io = TRUE;
-
- tracker_dbus_send_index_status_change_signal ();
- tracker_db_end_index_transaction (db_con);
-
- /* Sleep for N secs before watching/indexing any of the major services */
- tracker_log ("Sleeping for %d secs before starting...", initial_sleep);
-
- while (initial_sleep > 0) {
- g_usleep (G_USEC_PER_SEC);
-
- initial_sleep --;
-
- if (!tracker->is_running || tracker->shutdown) {
- return;
- }
- }
-
- tracker->pause_io = FALSE;
- tracker_dbus_send_index_status_change_signal ();
-
- /* FIXME: Is this safe? shouldn't we free first? */
- crawl_directories = NULL;
-
- tracker_db_start_index_transaction (db_con);
-
- process_index_get_roots (tracker, &index_include, &index_exclude);
-
- if (index_exclude) {
- GSList *l;
-
- tracker_log ("Deleting entities where indexing is disabled or are not watched:");
-
- for (l = index_exclude; l; l = l->next) {
- guint32 id;
-
- tracker_log (" %s", l->data);
-
- id = tracker_db_get_file_id (db_con, l->data);
-
- if (id > 0) {
- tracker_db_delete_directory (db_con, id, l->data);
- }
- }
-
- g_slist_free (index_exclude);
- }
-
- if (!index_include) {
- tracker_log ("No directory roots to index!");
- return;
- }
-
- tracker_db_interface_start_transaction (db_con->cache->db);
-
- /* Index watched dirs first */
- process_watch_directories (tracker, index_include);
-
- g_slist_foreach (crawl_directories,
- (GFunc) process_schedule_directory_check_foreach,
- tracker);
-
- if (crawl_directories) {
- g_slist_foreach (crawl_directories,
- (GFunc) g_free,
- NULL);
- g_slist_free (crawl_directories);
- crawl_directories = NULL;
- }
-
- g_slist_foreach (index_include,
- (GFunc) process_schedule_directory_check_foreach,
- tracker);
-
- if (crawl_directories) {
- g_slist_foreach (crawl_directories,
- (GFunc) g_free,
- NULL);
- g_slist_free (crawl_directories);
- crawl_directories = NULL;
- }
-
- tracker_db_interface_end_transaction (db_con->cache->db);
- tracker_dbus_send_index_progress_signal ("Files", "");
-
- g_slist_free (index_include);
-}
-
-static void
-process_index_crawl_add_directories (Tracker *tracker,
- GSList *dirs)
-{
- GSList *new_dirs = NULL;
- GSList *l;
-
- if (!tracker->is_running) {
- return;
- }
-
- for (l = dirs; l; l = l->next) {
- if (!l->data) {
- continue;
- }
-
- new_dirs = g_slist_prepend (new_dirs, g_strdup (l->data));
- }
-
- /* Add sub directories breadth first recursively to avoid
- * running out of file handles.
- */
- while (new_dirs) {
- GSList *files = NULL;
-
- for (l = new_dirs; l; l = l->next) {
- if (!l->data) {
- continue;
- }
-
- if (tracker_process_files_should_be_watched (tracker->config, l->data)) {
- crawl_directories = g_slist_prepend (crawl_directories, g_strdup (l->data));
- }
- }
-
- for (l = new_dirs; l; l = l->next) {
- process_get_directories (tracker, l->data, &files);
- }
-
- g_slist_foreach (new_dirs, (GFunc) g_free, NULL);
- g_slist_free (new_dirs);
-
- new_dirs = files;
- }
-}
-
-static void
-process_index_crawl_files (Tracker *tracker)
-{
- DBConnection *db_con;
- GSList *crawl_directory_roots;
-
- db_con = tracker->index_db;
-
- tracker_log ("Starting directory crawling...");
-
- crawl_directories = NULL;
- crawl_directory_roots =
- tracker_config_get_crawl_directory_roots (tracker->config);
-
- if (!crawl_directory_roots) {
- return;
- }
-
- tracker_db_interface_start_transaction (db_con->cache->db);
-
- process_index_crawl_add_directories (tracker, crawl_directory_roots);
-
- g_slist_foreach (crawl_directories,
- (GFunc) process_schedule_directory_check_foreach,
- tracker);
-
- if (crawl_directories) {
- g_slist_foreach (crawl_directories, (GFunc) g_free, NULL);
- g_slist_free (crawl_directories);
- crawl_directories = NULL;
- }
-
- g_slist_foreach (crawl_directory_roots,
- (GFunc) process_schedule_directory_check_foreach,
- tracker);
-
- if (crawl_directories) {
- g_slist_foreach (crawl_directories, (GFunc) g_free, NULL);
- g_slist_free (crawl_directories);
- crawl_directories = NULL;
- }
-
- tracker_db_interface_end_transaction (db_con->cache->db);
-}
-
-static void
-process_index_conversations (Tracker *tracker)
-{
- gchar *gaim, *purple;
- gboolean has_logs = FALSE;
- GSList *list = NULL;
-
- gaim = g_build_filename (g_get_home_dir(), ".gaim", "logs", NULL);
- purple = g_build_filename (g_get_home_dir(), ".purple", "logs", NULL);
-
- if (tracker_file_is_valid (gaim)) {
- has_logs = TRUE;
- tracker_add_service_path ("GaimConversations", gaim);
- list = g_slist_prepend (NULL, gaim);
- }
-
- if (tracker_file_is_valid (purple)) {
- has_logs = TRUE;
- tracker_add_service_path ("GaimConversations", purple);
- list = g_slist_prepend (NULL, purple);
- }
-
- if (has_logs) {
- DBConnection *db_con;
-
- db_con = tracker->index_db;
-
- tracker_log ("Starting chat log indexing...");
- tracker_db_interface_start_transaction (db_con->cache->db);
- process_directory_list (tracker, list, TRUE);
- tracker_db_interface_end_transaction (db_con->cache->db);
- g_slist_free (list);
- }
-
- g_free (gaim);
- g_free (purple);
-}
-
-static void
-process_index_webhistory (Tracker *tracker)
-{
- GSList *list = NULL;
- gchar *firefox_dir;
-
- firefox_dir = g_build_filename (g_get_home_dir(), ".xesam/Firefox/ToIndex", NULL);
-
- if (tracker_file_is_valid (firefox_dir)) {
- DBConnection *db_con;
-
- db_con = tracker->index_db;
-
- list = g_slist_prepend( NULL, firefox_dir);
-
- tracker_log ("Starting Firefox web history indexing...");
- tracker_add_service_path ("WebHistory", firefox_dir);
-
- tracker_db_interface_start_transaction (db_con->cache->db);
- process_directory_list (tracker, list, TRUE);
- tracker_db_interface_end_transaction (db_con->cache->db);
- g_slist_free (list);
- }
-
- g_free (firefox_dir);
-}
-
-static void
-process_index_emails (Tracker *tracker)
-{
- DBConnection *db_con;
- TrackerConfig *config;
-
- db_con = tracker->index_db;
- config = tracker->config;
-
- tracker_db_end_index_transaction (db_con);
- tracker_cache_flush_all ();
-
- tracker_indexer_merge_indexes (INDEX_TYPE_FILES);
-
- if (tracker->shutdown) {
- return;
- }
-
- tracker->index_status = INDEX_EMAILS;
-
- tracker_dbus_send_index_progress_signal ("Emails", "");
-
- if (tracker->word_update_count > 0) {
- tracker_indexer_apply_changes (tracker->file_index, tracker->file_update_index, TRUE);
- }
-
- tracker_db_start_index_transaction (tracker->index_db);
-
- if (tracker_config_get_email_client (tracker->config)) {
- const gchar *name;
-
- tracker_email_add_service_directories (db_con->emails);
- tracker_log ("Starting email indexing...");
-
- tracker_db_interface_start_transaction (db_con->cache->db);
-
- name = tracker_email_get_name ();
-
- if (name) {
- GSList *list;
-
- list = tracker_get_service_dirs (name);
- process_directory_list (tracker, list, TRUE);
- g_slist_free (list);
- }
-
- tracker_db_interface_end_transaction (db_con->cache->db);
- }
-}
-
-static gboolean
-process_files (Tracker *tracker)
-{
- DBConnection *db_con;
-
- db_con = tracker->index_db;
-
- /* Check dir_queue in case there are
- * directories waiting to be indexed.
- */
- if (g_async_queue_length (tracker->dir_queue) > 0) {
- gchar *uri;
-
- uri = g_async_queue_try_pop (tracker->dir_queue);
-
- if (uri) {
- process_check_directory (tracker, uri);
- g_free (uri);
- return TRUE;
- }
- }
-
- if (tracker->index_status != INDEX_FINISHED) {
- g_mutex_unlock (tracker->files_check_mutex);
-
- switch (tracker->index_status) {
- case INDEX_CONFIG:
- process_index_config (tracker);
- break;
-
- case INDEX_APPLICATIONS:
- process_index_applications (tracker);
- break;
-
- case INDEX_FILES:
- process_index_files (tracker);
- break;
-
- case INDEX_CRAWL_FILES:
- process_index_crawl_files (tracker);
- break;
-
- case INDEX_CONVERSATIONS:
- process_index_conversations (tracker);
- break;
-
- case INDEX_WEBHISTORY:
- process_index_webhistory (tracker);
- break;
-
- case INDEX_EXTERNAL:
- break;
-
- case INDEX_EMAILS:
- process_index_emails (tracker);
- break;
-
- case INDEX_FINISHED:
- break;
- }
-
- tracker->index_status++;
- return TRUE;
- }
-
- tracker_db_end_index_transaction (db_con);
- tracker_cache_flush_all ();
- tracker_db_refresh_all (db_con);
- tracker_indexer_merge_indexes (INDEX_TYPE_FILES);
-
- if (tracker->shutdown) {
- return FALSE;
- }
-
- if (tracker->word_update_count > 0) {
- tracker_indexer_apply_changes (tracker->file_index,
- tracker->file_update_index,
- TRUE);
- }
-
- tracker_indexer_merge_indexes (INDEX_TYPE_EMAILS);
-
- if (tracker->shutdown) {
- return FALSE;
- }
-
- tracker->index_status = INDEX_FILES;
- tracker_dbus_send_index_progress_signal ("Files","");
- tracker->index_status = INDEX_FINISHED;
-
- if (tracker->is_running && tracker->first_time_index) {
- tracker_set_status (tracker, STATUS_OPTIMIZING, 0, FALSE);
- tracker->do_optimize = FALSE;
-
- tracker->first_time_index = FALSE;
-
- tracker_dbus_send_index_finished_signal ();
- tracker_db_set_option_int (db_con, "InitialIndex", 0);
-
- tracker->update_count = 0;
-
- tracker_log ("Updating database stats, please wait...");
-
- tracker_db_interface_start_transaction (db_con->db);
- tracker_db_exec_no_reply (db_con, "ANALYZE");
- tracker_db_interface_end_transaction (db_con->db);
-
- tracker_db_interface_start_transaction (db_con->emails->db);
- tracker_db_exec_no_reply (db_con->emails, "ANALYZE");
- tracker_db_interface_end_transaction (db_con->emails->db);
-
- tracker_log ("Finished optimizing, waiting for new events...");
- }
-
- /* We have no stuff to process so
- * sleep until awoken by a new
- * signal.
- */
- tracker_set_status (tracker, STATUS_IDLE, 0, TRUE);
-
- g_cond_wait (tracker->file_thread_signal,
- tracker->files_signal_mutex);
-
- tracker->grace_period = 0;
-
- /* Determine if wake up call is new
- * stuff or a shutdown signal.
- */
- if (!tracker->shutdown) {
- tracker_db_start_index_transaction (db_con);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-process_action (Tracker *tracker,
- FileInfo *info)
-{
- DBConnection *db_con;
- gboolean need_index;
-
- db_con = tracker->index_db;
- need_index = info->mtime > info->indextime;
-
- switch (info->action) {
- case TRACKER_ACTION_FILE_CHECK:
- break;
-
- case TRACKER_ACTION_FILE_CHANGED:
- case TRACKER_ACTION_FILE_CREATED:
- case TRACKER_ACTION_WRITABLE_FILE_CLOSED:
- need_index = TRUE;
- break;
-
- case TRACKER_ACTION_FILE_MOVED_FROM:
- need_index = FALSE;
- tracker_log ("Starting moving file %s to %s", info->uri, info->moved_to_uri);
- tracker_db_move_file (db_con, info->uri, info->moved_to_uri);
- break;
-
- case TRACKER_ACTION_DIRECTORY_REFRESH:
- if (need_index &&
- tracker_process_files_should_be_watched (tracker->config, info->uri)) {
- g_async_queue_push (tracker->dir_queue, g_strdup (info->uri));
-
- if (tracker->index_status != INDEX_EMAILS) {
- tracker->folders_count++;
- }
- }
-
- need_index = FALSE;
- break;
-
- case TRACKER_ACTION_DIRECTORY_CHECK:
- if (need_index &&
- tracker_process_files_should_be_watched (tracker->config, info->uri)) {
- g_async_queue_push (tracker->dir_queue, g_strdup (info->uri));
-
- if (info->indextime > 0) {
- process_index_delete_directory_check (tracker, info->uri);
- }
- }
-
- break;
-
- case TRACKER_ACTION_DIRECTORY_MOVED_FROM:
- tracker_db_move_directory (db_con, info->uri, info->moved_to_uri);
- need_index = FALSE;
- break;
-
- case TRACKER_ACTION_DIRECTORY_CREATED:
- need_index = TRUE;
- tracker_debug ("Processing created directory %s", info->uri);
-
- /* Schedule a rescan for all files in folder
- * to avoid race conditions.
- */
- if (tracker_process_files_should_be_watched (tracker->config, info->uri)) {
- GSList *list;
-
- /* Add to watch folders (including
- * subfolders).
- */
- list = g_slist_prepend (NULL, info->uri);
-
- process_watch_directories (tracker, list);
- process_scan_directory (tracker, info->uri);
-
- g_slist_free (list);
- } else {
- tracker_debug ("Blocked scan of directory %s as its in the no watch list",
- info->uri);
- }
-
- break;
-
- default:
- break;
- }
-
- return need_index;
-}
-
-static gboolean
-process_action_prechecks (Tracker *tracker,
- FileInfo *info)
-{
- DBConnection *db_con;
-
- /* Info struct may have been deleted in transit here
- * so check if still valid and intact.
- */
- if (!tracker_process_files_is_file_info_valid (info)) {
- return TRUE;
- }
-
- db_con = tracker->index_db;
-
- if (info->file_id == 0 &&
- info->action != TRACKER_ACTION_CREATE &&
- info->action != TRACKER_ACTION_DIRECTORY_CREATED &&
- info->action != TRACKER_ACTION_FILE_CREATED) {
- info = tracker_db_get_file_info (db_con, info);
-
- /* Get more file info if db retrieval returned nothing */
- if (info->file_id == 0) {
- info = tracker_get_file_info (info);
- info->is_new = TRUE;
- } else {
- info->is_new = FALSE;
- }
- } else {
- info->is_new = TRUE;
- }
-
- tracker_debug ("Processing %s with action %s and counter %d ",
- info->uri,
- tracker_actions[info->action],
- info->counter);
-
- /* Preprocess ambiguous actions when we need to work
- * out if its a file or a directory that the action
- * relates to.
- */
- process_action_verify (info);
-
- if (info->action != TRACKER_ACTION_DELETE &&
- info->action != TRACKER_ACTION_DIRECTORY_DELETED &&
- info->action != TRACKER_ACTION_DIRECTORY_UNMOUNTED &&
- info->action != TRACKER_ACTION_FILE_DELETED) {
- if (!tracker_file_is_valid (info->uri) ) {
- gboolean invalid = TRUE;
-
- if (info->moved_to_uri) {
- invalid = !tracker_file_is_valid (info->moved_to_uri);
- }
-
- if (invalid) {
- tracker_free_file_info (info);
- return TRUE;
- }
- }
-
- /* Get file ID and other interesting fields
- * from Database if not previously fetched or
- * is newly created.
- */
- } else {
- if (info->action == TRACKER_ACTION_FILE_DELETED) {
- process_index_delete_file (tracker, info);
- info = tracker_dec_info_ref (info);
- return TRUE;
- } else {
- if (info->action == TRACKER_ACTION_DIRECTORY_DELETED ||
- info->action == TRACKER_ACTION_DIRECTORY_UNMOUNTED) {
- process_index_delete_file (tracker, info);
- process_index_delete_directory (tracker, info);
- info = tracker_dec_info_ref (info);
- return TRUE;
- }
- }
- }
-
- /* Get latest file info from disk */
- if (info->mtime == 0) {
- info = tracker_get_file_info (info);
- }
-
- return FALSE;
-}
-
-static void
-process_block_signals (void)
-{
- sigset_t signal_set;
-
- /* Block all signals in this thread */
- sigfillset (&signal_set);
-
-#ifndef OS_WIN32
- pthread_sigmask (SIG_BLOCK, &signal_set, NULL);
-#endif
-}
-
-#ifdef HAVE_HAL
-
-static void
-process_mount_point_added_cb (TrackerHal *hal,
- const gchar *mount_point,
- Tracker *tracker)
-{
- GSList *list;
-
- tracker_log ("** TRAWLING THROUGH NEW MOUNT POINT '%s'", mount_point);
-
- list = g_slist_prepend (NULL, (gchar*) mount_point);
- process_directory_list (tracker, list, TRUE);
- g_slist_free (list);
-}
-
-static void
-process_mount_point_removed_cb (TrackerHal *hal,
- const gchar *mount_point,
- Tracker *tracker)
-{
- tracker_log ("** CLEANING UP OLD MOUNT POINT '%s'", mount_point);
-
- process_index_delete_directory_check (tracker, mount_point);
-}
-
-#endif /* HAVE_HAL */
-
-static inline gboolean
-process_is_in_path (const gchar *uri,
- const gchar *path)
-{
- gchar *str;
- gboolean result;
-
- str = g_strconcat (path, G_DIR_SEPARATOR_S, NULL);
- result = g_str_has_prefix (uri, str);
- g_free (str);
-
- return result;
-}
-
-/* This is the thread entry point for the indexer to start processing
- * files and all other categories for processing.
- */
-gpointer
-tracker_process_files (gpointer data)
-{
- Tracker *tracker;
- DBConnection *db_con;
- GSList *moved_from_list; /* List to hold moved_from
- * events whilst waiting for a
- * matching moved_to event.
- */
- gboolean pushed_events;
- gboolean first_run;
-
- tracker = (Tracker*) data;
-
- process_block_signals ();
-
- /* When initially run, we set up variables */
- if (!ignore_pattern_list) {
- GSList *no_index_file_types;
-
- no_index_file_types = tracker_config_get_no_index_file_types (tracker->config);
-
- if (no_index_file_types) {
- GPatternSpec *spec;
- gchar **p;
-
- ignore_pattern = tracker_gslist_to_string_list (no_index_file_types);
-
- for (p = ignore_pattern; *p; p++) {
- spec = g_pattern_spec_new (*p);
- ignore_pattern_list = g_slist_prepend (ignore_pattern_list, spec);
- }
-
- ignore_pattern_list = g_slist_reverse (ignore_pattern_list);
- }
- }
-
-
-#ifdef HAVE_HAL
-
- g_signal_connect (tracker->hal, "mount-point-added",
- G_CALLBACK (process_mount_point_added_cb),
- tracker);
- g_signal_connect (tracker->hal, "mount-point-removed",
- G_CALLBACK (process_mount_point_removed_cb),
- tracker);
-
-#endif
-
- /* Start processing */
- g_mutex_lock (tracker->files_signal_mutex);
- g_mutex_lock (tracker->files_stopped_mutex);
-
- /* Set thread safe DB connection */
- tracker_db_thread_init ();
-
- tracker->index_db = tracker_db_connect_all (TRUE);
- tracker->index_status = INDEX_CONFIG;
-
- pushed_events = FALSE;
- first_run = TRUE;
- moved_from_list = NULL;
-
- tracker_log ("Starting indexing...");
-
- tracker->index_time_start = time (NULL);
-
- while (TRUE) {
- FileInfo *info;
- gboolean need_index;
-
- db_con = tracker->index_db;
-
- if (!tracker_cache_process_events (tracker->index_db, TRUE) ) {
- tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE);
- break;
- }
-
- tracker_set_status (tracker, STATUS_INDEXING, 0, TRUE);
-
- info = g_async_queue_try_pop (tracker->file_process_queue);
-
- /* Check pending table if we haven't got anything */
- if (!info) {
- TrackerDBResultSet *result_set;
- gint k;
-
- if (!tracker_db_has_pending_files (tracker->index_db)) {
- gboolean should_continue;
-
- /* Set mutex to indicate we are in "check" state */
- g_mutex_lock (tracker->files_check_mutex);
- should_continue = process_files (tracker);
- g_mutex_unlock (tracker->files_check_mutex);
-
- if (should_continue) {
- continue;
- }
-
- if (tracker->shutdown) {
- break;
- }
- }
-
- result_set = tracker_db_get_pending_files (tracker->index_db);
-
- k = 0;
- pushed_events = FALSE;
-
- if (result_set) {
- gboolean is_valid = TRUE;
-
- tracker_set_status (tracker, STATUS_PENDING, 0, FALSE);
-
- while (is_valid) {
- FileInfo *info_tmp;
- TrackerChangeAction tmp_action;
- gchar *uri;
-
- if (!tracker->is_running) {
- g_object_unref (result_set);
- break;
- }
-
- tracker_db_result_set_get (result_set,
- 1, &uri,
- 2, &tmp_action,
- -1);
-
- info_tmp = tracker_create_file_info (uri, tmp_action, 0, WATCH_OTHER);
- g_async_queue_push (tracker->file_process_queue, info_tmp);
- is_valid = tracker_db_result_set_iter_next (result_set);
- pushed_events = TRUE;
-
- g_free (uri);
- }
-
- g_object_unref (result_set);
- }
-
- if (!tracker->is_running) {
- continue;
- }
-
- tracker_db_remove_pending_files (tracker->index_db);
-
- /* Pending files are present but not yet ready
- * as we are waiting til they stabilize so we
- * should sleep for 100ms (only occurs when
- * using FAM or inotify move/create).
- */
- if (!pushed_events) {
- g_usleep (100000);
- }
-
- continue;
- }
-
- tracker_set_status (tracker, STATUS_INDEXING, 0, TRUE);
-
- if (process_action_prechecks (tracker, info)) {
- continue;
- }
-
- /* Check if file needs indexing */
- need_index = process_action (tracker, info);
-
- if (need_index) {
- if (tracker_db_regulate_transactions (tracker->index_db, 250)) {
- if (tracker_config_get_verbosity (tracker->config) == 1) {
- tracker_log ("indexing #%d - %s", tracker->index_count, info->uri);
- }
-
- tracker_dbus_send_index_progress_signal ("Files", info->uri);
- }
-
- process_index_entity (tracker, info);
- tracker->index_db = tracker->index_db;
- }
-
- tracker_dec_info_ref (info);
- }
-
-
-#ifdef HAVE_HAL
-
- g_signal_handlers_disconnect_by_func (tracker->hal,
- process_mount_point_added_cb,
- tracker);
- g_signal_handlers_disconnect_by_func (tracker->hal,
- process_mount_point_removed_cb,
- tracker);
-#endif
-
- xdg_mime_shutdown ();
-
- tracker_db_close_all (tracker->index_db);
-
- g_mutex_unlock (tracker->files_stopped_mutex);
-
- return NULL;
-}
-
-gboolean
-tracker_process_files_should_be_watched (TrackerConfig *config,
- const gchar *uri)
-{
- GSList *no_watch_directory_roots;
- GSList *l;
-
- g_return_val_if_fail (TRACKER_IS_CONFIG (config), FALSE);
- g_return_val_if_fail (uri != NULL, FALSE);
-
- if (!tracker_check_uri (uri)) {
- return FALSE;
- }
-
- if (process_is_in_path (uri, g_get_tmp_dir ())) {
- return FALSE;
- }
-
- if (process_is_in_path (uri, "/proc")) {
- return FALSE;
- }
-
- if (process_is_in_path (uri, "/dev")) {
- return FALSE;
- }
-
- if (process_is_in_path (uri, "/tmp")) {
- return FALSE;
- }
-
- no_watch_directory_roots = tracker_config_get_no_watch_directory_roots (config);
-
- for (l = no_watch_directory_roots; l; l = l->next) {
- if (!l->data) {
- continue;
- }
-
- /* Check if equal or a prefix with an appended '/' */
- if (strcmp (uri, l->data) == 0) {
- tracker_log ("Blocking watch of %s (already being watched)", uri);
- return FALSE;
- }
-
- if (process_is_in_path (uri, l->data)) {
- tracker_log ("Blocking watch of %s (already a watch in parent path)", uri);
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-gboolean
-tracker_process_files_should_be_crawled (Tracker *tracker,
- const gchar *uri)
-{
- GSList *crawl_directory_roots;
- GSList *mounted_directory_roots = NULL;
- GSList *removable_device_roots = NULL;
- GSList *l;
- gboolean index_mounted_directories;
- gboolean index_removable_devices;
- gboolean should_be_crawled = TRUE;
-
- g_return_val_if_fail (tracker != NULL, FALSE);
- g_return_val_if_fail (uri != NULL, FALSE);
- g_return_val_if_fail (uri[0] == G_DIR_SEPARATOR, FALSE);
-
- index_mounted_directories = tracker_config_get_index_mounted_directories (tracker->config);
- index_removable_devices = tracker_config_get_index_removable_devices (tracker->config);
-
- if (!index_mounted_directories || !index_removable_devices) {
- process_index_get_remote_roots (tracker,
- &mounted_directory_roots,
- &removable_device_roots);
- }
-
- l = tracker_config_get_crawl_directory_roots (tracker->config);
-
- crawl_directory_roots = g_slist_copy (l);
-
- if (!index_mounted_directories) {
- crawl_directory_roots = g_slist_concat (crawl_directory_roots,
- mounted_directory_roots);
- }
-
- if (!index_removable_devices) {
- crawl_directory_roots = g_slist_concat (crawl_directory_roots,
- removable_device_roots);
- }
-
- for (l = crawl_directory_roots; l && should_be_crawled; l = l->next) {
- /* Check if equal or a prefix with an appended '/' */
- if (strcmp (uri, l->data) == 0) {
- should_be_crawled = FALSE;
- }
-
- if (process_is_in_path (uri, l->data)) {
- should_be_crawled = FALSE;
- }
- }
-
- g_slist_free (crawl_directory_roots);
-
- tracker_log ("Indexer %s %s",
- should_be_crawled ? "crawling" : "blocking",
- uri);
-
- return should_be_crawled;
-}
-
-gboolean
-tracker_process_files_should_be_ignored (const char *uri)
-{
- GSList *l;
- gchar *name = NULL;
- const gchar **p;
- gboolean should_be_ignored = TRUE;
-
- if (tracker_is_empty_string (uri)) {
- goto done;
- }
-
- name = g_path_get_basename (uri);
-
- if (!name || name[0] == '.') {
- goto done;
- }
-
- if (process_is_in_path (uri, g_get_tmp_dir ())) {
- goto done;
- }
-
- if (process_is_in_path (uri, "/proc")) {
- goto done;
- }
-
- if (process_is_in_path (uri, "/dev")) {
- goto done;
- }
-
- if (process_is_in_path (uri, "/tmp")) {
- goto done;
- }
-
- /* Test suffixes */
- for (p = ignore_suffix; *p; p++) {
- if (g_str_has_suffix (name, *p)) {
- goto done;
- }
- }
-
- /* Test prefixes */
- for (p = ignore_prefix; *p; p++) {
- if (g_str_has_prefix (name, *p)) {
- goto done;
- }
- }
-
- /* Test exact names */
- for (p = ignore_name; *p; p++) {
- if (strcmp (name, *p) == 0) {
- goto done;
- }
- }
-
- /* Test ignore types */
- if (ignore_pattern_list) {
- for (l = ignore_pattern_list; l; l = l->next) {
- if (g_pattern_match_string (l->data, name)) {
- goto done;
- }
- }
- }
-
- /* Test tmp black list */
- for (l = temp_black_list; l; l = l->next) {
- if (!l->data) {
- continue;
- }
-
- if (strcmp (uri, l->data) == 0) {
- goto done;
- }
- }
-
- should_be_ignored = FALSE;
-
-done:
- g_free (name);
-
- return should_be_ignored;
-}
-
-GSList *
-tracker_process_files_get_temp_black_list (void)
-{
- GSList *l;
-
- l = g_slist_copy (temp_black_list);
-
- return temp_black_list;
-}
-
-void
-tracker_process_files_set_temp_black_list (GSList *black_list)
-{
- tracker_process_files_free_temp_black_list ();
- temp_black_list = black_list;
-}
-
-void
-tracker_process_files_free_temp_black_list (void)
-{
- g_slist_foreach (temp_black_list,
- (GFunc) g_free,
- NULL);
-
- g_slist_free (temp_black_list);
-
- temp_black_list = NULL;
-}
-
-void
-tracker_process_files_append_temp_black_list (const gchar *str)
-{
- g_return_if_fail (str != NULL);
-
- temp_black_list = g_slist_append (temp_black_list, g_strdup (str));
-}
-
-void
-tracker_process_files_get_all_dirs (Tracker *tracker,
- const char *dir,
- GSList **files)
-{
- GSList *l;
-
- l = process_get_files (tracker, dir, TRUE, FALSE, NULL);
-
- if (*files) {
- *files = g_slist_concat (*files, l);
- } else {
- *files = l;
- }
-}
-
-GSList *
-tracker_process_files_get_files_with_prefix (Tracker *tracker,
- const char *dir,
- const char *prefix)
-{
- return process_get_files (tracker, dir, FALSE, FALSE, prefix);
-}
-
-gboolean
-tracker_process_files_is_file_info_valid (FileInfo *info)
-{
- g_return_val_if_fail (info != NULL, FALSE);
- g_return_val_if_fail (info->uri != NULL, FALSE);
-
- if (!g_utf8_validate (info->uri, -1, NULL)) {
- tracker_log ("Expected UTF-8 validation of FileInfo URI");
- return FALSE;
- }
-
- if (info->action == TRACKER_ACTION_IGNORE) {
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/src/trackerd/tracker-process-files.h b/src/trackerd/tracker-process-files.h
deleted file mode 100644
index 601a449fb..000000000
--- a/src/trackerd/tracker-process-files.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2008, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_PROCESS_FILES_H__
-#define __TRACKER_PROCESS_FILES_H__
-
-#include <libtracker-common/tracker-config.h>
-
-#include "tracker-utils.h"
-
-/* Thread entry point */
-gpointer tracker_process_files (gpointer data);
-
-gboolean tracker_process_files_should_be_watched (TrackerConfig *config,
- const gchar *uri);
-gboolean tracker_process_files_should_be_crawled (Tracker *tracker,
- const gchar *uri);
-gboolean tracker_process_files_should_be_ignored (const char *uri);
-
-/* Black list API */
-GSList *tracker_process_files_get_temp_black_list (void);
-void tracker_process_files_set_temp_black_list (GSList *black_list);
-void tracker_process_files_free_temp_black_list (void);
-void tracker_process_files_append_temp_black_list (const gchar *str);
-
-/* File/Directory API */
-void tracker_process_files_get_all_dirs (Tracker *tracker,
- const char *dir,
- GSList **files);
-GSList * tracker_process_files_get_files_with_prefix (Tracker *tracker,
- const char *dir,
- const char *prefix);
-gboolean tracker_process_files_is_file_info_valid (FileInfo *info);
-
-#endif /* __TRACKER_PROCESS_FILES_H__ */
diff --git a/src/trackerd/tracker-process-requests.c b/src/trackerd/tracker-process-requests.c
deleted file mode 100644
index 60d86a0e2..000000000
--- a/src/trackerd/tracker-process-requests.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2008, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <signal.h>
-
-#ifdef OS_WIN32
-#include <windows.h>
-#include <pthread.h>
-#include "mingw-compat.h"
-#endif
-
-#include <glib.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-db.h"
-#include "tracker-dbus.h"
-#include "tracker-dbus-files.h"
-#include "tracker-dbus-keywords.h"
-#include "tracker-dbus-methods.h"
-#include "tracker-dbus-metadata.h"
-#include "tracker-dbus-search.h"
-#include "tracker-utils.h"
-
-static void
-process_block_signals (void)
-{
- sigset_t signal_set;
-
- /* Block all signals in this thread */
- sigfillset (&signal_set);
-
-#ifndef OS_WIN32
- pthread_sigmask (SIG_BLOCK, &signal_set, NULL);
-#endif
-}
-
-/* This is the thread entry function for handing DBus requests by the
- * daemon to any clients connected.
- */
-gpointer
-tracker_process_requests (gpointer data)
-{
- Tracker *tracker;
- DBConnection *db_con;
-
- tracker = (Tracker*) data;
-
- process_block_signals ();
-
- g_mutex_lock (tracker->request_signal_mutex);
- g_mutex_lock (tracker->request_stopped_mutex);
-
- /* Set thread safe DB connection */
- tracker_db_thread_init ();
-
- db_con = tracker_db_connect_all (FALSE);
-
- tracker_db_prepare_queries (db_con);
-
- while (TRUE) {
- DBusRec *rec;
- DBusMessage *reply;
- gboolean result;
-
- /* Make thread sleep if first part of the shutdown
- * process has been activated.
- */
- if (!tracker->is_running) {
- g_cond_wait (tracker->request_thread_signal,
- tracker->request_signal_mutex);
-
- /* Determine if wake up call is new stuff or a
- * shutdown signal.
- */
- if (!tracker->shutdown) {
- continue;
- } else {
- break;
- }
- }
-
- /* Lock check mutex to prevent race condition when a
- * request is submitted after popping queue but prior
- * to sleeping.
- */
- g_mutex_lock (tracker->request_check_mutex);
- rec = g_async_queue_try_pop (tracker->user_request_queue);
-
- if (!rec) {
- g_cond_wait (tracker->request_thread_signal,
- tracker->request_signal_mutex);
- g_mutex_unlock (tracker->request_check_mutex);
-
- /* Determine if wake up call is new stuff or a
- * shutdown signal.
- */
- if (!tracker->shutdown) {
- continue;
- } else {
- break;
- }
- }
-
- /* Thread will not sleep without another iteration so
- * race condition no longer applies.
- */
- g_mutex_unlock (tracker->request_check_mutex);
-
- rec->user_data = db_con;
-
- switch (rec->action) {
- case DBUS_ACTION_PING:
- result = TRUE;
-
- reply = dbus_message_new_method_return (rec->message);
- dbus_message_append_args (reply,
- DBUS_TYPE_BOOLEAN, &result,
- DBUS_TYPE_INVALID);
-
- dbus_connection_send (rec->connection, reply, NULL);
- dbus_message_unref (reply);
- break;
-
- case DBUS_ACTION_GET_STATS:
- tracker_dbus_method_get_stats (rec);
- break;
-
- case DBUS_ACTION_GET_SERVICES:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_get_services (rec);
- break;
-
- case DBUS_ACTION_GET_VERSION:
- tracker_dbus_method_get_version (rec);
- break;
-
- case DBUS_ACTION_GET_STATUS:
- tracker_dbus_method_get_status (rec);
- break;
-
- case DBUS_ACTION_SET_BOOL_OPTION:
- tracker_dbus_method_set_bool_option (rec);
- break;
-
- case DBUS_ACTION_SET_INT_OPTION:
- tracker_dbus_method_set_int_option (rec);
- break;
-
- case DBUS_ACTION_SHUTDOWN:
- tracker_dbus_method_shutdown (rec);
- break;
-
- case DBUS_ACTION_PROMPT_INDEX_SIGNALS:
- tracker_dbus_method_prompt_index_signals (rec);
- break;
-
- case DBUS_ACTION_METADATA_GET:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_metadata_get (rec);
- break;
-
- case DBUS_ACTION_METADATA_SET:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_metadata_set(rec);
- break;
-
- case DBUS_ACTION_METADATA_REGISTER_TYPE:
- tracker_dbus_method_metadata_register_type (rec);
- break;
-
- case DBUS_ACTION_METADATA_GET_TYPE_DETAILS:
- tracker_dbus_method_metadata_get_type_details (rec);
- break;
-
- case DBUS_ACTION_METADATA_GET_REGISTERED_TYPES:
- tracker_dbus_method_metadata_get_registered_types (rec);
- break;
-
- case DBUS_ACTION_METADATA_GET_WRITEABLE_TYPES:
- tracker_dbus_method_metadata_get_writeable_types (rec);
- break;
-
- case DBUS_ACTION_METADATA_GET_REGISTERED_CLASSES:
- tracker_dbus_method_metadata_get_registered_classes (rec);
- break;
-
- case DBUS_ACTION_METADATA_GET_UNIQUE_VALUES:
- tracker_dbus_method_metadata_get_unique_values (rec);
- break;
-
- case DBUS_ACTION_KEYWORDS_GET_LIST:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_keywords_get_list (rec);
- break;
-
- case DBUS_ACTION_KEYWORDS_GET:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_keywords_get (rec);
- break;
-
- case DBUS_ACTION_KEYWORDS_ADD:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_keywords_add (rec);
- break;
-
- case DBUS_ACTION_KEYWORDS_REMOVE:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_keywords_remove (rec);
- break;
-
- case DBUS_ACTION_KEYWORDS_REMOVE_ALL:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_keywords_remove_all (rec);
- break;
-
- case DBUS_ACTION_KEYWORDS_SEARCH:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_keywords_search (rec);
- break;
-
- case DBUS_ACTION_SEARCH_GET_HIT_COUNT:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_get_hit_count (rec);
- break;
-
- case DBUS_ACTION_SEARCH_GET_HIT_COUNT_ALL:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_get_hit_count_all (rec);
- break;
-
- case DBUS_ACTION_SEARCH_TEXT:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_text (rec);
- break;
-
- case DBUS_ACTION_SEARCH_TEXT_DETAILED:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_text_detailed (rec);
- break;
-
- case DBUS_ACTION_SEARCH_GET_SNIPPET:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_get_snippet (rec);
- break;
-
- case DBUS_ACTION_SEARCH_FILES_BY_TEXT:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_files_by_text (rec);
- break;
-
- case DBUS_ACTION_SEARCH_METADATA:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_metadata (rec);
- break;
-
- case DBUS_ACTION_SEARCH_MATCHING_FIELDS:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_matching_fields (rec);
- break;
-
- case DBUS_ACTION_SEARCH_QUERY:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_query (rec);
- break;
-
- case DBUS_ACTION_SEARCH_SUGGEST:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_search_suggest (rec);
- break;
-
- case DBUS_ACTION_FILES_EXISTS:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_exists (rec);
- break;
-
- case DBUS_ACTION_FILES_CREATE:
- tracker_dbus_method_files_create (rec);
- break;
-
- case DBUS_ACTION_FILES_DELETE:
- tracker_dbus_method_files_delete (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_SERVICE_TYPE:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_service_type (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_TEXT_CONTENTS:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_text_contents (rec);
- break;
-
- case DBUS_ACTION_FILES_SEARCH_TEXT_CONTENTS:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_search_text_contents (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_BY_SERVICE_TYPE:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_by_service_type (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_BY_MIME_TYPE:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_by_mime_type (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_BY_MIME_TYPE_VFS:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_by_mime_type_vfs (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_MTIME:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_mtime (rec);
- break;
-
- case DBUS_ACTION_FILES_GET_METADATA_FOLDER_FILES:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_get_metadata_for_files_in_folder (rec);
- break;
-
- case DBUS_ACTION_FILES_SEARCH_BY_TEXT_MIME:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_search_by_text_mime (rec);
- break;
-
- case DBUS_ACTION_FILES_SEARCH_BY_TEXT_MIME_LOCATION:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_search_by_text_mime_location(rec);
- break;
-
- case DBUS_ACTION_FILES_SEARCH_BY_TEXT_LOCATION:
- tracker->request_waiting = TRUE;
- tracker->grace_period = 2;
- tracker_dbus_method_files_search_by_text_location (rec);
- break;
-
- default:
- break;
- }
-
- dbus_message_unref (rec->message);
- g_free (rec);
- }
-
- tracker_db_close_all (db_con);
-
- tracker_debug ("Request thread has exited successfully");
-
- /* Ulock mutex so we know thread has exited */
- g_mutex_unlock (tracker->request_check_mutex);
- g_mutex_unlock (tracker->request_stopped_mutex);
-
- return NULL;
-}
diff --git a/src/trackerd/tracker-process-requests.h b/src/trackerd/tracker-process-requests.h
deleted file mode 100644
index 2e28c19d4..000000000
--- a/src/trackerd/tracker-process-requests.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2008, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_PROCESS_REQUESTS_H__
-#define __TRACKER_PROCESS_REQUESTS_H__
-
-gpointer tracker_process_requests (gpointer data);
-
-#endif /* __TRACKER_PROCESS_REQUESTS_H__ */
diff --git a/src/trackerd/tracker-query-tree.c b/src/trackerd/tracker-query-tree.c
deleted file mode 100644
index 898a9a7c5..000000000
--- a/src/trackerd/tracker-query-tree.c
+++ /dev/null
@@ -1,810 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007-2008 Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <glib-object.h>
-#include <string.h>
-#include <math.h>
-#include <depot.h>
-#include "tracker-query-tree.h"
-#include "tracker-parser.h"
-#include "tracker-utils.h"
-#include "tracker-service-manager.h"
-
-#define TRACKER_QUERY_TREE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_QUERY_TREE, TrackerQueryTreePrivate))
-#define MAX_HIT_BUFFER 480000
-#define SCORE_MULTIPLIER 100000
-
-typedef enum OperationType OperationType;
-typedef enum TreeNodeType TreeNodeType;
-typedef struct TreeNode TreeNode;
-typedef struct TrackerQueryTreePrivate TrackerQueryTreePrivate;
-typedef struct ComposeHitsData ComposeHitsData;
-typedef struct SearchHitData SearchHitData;
-
-enum OperationType {
- OP_NONE,
- OP_AND,
- OP_OR
-};
-
-struct TreeNode {
- TreeNode *left;
- TreeNode *right;
- OperationType op;
- gchar *term;
-};
-
-struct TrackerQueryTreePrivate {
- gchar *query_str;
- TreeNode *tree;
- Indexer *indexer;
- GArray *services;
-};
-
-struct ComposeHitsData {
- OperationType op;
- GHashTable *other_table;
- GHashTable *dest_table;
-};
-
-struct SearchHitData {
- guint32 service_type_id;
- guint32 score;
-};
-
-enum {
- PROP_0,
- PROP_QUERY,
- PROP_INDEXER,
- PROP_SERVICES
-};
-
-static void tracker_query_tree_class_init (TrackerQueryTreeClass *class);
-static void tracker_query_tree_init (TrackerQueryTree *tree);
-static void tracker_query_tree_finalize (GObject *object);
-
-static void tracker_query_tree_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void tracker_query_tree_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-
-G_DEFINE_TYPE (TrackerQueryTree, tracker_query_tree, G_TYPE_OBJECT)
-
-static void
-tracker_query_tree_class_init (TrackerQueryTreeClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = tracker_query_tree_finalize;
- object_class->set_property = tracker_query_tree_set_property;
- object_class->get_property = tracker_query_tree_get_property;
-
- g_object_class_install_property (object_class,
- PROP_QUERY,
- g_param_spec_string ("query",
- "Query",
- "Query",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_INDEXER,
- g_param_spec_pointer ("indexer",
- "Indexer",
- "Indexer",
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_SERVICES,
- g_param_spec_pointer ("services",
- "Services",
- "GArray of services",
- G_PARAM_READWRITE));
- g_type_class_add_private (object_class,
- sizeof (TrackerQueryTreePrivate));
-}
-
-static void
-tracker_query_tree_init (TrackerQueryTree *tree)
-{
-}
-
-static TreeNode *
-tree_node_leaf_new (const gchar *term)
-{
- TreeNode *node;
-
- node = g_slice_new0 (TreeNode);
- node->term = g_strdup (term);
- node->op = OP_NONE;
-
- return node;
-}
-
-static TreeNode *
-tree_node_operator_new (OperationType op)
-{
- TreeNode *node;
-
- node = g_slice_new0 (TreeNode);
- node->op = op;
-
- return node;
-}
-
-static void
-tree_node_free (TreeNode *node)
-{
- if (!node)
- return;
-
- /* Free string if any */
- g_free (node->term);
-
- /* free subnodes */
- tree_node_free (node->left);
- tree_node_free (node->right);
-
- g_slice_free (TreeNode, node);
-}
-
-static void
-tracker_query_tree_finalize (GObject *object)
-{
- TrackerQueryTreePrivate *priv;
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (object);
-
- tree_node_free (priv->tree);
- g_free (priv->query_str);
-
- G_OBJECT_CLASS (tracker_query_tree_parent_class)->finalize (object);
-}
-
-static void
-tracker_query_tree_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (prop_id) {
- case PROP_QUERY:
- tracker_query_tree_set_query (TRACKER_QUERY_TREE (object),
- g_value_get_string (value));
- break;
- case PROP_INDEXER:
- tracker_query_tree_set_indexer (TRACKER_QUERY_TREE (object),
- g_value_get_pointer (value));
- break;
- case PROP_SERVICES:
- tracker_query_tree_set_services (TRACKER_QUERY_TREE (object),
- g_value_get_pointer (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
-tracker_query_tree_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TrackerQueryTreePrivate *priv;
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_QUERY:
- g_value_set_string (value, priv->query_str);
- break;
- case PROP_INDEXER:
- g_value_set_pointer (value, priv->indexer);
- break;
- case PROP_SERVICES:
- g_value_set_pointer (value, priv->services);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-TrackerQueryTree *
-tracker_query_tree_new (const gchar *query_str,
- Indexer *indexer,
- GArray *services)
-{
- g_return_val_if_fail (query_str != NULL, NULL);
- g_return_val_if_fail (indexer != NULL, NULL);
-
- return g_object_new (TRACKER_TYPE_QUERY_TREE,
- "query", query_str,
- "indexer", indexer,
- "services", services,
- NULL);
-}
-
-# if 0
-static void
-print_tree (TreeNode *node)
-{
- if (!node) {
- g_print ("NULL ");
- return;
- }
-
- switch (node->op) {
- case OP_AND:
- g_print ("AND ");
- print_tree (node->left);
- print_tree (node->right);
- break;
- case OP_OR:
- g_print ("OR ");
- print_tree (node->left);
- print_tree (node->right);
- break;
- default:
- g_print ("%s ", node->term);
- }
-}
-#endif
-
-static void
-create_query_tree (TrackerQueryTree *tree)
-{
- TrackerQueryTreePrivate *priv;
- TreeNode *node, *stack_node;
- GQueue *queue, *stack;
- gboolean last_element_is_term = FALSE;
- gchar *parsed_str, **strings;
- gint i;
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
-
- strings = g_strsplit (priv->query_str, " ", -1);
- queue = g_queue_new ();
- stack = g_queue_new ();
-
- /* Create a parse tree that recognizes queries such as:
- * "foo"
- * "foo and bar"
- * "foo or bar"
- * "foo and bar or baz"
- * "foo or bar and baz"
- *
- * The operator "and" will have higher priority than the operator "or",
- * and will also be assumed to exist if there is no operator between two
- * search terms.
- */
-
- /* Step 1. Create polish notation for the search term, the
- * stack will be used to store operators temporarily
- */
- for (i = 0; strings[i]; i++) {
- OperationType op;
-
- if (!strings[i] || !*strings[i])
- continue;
-
- /* get operator type */
- if (strcmp (strings[i], "and") == 0) {
- op = OP_AND;
- } else if (strcmp (strings [i], "or") == 0) {
- op = OP_OR;
- } else {
- if (last_element_is_term) {
- /* last element was a search term, assume the "and"
- * operator between these two elements, and wait
- * for actually parsing the second term */
- op = OP_AND;
- i--;
- } else {
- op = OP_NONE;
- }
- }
-
- /* create node for the operation type */
- switch (op) {
- case OP_AND:
- node = tree_node_operator_new (OP_AND);
- stack_node = g_queue_peek_head (stack);
-
- /* push in the queue operators with fewer priority, "or" in this case */
- while (stack_node && stack_node->op == OP_OR) {
- stack_node = g_queue_pop_head (stack);
- g_queue_push_head (queue, stack_node);
-
- stack_node = g_queue_peek_head (stack);
- }
-
- g_queue_push_head (stack, node);
- last_element_is_term = FALSE;
- break;
- case OP_OR:
- node = tree_node_operator_new (OP_OR);
- g_queue_push_head (stack, node);
- last_element_is_term = FALSE;
- break;
- default:
- /* search term */
- parsed_str = tracker_parse_text_to_string (strings[i], TRUE, FALSE, FALSE);
- node = tree_node_leaf_new (g_strstrip (parsed_str));
- g_queue_push_head (queue, node);
- last_element_is_term = TRUE;
-
- g_free (parsed_str);
- }
- }
-
- /* we've finished parsing, queue all remaining operators in the stack */
- while ((stack_node = g_queue_pop_head (stack)) != NULL) {
- g_queue_push_head (queue, stack_node);
- }
-
- /* step 2: run through the reverse polish notation and connect nodes to
- * create a tree, the stack will be used to store temporarily nodes
- * until they're connected to a parent node */
- while ((node = g_queue_pop_tail (queue)) != NULL) {
- switch (node->op) {
- case OP_AND:
- case OP_OR:
- node->left = g_queue_pop_head (stack);
- node->right = g_queue_pop_head (stack);
- g_queue_push_head (stack, node);
- break;
- default:
- g_queue_push_head (stack, node);
- break;
- }
-
- priv->tree = node;
- }
-
- g_strfreev (strings);
- g_queue_free (stack);
- g_queue_free (queue);
-}
-
-void
-tracker_query_tree_set_query (TrackerQueryTree *tree,
- const gchar *query_str)
-{
- TrackerQueryTreePrivate *priv;
- gchar *str;
-
- g_return_if_fail (TRACKER_IS_QUERY_TREE (tree));
- g_return_if_fail (query_str != NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
-
- str = g_strdup (query_str);
- g_free (priv->query_str);
- priv->query_str = str;
-
- /* construct the parse tree */
- create_query_tree (tree);
-
- g_object_notify (G_OBJECT (tree), "query");
-}
-
-G_CONST_RETURN gchar *
-tracker_query_tree_get_query (TrackerQueryTree *tree)
-{
- TrackerQueryTreePrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- return priv->query_str;
-}
-
-void
-tracker_query_tree_set_indexer (TrackerQueryTree *tree,
- Indexer *indexer)
-{
- TrackerQueryTreePrivate *priv;
-
- g_return_if_fail (TRACKER_IS_QUERY_TREE (tree));
- g_return_if_fail (indexer != NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- priv->indexer = indexer;
-
- g_object_notify (G_OBJECT (tree), "indexer");
-}
-
-Indexer *
-tracker_query_tree_get_indexer (TrackerQueryTree *tree)
-{
- TrackerQueryTreePrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- return priv->indexer;
-}
-
-void
-tracker_query_tree_set_services (TrackerQueryTree *tree,
- GArray *services)
-{
- TrackerQueryTreePrivate *priv;
- GArray *copy = NULL;
-
- g_return_if_fail (TRACKER_IS_QUERY_TREE (tree));
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
-
- if (priv->services != services) {
- if (services) {
- copy = g_array_new (TRUE, TRUE, sizeof (gint));
- g_array_append_vals (copy, services->data, services->len);
- }
-
- if (priv->services)
- g_array_free (priv->services, TRUE);
-
- priv->services = copy;
- g_object_notify (G_OBJECT (tree), "services");
- }
-}
-
-GArray *
-tracker_query_tree_get_services (TrackerQueryTree *tree)
-{
- TrackerQueryTreePrivate *priv;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- return priv->services;
-}
-
-static void
-get_tree_words (TreeNode *node, GSList **list)
-{
- if (!node)
- return;
-
- if (node->op == OP_NONE)
- *list = g_slist_prepend (*list, node->term);
- else {
- get_tree_words (node->left, list);
- get_tree_words (node->right, list);
- }
-}
-
-GSList *
-tracker_query_tree_get_words (TrackerQueryTree *tree)
-{
- TrackerQueryTreePrivate *priv;
- GSList *list = NULL;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- get_tree_words (priv->tree, &list);
-
- return list;
-}
-
-static gint
-get_idf_score (WordDetails *details, float idf)
-{
- guint32 score = tracker_word_details_get_score (details);
- float f = idf * score * SCORE_MULTIPLIER;
-
- return (f > 1.0) ? lrintf (f) : 1;
-}
-
-static gboolean
-in_array (GArray *array, gint element)
-{
- guint i;
-
- if (!array)
- return TRUE;
-
- for (i = 0; i < array->len; i++) {
- if (g_array_index (array, gint, i) == element)
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-search_hit_data_free (SearchHitData *search_hit)
-{
- g_slice_free (SearchHitData, search_hit);
-}
-
-static GHashTable *
-get_search_term_hits (TrackerQueryTree *tree,
- const gchar *term)
-{
- TrackerQueryTreePrivate *priv;
- GHashTable *result;
- WordDetails *details;
- guint count, i;
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- result = g_hash_table_new_full (NULL, NULL, NULL,
- (GDestroyNotify) search_hit_data_free);
-
- details = tracker_indexer_get_word_hits (priv->indexer, term, &count);
-
- if (!details)
- return result;
-
- for (i = 0; i < count; i++) {
- SearchHitData *data;
- gint service;
-
- service = tracker_word_details_get_service_type (&details[i]);
-
- if (in_array (priv->services, service)) {
- data = g_slice_new (SearchHitData);
- data->service_type_id = service;
- data->score = get_idf_score (&details[i], (float) 1 / count);
-
- g_hash_table_insert (result, GINT_TO_POINTER (details[i].id), data);
- }
- }
-
- g_free (details);
-
- return result;
-}
-
-static void
-compose_hits_foreach (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- SearchHitData *hit1, *hit2, *hit;
- ComposeHitsData *data;
-
- data = (ComposeHitsData *) user_data;
- hit1 = (SearchHitData *) value;
- hit2 = g_hash_table_lookup (data->other_table, key);
-
- if (data->op == OP_OR) {
- /* compose both scores in the same entry */
- hit = g_slice_dup (SearchHitData, hit1);
-
- if (hit2)
- hit->score += hit2->score;
-
- g_hash_table_insert (data->dest_table, key, hit);
- } else if (data->op == OP_AND) {
- /* only compose if the key is in both tables */
- if (hit2) {
- hit = g_slice_dup (SearchHitData, hit1);
- hit->score += hit2->score;
- g_hash_table_insert (data->dest_table, key, hit);
- }
- } else {
- g_assert_not_reached ();
- }
-}
-
-static GHashTable *
-compose_hits (OperationType op,
- GHashTable *left_table,
- GHashTable *right_table)
-{
- ComposeHitsData data;
- GHashTable *foreach_table;
-
- data.op = op;
-
- /* try to run the foreach in the table with less hits */
- if (g_hash_table_size (left_table) < g_hash_table_size (right_table)) {
- foreach_table = left_table;
- data.other_table = right_table;
- } else {
- foreach_table = right_table;
- data.other_table = left_table;
- }
-
- if (op == OP_OR) {
- data.dest_table = g_hash_table_ref (data.other_table);
- } else {
- data.dest_table = g_hash_table_new_full (NULL, NULL, NULL,
- (GDestroyNotify) search_hit_data_free);
- }
-
- g_hash_table_foreach (foreach_table, (GHFunc) compose_hits_foreach, &data);
-
- return data.dest_table;
-}
-
-static GHashTable *
-get_node_hits (TrackerQueryTree *tree,
- TreeNode *node)
-{
- GHashTable *left_table, *right_table, *result;
-
- if (!node)
- return NULL;
-
- switch (node->op) {
- case OP_NONE:
- result = get_search_term_hits (tree, node->term);
- break;
- case OP_AND:
- case OP_OR:
- left_table = get_node_hits (tree, node->left);
- right_table = get_node_hits (tree, node->right);
- result = compose_hits (node->op, left_table, right_table);
-
- g_hash_table_unref (left_table);
- g_hash_table_unref (right_table);
- break;
- default:
- g_assert_not_reached ();
- }
-
- return result;
-}
-
-static void
-get_hits_foreach (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- GArray *array;
- TrackerSearchHit hit;
- SearchHitData *hit_data;
-
- array = (GArray *) user_data;
- hit_data = (SearchHitData *) value;
-
- hit.service_id = GPOINTER_TO_UINT (key);
- hit.service_type_id = hit_data->service_type_id;
- hit.score = hit_data->score;
-
- g_array_append_val (array, hit);
-}
-
-static gint
-compare_search_hits (gconstpointer a,
- gconstpointer b)
-{
- TrackerSearchHit *ap, *bp;
-
- ap = (TrackerSearchHit *) a;
- bp = (TrackerSearchHit *) b;
-
- return (bp->score - ap->score);
-}
-
-GArray *
-tracker_query_tree_get_hits (TrackerQueryTree *tree,
- guint offset,
- guint limit)
-{
- TrackerQueryTreePrivate *priv;
- GHashTable *table;
- GArray *array;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), NULL);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
-
- g_return_val_if_fail (priv->tree != NULL, NULL);
-
- table = get_node_hits (tree, priv->tree);
- array = g_array_sized_new (TRUE, TRUE, sizeof (TrackerSearchHit),
- g_hash_table_size (table));
-
- g_hash_table_foreach (table, (GHFunc) get_hits_foreach, array);
- g_array_sort (array, compare_search_hits);
-
- if (offset > 0) {
- g_array_remove_range (array, 0, CLAMP (offset, 0, array->len));
- }
-
- if (limit > 0 && limit < array->len) {
- g_array_remove_range (array, limit, array->len - limit);
- }
-
- return array;
-}
-
-gint
-tracker_query_tree_get_hit_count (TrackerQueryTree *tree)
-{
- TrackerQueryTreePrivate *priv;
- GHashTable *table;
- gint count;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), 0);
-
- priv = TRACKER_QUERY_TREE_GET_PRIVATE (tree);
- table = get_node_hits (tree, priv->tree);
-
- if (!table)
- return 0;
-
- count = g_hash_table_size (table);
- g_hash_table_destroy (table);
-
- return count;
-}
-
-static void
-get_hit_count_foreach (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- GArray *array = (GArray *) user_data;
- TrackerHitCount count;
-
- count.service_type_id = GPOINTER_TO_INT (key);
- count.count = GPOINTER_TO_INT (value);
-
- g_array_append_val (array, count);
-}
-
-GArray *
-tracker_query_tree_get_hit_counts (TrackerQueryTree *tree)
-{
- GHashTable *table;
- GArray *hits, *counts;
- guint i;
-
- g_return_val_if_fail (TRACKER_IS_QUERY_TREE (tree), NULL);
-
- table = g_hash_table_new (NULL, NULL);
- hits = tracker_query_tree_get_hits (tree, 0, 0);
- counts = g_array_sized_new (TRUE, TRUE, sizeof (TrackerHitCount), 10);
-
- for (i = 0; i < hits->len; i++) {
- TrackerSearchHit hit;
- gint count, parent_id;
-
- hit = g_array_index (hits, TrackerSearchHit, i);
- count = GPOINTER_TO_INT (g_hash_table_lookup (table, GINT_TO_POINTER (hit.service_type_id)));
- count++;
-
- g_hash_table_insert (table, GINT_TO_POINTER (hit.service_type_id), GINT_TO_POINTER (count));
-
- /* update service's parent count too (if it has a parent) */
- parent_id = tracker_service_manager_get_parent_id_for_service_id (hit.service_type_id);
-
- if (parent_id != -1) {
- count = GPOINTER_TO_INT (g_hash_table_lookup (table, GINT_TO_POINTER (parent_id)));
- count++;
-
- g_hash_table_insert (table, GINT_TO_POINTER (parent_id), GINT_TO_POINTER (count));
- }
- }
-
- g_hash_table_foreach (table, (GHFunc) get_hit_count_foreach, counts);
- g_array_free (hits, TRUE);
-
- return counts;
-}
diff --git a/src/trackerd/tracker-query-tree.h b/src/trackerd/tracker-query-tree.h
deleted file mode 100644
index 43910a086..000000000
--- a/src/trackerd/tracker-query-tree.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2007 Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_QUERY_TREE_H__
-#define __TRACKER_QUERY_TREE_H__
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#include <glib-object.h>
-#include "tracker-indexer.h"
-
-#define TRACKER_TYPE_QUERY_TREE (tracker_query_tree_get_type())
-#define TRACKER_QUERY_TREE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_QUERY_TREE, TrackerQueryTree))
-#define TRACKER_QUERY_TREE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_QUERY_TREE, TrackerQueryTreeClass))
-#define TRACKER_IS_QUERY_TREE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_QUERY_TREE))
-#define TRACKER_IS_QUERY_TREE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), TRACKER_TYPE_QUERY_TREE))
-#define TRACKER_QUERY_TREE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_QUERY_TREE, TrackerQueryTreeClass))
-
-typedef struct TrackerQueryTree TrackerQueryTree;
-typedef struct TrackerQueryTreeClass TrackerQueryTreeClass;
-typedef struct TrackerSearchHit TrackerSearchHit;
-typedef struct TrackerHitCount TrackerHitCount;
-
-struct TrackerQueryTree {
- GObject parent;
-};
-
-struct TrackerQueryTreeClass {
- GObjectClass parent_class;
-};
-
-struct TrackerSearchHit {
- guint32 service_id; /* Service ID of the document */
- guint32 service_type_id; /* Service type ID of the document */
- guint32 score; /* Ranking score */
-};
-
-struct TrackerHitCount {
- guint service_type_id;
- guint count;
-};
-
-GType tracker_query_tree_get_type (void);
-
-TrackerQueryTree * tracker_query_tree_new (const gchar *query_str,
- Indexer *indexer,
- GArray *services);
-
-G_CONST_RETURN gchar * tracker_query_tree_get_query (TrackerQueryTree *tree);
-void tracker_query_tree_set_query (TrackerQueryTree *tree,
- const gchar *query_str);
-
-Indexer * tracker_query_tree_get_indexer (TrackerQueryTree *tree);
-void tracker_query_tree_set_indexer (TrackerQueryTree *tree,
- Indexer *indexer);
-
-GArray * tracker_query_tree_get_services (TrackerQueryTree *tree);
-void tracker_query_tree_set_services (TrackerQueryTree *tree,
- GArray *services);
-
-GSList * tracker_query_tree_get_words (TrackerQueryTree *tree);
-
-GArray * tracker_query_tree_get_hits (TrackerQueryTree *tree,
- guint offset,
- guint limit);
-gint tracker_query_tree_get_hit_count (TrackerQueryTree *tree);
-GArray * tracker_query_tree_get_hit_counts (TrackerQueryTree *tree);
-
-
-G_END_DECLS
-
-#endif /* __TRACKER_QUERY_TREE_H__ */
diff --git a/src/trackerd/tracker-rdf-query.c b/src/trackerd/tracker-rdf-query.c
deleted file mode 100644
index c2d052177..000000000
--- a/src/trackerd/tracker-rdf-query.c
+++ /dev/null
@@ -1,1309 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-rdf-query.h"
-
-/* RDF Query Condition
-<rdfq:Condition>
- <rdfq:and>
- <rdfq:greaterThan>
- <rdfq:Property name="File:Size" />
- <rdf:Integer>1000000</rdf:Integer>
- </rdfq:greaterThan>
- <rdfq:equals>
- <rdfq:Property name="File:Path" />
- <rdf:String>/home/jamie</rdf:String>
- </rdfq:equals>
- </rdfq:and>
-</rdfq:Condition>
-*/
-
-
-/* main elements */
-#define ELEMENT_RDF_CONDITION "rdfq:Condition"
-#define ELEMENT_RDF_PROPERTY "rdfq:Property"
-
-/* operators */
-#define ELEMENT_RDF_AND "rdfq:and"
-#define ELEMENT_RDF_OR "rdfq:or"
-#define ELEMENT_RDF_NOT "rdfq:not"
-#define ELEMENT_RDF_EQUALS "rdfq:equals"
-#define ELEMENT_RDF_GREATER_THAN "rdfq:greaterThan"
-#define ELEMENT_RDF_GREATER_OR_EQUAL "rdfq:greaterOrEqual"
-#define ELEMENT_RDF_LESS_THAN "rdfq:lessThan"
-#define ELEMENT_RDF_LESS_OR_EQUAL "rdfq:lessOrEqual"
-
-/* extension operators - "contains" does a substring or full text match, "in_Set" does string in list match */
-#define ELEMENT_RDF_CONTAINS "rdfq:contains"
-#define ELEMENT_RDF_REGEX "rdfq:regex"
-#define ELEMENT_RDF_STARTS_WITH "rdfq:startsWith"
-#define ELEMENT_RDF_IN_SET "rdfq:inSet"
-
-/* types */
-#define ELEMENT_RDF_INTEGER "rdf:Integer"
-#define ELEMENT_RDF_DATE "rdf:Date" /* format can be iso 8601 with optional timezone "yyyy-mm-ddThh:mm:ss" or "yyyy-mm-ddThh:mm:ss+hh:mm" - most other formats are supported too */
-#define ELEMENT_RDF_STRING "rdf:String"
-#define ELEMENT_RDF_FLOAT "rdf:Float"
-
-#define ELEMENT_IS(name) (strcmp (element_name, (name)) == 0)
-
-
-enum {
- NO_ERROR,
- PARSE_ERROR,
-};
-
-
-typedef enum {
- STATE_START,
- STATE_CONDITION,
- STATE_END_CONDITION,
- STATE_PROPERTY,
- STATE_AND,
- STATE_END_AND,
- STATE_OR,
- STATE_END_OR,
- STATE_NOT,
- STATE_END_NOT,
- STATE_EQUALS,
- STATE_END_EQUALS,
- STATE_GREATER_THAN,
- STATE_END_GREATER_THAN,
- STATE_GREATER_OR_EQUAL,
- STATE_END_GREATER_OR_EQUAL,
- STATE_LESS_THAN,
- STATE_END_LESS_THAN,
- STATE_LESS_OR_EQUAL,
- STATE_END_LESS_OR_EQUAL,
- STATE_CONTAINS,
- STATE_END_CONTAINS,
- STATE_REGEX,
- STATE_END_REGEX,
- STATE_STARTS_WITH,
- STATE_END_STARTS_WITH,
- STATE_IN_SET,
- STATE_END_IN_SET,
- STATE_INTEGER,
- STATE_END_INTEGER,
- STATE_STRING,
- STATE_END_STRING,
- STATE_FLOAT,
- STATE_END_FLOAT,
- STATE_DATE,
- STATE_END_DATE
-} ParseState;
-
-
-typedef enum {
- OP_NONE,
- OP_EQUALS,
- OP_GREATER,
- OP_GREATER_EQUAL,
- OP_LESS,
- OP_LESS_EQUAL,
- OP_CONTAINS,
- OP_REGEX,
- OP_SET,
- OP_STARTS
-} Operators;
-
-
-typedef enum {
- LOP_NONE,
- LOP_AND,
- LOP_OR
-} LogicOperators;
-
-
-
-typedef struct {
- GMarkupParseContext *context;
- GMarkupParser *parser;
- GSList *stack;
- GSList *fields;
- gboolean query_okay;
- int statement_count;
- LogicOperators current_logic_operator;
- Operators current_operator;
- char *current_field;
- char *current_value;
- DBConnection *db_con;
- GString *sql_select;
- GString *sql_from;
- GString *sql_where;
- GString *sql_order;
- char *service;
-} ParserData;
-
-
-static GQuark error_quark;
-
-
-static void start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- GError **error);
-
-static void end_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error);
-
-static void text_handler (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error);
-
-static void error_handler (GMarkupParseContext *context,
- GError *error,
- gpointer user_data);
-
-
-static gboolean
-is_operator (ParseState state)
-{
- return state == STATE_EQUALS || state == STATE_GREATER_THAN || state == STATE_LESS_THAN ||
- state == STATE_CONTAINS || state == STATE_IN_SET || STATE_LESS_OR_EQUAL ||
- STATE_GREATER_OR_EQUAL || state == STATE_STARTS_WITH || state == STATE_REGEX;
-
-}
-
-
-static gboolean
-is_end_operator (ParseState state)
-{
- return state == STATE_END_EQUALS || state == STATE_END_GREATER_THAN || state == STATE_END_LESS_THAN ||
- state == STATE_END_CONTAINS || state == STATE_END_IN_SET || STATE_END_LESS_OR_EQUAL ||
- STATE_END_GREATER_OR_EQUAL || state == STATE_END_STARTS_WITH || state == STATE_REGEX;
-
-}
-
-
-static gboolean
-is_logic (ParseState state)
-{
- return state == STATE_AND || state == STATE_OR || state == STATE_NOT;
-}
-
-
-static gboolean
-is_end_logic (ParseState state)
-{
- return state == STATE_END_AND || state == STATE_END_NOT || state == STATE_END_OR;
-}
-
-
-static void
-set_error (GError **err,
- GMarkupParseContext *context,
- int error_code,
- const char *format,
- ...)
-{
- int line, ch;
- va_list args;
- char *str;
-
- g_markup_parse_context_get_position (context, &line, &ch);
-
- va_start (args, format);
- str = g_strdup_vprintf (format, args);
- va_end (args);
-
- g_set_error (err, error_quark, error_code, "Line %d character %d: %s", line, ch, str);
-
- g_free (str);
-}
-
-
-static gboolean
-set_error_on_fail (gboolean condition, GMarkupParseContext *context, const char *msg, GError **err)
-{
- if (!condition) {
- set_error (err, context, 1, msg);
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-static const char *
-get_attribute_value (const char *name,
- const char **names,
- const char **values)
-{
- int i;
-
- i = 0;
-
- while (names[i]) {
- if (strcmp (name, names[i]) == 0) {
- return values[i];
- }
- i++;
- }
-
- return NULL;
-}
-
-
-static const char *
-get_attribute_value_required (GMarkupParseContext *context,
- const char *tag,
- const char *name,
- const char **names,
- const char **values,
- GError **error)
-{
- const char *value;
-
- value = get_attribute_value (name, names, values);
-
- if (!value) {
- set_error (error, context, PARSE_ERROR,
- "%s must have \"%s\" attribute",
- tag, name);
- }
-
- return value;
-}
-
-
-static void
-push_stack (ParserData *data, ParseState state)
-{
- data->stack = g_slist_prepend (data->stack, GINT_TO_POINTER (state));
-}
-
-
-static void
-pop_stack (ParserData *data)
-{
- g_return_if_fail (data->stack != NULL);
-
- data->stack = g_slist_remove (data->stack, data->stack->data);
-}
-
-
-static ParseState
-peek_state (ParserData *data)
-{
- g_return_val_if_fail (data->stack != NULL, STATE_START);
-
- return GPOINTER_TO_INT (data->stack->data);
-}
-
-
-static void
-pop_stack_until (ParserData *data, ParseState state)
-{
- while (data->stack != NULL) {
-
- if (state == peek_state (data)) {
- pop_stack (data);
- break;
- }
-
- pop_stack (data);
- }
-}
-
-
-
-static FieldData *
-add_metadata_field (ParserData *data, const char *field_name, gboolean is_select, gboolean is_condition)
-{
- gboolean field_exists;
- FieldData *field_data;
- const GSList *tmp;
-
- field_exists = FALSE;
- field_data = NULL;
-
- // check if field is already in list
- for (tmp = data->fields; tmp; tmp = tmp->next) {
- FieldData *tmp_field;
-
- tmp_field = tmp->data;
-
- if (tmp_field && tmp_field->field_name) {
- if (strcasecmp (tmp_field->field_name, field_name) == 0) {
-
- field_data = tmp_field;
-
- field_exists = TRUE;
-
- if (is_condition) {
- field_data->is_condition = TRUE;
- }
-
- if (is_select) {
- if (!field_data->is_select) {
-
- field_data->is_select = TRUE;
- g_string_append_printf (data->sql_select, ", %s", field_data->select_field);
- }
-
- }
-
- break;
-
- }
- }
- }
-
-
-
- if (!field_exists) {
-
- field_data = tracker_db_get_metadata_field (data->db_con, data->service, field_name, g_slist_length (data->fields), is_select, is_condition);
- if (field_data) {
- data->fields = g_slist_prepend (data->fields, field_data);
- if (is_select) {
- g_string_append_printf (data->sql_select, ", %s", field_data->select_field);
- }
-
- }
- }
-
- return field_data;
-}
-
-
-static void
-start_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- GError **error)
-{
- ParserData *data;
- ParseState state;
-
- data = user_data;
- state = peek_state (data);
-
- if (ELEMENT_IS (ELEMENT_RDF_CONDITION)) {
-
- if (set_error_on_fail ((state == STATE_START), context, "Condition element not expected here", error)) {
- return;
- }
-
- push_stack (data, STATE_CONDITION);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_PROPERTY)) {
- const char *name;
-
- if (set_error_on_fail ( is_operator (state), context, "Property element not expected here", error)) {
- return;
- }
-
- name = get_attribute_value_required (context, "<rdfq:Property>", "name",
- attribute_names, attribute_values,
- error);
-
- if (!name) {
- return;
- } else {
-
- if (data->current_operator == OP_NONE ) {
- set_error (error, context, PARSE_ERROR, "no operator found for Property \"%s\"", name);
- return;
- }
-
- data->current_field = g_strdup (name);
-
- push_stack (data, STATE_PROPERTY);
- }
-
- } else if (ELEMENT_IS (ELEMENT_RDF_AND)) {
-
- if (set_error_on_fail ((state == STATE_CONDITION || is_logic (state) || is_end_logic (state) || is_end_operator (state)),
- context, "AND element not expected here", error)) {
- return;
- }
-
- if (data->statement_count > 1) {
- if (data->current_logic_operator == LOP_AND) {
- data->sql_where = g_string_append (data->sql_where, " AND ");
- } else {
- if (data->current_logic_operator == LOP_OR) {
- data->sql_where = g_string_append (data->sql_where, " OR ");
- }
- }
- }
-
- data->statement_count = 0;
- data->sql_where = g_string_append (data->sql_where, " ( ");
- data->current_logic_operator = LOP_AND;
- push_stack (data, STATE_AND);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_OR)) {
-
- if (set_error_on_fail ((state == STATE_CONDITION || is_logic (state) || is_end_logic (state) || is_end_operator (state)),
- context, "OR element not expected here", error)) {
- return;
- }
-
- if (data->statement_count > 1) {
- if (data->current_logic_operator == LOP_AND) {
- data->sql_where = g_string_append (data->sql_where, " AND ");
- } else {
- if (data->current_logic_operator == LOP_OR) {
- data->sql_where = g_string_append (data->sql_where, " OR ");
- }
- }
- }
-
- data->statement_count = 0;
- data->sql_where = g_string_append (data->sql_where, " ( ");
- data->current_logic_operator = LOP_OR;
- push_stack (data, STATE_OR);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_NOT)) {
-
- if (set_error_on_fail ((state == STATE_CONDITION || is_logic (state) || is_end_logic (state) || is_end_operator (state)),
- context, "NOT element not expected here", error)) {
- return;
- }
-
- if (data->statement_count > 1) {
- if (data->current_logic_operator == LOP_AND) {
- data->sql_where = g_string_append (data->sql_where, " AND ");
- } else {
- if (data->current_logic_operator == LOP_OR) {
- data->sql_where = g_string_append (data->sql_where, " OR ");
- }
- }
- }
- data->sql_where = g_string_append (data->sql_where, " NOT ( ");
- push_stack (data, STATE_NOT);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_EQUALS)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "EQUALS element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_EQUALS;
- push_stack (data, STATE_EQUALS);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_GREATER_THAN)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "GREATERTHAN element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_GREATER;
- push_stack (data, STATE_GREATER_THAN);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_GREATER_OR_EQUAL)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "GREATEROREQUAL element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_GREATER_EQUAL;
- push_stack (data, STATE_GREATER_OR_EQUAL);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_LESS_THAN )) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "LESSTHAN element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_LESS;
- push_stack (data, STATE_LESS_THAN);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_LESS_OR_EQUAL )) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "LESSOREQUAL element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_LESS_EQUAL;
- push_stack (data, STATE_LESS_OR_EQUAL);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_CONTAINS)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "CONTAINS element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_CONTAINS;
- push_stack (data, STATE_CONTAINS);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_REGEX)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "REGEX element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_REGEX;
- push_stack (data, STATE_REGEX);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_STARTS_WITH)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "STARTSWITH element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_STARTS;
- push_stack (data, STATE_STARTS_WITH);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_IN_SET)) {
-
- if (set_error_on_fail ( state == STATE_CONDITION || is_logic (state) ||
- ((data->current_logic_operator == LOP_AND || data->current_logic_operator == LOP_OR)
- && is_end_operator (state)),
- context, "IN SET element not expected here", error)) {
- return;
- }
-
- data->current_operator = OP_SET;
- push_stack (data, STATE_IN_SET);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_INTEGER)) {
-
- if (set_error_on_fail (state == STATE_PROPERTY, context, "INTEGER element not expected here", error)) {
- return;
- }
-
- push_stack (data, STATE_INTEGER);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_DATE)) {
-
- if (set_error_on_fail (state == STATE_PROPERTY, context, "DATE element not expected here", error)) {
- return;
- }
-
- push_stack (data, STATE_DATE);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_STRING)) {
-
- if (set_error_on_fail (state == STATE_PROPERTY, context, "STRING element not expected here", error)) {
- return;
- }
-
- push_stack (data, STATE_STRING);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_FLOAT)) {
-
- if (set_error_on_fail (state == STATE_PROPERTY, context, "FLOAT element not expected here", error)) {
- return;
- }
-
- push_stack (data, STATE_FLOAT);
- }
-}
-
-
-static char *
-get_value (const char *value, gboolean quote)
-{
- if (quote) {
- return g_strconcat (" '", value, "' ", NULL);
- } else {
- return g_strdup (value);
- }
-}
-
-
-static gboolean
-build_sql (ParserData *data)
-{
- ParseState state;
- char *avalue, *value, *sub;
- FieldData *field_data;
- GString *str;
-
- g_return_val_if_fail (data->current_field && data->current_operator != OP_NONE && data->current_value, FALSE);
-
- str = g_string_new ("");
-
- data->statement_count++;
-
- state = peek_state (data);
-
- avalue = get_value (data->current_value, (state != STATE_END_DATE && state != STATE_END_INTEGER && state != STATE_END_FLOAT));
-
- field_data = add_metadata_field (data, data->current_field, FALSE, TRUE);
-
- if (!field_data) {
- g_free (avalue);
- g_free (data->current_field);
- g_free (data->current_value);
- data->current_field = NULL;
- data->current_value = NULL;
- return FALSE;
- }
-
- if (field_data->data_type == DATA_DATE) {
- char *bvalue;
- int cvalue;
-
- bvalue = tracker_format_date (avalue);
- tracker_debug (bvalue);
- cvalue = tracker_str_to_date (bvalue);
- tracker_debug ("%d", cvalue);
- value = tracker_int_to_str (cvalue);
- g_free (bvalue);
- } else {
- value = g_strdup (avalue);
- }
-
- g_free (avalue);
-
- if (data->statement_count > 1) {
- if (data->current_logic_operator == LOP_AND) {
- data->sql_where = g_string_append (data->sql_where, "\n AND ");
- } else {
- if (data->current_logic_operator == LOP_OR) {
- data->sql_where = g_string_append (data->sql_where, "\n OR ");
- }
- }
- }
-
- char **s;
-
- switch (data->current_operator) {
-
- case OP_EQUALS:
-
- sub = strchr (data->current_value, '*');
- if (sub) {
- g_string_append_printf (str, " (%s glob '%s') ", field_data->where_field, data->current_value);
- } else {
- if (field_data->data_type == DATA_DATE || field_data->data_type == DATA_INTEGER || field_data->data_type == DATA_DOUBLE || field_data->data_type == DATA_STRING || field_data->data_type == DATA_INDEX) {
- g_string_append_printf (str, " (%s = %s) ", field_data->where_field, value);
- } else {
- g_string_append_printf (str, " (%s = '%s') ", field_data->where_field, value);
- }
- }
-
- break;
-
- case OP_GREATER:
-
- g_string_append_printf (str, " (%s > %s) ", field_data->where_field, value);
-
- break;
-
- case OP_GREATER_EQUAL:
-
- g_string_append_printf (str, " (%s >= %s) ", field_data->where_field, value);
-
- break;
-
- case OP_LESS:
-
- g_string_append_printf (str, " (%s < %s) ", field_data->where_field, value);
-
- break;
-
- case OP_LESS_EQUAL:
-
- g_string_append_printf (str, " (%s <= %s) ", field_data->where_field, value);
-
- break;
-
- case OP_CONTAINS:
-
- sub = strchr (data->current_value, '*');
-
- if (sub) {
- g_string_append_printf (str, " (%s like '%s%s%s') ", field_data->where_field, "%", data->current_value, "%");
- } else {
- g_string_append_printf (str, " (%s like '%s%s%s') ", field_data->where_field, "%", data->current_value, "%");
- }
-
- break;
-
- case OP_STARTS:
-
- sub = strchr (data->current_value, '*');
-
- if (sub) {
- g_string_append_printf (str, " (%s like '%s') ", field_data->where_field, data->current_value);
- } else {
- g_string_append_printf (str, " (%s like '%s%s') ", field_data->where_field, data->current_value, "%");
- }
-
- break;
-
- case OP_REGEX:
-
- g_string_append_printf (str, " (%s REGEXP '%s') ", field_data->where_field, data->current_value);
-
- break;
-
- case OP_SET:
-
- s = g_strsplit (data->current_value, ",", 0);
-
- if (s && s[0]) {
-
- g_string_append_printf (str, " (%s in ('%s'", field_data->where_field, s[0]);
-
- char **p;
- for (p = s+1; *p; p++) {
- g_string_append_printf (str, ",'%s'", *p);
- }
- g_string_append_printf (str, ") ) " );
-
- }
-
- break;
-
- default:
-
- break;
- }
-
- data->sql_where = g_string_append (data->sql_where, str->str);
-
- g_string_free (str, TRUE);
-
- g_free (data->current_field);
- data->current_field = NULL;
-
- g_free (data->current_value);
- data->current_value = NULL;
-
- g_free (value);
-
- return TRUE;
-}
-
-
-static void
-end_element_handler (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error)
-{
- ParserData *data;
-
- data = user_data;
-
- if (ELEMENT_IS (ELEMENT_RDF_CONDITION)) {
-
- push_stack (data, STATE_END_CONDITION);
- data->query_okay = TRUE;
-
- } else if (ELEMENT_IS (ELEMENT_RDF_AND)) {
-
- data->sql_where = g_string_append (data->sql_where, " ) ");
-
- pop_stack_until (data, STATE_AND);
-
- if (peek_state (data) != STATE_AND) {
- if (peek_state (data) == STATE_OR) {
- data->current_logic_operator = LOP_OR;
- } else {
- data->current_logic_operator = LOP_NONE;
- }
- }
-
- } else if (ELEMENT_IS (ELEMENT_RDF_OR)) {
-
- data->sql_where = g_string_append (data->sql_where, " ) ");
-
- pop_stack_until (data, STATE_OR);
-
- if (peek_state (data) != STATE_OR) {
- if (peek_state (data) == STATE_AND) {
- data->current_logic_operator = LOP_AND;
- } else {
- data->current_logic_operator = LOP_NONE;
- }
- }
-
- } else if (ELEMENT_IS (ELEMENT_RDF_NOT)) {
-
- data->sql_where = g_string_append (data->sql_where, " ) ");
- pop_stack_until (data, STATE_NOT);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_EQUALS)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
- push_stack (data, STATE_END_EQUALS);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_GREATER_THAN)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_GREATER_THAN);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_GREATER_OR_EQUAL)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_GREATER_OR_EQUAL);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_LESS_THAN )) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_LESS_THAN );
-
- } else if (ELEMENT_IS (ELEMENT_RDF_LESS_OR_EQUAL )) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_LESS_OR_EQUAL );
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_CONTAINS)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_CONTAINS);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_REGEX)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_REGEX);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_STARTS_WITH)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_STARTS_WITH);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_IN_SET)) {
-
- if (!build_sql (data)) {
- set_error (error, context, 1, "parse error");
- return;
- }
-
- push_stack (data, STATE_END_IN_SET);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_INTEGER)) {
-
- push_stack (data, STATE_END_INTEGER);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_DATE)) {
-
- push_stack (data, STATE_END_DATE);
-
-
- } else if (ELEMENT_IS (ELEMENT_RDF_STRING)) {
-
- push_stack (data, STATE_END_STRING);
-
- } else if (ELEMENT_IS (ELEMENT_RDF_FLOAT)) {
-
- push_stack (data, STATE_END_FLOAT);
- }
-}
-
-
-static void
-text_handler (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error)
-{
- ParserData *data;
- ParseState state;
-
- data = user_data;
- state = peek_state (data);
-
- switch (state) {
-
- case STATE_INTEGER:
- case STATE_STRING:
- case STATE_DATE:
- case STATE_FLOAT:
-
- data->current_value = g_strstrip (g_strndup (text, text_len));
- break;
-
- default :
- break;
- }
-}
-
-
-static void
-error_handler (GMarkupParseContext *context,
- GError *error,
- gpointer user_data)
-{
- tracker_error ("ERROR: in rdf query parse: %s", error->message);
-}
-
-
-static GString *
-get_select_header (const char *service)
-{
- GString *result;
- int type;
-
- result = g_string_new ("");
- type = tracker_service_manager_get_id_for_service (service);
-
- switch (type) {
-
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- g_string_append_printf (result, " Select DISTINCT (S.Path || '%s' || S.Name) as uri, GetServiceName(S.ServiceTypeID) as stype ", G_DIR_SEPARATOR_S);
- break;
-
- default :
- g_string_append_printf (result, " Select DISTINCT (S.Path || '%s' || S.Name) as uri, GetServiceName(S.ServiceTypeID) as stype ", G_DIR_SEPARATOR_S);
- break;
- }
-
- return result;
-
-}
-
-
-
-char *
-tracker_rdf_query_to_sql (DBConnection *db_con, const char *query, const char *service, char **fields, int field_count, const char *search_text, const char *keyword, gboolean sort_by_service, int offset, int limit, GError *error)
-{
- static gboolean inited = FALSE;
- ParserData data;
- char *result;
-
- g_return_val_if_fail (query != NULL, NULL);
-
- if (!inited) {
- error_quark = g_quark_from_static_string ("RDF-parser-error-quark");
- inited = TRUE;
- }
-
- memset (&data, 0, sizeof (data));
- data.db_con = db_con;
- data.statement_count = 0;
- data.service = (char *) service;
-
- data.sql_select = get_select_header (service);
-
- if (field_count > 0) {
- int i;
-
- for (i = 0; i < field_count; i++) {
- FieldData *field_data;
-
- field_data = add_metadata_field (&data, fields[i], TRUE, FALSE);
-
- if (!field_data) {
- tracker_error ("ERROR: RDF Query failed: field %s not found", fields[i]);
- g_slist_foreach (data.fields, (GFunc) tracker_free_metadata_field, NULL);
- g_slist_free (data.fields);
- g_string_free (data.sql_select, TRUE);
- return NULL;
- }
- }
- }
-
- char *table_name;
- gboolean do_search = FALSE;
-
- table_name = "Services";
-
- data.sql_from = g_string_new ("");
-
- tracker_debug ("search term is %s", search_text);
-
-
- if (!tracker_is_empty_string (search_text)) {
- do_search = TRUE;
- g_string_append_printf (data.sql_from, "\n FROM %s S INNER JOIN SearchResults1 M ON S.ID = M.SID ", table_name);
- } else {
- g_string_append_printf (data.sql_from, "\n FROM %s S ", table_name);
- }
-
- if (!tracker_is_empty_string (keyword)) {
- char *keyword_metadata = tracker_get_related_metadata_names (db_con, "DC:Keywords");
- g_string_append_printf (data.sql_from, "\n INNER JOIN ServiceKeywordMetaData K ON S.ID = K.ServiceID and K.MetaDataID in (%s) and K.MetaDataValue = '%s' ", keyword_metadata, keyword);
- g_free (keyword_metadata);
- }
-
- data.sql_where = g_string_new ("");
-
- if (strlen (query) < 10) {
- g_string_append_printf (data.sql_where, "\n WHERE (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) ", service, service);
- } else {
- g_string_append_printf (data.sql_where, "\n WHERE (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) AND ", service, service);
- }
-
- if (limit < 1) {
- limit = 1024;
- }
-
- if (sort_by_service) {
- if (do_search) {
- data.sql_order = g_string_new ("\n ORDER BY M.Score desc, S.ServiceTypeID, uri LIMIT ");
- } else {
- data.sql_order = g_string_new ("\n ORDER BY S.ServiceTypeID, uri LIMIT ");
- }
-
- } else {
- if (do_search) {
- data.sql_order = g_string_new ("\n ORDER BY M.Score desc LIMIT ");
- } else {
- data.sql_order = g_string_new ("\n LIMIT ");
- }
-
- }
-
- g_string_append_printf (data.sql_order, "%d,%d ", offset, limit);
-
- data.parser = g_new0 (GMarkupParser, 1);
- data.parser->start_element = start_element_handler;
- data.parser->text = text_handler;
- data.parser->end_element = end_element_handler;
- data.parser->error = error_handler;
-
- data.current_operator = OP_NONE;
- data.current_logic_operator = LOP_NONE;
- data.query_okay = FALSE;
-
- data.context = g_markup_parse_context_new (data.parser, 0, &data, NULL);
-
- push_stack (&data, STATE_START);
-
- result = NULL;
-
- if (!g_markup_parse_context_parse (data.context, query, -1, &error)) {
-
- g_string_free (data.sql_select, TRUE);
- g_string_free (data.sql_from, TRUE);
- g_string_free (data.sql_where, TRUE);
- g_string_free (data.sql_order, TRUE);
-
- } else {
- const GSList *tmp;
- FieldData *tmp_field;
-
- for (tmp = data.fields; tmp; tmp = tmp->next) {
- tmp_field = tmp->data;
-
- if (!tmp_field->is_condition) {
- if (tmp_field->needs_join) {
- g_string_append_printf (data.sql_from, "\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ", tmp_field->table_name, tmp_field->alias, tmp_field->alias, tmp_field->alias, tmp_field->id_field);
- }
- } else {
- char *related_metadata = tracker_get_related_metadata_names (db_con, tmp_field->field_name);
- g_string_append_printf (data.sql_from, "\n INNER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID in (%s)) ", tmp_field->table_name, tmp_field->alias, tmp_field->alias, tmp_field->alias, related_metadata);
- g_free (related_metadata);
- }
- }
-
- result = g_strconcat (data.sql_select->str, " ", data.sql_from->str, " ", data.sql_where->str, " ", data.sql_order->str, NULL);
-
- g_string_free (data.sql_select, TRUE);
- g_string_free (data.sql_from, TRUE);
- g_string_free (data.sql_where, TRUE);
- g_string_free (data.sql_order, TRUE);
- }
-
- g_slist_foreach (data.fields, (GFunc) tracker_free_metadata_field, NULL);
- g_slist_free (data.fields);
-
- g_slist_free (data.stack);
- g_markup_parse_context_free (data.context);
-
- if (data.current_field) {
- g_free (data.current_field);
- }
-
- if (data.current_value) {
- g_free (data.current_value);
- }
-
- g_free (data.parser);
-
- return result;
-}
-
-/*
- * The following function turns an rdf query into a filter that can be used for example
- * for getting unique values of a field with a certain query.
- * FIXME It is not pretty. The calling function needs to define Services S that is joined in this method.
- */
-
-void
-tracker_rdf_filter_to_sql (DBConnection *db_con, const char *query, const char *service, char **from, char **where, GError *error)
-{
- static gboolean inited = FALSE;
- ParserData data;
-
- if (!inited) {
- error_quark = g_quark_from_static_string ("RDF-parser-error-quark");
- inited = TRUE;
- }
-
- memset (&data, 0, sizeof (data));
- data.db_con = db_con;
- data.statement_count = 0;
- data.service = (char *) service;
-
- data.sql_from = g_string_new ("");
- data.sql_where = g_string_new ("");
-
- if (strlen (query) < 10) {
- g_string_append_printf (data.sql_where, " (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) ", service, service);
- } else {
- g_string_append_printf (data.sql_where, " (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) AND ", service, service);
- }
-
- data.parser = g_new0 (GMarkupParser, 1);
- data.parser->start_element = start_element_handler;
- data.parser->text = text_handler;
- data.parser->end_element = end_element_handler;
- data.parser->error = error_handler;
-
- data.current_operator = OP_NONE;
- data.current_logic_operator = LOP_NONE;
- data.query_okay = FALSE;
-
- data.context = g_markup_parse_context_new (data.parser, 0, &data, NULL);
-
- push_stack (&data, STATE_START);
-
- if (!g_markup_parse_context_parse (data.context, query, -1, &error)) {
-
- *from = NULL;
- *where = NULL;
-
- g_string_free (data.sql_from, TRUE);
- g_string_free (data.sql_where, TRUE);
-
- } else {
- const GSList *tmp;
- FieldData *tmp_field;
-
- for (tmp = data.fields; tmp; tmp = tmp->next) {
- tmp_field = tmp->data;
-
- if (!tmp_field->is_condition) {
- if (tmp_field->needs_join) {
- g_string_append_printf (data.sql_from, "\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ", tmp_field->table_name, tmp_field->alias, tmp_field->alias, tmp_field->alias, tmp_field->id_field);
- }
- } else {
- char *related_metadata = tracker_get_related_metadata_names (db_con, tmp_field->field_name);
- g_string_append_printf (data.sql_from, "\n INNER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID in (%s)) ", tmp_field->table_name, tmp_field->alias, tmp_field->alias, tmp_field->alias, related_metadata);
- g_free (related_metadata);
- }
- }
-
- *from = g_strdup (data.sql_from->str);
- *where = g_strdup (data.sql_where->str);
- g_string_free (data.sql_from, TRUE);
- g_string_free (data.sql_where, TRUE);
-
-
- }
-
- g_slist_foreach (data.fields, (GFunc) tracker_free_metadata_field, NULL);
- g_slist_free (data.fields);
-
- g_slist_free (data.stack);
- g_markup_parse_context_free (data.context);
-
- if (data.current_field) {
- g_free (data.current_field);
- }
-
- if (data.current_value) {
- g_free (data.current_value);
- }
-
- g_free (data.parser);
-}
diff --git a/src/trackerd/tracker-rdf-query.h b/src/trackerd/tracker-rdf-query.h
deleted file mode 100644
index 51b5829d4..000000000
--- a/src/trackerd/tracker-rdf-query.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_RDF_QUERY_H_
-#define _TRACKER_RDF_QUERY_H_
-
-#include <glib.h>
-
-#include "tracker-db.h"
-
-
-char * tracker_rdf_query_to_sql (DBConnection *db_con, const char *query, const char *service, char **fields, int field_count, const char *search_text, const char *keyword, gboolean sort_by_service, int offset, int limit, GError *error);
-
-void tracker_rdf_filter_to_sql (DBConnection *db_con, const char *query, const char *service, char **from, char **where, GError *error);
-#endif
diff --git a/src/trackerd/tracker-service-manager.c b/src/trackerd/tracker-service-manager.c
deleted file mode 100644
index 923da437d..000000000
--- a/src/trackerd/tracker-service-manager.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <glib.h>
-
-#include "tracker-service-manager.h"
-
-typedef struct {
- gchar *prefix;
- gint service;
-} ServiceMimePrefixes;
-
-/* Hash (gint service_type_id, TrackerService *service) */
-static GHashTable *service_id_table;
-
-/* Hash (gchar *service_name, TrackerService *service) */
-static GHashTable *service_table;
-
-/* Hash (gchar *mime, gint service_type_id) */
-static GHashTable *mime_service;
-
-/* List of ServiceMimePrefixes */
-static GSList *mime_prefix_service;
-
-static void
-service_manager_mime_prefix_foreach (gpointer data,
- gpointer user_data)
-{
- ServiceMimePrefixes *mime_prefix;
-
- mime_prefix = (ServiceMimePrefixes*) data;
-
- g_free (mime_prefix->prefix);
- g_free (mime_prefix);
-}
-
-gpointer
-service_manager_hash_lookup_by_str (GHashTable *hash_table,
- const gchar *str)
-{
- gpointer *data;
- gchar *str_lower;
-
- str_lower = g_utf8_strdown (str, -1);
- data = g_hash_table_lookup (hash_table, str_lower);
- g_free (str_lower);
-
- return data;
-}
-
-gpointer
-service_manager_hash_lookup_by_id (GHashTable *hash_table,
- gint id)
-{
- gpointer *data;
- gchar *str;
-
- str = g_strdup_printf ("%d", id);
- data = g_hash_table_lookup (hash_table, str);
- g_free (str);
-
- return data;
-}
-
-void
-tracker_service_manager_init (void)
-{
-
- g_return_if_fail (service_id_table == NULL
- && service_table == NULL
- && mime_service == NULL);
-
- service_id_table = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_object_unref);
-
- service_table = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_object_unref);
-
- mime_service = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- NULL,
- NULL);
-}
-
-void
-tracker_service_manager_term (void)
-{
- g_hash_table_remove_all (service_id_table);
- g_hash_table_remove_all (service_table);
- g_hash_table_remove_all (mime_service);
-
- if (mime_prefix_service) {
- g_slist_foreach (mime_prefix_service,
- service_manager_mime_prefix_foreach,
- NULL);
- g_slist_free (mime_prefix_service);
- }
-}
-
-void
-tracker_service_manager_add_service (TrackerService *service,
- GSList *mimes,
- GSList *mime_prefixes)
-{
-
- GSList *mime, *prefix;
- ServiceMimePrefixes *service_mime_prefix;
- gint id;
- const gchar *name;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- id = tracker_service_get_id (service);
- name = tracker_service_get_name (service);
-
- g_hash_table_insert (service_table,
- g_utf8_strdown (name, -1),
- g_object_ref (service));
- g_hash_table_insert (service_id_table,
- g_strdup_printf ("%d", id),
- g_object_ref (service));
-
- for (mime = mimes; mime != NULL; mime = mime->next) {
- g_hash_table_insert (mime_service,
- mime->data,
- GINT_TO_POINTER (id));
- }
-
- for (prefix = mime_prefixes; prefix != NULL; prefix = prefix->next) {
- service_mime_prefix = g_new0 (ServiceMimePrefixes, 1);
- service_mime_prefix->prefix = prefix->data;
- service_mime_prefix->service = id;
- mime_prefix_service = g_slist_prepend (mime_prefix_service,
- service_mime_prefix);
- }
-}
-
-TrackerService *
-tracker_service_manager_get_service (const gchar *service_str)
-{
- return service_manager_hash_lookup_by_str (service_table, service_str);
-}
-
-gchar *
-tracker_service_manager_get_service_by_id (gint id)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_id (service_id_table, id);
-
- if (!service) {
- return NULL;
- }
-
- return g_strdup (tracker_service_get_name (service));
-}
-
-gchar *
-tracker_service_manager_get_service_type_for_mime (const gchar *mime)
-{
- gpointer *id;
- ServiceMimePrefixes *item;
- GSList *prefix_service;
-
- /* Try a complete mime */
- id = g_hash_table_lookup (mime_service, mime);
- if (id) {
- return tracker_service_manager_get_service_by_id (GPOINTER_TO_INT (id));
- }
-
- /* Try in prefixes */
- for (prefix_service = mime_prefix_service;
- prefix_service != NULL;
- prefix_service = prefix_service->next) {
- item = prefix_service->data;
- if (g_str_has_prefix (mime, item->prefix)) {
- return tracker_service_manager_get_service_by_id (item->service);
- }
- }
-
- /* Default option */
- return g_strdup ("Other");
-}
-
-gint
-tracker_service_manager_get_id_for_service (const char *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return -1;
- }
-
- return tracker_service_get_id (service);
-}
-
-gchar *
-tracker_service_manager_get_parent_service_by_id (gint id)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_id (service_id_table, id);
-
- if (!service) {
- return NULL;
- }
-
- return g_strdup (tracker_service_get_parent (service));
-}
-
-gint
-tracker_service_manager_get_parent_id_for_service_id (gint id)
-{
- TrackerService *service;
- const gchar *parent = NULL;
-
- service = service_manager_hash_lookup_by_id (service_id_table, id);
-
- if (service) {
- parent = tracker_service_get_parent (service);
- }
-
- if (!parent) {
- return -1;
- }
-
- service = service_manager_hash_lookup_by_str (service_table, parent);
-
- if (!service) {
- return -1;
- }
-
- return tracker_service_get_id (service);
-}
-
-gint
-tracker_service_manager_get_id_for_parent_service (const gchar *service_str)
-{
- TrackerService *service;
- const gchar *parent = NULL;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (service) {
- parent = tracker_service_get_parent (service);
- }
-
- if (!parent) {
- return -1;
- }
-
- return tracker_service_manager_get_id_for_service (parent);
-}
-
-gchar *
-tracker_service_manager_get_parent_service (const gchar *service_str)
-{
- TrackerService *service;
- const gchar *parent = NULL;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (service) {
- parent = tracker_service_get_parent (service);
- }
-
- return g_strdup (parent);
-}
-
-TrackerDBType
-tracker_service_manager_get_db_for_service (const gchar *service_str)
-{
- TrackerDBType type;
- gchar *str;
-
- type = TRACKER_DB_TYPE_DATA;
- str = g_utf8_strdown (service_str, -1);
-
- if (g_str_has_prefix (str, "emails") ||
- g_str_has_prefix (str, "attachments")) {
- type = TRACKER_DB_TYPE_EMAIL;
- }
-
- g_free (str);
-
- return type;
-}
-
-gboolean
-tracker_service_manager_is_service_embedded (const gchar *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return FALSE;
- }
-
- return tracker_service_get_embedded (service);
-}
-
-gboolean
-tracker_service_manager_is_valid_service (const gchar *service_str)
-{
- return tracker_service_manager_get_id_for_service (service_str) != -1;
-}
-
-gint
-tracker_service_manager_metadata_in_service (const gchar *service_str,
- const gchar *meta_name)
-{
- TrackerService *service;
- gint i;
- const GSList *l;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return 0;
- }
-
- for (l = tracker_service_get_key_metadata (service), i = 0;
- l;
- l = l->next, i++) {
- if (!l->data) {
- continue;
- }
-
- if (strcasecmp (l->data, meta_name) == 0) {
- return i;
- }
- }
-
- return 0;
-}
-
-gboolean
-tracker_service_manager_has_metadata (const gchar *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return FALSE;
- }
-
- return tracker_service_get_has_metadata (service);
-}
-
-gboolean
-tracker_service_manager_has_thumbnails (const gchar *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return FALSE;
- }
-
- return tracker_service_get_has_thumbs (service);
-}
-
-gboolean
-tracker_service_manager_has_text (const char *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return FALSE;
- }
-
- return tracker_service_get_has_full_text (service);
-}
-
-gboolean
-tracker_service_manager_show_service_files (const gchar *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return FALSE;
- }
-
- return tracker_service_get_show_service_files (service);
-}
-
-gboolean
-tracker_service_manager_show_service_directories (const gchar *service_str)
-{
- TrackerService *service;
-
- service = service_manager_hash_lookup_by_str (service_table, service_str);
-
- if (!service) {
- return FALSE;
- }
-
- return tracker_service_get_show_service_directories (service);
-}
diff --git a/src/trackerd/tracker-service-manager.h b/src/trackerd/tracker-service-manager.h
deleted file mode 100644
index 3b3a3c665..000000000
--- a/src/trackerd/tracker-service-manager.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_SERVICE_MANAGER_H__
-#define __TRACKER_SERVICE_MANAGER_H__
-
-#include <glib-object.h>
-
-#include "tracker-service.h"
-
-G_BEGIN_DECLS
-
-void tracker_service_manager_init (void);
-void tracker_service_manager_term (void);
-void tracker_service_manager_add_service (TrackerService *service,
- GSList *mimes,
- GSList *mime_prefixes);
-TrackerService *tracker_service_manager_get_service (const gchar *service_str);
-gchar * tracker_service_manager_get_service_by_id (gint id);
-gchar * tracker_service_manager_get_service_type_for_mime (const gchar *mime);
-gint tracker_service_manager_get_id_for_service (const gchar *service_str);
-gint tracker_service_manager_get_id_for_parent_service (const gchar *service_str);
-gchar * tracker_service_manager_get_parent_service (const gchar *service_str);
-gchar * tracker_service_manager_get_parent_service_by_id (gint id);
-gint tracker_service_manager_get_parent_id_for_service_id (gint id);
-TrackerDBType tracker_service_manager_get_db_for_service (const gchar *service_str);
-gboolean tracker_service_manager_is_service_embedded (const gchar *service_str);
-gboolean tracker_service_manager_is_valid_service (const gchar *service_str);
-gboolean tracker_service_manager_has_metadata (const gchar *service_str);
-gboolean tracker_service_manager_has_thumbnails (const gchar *service_str);
-gboolean tracker_service_manager_has_text (const gchar *service_str);
-gint tracker_service_manager_metadata_in_service (const gchar *service_str,
- const gchar *meta_name);
-gboolean tracker_service_manager_show_service_directories (const gchar *service_str);
-gboolean tracker_service_manager_show_service_files (const gchar *service_str);
-
-G_END_DECLS
-
-#endif /* __TRACKER_SERVICE_MANAGER_H__ */
-
diff --git a/src/trackerd/tracker-service.c b/src/trackerd/tracker-service.c
deleted file mode 100644
index b2fa7800c..000000000
--- a/src/trackerd/tracker-service.c
+++ /dev/null
@@ -1,787 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <glib.h>
-
-#include "tracker-service.h"
-
-#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_SERVICE, TrackerServicePriv))
-
-typedef struct _TrackerServicePriv TrackerServicePriv;
-
-struct _TrackerServicePriv {
- gint id;
-
- gchar *name;
- gchar *parent;
-
- gchar *content_metadata;
- GSList *key_metadata;
-
- TrackerDBType db_type;
-
- gboolean enabled;
- gboolean embedded;
-
- gboolean has_metadata;
- gboolean has_full_text;
- gboolean has_thumbs;
-
- gboolean show_service_files;
- gboolean show_service_directories;
-};
-
-static void service_finalize (GObject *object);
-static void service_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec);
-static void service_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
-
-enum {
- PROP_0,
- PROP_ID,
- PROP_NAME,
- PROP_PARENT,
- PROP_CONTENT_METADATA,
- PROP_KEY_METADATA,
- PROP_DB_TYPE,
- PROP_ENABLED,
- PROP_EMBEDDED,
- PROP_HAS_METADATA,
- PROP_HAS_FULL_TEXT,
- PROP_HAS_THUMBS,
- PROP_SHOW_SERVICE_FILES,
- PROP_SHOW_SERVICE_DIRECTORIES
-};
-
-GType
-tracker_db_type_get_type (void)
-{
- static GType etype = 0;
-
- if (etype == 0) {
- static const GEnumValue values[] = {
- { TRACKER_DB_TYPE_DATA,
- "TRACKER_DB_TYPE_DATA",
- "data" },
- { TRACKER_DB_TYPE_INDEX,
- "TRACKER_DB_TYPE_INDEX",
- "index" },
- { TRACKER_DB_TYPE_COMMON,
- "TRACKER_DB_TYPE_COMMON",
- "common" },
- { TRACKER_DB_TYPE_CONTENT,
- "TRACKER_DB_TYPE_CONTENT",
- "content" },
- { TRACKER_DB_TYPE_EMAIL,
- "TRACKER_DB_TYPE_EMAIL",
- "email" },
- { TRACKER_DB_TYPE_CACHE,
- "TRACKER_DB_TYPE_CACHE",
- "cache" },
- { TRACKER_DB_TYPE_USER,
- "TRACKER_DB_TYPE_USER",
- "user" },
- { 0, NULL, NULL }
- };
-
- etype = g_enum_register_static ("TrackerDBType", values);
- }
-
- return etype;
-}
-
-G_DEFINE_TYPE (TrackerService, tracker_service, G_TYPE_OBJECT);
-
-static void
-tracker_service_class_init (TrackerServiceClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = service_finalize;
- object_class->get_property = service_get_property;
- object_class->set_property = service_set_property;
-
- g_object_class_install_property (object_class,
- PROP_ID,
- g_param_spec_int ("id",
- "id",
- "Unique identifier for this service",
- 0,
- G_MAXINT,
- 0,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_NAME,
- g_param_spec_string ("name",
- "name",
- "Service name",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_PARENT,
- g_param_spec_string ("parent",
- "parent",
- "Service name of parent",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_CONTENT_METADATA,
- g_param_spec_string ("content-metadata",
- "content-metadata",
- "Content metadata",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_KEY_METADATA,
- g_param_spec_pointer ("key-metadata",
- "key-metadata",
- "Key metadata",
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_DB_TYPE,
- g_param_spec_enum ("db-type",
- "db-type",
- "Database type",
- tracker_db_type_get_type (),
- TRACKER_DB_TYPE_DATA,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_ENABLED,
- g_param_spec_boolean ("enabled",
- "enabled",
- "Enabled",
- TRUE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_EMBEDDED,
- g_param_spec_boolean ("embedded",
- "embedded",
- "Embedded",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_HAS_METADATA,
- g_param_spec_boolean ("has-metadata",
- "has-metadata",
- "Has metadata",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_HAS_FULL_TEXT,
- g_param_spec_boolean ("has-full-text",
- "has-full-text",
- "Has full text",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_HAS_THUMBS,
- g_param_spec_boolean ("has-thumbs",
- "has-thumbs",
- "Has thumbnails",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_SHOW_SERVICE_FILES,
- g_param_spec_boolean ("show-service-files",
- "show-service-files",
- "Show service files",
- FALSE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_SHOW_SERVICE_DIRECTORIES,
- g_param_spec_boolean ("show-service-directories",
- "show-service-directories",
- "Show service directories",
- FALSE,
- G_PARAM_READWRITE));
-
- g_type_class_add_private (object_class, sizeof (TrackerServicePriv));
-}
-
-static void
-tracker_service_init (TrackerService *service)
-{
-}
-
-static void
-service_finalize (GObject *object)
-{
- TrackerServicePriv *priv;
-
- priv = GET_PRIV (object);
-
- g_free (priv->name);
- g_free (priv->parent);
- g_free (priv->content_metadata);
-
- g_slist_foreach (priv->key_metadata, (GFunc) g_free, NULL);
- g_slist_free (priv->key_metadata);
-
- (G_OBJECT_CLASS (tracker_service_parent_class)->finalize) (object);
-}
-
-static void
-service_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TrackerServicePriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_ID:
- g_value_set_int (value, priv->id);
- break;
- case PROP_NAME:
- g_value_set_string (value, priv->name);
- break;
- case PROP_PARENT:
- g_value_set_string (value, priv->parent);
- break;
- case PROP_CONTENT_METADATA:
- g_value_set_string (value, priv->content_metadata);
- break;
- case PROP_KEY_METADATA:
- g_value_set_pointer (value, priv->key_metadata);
- break;
- case PROP_DB_TYPE:
- g_value_set_enum (value, priv->db_type);
- break;
- case PROP_ENABLED:
- g_value_set_boolean (value, priv->enabled);
- break;
- case PROP_EMBEDDED:
- g_value_set_boolean (value, priv->embedded);
- break;
- case PROP_HAS_METADATA:
- g_value_set_boolean (value, priv->has_metadata);
- break;
- case PROP_HAS_FULL_TEXT:
- g_value_set_boolean (value, priv->has_full_text);
- break;
- case PROP_HAS_THUMBS:
- g_value_set_boolean (value, priv->has_thumbs);
- break;
- case PROP_SHOW_SERVICE_FILES:
- g_value_set_boolean (value, priv->show_service_files);
- break;
- case PROP_SHOW_SERVICE_DIRECTORIES:
- g_value_set_boolean (value, priv->show_service_directories);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static void
-service_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TrackerServicePriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_ID:
- tracker_service_set_id (TRACKER_SERVICE (object),
- g_value_get_int (value));
- break;
- case PROP_NAME:
- tracker_service_set_name (TRACKER_SERVICE (object),
- g_value_get_string (value));
- break;
- case PROP_PARENT:
- tracker_service_set_parent (TRACKER_SERVICE (object),
- g_value_get_string (value));
- break;
- case PROP_CONTENT_METADATA:
- tracker_service_set_content_metadata (TRACKER_SERVICE (object),
- g_value_get_string (value));
- break;
- case PROP_KEY_METADATA:
- tracker_service_set_key_metadata (TRACKER_SERVICE (object),
- g_value_get_pointer (value));
- break;
- case PROP_DB_TYPE:
- tracker_service_set_db_type (TRACKER_SERVICE (object),
- g_value_get_enum (value));
- break;
- case PROP_ENABLED:
- tracker_service_set_enabled (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- case PROP_EMBEDDED:
- tracker_service_set_embedded (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- case PROP_HAS_METADATA:
- tracker_service_set_has_metadata (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- case PROP_HAS_FULL_TEXT:
- tracker_service_set_has_full_text (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- case PROP_HAS_THUMBS:
- tracker_service_set_has_thumbs (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- case PROP_SHOW_SERVICE_FILES:
- tracker_service_set_show_service_files (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- case PROP_SHOW_SERVICE_DIRECTORIES:
- tracker_service_set_show_service_directories (TRACKER_SERVICE (object),
- g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static gboolean
-service_int_validate (TrackerService *service,
- const gchar *property,
- gint value)
-{
-#ifdef G_DISABLE_CHECKS
- GParamSpec *spec;
- GValue value = { 0 };
- gboolean valid;
-
- spec = g_object_class_find_property (G_OBJECT_CLASS (service), property);
- g_return_val_if_fail (spec != NULL, FALSE);
-
- g_value_init (&value, spec->value_type);
- g_value_set_int (&value, verbosity);
- valid = g_param_value_validate (spec, &value);
- g_value_unset (&value);
-
- g_return_val_if_fail (valid != TRUE, FALSE);
-#endif
-
- return TRUE;
-}
-
-TrackerService *
-tracker_service_new (void)
-{
- TrackerService *service;
-
- service = g_object_new (TRACKER_TYPE_SERVICE, NULL);
-
- return service;
-}
-
-gint
-tracker_service_get_id (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), -1);
-
- priv = GET_PRIV (service);
-
- return priv->id;
-}
-
-const gchar *
-tracker_service_get_name (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), NULL);
-
- priv = GET_PRIV (service);
-
- return priv->name;
-}
-
-const gchar *
-tracker_service_get_parent (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), NULL);
-
- priv = GET_PRIV (service);
-
- return priv->parent;
-}
-
-const gchar *
-tracker_service_get_content_metadata (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), NULL);
-
- priv = GET_PRIV (service);
-
- return priv->content_metadata;
-}
-
-const GSList *
-tracker_service_get_key_metadata (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), NULL);
-
- priv = GET_PRIV (service);
-
- return priv->key_metadata;
-}
-
-TrackerDBType
-tracker_service_get_db_type (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), TRACKER_DB_TYPE_DATA);
-
- priv = GET_PRIV (service);
-
- return priv->db_type;
-}
-
-gboolean
-tracker_service_get_enabled (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->enabled;
-}
-
-gboolean
-tracker_service_get_embedded (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->embedded;
-}
-
-gboolean
-tracker_service_get_has_metadata (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->has_metadata;
-}
-
-gboolean
-tracker_service_get_has_full_text (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->has_full_text;
-}
-
-gboolean
-tracker_service_get_has_thumbs (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->has_thumbs;
-}
-
-gboolean
-tracker_service_get_show_service_files (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->show_service_files;
-}
-
-gboolean
-tracker_service_get_show_service_directories (TrackerService *service)
-{
- TrackerServicePriv *priv;
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), FALSE);
-
- priv = GET_PRIV (service);
-
- return priv->show_service_directories;
-}
-
-void
-tracker_service_set_id (TrackerService *service,
- gint value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- if (!service_int_validate (service, "id", value)) {
- return;
- }
-
- priv = GET_PRIV (service);
-
- priv->id = value;
- g_object_notify (G_OBJECT (service), "id");
-}
-
-void
-tracker_service_set_name (TrackerService *service,
- const gchar *value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- g_free (priv->name);
-
- if (value) {
- priv->name = g_strdup (value);
- } else {
- priv->name = NULL;
- }
-
- g_object_notify (G_OBJECT (service), "name");
-}
-
-void
-tracker_service_set_parent (TrackerService *service,
- const gchar *value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- g_free (priv->parent);
-
- if (value) {
- priv->parent = g_strdup (value);
- } else {
- priv->parent = NULL;
- }
-
- g_object_notify (G_OBJECT (service), "parent");
-}
-
-void
-tracker_service_set_content_metadata (TrackerService *service,
- const gchar *value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- g_free (priv->content_metadata);
-
- if (value) {
- priv->content_metadata = g_strdup (value);
- } else {
- priv->content_metadata = NULL;
- }
-
- g_object_notify (G_OBJECT (service), "content-metadata");
-}
-
-void
-tracker_service_set_key_metadata (TrackerService *service,
- const GSList *value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- g_slist_foreach (priv->key_metadata, (GFunc) g_free, NULL);
- g_slist_free (priv->key_metadata);
-
- if (value) {
- GSList *new_list;
- const GSList *l;
-
- new_list = NULL;
-
- for (l = value; l; l = l->next) {
- new_list = g_slist_prepend (new_list, g_strdup (l->data));
- }
-
- new_list = g_slist_reverse (new_list);
- priv->key_metadata = new_list;
- } else {
- priv->key_metadata = NULL;
- }
-
- g_object_notify (G_OBJECT (service), "key-metadata");
-}
-
-void
-tracker_service_set_db_type (TrackerService *service,
- TrackerDBType value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->db_type = value;
- g_object_notify (G_OBJECT (service), "db-type");
-}
-
-void
-tracker_service_set_enabled (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->enabled = value;
- g_object_notify (G_OBJECT (service), "enabled");
-}
-
-void
-tracker_service_set_embedded (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->embedded = value;
- g_object_notify (G_OBJECT (service), "embedded");
-}
-
-void
-tracker_service_set_has_metadata (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->has_metadata = value;
- g_object_notify (G_OBJECT (service), "has-metadata");
-}
-
-void
-tracker_service_set_has_full_text (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->has_full_text = value;
- g_object_notify (G_OBJECT (service), "has-full-text");
-}
-
-void
-tracker_service_set_has_thumbs (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->has_thumbs = value;
- g_object_notify (G_OBJECT (service), "has-thumbs");
-}
-
-void
-tracker_service_set_show_service_files (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->show_service_files = value;
- g_object_notify (G_OBJECT (service), "show-service-files");
-}
-
-void
-tracker_service_set_show_service_directories (TrackerService *service,
- gboolean value)
-{
- TrackerServicePriv *priv;
-
- g_return_if_fail (TRACKER_IS_SERVICE (service));
-
- priv = GET_PRIV (service);
-
- priv->show_service_directories = value;
- g_object_notify (G_OBJECT (service), "show-service-directories");
-}
diff --git a/src/trackerd/tracker-service.h b/src/trackerd/tracker-service.h
deleted file mode 100644
index 0923303f3..000000000
--- a/src/trackerd/tracker-service.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2008, Nokia (urho.konttori@nokia.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __TRACKER_SERVICES_H__
-#define __TRACKER_SERVICES_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_DB_TYPE (tracker_db_type_get_type ())
-
-typedef enum {
- TRACKER_DB_TYPE_DATA,
- TRACKER_DB_TYPE_INDEX,
- TRACKER_DB_TYPE_COMMON,
- TRACKER_DB_TYPE_CONTENT,
- TRACKER_DB_TYPE_EMAIL,
- TRACKER_DB_TYPE_CACHE,
- TRACKER_DB_TYPE_USER
-} TrackerDBType;
-
-GType tracker_db_type_get_type (void) G_GNUC_CONST;
-
-
-
-#define TRACKER_TYPE_SERVICE (tracker_service_get_type ())
-#define TRACKER_SERVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_SERVICE, TrackerService))
-#define TRACKER_SERVICE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TRACKER_TYPE_SERVICE, TrackerServiceClass))
-#define TRACKER_IS_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_SERVICE))
-#define TRACKER_IS_SERVICE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TRACKER_TYPE_SERVICE))
-#define TRACKER_SERVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_SERVICE, TrackerServiceClass))
-
-typedef struct _TrackerService TrackerService;
-typedef struct _TrackerServiceClass TrackerServiceClass;
-
-struct _TrackerService {
- GObject parent;
-};
-
-struct _TrackerServiceClass {
- GObjectClass parent_class;
-};
-
-GType tracker_service_get_type (void) G_GNUC_CONST;
-
-TrackerService *tracker_service_new (void);
-
-gint tracker_service_get_id (TrackerService *service);
-const gchar * tracker_service_get_name (TrackerService *service);
-const gchar * tracker_service_get_parent (TrackerService *service);
-const gchar * tracker_service_get_content_metadata (TrackerService *service);
-const GSList * tracker_service_get_key_metadata (TrackerService *service);
-TrackerDBType tracker_service_get_db_type (TrackerService *service);
-gboolean tracker_service_get_enabled (TrackerService *service);
-gboolean tracker_service_get_embedded (TrackerService *service);
-gboolean tracker_service_get_has_metadata (TrackerService *service);
-gboolean tracker_service_get_has_full_text (TrackerService *service);
-gboolean tracker_service_get_has_thumbs (TrackerService *service);
-gboolean tracker_service_get_show_service_files (TrackerService *service);
-gboolean tracker_service_get_show_service_directories (TrackerService *service);
-
-void tracker_service_set_id (TrackerService *service,
- gint value);
-void tracker_service_set_name (TrackerService *service,
- const gchar *value);
-void tracker_service_set_parent (TrackerService *service,
- const gchar *value);
-void tracker_service_set_content_metadata (TrackerService *service,
- const gchar *value);
-void tracker_service_set_key_metadata (TrackerService *service,
- const GSList *value);
-void tracker_service_set_db_type (TrackerService *service,
- TrackerDBType value);
-void tracker_service_set_enabled (TrackerService *service,
- gboolean value);
-void tracker_service_set_embedded (TrackerService *service,
- gboolean value);
-void tracker_service_set_has_metadata (TrackerService *service,
- gboolean value);
-void tracker_service_set_has_full_text (TrackerService *service,
- gboolean value);
-void tracker_service_set_has_thumbs (TrackerService *service,
- gboolean value);
-void tracker_service_set_show_service_files (TrackerService *service,
- gboolean value);
-void tracker_service_set_show_service_directories (TrackerService *service,
- gboolean value);
-
-G_END_DECLS
-
-#endif /* __TRACKER_SERVICE_H__ */
-
diff --git a/src/trackerd/tracker-utils.c b/src/trackerd/tracker-utils.c
deleted file mode 100644
index 42a46543d..000000000
--- a/src/trackerd/tracker-utils.c
+++ /dev/null
@@ -1,2639 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- * Copyright (C) 2007, Michal Pryc (Michal.Pryc@Sun.Com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-
-#include "config.h"
-
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/statvfs.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <limits.h>
-#include <zlib.h>
-#include <math.h>
-
-#ifdef OS_WIN32
-#include <conio.h>
-#include "mingw-compat.h"
-#else
-#include <sys/resource.h>
-#endif
-
-#include <glib/gprintf.h>
-#include <glib/gstdio.h>
-#include <glib/gpattern.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-config.h>
-#include "../xdgmime/xdgmime.h"
-
-#include "tracker-dbus.h"
-#include "tracker-utils.h"
-#include "tracker-indexer.h"
-#include "tracker-process-files.h"
-#include "tracker-os-dependant.h"
-
-extern Tracker *tracker;
-
-char *tracker_actions[] = {
- "TRACKER_ACTION_IGNORE", "TRACKER_ACTION_CHECK", "TRACKER_ACTION_DELETE", "TRACKER_ACTION_DELETE_SELF", "TRACKER_ACTION_CREATE","TRACKER_ACTION_MOVED_FROM",
- "TRACKER_ACTION_MOVED_TO","TRACKER_ACTION_FILE_CHECK", "TRACKER_ACTION_FILE_CHANGED","TRACKER_ACTION_FILE_DELETED", "TRACKER_ACTION_FILE_CREATED",
- "TRACKER_ACTION_FILE_MOVED_FROM", "TRACKER_ACTION_FILE_MOVED_TO", "TRACKER_ACTION_WRITABLE_FILE_CLOSED","TRACKER_ACTION_DIRECTORY_CHECK",
- "TRACKER_ACTION_DIRECTORY_CREATED","TRACKER_ACTION_DIRECTORY_DELETED","TRACKER_ACTION_DIRECTORY_UNMOUNTED", "TRACKER_ACTION_DIRECTORY_MOVED_FROM",
- "TRACKER_ACTION_DIRECTORY_MOVED_TO", "TRACKER_ACTION_DIRECTORY_REFRESH", "TRACKER_ACTION_EXTRACT_METADATA",
- NULL};
-
-
-#define ZLIBBUFSIZ 8192
-#define TEXT_SNIFF_SIZE 4096
-#define MAX_INDEX_FILE_SIZE 2000000000
-
-static int info_allocated = 0;
-static int info_deallocated = 0;
-
-
-static const char *months[] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-};
-
-
-static const char imonths[] = {
- '1', '2', '3', '4', '5',
- '6', '7', '8', '9', '0', '1', '2'
-};
-
-
-char **
-tracker_make_array_null_terminated (char **array, int length)
-{
- char **res = NULL;
- int i;
-
- res = g_new (char *, length +1);
-
- for (i = 0; i < length; i++) {
- res[i] = array[i];
- }
-
- res[length] = NULL;
-
- return res;
-}
-
-
-static gboolean
-is_int (const char *in)
-{
- int i, len;
-
- if (!in) {
- return FALSE;
- }
-
- len = strlen (in);
-
- if (len < 1) {
- return FALSE;
- }
-
- for (i = 0; i < len; i++) {
-
- if ( !g_ascii_isdigit (in[i]) ) {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-static int
-parse_month (const char *month)
-{
- int i;
-
- for (i = 0; i < 12; i++) {
- if (!strncmp (month, months[i], 3))
- return i;
- }
-
- return -1;
-}
-
-
-/* determine date format and convert to ISO 8601 format*/
-
-char *
-tracker_format_date (const char *timestamp)
-{
- char tmp_buf[30];
- int len;
-
- if (!timestamp) {
- return NULL;
- }
-
- len = strlen (timestamp);
-
- /* we cannot format a date without at least a four digit year */
- if (len < 4) {
- return NULL;
- }
-
- /* check for year only dates (EG ID3 music tags might have Audio.ReleaseDate as 4 digit year) */
-
- if (len == 4) {
- if (is_int (timestamp)) {
-
- tmp_buf[0] = timestamp[0];
- tmp_buf[1] = timestamp[1];
- tmp_buf[2] = timestamp[2];
- tmp_buf[3] = timestamp[3];
- tmp_buf[4] = '-';
- tmp_buf[5] = '0';
- tmp_buf[6] = '1';
- tmp_buf[7] = '-';
- tmp_buf[8] = '0';
- tmp_buf[9] = '1';
- tmp_buf[10] = 'T';
- tmp_buf[11] = '0';
- tmp_buf[12] = '0';
- tmp_buf[13] = ':';
- tmp_buf[14] = '0';
- tmp_buf[15] = '0';
- tmp_buf[16] = ':';
- tmp_buf[17] = '0';
- tmp_buf[18] = '0';
- tmp_buf[19] = '\0';
-
- return g_strdup (tmp_buf);
-
- } else {
- return NULL;
- }
-
- /* check for date part only YYYY-MM-DD*/
-
- } else if (len == 10) {
-
- tmp_buf[0] = timestamp[0];
- tmp_buf[1] = timestamp[1];
- tmp_buf[2] = timestamp[2];
- tmp_buf[3] = timestamp[3];
- tmp_buf[4] = '-';
- tmp_buf[5] = timestamp[5];
- tmp_buf[6] = timestamp[6];
- tmp_buf[7] = '-';
- tmp_buf[8] = timestamp[8];
- tmp_buf[9] = timestamp[9];
- tmp_buf[10] = 'T';
- tmp_buf[11] = '0';
- tmp_buf[12] = '0';
- tmp_buf[13] = ':';
- tmp_buf[14] = '0';
- tmp_buf[15] = '0';
- tmp_buf[16] = ':';
- tmp_buf[17] = '0';
- tmp_buf[18] = '0';
- tmp_buf[19] = '\0';
-
- return g_strdup (tmp_buf);
-
- /* check for pdf format EG 20050315113224-08'00' or 20050216111533Z */
-
- } else if (len == 14) {
-
- tmp_buf[0] = timestamp[0];
- tmp_buf[1] = timestamp[1];
- tmp_buf[2] = timestamp[2];
- tmp_buf[3] = timestamp[3];
- tmp_buf[4] = '-';
- tmp_buf[5] = timestamp[4];
- tmp_buf[6] = timestamp[5];
- tmp_buf[7] = '-';
- tmp_buf[8] = timestamp[6];
- tmp_buf[9] = timestamp[7];
- tmp_buf[10] = 'T';
- tmp_buf[11] = timestamp[8];
- tmp_buf[12] = timestamp[9];
- tmp_buf[13] = ':';
- tmp_buf[14] = timestamp[10];
- tmp_buf[15] = timestamp[11];
- tmp_buf[16] = ':';
- tmp_buf[17] = timestamp[12];
- tmp_buf[18] = timestamp[13];
- tmp_buf[19] = '\0';
-
- return g_strdup (tmp_buf);
-
-
- } else if (len == 15 && timestamp[14] == 'Z') {
-
- tmp_buf[0] = timestamp[0];
- tmp_buf[1] = timestamp[1];
- tmp_buf[2] = timestamp[2];
- tmp_buf[3] = timestamp[3];
- tmp_buf[4] = '-';
- tmp_buf[5] = timestamp[4];
- tmp_buf[6] = timestamp[5];
- tmp_buf[7] = '-';
- tmp_buf[8] = timestamp[6];
- tmp_buf[9] = timestamp[7];
- tmp_buf[10] = 'T';
- tmp_buf[11] = timestamp[8];
- tmp_buf[12] = timestamp[9];
- tmp_buf[13] = ':';
- tmp_buf[14] = timestamp[10];
- tmp_buf[15] = timestamp[11];
- tmp_buf[16] = ':';
- tmp_buf[17] = timestamp[12];
- tmp_buf[18] = timestamp[13];
- tmp_buf[19] = 'Z';
- tmp_buf[20] = '\0';
-
- return g_strdup (tmp_buf);
-
-
- } else if (len == 21 && (timestamp[14] == '-' || timestamp[14] == '+' )) {
-
- tmp_buf[0] = timestamp[0];
- tmp_buf[1] = timestamp[1];
- tmp_buf[2] = timestamp[2];
- tmp_buf[3] = timestamp[3];
- tmp_buf[4] = '-';
- tmp_buf[5] = timestamp[4];
- tmp_buf[6] = timestamp[5];
- tmp_buf[7] = '-';
- tmp_buf[8] = timestamp[6];
- tmp_buf[9] = timestamp[7];
- tmp_buf[10] = 'T';
- tmp_buf[11] = timestamp[8];
- tmp_buf[12] = timestamp[9];
- tmp_buf[13] = ':';
- tmp_buf[14] = timestamp[10];
- tmp_buf[15] = timestamp[11];
- tmp_buf[16] = ':';
- tmp_buf[17] = timestamp[12];
- tmp_buf[18] = timestamp[13];
- tmp_buf[19] = timestamp[14];
- tmp_buf[20] = timestamp[15];
- tmp_buf[21] = timestamp[16];
- tmp_buf[22] = ':';
- tmp_buf[23] = timestamp[18];
- tmp_buf[24] = timestamp[19];
- tmp_buf[25] = '\0';
-
- return g_strdup (tmp_buf);
-
- /* check for msoffice date format "Mon Feb 9 10:10:00 2004" */
-
- } else if ((len == 24) && (timestamp[3] == ' ')) {
- int num_month;
- char mon1;
- char day1;
-
- num_month = parse_month (timestamp + 4);
-
- mon1 = imonths[num_month];
-
- if (timestamp[8] == ' ') {
- day1 = '0';
- } else {
- day1 = timestamp[8];
- }
-
- tmp_buf[0] = timestamp[20];
- tmp_buf[1] = timestamp[21];
- tmp_buf[2] = timestamp[22];
- tmp_buf[3] = timestamp[23];
- tmp_buf[4] = '-';
-
- if (num_month < 10) {
- tmp_buf[5] = '0';
- tmp_buf[6] = mon1;
- } else {
- tmp_buf[5] = '1';
- tmp_buf[6] = mon1;
- }
-
- tmp_buf[7] = '-';
- tmp_buf[8] = day1;
- tmp_buf[9] = timestamp[9];
- tmp_buf[10] = 'T';
- tmp_buf[11] = timestamp[11];
- tmp_buf[12] = timestamp[12];
- tmp_buf[13] = ':';
- tmp_buf[14] = timestamp[14];
- tmp_buf[15] = timestamp[15];
- tmp_buf[16] = ':';
- tmp_buf[17] = timestamp[17];
- tmp_buf[18] = timestamp[18];
- tmp_buf[19] = '\0';
-
- return g_strdup (tmp_buf);
-
- /* check for Exif date format "2005:04:29 14:56:54" */
-
- } else if ((len == 19) && (timestamp[4] == ':') && (timestamp[7] == ':')) {
-
- tmp_buf[0] = timestamp[0];
- tmp_buf[1] = timestamp[1];
- tmp_buf[2] = timestamp[2];
- tmp_buf[3] = timestamp[3];
- tmp_buf[4] = '-';
- tmp_buf[5] = timestamp[5];
- tmp_buf[6] = timestamp[6];
- tmp_buf[7] = '-';
- tmp_buf[8] = timestamp[8];
- tmp_buf[9] = timestamp[9];
- tmp_buf[10] = 'T';
- tmp_buf[11] = timestamp[11];
- tmp_buf[12] = timestamp[12];
- tmp_buf[13] = ':';
- tmp_buf[14] = timestamp[14];
- tmp_buf[15] = timestamp[15];
- tmp_buf[16] = ':';
- tmp_buf[17] = timestamp[17];
- tmp_buf[18] = timestamp[18];
- tmp_buf[19] = '\0';
-
- return g_strdup (tmp_buf);
- }
-
- return g_strdup (timestamp);
-}
-
-
-static gboolean
-is_valid_8601_datetime (const char *timestamp)
-{
- int len;
-
- len = strlen (timestamp);
-
- if (len < 19) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[0]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[1]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[2]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[3]) ) {
- return FALSE;
- }
-
- if (timestamp[4] != '-') {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[5]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[6]) ) {
- return FALSE;
- }
-
- if (timestamp[7] != '-') {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[8]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[9]) ) {
- return FALSE;
- }
-
- if ( (timestamp[10] != 'T') ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[11]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[12]) ) {
- return FALSE;
- }
-
- if (timestamp[13] != ':') {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[14]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[15]) ) {
- return FALSE;
- }
-
- if (timestamp[16] != ':'){
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[17]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[18]) ){
- return FALSE;
- }
-
- if (len == 20) {
- if (timestamp[19] != 'Z') {
- return FALSE;
- }
- } else {
-
- if (len > 20) {
-
- /* format must be YYYY-MM-DDThh:mm:ss+xx or YYYY-MM-DDThh:mm:ss+xx:yy */
-
- if (len < 22 || len > 25) {
- return FALSE;
- }
-
- if ( (timestamp[19] != '+') && (timestamp[19] != '-') ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[20]) ) {
- return FALSE;
- }
-
- if ( !g_ascii_isdigit (timestamp[21]) ) {
- return FALSE;
- }
- }
- }
-
- return TRUE;
-}
-
-
-time_t
-tracker_str_to_date (const char *timestamp)
-{
- struct tm tm;
- long val;
- time_t tt;
-
- g_return_val_if_fail (timestamp, -1);
-
- /* we should have a valid iso 8601 date in format YYYY-MM-DDThh:mm:ss with optional TZ*/
- if (!is_valid_8601_datetime (timestamp)) {
- return -1;
- }
-
- memset (&tm, 0, sizeof (struct tm));
-
- val = strtoul (timestamp, (char **)&timestamp, 10);
-
- if (*timestamp == '-') {
- // YYYY-MM-DD
- tm.tm_year = val - 1900;
- timestamp++;
- tm.tm_mon = strtoul (timestamp, (char **)&timestamp, 10) -1;
- if (*timestamp++ != '-') {
- return -1;
- }
- tm.tm_mday = strtoul (timestamp, (char **)&timestamp, 10);
- }
-
- if (*timestamp++ != 'T') {
- tracker_error ("ERROR: date validation failed for %s st %c", timestamp, *timestamp);
- return -1;
- }
-
- val = strtoul (timestamp, (char **)&timestamp, 10);
-
- if (*timestamp == ':') {
- // hh:mm:ss
- tm.tm_hour = val;
- timestamp++;
- tm.tm_min = strtoul (timestamp, (char **)&timestamp, 10);
- if (*timestamp++ != ':') {
- return -1;
- }
- tm.tm_sec = strtoul (timestamp, (char **)&timestamp, 10);
- }
-
- tt = mktime (&tm);
- /* mktime() always assumes that "tm" is in locale time but
- we want to keep control on time, so we go to UTC */
- tt -= timezone;
-
- if (*timestamp == '+' || *timestamp == '-') {
- int sign;
-
- sign = (*timestamp++ == '+') ? -1 : 1;
-
- /* we have format hh:mm or hhmm */
-
- /* now, we are reading hours */
- if (timestamp[0] && timestamp[1]) {
- if (g_ascii_isdigit (timestamp[0]) && g_ascii_isdigit (timestamp[1])) {
- gchar buff[3];
-
- buff[0] = timestamp[0];
- buff[1] = timestamp[1];
- buff[2] = '\0';
-
- val = strtoul (buff, NULL, 10);
- tt += sign * (3600 * val);
- timestamp += 2;
- }
-
- if (*timestamp == ':' || *timestamp == '\'') {
- timestamp++;
- }
- }
-
- /* now, we are reading minutes */
- if (timestamp[0] && timestamp[1]) {
- if (g_ascii_isdigit (timestamp[0]) && g_ascii_isdigit (timestamp[1])) {
- gchar buff[3];
-
- buff[0] = timestamp[0];
- buff[1] = timestamp[1];
- buff[2] = '\0';
-
- val = strtoul (buff, NULL, 10);
- tt += sign * (60 * val);
- timestamp += 2;
- }
- }
- } else {
- /*
- if (*timestamp == 'Z') {
- // no need to do anything if already utc
- }
- */
- }
-
- return tt;
-}
-
-
-char *
-tracker_date_to_str (time_t date_time)
-{
- char buffer[30];
- struct tm loctime;
- size_t count;
-
- memset (buffer, '\0', sizeof (buffer));
- memset (&loctime, 0, sizeof (struct tm));
-
- localtime_r (&date_time, &loctime);
-
- /* output is ISO 8160 format : "YYYY-MM-DDThh:mm:ss+zz:zz" */
- count = strftime (buffer, sizeof (buffer), "%FT%T%z", &loctime);
-
- return (count > 0) ? g_strdup (buffer) : NULL;
-}
-
-
-inline gboolean
-tracker_is_empty_string (const char *s)
-{
- return s == NULL || s[0] == '\0';
-}
-
-
-gchar *
-tracker_long_to_str (glong i)
-{
- return g_strdup_printf ("%ld", i);
-}
-
-
-gchar *
-tracker_int_to_str (gint i)
-{
- return g_strdup_printf ("%d", i);
-}
-
-
-gchar *
-tracker_uint_to_str (guint i)
-{
- return g_strdup_printf ("%u", i);
-}
-
-
-gchar *
-tracker_gint32_to_str (gint32 i)
-{
- return g_strdup_printf ("%" G_GINT32_FORMAT, i);
-}
-
-
-gchar *
-tracker_guint32_to_str (guint32 i)
-{
- return g_strdup_printf ("%" G_GUINT32_FORMAT, i);
-}
-
-
-gboolean
-tracker_str_to_uint (const char *s, guint *ret)
-{
- unsigned long int n;
-
- g_return_val_if_fail (s, FALSE);
-
- n = strtoul (s, NULL, 10);
-
- if (n > G_MAXUINT) {
- *ret = 0;
- return FALSE;
-
- } else {
- *ret = (guint) n;
- return TRUE;
- }
-}
-
-
-int
-tracker_str_in_array (const char *str, char **array)
-{
- int i;
- char **st;
-
- i = 0;
-
- for (st = array; *st; st++) {
- if (strcasecmp (*st, str) == 0) {
- return i;
- }
- i++;
- }
-
- return -1;
-}
-
-
-char *
-tracker_get_radix_by_suffix (const char *str, const char *suffix)
-{
- g_return_val_if_fail (str, NULL);
- g_return_val_if_fail (suffix, NULL);
-
- if (g_str_has_suffix (str, suffix)) {
- return g_strndup (str, g_strrstr (str, suffix) - str);
- } else {
- return NULL;
- }
-}
-
-
-char *
-tracker_escape_metadata (const char *in)
-{
- if (!in) {
- return NULL;
- }
-
- GString *gs = g_string_new ("");
-
- for(; *in; in++) {
- if (*in == '|') {
- g_string_append_c (gs, 30);
- } else {
- g_string_append_c (gs, *in);
- }
- }
-
- return g_string_free (gs, FALSE);
-}
-
-
-
-char *
-tracker_unescape_metadata (const char *in)
-{
- if (!in) {
- return NULL;
- }
-
- GString *gs = g_string_new ("");
-
- for(; *in; in++) {
- if (*in == 30) {
- g_string_append_c (gs, '|');
- } else {
- g_string_append_c (gs, *in);
- }
- }
-
- return g_string_free (gs, FALSE);
-}
-
-
-
-void
-tracker_remove_dirs (const char *root_dir)
-{
- GQueue *dirs;
- GSList *dirs_to_remove;
-
- dirs = g_queue_new ();
-
- g_queue_push_tail (dirs, g_strdup (root_dir));
-
- dirs_to_remove = NULL;
-
- while (!g_queue_is_empty (dirs)) {
- char *dir;
- GDir *dirp;
-
- dir = g_queue_pop_head (dirs);
-
- dirs_to_remove = g_slist_prepend (dirs_to_remove, dir);
-
- if ((dirp = g_dir_open (dir, 0, NULL))) {
- const char *file;
-
- while ((file = g_dir_read_name (dirp))) {
- char *full_filename;
-
- full_filename = g_build_filename (dir, file, NULL);
-
- if (g_file_test (full_filename, G_FILE_TEST_IS_DIR)) {
- g_queue_push_tail (dirs, full_filename);
- } else {
- g_unlink (full_filename);
- g_free (full_filename);
- }
- }
-
- g_dir_close (dirp);
- }
- }
-
- g_queue_free (dirs);
-
- /* remove directories (now they are empty) */
- g_slist_foreach (dirs_to_remove, (GFunc) g_rmdir, NULL);
-
- g_slist_foreach (dirs_to_remove, (GFunc) g_free, NULL);
-
- g_slist_free (dirs_to_remove);
-}
-
-
-
-char *
-tracker_format_search_terms (const char *str, gboolean *do_bool_search)
-{
- char *def_prefix;
- char **terms;
-
- *do_bool_search = FALSE;
-
- def_prefix = "+";
-
- if (strlen (str) < 3) {
- return g_strdup (str);
- }
-
- /* if already has quotes then do nothing */
- if (strchr (str, '"') || strchr (str, '*')) {
- *do_bool_search = TRUE;
- return g_strdup (str);
- }
-
- if (strstr (str, " or ")) {
- def_prefix = " ";
- }
-
- terms = g_strsplit (str, " ", -1);
-
- if (terms) {
- GString *search_term;
- char **st;
- char *prefix;
-
- search_term = g_string_new (" ");
-
- for (st = terms; *st; st++) {
-
- if (*st[0] == '-') {
- prefix = " ";
- } else {
- prefix = def_prefix;
- }
-
- if ((*st[0] != '-') && strchr (*st, '-')) {
- char *s;
-
- *do_bool_search = TRUE;
-
- s = g_strconcat ("\"", *st, "\"", NULL);
-
- g_string_append (search_term, s);
-
- g_free (s);
-
- } else {
- g_string_append_printf (search_term, " %s%s ", prefix, *st);
- }
- }
-
- g_strfreev (terms);
-
- return g_string_free (search_term, FALSE);
- }
-
- return g_strdup (str);
-}
-
-
-void
-tracker_print_object_allocations (void)
-{
- tracker_log ("Total allocations = %d, total deallocations = %d", info_allocated, info_deallocated);
-}
-
-void
-tracker_free_array (char **array, int row_count)
-{
- if (array && (row_count > 0)) {
- int i;
-
- for (i = 0; i < row_count; i++) {
- if (array[i]) {
- g_free (array[i]);
- }
- }
-
- g_free (array);
- }
-}
-
-
-FileInfo *
-tracker_create_file_info (const char *uri, TrackerChangeAction action, int counter, WatchTypes watch)
-{
- FileInfo *info;
-
- info = g_slice_new0 (FileInfo);
-
- info->action = action;
- info->uri = g_strdup (uri);
-
- info->counter = counter;
- info->file_id = 0;
-
- info->file_type = FILE_ORDINARY;
-
- info->watch_type = watch;
- info->is_directory = FALSE;
-
- info->is_link = FALSE;
- info->link_id = 0;
- info->link_path = NULL;
- info->link_name = NULL;
-
- info->mime = NULL;
- info->file_size = 0;
- info->permissions = g_strdup ("-r--r--r--");
- info->mtime = 0;
- info->atime = 0;
- info->indextime = 0;
- info->offset = 0;
- info->aux_id = -1;
-
- info->is_hidden = FALSE;
-
- info->is_new = TRUE;
- info->service_type_id = -1;
-
- info->ref_count = 1;
- info_allocated ++;
-
- return info;
-}
-
-
-FileInfo *
-tracker_free_file_info (FileInfo *info)
-{
- if (!info) {
- return NULL;
- }
-
- if (info->uri) {
- g_free (info->uri);
- }
-
- if (info->moved_to_uri) {
- g_free (info->moved_to_uri);
- }
-
- if (info->link_path) {
- g_free (info->link_path);
- }
-
- if (info->link_name) {
- g_free (info->link_name);
- }
-
- if (info->mime) {
- g_free (info->mime);
- }
-
- if (info->permissions) {
- g_free (info->permissions);
- }
-
- g_slice_free (FileInfo, info);
-
- info_deallocated ++;
-
- return NULL;
-}
-
-
-/* ref count FileInfo instances */
-FileInfo *
-tracker_inc_info_ref (FileInfo *info)
-{
- if (info) {
- g_atomic_int_inc (&info->ref_count);
- }
-
- return info;
-}
-
-
-FileInfo *
-tracker_dec_info_ref (FileInfo *info)
-{
- if (!info) {
- return NULL;
- }
-
- if g_atomic_int_dec_and_test (&info->ref_count) {
- tracker_free_file_info (info);
- return NULL;
- }
-
- return info;
-}
-
-
-FileInfo *
-tracker_get_pending_file_info (guint32 file_id, const char *uri, const char *mime, int counter, TrackerChangeAction action, gboolean is_directory)
-{
- FileInfo *info;
-
- info = g_slice_new0 (FileInfo);
-
- info->action = action;
- info->uri = g_strdup (uri);
-
- info->counter = counter;
- info->file_id = file_id;
-
- info->file_type = FILE_ORDINARY;
-
- info->is_directory = is_directory;
-
- info->is_link = FALSE;
- info->link_id = 0;
- info->link_path = NULL;
- info->link_name = NULL;
-
- if (mime) {
- info->mime = g_strdup (mime);
- } else {
- info->mime = NULL;
- }
-
- info->file_size = 0;
- info->permissions = g_strdup ("-r--r--r--");
- info->mtime = 0;
- info->atime = 0;
- info->indextime = 0;
- info->offset = 0;
-
- info->service_type_id = -1;
- info->is_new = TRUE;
-
- info->ref_count = 1;
- info_allocated ++;
-
- return info;
-}
-
-
-gint32
-tracker_get_file_mtime (const char *uri)
-{
- struct stat finfo;
- char *uri_in_locale;
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (uri_in_locale) {
- if (g_lstat (uri_in_locale, &finfo) == -1) {
- g_free (uri_in_locale);
-
- return 0;
- }
-
- } else {
- tracker_error ("ERROR: uri could not be converted to locale format");
-
- return 0;
- }
-
- g_free (uri_in_locale);
-
- return (gint32) finfo.st_mtime;
-}
-
-
-FileInfo *
-tracker_get_file_info (FileInfo *info)
-{
- struct stat finfo;
- char *str, *uri_in_locale;
-
- if (!info || !info->uri) {
- return info;
- }
-
- uri_in_locale = g_filename_from_utf8 (info->uri, -1, NULL, NULL, NULL);
-
- if (uri_in_locale) {
- if (g_lstat (uri_in_locale, &finfo) == -1) {
- g_free (uri_in_locale);
-
- return info;
- }
-
- } else {
- tracker_error ("ERROR: info->uri could not be converted to locale format");
-
- return NULL;
- }
-
- info->is_directory = S_ISDIR (finfo.st_mode);
- info->is_link = S_ISLNK (finfo.st_mode);
-
- if (info->is_link && !info->link_name) {
- str = g_file_read_link (uri_in_locale, NULL);
-
- if (str) {
- char *link_uri;
-
- link_uri = g_filename_to_utf8 (str, -1, NULL, NULL, NULL);
- info->link_name = g_path_get_basename (link_uri);
- info->link_path = g_path_get_dirname (link_uri);
- g_free (link_uri);
- g_free (str);
- }
- }
-
- g_free (uri_in_locale);
-
- if (!info->is_directory) {
- info->file_size = (guint32) finfo.st_size;
- } else {
- if (info->watch_type == WATCH_OTHER) {
- info->watch_type = WATCH_SUBFOLDER;
- }
- }
-
- g_free (info->permissions);
- info->permissions = tracker_create_permission_string (finfo);
-
- info->mtime = finfo.st_mtime;
- info->atime = finfo.st_atime;
-
- return info;
-}
-
-
-GSList *
-tracker_get_service_dirs (const char *service)
-{
- GSList *list = NULL, *tmp;
-
- if (!service) {
- return NULL;
- }
-
- for (tmp = tracker->service_directory_list; tmp; tmp = tmp->next) {
-
- char *path = (char *) tmp->data;
- char *path_service = g_hash_table_lookup (tracker->service_directory_table, path);
-
- if (strcasecmp (service, path_service) ==0) {
- list = g_slist_prepend (list, path);
- }
- }
-
- return list;
-}
-
-
-void
-tracker_add_service_path (const char *service, const char *path)
-{
- if (!service || !path || !tracker_file_is_valid (path)) {
- return;
- }
-
- char *dir_path = g_strdup (path);
- char *service_type = g_strdup (service);
-
- tracker->service_directory_list = g_slist_prepend (tracker->service_directory_list, g_strdup (path));
- g_hash_table_insert (tracker->service_directory_table, dir_path, service_type);
-}
-
-
-void
-tracker_del_service_path (const char *service, const char *path)
-{
- if (!service || !path) {
- return;
- }
- GSList *found = g_slist_find_custom (tracker->service_directory_list, path, (GCompareFunc) strcmp);
- if (found) {
- g_free (found->data);
- tracker->service_directory_list = g_slist_remove_link (tracker->service_directory_list, found);
- g_slist_free (found);
- }
- g_hash_table_remove (tracker->service_directory_table, path);
-}
-
-char *
-tracker_get_service_for_uri (const char *uri)
-{
- GSList *tmp;
-
- /* check service dir list to see if a prefix */
- for (tmp = tracker->service_directory_list; tmp; tmp = tmp->next) {
- char *prefix;
-
- prefix = (char *) tmp->data;
- if (prefix && g_str_has_prefix (uri, prefix)) {
- return g_strdup (g_hash_table_lookup (tracker->service_directory_table, prefix));
- }
- }
-
- return g_strdup ("Files");
-}
-
-
-gboolean
-tracker_is_service_file (const char *uri)
-{
- char *service;
- gboolean result;
-
- service = tracker_get_service_for_uri (uri);
-
- result = (service && strcmp (service, "Files") != 0);
-
- g_free (service);
-
- return result;
-}
-
-
-gboolean
-tracker_file_is_valid (const char *uri)
-{
- gboolean convert_ok;
- char *uri_in_locale;
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- tracker_error ("ERROR: uri could not be converted to locale format");
- g_free (uri_in_locale);
- return FALSE;
- }
-
- /* g_file_test(file,G_FILE_TEST_EXISTS) uses the access() system call and so needs locale filenames. */
- convert_ok = (tracker_check_uri (uri) && g_file_test (uri_in_locale, G_FILE_TEST_IS_REGULAR|G_FILE_TEST_IS_DIR|G_FILE_TEST_IS_SYMLINK));
-
- g_free (uri_in_locale);
-
- return convert_ok;
-}
-
-
-gboolean
-tracker_file_is_indexable (const char *uri)
-{
- char *uri_in_locale;
- struct stat finfo;
- gboolean convert_ok;
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- tracker_error ("ERROR: uri could not be converted to locale format");
- return FALSE;
- }
-
- g_lstat (uri_in_locale, &finfo);
-
- g_free (uri_in_locale);
-
- convert_ok = (!S_ISDIR (finfo.st_mode) && S_ISREG (finfo.st_mode));
-
- if (convert_ok) {
- tracker_debug ("file %s is indexable", uri);
- } else {
- tracker_debug ("file %s is *not* indexable", uri);
- }
-
- return convert_ok;
-}
-
-
-static inline gboolean
-is_utf8 (const gchar *buffer, gint buffer_length)
-{
- gchar *end;
-
- /* code in this function modified from gnome-vfs */
-
- if (g_utf8_validate ((gchar *)buffer, buffer_length, (const gchar**)&end)) {
- return TRUE;
- } else {
- /* Check whether the string was truncated in the middle of
- * a valid UTF8 char, or if we really have an invalid
- * UTF8 string
- */
- gint remaining_bytes = buffer_length;
-
- remaining_bytes -= (end-((gchar *)buffer));
-
- if (remaining_bytes > 4) {
- return FALSE;
- }
-
- if (g_utf8_get_char_validated (end, (gsize) remaining_bytes) == (gunichar) -2) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-static gboolean
-is_text_file (const gchar *uri)
-{
- char buffer[TEXT_SNIFF_SIZE];
- int buffer_length = 0;
- GError *err = NULL;
- int fd;
-
- fd = tracker_file_open (uri, FALSE);
-
- buffer_length = read (fd, buffer, TEXT_SNIFF_SIZE);
-
- if (buffer_length < 3) {
- goto return_false;
- }
-
- /* Don't allow embedded zeros in textfiles. */
- if (memchr (buffer, 0, buffer_length) != NULL) {
- goto return_false;
- }
-
- if (is_utf8 (buffer, buffer_length)) {
- goto return_true;
- } else {
- gchar *tmp = g_locale_to_utf8 (buffer, buffer_length, NULL, NULL, &err);
- g_free (tmp);
-
- if (err) {
- gboolean result = FALSE;
-
- if (err->code != G_CONVERT_ERROR_ILLEGAL_SEQUENCE && err->code != G_CONVERT_ERROR_FAILED && err->code != G_CONVERT_ERROR_NO_CONVERSION) {
- result = TRUE;
- }
-
- g_error_free (err);
-
- if (result) goto return_true;
-
- }
- }
-
-return_false:
- tracker_file_close (fd, TRUE);
- return FALSE;
-
-return_true:
- tracker_file_close (fd, FALSE);
- return TRUE;
-}
-
-
-char *
-tracker_get_mime_type (const char *uri)
-{
- struct stat finfo;
- char *uri_in_locale;
- const char *result;
- char *mime;
-
- if (!tracker_file_is_valid (uri)) {
- tracker_log ("WARNING: file %s is no longer valid", uri);
- return g_strdup ("unknown");
- }
-
- uri_in_locale = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!uri_in_locale) {
- tracker_error ("ERROR: uri could not be converted to locale format");
- return g_strdup ("unknown");
- }
-
- g_lstat (uri_in_locale, &finfo);
-
- if (S_ISLNK (finfo.st_mode) && S_ISDIR (finfo.st_mode)) {
- g_free (uri_in_locale);
- return g_strdup ("symlink");
- }
-
-
- /* handle iso files as they can be mistaken for video files */
-
- if (g_str_has_suffix (uri, ".iso")) {
- return g_strdup ("application/x-cd-image");
- }
-
- result = xdg_mime_get_mime_type_for_file (uri, NULL);
-
- if (!result || (result == XDG_MIME_TYPE_UNKNOWN)) {
-
- if (is_text_file (uri_in_locale)) {
- mime = g_strdup ("text/plain");
- } else {
- mime = g_strdup ("unknown");
- }
- } else {
- mime = g_strdup (result);
- }
-
- g_free (uri_in_locale);
-
- return mime;
-}
-
-
-char *
-tracker_get_vfs_path (const char* uri)
-{
- if (uri != NULL && strchr (uri, G_DIR_SEPARATOR) != NULL) {
- char *p;
- int len;
-
- len = strlen (uri);
- p = (char *) (uri + (len - 1));
-
- /* Skip trailing slash */
- if (p != uri && *p == G_DIR_SEPARATOR) {
- p--;
- }
-
- /* Search backwards to the next slash. */
- while (p != uri && *p != G_DIR_SEPARATOR) {
- p--;
- }
-
- if (p[0] != '\0') {
-
- char *new_uri_text;
- int length;
-
- length = p - uri;
-
- if (length == 0) {
- new_uri_text = g_strdup (G_DIR_SEPARATOR_S);
- } else {
- new_uri_text = g_malloc (length + 1);
- memcpy (new_uri_text, uri, length);
- new_uri_text[length] = '\0';
- }
-
- return new_uri_text;
- } else {
- return g_strdup (G_DIR_SEPARATOR_S);
- }
- }
-
- return NULL;
-}
-
-
-char *
-tracker_get_vfs_name (const char* uri)
-{
- if (uri != NULL && strchr (uri, G_DIR_SEPARATOR) != NULL) {
- char *p, *res, *tmp, *result;
- int len;
-
- len = strlen (uri);
-
- tmp = g_strdup (uri);
-
- p = (tmp + (len - 1));
-
- /* Skip trailing slash */
- if (p != tmp && *p == G_DIR_SEPARATOR) {
- *p = '\0';
- }
-
- /* Search backwards to the next slash. */
- while (p != tmp && *p != G_DIR_SEPARATOR) {
- p--;
- }
-
- res = p+1;
-
- if (res && res[0] != '\0') {
- result = g_strdup (res);
- g_free (tmp);
-
- return result;
- }
-
- g_free (tmp);
-
- }
-
- return g_strdup (" ");
-}
-
-
-gboolean
-tracker_is_directory (const char *dir)
-{
- char *dir_in_locale;
-
- dir_in_locale = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL);
-
- if (dir_in_locale) {
- struct stat finfo;
-
- g_lstat (dir_in_locale, &finfo);
-
- g_free (dir_in_locale);
-
- return S_ISDIR (finfo.st_mode);
-
- } else {
- tracker_error ("ERROR: dir could not be converted to locale format");
- }
-
- return FALSE;
-}
-
-
-/*
-static int
-has_prefix (const char *str1, const char *str2)
-{
- if (strcmp (str1, str2) == 0) {
- return 0;
- } else {
- char *compare_str;
-
- compare_str = g_strconcat (str1, G_DIR_SEPARATOR_S, NULL);
-
- if (g_str_has_prefix (str2, compare_str)) {
- return 0;
- }
- g_free (compare_str);
- return 1;
- }
-}
-*/
-
-
-GSList *
-tracker_string_list_to_gslist (const gchar **array)
-{
- GSList *list = NULL;
- gint i;
-
- for (i = 0; array[i]; i++) {
- if (tracker_is_empty_string (array[i])) {
- continue;
- }
-
- list = g_slist_prepend (list, g_strdup (array[i]));
- }
-
- return g_slist_reverse (list);
-}
-
-gchar **
-tracker_gslist_to_string_list (GSList *list)
-{
- GSList *l;
- gchar **string_list;
- gint i;
-
- string_list = g_new0 (gchar *, g_slist_length (list) + 1);
-
- for (l = list, i = 0; l; l = l->next) {
- if (!l->data) {
- continue;
- }
-
- string_list[i++] = g_strdup (l->data);
- }
-
- string_list[i] = NULL;
-
- return string_list;
-}
-
-char *
-tracker_array_to_str (char **array, int length, char sep)
-{
- GString *gstr = g_string_new ("");
- int i;
-
- for (i=0; i<length; i++) {
-
-
-
- if (array[i]) {
- if (i > 0) g_string_append_c (gstr, sep);
-
- gstr = g_string_append (gstr, array[i]);
- } else {
- break;
- }
- }
-
- return g_string_free (gstr, FALSE);
-
-}
-
-
-void
-tracker_throttle (int multiplier)
-{
- gint throttle;
-
- throttle = tracker_config_get_throttle (tracker->config);
-
- if (throttle < 1) {
- return;
- }
-
- throttle *= multiplier;
-
- if (throttle > 0) {
- g_usleep (throttle);
- }
-}
-
-
-void
-tracker_notify_file_data_available (void)
-{
- if (!tracker->is_running) {
- return;
- }
-
- /* if file thread is asleep then we just need to wake it up! */
- if (g_mutex_trylock (tracker->files_signal_mutex)) {
- g_cond_signal (tracker->file_thread_signal);
- g_mutex_unlock (tracker->files_signal_mutex);
- return;
- }
-
- /* if busy - check if async queue has new stuff as we do not need to notify then */
- if (g_async_queue_length (tracker->file_process_queue) > 1) {
- return;
- }
-
- /* if file thread not in check phase then we need do nothing */
- if (g_mutex_trylock (tracker->files_check_mutex)) {
- g_mutex_unlock (tracker->files_check_mutex);
- return;
- }
-
- int revs = 0;
-
- /* we are in check phase - we need to wait until either check_mutex is unlocked or file thread is asleep then awaken it */
- while (revs < 100000) {
-
- if (g_mutex_trylock (tracker->files_check_mutex)) {
- g_mutex_unlock (tracker->files_check_mutex);
- return;
- }
-
- if (g_mutex_trylock (tracker->files_signal_mutex)) {
- g_cond_signal (tracker->file_thread_signal);
- g_mutex_unlock (tracker->files_signal_mutex);
- return;
- }
-
- g_thread_yield ();
- g_usleep (10);
- revs++;
- }
-}
-
-
-void
-tracker_notify_meta_data_available (void)
-{
- if (!tracker->is_running) {
- return;
- }
-
- /* if metadata thread is asleep then we just need to wake it up! */
- if (g_mutex_trylock (tracker->metadata_signal_mutex)) {
- g_cond_signal (tracker->metadata_thread_signal);
- g_mutex_unlock (tracker->metadata_signal_mutex);
- return;
- }
-
- /* if busy - check if async queue has new stuff as we do not need to notify then */
- if (g_async_queue_length (tracker->file_metadata_queue) > 1) {
- return;
- }
-
- /* if metadata thread not in check phase then we need do nothing */
- if (g_mutex_trylock (tracker->metadata_check_mutex)) {
- g_mutex_unlock (tracker->metadata_check_mutex);
- return;
- }
-
- /* we are in check phase - we need to wait until either check_mutex is unlocked or until metadata thread is asleep then we awaken it */
- while (TRUE) {
-
- if (g_mutex_trylock (tracker->metadata_check_mutex)) {
- g_mutex_unlock (tracker->metadata_check_mutex);
- return;
- }
-
- if (g_mutex_trylock (tracker->metadata_signal_mutex)) {
- g_cond_signal (tracker->metadata_thread_signal);
- g_mutex_unlock (tracker->metadata_signal_mutex);
- return;
- }
-
- g_thread_yield ();
- g_usleep (10);
- tracker_debug ("in check phase");
- }
-}
-
-
-void
-tracker_notify_request_data_available (void)
-{
- /* if thread is asleep then we just need to wake it up! */
- if (g_mutex_trylock (tracker->request_signal_mutex)) {
- g_cond_signal (tracker->request_thread_signal);
- g_mutex_unlock (tracker->request_signal_mutex);
- return;
- }
-
- /* if thread not in check phase then we need do nothing */
- if (g_mutex_trylock (tracker->request_check_mutex)) {
- g_mutex_unlock (tracker->request_check_mutex);
- return;
- }
-
- /* we are in check phase - we need to wait until either check_mutex is unlocked or thread is asleep then awaken it */
- while (TRUE) {
-
- if (g_mutex_trylock (tracker->request_check_mutex)) {
- g_mutex_unlock (tracker->request_check_mutex);
- return;
- }
-
- if (g_mutex_trylock (tracker->request_signal_mutex)) {
- g_cond_signal (tracker->request_thread_signal);
- g_mutex_unlock (tracker->request_signal_mutex);
- return;
- }
-
- g_thread_yield ();
- g_usleep (10);
- }
-}
-
-
-GTimeVal *
-tracker_timer_start (void)
-{
- GTimeVal *before;
-
- before = g_new0 (GTimeVal, 1);
-
- g_get_current_time (before);
-
- return before;
-}
-
-
-void
-tracker_timer_end (GTimeVal *before, const char *str)
-{
- GTimeVal after;
- double elapsed;
-
- g_get_current_time (&after);
-
- elapsed = (1000 * (after.tv_sec - before->tv_sec)) + ((after.tv_usec - before->tv_usec) / 1000.0);
-
- g_free (before);
-
- tracker_log ("%s %f ms", str, elapsed);
-}
-
-
-char *
-tracker_compress (const char *ptr, int size, int *compressed_size)
-{
- z_stream zs;
- char *buf, *swap;
- unsigned char obuf[ZLIBBUFSIZ];
- int rv, asiz, bsiz, osiz;
- if (size < 0) size = strlen (ptr);
- zs.zalloc = Z_NULL;
- zs.zfree = Z_NULL;
- zs.opaque = Z_NULL;
-
- if (deflateInit2 (&zs, 6, Z_DEFLATED, 15, 6, Z_DEFAULT_STRATEGY) != Z_OK) {
- return NULL;
- }
-
- asiz = size + 16;
- if (asiz < ZLIBBUFSIZ) asiz = ZLIBBUFSIZ;
- if (!(buf = malloc (asiz))) {
- deflateEnd (&zs);
- return NULL;
- }
- bsiz = 0;
- zs.next_in = (unsigned char *)ptr;
- zs.avail_in = size;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- while ( (rv = deflate (&zs, Z_FINISH)) == Z_OK) {
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if (bsiz + osiz > asiz) {
- asiz = asiz * 2 + osiz;
- if (!(swap = realloc (buf, asiz))) {
- free (buf);
- deflateEnd (&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy (buf + bsiz, obuf, osiz);
- bsiz += osiz;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- }
- if (rv != Z_STREAM_END) {
- free (buf);
- deflateEnd (&zs);
- return NULL;
- }
-
- osiz = ZLIBBUFSIZ - zs.avail_out;
-
- if (bsiz + osiz + 1 > asiz) {
- asiz = asiz * 2 + osiz;
-
- if (!(swap = realloc (buf, asiz))) {
- free (buf);
- deflateEnd (&zs);
- return NULL;
- }
- buf = swap;
- }
-
- memcpy (buf + bsiz, obuf, osiz);
- bsiz += osiz;
- buf[bsiz] = '\0';
-
- *compressed_size = bsiz;
-
- deflateEnd (&zs);
-
- return buf;
-}
-
-
-char *
-tracker_uncompress (const char *ptr, int size, int *uncompressed_size)
-{
- z_stream zs;
- char *buf, *swap;
- unsigned char obuf[ZLIBBUFSIZ];
- int rv, asiz, bsiz, osiz;
- zs.zalloc = Z_NULL;
- zs.zfree = Z_NULL;
- zs.opaque = Z_NULL;
-
- if (inflateInit2 (&zs, 15) != Z_OK) return NULL;
-
- asiz = size * 2 + 16;
- if (asiz < ZLIBBUFSIZ) asiz = ZLIBBUFSIZ;
- if (!(buf = malloc (asiz))) {
- inflateEnd (&zs);
- return NULL;
- }
- bsiz = 0;
- zs.next_in = (unsigned char *)ptr;
- zs.avail_in = size;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- while ( (rv = inflate (&zs, Z_NO_FLUSH)) == Z_OK) {
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if (bsiz + osiz >= asiz) {
- asiz = asiz * 2 + osiz;
- if (!(swap = realloc (buf, asiz))) {
- free (buf);
- inflateEnd (&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy (buf + bsiz, obuf, osiz);
- bsiz += osiz;
- zs.next_out = obuf;
- zs.avail_out = ZLIBBUFSIZ;
- }
- if (rv != Z_STREAM_END) {
- free (buf);
- inflateEnd (&zs);
- return NULL;
- }
- osiz = ZLIBBUFSIZ - zs.avail_out;
- if (bsiz + osiz >= asiz) {
- asiz = asiz * 2 + osiz;
- if (!(swap = realloc (buf, asiz))) {
- free (buf);
- inflateEnd (&zs);
- return NULL;
- }
- buf = swap;
- }
- memcpy (buf + bsiz, obuf, osiz);
- bsiz += osiz;
- buf[bsiz] = '\0';
- *uncompressed_size = bsiz;
- inflateEnd (&zs);
- return buf;
-}
-
-
-static inline gboolean
-is_match (const char *a, const char *b)
-{
- int len = strlen (b);
-
- char *str1 = g_utf8_casefold (a, len);
- char *str2 = g_utf8_casefold (b, len);
-
- char *normal1 = g_utf8_normalize (str1, -1, G_NORMALIZE_NFC);
- char *normal2 = g_utf8_normalize (str2, -1, G_NORMALIZE_NFC);
-
- gboolean result = (strcmp (normal1, normal2) == 0);
-
- g_free (str1);
- g_free (str2);
- g_free (normal1);
- g_free (normal2);
-
- return result;
-}
-
-
-static const gchar *
-pointer_from_offset_skipping_decomp (const gchar *str, gint offset)
-{
- gchar *casefold, *normal;
- const gchar *p, *q;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- p = str;
- while (offset > 0)
- {
- q = g_utf8_next_char (p);
- casefold = g_utf8_casefold (p, q - p);
- normal = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFC);
- offset -= g_utf8_strlen (normal, -1);
- g_free (casefold);
- g_free (normal);
- p = q;
- }
- return p;
-}
-
-
-static const char *
-g_utf8_strcasestr_array (const gchar *haystack, gchar **needles)
-{
- gsize needle_len;
- gsize haystack_len;
- const char *ret = NULL, *needle;
- char **array;
- char *p;
- char *casefold;
- char *caseless_haystack;
- int i;
-
- g_return_val_if_fail (haystack != NULL, NULL);
-
- casefold = g_utf8_casefold (haystack, -1);
- caseless_haystack = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFC);
- g_free (casefold);
-
- if (!caseless_haystack) {
- return NULL;
- }
-
- haystack_len = g_utf8_strlen (caseless_haystack, -1);
-
- for (array=needles; *array; array++)
- {
- needle = *array;
- needle_len = g_utf8_strlen (needle, -1);
-
- if (needle_len == 0) {
- continue;
- }
-
- if (haystack_len < needle_len) {
- continue;
- }
-
- p = (gchar *) caseless_haystack;
- needle_len = strlen (needle);
- i = 0;
-
- while (*p) {
-
- if ((strncmp (p, needle, needle_len) == 0)) {
- ret = pointer_from_offset_skipping_decomp (haystack, i);
- goto finally_1;
- }
-
- p = g_utf8_next_char (p);
- i++;
- }
- }
-
-finally_1:
- g_free (caseless_haystack);
-
- return ret;
-}
-
-
-const char *
-substring_utf8 (const char *a, const char *b)
-{
- const char *ptr, *found_ptr;
- gunichar c, lower, upper;
- int len;
- gboolean got_match = FALSE;
-
- len = strlen (b);
-
- c = g_utf8_get_char (b);
-
- lower = g_unichar_tolower (c);
- upper = g_unichar_toupper (c);
-
- ptr = a;
- found_ptr = a;
-
- /* check lowercase first */
- while (found_ptr) {
-
- found_ptr = g_utf8_strchr (ptr, -1, lower);
-
- if (found_ptr) {
- ptr = g_utf8_find_next_char (found_ptr, NULL);
- if (is_match (found_ptr, b)) {
- got_match = TRUE;
- break;
- }
- } else {
- break;
- }
- }
-
- if (!got_match) {
- ptr = a;
- found_ptr = a;
- while (found_ptr) {
-
- found_ptr = g_utf8_strchr (ptr, -1, upper);
-
- if (found_ptr) {
- ptr = g_utf8_find_next_char (found_ptr, NULL);
- if (is_match (found_ptr, b)) {
- break;
- }
- } else {
-
- }
- }
- }
-
- return found_ptr;
-}
-
-
-static int
-get_word_break (const char *a)
-{
- char **words = g_strsplit_set (a, "\t\n\v\f\r !\"#$%&'()*/<=>?[\\]^`{|}~+,.:;@\"[]" , -1);
-
- if (!words) return 0;
-
- int ret = strlen (words[0]);
-
- g_strfreev (words);
-
- return ret;
-}
-
-
-static gboolean
-is_word_break (const char a)
-{
- const char *breaks = "\t\n\v\f\r !\"#$%&'()*/<=>?[\\]^`{|}~+,.:;@\"[]";
- int i;
-
- for (i = 0; breaks[i]; i++) {
- if (a == breaks[i]) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-static char *
-highlight_terms (const char *str, char **terms)
-{
- const char *ptr;
- char *txt;
- GString *st;
- int term_length;
-
- if (!str || !terms) {
- return NULL;
- }
-
- char **array;
- txt = g_strdup (str);
-
- for (array = terms; *array; array++) {
- char **single_term;
-
- single_term = g_new( char *, 2);
- single_term[0] = g_strdup (*array);
- single_term[1] = NULL;
-
- st = g_string_new ("");
-
- const char *ptxt = txt;
-
- while ((ptr = g_utf8_strcasestr_array (ptxt, single_term))) {
- char *pre_snip, *term;
-
- pre_snip = g_strndup (ptxt, (ptr - ptxt));
-
- term_length = get_word_break (ptr);
-
- term = g_strndup (ptr, term_length);
-
- ptxt = ptr + term_length;
-
- g_string_append_printf (st, "%s<b>%s</b>", pre_snip, term);
-
- g_free (pre_snip);
- g_free (term);
- }
-
- if (ptxt) {
- g_string_append (st, ptxt);
-
- }
-
- g_strfreev (single_term);
- g_free (txt);
-
- txt = g_string_free (st, FALSE);
- }
-
- return txt;
-}
-
-
-char *
-tracker_get_snippet (const char *txt, char **terms, int length)
-{
- const char *ptr = NULL, *end_ptr, *tmp;
- int i, txt_len;
-
- if (!txt || !terms) {
- return NULL;
- }
-
- txt_len = strlen (txt);
-
- ptr = g_utf8_strcasestr_array (txt, terms);
-
- if (ptr) {
- tmp = ptr;
-
- i = 0;
-
- /* get snippet before the matching term */
- while ((ptr = g_utf8_prev_char (ptr)) && (ptr >= txt) && (i < length)) {
-
- if (*ptr == '\n') {
- break;
- }
- i++;
- }
-
- /* try to start beginning of snippet on a word break */
- if ((*ptr != '\n') && (ptr > txt)) {
- i=0;
- while (!is_word_break (*ptr) && (i<(length/2))) {
- ptr = g_utf8_next_char (ptr);
- i++;
- }
- }
-
- ptr = g_utf8_next_char (ptr);
-
- if (!ptr || ptr < txt) {
- return NULL;
- }
-
- end_ptr = tmp;
- i = 0;
-
- /* get snippet after match */
- while ((end_ptr = g_utf8_next_char (end_ptr)) && (end_ptr <= txt_len + txt) && (i < length)) {
- i++;
- if (*end_ptr == '\n') {
- break;
- }
- }
-
- while (end_ptr > txt_len + txt) {
- end_ptr = g_utf8_prev_char (end_ptr);
- }
-
- /* try to end snippet on a word break */
- if ((*end_ptr != '\n') && (end_ptr < txt_len + txt)) {
- i=0;
- while (!is_word_break (*end_ptr) && (i<(length/2))) {
- end_ptr = g_utf8_prev_char (end_ptr);
- i++;
- }
- }
-
- if (!end_ptr || !ptr) {
- return NULL;
- }
-
- char *snip, *esc_snip, *highlight_snip;
-
- snip = g_strndup (ptr, end_ptr - ptr);
-
- i = strlen (snip);
-
- esc_snip = g_markup_escape_text (snip, i);
-
- g_free (snip);
-
- highlight_snip = highlight_terms (esc_snip, terms);
-
- g_free (esc_snip);
-
- return highlight_snip;
- }
-
- ptr = txt;
- i = 0;
- while ((ptr = g_utf8_next_char (ptr)) && (ptr <= txt_len + txt) && (i < length)) {
- i++;
- if (*ptr == '\n') {
- break;
- }
- }
-
- if (ptr > txt_len + txt) {
- ptr = g_utf8_prev_char (ptr);
- }
-
- if (ptr) {
- char *snippet = g_strndup (txt, ptr - txt);
- char *esc_snippet = g_markup_escape_text (snippet, ptr - txt);
- char *highlight_snip = highlight_terms (esc_snippet, terms);
-
- g_free (snippet);
- g_free (esc_snippet);
-
- return highlight_snip;
- } else {
- return NULL;
- }
-}
-
-gchar *
-tracker_string_replace (const gchar *haystack, gchar *needle, gchar *replacement)
-{
- GString *str;
- gint pos, needle_len;
-
- g_return_val_if_fail (haystack && needle, NULL);
-
- needle_len = strlen (needle);
-
- str = g_string_new ("");
-
- for (pos = 0; haystack[pos]; pos++)
- {
- if (strncmp (&haystack[pos], needle, needle_len) == 0)
- {
- if (replacement) {
- str = g_string_append (str, replacement);
- }
-
- pos += needle_len - 1;
-
- } else {
- str = g_string_append_c (str, haystack[pos]);
- }
- }
-
- return g_string_free (str, FALSE);
-}
-
-
-void
-tracker_add_metadata_to_table (GHashTable *meta_table, const gchar *key, const gchar *value)
-{
- GSList *list = g_hash_table_lookup (meta_table, (gchar *) key);
-
- list = g_slist_prepend (list, (gchar *) value);
-
- g_hash_table_steal (meta_table, key);
-
- g_hash_table_insert (meta_table, (gchar *) key, list);
-}
-
-
-void
-tracker_free_metadata_field (FieldData *field_data)
-{
- g_return_if_fail (field_data);
-
- if (field_data->alias) {
- g_free (field_data->alias);
- }
-
- if (field_data->where_field) {
- g_free (field_data->where_field);
- }
-
- if (field_data->field_name) {
- g_free (field_data->field_name);
- }
-
- if (field_data->select_field) {
- g_free (field_data->select_field);
- }
-
- if (field_data->table_name) {
- g_free (field_data->table_name);
- }
-
- if (field_data->id_field) {
- g_free (field_data->id_field);
- }
-
- g_free (field_data);
-}
-
-
-gboolean
-tracker_unlink (const gchar *uri)
-{
- gchar *locale_uri = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);
-
- if (!g_file_test (locale_uri, G_FILE_TEST_EXISTS)) {
- g_free (locale_uri);
- return FALSE;
- }
-
- g_unlink (locale_uri);
-
- g_free (locale_uri);
-
- return TRUE;
-}
-
-
-int
-tracker_get_memory_usage (void)
-{
-
-
-#if defined(__linux__)
- int fd, length, mem = 0;
- char buffer[8192];
-
- char *stat_file = g_strdup_printf ("/proc/%d/stat", tracker->pid);
-
- fd = open (stat_file, O_RDONLY);
-
- g_free (stat_file);
-
- if (fd ==-1) {
- return 0;
- }
-
-
- length = read (fd, buffer, 8192);
-
- buffer[length] = 0;
-
- close (fd);
-
- char **terms = g_strsplit (buffer, " ", -1);
-
-
- if (terms) {
-
- int i;
- for (i=0; i < 24; i++) {
- if (!terms[i]) {
- break;
- }
-
- if (i==23) mem = 4 * atoi (terms[23]);
- }
- }
-
-
- g_strfreev (terms);
-
- return mem;
-
-#endif
- return 0;
-}
-
-guint32
-tracker_file_size (const gchar *name)
-{
- struct stat finfo;
-
- if (g_lstat (name, &finfo) == -1) {
- return 0;
- } else {
- return (guint32) finfo.st_size;
- }
-}
-
-int
-tracker_file_open (const gchar *file_name, gboolean readahead)
-{
- int fd;
-
-#if defined(__linux__)
- fd = open (file_name, O_RDONLY|O_NOATIME);
-
- if (fd == -1) {
- fd = open (file_name, O_RDONLY);
- }
-#else
- fd = open (file_name, O_RDONLY);
-#endif
-
- if (fd == -1) return -1;
-
-#ifdef HAVE_POSIX_FADVISE
- if (readahead) {
- posix_fadvise (fd, 0, 0, POSIX_FADV_SEQUENTIAL);
- } else {
- posix_fadvise (fd, 0, 0, POSIX_FADV_RANDOM);
- }
-#endif
-
- return fd;
-}
-
-
-void
-tracker_file_close (int fd, gboolean no_longer_needed)
-{
-
-#ifdef HAVE_POSIX_FADVISE
- if (no_longer_needed) {
- posix_fadvise (fd, 0, 0, POSIX_FADV_DONTNEED);
- }
-#endif
- close (fd);
-}
-
-void
-tracker_add_io_grace (const gchar *uri)
-{
- if (g_str_has_prefix (uri, tracker->xesam_dir)) {
- return;
- }
-
- tracker_log ("file changes to %s is pausing tracker", uri);
-
- tracker->grace_period++;
-}
-
-
-gchar *
-tracker_get_status (void)
-{
- if (tracker->status < 7) {
- gchar *tracker_status[] = {"Initializing", "Watching", "Indexing", "Pending", "Optimizing", "Idle", "Shutdown"};
- return g_strdup (tracker_status[tracker->status]);
- } else {
- return g_strdup ("Idle");
- }
-}
-
-
-gboolean
-tracker_pause_on_battery (void)
-{
- if (!tracker->pause_battery) {
- return FALSE;
- }
-
- if (tracker->first_time_index) {
- return tracker_config_get_disable_indexing_on_battery_init (tracker->config);
- }
-
- return tracker_config_get_disable_indexing_on_battery (tracker->config);
-}
-
-
-gboolean
-tracker_low_diskspace (void)
-{
- struct statvfs st;
- gint low_disk_space_limit;
-
- low_disk_space_limit = tracker_config_get_low_disk_space_limit (tracker->config);
-
- if (low_disk_space_limit < 1)
- return FALSE;
-
- if (statvfs (tracker->data_dir, &st) == -1) {
- static gboolean reported = 0;
- if (! reported) {
- reported = 1;
- tracker_error ("Could not statvfs %s", tracker->data_dir);
- }
- return FALSE;
- }
-
- if (((long long) st.f_bavail * 100 / st.f_blocks) <= low_disk_space_limit) {
- tracker_error ("Disk space is low!");
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-
-gboolean
-tracker_index_too_big ()
-{
-
-
- char *file_index = g_build_filename (tracker->data_dir, "file-index.db", NULL);
- if (tracker_file_size (file_index) > MAX_INDEX_FILE_SIZE) {
- tracker_error ("file index is too big - discontinuing index");
- g_free (file_index);
- return TRUE;
- }
- g_free (file_index);
-
-
- char *email_index = g_build_filename (tracker->data_dir, "email-index.db", NULL);
- if (tracker_file_size (email_index) > MAX_INDEX_FILE_SIZE) {
- tracker_error ("email index is too big - discontinuing index");
- g_free (email_index);
- return TRUE;
- }
- g_free (email_index);
-
-
- char *file_meta = g_build_filename (tracker->data_dir, "file-meta.db", NULL);
- if (tracker_file_size (file_meta) > MAX_INDEX_FILE_SIZE) {
- tracker_error ("file metadata is too big - discontinuing index");
- g_free (file_meta);
- return TRUE;
- }
- g_free (file_meta);
-
-
- char *email_meta = g_build_filename (tracker->data_dir, "email-meta.db", NULL);
- if (tracker_file_size (email_meta) > MAX_INDEX_FILE_SIZE) {
- tracker_error ("email metadata is too big - discontinuing index");
- g_free (email_meta);
- return TRUE;
- }
- g_free (email_meta);
-
- return FALSE;
-
-}
-
-void
-tracker_set_status (Tracker *tracker, TrackerStatus status, gdouble percentage, gboolean signal)
-{
- TrackerStatus old = tracker->status;
-
- tracker->status = status;
-
- if (signal && old != status)
- tracker_dbus_send_index_status_change_signal ();
-}
-
-gboolean
-tracker_pause (void)
-{
- return tracker->pause_manual || tracker_pause_on_battery () || tracker_low_diskspace () || tracker_index_too_big ();
-}
diff --git a/src/trackerd/tracker-utils.h b/src/trackerd/tracker-utils.h
deleted file mode 100644
index ac69b0316..000000000
--- a/src/trackerd/tracker-utils.h
+++ /dev/null
@@ -1,544 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRACKER_UTILS_H_
-#define _TRACKER_UTILS_H_
-
-extern char *type_array[];
-extern char *implemented_services[];
-extern char *file_service_array[] ;
-extern char *serice_index_array[];
-extern char *service_table_names[];
-extern char *service_metadata_table_names[];
-extern char *service_metadata_join_names[];
-
-extern char *tracker_actions[];
-
-#include <time.h>
-#include <glib.h>
-
-#include "config.h"
-#include "tracker-parser.h"
-
-#define MAX_HITS_FOR_WORD 30000
-
-/* set merge limit default to 64MB */
-#define MERGE_LIMIT 671088649
-
-/* max default file pause time in ms = FILE_PAUSE_PERIOD * FILE_SCHEDULE_PERIOD */
-#define FILE_PAUSE_PERIOD 1
-#define FILE_SCHEDULE_PERIOD 300
-
-#define TRACKER_DB_VERSION_REQUIRED 13
-#define TRACKER_VERSION VERSION
-#define TRACKER_VERSION_INT 604
-
-/* default performance options */
-#define MAX_INDEX_TEXT_LENGTH 1048576
-#define MAX_PROCESS_QUEUE_SIZE 100
-#define MAX_EXTRACT_QUEUE_SIZE 500
-#define OPTIMIZATION_COUNT 10000
-#define MAX_WORDS_TO_INDEX 10000
-
-typedef struct {
- int id; /* word ID of the cached word */
- int count; /* cummulative count of the cached word */
-} CacheWord;
-
-typedef enum {
- DATA_KEYWORD,
- DATA_INDEX,
- DATA_FULLTEXT,
- DATA_STRING,
- DATA_INTEGER,
- DATA_DOUBLE,
- DATA_DATE,
- DATA_BLOB,
- DATA_STRUCT,
- DATA_LINK
-} DataTypes;
-
-
-typedef enum {
- DB_CATEGORY_FILES,
- DB_CATEGORY_EMAILS,
- DB_CATEGORY_USER
-} DBCategory;
-
-
-typedef enum {
- STATUS_INIT, /* tracker is initializing */
- STATUS_WATCHING, /* tracker is setting up watches for directories */
- STATUS_INDEXING, /* tracker is indexing stuff */
- STATUS_PENDING, /* tracker has entities awaiting index */
- STATUS_OPTIMIZING, /* tracker is optimizing its databases */
- STATUS_IDLE, /* tracker is idle and awaiting new events or requests */
- STATUS_SHUTDOWN /* tracker is in the shutdown process */
-} TrackerStatus;
-
-
-typedef enum {
- INDEX_CONFIG,
- INDEX_APPLICATIONS,
- INDEX_FILES,
- INDEX_WEBHISTORY,
- INDEX_CRAWL_FILES,
- INDEX_CONVERSATIONS,
- INDEX_EXTERNAL,
- INDEX_EMAILS,
- INDEX_FINISHED
-} IndexStatus;
-
-
-typedef struct {
- char *id;
- DataTypes type;
- char *field_name;
- int weight;
- guint embedded : 1;
- guint multiple_values : 1;
- guint delimited : 1;
- guint filtered : 1;
- guint store_metadata : 1;
-
- GSList *child_ids; /* related child metadata ids */
-
-} FieldDef;
-
-
-typedef struct {
- char *alias;
- char *field_name;
- char *select_field;
- char *where_field;
- char *table_name;
- char *id_field;
- DataTypes data_type;
- guint multiple_values : 1;
- guint is_select : 1;
- guint is_condition : 1;
- guint needs_join : 1;
-
-} FieldData;
-
-
-typedef struct {
- char *name;
- char *type;
-} ServiceInfo;
-
-
-typedef enum {
- EVENT_NOTHING,
- EVENT_SHUTDOWN,
- EVENT_DISABLE,
- EVENT_PAUSE,
- EVENT_CACHE_FLUSHED
-} LoopEvent;
-
-
-typedef struct {
- gchar *uri;
- time_t first_change_time;
- gint num_of_change;
-} FileChange;
-
-
-typedef struct {
-
- gboolean readonly;
-
- TrackerStatus status;
- int pid;
-
- gpointer dbus_con;
- gpointer hal;
-
- gboolean reindex;
-
- gpointer config;
- gpointer language;
-
- /* config options */
- guint32 watch_limit;
-
- gboolean fatal_errors;
-
- gpointer index_db;
-
- /* data directories */
- char *data_dir;
- char *config_dir;
- char *root_dir;
- char *user_data_dir;
- char *sys_tmp_root_dir;
- char *email_attachements_dir;
- char *services_dir;
-
- /* performance and memory usage options */
- int max_index_text_length; /* max size of file's text contents to index */
- int max_process_queue_size;
- int max_extract_queue_size;
- int memory_limit;
- int thread_stack_size;
-
- /* HAL battery */
- char *battery_udi;
-
- /* pause/shutdown vars */
- gboolean shutdown;
- gboolean pause_manual;
- gboolean pause_battery;
- gboolean pause_io;
-
- /* indexing options */
- gpointer file_index;
- gpointer file_update_index;
- gpointer email_index;
-
- guint32 merge_limit; /* size of index in MBs when merging is triggered -1 == no merging*/
- gboolean active_file_merge;
- gboolean active_email_merge;
-
- GHashTable *stop_words; /* table of stop words that are to be ignored by the parser */
-
- gboolean index_numbers;
- int index_number_min_length;
- gboolean strip_accents;
-
- gboolean first_time_index;
- gboolean first_flush;
- gboolean do_optimize;
-
- time_t index_time_start;
- int folders_count;
- int folders_processed;
- int mbox_count;
- int mbox_processed;
-
-
- const char *current_uri;
-
- IndexStatus index_status;
-
- int grace_period;
- gboolean request_waiting;
-
- char * xesam_dir;
-
- /* service directory table - this is used to store a ServiceInfo struct for a directory path - used for determining which service a uri belongs to for things like files, emails, conversations etc*/
- GHashTable *service_directory_table;
- GSList *service_directory_list;
-
- /* lookup tables for service and metadata IDs */
- GHashTable *metadata_table;
-
- /* email config options */
- GSList *additional_mboxes_to_index;
-
- int email_service_min;
- int email_service_max;
-
- /* nfs options */
- gboolean use_nfs_safe_locking; /* use safer but much slower external lock file when users home dir is on an nfs systems */
-
- /* Queue for recorad file changes */
- GQueue *file_change_queue;
- gboolean black_list_timer_active;
-
- /* progress info for merges */
- int merge_count;
- int merge_processed;
-
-
- /* application run time values */
- gboolean is_indexing;
- gboolean in_flush;
- gboolean in_merge;
- int index_count;
- int index_counter;
- int update_count;
-
- /* cache words before saving to word index */
- GHashTable *file_word_table;
- GHashTable *file_update_word_table;
- GHashTable *email_word_table;
-
- int word_detail_limit;
- int word_detail_count;
- int word_detail_min;
- int word_count;
- int word_update_count;
- int word_count_limit;
- int word_count_min;
- int flush_count;
-
- int file_update_count;
- int email_update_count;
-
- GMutex *scheduler_mutex;
-
- gboolean is_running;
- gboolean is_dir_scan;
- GMainLoop *loop;
-
- GMutex *log_access_mutex;
- char *log_file;
-
- GAsyncQueue *file_process_queue;
- GAsyncQueue *file_metadata_queue;
- GAsyncQueue *user_request_queue;
-
- GAsyncQueue *dir_queue;
-
- GMutex *files_check_mutex;
- GMutex *metadata_check_mutex;
- GMutex *request_check_mutex;
-
- GMutex *files_stopped_mutex;
- GMutex *metadata_stopped_mutex;
- GMutex *request_stopped_mutex;
-
- GThread *file_metadata_thread;
-
- GCond *file_thread_signal;
- GCond *metadata_thread_signal;
- GCond *request_thread_signal;
-
- GMutex *metadata_signal_mutex;
- GMutex *files_signal_mutex;
- GMutex *request_signal_mutex;
-
-} Tracker;
-
-
-/* Actions can represent events from FAM/iNotify or be artificially created */
-typedef enum {
-
- TRACKER_ACTION_IGNORE, /* do nothing for this action */
-
- /* actions for when we dont know whether they are on a file or a directory */
- TRACKER_ACTION_CHECK,
- TRACKER_ACTION_DELETE,
- TRACKER_ACTION_DELETE_SELF, /* actual file/dir being watched was deleted */
- TRACKER_ACTION_CREATE,
- TRACKER_ACTION_MOVED_FROM, /* file or dir was moved from (must be a pair with MOVED_TO action)*/
- TRACKER_ACTION_MOVED_TO, /* file or dir was moved to */
-//6
- /* file specific actions */
- TRACKER_ACTION_FILE_CHECK, /* checks file is up to date and indexed */
- TRACKER_ACTION_FILE_CHANGED, /* Inotify must ignore this - see below */
- TRACKER_ACTION_FILE_DELETED,
- TRACKER_ACTION_FILE_CREATED,
- TRACKER_ACTION_FILE_MOVED_FROM,
- TRACKER_ACTION_FILE_MOVED_TO,
- TRACKER_ACTION_WRITABLE_FILE_CLOSED, /* inotify should use this instead of File Changed action*/
-//13
- /* directory specific actions */
- TRACKER_ACTION_DIRECTORY_CHECK,
- TRACKER_ACTION_DIRECTORY_CREATED,
- TRACKER_ACTION_DIRECTORY_DELETED,
- TRACKER_ACTION_DIRECTORY_UNMOUNTED,
- TRACKER_ACTION_DIRECTORY_MOVED_FROM,
- TRACKER_ACTION_DIRECTORY_MOVED_TO,
- TRACKER_ACTION_DIRECTORY_REFRESH, /* re checks all files in folder */
-
- TRACKER_ACTION_EXTRACT_METADATA,
-
- TRACKER_ACTION_FORCE_REFRESH
-
-} TrackerChangeAction;
-
-
-/* service type that the file represents */
-typedef enum {
- FILE_ORDINARY,
- FILE_DESKTOP,
- FILE_BOOKMARKS,
- FILE_SMARTBOOKMARKS,
- FILE_WEBHISTORY,
- FILE_EMAILS,
- FILE_CONVERSATIONS,
- FILE_CONTACTS
-} FileTypes;
-
-
-typedef enum {
- WATCH_ROOT,
- WATCH_SUBFOLDER,
- WATCH_SPECIAL_FOLDER,
- WATCH_SPECIAL_FILE,
- WATCH_NO_INDEX,
- WATCH_OTHER
-} WatchTypes;
-
-
-typedef struct {
-
- /* file name/path related info */
- char *uri;
- guint32 file_id;
-
- TrackerChangeAction action;
- guint32 cookie;
- int counter;
- FileTypes file_type;
- WatchTypes watch_type;
-
- /* symlink info - File ID of link might not be in DB so need to store path/filename too */
- gint32 link_id;
- char *link_path;
- char *link_name;
-
- char *mime;
- int service_type_id;
- guint32 file_size;
- char *permissions;
- gint32 mtime;
- gint32 atime;
- gint32 indextime;
- gint32 offset;
-
- /* options */
- char *moved_to_uri;
-
- int aux_id;
-
- guint is_new : 1;
- guint is_directory : 1;
- guint is_link : 1;
- guint extract_embedded : 1;
- guint extract_contents : 1;
- guint extract_thumbs : 1;
- guint is_hidden : 1;
-
- /* we ref count FileInfo as it has a complex lifespan and is tossed between various threads, lists, queues and hash tables */
- int ref_count;
-
-} FileInfo;
-
-GSList * tracker_filename_array_to_list (gchar **array);
-GSList * tracker_string_list_to_gslist (const gchar **array);
-gchar ** tracker_gslist_to_string_list (GSList *list);
-gchar ** tracker_make_array_null_terminated (gchar **array, gint length);
-
-void tracker_free_array (char **array, int row_count);
-gboolean tracker_is_empty_string (const char *s);
-gchar * tracker_long_to_str (glong i);
-gchar * tracker_int_to_str (gint i);
-gchar * tracker_uint_to_str (guint i);
-gchar * tracker_gint32_to_str (gint32 i);
-gchar * tracker_guint32_to_str (guint32 i);
-gboolean tracker_str_to_uint (const char *s, guint *ret);
-char * tracker_format_date (const char *time_string);
-time_t tracker_str_to_date (const char *time_string);
-char * tracker_date_to_str (time_t date_time);
-int tracker_str_in_array (const char *str, char **array);
-
-char * tracker_get_radix_by_suffix (const char *str, const char *suffix);
-
-char * tracker_escape_metadata (const char *in);
-char * tracker_unescape_metadata (const char *in);
-
-void tracker_remove_dirs (const char *root_dir);
-char * tracker_format_search_terms (const char *str, gboolean *do_bool_search);
-
-gint32 tracker_get_file_mtime (const char *uri);
-
-char * tracker_array_to_str (char **array, int length, char sep);
-
-GSList * tracker_get_service_dirs (const char *service);
-void tracker_add_service_path (const char *service, const char *path);
-void tracker_del_service_path (const char *service, const char *path);
-
-char * tracker_get_service_for_uri (const char *uri);
-gboolean tracker_is_service_file (const char *uri);
-
-FileInfo * tracker_create_file_info (const char *uri, TrackerChangeAction action, int counter, WatchTypes watch);
-FileInfo * tracker_get_file_info (FileInfo *info);
-FileInfo * tracker_copy_file_info (FileInfo *info);
-FileInfo * tracker_inc_info_ref (FileInfo *info);
-FileInfo * tracker_dec_info_ref (FileInfo *info);
-
-FileInfo * tracker_free_file_info (FileInfo *info);
-
-char * tracker_get_vfs_path (const char *uri);
-
-char * tracker_get_vfs_name (const char *uri);
-char * tracker_get_mime_type (const char *uri);
-
-gboolean tracker_file_is_valid (const char *uri);
-
-gboolean tracker_file_is_indexable (const char *uri);
-
-gboolean tracker_is_mounted (const char *dir);
-gboolean tracker_is_directory (const char *dir);
-
-void tracker_load_config_file (void);
-
-GSList * tracker_get_watch_root_dirs (void);
-
-void tracker_print_object_allocations (void);
-
-void tracker_throttle (int multiplier);
-
-void tracker_notify_file_data_available (void);
-void tracker_notify_meta_data_available (void);
-void tracker_notify_request_data_available (void);
-
-GTimeVal * tracker_timer_start (void);
-void tracker_timer_end (GTimeVal *before, const char *str);
-
-char * tracker_compress (const char *ptr, int size, int *compressed_size);
-char * tracker_uncompress (const char *ptr, int size, int *uncompressed_size);
-
-char * tracker_get_snippet (const char *txt, char **terms, int length);
-
-gboolean tracker_spawn (char **argv, int timeout, char **tmp_stdout, int *exit_status);
-
-char* tracker_string_replace (const char *haystack, char *needle, char *replacement);
-
-void tracker_add_metadata_to_table (GHashTable *meta_table, const char *key, const char *value);
-
-void tracker_free_metadata_field (FieldData *field_data);
-
-gboolean tracker_unlink (const char *uri);
-
-int tracker_get_memory_usage (void);
-
-guint32 tracker_file_size (const char *name);
-int tracker_file_open (const char *file_name, gboolean readahead);
-void tracker_file_close (int fd, gboolean no_longer_needed);
-
-void tracker_add_io_grace (const char *uri);
-
-char * tracker_get_status (void);
-
-void free_file_change (FileChange **user_data);
-gboolean tracker_do_cleanup (const gchar *sig_msg);
-gboolean tracker_watch_dir (const gchar *uri);
-void tracker_scan_directory (const gchar *uri);
-
-gboolean tracker_pause_on_battery (void);
-gboolean tracker_low_diskspace (void);
-gboolean tracker_pause (void);
-
-void tracker_set_status (Tracker *tracker, TrackerStatus status, gdouble percentage, gboolean signal);
-
-#endif
diff --git a/src/trackerd/tracker-watch.h b/src/trackerd/tracker-watch.h
deleted file mode 100644
index 7371a1cac..000000000
--- a/src/trackerd/tracker-watch.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-
-
-#ifndef _TRACKER_WATCH_H_
-#define _TRACKER_WATCH_H_
-
-
-#include "tracker-db.h"
-
-gboolean tracker_start_watching (void);
-void tracker_end_watching (void);
-
-gboolean tracker_add_watch_dir (const char *dir, DBConnection *db_con);
-void tracker_remove_watch_dir (const char *dir, gboolean delete_subdirs, DBConnection *db_con);
-
-gboolean tracker_is_directory_watched (const char *dir, DBConnection *db_con);
-int tracker_count_watch_dirs (void);
-
-
-#endif
diff --git a/src/trackerd/tracker-win-fs-changes.c b/src/trackerd/tracker-win-fs-changes.c
deleted file mode 100644
index 5ea70d367..000000000
--- a/src/trackerd/tracker-win-fs-changes.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "tracker-watch.h"
-
-#include <unistd.h>
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <windows.h>
-
-// private stuff
-
-static GHashTable *watch_table;
-
-extern Tracker *tracker;
-static DBConnection *win_db_con;
-
-static void
-free_watch_func (gpointer user_data)
-{
- g_free (user_data);
-}
-
-static DWORD sleep_thread_id;
-static HANDLE sleep_thread;
-
-#define MAX_DIRECTORIES 1024 // should be more than enough
-#define MAX_FILENAME_LENGTH 1024 // should be more than enough
-
-static int dir_id = 0;
-
-static char buffer[MAX_DIRECTORIES][256];
-static HANDLE monitor_handle[MAX_DIRECTORIES];
-static OVERLAPPED overlapped_buffer[MAX_DIRECTORIES];
-static char dirs[MAX_DIRECTORIES][256];
-
-unsigned int __stdcall ThreadProc( LPVOID param )
-{
- while (TRUE) {
- SleepEx(INFINITE, TRUE); // 10000 might be better
- }
-}
-
-void CALLBACK init_db (DWORD param)
-{
- tracker_db_thread_init ();
-
- win_db_con = tracker_db_connect ();
-
- win_db_con->blob = tracker_db_connect_full_text ();
- win_db_con->cache = tracker_db_connect_cache ();
-
- win_db_con->thread = "notify";
-}
-
-// public stuff
-
-gboolean
-tracker_start_watching (void)
-{
- if (tracker->watch_limit == 0) {
- tracker->watch_limit = 8191;
- }
-
- watch_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_watch_func);
-
- // create a windows thread to synchonize all metadata changes in one thread
- sleep_thread = _beginthreadex( NULL, 0, ThreadProc, 0, 0, &sleep_thread_id );
-
- QueueUserAPC(init_db, sleep_thread, (DWORD) 0 );
-
- return TRUE;
-}
-
-void
-tracker_end_watching (void)
-{
- // kill thread and call these just before it dies
-
-#if 0
- tracker_db_close (win_db_con);
- tracker_db_thread_end ();
-#endif
-
- // release all watched dirs
-
- g_hash_table_destroy (watch_table);
-}
-
-gboolean monitor_dir(int dir_id);
-
-VOID CALLBACK callback(DWORD error_code,
- DWORD bytes_transferred,
- LPOVERLAPPED overlapped) // I/O information buffer
-{
- int callback_dir_id = (int) overlapped->hEvent;
-
- if (bytes_transferred > 0) {
-
- FILE_NOTIFY_INFORMATION *p = (FILE_NOTIFY_INFORMATION *) buffer[callback_dir_id];
-
- TrackerChangeAction event_type = TRACKER_ACTION_IGNORE;
- int counter = 1;
-
- while (p) {
- TrackerChangeAction event_type;
-
- switch (p->Action) {
- case FILE_ACTION_MODIFIED:
- event_type = TRACKER_ACTION_CHECK;
- counter = 1;
- break;
- case FILE_ACTION_REMOVED:
- event_type = TRACKER_ACTION_DELETE;
- counter = 0;
- break;
- case FILE_ACTION_ADDED:
- event_type = TRACKER_ACTION_CREATE;
- counter = 1;
- break;
- default:
- break;
- }
-
- if (event_type != TRACKER_ACTION_IGNORE) {
-
- FileInfo *info;
- char file_utf8_uri[MAX_FILENAME_LENGTH];
-
- int status = WideCharToMultiByte(CP_UTF8, 0, p->FileName, p->FileNameLength,
- file_utf8_uri, MAX_FILENAME_LENGTH, NULL, NULL);
-
- file_utf8_uri[p->FileNameLength/sizeof(WCHAR)] = '\0';
-
- char *file_uri = g_build_filename (dirs[callback_dir_id], file_utf8_uri, NULL);
-
- info = tracker_create_file_info (file_uri, event_type, counter, WATCH_OTHER);
-
- if (tracker_file_info_is_valid (info)) {
-
- tracker_db_insert_pending_file (win_db_con, info->file_id, info->uri, NULL, info->mime,
- info->counter, info->action, info->is_directory, (event_type == TRACKER_ACTION_CREATE), -1);
- tracker_free_file_info (info);
- }
-
- g_free(file_uri);
- }
-
- if (p->NextEntryOffset == 0)
- p = NULL;
- else
- p = (FILE_NOTIFY_INFORMATION *) ((char *) p + p->NextEntryOffset);
- }
- }
-
- // reschedule
- monitor_dir(callback_dir_id);
-}
-
-gboolean
-monitor_dir(int dir_id)
-{
- return ReadDirectoryChangesW( monitor_handle[dir_id], buffer[dir_id], sizeof(buffer[dir_id]),
- TRUE,
- // FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE |
- FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_FILE_NAME,
- NULL, &overlapped_buffer[dir_id], callback);
-}
-
-
-void CALLBACK tracker_add_watch_dir_wrapped (DWORD param)
-{
- char *dir = (char *) param;
-
- char *dir_in_locale;
-
- dir_in_locale = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL);
-
- if (!dir_in_locale) {
- free(dir);
- return;
- }
-
- /* check directory permissions are okay */
- if (g_access (dir_in_locale, F_OK) == 0 && g_access (dir_in_locale, R_OK) == 0) {
-
- monitor_handle[dir_id] = CreateFile( dir_in_locale, FILE_LIST_DIRECTORY,
- FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE,
- NULL, OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_OVERLAPPED,
- NULL );
-
- if (monitor_handle[dir_id] == INVALID_HANDLE_VALUE) {
- free(dir);
- } else if (monitor_dir(dir_id)) {
- g_hash_table_insert (watch_table, g_strdup (dir), monitor_handle[dir_id]);
- strcpy(dirs[dir_id], dir);
-
- g_free (dir_in_locale);
- free(dir);
-
- ++dir_id;
- }
- } else {
-
- g_free (dir_in_locale);
- free(dir);
- }
-}
-
-gboolean
-tracker_add_watch_dir (const char *dir, DBConnection *db_con)
-{
- // create a copy so that the string is still available when we are called in the file notify thread
- char *something = g_strdup(dir);
- return QueueUserAPC( tracker_add_watch_dir_wrapped, sleep_thread, (DWORD) something );
-}
-
-void
-tracker_remove_watch_dir (const char *dir, gboolean delete_subdirs, DBConnection *db_con)
-{
-#if 0
- char *something = g_strdup(dir);
- QueueUserAPC( tracker_remove_watch_dir_wrapped, sleep_thread, (DWORD) something );
-#endif
-}
-
-gboolean
-tracker_is_directory_watched (const char *dir, DBConnection *db_con)
-{
- if (!dir) {
- return FALSE;
- }
-
- return (g_hash_table_lookup (watch_table, dir) != NULL);
-}
-
-int
-tracker_count_watch_dirs (void)
-{
- return g_hash_table_size (watch_table);
-}
diff --git a/src/trackerd/trackerd.c b/src/trackerd/trackerd.c
deleted file mode 100644
index a32b8c8b5..000000000
--- a/src/trackerd/trackerd.c
+++ /dev/null
@@ -1,1092 +0,0 @@
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc@gnome.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef DBUS_API_SUBJECT_TO_CHANGE
-#define DBUS_API_SUBJECT_TO_CHANGE
-#endif
-
-#define I_AM_MAIN
-
-#include "config.h"
-
-#include <signal.h>
-#include <errno.h>
-#include <locale.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <glib/gstdio.h>
-#include <glib/gi18n.h>
-#include <glib/gpattern.h>
-
-#ifdef IOPRIO_SUPPORT
-#include "tracker-ioprio.h"
-#endif
-
-#include <libtracker-common/tracker-config.h>
-#include <libtracker-common/tracker-language.h>
-#include <libtracker-common/tracker-log.h>
-
-#include "tracker-dbus.h"
-#include "tracker-email.h"
-#include "tracker-indexer.h"
-#include "tracker-process-files.h"
-#include "tracker-process-requests.h"
-#include "tracker-watch.h"
-#include "tracker-hal.h"
-
-#include "tracker-service-manager.h"
-
-#ifdef OS_WIN32
-#include <windows.h>
-#include <pthread.h>
-#include "mingw-compat.h"
-#endif
-
-typedef struct {
- gchar *uri;
- gint mtime;
-} IndexDir;
-
-Tracker *tracker;
-DBConnection *main_thread_db_con;
-DBConnection *main_thread_cache_con;
-
-
-/*
- * The workflow to process files and notified file change events are as follows:
- *
- * 1) File scan or file notification change (as reported by FAM/iNotify).
- * 2) File Scheduler (we wait until a file's changes have stabilised (NB not neccesary with inotify))
- * 3) We process a file's basic metadata (stat) and determine what needs doing in a seperate thread.
- * 4) We extract CPU intensive embedded metadata/text/thumbnail in another thread and save changes to the DB
- *
- *
- * Three threads are used to fully process a file event. Files or events to be processed are placed on
- * asynchronous queues where another thread takes over the work.
- *
- * The main thread is very lightweight and no cpu intensive or heavy file I/O (or heavy DB access) is permitted
- * here after initialisation of the daemon. This ensures the main thread can handle events and DBUS
- * requests in a timely low latency manner.
- *
- * The File Process thread is for moderate CPU intensive load and I/O and involves calls to stat()
- * and simple fast queries on the DB. The main thread queues files to be processed by this thread
- * via the file_process async queue. As no heavily CPU intensive activity occurs here, we can quickly
- * keep the DB representation of the watched file system up to date. Once a file has been processed
- * here it is then placed on the file metadata queue which is handled by the File Metadata thread.
- *
- * The File Metadata thread is a low priority thread to handle the highly CPU intensive parts.
- * During this phase, embedded metadata is extracted from files and if a text filter and/or
- * thumbnailer is available for the mime type of the file then these will be spawned synchronously.
- * Finally all metadata (including file's text contents and path to thumbnails) is saved to the DB.
- *
- * All responses including user initiated requests are queued by the main thread onto an
- * asynchronous queue where potentially multiple threads are waiting to process them.
- */
-
-
-gchar *type_array[] = {"index", "string", "numeric", "date", NULL};
-
-static gchar **no_watch_dirs = NULL;
-static gchar **watch_dirs = NULL;
-static gchar **crawl_dirs = NULL;
-static gchar *language = NULL;
-static gboolean disable_indexing = FALSE;
-static gboolean reindex = FALSE;
-static gboolean fatal_errors = FALSE;
-static gboolean low_memory;
-static gint throttle = -1;
-static gint verbosity = 0;
-static gint initial_sleep = -1; /* >= 0 is valid and will be set */
-
-static GOptionEntry entries[] = {
- {"exclude-dir", 'e', 0, G_OPTION_ARG_STRING_ARRAY, &no_watch_dirs, N_("Directory to exclude from indexing"), N_("/PATH/DIR")},
- {"include-dir", 'i', 0, G_OPTION_ARG_STRING_ARRAY, &watch_dirs, N_("Directory to include in indexing"), N_("/PATH/DIR")},
- {"crawl-dir", 'c', 0, G_OPTION_ARG_STRING_ARRAY, &crawl_dirs, N_("Directory to crawl for indexing at start up only"), N_("/PATH/DIR")},
- {"no-indexing", 'n', 0, G_OPTION_ARG_NONE, &disable_indexing, N_("Disable any indexing or watching taking place"), NULL },
- {"verbosity", 'v', 0, G_OPTION_ARG_INT, &verbosity, N_("Value that controls the level of logging. Valid values are 0 (displays/logs only errors), 1 (minimal), 2 (detailed), and 3 (debug)"), N_("VALUE") },
- {"throttle", 't', 0, G_OPTION_ARG_INT, &throttle, N_("Value to use for throttling indexing. Value must be in range 0-99 (default 0) with lower values increasing indexing speed"), N_("VALUE") },
- {"low-memory", 'm', 0, G_OPTION_ARG_NONE, &low_memory, N_("Minimizes the use of memory but may slow indexing down"), NULL },
- {"initial-sleep", 's', 0, G_OPTION_ARG_INT, &initial_sleep, N_("Initial sleep time, just before indexing, in seconds"), NULL },
- {"language", 'l', 0, G_OPTION_ARG_STRING, &language, N_("Language to use for stemmer and stop words list (ISO 639-1 2 characters code)"), N_("LANG")},
- {"reindex", 'R', 0, G_OPTION_ARG_NONE, &reindex, N_("Force a re-index of all content"), NULL },
- {"fatal-errors", 'f', 0, G_OPTION_ARG_NONE, &fatal_errors, N_("Make tracker errors fatal"), NULL },
- {NULL}
-};
-
-
-static gint
-get_update_count (DBConnection *db_con)
-{
- TrackerDBResultSet *result_set;
- gchar *str;
- gint count = 0;
-
- result_set = tracker_exec_proc (db_con, "GetUpdateCount", NULL);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 0, &str, -1);
-
- if (str) {
- count = atoi (str);
- }
-
- g_free (str);
- g_object_unref (result_set);
- }
-
- return count;
-}
-
-gboolean
-tracker_die ()
-{
- tracker_error ("trackerd has failed to exit on time - terminating...");
- exit (EXIT_FAILURE);
-}
-
-
-void
-free_file_change (FileChange **user_data)
-{
- FileChange *change = *user_data;
- g_free (change->uri);
- change->uri = NULL;
- change = NULL;
-}
-
-static void
-free_file_change_queue (gpointer data, gpointer user_data)
-{
- FileChange *change = (FileChange *)data;
- free_file_change (&change);
-}
-
-
-static void
-reset_blacklist_file (char *uri)
-{
-
- char *parent = g_path_get_dirname (uri);
- if (!parent) return;
-
- char *parent_name = g_path_get_basename (parent);
- if (!parent_name) return;
-
- char *parent_path = g_path_get_dirname (parent);
- if (!parent_path) return;
-
- tracker_log ("resetting black list file %s", uri);
-
- /* reset mtime on parent folder of all outstanding black list files so they get indexed when next restarted */
- tracker_exec_proc (main_thread_db_con, "UpdateFileMTime", "0", parent_path, parent_name, NULL);
-
- g_free (parent);
- g_free (parent_name);
- g_free (parent_path);
-}
-
-gboolean
-tracker_do_cleanup (const gchar *sig_msg)
-{
- GSList *black_list;
-
- tracker_set_status (tracker, STATUS_SHUTDOWN, 0, FALSE);
-
- if (sig_msg) {
- tracker_log ("Received signal '%s' so now shutting down", sig_msg);
-
- tracker_print_object_allocations ();
- }
-
- /* set kill timeout */
- g_timeout_add_full (G_PRIORITY_LOW,
- 20000,
- (GSourceFunc) tracker_die,
- NULL, NULL
- );
-
-
- /* stop threads from further processing of events if possible */
-
- tracker->in_flush = TRUE;
-
- //set_update_count (main_thread_db_con, tracker->update_count);
-
- /* wait for files thread to sleep */
- while (!g_mutex_trylock (tracker->files_signal_mutex)) {
- g_usleep (100);
- }
-
- g_mutex_unlock (tracker->files_signal_mutex);
-
- while (!g_mutex_trylock (tracker->metadata_signal_mutex)) {
- g_usleep (100);
- }
-
- g_mutex_unlock (tracker->metadata_signal_mutex);
-
- tracker_log ("shutting down threads");
-
- /* send signals to each thread to wake them up and then stop them */
-
-
- tracker->shutdown = TRUE;
-
- g_mutex_lock (tracker->request_signal_mutex);
- g_cond_signal (tracker->request_thread_signal);
- g_mutex_unlock (tracker->request_signal_mutex);
-
- g_mutex_lock (tracker->metadata_signal_mutex);
- g_cond_signal (tracker->metadata_thread_signal);
- g_mutex_unlock (tracker->metadata_signal_mutex);
-
- g_mutex_unlock (tracker->files_check_mutex);
-
- g_mutex_lock (tracker->files_signal_mutex);
- g_cond_signal (tracker->file_thread_signal);
- g_mutex_unlock (tracker->files_signal_mutex);
-
-
- /* wait for threads to exit and unlock check mutexes to prevent any deadlocks*/
-
- g_mutex_unlock (tracker->request_check_mutex);
- g_mutex_lock (tracker->request_stopped_mutex);
-
- g_mutex_unlock (tracker->metadata_check_mutex);
- g_mutex_lock (tracker->metadata_stopped_mutex);
-
- g_mutex_unlock (tracker->files_check_mutex);
- g_mutex_lock (tracker->files_stopped_mutex);
-
-
- tracker_indexer_close (tracker->file_index);
- tracker_indexer_close (tracker->file_update_index);
- tracker_indexer_close (tracker->email_index);
-
- tracker_email_end_email_watching ();
-
- /* reset integrity status as threads have closed cleanly */
- tracker_db_set_option_int (main_thread_db_con, "IntegrityCheck", 0);
-
-
- /* reset black list files */
- black_list = tracker_process_files_get_temp_black_list ();
- g_slist_foreach (black_list,
- (GFunc) reset_blacklist_file,
- NULL);
- tracker_process_files_free_temp_black_list ();
-
- tracker_db_close (main_thread_db_con);
-
- /* This must be called after all other db functions */
- tracker_db_finalize ();
-
-
- if (tracker->reindex) {
- tracker_remove_dirs (tracker->data_dir);
- g_mkdir_with_parents (tracker->data_dir, 00755);
- }
-
- if (tracker->hal) {
- g_object_unref (tracker->hal);
- tracker->hal = NULL;
- }
-
- tracker_debug ("Shutting down main thread");
-
- tracker_log_term ();
-
- /* remove sys tmp directory */
- if (tracker->sys_tmp_root_dir) {
- tracker_remove_dirs (tracker->sys_tmp_root_dir);
- }
-
- /* remove file change queue */
- if (tracker->file_change_queue) {
- g_queue_foreach (tracker->file_change_queue,
- free_file_change_queue, NULL);
- g_queue_free (tracker->file_change_queue);
- tracker->file_change_queue = NULL;
- }
-
- if (tracker->language) {
- tracker_language_free (tracker->language);
- }
-
- if (tracker->config) {
- g_object_unref (tracker->config);
- }
-
- g_main_loop_quit (tracker->loop);
-
- exit (EXIT_SUCCESS);
-
- return FALSE;
-}
-
-static void
-signal_handler (gint signo)
-{
- static gboolean in_loop = FALSE;
-
- /* die if we get re-entrant signals handler calls */
- if (in_loop) {
- exit (EXIT_FAILURE);
- }
-
- switch (signo) {
-
- case SIGSEGV:
-
- /* we are screwed if we get this so exit immediately! */
- exit (EXIT_FAILURE);
-
- case SIGBUS:
- case SIGILL:
- case SIGFPE:
- case SIGPIPE:
- case SIGABRT:
- case SIGTERM:
- case SIGINT:
-
- in_loop = TRUE;
-
- tracker->is_running = FALSE;
- tracker_end_watching ();
-
- g_timeout_add_full (G_PRIORITY_LOW,
- 1,
- (GSourceFunc) tracker_do_cleanup,
- g_strdup (g_strsignal (signo)), NULL
- );
-
-
- default:
- if (g_strsignal (signo)) {
- tracker_log ("Received signal %s ", g_strsignal (signo));
- }
- break;
- }
-}
-
-static inline void
-queue_dir (const gchar *uri)
-{
- FileInfo *info = tracker_create_file_info (uri, TRACKER_ACTION_DIRECTORY_CHECK, 0, 0);
- g_async_queue_push (tracker->file_process_queue, info);
-}
-
-
-static void
-unregistered_func (DBusConnection *connection, gpointer data)
-{
-}
-
-
-static DBusHandlerResult
-local_dbus_connection_monitoring_message_func (DBusConnection *connection, DBusMessage *message, gpointer data)
-{
- /* DBus connection has been lost! */
- if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
- dbus_message_ref (message);
-
- tracker_error ("DBus connection has been lost, trackerd will now shutdown");
-
- tracker->is_running = FALSE;
- tracker_end_watching ();
- tracker_do_cleanup ("DBus connection lost");
- }
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-
-static gboolean
-add_local_dbus_connection_monitoring (DBusConnection *connection)
-{
- DBusObjectPathVTable dbus_daemon_vtable = {
- unregistered_func,
- local_dbus_connection_monitoring_message_func,
- NULL,
- NULL,
- NULL,
- NULL
- };
-
- if (!dbus_connection_register_object_path (connection, DBUS_PATH_LOCAL, &dbus_daemon_vtable, NULL)) {
- tracker_log ("could not register local D-BUS connection handler");
- return FALSE;
-
- } else {
- return TRUE;
- }
-}
-
-
-static void
-set_defaults (void)
-{
- tracker->grace_period = 0;
-
- tracker->reindex = FALSE;
- tracker->in_merge = FALSE;
-
- tracker->merge_limit = MERGE_LIMIT;
-
- tracker->index_status = INDEX_CONFIG;
-
- tracker->black_list_timer_active = FALSE;
-
- tracker->pause_manual = FALSE;
- tracker->pause_battery = FALSE;
- tracker->pause_io = FALSE;
-
- tracker->use_nfs_safe_locking = FALSE;
-
- tracker->watch_limit = 0;
- tracker->index_counter = 0;
- tracker->index_count = 0;
- tracker->update_count = 0;
-
- tracker->max_index_text_length = MAX_INDEX_TEXT_LENGTH;
- tracker->max_process_queue_size = MAX_PROCESS_QUEUE_SIZE;
- tracker->max_extract_queue_size = MAX_EXTRACT_QUEUE_SIZE;
-
- tracker->flush_count = 0;
-
- tracker->index_numbers = FALSE;
- tracker->index_number_min_length = 6;
- tracker->strip_accents = TRUE;
-
- tracker->first_flush = TRUE;
-
- tracker->services_dir = g_build_filename (SHAREDIR, "tracker", "services", NULL);
-
- tracker->folders_count = 0;
- tracker->folders_processed = 0;
- tracker->mbox_count = 0;
- tracker->folders_processed = 0;
-}
-
-static void
-log_option_list (GSList *list,
- const gchar *str)
-{
- GSList *l;
-
- if (!list) {
- tracker_log ("%s: NONE!", str);
- return;
- }
-
- tracker_log ("%s:", str);
-
- for (l = list; l; l = l->next) {
- tracker_log (" %s", l->data);
- }
-}
-
-static void
-sanity_check_option_values (void)
-{
- GSList *watch_directory_roots;
- GSList *crawl_directory_roots;
- GSList *no_watch_directory_roots;
- GSList *no_index_file_types;
-
- watch_directory_roots = tracker_config_get_watch_directory_roots (tracker->config);
- crawl_directory_roots = tracker_config_get_crawl_directory_roots (tracker->config);
- no_watch_directory_roots = tracker_config_get_no_watch_directory_roots (tracker->config);
-
- no_index_file_types = tracker_config_get_no_index_file_types (tracker->config);
-
- tracker_log ("Tracker configuration options:");
- tracker_log (" Verbosity ............................ %d",
- tracker_config_get_verbosity (tracker->config));
- tracker_log (" Low memory mode ...................... %s",
- tracker_config_get_low_memory_mode (tracker->config) ? "yes" : "no");
- tracker_log (" Indexing enabled ..................... %s",
- tracker_config_get_enable_indexing (tracker->config) ? "yes" : "no");
- tracker_log (" Watching enabled ..................... %s",
- tracker_config_get_enable_watches (tracker->config) ? "yes" : "no");
- tracker_log (" File content indexing enabled ........ %s",
- tracker_config_get_enable_content_indexing (tracker->config) ? "yes" : "no");
- tracker_log (" Thumbnailing enabled ................. %s",
- tracker_config_get_enable_thumbnails (tracker->config) ? "yes" : "no");
- tracker_log (" Email client to index ................. %s",
- tracker_config_get_email_client (tracker->config));
-
- tracker_log ("Tracker indexer parameters:");
- tracker_log (" Indexer language code ................ %s",
- tracker_config_get_language (tracker->config));
- tracker_log (" Minimum index word length ............ %d",
- tracker_config_get_min_word_length (tracker->config));
- tracker_log (" Maximum index word length ............ %d",
- tracker_config_get_max_word_length (tracker->config));
- tracker_log (" Stemmer enabled ...................... %s",
- tracker_config_get_enable_stemmer (tracker->config) ? "yes" : "no");
-
- tracker->word_count = 0;
- tracker->word_detail_count = 0;
- tracker->word_update_count = 0;
-
- tracker->file_word_table = g_hash_table_new (g_str_hash, g_str_equal);
- tracker->file_update_word_table = g_hash_table_new (g_str_hash, g_str_equal);
- tracker->email_word_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- if (!tracker_config_get_low_memory_mode (tracker->config)) {
- tracker->memory_limit = 16000 *1024;
-
- tracker->max_process_queue_size = 5000;
- tracker->max_extract_queue_size = 5000;
-
- tracker->word_detail_limit = 2000000;
- tracker->word_detail_min = 0;
- tracker->word_count_limit = 500000;
- tracker->word_count_min = 0;
- } else {
- tracker->memory_limit = 8192 * 1024;
-
- tracker->max_process_queue_size = 500;
- tracker->max_extract_queue_size = 500;
-
- tracker->word_detail_limit = 50000;
- tracker->word_detail_min = 20000;
- tracker->word_count_limit = 5000;
- tracker->word_count_min = 500;
- }
-
- if (tracker->battery_udi) {
- /* Default is 0 */
- tracker_config_set_throttle (tracker->config, 5);
- }
-
- log_option_list (watch_directory_roots, "Watching directory roots");
- log_option_list (crawl_directory_roots, "Crawling directory roots");
- log_option_list (no_watch_directory_roots, "NOT watching directory roots");
- log_option_list (no_index_file_types, "NOT indexing file types");
-
- tracker_log ("Throttle level is %d\n", tracker_config_get_throttle (tracker->config));
-
- tracker->metadata_table = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- NULL,
- NULL);
- tracker->service_directory_table = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_free);
-}
-
-static void
-create_index (gboolean need_data)
-{
- tracker->first_time_index = TRUE;
-
- /* create files db and emails db */
- DBConnection *db_con_tmp = tracker_db_connect ();
-
- /* reset stats for embedded services if they are being reindexed */
- if (!need_data) {
- tracker_log ("*** DELETING STATS *** ");
- tracker_db_exec_no_reply (db_con_tmp, "update ServiceTypes set TypeCount = 0 where Embedded = 1");
- }
-
- tracker_db_close (db_con_tmp);
- g_free (db_con_tmp);
-
- /* create databases */
-
- db_con_tmp = tracker_db_connect_file_content ();
- tracker_db_close (db_con_tmp);
- g_free (db_con_tmp);
-
- db_con_tmp = tracker_db_connect_email_content ();
- tracker_db_close (db_con_tmp);
- g_free (db_con_tmp);
-
- db_con_tmp = tracker_db_connect_emails ();
- tracker_db_close (db_con_tmp);
- g_free (db_con_tmp);
-
-}
-
-gint
-main (gint argc, gchar *argv[])
-{
- gint lfp;
-#ifndef OS_WIN32
- struct sigaction act;
- sigset_t empty_mask;
-#endif
- gchar *lock_file, *str, *lock_str;
- GOptionContext *context = NULL;
- GError *error = NULL;
- gchar *example;
- gboolean need_index, need_data;
- DBConnection *db_con;
- gchar *tmp_dir;
- gchar *old_tracker_dir;
- gchar *log_filename;
-
- g_type_init ();
-
- if (!g_thread_supported ())
- g_thread_init (NULL);
-
- dbus_g_thread_init ();
-
- setlocale (LC_ALL, "");
-
- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- /* set timezone info */
- tzset ();
-
- /* Translators: this messagge will apper immediately after the */
- /* usage string - Usage: COMMAND <THIS_MESSAGE> */
- context = g_option_context_new (_("- start the tracker daemon"));
- example = g_strconcat ("-i ", _("DIRECTORY"), " -i ", _("DIRECTORY"),
- " -e ", _("DIRECTORY"), " -e ", _("DIRECTORY"),
- NULL);
-
-#ifdef HAVE_RECENT_GLIB
- /* Translators: this message will appear after the usage string */
- /* and before the list of options, showing an usage example. */
- g_option_context_set_summary (context,
- g_strconcat(_("To include or exclude multiple directories "
- "at the same time, join multiple options like:"),
-
- "\n\n\t",
- example, NULL));
-
-#endif /* HAVE_RECENT_GLIB */
-
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_parse (context, &argc, &argv, &error);
-
- g_option_context_free (context);
- g_free (example);
-
- g_print ("\n\nTracker version %s Copyright (c) 2005-2007 by Jamie McCracken (jamiemcc@gnome.org)\n\n", TRACKER_VERSION);
- g_print ("This program is free software and comes without any warranty.\nIt is licensed under version 2 or later of the General Public License which can be viewed at http://www.gnu.org/licenses/gpl.txt\n\n");
-
- g_print ("Initialising tracker...\n");
-
-#ifndef OS_WIN32
- /* trap signals */
- sigemptyset (&empty_mask);
- act.sa_handler = signal_handler;
- act.sa_mask = empty_mask;
- act.sa_flags = 0;
- sigaction (SIGTERM, &act, NULL);
- sigaction (SIGILL, &act, NULL);
- sigaction (SIGBUS, &act, NULL);
- sigaction (SIGFPE, &act, NULL);
- sigaction (SIGHUP, &act, NULL);
- sigaction (SIGSEGV, &act, NULL);
- sigaction (SIGABRT, &act, NULL);
- sigaction (SIGUSR1, &act, NULL);
- sigaction (SIGINT, &act, NULL);
-#endif
-
- tracker = g_new0 (Tracker, 1);
-
- /* Set up directories */
- tracker->pid = (int) getpid ();
- tmp_dir = g_strdup_printf ("Tracker-%s.%d", g_get_user_name (), tracker->pid);
- tracker->sys_tmp_root_dir = g_build_filename (g_get_tmp_dir (), tmp_dir, NULL);
- g_free (tmp_dir);
-
- tracker->root_dir = g_build_filename (g_get_user_data_dir (), "tracker", NULL);
- tracker->data_dir = g_build_filename (g_get_user_cache_dir (), "tracker", NULL);
- tracker->config_dir = g_strdup (g_get_user_config_dir ());
- tracker->user_data_dir = g_build_filename (tracker->root_dir, "data", NULL);
-
- /* Set up the config */
- tracker->config = tracker_config_new ();
- tracker->language = tracker_language_new (tracker->config);
-
- /* Set up the log */
- log_filename = g_build_filename (tracker->root_dir, "tracker.log", NULL);
- tracker_unlink (log_filename);
-
- /* Change verbosity config if set on command line */
- if (verbosity != 0) {
- tracker_config_set_verbosity (tracker->config, verbosity);
- }
-
- tracker_log_init (log_filename,
- tracker_config_get_verbosity (tracker->config),
- fatal_errors);
- tracker_log ("Starting log");
-
- /* Set up the DBus IPC */
- tracker->dbus_con = tracker_dbus_init ();
-
- add_local_dbus_connection_monitoring (tracker->dbus_con);
-
- tracker_set_status (tracker, STATUS_INIT, 0, FALSE);
-
- tracker->is_running = FALSE;
- tracker->shutdown = FALSE;
-
- tracker->files_check_mutex = g_mutex_new ();
- tracker->metadata_check_mutex = g_mutex_new ();
- tracker->request_check_mutex = g_mutex_new ();
-
- tracker->files_stopped_mutex = g_mutex_new ();
- tracker->metadata_stopped_mutex = g_mutex_new ();
- tracker->request_stopped_mutex = g_mutex_new ();
-
- tracker->file_metadata_thread = NULL;
-
- tracker->file_thread_signal = g_cond_new ();
- tracker->metadata_thread_signal = g_cond_new ();
- tracker->request_thread_signal = g_cond_new ();
-
- tracker->metadata_signal_mutex = g_mutex_new ();
- tracker->files_signal_mutex = g_mutex_new ();
- tracker->request_signal_mutex = g_mutex_new ();
-
- tracker->scheduler_mutex = g_mutex_new ();
-
- /* Remove an existing one */
- if (g_file_test (tracker->sys_tmp_root_dir, G_FILE_TEST_EXISTS)) {
- tracker_remove_dirs (tracker->sys_tmp_root_dir);
- }
-
- /* Remove old tracker dirs */
- old_tracker_dir = g_build_filename (g_get_home_dir (), ".Tracker", NULL);
-
- if (g_file_test (old_tracker_dir ,G_FILE_TEST_EXISTS)) {
- tracker_remove_dirs (old_tracker_dir);
- }
-
- g_free (old_tracker_dir);
-
- /* Create other directories we need */
- if (!g_file_test (tracker->user_data_dir, G_FILE_TEST_EXISTS)) {
- g_mkdir_with_parents (tracker->user_data_dir, 00755);
- }
-
- if (!g_file_test (tracker->data_dir, G_FILE_TEST_EXISTS)) {
- g_mkdir_with_parents (tracker->data_dir, 00755);
- }
-
- tracker->email_attachements_dir = g_build_filename (tracker->sys_tmp_root_dir, "Attachments", NULL);
- g_mkdir_with_parents (tracker->email_attachements_dir, 00700);
- tracker_log ("Made email attachments directory %s\n", tracker->email_attachements_dir);
-
- need_index = FALSE;
- need_data = FALSE;
-
- //tracker->cached_word_table_mutex = g_mutex_new ();
-
- tracker->dir_queue = g_async_queue_new ();
-
- tracker->xesam_dir = g_build_filename (g_get_home_dir (), ".xesam", NULL);
-
- if (reindex || tracker_db_needs_setup ()) {
- tracker_remove_dirs (tracker->data_dir);
- g_mkdir_with_parents (tracker->data_dir, 00755);
- need_index = TRUE;
- }
-
-
- need_data = tracker_db_needs_data ();
-
- umask (077);
-
- str = g_strconcat (g_get_user_name (), "_tracker_lock", NULL);
-
-
-
- /* check if setup for NFS usage (and enable atomic NFS safe locking) */
- //lock_str = tracker_get_config_option ("NFSLocking");
- lock_str = NULL;
-
- if (lock_str != NULL) {
-
- tracker->use_nfs_safe_locking = (strcmp (str, "1") == 0);
-
- /* place lock file in tmp dir to allow multiple sessions on NFS */
- lock_file = g_build_filename (tracker->sys_tmp_root_dir, str, NULL);
-
- g_free (lock_str);
-
- } else {
-
- tracker->use_nfs_safe_locking = FALSE;
-
- /* place lock file in home dir to prevent multiple sessions on NFS (as standard locking might be broken on NFS) */
- lock_file = g_build_filename (tracker->root_dir, str, NULL);
- }
-
- g_free (str);
-
- /* prevent muliple instances */
- tracker->readonly = FALSE;
-
- lfp = g_open (lock_file, O_RDWR|O_CREAT, 0640);
- g_free (lock_file);
-
- if (lfp < 0) {
- g_warning ("Cannot open or create lockfile - exiting");
- exit (1);
- }
-
- if (lockf (lfp, F_TLOCK, 0) <0) {
- g_warning ("Tracker daemon is already running - attempting to run in readonly mode");
- tracker->readonly = TRUE;
- }
-
- /* Set child's niceness to 19 */
- errno = 0;
- /* nice() uses attribute "warn_unused_result" and so complains if we do not check its
- returned value. But it seems that since glibc 2.2.4, nice() can return -1 on a
- successful call so we have to check value of errno too. Stupid... */
- if (nice (19) == -1 && errno) {
- g_printerr ("ERROR: trying to set nice value\n");
- }
-
-#ifdef IOPRIO_SUPPORT
- ioprio ();
-#endif
-
-
- /* deal with config options with defaults, config file and option params */
- set_defaults ();
-
- tracker->battery_udi = NULL;
-
- if (error) {
- g_printerr ("invalid arguments: %s\n", error->message);
- return 1;
- }
-
- if (watch_dirs) {
- tracker_config_add_watch_directory_roots (tracker->config, watch_dirs);
- }
-
- if (crawl_dirs) {
- tracker_config_add_crawl_directory_roots (tracker->config, crawl_dirs);
- }
-
- if (no_watch_dirs) {
- tracker_config_add_no_watch_directory_roots (tracker->config, no_watch_dirs);
- }
-
- if (disable_indexing) {
- tracker_config_set_enable_indexing (tracker->config, FALSE);
- }
-
- if (language) {
- tracker_config_set_language (tracker->config, language);
- }
-
- if (throttle != -1) {
- tracker_config_set_throttle (tracker->config, throttle);
- }
-
- if (low_memory) {
- tracker_config_set_low_memory_mode (tracker->config, TRUE);
- }
-
- /* verbosity is already set when the log is initialized */
-
- if (initial_sleep >= 0) {
- tracker_config_set_initial_sleep (tracker->config, initial_sleep);
- }
-
- tracker->fatal_errors = fatal_errors;
-
- sanity_check_option_values ();
-
- /* Initialize the service manager */
- tracker_service_manager_init ();
-
- /* set thread safe DB connection */
- tracker_db_thread_init ();
-
- if (!tracker_db_initialize ()) {
- tracker_log ("ERROR: failed to initialise database engine - exiting...");
- return 1;
- }
-
- /* create cache db */
- DBConnection *db2 = tracker_db_connect_cache ();
- tracker_db_close (db2);
-
-
- if (need_data) {
- tracker_create_db ();
- }
-
- /* create database if needed */
- if (!tracker->readonly && need_index) {
-
- create_index (need_data);
-
- } else {
- tracker->first_time_index = FALSE;
- }
-
-
- db_con = tracker_db_connect ();
- db_con->thread = "main";
-
-
- /* check db integrity if not previously shut down cleanly */
- if (!tracker->readonly && !need_index && tracker_db_get_option_int (db_con, "IntegrityCheck") == 1) {
-
- tracker_log ("performing integrity check as trackerd was not shutdown cleanly");
-
-
-/* turn off corruption check as it can hog cpu for long time
-
- if (!tracker_db_integrity_check (db_con) || !tracker_indexer_repair ("file-index.db") || !tracker_indexer_repair ("email-index.db")) {
- tracker_error ("db or index corruption detected - prepare for reindex...");
- tracker_db_close (db_con);
-
- tracker_remove_dirs (tracker->data_dir);
- g_mkdir_with_parents (tracker->data_dir, 00755);
- create_index (need_data);
- db_con = tracker_db_connect ();
- db_con->thread = "main";
-
- }
-*/
- }
-
-
- if (!tracker->readonly) {
- tracker_db_set_option_int (db_con, "IntegrityCheck", 1);
- }
-
- if (tracker->first_time_index) {
- tracker_db_set_option_int (db_con, "InitialIndex", 1);
- }
-
- db_con->cache = tracker_db_connect_cache ();
- db_con->common = tracker_db_connect_common ();
- db_con->index = db_con;
-
- main_thread_db_con = db_con;
-
- /* move final file to index file if present and no files left to merge */
- char *final_index_name = g_build_filename (tracker->data_dir, "file-index-final", NULL);
-
- if (g_file_test (final_index_name, G_FILE_TEST_EXISTS) && !tracker_indexer_has_tmp_merge_files (INDEX_TYPE_FILES)) {
-
- char *file_index_name = g_build_filename (tracker->data_dir, "file-index.db", NULL);
-
- tracker_log ("overwriting %s with %s", file_index_name, final_index_name);
-
- rename (final_index_name, file_index_name);
-
- g_free (file_index_name);
- }
-
- g_free (final_index_name);
-
- final_index_name = g_build_filename (tracker->data_dir, "email-index-final", NULL);
-
- if (g_file_test (final_index_name, G_FILE_TEST_EXISTS) && !tracker_indexer_has_tmp_merge_files (INDEX_TYPE_EMAILS)) {
-
- char *file_index_name = g_build_filename (tracker->data_dir, "email-index.db", NULL);
-
- tracker_log ("overwriting %s with %s", file_index_name, final_index_name);
-
- rename (final_index_name, file_index_name);
-
- g_free (file_index_name);
- }
-
- g_free (final_index_name);
-
-
-
- Indexer *index = tracker_indexer_open ("file-index.db", TRUE);
- tracker->file_index = index;
-
- index = tracker_indexer_open ("file-update-index.db", FALSE);
- tracker->file_update_index = index;
-
- index = tracker_indexer_open ("email-index.db", TRUE);
- tracker->email_index = index;
-
- db_con->word_index = tracker->file_index;
-
- tracker->update_count = get_update_count (main_thread_db_con);
-
- tracker_db_get_static_data (db_con);
-
- tracker->file_metadata_queue = g_async_queue_new ();
-
- if (!tracker->readonly) {
- tracker->file_process_queue = g_async_queue_new ();
- }
-
- tracker->user_request_queue = g_async_queue_new ();
-
- tracker_email_init ();
-
- tracker->loop = g_main_loop_new (NULL, TRUE);
-
-#ifdef HAVE_HAL
- /* Create tracker HAL object */
- tracker->hal = tracker_hal_new ();
-#endif
-
- /* this var is used to tell the threads when to quit */
- tracker->is_running = TRUE;
-
- g_thread_create_full ((GThreadFunc) tracker_process_requests,
- tracker,
- (gulong) tracker_config_get_thread_stack_size (tracker->config),
- FALSE,
- FALSE,
- G_THREAD_PRIORITY_NORMAL,
- NULL);
-
- if (!tracker->readonly) {
- if (!tracker_start_watching ()) {
- tracker_error ("ERROR: file monitoring failed to start");
- tracker_do_cleanup ("File watching failure");
- exit (1);
- }
-
- g_thread_create_full ((GThreadFunc) tracker_process_files,
- tracker,
- (gulong) tracker_config_get_thread_stack_size (tracker->config),
- FALSE,
- FALSE,
- G_THREAD_PRIORITY_NORMAL,
- NULL);
- }
-
- g_main_loop_run (tracker->loop);
-
- return EXIT_SUCCESS;
-}
diff --git a/src/xdgmime/Makefile.am b/src/xdgmime/Makefile.am
deleted file mode 100644
index 05e65b249..000000000
--- a/src/xdgmime/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-
-noinst_LTLIBRARIES = libxdgmime.la
-
-if OS_WIN32
-xdgmime_win_sources = fnmatch.c \
- fnmatch.h \
- safe-ctype.c \
- safe-ctype.h
-endif
-
-libxdgmime_la_SOURCES = \
- $(xdgmime_win_sources) \
- xdgmime.c \
- xdgmime.h \
- xdgmimealias.c \
- xdgmimealias.h \
- xdgmimecache.c \
- xdgmimecache.h \
- xdgmimeglob.c \
- xdgmimeglob.h \
- xdgmimeint.c \
- xdgmimeint.h \
- xdgmimemagic.c \
- xdgmimemagic.h \
- xdgmimeparent.c \
- xdgmimeparent.h
diff --git a/src/xdgmime/fnmatch.c b/src/xdgmime/fnmatch.c
deleted file mode 100644
index eb898ee14..000000000
--- a/src/xdgmime/fnmatch.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
-
-NOTE: This source is derived from an old version taken from the GNU C
-Library (glibc).
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#if defined (CONFIG_BROKETS)
-/* We use <config.h> instead of "config.h" so that a compilation
- using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
- (which it would do because it found this file in $srcdir). */
-#include <config.h>
-#else
-#include "config.h"
-#endif
-#endif
-
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-/* This code to undef const added in libiberty. */
-#ifndef __STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <errno.h>
-#include <fnmatch.h>
-#include <safe-ctype.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
-
-
-#if !defined(__GNU_LIBRARY__) && !defined(STDC_HEADERS)
-extern int errno;
-#endif
-
-/* Match STRING against the filename pattern PATTERN, returning zero if
- it matches, nonzero if not. */
-int
-fnmatch (pattern, string, flags)
- const char *pattern;
- const char *string;
- int flags;
-{
- register const char *p = pattern, *n = string;
- register unsigned char c;
-
-#define FOLD(c) ((flags & FNM_CASEFOLD) ? TOLOWER (c) : (c))
-
- while ((c = *p++) != '\0')
- {
- c = FOLD (c);
-
- switch (c)
- {
- case '?':
- if (*n == '\0')
- return FNM_NOMATCH;
- else if ((flags & FNM_FILE_NAME) && *n == '/')
- return FNM_NOMATCH;
- else if ((flags & FNM_PERIOD) && *n == '.' &&
- (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
- return FNM_NOMATCH;
- break;
-
- case '\\':
- if (!(flags & FNM_NOESCAPE))
- {
- c = *p++;
- c = FOLD (c);
- }
- if (FOLD ((unsigned char)*n) != c)
- return FNM_NOMATCH;
- break;
-
- case '*':
- if ((flags & FNM_PERIOD) && *n == '.' &&
- (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
- return FNM_NOMATCH;
-
- for (c = *p++; c == '?' || c == '*'; c = *p++, ++n)
- if (((flags & FNM_FILE_NAME) && *n == '/') ||
- (c == '?' && *n == '\0'))
- return FNM_NOMATCH;
-
- if (c == '\0')
- return 0;
-
- {
- unsigned char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
- c1 = FOLD (c1);
- for (--p; *n != '\0'; ++n)
- if ((c == '[' || FOLD ((unsigned char)*n) == c1) &&
- fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
- return 0;
- return FNM_NOMATCH;
- }
-
- case '[':
- {
- /* Nonzero if the sense of the character class is inverted. */
- register int not;
-
- if (*n == '\0')
- return FNM_NOMATCH;
-
- if ((flags & FNM_PERIOD) && *n == '.' &&
- (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
- return FNM_NOMATCH;
-
- not = (*p == '!' || *p == '^');
- if (not)
- ++p;
-
- c = *p++;
- for (;;)
- {
- register unsigned char cstart = c, cend = c;
-
- if (!(flags & FNM_NOESCAPE) && c == '\\')
- cstart = cend = *p++;
-
- cstart = cend = FOLD (cstart);
-
- if (c == '\0')
- /* [ (unterminated) loses. */
- return FNM_NOMATCH;
-
- c = *p++;
- c = FOLD (c);
-
- if ((flags & FNM_FILE_NAME) && c == '/')
- /* [/] can never match. */
- return FNM_NOMATCH;
-
- if (c == '-' && *p != ']')
- {
- cend = *p++;
- if (!(flags & FNM_NOESCAPE) && cend == '\\')
- cend = *p++;
- if (cend == '\0')
- return FNM_NOMATCH;
- cend = FOLD (cend);
-
- c = *p++;
- }
-
- if (FOLD ((unsigned char)*n) >= cstart
- && FOLD ((unsigned char)*n) <= cend)
- goto matched;
-
- if (c == ']')
- break;
- }
- if (!not)
- return FNM_NOMATCH;
- break;
-
- matched:;
- /* Skip the rest of the [...] that already matched. */
- while (c != ']')
- {
- if (c == '\0')
- /* [... (unterminated) loses. */
- return FNM_NOMATCH;
-
- c = *p++;
- if (!(flags & FNM_NOESCAPE) && c == '\\')
- /* XXX 1003.2d11 is unclear if this is right. */
- ++p;
- }
- if (not)
- return FNM_NOMATCH;
- }
- break;
-
- default:
- if (c != FOLD ((unsigned char)*n))
- return FNM_NOMATCH;
- }
-
- ++n;
- }
-
- if (*n == '\0')
- return 0;
-
- if ((flags & FNM_LEADING_DIR) && *n == '/')
- /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */
- return 0;
-
- return FNM_NOMATCH;
-}
-
-#endif /* _LIBC or not __GNU_LIBRARY__. */
diff --git a/src/xdgmime/fnmatch.h b/src/xdgmime/fnmatch.h
deleted file mode 100644
index 87e661f72..000000000
--- a/src/xdgmime/fnmatch.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#ifndef _FNMATCH_H
-# define _FNMATCH_H 1
-
-# ifdef __cplusplus
-extern "C" {
-# endif
-
-/* We #undef these before defining them because some losing systems
- (HP-UX A.08.07 for example) define these in <unistd.h>. */
-# undef FNM_PATHNAME
-# undef FNM_NOESCAPE
-# undef FNM_PERIOD
-
-/* Bits set in the FLAGS argument to `fnmatch'. */
-# define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
-# define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
-# define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
-
-# if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
-# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
-# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
-# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
-# define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */
-# endif
-
-/* Value returned by `fnmatch' if STRING does not match PATTERN. */
-# define FNM_NOMATCH 1
-
-/* This value is returned if the implementation does not support
- `fnmatch'. Since this is not the case here it will never be
- returned but the conformance test suites still require the symbol
- to be defined. */
-# ifdef _XOPEN_SOURCE
-# define FNM_NOSYS (-1)
-# endif
-
-/* Match NAME against the filename pattern PATTERN,
- returning zero if it matches, FNM_NOMATCH if not. */
-extern int fnmatch (const char *__pattern, const char *__name,
- int __flags);
-
-# ifdef __cplusplus
-}
-# endif
-
-#endif /* fnmatch.h */
diff --git a/src/xdgmime/safe-ctype.c b/src/xdgmime/safe-ctype.c
deleted file mode 100644
index 0c2be3ed7..000000000
--- a/src/xdgmime/safe-ctype.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/* <ctype.h> replacement macros.
-
- Copyright (C) 2000 Free Software Foundation, Inc.
- Contributed by Zack Weinberg <zackw@stanford.edu>.
-
-This file is part of the libiberty library.
-Libiberty is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-Libiberty is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with libiberty; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This is a compatible replacement of the standard C library's <ctype.h>
- with the following properties:
-
- - Implements all isxxx() macros required by C99.
- - Also implements some character classes useful when
- parsing C-like languages.
- - Does not change behavior depending on the current locale.
- - Behaves properly for all values in the range of a signed or
- unsigned char. */
-
-#include "ansidecl.h"
-#include <safe-ctype.h>
-#include <stdio.h> /* for EOF */
-
-/* Shorthand */
-#define bl _sch_isblank
-#define cn _sch_iscntrl
-#define di _sch_isdigit
-#define is _sch_isidst
-#define lo _sch_islower
-#define nv _sch_isnvsp
-#define pn _sch_ispunct
-#define pr _sch_isprint
-#define sp _sch_isspace
-#define up _sch_isupper
-#define vs _sch_isvsp
-#define xd _sch_isxdigit
-
-/* Masks. */
-#define L lo|is |pr /* lower case letter */
-#define XL lo|is|xd|pr /* lowercase hex digit */
-#define U up|is |pr /* upper case letter */
-#define XU up|is|xd|pr /* uppercase hex digit */
-#define D di |xd|pr /* decimal digit */
-#define P pn |pr /* punctuation */
-#define _ pn|is |pr /* underscore */
-
-#define C cn /* control character */
-#define Z nv |cn /* NUL */
-#define M nv|sp |cn /* cursor movement: \f \v */
-#define V vs|sp |cn /* vertical space: \r \n */
-#define T nv|sp|bl|cn /* tab */
-#define S nv|sp|bl|pr /* space */
-
-/* Are we ASCII? */
-#if '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
- && 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21 \
- && EOF == -1
-
-const unsigned short _sch_istable[256] =
-{
- Z, C, C, C, C, C, C, C, /* NUL SOH STX ETX EOT ENQ ACK BEL */
- C, T, V, M, M, V, C, C, /* BS HT LF VT FF CR SO SI */
- C, C, C, C, C, C, C, C, /* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
- C, C, C, C, C, C, C, C, /* CAN EM SUB ESC FS GS RS US */
- S, P, P, P, P, P, P, P, /* SP ! " # $ % & ' */
- P, P, P, P, P, P, P, P, /* ( ) * + , - . / */
- D, D, D, D, D, D, D, D, /* 0 1 2 3 4 5 6 7 */
- D, D, P, P, P, P, P, P, /* 8 9 : ; < = > ? */
- P, XU, XU, XU, XU, XU, XU, U, /* @ A B C D E F G */
- U, U, U, U, U, U, U, U, /* H I J K L M N O */
- U, U, U, U, U, U, U, U, /* P Q R S T U V W */
- U, U, U, P, P, P, P, _, /* X Y Z [ \ ] ^ _ */
- P, XL, XL, XL, XL, XL, XL, L, /* ` a b c d e f g */
- L, L, L, L, L, L, L, L, /* h i j k l m n o */
- L, L, L, L, L, L, L, L, /* p q r s t u v w */
- L, L, L, P, P, P, P, C, /* x y z { | } ~ DEL */
-
- /* high half of unsigned char is locale-specific, so all tests are
- false in "C" locale */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-const unsigned char _sch_tolower[256] =
-{
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64,
-
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
- 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
-
- 91, 92, 93, 94, 95, 96,
-
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
- 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
-
- 123,124,125,126,127,
-
- 128,129,130,131, 132,133,134,135, 136,137,138,139, 140,141,142,143,
- 144,145,146,147, 148,149,150,151, 152,153,154,155, 156,157,158,159,
- 160,161,162,163, 164,165,166,167, 168,169,170,171, 172,173,174,175,
- 176,177,178,179, 180,181,182,183, 184,185,186,187, 188,189,190,191,
-
- 192,193,194,195, 196,197,198,199, 200,201,202,203, 204,205,206,207,
- 208,209,210,211, 212,213,214,215, 216,217,218,219, 220,221,222,223,
- 224,225,226,227, 228,229,230,231, 232,233,234,235, 236,237,238,239,
- 240,241,242,243, 244,245,246,247, 248,249,250,251, 252,253,254,255,
-};
-
-const unsigned char _sch_toupper[256] =
-{
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64,
-
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
-
- 91, 92, 93, 94, 95, 96,
-
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
-
- 123,124,125,126,127,
-
- 128,129,130,131, 132,133,134,135, 136,137,138,139, 140,141,142,143,
- 144,145,146,147, 148,149,150,151, 152,153,154,155, 156,157,158,159,
- 160,161,162,163, 164,165,166,167, 168,169,170,171, 172,173,174,175,
- 176,177,178,179, 180,181,182,183, 184,185,186,187, 188,189,190,191,
-
- 192,193,194,195, 196,197,198,199, 200,201,202,203, 204,205,206,207,
- 208,209,210,211, 212,213,214,215, 216,217,218,219, 220,221,222,223,
- 224,225,226,227, 228,229,230,231, 232,233,234,235, 236,237,238,239,
- 240,241,242,243, 244,245,246,247, 248,249,250,251, 252,253,254,255,
-};
-
-#else
- #error "Unsupported host character set"
-#endif /* not ASCII */
diff --git a/src/xdgmime/safe-ctype.h b/src/xdgmime/safe-ctype.h
deleted file mode 100644
index ccacda5b3..000000000
--- a/src/xdgmime/safe-ctype.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* <ctype.h> replacement macros.
-
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- Contributed by Zack Weinberg <zackw@stanford.edu>.
-
-This file is part of the libiberty library.
-Libiberty is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-Libiberty is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with libiberty; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This is a compatible replacement of the standard C library's <ctype.h>
- with the following properties:
-
- - Implements all isxxx() macros required by C99.
- - Also implements some character classes useful when
- parsing C-like languages.
- - Does not change behavior depending on the current locale.
- - Behaves properly for all values in the range of a signed or
- unsigned char.
-
- To avoid conflicts, this header defines the isxxx functions in upper
- case, e.g. ISALPHA not isalpha. */
-
-#ifndef SAFE_CTYPE_H
-#define SAFE_CTYPE_H
-
-#ifdef isalpha
- #error "safe-ctype.h and ctype.h may not be used simultaneously"
-#else
-
-/* Categories. */
-
-enum {
- /* In C99 */
- _sch_isblank = 0x0001, /* space \t */
- _sch_iscntrl = 0x0002, /* nonprinting characters */
- _sch_isdigit = 0x0004, /* 0-9 */
- _sch_islower = 0x0008, /* a-z */
- _sch_isprint = 0x0010, /* any printing character including ' ' */
- _sch_ispunct = 0x0020, /* all punctuation */
- _sch_isspace = 0x0040, /* space \t \n \r \f \v */
- _sch_isupper = 0x0080, /* A-Z */
- _sch_isxdigit = 0x0100, /* 0-9A-Fa-f */
-
- /* Extra categories useful to cpplib. */
- _sch_isidst = 0x0200, /* A-Za-z_ */
- _sch_isvsp = 0x0400, /* \n \r */
- _sch_isnvsp = 0x0800, /* space \t \f \v \0 */
-
- /* Combinations of the above. */
- _sch_isalpha = _sch_isupper|_sch_islower, /* A-Za-z */
- _sch_isalnum = _sch_isalpha|_sch_isdigit, /* A-Za-z0-9 */
- _sch_isidnum = _sch_isidst|_sch_isdigit, /* A-Za-z0-9_ */
- _sch_isgraph = _sch_isalnum|_sch_ispunct, /* isprint and not space */
- _sch_iscppsp = _sch_isvsp|_sch_isnvsp /* isspace + \0 */
-};
-
-/* Character classification. */
-extern const unsigned short _sch_istable[256];
-
-#define _sch_test(c, bit) (_sch_istable[(c) & 0xff] & (unsigned short)(bit))
-
-#define ISALPHA(c) _sch_test(c, _sch_isalpha)
-#define ISALNUM(c) _sch_test(c, _sch_isalnum)
-#define ISBLANK(c) _sch_test(c, _sch_isblank)
-#define ISCNTRL(c) _sch_test(c, _sch_iscntrl)
-#define ISDIGIT(c) _sch_test(c, _sch_isdigit)
-#define ISGRAPH(c) _sch_test(c, _sch_isgraph)
-#define ISLOWER(c) _sch_test(c, _sch_islower)
-#define ISPRINT(c) _sch_test(c, _sch_isprint)
-#define ISPUNCT(c) _sch_test(c, _sch_ispunct)
-#define ISSPACE(c) _sch_test(c, _sch_isspace)
-#define ISUPPER(c) _sch_test(c, _sch_isupper)
-#define ISXDIGIT(c) _sch_test(c, _sch_isxdigit)
-
-#define ISIDNUM(c) _sch_test(c, _sch_isidnum)
-#define ISIDST(c) _sch_test(c, _sch_isidst)
-#define IS_VSPACE(c) _sch_test(c, _sch_isvsp)
-#define IS_NVSPACE(c) _sch_test(c, _sch_isnvsp)
-#define IS_SPACE_OR_NUL(c) _sch_test(c, _sch_iscppsp)
-
-/* Character transformation. */
-extern const unsigned char _sch_toupper[256];
-extern const unsigned char _sch_tolower[256];
-#define TOUPPER(c) _sch_toupper[(c) & 0xff]
-#define TOLOWER(c) _sch_tolower[(c) & 0xff]
-
-#endif /* no ctype.h */
-#endif /* SAFE_CTYPE_H */
diff --git a/src/xdgmime/xdgmime.c b/src/xdgmime/xdgmime.c
deleted file mode 100644
index d796f1941..000000000
--- a/src/xdgmime/xdgmime.c
+++ /dev/null
@@ -1,854 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmime.c: XDG Mime Spec mime resolver. Based on version 0.11 of the spec.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003,2004 Red Hat, Inc.
- * Copyright (C) 2003,2004 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef OS_WIN32
-#include "../trackerd/mingw-compat.h"
-#endif
-
-#include "xdgmime.h"
-#include "xdgmimeint.h"
-#include "xdgmimeglob.h"
-#include "xdgmimemagic.h"
-#include "xdgmimealias.h"
-#include "xdgmimeparent.h"
-#include "xdgmimecache.h"
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <assert.h>
-
-typedef struct XdgDirTimeList XdgDirTimeList;
-typedef struct XdgCallbackList XdgCallbackList;
-
-static int need_reread = TRUE;
-static time_t last_stat_time = 0;
-
-static XdgGlobHash *global_hash = NULL;
-static XdgMimeMagic *global_magic = NULL;
-static XdgAliasList *alias_list = NULL;
-static XdgParentList *parent_list = NULL;
-static XdgDirTimeList *dir_time_list = NULL;
-static XdgCallbackList *callback_list = NULL;
-
-XdgMimeCache **_caches = NULL;
-static int n_caches = 0;
-
-const char xdg_mime_type_unknown[] = "application/octet-stream";
-
-
-enum
-{
- XDG_CHECKED_UNCHECKED,
- XDG_CHECKED_VALID,
- XDG_CHECKED_INVALID
-};
-
-struct XdgDirTimeList
-{
- time_t mtime;
- char *directory_name;
- int checked;
- XdgDirTimeList *next;
-};
-
-struct XdgCallbackList
-{
- XdgCallbackList *next;
- XdgCallbackList *prev;
- int callback_id;
- XdgMimeCallback callback;
- void *data;
- XdgMimeDestroy destroy;
-};
-
-/* Function called by xdg_run_command_on_dirs. If it returns TRUE, further
- * directories aren't looked at */
-typedef int (*XdgDirectoryFunc) (const char *directory,
- void *user_data);
-
-static XdgDirTimeList *
-xdg_dir_time_list_new (void)
-{
- XdgDirTimeList *retval;
-
- retval = calloc (1, sizeof (XdgDirTimeList));
- retval->checked = XDG_CHECKED_UNCHECKED;
-
- return retval;
-}
-
-static void
-xdg_dir_time_list_free (XdgDirTimeList *list)
-{
- XdgDirTimeList *next;
-
- while (list)
- {
- next = list->next;
- free (list->directory_name);
- free (list);
- list = next;
- }
-}
-
-static int
-xdg_mime_init_from_directory (const char *directory)
-{
- char *file_name;
- struct stat st;
- XdgDirTimeList *list;
-
- assert (directory != NULL);
-
- file_name = malloc (strlen (directory) + strlen ("/mime/mime.cache") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/mime.cache");
- if (stat (file_name, &st) == 0)
- {
- XdgMimeCache *cache = _xdg_mime_cache_new_from_file (file_name);
-
- if (cache != NULL)
- {
- list = xdg_dir_time_list_new ();
- list->directory_name = file_name;
- list->mtime = st.st_mtime;
- list->next = dir_time_list;
- dir_time_list = list;
-
- _caches = realloc (_caches, sizeof (XdgMimeCache *) * (n_caches + 2));
- _caches[n_caches] = cache;
- _caches[n_caches + 1] = NULL;
- n_caches++;
-
- return FALSE;
- }
- }
- free (file_name);
-
- file_name = malloc (strlen (directory) + strlen ("/mime/globs") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/globs");
- if (stat (file_name, &st) == 0)
- {
- _xdg_mime_glob_read_from_file (global_hash, file_name);
-
- list = xdg_dir_time_list_new ();
- list->directory_name = file_name;
- list->mtime = st.st_mtime;
- list->next = dir_time_list;
- dir_time_list = list;
- }
- else
- {
- free (file_name);
- }
-
- file_name = malloc (strlen (directory) + strlen ("/mime/magic") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/magic");
- if (stat (file_name, &st) == 0)
- {
- _xdg_mime_magic_read_from_file (global_magic, file_name);
-
- list = xdg_dir_time_list_new ();
- list->directory_name = file_name;
- list->mtime = st.st_mtime;
- list->next = dir_time_list;
- dir_time_list = list;
- }
- else
- {
- free (file_name);
- }
-
- file_name = malloc (strlen (directory) + strlen ("/mime/aliases") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/aliases");
- _xdg_mime_alias_read_from_file (alias_list, file_name);
- free (file_name);
-
- file_name = malloc (strlen (directory) + strlen ("/mime/subclasses") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/subclasses");
- _xdg_mime_parent_read_from_file (parent_list, file_name);
- free (file_name);
-
- return FALSE; /* Keep processing */
-}
-
-/* Runs a command on all the directories in the search path */
-static void
-xdg_run_command_on_dirs (XdgDirectoryFunc func,
- void *user_data)
-{
- const char *xdg_data_home;
- const char *xdg_data_dirs;
- const char *ptr;
-
- xdg_data_home = getenv ("XDG_DATA_HOME");
- if (xdg_data_home)
- {
- if ((func) (xdg_data_home, user_data))
- return;
- }
- else
- {
- const char *home;
-
- home = getenv ("HOME");
- if (home != NULL)
- {
- char *guessed_xdg_home;
- int stop_processing;
-
- guessed_xdg_home = malloc (strlen (home) + strlen ("/.local/share/") + 1);
- strcpy (guessed_xdg_home, home);
- strcat (guessed_xdg_home, "/.local/share/");
- stop_processing = (func) (guessed_xdg_home, user_data);
- free (guessed_xdg_home);
-
- if (stop_processing)
- return;
- }
- }
-
- xdg_data_dirs = getenv ("XDG_DATA_DIRS");
- if (xdg_data_dirs == NULL)
- xdg_data_dirs = "/usr/local/share/:/usr/share/";
-
- ptr = xdg_data_dirs;
-
- while (*ptr != '\000')
- {
- const char *end_ptr;
- char *dir;
- int len;
- int stop_processing;
-
- end_ptr = ptr;
- while (*end_ptr != ':' && *end_ptr != '\000')
- end_ptr ++;
-
- if (end_ptr == ptr)
- {
- ptr++;
- continue;
- }
-
- if (*end_ptr == ':')
- len = end_ptr - ptr;
- else
- len = end_ptr - ptr + 1;
- dir = malloc (len + 1);
- strncpy (dir, ptr, len);
- dir[len] = '\0';
- stop_processing = (func) (dir, user_data);
- free (dir);
-
- if (stop_processing)
- return;
-
- ptr = end_ptr;
- }
-}
-
-/* Checks file_path to make sure it has the same mtime as last time it was
- * checked. If it has a different mtime, or if the file doesn't exist, it
- * returns FALSE.
- *
- * FIXME: This doesn't protect against permission changes.
- */
-static int
-xdg_check_file (const char *file_path,
- int *exists)
-{
- struct stat st;
-
- /* If the file exists */
- if (stat (file_path, &st) == 0)
- {
- XdgDirTimeList *list;
-
- if (exists)
- *exists = TRUE;
-
- for (list = dir_time_list; list; list = list->next)
- {
- if (! strcmp (list->directory_name, file_path) &&
- st.st_mtime == list->mtime)
- {
- if (list->checked == XDG_CHECKED_UNCHECKED)
- list->checked = XDG_CHECKED_VALID;
- else if (list->checked == XDG_CHECKED_VALID)
- list->checked = XDG_CHECKED_INVALID;
-
- return (list->checked != XDG_CHECKED_VALID);
- }
- }
- return TRUE;
- }
-
- if (exists)
- *exists = FALSE;
-
- return FALSE;
-}
-
-static int
-xdg_check_dir (const char *directory,
- int *invalid_dir_list)
-{
- int invalid, exists;
- char *file_name;
-
- assert (directory != NULL);
-
- /* Check the mime.cache file */
- file_name = malloc (strlen (directory) + strlen ("/mime/mime.cache") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/mime.cache");
- invalid = xdg_check_file (file_name, &exists);
- free (file_name);
- if (invalid)
- {
- *invalid_dir_list = TRUE;
- return TRUE;
- }
- else if (exists)
- {
- return FALSE;
- }
-
- /* Check the globs file */
- file_name = malloc (strlen (directory) + strlen ("/mime/globs") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/globs");
- invalid = xdg_check_file (file_name, NULL);
- free (file_name);
- if (invalid)
- {
- *invalid_dir_list = TRUE;
- return TRUE;
- }
-
- /* Check the magic file */
- file_name = malloc (strlen (directory) + strlen ("/mime/magic") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/magic");
- invalid = xdg_check_file (file_name, NULL);
- free (file_name);
- if (invalid)
- {
- *invalid_dir_list = TRUE;
- return TRUE;
- }
-
- return FALSE; /* Keep processing */
-}
-
-/* Walks through all the mime files stat()ing them to see if they've changed.
- * Returns TRUE if they have. */
-static int
-xdg_check_dirs (void)
-{
- XdgDirTimeList *list;
- int invalid_dir_list = FALSE;
-
- for (list = dir_time_list; list; list = list->next)
- list->checked = XDG_CHECKED_UNCHECKED;
-
- xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_check_dir,
- &invalid_dir_list);
-
- if (invalid_dir_list)
- return TRUE;
-
- for (list = dir_time_list; list; list = list->next)
- {
- if (list->checked != XDG_CHECKED_VALID)
- return TRUE;
- }
-
- return FALSE;
-}
-
-/* We want to avoid stat()ing on every single mime call, so we only look for
- * newer files every 5 seconds. This will return TRUE if we need to reread the
- * mime data from disk.
- */
-static int
-xdg_check_time_and_dirs (void)
-{
- struct timeval tv;
- time_t current_time;
- int retval = FALSE;
-
- gettimeofday (&tv, NULL);
- current_time = tv.tv_sec;
-
- if (current_time >= last_stat_time + 5)
- {
- retval = xdg_check_dirs ();
- last_stat_time = current_time;
- }
-
- return retval;
-}
-
-/* Called in every public function. It reloads the hash function if need be.
- */
-static void
-xdg_mime_init (void)
-{
- if (xdg_check_time_and_dirs ())
- {
- xdg_mime_shutdown ();
- }
-
- if (need_reread)
- {
- global_hash = _xdg_glob_hash_new ();
- global_magic = _xdg_mime_magic_new ();
- alias_list = _xdg_mime_alias_list_new ();
- parent_list = _xdg_mime_parent_list_new ();
-
- xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_mime_init_from_directory,
- NULL);
-
- need_reread = FALSE;
- }
-}
-
-const char *
-xdg_mime_get_mime_type_for_data (const void *data,
- size_t len)
-{
- const char *mime_type;
-
- xdg_mime_init ();
-
- if (_caches)
- return _xdg_mime_cache_get_mime_type_for_data (data, len);
-
- mime_type = _xdg_mime_magic_lookup_data (global_magic, data, len, NULL, 0);
-
- if (mime_type)
- return mime_type;
-
- return XDG_MIME_TYPE_UNKNOWN;
-}
-
-const char *
-xdg_mime_get_mime_type_for_file (const char *file_name,
- struct stat *statbuf)
-{
- const char *mime_type;
- /* currently, only a few globs occur twice, and none
- * more often, so 5 seems plenty.
- */
- const char *mime_types[5];
- FILE *file;
- unsigned char *data;
- int max_extent;
- int bytes_read;
- struct stat buf;
- const char *base_name;
- int n;
-
- if (file_name == NULL)
- return NULL;
- if (! _xdg_utf8_validate (file_name))
- return NULL;
-
- xdg_mime_init ();
-
- if (_caches)
- return _xdg_mime_cache_get_mime_type_for_file (file_name, statbuf);
-
- base_name = _xdg_get_base_name (file_name);
- n = _xdg_glob_hash_lookup_file_name (global_hash, base_name, mime_types, 5);
-
- if (n == 1)
- return mime_types[0];
-
- if (!statbuf)
- {
- if (stat (file_name, &buf) != 0)
- return XDG_MIME_TYPE_UNKNOWN;
-
- statbuf = &buf;
- }
-
- if (!S_ISREG (statbuf->st_mode))
- return XDG_MIME_TYPE_UNKNOWN;
-
- /* FIXME: Need to make sure that max_extent isn't totally broken. This could
- * be large and need getting from a stream instead of just reading it all
- * in. */
- max_extent = _xdg_mime_magic_get_buffer_extents (global_magic);
- data = malloc (max_extent);
- if (data == NULL)
- return XDG_MIME_TYPE_UNKNOWN;
-
- file = fopen (file_name, "r");
- if (file == NULL)
- {
- free (data);
- return XDG_MIME_TYPE_UNKNOWN;
- }
-
- bytes_read = fread (data, 1, max_extent, file);
- if (ferror (file))
- {
- free (data);
- fclose (file);
- return XDG_MIME_TYPE_UNKNOWN;
- }
-
- mime_type = _xdg_mime_magic_lookup_data (global_magic, data, bytes_read,
- mime_types, n);
-
- free (data);
- fclose (file);
-
- if (mime_type)
- return mime_type;
-
- return XDG_MIME_TYPE_UNKNOWN;
-}
-
-const char *
-xdg_mime_get_mime_type_from_file_name (const char *file_name)
-{
- const char *mime_type;
-
- xdg_mime_init ();
-
- if (_caches)
- return _xdg_mime_cache_get_mime_type_from_file_name (file_name);
-
- if (_xdg_glob_hash_lookup_file_name (global_hash, file_name, &mime_type, 1))
- return mime_type;
- else
- return XDG_MIME_TYPE_UNKNOWN;
-}
-
-int
-xdg_mime_is_valid_mime_type (const char *mime_type)
-{
- /* FIXME: We should make this a better test
- */
- return _xdg_utf8_validate (mime_type);
-}
-
-void
-xdg_mime_shutdown (void)
-{
- XdgCallbackList *list;
-
- /* FIXME: Need to make this (and the whole library) thread safe */
- if (dir_time_list)
- {
- xdg_dir_time_list_free (dir_time_list);
- dir_time_list = NULL;
- }
-
- if (global_hash)
- {
- _xdg_glob_hash_free (global_hash);
- global_hash = NULL;
- }
- if (global_magic)
- {
- _xdg_mime_magic_free (global_magic);
- global_magic = NULL;
- }
-
- if (alias_list)
- {
- _xdg_mime_alias_list_free (alias_list);
- alias_list = NULL;
- }
-
- if (parent_list)
- {
- _xdg_mime_parent_list_free (parent_list);
- parent_list = NULL;
- }
-
- if (_caches)
- {
- int i;
-
- for (i = 0; i < n_caches; i++)
- _xdg_mime_cache_unref (_caches[i]);
- free (_caches);
- _caches = NULL;
- n_caches = 0;
- }
-
- for (list = callback_list; list; list = list->next)
- (list->callback) (list->data);
-
- need_reread = TRUE;
-}
-
-int
-xdg_mime_get_max_buffer_extents (void)
-{
- xdg_mime_init ();
-
- if (_caches)
- return _xdg_mime_cache_get_max_buffer_extents ();
-
- return _xdg_mime_magic_get_buffer_extents (global_magic);
-}
-
-const char *
-_xdg_mime_unalias_mime_type (const char *mime_type)
-{
- const char *lookup;
-
- if (_caches)
- return _xdg_mime_cache_unalias_mime_type (mime_type);
-
- if ((lookup = _xdg_mime_alias_list_lookup (alias_list, mime_type)) != NULL)
- return lookup;
-
- return mime_type;
-}
-
-const char *
-xdg_mime_unalias_mime_type (const char *mime_type)
-{
- xdg_mime_init ();
-
- return _xdg_mime_unalias_mime_type (mime_type);
-}
-
-int
-_xdg_mime_mime_type_equal (const char *mime_a,
- const char *mime_b)
-{
- const char *unalias_a, *unalias_b;
-
- unalias_a = _xdg_mime_unalias_mime_type (mime_a);
- unalias_b = _xdg_mime_unalias_mime_type (mime_b);
-
- if (strcmp (unalias_a, unalias_b) == 0)
- return 1;
-
- return 0;
-}
-
-int
-xdg_mime_mime_type_equal (const char *mime_a,
- const char *mime_b)
-{
- xdg_mime_init ();
-
- return _xdg_mime_mime_type_equal (mime_a, mime_b);
-}
-
-int
-xdg_mime_media_type_equal (const char *mime_a,
- const char *mime_b)
-{
- char *sep;
-
- xdg_mime_init ();
-
- sep = strchr (mime_a, '/');
-
- if (sep && strncmp (mime_a, mime_b, sep - mime_a + 1) == 0)
- return 1;
-
- return 0;
-}
-
-#if 1
-static int
-xdg_mime_is_super_type (const char *mime)
-{
- int length;
- const char *type;
-
- length = strlen (mime);
- type = &(mime[length - 2]);
-
- if (strcmp (type, "/*") == 0)
- return 1;
-
- return 0;
-}
-#endif
-
-int
-_xdg_mime_mime_type_subclass (const char *mime,
- const char *base)
-{
- const char *umime, *ubase;
- const char **parents;
-
- if (_caches)
- return _xdg_mime_cache_mime_type_subclass (mime, base);
-
- umime = _xdg_mime_unalias_mime_type (mime);
- ubase = _xdg_mime_unalias_mime_type (base);
-
- if (strcmp (umime, ubase) == 0)
- return 1;
-
-#if 1
- /* Handle supertypes */
- if (xdg_mime_is_super_type (ubase) &&
- xdg_mime_media_type_equal (umime, ubase))
- return 1;
-#endif
-
- /* Handle special cases text/plain and application/octet-stream */
- if (strcmp (ubase, "text/plain") == 0 &&
- strncmp (umime, "text/", 5) == 0)
- return 1;
-
- if (strcmp (ubase, "application/octet-stream") == 0)
- return 1;
-
- parents = _xdg_mime_parent_list_lookup (parent_list, umime);
- for (; parents && *parents; parents++)
- {
- if (_xdg_mime_mime_type_subclass (*parents, ubase))
- return 1;
- }
-
- return 0;
-}
-
-int
-xdg_mime_mime_type_subclass (const char *mime,
- const char *base)
-{
- xdg_mime_init ();
-
- return _xdg_mime_mime_type_subclass (mime, base);
-}
-
-char **
-xdg_mime_list_mime_parents (const char *mime)
-{
- const char **parents;
- char **result;
- int i, n;
-
- if (_caches)
- return _xdg_mime_cache_list_mime_parents (mime);
-
- parents = xdg_mime_get_mime_parents (mime);
-
- if (!parents)
- return NULL;
-
- for (i = 0; parents[i]; i++) ;
-
- n = (i + 1) * sizeof (char *);
- result = (char **) malloc (n);
- memcpy (result, parents, n);
-
- return result;
-}
-
-const char **
-xdg_mime_get_mime_parents (const char *mime)
-{
- const char *umime;
-
- xdg_mime_init ();
-
- umime = _xdg_mime_unalias_mime_type (mime);
-
- return _xdg_mime_parent_list_lookup (parent_list, umime);
-}
-
-void
-xdg_mime_dump (void)
-{
- printf ("*** ALIASES ***\n\n");
- _xdg_mime_alias_list_dump (alias_list);
- printf ("\n*** PARENTS ***\n\n");
- _xdg_mime_parent_list_dump (parent_list);
-}
-
-
-/* Registers a function to be called every time the mime database reloads its files
- */
-int
-xdg_mime_register_reload_callback (XdgMimeCallback callback,
- void *data,
- XdgMimeDestroy destroy)
-{
- XdgCallbackList *list_el;
- static int callback_id = 1;
-
- /* Make a new list element */
- list_el = calloc (1, sizeof (XdgCallbackList));
- list_el->callback_id = callback_id;
- list_el->callback = callback;
- list_el->data = data;
- list_el->destroy = destroy;
- list_el->next = callback_list;
- if (list_el->next)
- list_el->next->prev = list_el;
-
- callback_list = list_el;
- callback_id ++;
-
- return callback_id - 1;
-}
-
-void
-xdg_mime_remove_callback (int callback_id)
-{
- XdgCallbackList *list;
-
- for (list = callback_list; list; list = list->next)
- {
- if (list->callback_id == callback_id)
- {
- if (list->next)
- list->next = list->prev;
-
- if (list->prev)
- list->prev->next = list->next;
- else
- callback_list = list->next;
-
- /* invoke the destroy handler */
- (list->destroy) (list->data);
- free (list);
- return;
- }
- }
-}
diff --git a/src/xdgmime/xdgmime.h b/src/xdgmime/xdgmime.h
deleted file mode 100644
index d8172be25..000000000
--- a/src/xdgmime/xdgmime.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmime.h: XDG Mime Spec mime resolver. Based on version 0.11 of the spec.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __XDG_MIME_H__
-#define __XDG_MIME_H__
-
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#ifdef XDG_PREFIX
-#define XDG_ENTRY(func) _XDG_ENTRY2(XDG_PREFIX,func)
-#define _XDG_ENTRY2(prefix,func) _XDG_ENTRY3(prefix,func)
-#define _XDG_ENTRY3(prefix,func) prefix##_##func
-#endif
-
-typedef void (*XdgMimeCallback) (void *user_data);
-typedef void (*XdgMimeDestroy) (void *user_data);
-
-
-#ifdef XDG_PREFIX
-#define xdg_mime_get_mime_type_for_data XDG_ENTRY(get_mime_type_for_data)
-#define xdg_mime_get_mime_type_for_file XDG_ENTRY(get_mime_type_for_file)
-#define xdg_mime_get_mime_type_from_file_name XDG_ENTRY(get_mime_type_from_file_name)
-#define xdg_mime_is_valid_mime_type XDG_ENTRY(is_valid_mime_type)
-#define xdg_mime_mime_type_equal XDG_ENTRY(mime_type_equal)
-#define xdg_mime_media_type_equal XDG_ENTRY(media_type_equal)
-#define xdg_mime_mime_type_subclass XDG_ENTRY(mime_type_subclass)
-#define xdg_mime_get_mime_parents XDG_ENTRY(get_mime_parents)
-#define xdg_mime_list_mime_parents XDG_ENTRY(list_mime_parents)
-#define xdg_mime_unalias_mime_type XDG_ENTRY(unalias_mime_type)
-#define xdg_mime_get_max_buffer_extents XDG_ENTRY(get_max_buffer_extents)
-#define xdg_mime_shutdown XDG_ENTRY(shutdown)
-#define xdg_mime_dump XDG_ENTRY(dump)
-#define xdg_mime_register_reload_callback XDG_ENTRY(register_reload_callback)
-#define xdg_mime_remove_callback XDG_ENTRY(remove_callback)
-#define xdg_mime_type_unknown XDG_ENTRY(type_unknown)
-#endif
-
-extern const char xdg_mime_type_unknown[];
-#define XDG_MIME_TYPE_UNKNOWN xdg_mime_type_unknown
-
-const char *xdg_mime_get_mime_type_for_data (const void *data,
- size_t len);
-const char *xdg_mime_get_mime_type_for_file (const char *file_name,
- struct stat *statbuf);
-const char *xdg_mime_get_mime_type_from_file_name (const char *file_name);
-int xdg_mime_is_valid_mime_type (const char *mime_type);
-int xdg_mime_mime_type_equal (const char *mime_a,
- const char *mime_b);
-int xdg_mime_media_type_equal (const char *mime_a,
- const char *mime_b);
-int xdg_mime_mime_type_subclass (const char *mime_a,
- const char *mime_b);
- /* xdg_mime_get_mime_parents() is deprecated since it does
- * not work correctly with caches. Use xdg_mime_list_parents()
- * instead, but notice that that function expects you to free
- * the array it returns.
- */
-const char **xdg_mime_get_mime_parents (const char *mime);
-char ** xdg_mime_list_mime_parents (const char *mime);
-const char *xdg_mime_unalias_mime_type (const char *mime);
-int xdg_mime_get_max_buffer_extents (void);
-void xdg_mime_shutdown (void);
-void xdg_mime_dump (void);
-int xdg_mime_register_reload_callback (XdgMimeCallback callback,
- void *data,
- XdgMimeDestroy destroy);
-void xdg_mime_remove_callback (int callback_id);
-
- /* Private versions of functions that don't call xdg_mime_init () */
-int _xdg_mime_mime_type_equal (const char *mime_a,
- const char *mime_b);
-int _xdg_mime_media_type_equal (const char *mime_a,
- const char *mime_b);
-int _xdg_mime_mime_type_subclass (const char *mime,
- const char *base);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* __XDG_MIME_H__ */
diff --git a/src/xdgmime/xdgmimealias.c b/src/xdgmime/xdgmimealias.c
deleted file mode 100644
index 07d89eb32..000000000
--- a/src/xdgmime/xdgmimealias.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimealias.c: Private file. Datastructure for storing the aliases.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2004 Red Hat, Inc.
- * Copyright (C) 2004 Matthias Clasen <mclasen@redhat.com>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "xdgmimealias.h"
-#include "xdgmimeint.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include <fnmatch.h>
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-typedef struct XdgAlias XdgAlias;
-
-struct XdgAlias
-{
- char *alias;
- char *mime_type;
-};
-
-struct XdgAliasList
-{
- struct XdgAlias *aliases;
- int n_aliases;
-};
-
-XdgAliasList *
-_xdg_mime_alias_list_new (void)
-{
- XdgAliasList *list;
-
- list = malloc (sizeof (XdgAliasList));
-
- list->aliases = NULL;
- list->n_aliases = 0;
-
- return list;
-}
-
-void
-_xdg_mime_alias_list_free (XdgAliasList *list)
-{
- int i;
-
- if (list->aliases)
- {
- for (i = 0; i < list->n_aliases; i++)
- {
- free (list->aliases[i].alias);
- free (list->aliases[i].mime_type);
- }
- free (list->aliases);
- }
- free (list);
-}
-
-static int
-alias_entry_cmp (const void *v1, const void *v2)
-{
- return strcmp (((XdgAlias *)v1)->alias, ((XdgAlias *)v2)->alias);
-}
-
-const char *
-_xdg_mime_alias_list_lookup (XdgAliasList *list,
- const char *alias)
-{
- XdgAlias *entry;
- XdgAlias key;
-
- if (list->n_aliases > 0)
- {
- key.alias = (char *)alias;
- key.mime_type = NULL;
-
- entry = bsearch (&key, list->aliases, list->n_aliases,
- sizeof (XdgAlias), alias_entry_cmp);
- if (entry)
- return entry->mime_type;
- }
-
- return NULL;
-}
-
-void
-_xdg_mime_alias_read_from_file (XdgAliasList *list,
- const char *file_name)
-{
- FILE *file;
- char line[255];
- int alloc;
-
- file = fopen (file_name, "r");
-
- if (file == NULL)
- return;
-
- /* FIXME: Not UTF-8 safe. Doesn't work if lines are greater than 255 chars.
- * Blah */
- alloc = list->n_aliases + 16;
- list->aliases = realloc (list->aliases, alloc * sizeof (XdgAlias));
- while (fgets (line, 255, file) != NULL)
- {
- char *sep;
- if (line[0] == '#')
- continue;
-
- sep = strchr (line, ' ');
- if (sep == NULL)
- continue;
- *(sep++) = '\000';
- sep[strlen (sep) -1] = '\000';
- if (list->n_aliases == alloc)
- {
- alloc <<= 1;
- list->aliases = realloc (list->aliases,
- alloc * sizeof (XdgAlias));
- }
- list->aliases[list->n_aliases].alias = strdup (line);
- list->aliases[list->n_aliases].mime_type = strdup (sep);
- list->n_aliases++;
- }
- list->aliases = realloc (list->aliases,
- list->n_aliases * sizeof (XdgAlias));
-
- fclose (file);
-
- if (list->n_aliases > 1)
- qsort (list->aliases, list->n_aliases,
- sizeof (XdgAlias), alias_entry_cmp);
-}
-
-
-void
-_xdg_mime_alias_list_dump (XdgAliasList *list)
-{
- int i;
-
- if (list->aliases)
- {
- for (i = 0; i < list->n_aliases; i++)
- {
- printf ("%s %s\n",
- list->aliases[i].alias,
- list->aliases[i].mime_type);
- }
- }
-}
-
-
diff --git a/src/xdgmime/xdgmimealias.h b/src/xdgmime/xdgmimealias.h
deleted file mode 100644
index 3df18d660..000000000
--- a/src/xdgmime/xdgmimealias.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimealias.h: Private file. Datastructure for storing the aliases.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2004 Red Hat, Inc.
- * Copyright (C) 200 Matthias Clasen <mclasen@redhat.com>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __XDG_MIME_ALIAS_H__
-#define __XDG_MIME_ALIAS_H__
-
-#include "xdgmime.h"
-
-typedef struct XdgAliasList XdgAliasList;
-
-#ifdef XDG_PREFIX
-#define _xdg_mime_alias_read_from_file XDG_ENTRY(alias_read_from_file)
-#define _xdg_mime_alias_list_new XDG_ENTRY(alias_list_new)
-#define _xdg_mime_alias_list_free XDG_ENTRY(alias_list_free)
-#define _xdg_mime_alias_list_lookup XDG_ENTRY(alias_list_lookup)
-#endif
-
-void _xdg_mime_alias_read_from_file (XdgAliasList *list,
- const char *file_name);
-XdgAliasList *_xdg_mime_alias_list_new (void);
-void _xdg_mime_alias_list_free (XdgAliasList *list);
-const char *_xdg_mime_alias_list_lookup (XdgAliasList *list,
- const char *alias);
-void _xdg_mime_alias_list_dump (XdgAliasList *list);
-
-#endif /* __XDG_MIME_ALIAS_H__ */
diff --git a/src/xdgmime/xdgmimecache.c b/src/xdgmime/xdgmimecache.c
deleted file mode 100644
index a7d8d2337..000000000
--- a/src/xdgmime/xdgmimecache.c
+++ /dev/null
@@ -1,900 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimealias.c: Private file. mmappable caches for mime data
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2005 Matthias Clasen <mclasen@redhat.com>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <fnmatch.h>
-#include <assert.h>
-
-/* for ntohl/ntohs */
-#ifdef OS_WIN32
-#include <winsock2.h>
-#else
-#include <netinet/in.h>
-#endif
-
-#ifdef HAVE_MMAP
-#include <sys/mman.h>
-#endif
-
-#include <sys/stat.h>
-#include <sys/types.h>
-
-#include "xdgmimecache.h"
-#include "xdgmimeint.h"
-
-#ifndef MAX
-#define MAX(a,b) ((a) > (b) ? (a) : (b))
-#endif
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-#ifndef _O_BINARY
-#define _O_BINARY 0
-#endif
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *) -1)
-#endif
-
-#define MAJOR_VERSION 1
-#define MINOR_VERSION 0
-
-struct _XdgMimeCache
-{
- int ref_count;
-
- size_t size;
- char *buffer;
-};
-
-#define GET_UINT16(cache,offset) (ntohs(*(xdg_uint16_t*)((cache) + (offset))))
-#define GET_UINT32(cache,offset) (ntohl(*(xdg_uint32_t*)((cache) + (offset))))
-
-XdgMimeCache *
-_xdg_mime_cache_ref (XdgMimeCache *cache)
-{
- cache->ref_count++;
- return cache;
-}
-
-void
-_xdg_mime_cache_unref (XdgMimeCache *cache)
-{
- cache->ref_count--;
-
- if (cache->ref_count == 0)
- {
-#ifdef HAVE_MMAP
- munmap (cache->buffer, cache->size);
-#endif
- free (cache);
- }
-}
-
-XdgMimeCache *
-_xdg_mime_cache_new_from_file (const char *file_name)
-{
- XdgMimeCache *cache = NULL;
-
-#ifdef HAVE_MMAP
- int fd = -1;
- struct stat st;
- char *buffer = NULL;
-
- /* Open the file and map it into memory */
- fd = open (file_name, O_RDONLY|_O_BINARY, 0);
-
- if (fd < 0)
- return NULL;
-
- if (fstat (fd, &st) < 0 || st.st_size < 4)
- goto done;
-
- buffer = (char *) mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
-
- if (buffer == MAP_FAILED)
- goto done;
-
- /* Verify version */
- if (GET_UINT16 (buffer, 0) != MAJOR_VERSION ||
- GET_UINT16 (buffer, 2) != MINOR_VERSION)
- {
- munmap (buffer, st.st_size);
-
- goto done;
- }
-
- cache = (XdgMimeCache *) malloc (sizeof (XdgMimeCache));
- cache->ref_count = 1;
- cache->buffer = buffer;
- cache->size = st.st_size;
-
- done:
- if (fd != -1)
- close (fd);
-
-#endif /* HAVE_MMAP */
-
- return cache;
-}
-
-static int
-cache_magic_matchlet_compare_to_data (XdgMimeCache *cache,
- xdg_uint32_t offset,
- const void *data,
- size_t len)
-{
- xdg_uint32_t range_start = GET_UINT32 (cache->buffer, offset);
- xdg_uint32_t range_length = GET_UINT32 (cache->buffer, offset + 4);
- xdg_uint32_t data_length = GET_UINT32 (cache->buffer, offset + 12);
- xdg_uint32_t data_offset = GET_UINT32 (cache->buffer, offset + 16);
- xdg_uint32_t mask_offset = GET_UINT32 (cache->buffer, offset + 20);
-
- int i, j;
-
- for (i = range_start; i <= range_start + range_length; i++)
- {
- int valid_matchlet = TRUE;
-
- if (i + data_length > len)
- return FALSE;
-
- if (mask_offset)
- {
- for (j = 0; j < data_length; j++)
- {
- if ((((unsigned char *)cache->buffer)[data_offset + j] & ((unsigned char *)cache->buffer)[mask_offset + j]) !=
- ((((unsigned char *) data)[j + i]) & ((unsigned char *)cache->buffer)[mask_offset + j]))
- {
- valid_matchlet = FALSE;
- break;
- }
- }
- }
- else
- {
- for (j = 0; j < data_length; j++)
- {
- if (((unsigned char *)cache->buffer)[data_offset + j] != ((unsigned char *) data)[j + i])
- {
- valid_matchlet = FALSE;
- break;
- }
- }
- }
-
- if (valid_matchlet)
- return TRUE;
- }
-
- return FALSE;
-}
-
-static int
-cache_magic_matchlet_compare (XdgMimeCache *cache,
- xdg_uint32_t offset,
- const void *data,
- size_t len)
-{
- xdg_uint32_t n_children = GET_UINT32 (cache->buffer, offset + 24);
- xdg_uint32_t child_offset = GET_UINT32 (cache->buffer, offset + 28);
-
- int i;
-
- if (cache_magic_matchlet_compare_to_data (cache, offset, data, len))
- {
- if (n_children == 0)
- return TRUE;
-
- for (i = 0; i < n_children; i++)
- {
- if (cache_magic_matchlet_compare (cache, child_offset + 32 * i,
- data, len))
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static const char *
-cache_magic_compare_to_data (XdgMimeCache *cache,
- xdg_uint32_t offset,
- const void *data,
- size_t len,
- int *prio)
-{
- xdg_uint32_t priority = GET_UINT32 (cache->buffer, offset);
- xdg_uint32_t mimetype_offset = GET_UINT32 (cache->buffer, offset + 4);
- xdg_uint32_t n_matchlets = GET_UINT32 (cache->buffer, offset + 8);
- xdg_uint32_t matchlet_offset = GET_UINT32 (cache->buffer, offset + 12);
-
- int i;
-
- for (i = 0; i < n_matchlets; i++)
- {
- if (cache_magic_matchlet_compare (cache, matchlet_offset + i * 32,
- data, len))
- {
- *prio = priority;
-
- return cache->buffer + mimetype_offset;
- }
- }
-
- return NULL;
-}
-
-static const char *
-cache_magic_lookup_data (XdgMimeCache *cache,
- const void *data,
- size_t len,
- int *prio,
- const char *mime_types[],
- int n_mime_types)
-{
- xdg_uint32_t list_offset;
- xdg_uint32_t n_entries;
- xdg_uint32_t offset;
-
- int j, n;
-
- *prio = 0;
-
- list_offset = GET_UINT32 (cache->buffer, 24);
- n_entries = GET_UINT32 (cache->buffer, list_offset);
- offset = GET_UINT32 (cache->buffer, list_offset + 8);
-
- for (j = 0; j < n_entries; j++)
- {
- const char *match;
-
- match = cache_magic_compare_to_data (cache, offset + 16 * j,
- data, len, prio);
- if (match)
- return match;
- else
- {
- xdg_uint32_t mimetype_offset;
- const char *non_match;
-
- mimetype_offset = GET_UINT32 (cache->buffer, offset + 16 * j + 4);
- non_match = cache->buffer + mimetype_offset;
-
- for (n = 0; n < n_mime_types; n++)
- {
- if (mime_types[n] &&
- xdg_mime_mime_type_equal (mime_types[n], non_match))
- mime_types[n] = NULL;
- }
- }
- }
-
- return NULL;
-}
-
-static const char *
-cache_alias_lookup (const char *alias)
-{
- const char *ptr;
- int i, min, max, mid, cmp;
-
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 4);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
- xdg_uint32_t offset;
-
- min = 0;
- max = n_entries - 1;
- while (max >= min)
- {
- mid = (min + max) / 2;
-
- offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * mid);
- ptr = cache->buffer + offset;
- cmp = strcmp (ptr, alias);
-
- if (cmp < 0)
- min = mid + 1;
- else if (cmp > 0)
- max = mid - 1;
- else
- {
- offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * mid + 4);
- return cache->buffer + offset;
- }
- }
- }
-
- return NULL;
-}
-
-static int
-cache_glob_lookup_literal (const char *file_name,
- const char *mime_types[],
- int n_mime_types)
-{
- const char *ptr;
- int i, min, max, mid, cmp;
-
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 12);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
- xdg_uint32_t offset;
-
- min = 0;
- max = n_entries - 1;
- while (max >= min)
- {
- mid = (min + max) / 2;
-
- offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * mid);
- ptr = cache->buffer + offset;
- cmp = strcmp (ptr, file_name);
-
- if (cmp < 0)
- min = mid + 1;
- else if (cmp > 0)
- max = mid - 1;
- else
- {
- offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * mid + 4);
- mime_types[0] = (const char *)(cache->buffer + offset);
-
- return 1;
- }
- }
- }
-
- return 0;
-}
-
-static int
-cache_glob_lookup_fnmatch (const char *file_name,
- const char *mime_types[],
- int n_mime_types)
-{
- const char *mime_type;
- const char *ptr;
-
- int i, j, n;
-
- n = 0;
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 20);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
-
- for (j = 0; j < n_entries && n < n_mime_types; j++)
- {
- xdg_uint32_t offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * j);
- xdg_uint32_t mimetype_offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * j + 4);
- ptr = cache->buffer + offset;
- mime_type = cache->buffer + mimetype_offset;
-
- /* FIXME: Not UTF-8 safe */
- if (fnmatch (ptr, file_name, 0) == 0)
- mime_types[n++] = mime_type;
- }
-
- if (n > 0)
- return n;
- }
-
- return 0;
-}
-
-static int
-cache_glob_node_lookup_suffix (XdgMimeCache *cache,
- xdg_uint32_t n_entries,
- xdg_uint32_t offset,
- const char *suffix,
- int ignore_case,
- const char *mime_types[],
- int n_mime_types)
-{
- xdg_unichar_t character;
- xdg_unichar_t match_char;
- xdg_uint32_t mimetype_offset;
- xdg_uint32_t n_children;
- xdg_uint32_t child_offset;
-
- int min, max, mid, n, i;
-
- character = _xdg_utf8_to_ucs4 (suffix);
- if (ignore_case)
- character = _xdg_ucs4_to_lower (character);
-
- min = 0;
- max = n_entries - 1;
- while (max >= min)
- {
- mid = (min + max) / 2;
-
- match_char = GET_UINT32 (cache->buffer, offset + 16 * mid);
-
- if (match_char < character)
- min = mid + 1;
- else if (match_char > character)
- max = mid - 1;
- else
- {
- suffix = _xdg_utf8_next_char (suffix);
- if (*suffix == '\0')
- {
- mimetype_offset = GET_UINT32 (cache->buffer, offset + 16 * mid + 4);
- n = 0;
- if (mimetype_offset)
- mime_types[n++] = cache->buffer + mimetype_offset;
-
- n_children = GET_UINT32 (cache->buffer, offset + 16 * mid + 8);
- child_offset = GET_UINT32 (cache->buffer, offset + 16 * mid + 12);
- i = 0;
- while (n < n_mime_types && i < n_children)
- {
- match_char = GET_UINT32 (cache->buffer, child_offset + 16 * i);
- mimetype_offset = GET_UINT32 (cache->buffer, offset + 16 * i + 4);
- if (match_char != 0)
- break;
-
- mime_types[n++] = cache->buffer + mimetype_offset;
- i++;
- }
-
- return n;
- }
- else
- {
- n_children = GET_UINT32 (cache->buffer, offset + 16 * mid + 8);
- child_offset = GET_UINT32 (cache->buffer, offset + 16 * mid + 12);
-
- return cache_glob_node_lookup_suffix (cache,
- n_children, child_offset,
- suffix, ignore_case,
- mime_types,
- n_mime_types);
- }
- }
- }
-
- return 0;
-}
-
-static int
-cache_glob_lookup_suffix (const char *suffix,
- int ignore_case,
- const char *mime_types[],
- int n_mime_types)
-{
- int i, n;
-
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 16);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
- xdg_uint32_t offset = GET_UINT32 (cache->buffer, list_offset + 4);
-
- n = cache_glob_node_lookup_suffix (cache,
- n_entries, offset,
- suffix, ignore_case,
- mime_types,
- n_mime_types);
- if (n > 0)
- return n;
- }
-
- return 0;
-}
-
-static void
-find_stopchars (char *stopchars)
-{
- int i, j, k, l;
-
- k = 0;
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 16);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
- xdg_uint32_t offset = GET_UINT32 (cache->buffer, list_offset + 4);
-
- for (j = 0; j < n_entries; j++)
- {
- xdg_uint32_t match_char = GET_UINT32 (cache->buffer, offset);
-
- if (match_char < 128)
- {
- for (l = 0; l < k; l++)
- if (stopchars[l] == match_char)
- break;
- if (l == k)
- {
- stopchars[k] = (char) match_char;
- k++;
- }
- }
-
- offset += 16;
- }
- }
-
- stopchars[k] = '\0';
-}
-
-static int
-cache_glob_lookup_file_name (const char *file_name,
- const char *mime_types[],
- int n_mime_types)
-{
- const char *ptr;
- char stopchars[128];
- int n;
-
- assert (file_name != NULL);
-
- /* First, check the literals */
- n = cache_glob_lookup_literal (file_name, mime_types, n_mime_types);
- if (n > 0)
- return n;
-
- find_stopchars (stopchars);
-
- /* Next, check suffixes */
- ptr = strpbrk (file_name, stopchars);
- while (ptr)
- {
- n = cache_glob_lookup_suffix (ptr, FALSE, mime_types, n_mime_types);
- if (n > 0)
- return n;
-
- n = cache_glob_lookup_suffix (ptr, TRUE, mime_types, n_mime_types);
- if (n > 0)
- return n;
-
- ptr = strpbrk (ptr + 1, stopchars);
- }
-
- /* Last, try fnmatch */
- return cache_glob_lookup_fnmatch (file_name, mime_types, n_mime_types);
-}
-
-int
-_xdg_mime_cache_get_max_buffer_extents (void)
-{
- xdg_uint32_t offset;
- xdg_uint32_t max_extent;
- int i;
-
- max_extent = 0;
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- offset = GET_UINT32 (cache->buffer, 24);
- max_extent = MAX (max_extent, GET_UINT32 (cache->buffer, offset + 4));
- }
-
- return max_extent;
-}
-
-static const char *
-cache_get_mime_type_for_data (const void *data,
- size_t len,
- const char *mime_types[],
- int n_mime_types)
-{
- const char *mime_type;
- int i, n, priority;
-
- priority = 0;
- mime_type = NULL;
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- int prio;
- const char *match;
-
- match = cache_magic_lookup_data (cache, data, len, &prio,
- mime_types, n_mime_types);
- if (prio > priority)
- {
- priority = prio;
- mime_type = match;
- }
- }
-
- if (priority > 0)
- return mime_type;
-
- for (n = 0; n < n_mime_types; n++)
- {
- if (mime_types[n])
- return mime_types[n];
- }
-
- return XDG_MIME_TYPE_UNKNOWN;
-}
-
-const char *
-_xdg_mime_cache_get_mime_type_for_data (const void *data,
- size_t len)
-{
- return cache_get_mime_type_for_data (data, len, NULL, 0);
-}
-
-const char *
-_xdg_mime_cache_get_mime_type_for_file (const char *file_name,
- struct stat *statbuf)
-{
- const char *mime_type;
- const char *mime_types[2];
- FILE *file;
- unsigned char *data;
- int max_extent;
- int bytes_read;
- struct stat buf;
- const char *base_name;
- int n;
-
- if (file_name == NULL)
- return NULL;
-
- if (! _xdg_utf8_validate (file_name))
- return NULL;
-
- base_name = _xdg_get_base_name (file_name);
- n = cache_glob_lookup_file_name (base_name, mime_types, 2);
-
- if (n == 1)
- return mime_types[0];
-
- if (!statbuf)
- {
- if (stat (file_name, &buf) != 0)
- return XDG_MIME_TYPE_UNKNOWN;
-
- statbuf = &buf;
- }
-
- if (!S_ISREG (statbuf->st_mode))
- return XDG_MIME_TYPE_UNKNOWN;
-
- /* FIXME: Need to make sure that max_extent isn't totally broken. This could
- * be large and need getting from a stream instead of just reading it all
- * in. */
- max_extent = _xdg_mime_cache_get_max_buffer_extents ();
- data = malloc (max_extent);
- if (data == NULL)
- return XDG_MIME_TYPE_UNKNOWN;
-
- file = fopen (file_name, "r");
- if (file == NULL)
- {
- free (data);
- return XDG_MIME_TYPE_UNKNOWN;
- }
-
- bytes_read = fread (data, 1, max_extent, file);
- if (ferror (file))
- {
- free (data);
- fclose (file);
- return XDG_MIME_TYPE_UNKNOWN;
- }
-
- mime_type = cache_get_mime_type_for_data (data, bytes_read,
- mime_types, n);
-
- free (data);
- fclose (file);
-
- return mime_type;
-}
-
-const char *
-_xdg_mime_cache_get_mime_type_from_file_name (const char *file_name)
-{
- const char *mime_type;
-
- if (cache_glob_lookup_file_name (file_name, &mime_type, 1))
- return mime_type;
- else
- return XDG_MIME_TYPE_UNKNOWN;
-}
-
-#if 1
-static int
-is_super_type (const char *mime)
-{
- int length;
- const char *type;
-
- length = strlen (mime);
- type = &(mime[length - 2]);
-
- if (strcmp (type, "/*") == 0)
- return 1;
-
- return 0;
-}
-#endif
-
-int
-_xdg_mime_cache_mime_type_subclass (const char *mime,
- const char *base)
-{
- const char *umime, *ubase;
-
- int i, j, min, max, med, cmp;
-
- umime = _xdg_mime_cache_unalias_mime_type (mime);
- ubase = _xdg_mime_cache_unalias_mime_type (base);
-
- if (strcmp (umime, ubase) == 0)
- return 1;
-
- /* We really want to handle text/ * in GtkFileFilter, so we just
- * turn on the supertype matching
- */
-#if 1
- /* Handle supertypes */
- if (is_super_type (ubase) &&
- xdg_mime_media_type_equal (umime, ubase))
- return 1;
-#endif
-
- /* Handle special cases text/plain and application/octet-stream */
- if (strcmp (ubase, "text/plain") == 0 &&
- strncmp (umime, "text/", 5) == 0)
- return 1;
-
- if (strcmp (ubase, "application/octet-stream") == 0)
- return 1;
-
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 8);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
- xdg_uint32_t offset, n_parents, parent_offset;
-
- min = 0;
- max = n_entries - 1;
- while (max >= min)
- {
- med = (min + max)/2;
-
- offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * med);
- cmp = strcmp (cache->buffer + offset, umime);
- if (cmp < 0)
- min = med + 1;
- else if (cmp > 0)
- max = med - 1;
- else
- {
- offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * med + 4);
- n_parents = GET_UINT32 (cache->buffer, offset);
-
- for (j = 0; j < n_parents; j++)
- {
- parent_offset = GET_UINT32 (cache->buffer, offset + 4 + 4 * j);
- if (_xdg_mime_cache_mime_type_subclass (cache->buffer + parent_offset, ubase))
- return 1;
- }
-
- break;
- }
- }
- }
-
- return 0;
-}
-
-const char *
-_xdg_mime_cache_unalias_mime_type (const char *mime)
-{
- const char *lookup;
-
- lookup = cache_alias_lookup (mime);
-
- if (lookup)
- return lookup;
-
- return mime;
-}
-
-char **
-_xdg_mime_cache_list_mime_parents (const char *mime)
-{
- int i, j, k, p;
- char *all_parents[128]; /* we'll stop at 128 */
- char **result;
-
- mime = xdg_mime_unalias_mime_type (mime);
-
- p = 0;
- for (i = 0; _caches[i]; i++)
- {
- XdgMimeCache *cache = _caches[i];
-
- xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 8);
- xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset);
-
- for (j = 0; j < n_entries; j++)
- {
- xdg_uint32_t mimetype_offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * j);
- xdg_uint32_t parents_offset = GET_UINT32 (cache->buffer, list_offset + 4 + 8 * j + 4);
-
- if (strcmp (cache->buffer + mimetype_offset, mime) == 0)
- {
- xdg_uint32_t parent_mime_offset;
- xdg_uint32_t n_parents = GET_UINT32 (cache->buffer, parents_offset);
-
- for (k = 0; k < n_parents && p < 127; k++)
- {
- parent_mime_offset = GET_UINT32 (cache->buffer, parents_offset + 4 + 4 * k);
- all_parents[p++] = cache->buffer + parent_mime_offset;
- }
-
- break;
- }
- }
- }
- all_parents[p++] = 0;
-
- result = (char **) malloc (p * sizeof (char *));
- memcpy (result, all_parents, p * sizeof (char *));
-
- return result;
-}
-
diff --git a/src/xdgmime/xdgmimecache.h b/src/xdgmime/xdgmimecache.h
deleted file mode 100644
index 61793cb70..000000000
--- a/src/xdgmime/xdgmimecache.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimecache.h: Private file. Datastructure for mmapped caches.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2005 Matthias Clasen <mclasen@redhat.com>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __XDG_MIME_CACHE_H__
-#define __XDG_MIME_CACHE_H__
-
-#include "xdgmime.h"
-
-typedef struct _XdgMimeCache XdgMimeCache;
-
-#ifdef XDG_PREFIX
-#define _xdg_mime_cache_new_from_file XDG_ENTRY(cache_new_from_file)
-#define _xdg_mime_cache_ref XDG_ENTRY(cache_ref)
-#define _xdg_mime_cache_unref XDG_ENTRY(cache_unref)
-#endif
-
-extern XdgMimeCache **_caches;
-
-XdgMimeCache *_xdg_mime_cache_new_from_file (const char *file_name);
-XdgMimeCache *_xdg_mime_cache_ref (XdgMimeCache *cache);
-void _xdg_mime_cache_unref (XdgMimeCache *cache);
-
-
-const char *_xdg_mime_cache_get_mime_type_for_data (const void *data,
- size_t len);
-const char *_xdg_mime_cache_get_mime_type_for_file (const char *file_name,
- struct stat *statbuf);
-const char *_xdg_mime_cache_get_mime_type_from_file_name (const char *file_name);
-int _xdg_mime_cache_is_valid_mime_type (const char *mime_type);
-int _xdg_mime_cache_mime_type_equal (const char *mime_a,
- const char *mime_b);
-int _xdg_mime_cache_media_type_equal (const char *mime_a,
- const char *mime_b);
-int _xdg_mime_cache_mime_type_subclass (const char *mime_a,
- const char *mime_b);
-char **_xdg_mime_cache_list_mime_parents (const char *mime);
-const char *_xdg_mime_cache_unalias_mime_type (const char *mime);
-int _xdg_mime_cache_get_max_buffer_extents (void);
-
-#endif /* __XDG_MIME_CACHE_H__ */
diff --git a/src/xdgmime/xdgmimeglob.c b/src/xdgmime/xdgmimeglob.c
deleted file mode 100644
index 3aad6113c..000000000
--- a/src/xdgmime/xdgmimeglob.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimeglob.c: Private file. Datastructure for storing the globs.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "xdgmimeglob.h"
-#include "xdgmimeint.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include <fnmatch.h>
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-typedef struct XdgGlobHashNode XdgGlobHashNode;
-typedef struct XdgGlobList XdgGlobList;
-
-struct XdgGlobHashNode
-{
- xdg_unichar_t character;
- const char *mime_type;
- XdgGlobHashNode *next;
- XdgGlobHashNode *child;
-};
-struct XdgGlobList
-{
- const char *data;
- const char *mime_type;
- XdgGlobList *next;
-};
-
-struct XdgGlobHash
-{
- XdgGlobList *literal_list;
- XdgGlobHashNode *simple_node;
- XdgGlobList *full_list;
-};
-
-
-/* XdgGlobList
- */
-static XdgGlobList *
-_xdg_glob_list_new (void)
-{
- XdgGlobList *new_element;
-
- new_element = calloc (1, sizeof (XdgGlobList));
-
- return new_element;
-}
-
-/* Frees glob_list and all of it's children */
-static void
-_xdg_glob_list_free (XdgGlobList *glob_list)
-{
- XdgGlobList *ptr, *next;
-
- ptr = glob_list;
-
- while (ptr != NULL)
- {
- next = ptr->next;
-
- if (ptr->data)
- free ((void *) ptr->data);
- if (ptr->mime_type)
- free ((void *) ptr->mime_type);
- free (ptr);
-
- ptr = next;
- }
-}
-
-static XdgGlobList *
-_xdg_glob_list_append (XdgGlobList *glob_list,
- void *data,
- const char *mime_type)
-{
- XdgGlobList *new_element;
- XdgGlobList *tmp_element;
-
- new_element = _xdg_glob_list_new ();
- new_element->data = data;
- new_element->mime_type = mime_type;
- if (glob_list == NULL)
- return new_element;
-
- tmp_element = glob_list;
- while (tmp_element->next != NULL)
- tmp_element = tmp_element->next;
-
- tmp_element->next = new_element;
-
- return glob_list;
-}
-
-#if 0
-static XdgGlobList *
-_xdg_glob_list_prepend (XdgGlobList *glob_list,
- void *data,
- const char *mime_type)
-{
- XdgGlobList *new_element;
-
- new_element = _xdg_glob_list_new ();
- new_element->data = data;
- new_element->next = glob_list;
- new_element->mime_type = mime_type;
-
- return new_element;
-}
-#endif
-
-/* XdgGlobHashNode
- */
-
-static XdgGlobHashNode *
-_xdg_glob_hash_node_new (void)
-{
- XdgGlobHashNode *glob_hash_node;
-
- glob_hash_node = calloc (1, sizeof (XdgGlobHashNode));
-
- return glob_hash_node;
-}
-
-static void
-_xdg_glob_hash_node_dump (XdgGlobHashNode *glob_hash_node,
- int depth)
-{
- int i;
- for (i = 0; i < depth; i++)
- printf (" ");
-
- printf ("%c", (char)glob_hash_node->character);
- if (glob_hash_node->mime_type)
- printf (" - %s\n", glob_hash_node->mime_type);
- else
- printf ("\n");
- if (glob_hash_node->child)
- _xdg_glob_hash_node_dump (glob_hash_node->child, depth + 1);
- if (glob_hash_node->next)
- _xdg_glob_hash_node_dump (glob_hash_node->next, depth);
-}
-
-static XdgGlobHashNode *
-_xdg_glob_hash_insert_text (XdgGlobHashNode *glob_hash_node,
- const char *text,
- const char *mime_type)
-{
- XdgGlobHashNode *node;
- xdg_unichar_t character;
-
- character = _xdg_utf8_to_ucs4 (text);
-
- if ((glob_hash_node == NULL) ||
- (character < glob_hash_node->character))
- {
- node = _xdg_glob_hash_node_new ();
- node->character = character;
- node->next = glob_hash_node;
- glob_hash_node = node;
- }
- else if (character == glob_hash_node->character)
- {
- node = glob_hash_node;
- }
- else
- {
- XdgGlobHashNode *prev_node;
- int found_node = FALSE;
-
- /* Look for the first character of text in glob_hash_node, and insert it if we
- * have to.*/
- prev_node = glob_hash_node;
- node = prev_node->next;
-
- while (node != NULL)
- {
- if (character < node->character)
- {
- node = _xdg_glob_hash_node_new ();
- node->character = character;
- node->next = prev_node->next;
- prev_node->next = node;
-
- found_node = TRUE;
- break;
- }
- else if (character == node->character)
- {
- found_node = TRUE;
- break;
- }
- prev_node = node;
- node = node->next;
- }
-
- if (! found_node)
- {
- node = _xdg_glob_hash_node_new ();
- node->character = character;
- node->next = prev_node->next;
- prev_node->next = node;
- }
- }
-
- text = _xdg_utf8_next_char (text);
- if (*text == '\000')
- {
- if (node->mime_type)
- {
- if (strcmp (node->mime_type, mime_type))
- {
- XdgGlobHashNode *child;
- int found_node = FALSE;
-
- child = node->child;
- while (child && child->character == '\0')
- {
- if (strcmp (child->mime_type, mime_type) == 0)
- {
- found_node = TRUE;
- break;
- }
- child = child->next;
- }
-
- if (!found_node)
- {
- child = _xdg_glob_hash_node_new ();
- child->character = '\000';
- child->mime_type = strdup (mime_type);
- child->child = NULL;
- child->next = node->child;
- node->child = child;
- }
- }
- }
- else
- {
- node->mime_type = strdup (mime_type);
- }
- }
- else
- {
- node->child = _xdg_glob_hash_insert_text (node->child, text, mime_type);
- }
- return glob_hash_node;
-}
-
-static int
-_xdg_glob_hash_node_lookup_file_name (XdgGlobHashNode *glob_hash_node,
- const char *file_name,
- int ignore_case,
- const char *mime_types[],
- int n_mime_types)
-{
- int n;
- XdgGlobHashNode *node;
- xdg_unichar_t character;
-
- if (glob_hash_node == NULL)
- return 0;
-
- character = _xdg_utf8_to_ucs4 (file_name);
- if (ignore_case)
- character = _xdg_ucs4_to_lower(character);
-
- for (node = glob_hash_node; node && character >= node->character; node = node->next)
- {
- if (character == node->character)
- {
- file_name = _xdg_utf8_next_char (file_name);
- if (*file_name == '\000')
- {
- n = 0;
- if (node->mime_type)
- mime_types[n++] = node->mime_type;
- node = node->child;
- while (n < n_mime_types && node && node->character == 0)
- {
- if (node->mime_type)
- mime_types[n++] = node->mime_type;
- node = node->next;
- }
- }
- else
- {
- n = _xdg_glob_hash_node_lookup_file_name (node->child,
- file_name,
- ignore_case,
- mime_types,
- n_mime_types);
- }
- return n;
- }
- }
-
- return 0;
-}
-
-int
-_xdg_glob_hash_lookup_file_name (XdgGlobHash *glob_hash,
- const char *file_name,
- const char *mime_types[],
- int n_mime_types)
-{
- XdgGlobList *list;
- const char *ptr;
- char stopchars[128];
- int i, n;
- XdgGlobHashNode *node;
-
- /* First, check the literals */
-
- assert (file_name != NULL && n_mime_types > 0);
-
- for (list = glob_hash->literal_list; list; list = list->next)
- {
- if (strcmp ((const char *)list->data, file_name) == 0)
- {
- mime_types[0] = list->mime_type;
- return 1;
- }
- }
-
- i = 0;
- for (node = glob_hash->simple_node; node; node = node->next)
- {
- if (node->character < 128)
- stopchars[i++] = (char)node->character;
- }
- stopchars[i] = '\0';
-
- ptr = strpbrk (file_name, stopchars);
- while (ptr)
- {
- n = _xdg_glob_hash_node_lookup_file_name (glob_hash->simple_node, ptr, FALSE,
- mime_types, n_mime_types);
- if (n > 0)
- return n;
-
- n = _xdg_glob_hash_node_lookup_file_name (glob_hash->simple_node, ptr, TRUE,
- mime_types, n_mime_types);
- if (n > 0)
- return n;
-
- ptr = strpbrk (ptr + 1, stopchars);
- }
-
- /* FIXME: Not UTF-8 safe */
- n = 0;
- for (list = glob_hash->full_list; list && n < n_mime_types; list = list->next)
- {
- if (fnmatch ((const char *)list->data, file_name, 0) == 0)
- mime_types[n++] = list->mime_type;
- }
-
- return n;
-}
-
-
-
-/* XdgGlobHash
- */
-
-XdgGlobHash *
-_xdg_glob_hash_new (void)
-{
- XdgGlobHash *glob_hash;
-
- glob_hash = calloc (1, sizeof (XdgGlobHash));
-
- return glob_hash;
-}
-
-
-static void
-_xdg_glob_hash_free_nodes (XdgGlobHashNode *node)
-{
- if (node)
- {
- if (node->child)
- _xdg_glob_hash_free_nodes (node->child);
- if (node->next)
- _xdg_glob_hash_free_nodes (node->next);
- if (node->mime_type)
- free ((void *) node->mime_type);
- free (node);
- }
-}
-
-void
-_xdg_glob_hash_free (XdgGlobHash *glob_hash)
-{
- _xdg_glob_list_free (glob_hash->literal_list);
- _xdg_glob_list_free (glob_hash->full_list);
- _xdg_glob_hash_free_nodes (glob_hash->simple_node);
- free (glob_hash);
-}
-
-XdgGlobType
-_xdg_glob_determine_type (const char *glob)
-{
- const char *ptr;
- int maybe_in_simple_glob = FALSE;
- int first_char = TRUE;
-
- ptr = glob;
-
- while (*ptr != '\000')
- {
- if (*ptr == '*' && first_char)
- maybe_in_simple_glob = TRUE;
- else if (*ptr == '\\' || *ptr == '[' || *ptr == '?' || *ptr == '*')
- return XDG_GLOB_FULL;
-
- first_char = FALSE;
- ptr = _xdg_utf8_next_char (ptr);
- }
- if (maybe_in_simple_glob)
- return XDG_GLOB_SIMPLE;
- else
- return XDG_GLOB_LITERAL;
-}
-
-/* glob must be valid UTF-8 */
-void
-_xdg_glob_hash_append_glob (XdgGlobHash *glob_hash,
- const char *glob,
- const char *mime_type)
-{
- XdgGlobType type;
-
- assert (glob_hash != NULL);
- assert (glob != NULL);
-
- type = _xdg_glob_determine_type (glob);
-
- switch (type)
- {
- case XDG_GLOB_LITERAL:
- glob_hash->literal_list = _xdg_glob_list_append (glob_hash->literal_list, strdup (glob), strdup (mime_type));
- break;
- case XDG_GLOB_SIMPLE:
- glob_hash->simple_node = _xdg_glob_hash_insert_text (glob_hash->simple_node, glob + 1, mime_type);
- break;
- case XDG_GLOB_FULL:
- glob_hash->full_list = _xdg_glob_list_append (glob_hash->full_list, strdup (glob), strdup (mime_type));
- break;
- }
-}
-
-void
-_xdg_glob_hash_dump (XdgGlobHash *glob_hash)
-{
- XdgGlobList *list;
- printf ("LITERAL STRINGS\n");
- if (glob_hash->literal_list == NULL)
- {
- printf (" None\n");
- }
- else
- {
- for (list = glob_hash->literal_list; list; list = list->next)
- printf (" %s - %s\n", (char *)list->data, list->mime_type);
- }
- printf ("\nSIMPLE GLOBS\n");
- _xdg_glob_hash_node_dump (glob_hash->simple_node, 4);
-
- printf ("\nFULL GLOBS\n");
- if (glob_hash->full_list == NULL)
- {
- printf (" None\n");
- }
- else
- {
- for (list = glob_hash->full_list; list; list = list->next)
- printf (" %s - %s\n", (char *)list->data, list->mime_type);
- }
-}
-
-
-void
-_xdg_mime_glob_read_from_file (XdgGlobHash *glob_hash,
- const char *file_name)
-{
- FILE *glob_file;
- char line[255];
-
- glob_file = fopen (file_name, "r");
-
- if (glob_file == NULL)
- return;
-
- /* FIXME: Not UTF-8 safe. Doesn't work if lines are greater than 255 chars.
- * Blah */
- while (fgets (line, 255, glob_file) != NULL)
- {
- char *colon;
- if (line[0] == '#')
- continue;
-
- colon = strchr (line, ':');
- if (colon == NULL)
- continue;
- *(colon++) = '\000';
- colon[strlen (colon) -1] = '\000';
- _xdg_glob_hash_append_glob (glob_hash, colon, line);
- }
-
- fclose (glob_file);
-}
diff --git a/src/xdgmime/xdgmimeglob.h b/src/xdgmime/xdgmimeglob.h
deleted file mode 100644
index 25a1f20e5..000000000
--- a/src/xdgmime/xdgmimeglob.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimeglob.h: Private file. Datastructure for storing the globs.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __XDG_MIME_GLOB_H__
-#define __XDG_MIME_GLOB_H__
-
-#include "xdgmime.h"
-
-typedef struct XdgGlobHash XdgGlobHash;
-
-typedef enum
-{
- XDG_GLOB_LITERAL, /* Makefile */
- XDG_GLOB_SIMPLE, /* *.gif */
- XDG_GLOB_FULL /* x*.[ch] */
-} XdgGlobType;
-
-
-#ifdef XDG_PREFIX
-#define _xdg_mime_glob_read_from_file XDG_ENTRY(glob_read_from_file)
-#define _xdg_glob_hash_new XDG_ENTRY(hash_new)
-#define _xdg_glob_hash_free XDG_ENTRY(hash_free)
-#define _xdg_glob_hash_lookup_file_name XDG_ENTRY(hash_lookup_file_name)
-#define _xdg_glob_hash_append_glob XDG_ENTRY(hash_append_glob)
-#define _xdg_glob_determine_type XDG_ENTRY(determine_type)
-#define _xdg_glob_hash_dump XDG_ENTRY(hash_dump)
-#endif
-
-void _xdg_mime_glob_read_from_file (XdgGlobHash *glob_hash,
- const char *file_name);
-XdgGlobHash *_xdg_glob_hash_new (void);
-void _xdg_glob_hash_free (XdgGlobHash *glob_hash);
-int _xdg_glob_hash_lookup_file_name (XdgGlobHash *glob_hash,
- const char *text,
- const char *mime_types[],
- int n_mime_types);
-void _xdg_glob_hash_append_glob (XdgGlobHash *glob_hash,
- const char *glob,
- const char *mime_type);
-XdgGlobType _xdg_glob_determine_type (const char *glob);
-void _xdg_glob_hash_dump (XdgGlobHash *glob_hash);
-
-#endif /* __XDG_MIME_GLOB_H__ */
diff --git a/src/xdgmime/xdgmimeint.c b/src/xdgmime/xdgmimeint.c
deleted file mode 100644
index 4a0ac4cc3..000000000
--- a/src/xdgmime/xdgmimeint.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimeint.c: Internal defines and functions.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "xdgmimeint.h"
-#include <ctype.h>
-#include <string.h>
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-static const char _xdg_utf8_skip_data[256] = {
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
- 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1
-};
-
-const char * const _xdg_utf8_skip = _xdg_utf8_skip_data;
-
-
-
-/* Returns the number of unprocessed characters. */
-xdg_unichar_t
-_xdg_utf8_to_ucs4(const char *source)
-{
- xdg_unichar_t ucs32;
- if( ! ( *source & 0x80 ) )
- {
- ucs32 = *source;
- }
- else
- {
- int bytelength = 0;
- xdg_unichar_t result;
- if ( ! (*source & 0x40) )
- {
- ucs32 = *source;
- }
- else
- {
- if ( ! (*source & 0x20) )
- {
- result = *source++ & 0x1F;
- bytelength = 2;
- }
- else if ( ! (*source & 0x10) )
- {
- result = *source++ & 0x0F;
- bytelength = 3;
- }
- else if ( ! (*source & 0x08) )
- {
- result = *source++ & 0x07;
- bytelength = 4;
- }
- else if ( ! (*source & 0x04) )
- {
- result = *source++ & 0x03;
- bytelength = 5;
- }
- else if ( ! (*source & 0x02) )
- {
- result = *source++ & 0x01;
- bytelength = 6;
- }
- else
- {
- result = *source++;
- bytelength = 1;
- }
-
- for ( bytelength --; bytelength > 0; bytelength -- )
- {
- result <<= 6;
- result |= *source++ & 0x3F;
- }
- ucs32 = result;
- }
- }
- return ucs32;
-}
-
-
-/* hullo. this is great code. don't rewrite it */
-
-xdg_unichar_t
-_xdg_ucs4_to_lower (xdg_unichar_t source)
-{
- /* FIXME: Do a real to_upper sometime */
- /* CaseFolding-3.2.0.txt has a table of rules. */
- if ((source & 0xFF) == source)
- return (xdg_unichar_t) tolower ((unsigned char) source);
- return source;
-}
-
-int
-_xdg_utf8_validate (const char *source)
-{
- /* FIXME: actually write */
- return TRUE;
-}
-
-const char *
-_xdg_get_base_name (const char *file_name)
-{
- const char *base_name;
-
- if (file_name == NULL)
- return NULL;
-
- base_name = strrchr (file_name, '/');
-
- if (base_name == NULL)
- return file_name;
- else
- return base_name + 1;
-}
diff --git a/src/xdgmime/xdgmimeint.h b/src/xdgmime/xdgmimeint.h
deleted file mode 100644
index 288148719..000000000
--- a/src/xdgmime/xdgmimeint.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimeint.h: Internal defines and functions.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __XDG_MIME_INT_H__
-#define __XDG_MIME_INT_H__
-
-#include "xdgmime.h"
-
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-/* FIXME: Needs to be configure check */
-typedef unsigned int xdg_unichar_t;
-typedef unsigned char xdg_uchar8_t;
-typedef unsigned short xdg_uint16_t;
-typedef unsigned int xdg_uint32_t;
-
-#ifdef XDG_PREFIX
-#define _xdg_utf8_skip XDG_ENTRY(utf8_skip)
-#define _xdg_utf8_to_ucs4 XDG_ENTRY(utf8_to_ucs4)
-#define _xdg_ucs4_to_lower XDG_ENTRY(ucs4_to_lower)
-#define _xdg_utf8_validate XDG_ENTRY(utf8_validate)
-#define _xdg_get_base_name XDG_ENTRY(get_ase_name)
-#endif
-
-#define SWAP_BE16_TO_LE16(val) (xdg_uint16_t)(((xdg_uint16_t)(val) << 8)|((xdg_uint16_t)(val) >> 8))
-
-#define SWAP_BE32_TO_LE32(val) (xdg_uint32_t)((((xdg_uint32_t)(val) & 0xFF000000U) >> 24) | \
- (((xdg_uint32_t)(val) & 0x00FF0000U) >> 8) | \
- (((xdg_uint32_t)(val) & 0x0000FF00U) << 8) | \
- (((xdg_uint32_t)(val) & 0x000000FFU) << 24))
-/* UTF-8 utils
- */
-extern const char *const _xdg_utf8_skip;
-#define _xdg_utf8_next_char(p) (char *)((p) + _xdg_utf8_skip[*(unsigned char *)(p)])
-#define _xdg_utf8_char_size(p) (int) (_xdg_utf8_skip[*(unsigned char *)(p)])
-
-xdg_unichar_t _xdg_utf8_to_ucs4 (const char *source);
-xdg_unichar_t _xdg_ucs4_to_lower (xdg_unichar_t source);
-int _xdg_utf8_validate (const char *source);
-const char *_xdg_get_base_name (const char *file_name);
-
-#endif /* __XDG_MIME_INT_H__ */
diff --git a/src/xdgmime/xdgmimemagic.c b/src/xdgmime/xdgmimemagic.c
deleted file mode 100644
index 57b02d934..000000000
--- a/src/xdgmime/xdgmimemagic.c
+++ /dev/null
@@ -1,810 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimemagic.: Private file. Datastructure for storing magic files.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <assert.h>
-#ifdef OS_WIN32
-#include "../trackerd/mingw-compat.h"
-#endif
-#include "xdgmimemagic.h"
-#include "xdgmimeint.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-#if !defined getc_unlocked && !defined HAVE_GETC_UNLOCKED
-# define getc_unlocked(fp) getc (fp)
-#endif
-
-typedef struct XdgMimeMagicMatch XdgMimeMagicMatch;
-typedef struct XdgMimeMagicMatchlet XdgMimeMagicMatchlet;
-
-typedef enum
-{
- XDG_MIME_MAGIC_SECTION,
- XDG_MIME_MAGIC_MAGIC,
- XDG_MIME_MAGIC_ERROR,
- XDG_MIME_MAGIC_EOF
-} XdgMimeMagicState;
-
-struct XdgMimeMagicMatch
-{
- const char *mime_type;
- int priority;
- XdgMimeMagicMatchlet *matchlet;
- XdgMimeMagicMatch *next;
-};
-
-
-struct XdgMimeMagicMatchlet
-{
- int indent;
- int offset;
- unsigned int value_length;
- unsigned char *value;
- unsigned char *mask;
- unsigned int range_length;
- unsigned int word_size;
- XdgMimeMagicMatchlet *next;
-};
-
-
-struct XdgMimeMagic
-{
- XdgMimeMagicMatch *match_list;
- int max_extent;
-};
-
-static XdgMimeMagicMatch *
-_xdg_mime_magic_match_new (void)
-{
- return calloc (1, sizeof (XdgMimeMagicMatch));
-}
-
-
-static XdgMimeMagicMatchlet *
-_xdg_mime_magic_matchlet_new (void)
-{
- XdgMimeMagicMatchlet *matchlet;
-
- matchlet = malloc (sizeof (XdgMimeMagicMatchlet));
-
- matchlet->indent = 0;
- matchlet->offset = 0;
- matchlet->value_length = 0;
- matchlet->value = NULL;
- matchlet->mask = NULL;
- matchlet->range_length = 1;
- matchlet->word_size = 1;
- matchlet->next = NULL;
-
- return matchlet;
-}
-
-
-static void
-_xdg_mime_magic_matchlet_free (XdgMimeMagicMatchlet *mime_magic_matchlet)
-{
- if (mime_magic_matchlet)
- {
- if (mime_magic_matchlet->next)
- _xdg_mime_magic_matchlet_free (mime_magic_matchlet->next);
- if (mime_magic_matchlet->value)
- free (mime_magic_matchlet->value);
- if (mime_magic_matchlet->mask)
- free (mime_magic_matchlet->mask);
- free (mime_magic_matchlet);
- }
-}
-
-
-/* Frees mime_magic_match and the remainder of its list
- */
-static void
-_xdg_mime_magic_match_free (XdgMimeMagicMatch *mime_magic_match)
-{
- XdgMimeMagicMatch *ptr, *next;
-
- ptr = mime_magic_match;
- while (ptr)
- {
- next = ptr->next;
-
- if (ptr->mime_type)
- free ((void *) ptr->mime_type);
- if (ptr->matchlet)
- _xdg_mime_magic_matchlet_free (ptr->matchlet);
- free (ptr);
-
- ptr = next;
- }
-}
-
-/* Reads in a hunk of data until a newline character or a '\000' is hit. The
- * returned string is null terminated, and doesn't include the newline.
- */
-static unsigned char *
-_xdg_mime_magic_read_to_newline (FILE *magic_file,
- int *end_of_file)
-{
- unsigned char *retval;
- int c;
- int len, pos;
-
- len = 128;
- pos = 0;
- retval = malloc (len);
- *end_of_file = FALSE;
-
- while (TRUE)
- {
- c = getc_unlocked (magic_file);
- if (c == EOF)
- {
- *end_of_file = TRUE;
- break;
- }
- if (c == '\n' || c == '\000')
- break;
- retval[pos++] = (unsigned char) c;
- if (pos % 128 == 127)
- {
- len = len + 128;
- retval = realloc (retval, len);
- }
- }
-
- retval[pos] = '\000';
- return retval;
-}
-
-/* Returns the number read from the file, or -1 if no number could be read.
- */
-static int
-_xdg_mime_magic_read_a_number (FILE *magic_file,
- int *end_of_file)
-{
- /* LONG_MAX is about 20 characters on my system */
-#define MAX_NUMBER_SIZE 30
- char number_string[MAX_NUMBER_SIZE + 1];
- int pos = 0;
- int c;
- long retval = -1;
-
- while (TRUE)
- {
- c = getc_unlocked (magic_file);
-
- if (c == EOF)
- {
- *end_of_file = TRUE;
- break;
- }
- if (! isdigit (c))
- {
- ungetc (c, magic_file);
- break;
- }
- number_string[pos] = (char) c;
- pos++;
- if (pos == MAX_NUMBER_SIZE)
- break;
- }
- if (pos > 0)
- {
- number_string[pos] = '\000';
- errno = 0;
- retval = strtol (number_string, NULL, 10);
-
- if ((retval < INT_MIN) || (retval > INT_MAX) || (errno != 0))
- return -1;
- }
-
- return retval;
-}
-
-/* Headers are of the format:
- * [<priority>:<mime-type>]
- */
-static XdgMimeMagicState
-_xdg_mime_magic_parse_header (FILE *magic_file, XdgMimeMagicMatch *match)
-{
- int c;
- char *buffer;
- char *end_ptr;
- int end_of_file = 0;
-
- assert (magic_file != NULL);
- assert (match != NULL);
-
- c = getc_unlocked (magic_file);
- if (c == EOF)
- return XDG_MIME_MAGIC_EOF;
- if (c != '[')
- return XDG_MIME_MAGIC_ERROR;
-
- match->priority = _xdg_mime_magic_read_a_number (magic_file, &end_of_file);
- if (end_of_file)
- return XDG_MIME_MAGIC_EOF;
- if (match->priority == -1)
- return XDG_MIME_MAGIC_ERROR;
-
- c = getc_unlocked (magic_file);
- if (c == EOF)
- return XDG_MIME_MAGIC_EOF;
- if (c != ':')
- return XDG_MIME_MAGIC_ERROR;
-
- buffer = (char *)_xdg_mime_magic_read_to_newline (magic_file, &end_of_file);
- if (end_of_file)
- return XDG_MIME_MAGIC_EOF;
-
- end_ptr = buffer;
- while (*end_ptr != ']' && *end_ptr != '\000' && *end_ptr != '\n')
- end_ptr++;
- if (*end_ptr != ']')
- {
- free (buffer);
- return XDG_MIME_MAGIC_ERROR;
- }
- *end_ptr = '\000';
-
- match->mime_type = strdup (buffer);
- free (buffer);
-
- return XDG_MIME_MAGIC_MAGIC;
-}
-
-static XdgMimeMagicState
-_xdg_mime_magic_parse_error (FILE *magic_file)
-{
- int c;
-
- while (1)
- {
- c = getc_unlocked (magic_file);
- if (c == EOF)
- return XDG_MIME_MAGIC_EOF;
- if (c == '\n')
- return XDG_MIME_MAGIC_SECTION;
- }
-}
-
-/* Headers are of the format:
- * [ indent ] ">" start-offset "=" value
- * [ "&" mask ] [ "~" word-size ] [ "+" range-length ] "\n"
- */
-static XdgMimeMagicState
-_xdg_mime_magic_parse_magic_line (FILE *magic_file,
- XdgMimeMagicMatch *match)
-{
- XdgMimeMagicMatchlet *matchlet;
- int c;
- int end_of_file;
- int indent = 0;
- int bytes_read;
-
- assert (magic_file != NULL);
-
- /* Sniff the buffer to make sure it's a valid line */
- c = getc_unlocked (magic_file);
- if (c == EOF)
- return XDG_MIME_MAGIC_EOF;
- else if (c == '[')
- {
- ungetc (c, magic_file);
- return XDG_MIME_MAGIC_SECTION;
- }
- else if (c == '\n')
- return XDG_MIME_MAGIC_MAGIC;
-
- /* At this point, it must be a digit or a '>' */
- end_of_file = FALSE;
- if (isdigit (c))
- {
- ungetc (c, magic_file);
- indent = _xdg_mime_magic_read_a_number (magic_file, &end_of_file);
- if (end_of_file)
- return XDG_MIME_MAGIC_EOF;
- if (indent == -1)
- return XDG_MIME_MAGIC_ERROR;
- c = getc_unlocked (magic_file);
- if (c == EOF)
- return XDG_MIME_MAGIC_EOF;
- }
-
- if (c != '>')
- return XDG_MIME_MAGIC_ERROR;
-
- matchlet = _xdg_mime_magic_matchlet_new ();
- matchlet->indent = indent;
- matchlet->offset = _xdg_mime_magic_read_a_number (magic_file, &end_of_file);
- if (end_of_file)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_EOF;
- }
- if (matchlet->offset == -1)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
- c = getc_unlocked (magic_file);
- if (c == EOF)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_EOF;
- }
- else if (c != '=')
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
-
- /* Next two bytes determine how long the value is */
- matchlet->value_length = 0;
- c = getc_unlocked (magic_file);
- if (c == EOF)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_EOF;
- }
- matchlet->value_length = c & 0xFF;
- matchlet->value_length = matchlet->value_length << 8;
-
- c = getc_unlocked (magic_file);
- if (c == EOF)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_EOF;
- }
- matchlet->value_length = matchlet->value_length + (c & 0xFF);
-
- matchlet->value = malloc (matchlet->value_length);
-
- /* OOM */
- if (matchlet->value == NULL)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
- bytes_read = fread (matchlet->value, 1, matchlet->value_length, magic_file);
- if (bytes_read != matchlet->value_length)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- if (feof (magic_file))
- return XDG_MIME_MAGIC_EOF;
- else
- return XDG_MIME_MAGIC_ERROR;
- }
-
- c = getc_unlocked (magic_file);
- if (c == '&')
- {
- matchlet->mask = malloc (matchlet->value_length);
- /* OOM */
- if (matchlet->mask == NULL)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
- bytes_read = fread (matchlet->mask, 1, matchlet->value_length, magic_file);
- if (bytes_read != matchlet->value_length)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- if (feof (magic_file))
- return XDG_MIME_MAGIC_EOF;
- else
- return XDG_MIME_MAGIC_ERROR;
- }
- c = getc_unlocked (magic_file);
- }
-
- if (c == '~')
- {
- matchlet->word_size = _xdg_mime_magic_read_a_number (magic_file, &end_of_file);
- if (end_of_file)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_EOF;
- }
- if (matchlet->word_size != 0 &&
- matchlet->word_size != 1 &&
- matchlet->word_size != 2 &&
- matchlet->word_size != 4)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
- c = getc_unlocked (magic_file);
- }
-
- if (c == '+')
- {
- matchlet->range_length = _xdg_mime_magic_read_a_number (magic_file, &end_of_file);
- if (end_of_file)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_EOF;
- }
- if (matchlet->range_length == -1)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
- c = getc_unlocked (magic_file);
- }
-
-
- if (c == '\n')
- {
- /* We clean up the matchlet, byte swapping if needed */
- if (matchlet->word_size > 1)
- {
- int i;
- if (matchlet->value_length % matchlet->word_size != 0)
- {
- _xdg_mime_magic_matchlet_free (matchlet);
- return XDG_MIME_MAGIC_ERROR;
- }
- /* FIXME: need to get this defined in a <config.h> style file */
-#if LITTLE_ENDIAN
- for (i = 0; i < matchlet->value_length; i = i + matchlet->word_size)
- {
- if (matchlet->word_size == 2)
- *((xdg_uint16_t *) matchlet->value + i) = SWAP_BE16_TO_LE16 (*((xdg_uint16_t *) (matchlet->value + i)));
- else if (matchlet->word_size == 4)
- *((xdg_uint32_t *) matchlet->value + i) = SWAP_BE32_TO_LE32 (*((xdg_uint32_t *) (matchlet->value + i)));
- if (matchlet->mask)
- {
- if (matchlet->word_size == 2)
- *((xdg_uint16_t *) matchlet->mask + i) = SWAP_BE16_TO_LE16 (*((xdg_uint16_t *) (matchlet->mask + i)));
- else if (matchlet->word_size == 4)
- *((xdg_uint32_t *) matchlet->mask + i) = SWAP_BE32_TO_LE32 (*((xdg_uint32_t *) (matchlet->mask + i)));
-
- }
- }
-#endif
- }
-
- matchlet->next = match->matchlet;
- match->matchlet = matchlet;
-
-
- return XDG_MIME_MAGIC_MAGIC;
- }
-
- _xdg_mime_magic_matchlet_free (matchlet);
- if (c == EOF)
- return XDG_MIME_MAGIC_EOF;
-
- return XDG_MIME_MAGIC_ERROR;
-}
-
-static int
-_xdg_mime_magic_matchlet_compare_to_data (XdgMimeMagicMatchlet *matchlet,
- const void *data,
- size_t len)
-{
- int i, j;
- for (i = matchlet->offset; i < matchlet->offset + matchlet->range_length; i++)
- {
- int valid_matchlet = TRUE;
-
- if (i + matchlet->value_length > len)
- return FALSE;
-
- if (matchlet->mask)
- {
- for (j = 0; j < matchlet->value_length; j++)
- {
- if ((matchlet->value[j] & matchlet->mask[j]) !=
- ((((unsigned char *) data)[j + i]) & matchlet->mask[j]))
- {
- valid_matchlet = FALSE;
- break;
- }
- }
- }
- else
- {
- for (j = 0; j < matchlet->value_length; j++)
- {
- if (matchlet->value[j] != ((unsigned char *) data)[j + i])
- {
- valid_matchlet = FALSE;
- break;
- }
- }
- }
- if (valid_matchlet)
- return TRUE;
- }
- return FALSE;
-}
-
-static int
-_xdg_mime_magic_matchlet_compare_level (XdgMimeMagicMatchlet *matchlet,
- const void *data,
- size_t len,
- int indent)
-{
- while ((matchlet != NULL) && (matchlet->indent == indent))
- {
- if (_xdg_mime_magic_matchlet_compare_to_data (matchlet, data, len))
- {
- if ((matchlet->next == NULL) ||
- (matchlet->next->indent <= indent))
- return TRUE;
-
- if (_xdg_mime_magic_matchlet_compare_level (matchlet->next,
- data,
- len,
- indent + 1))
- return TRUE;
- }
-
- do
- {
- matchlet = matchlet->next;
- }
- while (matchlet && matchlet->indent > indent);
- }
-
- return FALSE;
-}
-
-static int
-_xdg_mime_magic_match_compare_to_data (XdgMimeMagicMatch *match,
- const void *data,
- size_t len)
-{
- return _xdg_mime_magic_matchlet_compare_level (match->matchlet, data, len, 0);
-}
-
-static void
-_xdg_mime_magic_insert_match (XdgMimeMagic *mime_magic,
- XdgMimeMagicMatch *match)
-{
- XdgMimeMagicMatch *list;
-
- if (mime_magic->match_list == NULL)
- {
- mime_magic->match_list = match;
- return;
- }
-
- if (match->priority > mime_magic->match_list->priority)
- {
- match->next = mime_magic->match_list;
- mime_magic->match_list = match;
- return;
- }
-
- list = mime_magic->match_list;
- while (list->next != NULL)
- {
- if (list->next->priority < match->priority)
- {
- match->next = list->next;
- list->next = match;
- return;
- }
- list = list->next;
- }
- list->next = match;
- match->next = NULL;
-}
-
-XdgMimeMagic *
-_xdg_mime_magic_new (void)
-{
- return calloc (1, sizeof (XdgMimeMagic));
-}
-
-void
-_xdg_mime_magic_free (XdgMimeMagic *mime_magic)
-{
- if (mime_magic) {
- _xdg_mime_magic_match_free (mime_magic->match_list);
- free (mime_magic);
- }
-}
-
-int
-_xdg_mime_magic_get_buffer_extents (XdgMimeMagic *mime_magic)
-{
- return mime_magic->max_extent;
-}
-
-const char *
-_xdg_mime_magic_lookup_data (XdgMimeMagic *mime_magic,
- const void *data,
- size_t len,
- const char *mime_types[],
- int n_mime_types)
-{
- XdgMimeMagicMatch *match;
- const char *mime_type;
- int n;
-
- mime_type = NULL;
- for (match = mime_magic->match_list; match; match = match->next)
- {
- if (_xdg_mime_magic_match_compare_to_data (match, data, len))
- {
- if ((mime_type == NULL) || (_xdg_mime_mime_type_subclass (match->mime_type, mime_type))) {
- mime_type = match->mime_type;
- }
- }
- else
- {
- for (n = 0; n < n_mime_types; n++)
- {
- if (mime_types[n] &&
- _xdg_mime_mime_type_equal (mime_types[n], match->mime_type))
- mime_types[n] = NULL;
- }
- }
- }
-
- if (mime_type == NULL)
- {
- for (n = 0; n < n_mime_types; n++)
- {
- if (mime_types[n])
- mime_type = mime_types[n];
- }
- }
-
- return mime_type;
-}
-
-static void
-_xdg_mime_update_mime_magic_extents (XdgMimeMagic *mime_magic)
-{
- XdgMimeMagicMatch *match;
- int max_extent = 0;
-
- for (match = mime_magic->match_list; match; match = match->next)
- {
- XdgMimeMagicMatchlet *matchlet;
-
- for (matchlet = match->matchlet; matchlet; matchlet = matchlet->next)
- {
- int extent;
-
- extent = matchlet->value_length + matchlet->offset + matchlet->range_length;
- if (max_extent < extent)
- max_extent = extent;
- }
- }
-
- mime_magic->max_extent = max_extent;
-}
-
-static XdgMimeMagicMatchlet *
-_xdg_mime_magic_matchlet_mirror (XdgMimeMagicMatchlet *matchlets)
-{
- XdgMimeMagicMatchlet *new_list;
- XdgMimeMagicMatchlet *tmp;
-
- if ((matchlets == NULL) || (matchlets->next == NULL))
- return matchlets;
-
- new_list = NULL;
- tmp = matchlets;
- while (tmp != NULL)
- {
- XdgMimeMagicMatchlet *matchlet;
-
- matchlet = tmp;
- tmp = tmp->next;
- matchlet->next = new_list;
- new_list = matchlet;
- }
-
- return new_list;
-
-}
-
-static void
-_xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic,
- FILE *magic_file)
-{
- XdgMimeMagicState state;
- XdgMimeMagicMatch *match = NULL; /* Quiet compiler */
-
- state = XDG_MIME_MAGIC_SECTION;
-
- while (state != XDG_MIME_MAGIC_EOF)
- {
- switch (state)
- {
- case XDG_MIME_MAGIC_SECTION:
- match = _xdg_mime_magic_match_new ();
- state = _xdg_mime_magic_parse_header (magic_file, match);
- if (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_ERROR)
- _xdg_mime_magic_match_free (match);
- break;
- case XDG_MIME_MAGIC_MAGIC:
- state = _xdg_mime_magic_parse_magic_line (magic_file, match);
- if (state == XDG_MIME_MAGIC_SECTION ||
- (state == XDG_MIME_MAGIC_EOF && match->mime_type))
- {
- match->matchlet = _xdg_mime_magic_matchlet_mirror (match->matchlet);
- _xdg_mime_magic_insert_match (mime_magic, match);
- }
- else if (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_ERROR)
- _xdg_mime_magic_match_free (match);
- break;
- case XDG_MIME_MAGIC_ERROR:
- state = _xdg_mime_magic_parse_error (magic_file);
- break;
- case XDG_MIME_MAGIC_EOF:
- default:
- /* Make the compiler happy */
- assert (0);
- }
- }
- _xdg_mime_update_mime_magic_extents (mime_magic);
-}
-
-void
-_xdg_mime_magic_read_from_file (XdgMimeMagic *mime_magic,
- const char *file_name)
-{
- FILE *magic_file;
- char header[12];
-
- magic_file = fopen (file_name, "r");
-
- if (magic_file == NULL)
- return;
-
- if (fread (header, 1, 12, magic_file) == 12)
- {
- if (memcmp ("MIME-Magic\0\n", header, 12) == 0)
- _xdg_mime_magic_read_magic_file (mime_magic, magic_file);
- }
-
- fclose (magic_file);
-}
diff --git a/src/xdgmime/xdgmimemagic.h b/src/xdgmime/xdgmimemagic.h
deleted file mode 100644
index 16578962b..000000000
--- a/src/xdgmime/xdgmimemagic.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimemagic.h: Private file. Datastructure for storing the magic files.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2003 Red Hat, Inc.
- * Copyright (C) 2003 Jonathan Blandford <jrb@alum.mit.edu>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __XDG_MIME_MAGIC_H__
-#define __XDG_MIME_MAGIC_H__
-
-#include <unistd.h>
-#include "xdgmime.h"
-typedef struct XdgMimeMagic XdgMimeMagic;
-
-#ifdef XDG_PREFIX
-#define _xdg_mime_glob_read_from_file XDG_ENTRY(glob_read_from_file)
-#define _xdg_mime_magic_new XDG_ENTRY(magic_new)
-#define _xdg_mime_magic_read_from_file XDG_ENTRY(magic_read_from_file)
-#define _xdg_mime_magic_free XDG_ENTRY(magic_free)
-#define _xdg_mime_magic_get_buffer_extents XDG_ENTRY(magic_get_buffer_extents)
-#define _xdg_mime_magic_lookup_data XDG_ENTRY(magic_lookup_data)
-#endif
-
-
-XdgMimeMagic *_xdg_mime_magic_new (void);
-void _xdg_mime_magic_read_from_file (XdgMimeMagic *mime_magic,
- const char *file_name);
-void _xdg_mime_magic_free (XdgMimeMagic *mime_magic);
-int _xdg_mime_magic_get_buffer_extents (XdgMimeMagic *mime_magic);
-const char *_xdg_mime_magic_lookup_data (XdgMimeMagic *mime_magic,
- const void *data,
- size_t len,
- const char *mime_types[],
- int n_mime_types);
-
-#endif /* __XDG_MIME_MAGIC_H__ */
diff --git a/src/xdgmime/xdgmimeparent.c b/src/xdgmime/xdgmimeparent.c
deleted file mode 100644
index 511bbacbc..000000000
--- a/src/xdgmime/xdgmimeparent.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimealias.c: Private file. Datastructure for storing the hierarchy.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2004 Red Hat, Inc.
- * Copyright (C) 2004 Matthias Clasen <mclasen@redhat.com>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "xdgmimeparent.h"
-#include "xdgmimeint.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include <fnmatch.h>
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-typedef struct XdgMimeParents XdgMimeParents;
-
-struct XdgMimeParents
-{
- char *mime;
- char **parents;
- int n_parents;
-};
-
-struct XdgParentList
-{
- struct XdgMimeParents *parents;
- int n_mimes;
-};
-
-XdgParentList *
-_xdg_mime_parent_list_new (void)
-{
- XdgParentList *list;
-
- list = malloc (sizeof (XdgParentList));
-
- list->parents = NULL;
- list->n_mimes = 0;
-
- return list;
-}
-
-void
-_xdg_mime_parent_list_free (XdgParentList *list)
-{
- int i;
- char **p;
-
- if (list->parents)
- {
- for (i = 0; i < list->n_mimes; i++)
- {
- for (p = list->parents[i].parents; *p; p++)
- free (*p);
-
- free (list->parents[i].parents);
- free (list->parents[i].mime);
- }
- free (list->parents);
- }
- free (list);
-}
-
-static int
-parent_entry_cmp (const void *v1, const void *v2)
-{
- return strcmp (((XdgMimeParents *)v1)->mime, ((XdgMimeParents *)v2)->mime);
-}
-
-const char **
-_xdg_mime_parent_list_lookup (XdgParentList *list,
- const char *mime)
-{
- XdgMimeParents *entry;
- XdgMimeParents key;
-
- if (list->n_mimes > 0)
- {
- key.mime = (char *)mime;
- key.parents = NULL;
-
- entry = bsearch (&key, list->parents, list->n_mimes,
- sizeof (XdgMimeParents), &parent_entry_cmp);
- if (entry)
- return (const char **)entry->parents;
- }
-
- return NULL;
-}
-
-void
-_xdg_mime_parent_read_from_file (XdgParentList *list,
- const char *file_name)
-{
- FILE *file;
- char line[255];
- int i, alloc;
- XdgMimeParents *entry;
-
- file = fopen (file_name, "r");
-
- if (file == NULL)
- return;
-
- /* FIXME: Not UTF-8 safe. Doesn't work if lines are greater than 255 chars.
- * Blah */
- alloc = list->n_mimes + 16;
- list->parents = realloc (list->parents, alloc * sizeof (XdgMimeParents));
- while (fgets (line, 255, file) != NULL)
- {
- char *sep;
- if (line[0] == '#')
- continue;
-
- sep = strchr (line, ' ');
- if (sep == NULL)
- continue;
- *(sep++) = '\000';
- sep[strlen (sep) -1] = '\000';
- entry = NULL;
- for (i = 0; i < list->n_mimes; i++)
- {
- if (strcmp (list->parents[i].mime, line) == 0)
- {
- entry = &(list->parents[i]);
- break;
- }
- }
-
- if (!entry)
- {
- if (list->n_mimes == alloc)
- {
- alloc <<= 1;
- list->parents = realloc (list->parents,
- alloc * sizeof (XdgMimeParents));
- }
- list->parents[list->n_mimes].mime = strdup (line);
- list->parents[list->n_mimes].parents = NULL;
- entry = &(list->parents[list->n_mimes]);
- list->n_mimes++;
- }
-
- if (!entry->parents)
- {
- entry->n_parents = 1;
- entry->parents = malloc ((entry->n_parents + 1) * sizeof (char *));
- }
- else
- {
- entry->n_parents += 1;
- entry->parents = realloc (entry->parents,
- (entry->n_parents + 2) * sizeof (char *));
- }
- entry->parents[entry->n_parents - 1] = strdup (sep);
- entry->parents[entry->n_parents] = NULL;
- }
-
- list->parents = realloc (list->parents,
- list->n_mimes * sizeof (XdgMimeParents));
-
- fclose (file);
-
- if (list->n_mimes > 1)
- qsort (list->parents, list->n_mimes,
- sizeof (XdgMimeParents), &parent_entry_cmp);
-}
-
-
-void
-_xdg_mime_parent_list_dump (XdgParentList *list)
-{
- int i;
- char **p;
-
- if (list->parents)
- {
- for (i = 0; i < list->n_mimes; i++)
- {
- for (p = list->parents[i].parents; *p; p++)
- printf ("%s %s\n", list->parents[i].mime, *p);
- }
- }
-}
-
-
diff --git a/src/xdgmime/xdgmimeparent.h b/src/xdgmime/xdgmimeparent.h
deleted file mode 100644
index da29452cb..000000000
--- a/src/xdgmime/xdgmimeparent.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* xdgmimeparent.h: Private file. Datastructure for storing the hierarchy.
- *
- * More info can be found at http://www.freedesktop.org/standards/
- *
- * Copyright (C) 2004 Red Hat, Inc.
- * Copyright (C) 200 Matthias Clasen <mclasen@redhat.com>
- *
- * Licensed under the Academic Free License version 2.0
- * Or under the following terms:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __XDG_MIME_PARENT_H__
-#define __XDG_MIME_PARENT_H__
-
-#include "xdgmime.h"
-
-typedef struct XdgParentList XdgParentList;
-
-#ifdef XDG_PREFIX
-#define _xdg_mime_parent_read_from_file XDG_ENTRY(parent_read_from_file)
-#define _xdg_mime_parent_list_new XDG_ENTRY(parent_list_new)
-#define _xdg_mime_parent_list_free XDG_ENTRY(parent_list_free)
-#define _xdg_mime_parent_list_lookup XDG_ENTRY(parent_list_lookup)
-#endif
-
-void _xdg_mime_parent_read_from_file (XdgParentList *list,
- const char *file_name);
-XdgParentList *_xdg_mime_parent_list_new (void);
-void _xdg_mime_parent_list_free (XdgParentList *list);
-const char **_xdg_mime_parent_list_lookup (XdgParentList *list,
- const char *mime);
-void _xdg_mime_parent_list_dump (XdgParentList *list);
-
-#endif /* __XDG_MIME_PARENT_H__ */
diff --git a/thumbnailers/Makefile.am b/thumbnailers/Makefile.am
deleted file mode 100644
index 7a723aa00..000000000
--- a/thumbnailers/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = application image
diff --git a/thumbnailers/application/Makefile.am b/thumbnailers/application/Makefile.am
deleted file mode 100644
index e44b9c97e..000000000
--- a/thumbnailers/application/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-thumbappbindir = $(libdir)/tracker/thumbnailers/application
-
-thumbappbin_SCRIPTS = pdf_thumbnailer \
- vnd.oasis.opendocument.graphics_thumbnailer \
- vnd.oasis.opendocument.presentation_thumbnailer \
- vnd.oasis.opendocument.spreadsheet_thumbnailer \
- vnd.oasis.opendocument.text_thumbnailer
-
-EXTRA_DIST = $(thumbappbin_SCRIPTS)
diff --git a/thumbnailers/application/pdf_thumbnailer b/thumbnailers/application/pdf_thumbnailer
deleted file mode 100755
index e7fb10149..000000000
--- a/thumbnailers/application/pdf_thumbnailer
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-nice -n19 evince-thumbnailer -s $3 "$1" $2
-
diff --git a/thumbnailers/application/vnd.oasis.opendocument.graphics_thumbnailer b/thumbnailers/application/vnd.oasis.opendocument.graphics_thumbnailer
deleted file mode 100755
index 392e6f77d..000000000
--- a/thumbnailers/application/vnd.oasis.opendocument.graphics_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" Thumbnails/thumbnail.png | convert - -resize $3x$3 "$2"
diff --git a/thumbnailers/application/vnd.oasis.opendocument.presentation_thumbnailer b/thumbnailers/application/vnd.oasis.opendocument.presentation_thumbnailer
deleted file mode 100755
index 392e6f77d..000000000
--- a/thumbnailers/application/vnd.oasis.opendocument.presentation_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" Thumbnails/thumbnail.png | convert - -resize $3x$3 "$2"
diff --git a/thumbnailers/application/vnd.oasis.opendocument.spreadsheet_thumbnailer b/thumbnailers/application/vnd.oasis.opendocument.spreadsheet_thumbnailer
deleted file mode 100755
index 392e6f77d..000000000
--- a/thumbnailers/application/vnd.oasis.opendocument.spreadsheet_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" Thumbnails/thumbnail.png | convert - -resize $3x$3 "$2"
diff --git a/thumbnailers/application/vnd.oasis.opendocument.text_thumbnailer b/thumbnailers/application/vnd.oasis.opendocument.text_thumbnailer
deleted file mode 100755
index 392e6f77d..000000000
--- a/thumbnailers/application/vnd.oasis.opendocument.text_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 unzip -p "$1" Thumbnails/thumbnail.png | convert - -resize $3x$3 "$2"
diff --git a/thumbnailers/image/Makefile.am b/thumbnailers/image/Makefile.am
deleted file mode 100644
index 2e4ba238e..000000000
--- a/thumbnailers/image/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-thumbappbindir = $(libdir)/tracker/thumbnailers/image
-
-thumbappbin_SCRIPTS = png_thumbnailer jpeg_thumbnailer gif_thumbnailer tiff_thumbnailer
-
-EXTRA_DIST = $(thumbappbin_SCRIPTS)
diff --git a/thumbnailers/image/gif_thumbnailer b/thumbnailers/image/gif_thumbnailer
deleted file mode 100755
index 70c05f15f..000000000
--- a/thumbnailers/image/gif_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 convert "$1" -thumbnail $3x$3 $2
diff --git a/thumbnailers/image/jpeg_thumbnailer b/thumbnailers/image/jpeg_thumbnailer
deleted file mode 100755
index 70c05f15f..000000000
--- a/thumbnailers/image/jpeg_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 convert "$1" -thumbnail $3x$3 $2
diff --git a/thumbnailers/image/png_thumbnailer b/thumbnailers/image/png_thumbnailer
deleted file mode 100755
index 70c05f15f..000000000
--- a/thumbnailers/image/png_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 convert "$1" -thumbnail $3x$3 $2
diff --git a/thumbnailers/image/tiff_thumbnailer b/thumbnailers/image/tiff_thumbnailer
deleted file mode 100755
index 70c05f15f..000000000
--- a/thumbnailers/image/tiff_thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-nice -n19 convert "$1" -thumbnail $3x$3 $2
diff --git a/tracker.pc.in b/tracker.pc.in
deleted file mode 100644
index 5fc07f441..000000000
--- a/tracker.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: tracker
-Description: Tracker : Indexer, metadata harvester and metadata database
-Version: @VERSION@
-Requires: glib-2.0 dbus-1 dbus-glib-1
-Libs: -L${libdir} -ltrackerclient
-Cflags: -DDBUS_API_SUBJECT_TO_CHANGE -I${includedir}
-
diff --git a/tracker.spec b/tracker.spec
deleted file mode 100644
index 140082849..000000000
--- a/tracker.spec
+++ /dev/null
@@ -1,121 +0,0 @@
-Summary: An object database, tag/metadata database, search tool and indexer
-Name: tracker
-Version: 0.5.1
-Release: 1%{?dist}
-License: GPL
-Group: Applications/System
-URL: http://www.gnome.org/~jamiemcc/tracker/
-Source0: http://www.gnome.org/~jamiemcc/tracker/tracker-%{version}.tar.gz
-Source1: trackerd.desktop
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: gmime-devel, poppler-devel, gettext
-BuildRequires: gnome-desktop-devel, gamin-devel
-BuildRequires: libexif-devel, libgsf-devel, gstreamer-devel
-BuildRequires: desktop-file-utils, intltool
-%if "%fedora" >= "6"
-BuildRequires: sqlite-devel
-%else
-BuildRequires: dbus-devel, dbus-glib
-%endif
-
-%description
-Tracker is a powerful desktop-neutral first class object database,
-tag/metadata database, search tool and indexer.
-
-It consists of a common object database that allows entities to have an
-almost infinte number of properties, metadata (both embedded/harvested as
-well as user definable), a comprehensive database of keywords/tags and
-links to other entities.
-
-It provides additional features for file based objects including context
-linking and audit trails for a file object.
-
-It has the ability to index, store, harvest metadata. retrieve and search
-all types of files and other first class objects
-
-%package devel
-Summary: Headers for developing programs that will use %{name}
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: pkgconfig
-
-%description devel
-This package contains the static libraries and header files needed for
-developing with tracker
-
-%prep
-%setup -q
-
-%build
-%if "%fedora" >= "6"
-%configure --disable-static --enable-external-sqlite
-%else
-%configure --disable-static
-%endif
-# make %{?_smp_mflags} fails
-make
-
-
-%install
-rm -rf %{buildroot}
-make DESTDIR=%{buildroot} install
-
-# Add an autostart for trackerd
-mkdir -p %{buildroot}%{_sysconfdir}/xdg/autostart
-cp %{SOURCE1} %{buildroot}%{_sysconfdir}/xdg/autostart/
-
-rm -rf %{buildroot}%{_libdir}/*.la
-
-%clean
-rm -rf %{buildroot}
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-, root, root, -)
-%doc AUTHORS ChangeLog COPYING NEWS README
-%{_bindir}/htmless
-%{_bindir}/o3totxt
-%{_bindir}/tracker*
-%{_datadir}/tracker/
-%{_datadir}/pixmaps/tracker/
-%{_datadir}/dbus-1/services/tracker.service
-%{_libdir}/*.so.*
-%{_mandir}/man1/tracker*.1.gz
-%{_sysconfdir}/xdg/autostart/trackerd.desktop
-
-%files devel
-%defattr(-, root, root, -)
-%{_includedir}/tracker*
-%{_libdir}/*.so
-%{_libdir}/pkgconfig/*.pc
-
-%changelog
-* Mon Nov 06 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.1-1
-- Update to new version
-
-* Mon Nov 06 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-7
-- Have the devel subpackage require pkgconfig
-- Make the description field not have more than 76 characters on a line
-- Fix up the RPM group
-
-* Mon Nov 06 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-6
-- Explicitly require dbus-devel and dbus-glib (needed for FC < 6)
-
-* Sun Nov 05 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-5
-- Remove unneeded BRs (gnome-utils-devel and openssl-devel)
-
-* Sun Nov 05 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-4
-- Add autostart desktop file.
-- Edit the package description as suggested in review
-
-* Sat Nov 04 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-3
-- More cleaups to the spec file.
-
-* Sat Nov 04 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-2
-- Add needed BRs
-
-* Sat Nov 04 2006 Deji Akingunola <dakingun@gmail.com> - 0.5.0-1
-- Initial packaging for Fedora Extras
diff --git a/trackerd.desktop.in.in b/trackerd.desktop.in.in
deleted file mode 100644
index 8bbca8595..000000000
--- a/trackerd.desktop.in.in
+++ /dev/null
@@ -1,20 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-_Name=Tracker
-_Comment=Tracker search and indexing service
-Icon=
-Exec=trackerd
-Terminal=false
-Type=Application
-Categories=
-X-GNOME-Autostart-enabled=true
-X-KDE-autostart-after=panel
-X-KDE-StartupNotify=false
-X-KDE-UniqueApplet=true
-NoDisplay=true
-OnlyShowIn=GNOME;KDE;XFCE;
-X-GNOME-Bugzilla-Bugzilla=GNOME
-X-GNOME-Bugzilla-Product=tracker
-X-GNOME-Bugzilla-Component=Indexer
-X-GNOME-Bugzilla-Version=@VERSION@
-